PCI扩展总线桥的实现
上面设计的PCI扩展总线桥的接口逻辑最终要在CPLD中来实现。在进行PCI总线接口设计中,使用Altera公司的Quartus II 2.0作为开发平台。由于PCI协议的时序逻辑比较复杂,因此,对CPLD的设计全部采用Verilog HDL语言作为设计输入。整个设计由一个顶层模块和六个底层模块组成(图2)。
1)顶层模块:该模块包含了整个设计的输入/输出信号和底层设计模块的定义。
2)浆糊逻辑模块:该模块包含了设计中的各种混杂逻辑,包括PCI地址寄存器,命令/字节使能寄存器和配置读/写使能寄存器,在每次PCI传输的地址有效期内触发这些寄存器。
3)配置寄存器模块:该模块实现PCI配置寄存器的配置和读写功能。根据PCI协议,每个PCI设备都有256字节的配置空间,配置空间中存放的是与本设备有关的信息,它首先用来向总线仲裁器表明本设备的存在,其次向总线仲裁器表明本设备要完成的功能,映射到内存或I/O空间以及所占的地址范围,支持哪些总线访问命令等,。在实际实现时,考虑到总线扩展桥的具体要求,设计中只配置了以下与设计相关的一些寄存器。
a)配置空间地址为00h的Device ID and Vendor ID寄存器。
b)配置空间地址为04h的Status and Command寄存器。设计中DEVSEL信号响应时间设为slow,存储器空间和I/O空间使能设为可写。
c)配置空间地址为08h的Class Code and Revision ID寄存器。Class Code设为ISA桥,定义为060100h。
d)配置空间地址为10h的I/O空间基址寄存器。基址设为可写。
e)配置空间地址为14h的存储器空间基址寄存器。基址设为可写。
f)配置空间地址为2Ch的Subsystem ID and Subsystem Vendor ID寄存器。
g)配置空间地址为3Ch的Max_Lat, Min_Gnt, Interrupt Pin and Interrupt Line寄存器。其中,Max_Lat, Min_Gnt寄存器设为0000h,Interrupt Pin寄存器设计为01h,表示只使用一个中断引脚,Interrupt Line寄存器设为可写。
4)基址检查模块:该模块根据基址寄存器中的地址来校对当前操作的地址线上地址。
5) 状态机模块:该模块是整个设计的核心,它控制整个总线周期的时序。在每一次PCI操作的地址期内,根据PCI接口的命令/字节使能信号C/BE[3::0]和配置读/写选通信号IDSEL,状态机都会从空闲状态转移到三个可能的状态,即配置空间读/写、存储器与I/O空间读或存储器与I/O空间写。
a)在设计中,配置空间的访问设为0类配置访问,只有当地址期内AD信号的0位和1位都为0( PCI_AD[1,0]==00b)时,才响应访问。在配置读/写操作时,AD信号的2位到7位(PCI_AD[7:2])决定操作对应的寄存器。当访问未实现的寄存器时,读操作时返回的值为00000000h,写操作时也会响应,但不能写进任何值。
b)在存储器与I/O空间读操作时,存储器读操作支持突发传输,而I/O读操作不支持突发传输,只支持一次传输。在典型的读操作中,当地址与基址寄存器中的值相匹配时,通过信号通知桥后端设备准备传输,在得到后端设备的确认信号后,开始读第一个双字,如果传输一次突发传输时,接着读第二个双字。一旦主设备开始一次突发传输,如果桥后端的设备中止突发传输,后端设备必须提前两个数据段通知状态机结束突发读周期。
c)与存储器与I/O空间读操作相类似,在存储器与I/O空间写操作时,存储器写操作支持突发传输,而I/O写操作不支持突发传输,只支持一次传输。在典型的写操作中,当地址与基址寄存器中的值相匹配时,通过信号通知桥后端设备准备传输,在得到后端设备的确认信号后,发出trDY信号,如果此时IRDY信号有效,便开始写操作。如果传输是一次突发传输时,接着写第二个双字。一旦主设备开始一次突发传输,如果桥后端的设备中止突发传输,后端设备必须提前两个数据段通知状态机结束突发写周期。 6) 奇偶校验模块:该模块实现在配置读周期和存储器或I/O读周期时产生奇偶校验。
7)重试计数模块:当桥后端设备发生"时间溢出"时,该模块实现一个计数器来通知状态机。如果状态机确认了一次读或写操作,在发出DEVSEL信号有效后,必须在随后的16个时钟周期内发出或接收到数据。如果状态机确认了一次读或写操作后,桥后端的设备在12个时钟周期内没有发出准备好信号,此时将开始数据重试。数据重试只能在第一个数据段未传输前有效,一旦桥后端的设备确认了操作,状态机必须开始发出或接收所需的数据。
PCI扩展总线桥的时序仿真
完成PCI扩展总线桥的逻辑实现后,设计仿真矢量,QuartusII 2.0平台上进行设计的时序仿真,下面是仿真后的时序图,限于篇幅,这里只给出部分仿真时序图见图,3、4、5、6,由仿真后的PCI操作时序图,可以看出整个设计的时序符合PCI协议的要求。
1)对配置空间的读写操作时序(地址为04h的Status and Command寄存器)