PCI总线从设备控制器的设计与实现
读写等待2(rw_wait2)状 态时判断若为读操作,则状态机转入存储器或I/O 读等待(read_wait)状态,存储器或I/O 读等待(read_wait)状态是在从设备trdy_l 有效之前读取从设备的第一个数据段,也就是 地址段。
存储器或I/O 读写(rw)状态: 在这一状态中进行存储器或I/O 读写。
传输中止(abort)状态:使从设备停止响应,传输中止。
存储器或I/O 读写停止等待(last_rw)状态:这是数据传输结束的前一个周期,表示即将停止数据传输。
重试(retry)状态:当信息未准备好时,系统进入重试状态。
结束状态:结束此次交易。
计数器模块:在DEVSEL确定以后,必须在16个总线周期内提供或者接收数据,这一模块 用来实现一个周期计数功能,当在第12个周期时数据仍然未就绪时提供一个“retry”信号 来要求数据,同时在16个周期到来时通知终端设备此次交易结束。
地址锁存模块:在总线交易的地址段对PCI总线的地址、C/BE信号、IDSEL信号实现锁存, 提供了这些信号的寄存器。
2 PCI总线从设备控制器的FPGA实现
FPGA 是当前复杂数字硬件电路设计的理想首选。设计选用Xilinx 公司生产的Sparten —Ⅱ 200 PCI 验证板。集成软件环境为Xilinx ISE6.1i。
设计中有源代码输入、综合、实现等3 个比较大的阶段,而电路仿真的切入点也基本与 这些阶段吻合 。选用XST(Xilinx Synthesis Technology)作为综合工具。PCI 验证板电 源、管教电压、晶振分别选为5V、 2.5V、50MHz,下载模式选择为JTAG 模式,并通过ISP PROM 配置FPGA。
3 PCI总线设备控制器的验证
硬件系统通常是通过信号来驱动的,在不同的输入信号下其行为表现是产生不同的输出 结果,因此,仿真输入信息的产生是对系统进行仿真的重要前提和必须进行的步骤,PCI 总线控制器的仿真是由一段Verilog HDL 语言程序直接产生仿真的输入信息,将此外部激励信 号施加于PCI 总线控制器模型,通过观察其在外部激励信号作用下的反应来判断PCI 总线控 制器是否能实现预期的功能。对PCI 总线控制器的仿真,主要是按照PCI 总线操作命令来进 行的,对于正常的总线操作结束和由主设备及从设备提出的操作终止都作了测试,其仿真结 果实现了预期的要求。由于仿真项目比较多,我们选取其中具有代表性的一个项目来举例说 明。图2 是存储器空间没有等待周期的突发数据段写这一过程的仿真结果。
4 结论
PCI 总线从设备控制器的设计按照自顶向下的设计流程,实现了PCI 从设备控制器的设 计目标,完成了PCI 总线协议所要求的基本功能,目前已是一个完整可用的PCI 总线从设备 控制器IP 核,有很高的工程价值。
本文的创新点:该设计方案将PCI 从设备控制器作为IP 核来设计,将总线接口控制器 按照功能分为有限状态机模块、奇偶校验模块、配置空间配置模块、基地址检查模块、计数 器模块、地址锁存模块和顶层模块这7 个模块,编写了测试文件,测试表明,设计完全符合 功能要求。
- 用双端口RAM实现与PCI总线接口的数据通讯(05-06)
- 基于PCI总线和DSP芯片的图像处理平台的硬件设计(07-06)
- 基于DSP和PCI总线的通用数字信号处理系统(11-13)
- 一种基于PCI总线和DSP技术的虚拟仪器设计(03-16)
- 基于Linux平台的天气雷达高速数据采集系统设计(03-13)
- 基于DSP与PC机的PCI总线高速数据传输 (07-08)