查看完整版本: PCI接口设计

点亮希望 2008-6-23 11:18

PCI接口设计

---在PCI板卡的设计中,核心设计有时序控制和配置空间两部分。时序控制保证了板卡能按正常的PCI时序工作,配置空间部分保证了板卡的即插即用功能。在进行FPGA设计时本设计使用的软件是Altera的MAX+PLUSII,开发芯片是[URL=http://www.qooic.com/Detail-EPF10K20RC240-3.html]EPF10K20RC240-3[/URL]。
z9IP#F0ChPT ● PCI接口配置空间的实现.q*k@0}$R \5Wy
---PCI总线定义了3种物理地址空间,分别是存储器地址空间、I/O地址空间和配置地址空间。
[u4T i-z"c --- 配置空间是PCI所特有的一种空间,其目的在于提供一套适当的配置措施,使之满足现行的和可预见的系统配置机构。配置空间是一长度为256字节并且有特定记录结构的地址空间,可以在系统自举时访问,也可在其他时间访问。该空间分为首部区和设备有关区两部分,设备在每个区中只须实现必要的和与之相关的寄存器。配置空间的基地址寄存器提供了一种为设备指定存储空间或I/O空间的机制。操作系统在启动的时候要判断系统中有多少存储器、系统中的I/O设备需要多少地址空间,然后根据得到的结果,自动配置系统的存储空间和I/O空间,实现设备无关管理。在本设计中,那些只读的配置寄存器通过硬件连线到相应的值,因而不占用宏单元。通过配置寄存器,配置软件可了解目标设备的存在、功能及配置要求。
e w t[+w6H3H ---(1)厂商ID:此16位的只读寄存器定义了设备的生产厂商,可以使用MACH芯片最初的生产厂商-AMD公司的ID值[URL=http://www.qooic.com/Detail-1022.html]1022[/URL]。c&m[P.t$?QE
---(2)设备ID:该值由生产厂商分配以识别其产品,可为除00000000H和0FFFFFFFFH中的任意值。/t|H3t.R.F,@
---(3)命令寄存器:此寄存器控制了设备响应PCI访问的能力。位1、6、8在本设计中被实现。本设计要求实现对存储空间的访问,位1设置为1,则设备响应PCI对存储器访问;位6控制了设备对奇偶校验错误的响应;当位8被设置为1时,设备能够驱动SERR线,0则禁止设备的SERR输出驱动器。在这里当系统复位后,位1、6、8被设置为0。3~S~M"_ uC_
---(4)状态寄存器:此寄存器记录了PCI相关事件的信息。在本系统中,位9、10、11、14、15被设计实现。位10∶9为设备选择(DEVSEL#)定时,00B为慢速,01B为中速,10B为快速,11B保留。本设计这两位被硬件连线为01B。当目标设备失败时,位11被设置为1,当发生系统错误时位14置1,发生奇偶校验错误时位15置1。
5k'Q c1k3^V ---(5)基地址寄存器:该寄存器用来映射设备的存储器地址空间,与设备地址空间大小相应的低位被强制为0,因此在配置写交易中,配置软件通过对这个寄存器的所有位写1,然后再读出该寄存器的值来决定设备存储器所占用的地址范围。位0用来定义设备是存储器映射还是I/O映射,在本设计中,位0被设为低以表明目标设备为存储器映射的。}yPUND7S^
如需要256字节的存储空间,配置软件写入0FFFFFFFFH,本设备送出0FFFFFF00H,而配置软件再次写入基地址寄存器的值与本设备的0FFFFFF00H相与的结果就是基地址值,如配置软件再次写入0CD000000H则基地址值为0CD000000H。
;u+{?'pT7?Z ---(6)类代码寄存器:这个24位的只读寄存器用来说明设备的基本功能和它的可编程接口。这里,此寄存器被强制为018000H,即设备为大容量存储控制器。
dII'^ZW ---(7)首部类型寄存器:这个只读寄存器的位0~6定义了首部格式,位7说明了设备为单功能还是多功能。首部类型1为PCI-PCI桥定义,首部类型2则用于PCI CardBus桥。在本设计中寄存器被强制为0来显示其为单功能设备且首部类型为0。'k6V4p`lZ

Py6e} e$PO7Rj(}[ [[i] 本帖最后由 点亮希望 于 2008-6-23 11:19 编辑 [/i]]
页: [1]
查看完整版本: PCI接口设计