1. 引言
随着计算机控制技术在各个领域的深入应用,为计算机与被控设备之间提供方便、实用通信方法的PCI(Peripheral Component Interconnection)总线接口成为必不可少的接口部件,其主要功能是完成用户设备与PCI总线间的信息传送接口。
使用可编程器件进行PCI接口的设计,可以将其他用户逻辑与PCI接口逻辑集成在一个芯片上,提高系统的开发速度,缩短二次开发周期、降低成本,提高系统的集成度和可靠性。
以下是在进行WiMAX(World Interoperability for Microwave Access)的SOC系统开发时,按照PCI总线2.2版本的规范,根据PCI总线传输时序来进行状态机构造,所设计的PCI总线接口既可支持PCI常规传输,也可支持PCI猝发(burst)传输。
2. WiMAX系统构成
2.1 WiMAX硬件系统构成
IEEE802.16协议由MAC(链路)子层和PHY (物理)子层构成,WiMAX系统的硬件构成如图1所示,其中物理子层对基带信号进行处理,也即图中的‘基带’模块(BB: Base Band),该模块的功能是进行编码/解码、同步、带宽请求、IFFT / FFT(快速傅立叶变换/反变换)、交织/反交织等处理;图1中的其余部分与软件系统一起构成MCA子层,其主要功能是入网注册、获取链路参数、测距、基本能力协商等配置管理工作以及QoS(quality of Service) 。
终端通过PCI总线与工作站进行通信,也可以通过自主开发的射频天线系统进行无线传输。终端以无线方式与基站进行通信,而基站与基站之间通过Internet进行通信。
2.2 WiMAX硬件系统设计过程
图1 WiMAX硬件系统构成 |
3.PCI总线接口模块设计
3.1 PCI接口系统的功能模块构成
PCI接口由如下子模块构成:地址检查模块、glue模块、校验模块、数据retry模块、空间配置计数模块、状态机模块及外部三总线逻辑。
地址检查模块用来检查接受到的地址是否在配置空间所配置的地址范围之内;glue模块在地址有效期间锁存来自总线的PCI命令和地址信息,以备后用;校验模块在读周期产生校验位,以确定所接受到的数据是否正确;数据retry模块在PCI应答了一个没有READY(未准备好)的读/写操作时,PCI设备retry数据(保持总线),直到计数器超时;PCI接口的核心模块是空间配置模块和状态机模块。空间配置模块提供一套现行的、可预见的系统配置机构的配置措施,使之实现完全的设备再定位而无需用户干预进行安装、配置和引导,并由与设备无关的软件进行系统地址映射,以支持即插即用功能;状态机控制保证了板卡能按正常的PCI时序工作,是PCI接口的核心部分。
3.2 PCI总线控制器状态机模块的设计及实现
状态机模块包含了所有PCI状态机的状态转移和实现,在一个给定的PCI操作期间,状态机由IDLE状态经三条可能的路径到达其它状态。根据地址周期PCI_CBE_l和PCI_IDESL上的值来决定是什么操作:配置空间的读写、内存和I/O的读或写。PCI设备的状态机及转移图如图2所示。因篇幅限制,状态名、状态变量说明参考如下verilog代码注
图2 状态转移图 |
module state_machine (devsel_l, …);
output devsel_l; // 三态输入
output trdy_l; // 三态输入
output stop_l; //三态输入
output pci_ad_oe; // PCI 地址线的使能信号
output dts_oe; // the devsel, trdy_l, stop_l (dts)信号的使能控制信号
output par_oe; // 校验使能控制信号
output bk_oe; // 用户端数据线的使能控制信号
output pci_ad_en; // PCI 地址启动寄存器的时钟使能信号
output abort_sig; // 设置abort信号状态寄存器位
output data_write_l; // 数据写信号,用作pci_clk 信号到用户端设备的时钟使能
output count_rst_l; // 重试计数器的复位信号
output count_en_l; // 重试计数器的时钟使能信号
output base_region0_l; // 片选信号
output base_region1_l; //片选信号
output data_read_l; // 用户端设备读信号
output be_oe; // 用户端口字节使能信号
input hit_ba0_l; // 用于说明PCI地址在base address 0
input hit_ba1_l; //用于说明PCI地址在base address 1
input pci_frame_l; // pci_frame_l 信号
input pci_idsel; // pci_idsel 信号
input pci_irdy_l; // pci_irdy 信号
input [31:0] pci_ad; // 原始的pci 地址数据线
input [3:0] pci_cbe_l; // 命令/字节使能信号
…
input data_stop_l; // 用户端申请中止数据传输信号
input ready_l; // 用户准备开始一个传输周期
input retry_l; // 重试信号
……
endmodule
图3 状态机模块仿真图 |
图4 PCI接口gdf文件 |
在本设计中,根据PCI总线传输时序来进行状态机构造,用Verilog HDL语言进行功能模块的设计, 在Modelsim环境下进行模拟仿真和定时分析,所设计的PCI接口时钟频率为33MHz, 数据宽度为32位。支持单数据段和突发传输两种方式。提供奇偶校验生成和奇偶校验检测, 实现16个双字的PCI 配置空间寄存器, 支持配置空间的读与写、I/O 读写、存储器读与写等PCI总线命令,满足了WiMAX系统的通信要求。
参考文献
[1] 高建华. 一种基于CPLD的单片机与PCI接口设计解决方案.微计算机信息.2006, 22(6-2):224-226。
[2] IEEE 802.16-2004.IEEE Standard for Local and metropolitan area networks Part 16: Air Interface for Fixed Broadband Wireless Access Systems.2004.
[3] IEEE 802.16e.IEEE Standard for Local and metropolitan area networks Part 16: Air Interface for Fixed and Mobile Broadband Wireless Access Systems.2006.2.28
[4] PCI Special Interest Group .PCI Local Bus Specifications[Z].Revision 2.2,1998.120~156.