基于FPGA的PCI总线接口设计概述

目录

1.PCI总线特点  

2. PCI接口设计方法

3.时序控制


       基于FPGA的PCI总线接口设计是一个涉及硬件和软件多个方面的复杂主题。PCI(Peripheral Component Interconnect)总线是一种高速计算机总线标准,广泛用于连接外围设备到计算机主板。

1.PCI总线特点  

        PCI总线宽度32位,可升级到64位;最高工作频率33MHz,支持猝发工作方式,使传输速度更高;低随机访问延迟(对从总线上的主控寄存器到从属寄存器的写访问延迟为60ns);处理器/内存子系统能力完全一致;隐含的中央仲裁器;多路复用体系结构减少了管脚数和PCI部件;给于ISA、EISA、MAC系统的PCI扩展板,减少了用户的开发成本;对PCI扩展卡及元件能够自动配置,实现设备的即插即用;处理器独立,不依赖任何CPU,支持多种处理器及将来更高性能的处理器;支持64位地址;多主控制允许任何PCI主设备和从设备之间进行点对点访问;PCI提供数据和地址的奇偶校验功能,保证了数据的完整性和准确性。 

       PCI总线是一种同步并行总线,最初设计用于连接高速外围设备到计算机主板。PCI总线支持多种传输速率,包括33 MHz和66 MHz,并且可以支持32位或64位宽度的数据总线。

PCI总线包括地址/数据线、命令/状态线和控制线。

1.地址/数据线(AD):32位或64位宽,用于传输地址和数据。
2.命令/状态线(C/BE):5位宽,用于命令信号和数据有效位。
3.控制线:包括读/写信号、地址锁存信号、中断请求信号等。

PCI总线的操作遵循一定的时序要求。例如,读操作的典型时序如下:

1.地址阶段:主机发送地址和读命令。
2.数据阶段:目标设备响应数据。
3.完成阶段:主机确认接收数据。

2. PCI接口设计方法

       PCI总线定义了3种物理地址空间,分别是存储器地址空间、I/O地址空间和配置地址空间。 配置空间是PCI所特有的一种空间,其目的在于提供一套适当的配置措施,使之满足现行的和可预见的系统配置机构。配置空间是一长度为256字节并且有特定记录结构的地址空间,可以在系统自举时访问,也可在其他时间访问。该空间分为首部区和设备有关区两部分,设备在每个区中只须实现必要的和与之相关的寄存器。配置空间的基地址寄存器提供了一种为设备指定存储空间或I/O空间的机制。操作系统在启动的时候要判断系统中有多少存储器、系统中的I/O设备需要多少地址空间,然后根据得到的结果,自动配置系统的存储空间和I/O空间,实现设备无关管理。在本设计中,那些只读的配置寄存器通过硬件连线到相应的值,因而不占用宏单元。通过配置寄存器,配置软件可了解目标设备的存在、功能及配置要求。

(1)厂商ID:此16位的只读寄存器定义了设备的生产厂商,可以使用MACH芯片最初的生产厂商-AMD公司的ID值1022。 

(2)设备ID:该值由生产厂商分配以识别其产品,可为除00000000H和0FFFFFFFFH中的任意值。 

(3)命令寄存器:此寄存器控制了设备响应PCI访问的能力。位1、6、8在本设计中被实现。本设计要求实现对存储空间的访问,位1设置为1,则设备响应PCI对存储器访问;位6控制了设备对奇偶校验错误的响应;当位8被设置为1时,设备能够驱动SERR线,0则禁止设备的SERR输出驱动器。在这里当系统复位后,位1、6、8被设置为0。 

(4)状态寄存器:此寄存器记录了PCI相关事件的信息。在本系统中,位9、10、11、14、15被设计实现。位10∶9为设备选择(DEVSEL#)定时,00B为慢速,01B为中速,10B为快速,11B保留。本设计这两位被硬件连线为01B。当目标设备失败时,位11被设置为1,当发生系统错误时位14置1,发生奇偶校验错误时位15置1。 

(5)基地址寄存器:该寄存器用来映射设备的存储器地址空间,与设备地址空间大小相应的低位被强制为0,因此在配置写交易中,配置软件通过对这个寄存器的所有位写1,然后再读出该寄存器的值来决定设备存储器所占用的地址范围。位0用来定义设备是存储器映射还是I/O映射,在本设计中,位0被设为低以表明目标设备为存储器映射的。 
如需要256字节的存储空间,配置软件写入0FFFFFFFFH,本设备送出0FFFFFF00H,而配置软件再次写入基地址寄存器的值与本设备的0FFFFFF00H相与的结果就是基地址值,如配置软件再次写入0CD000000H则基地址值为0CD000000H。 

(6)类代码寄存器:这个24位的只读寄存器用来说明设备的基本功能和它的可编程接口。这里,此寄存器被强制为018000H,即设备为大容量存储控制器。 

(7)首部类型寄存器:这个只读寄存器的位0~6定义了首部格式,位7说明了设备为单功能还是多功能。首部类型1为PCI-PCI桥定义,首部类型2则用于PCI CardBus桥。在本设计中寄存器被强制为0来显示其为单功能设备且首部类型为0。 

3.时序控制

       在时序控制程序中采用状态机模型来实现不同时序的转换。各种命令、数据交换、控制均在状态机的管理下进行工作。PCI总线上的信号是并行工作的,因此,对应每个状态必须明确其执行的任务。这些任务要用VHDL的进程语句来描述所发生的事件。本设计中的状态机共使用了6种状态,它以从设备响应状况为依据,主要以DEVSEL#信号和TRDY#信号的状况为依据。状态机如图1所示,分别对应空闲状态(此状态DEVSEL#、TRDY#和STOP#以及其他输出信号为高阻态);准备状态、DEVSEL#和TRDY#均为高电平状态,DEVSEL#为低电平且TRDY#为高电平状态,DEVSEL#和TRDY#均为低电平状态;操作结束状态(此状态使DEVSEL#、TRDY#和STOP#维持一个周期高电平)。

       基于FPGA的PCI总线接口设计是一个涉及硬件和软件多个方面的复杂主题。通过合理设计硬件逻辑、遵守PCI总线的时序要求以及开发合适的软件驱动,可以在FPGA上成功实现高性能的PCI接口。随着技术的发展,PCI总线已经演进到了PCI Express等更高性能的标准,但PCI总线仍然是理解和学习现代总线接口设计的基础。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fpga和matlab

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值