基于PCI总线的测控卡的设计
发布时间:2007/4/23 0:00:00 访问次数:1368
关键词:PCI9054 FPGA 状态机 乒乓FIFO WinDriver
PCI总线是一种高性能的局部总线,它具有32/64位总线宽度,且总线地址和数据复用,支持猝发传输,传输速率高达132MB/s;同时可支持多组外围设备。另外,PCI总线不依赖于热和CPU,具有较好的兼容性。
近几年来,现场可编程门阵列(FPGA)在现代电子设计中的成功应用,使充分利用FPGA的本身资源设计专用电路,完成系统功能成为可能,从而简化了电路、缩小了体积、提高了稳定性、具有更大的灵活性。
基于这种设计思想,笔者利用FPGA和PCI总线接口芯片设计了一种测控电路板卡,经实验运行,效率很好。
1 系统结构与功能
本板卡为基于PCI总线,采用RS485电平传输的异步串行通信测控卡。它与PCI总线的协议部分利用PCI9054专用接口芯片来完成。PCI9054是由美国PLX公司生产的一款高性能PCI I/O加速器,它采用了先进的32位数据管道结构技术,支持复用/非复用的32位数据/地址总线,本地总线有三种模式可选;M、C、J模式,被广泛应用于PCI总线板卡的开发中。在本设计中,PCI9054工作在C模式下,采用中断方式,总线周期为“PCI目标读单周期”和“PCI目标写单周期”,数据总线为8位。
异步串行通信电路部分完全用FPGA来实现。在设计上,笔者选用了Xilinx公司的Spartan II系列的XC2S200来实现异步串行通信的接收、发送和接口控制功能,FPGA具有在线可编程能力,设计者可根据实际需求分配资源。
测控卡的通信协议为起止式协议,采用固定的帧格式:1位开始位、8位数据位、1位停止位,无奇偶校验位,在软件中采用统一的CRC校验,传输波特率为19.2kbps。为保证接收数据的正确性,设计中采用16倍频波特率作为接收采样时钟,并把第八个采样值作为接收数据。
测控卡主要完成以下工作:采用RS485差分电平传输的遥测数据经过电平转换后,由接收模块接收后乒乓缓存到FIFO中,并通过PCI总线接口芯片PCI9054以单周期方式送到计算机内存中以便进行下一步处理。发送模块接收到PCI总线传输过来的遥控命令后,按照通信协议格式组帧,在通过电平转换芯片转换成RS485电平后,以19.2kHz的频率发送给目标设备,实现对目标设备的各种控制。
根据以上分析,笔者设计的测控卡的具体功能结构如图1所示。下面详细阐述各部分的功能。
·MAX3490E:完成RS485差分电平到TTL电平的转换;
·接收模块:完成遥测数据的接收和缓冲;
·发送模块:完成遥控数据的缓冲和发送;
·接口模块:实现与PCI9054的接口功能,完成读写和传输控制操作;
·PCI9054:完成和PCI总线的接口协议。
1.1 发送模块设计
发送模块主要实现对遥控数据的缓存和并/串转换,同时按照设计的异步串行通信数据帧格式进行相应的处理,最后将数据串行发送。处理器读取线路状态寄存器信息,检查发送FIFO(TxFifo)是否为空,如为空且有遥控数据待发,则将控制数据通过PCI9054发送并存储到发送FIFO中。发送状态机读取TxFifo中数据,通过并/串移位后用19.2kbps的波特率串行输出。发送状态机实现起止位“0”、并/串移位信号、停止位“1”的发送,具体如图2所示。
图3
开始:当移位寄存器空,发送模块处于等待开始状态,一旦检测到非空,发送起始位“0”,状态机进入移位状态;
移位:通过并/串移位寄存器串行发出,当完成8bit移位后,状态机转入停止状态;
停止:在这个状态,为发送的数据加上一位停止位,然后转入开始状态,等待下一个数据。
发送模块包含8位并/串移位寄存器TSR、51×8 bits发送FIFO(TxFifo)、用于实现发送遥控数据计数
关键词:PCI9054 FPGA 状态机 乒乓FIFO WinDriver
PCI总线是一种高性能的局部总线,它具有32/64位总线宽度,且总线地址和数据复用,支持猝发传输,传输速率高达132MB/s;同时可支持多组外围设备。另外,PCI总线不依赖于热和CPU,具有较好的兼容性。
近几年来,现场可编程门阵列(FPGA)在现代电子设计中的成功应用,使充分利用FPGA的本身资源设计专用电路,完成系统功能成为可能,从而简化了电路、缩小了体积、提高了稳定性、具有更大的灵活性。
基于这种设计思想,笔者利用FPGA和PCI总线接口芯片设计了一种测控电路板卡,经实验运行,效率很好。
1 系统结构与功能
本板卡为基于PCI总线,采用RS485电平传输的异步串行通信测控卡。它与PCI总线的协议部分利用PCI9054专用接口芯片来完成。PCI9054是由美国PLX公司生产的一款高性能PCI I/O加速器,它采用了先进的32位数据管道结构技术,支持复用/非复用的32位数据/地址总线,本地总线有三种模式可选;M、C、J模式,被广泛应用于PCI总线板卡的开发中。在本设计中,PCI9054工作在C模式下,采用中断方式,总线周期为“PCI目标读单周期”和“PCI目标写单周期”,数据总线为8位。
异步串行通信电路部分完全用FPGA来实现。在设计上,笔者选用了Xilinx公司的Spartan II系列的XC2S200来实现异步串行通信的接收、发送和接口控制功能,FPGA具有在线可编程能力,设计者可根据实际需求分配资源。
测控卡的通信协议为起止式协议,采用固定的帧格式:1位开始位、8位数据位、1位停止位,无奇偶校验位,在软件中采用统一的CRC校验,传输波特率为19.2kbps。为保证接收数据的正确性,设计中采用16倍频波特率作为接收采样时钟,并把第八个采样值作为接收数据。
测控卡主要完成以下工作:采用RS485差分电平传输的遥测数据经过电平转换后,由接收模块接收后乒乓缓存到FIFO中,并通过PCI总线接口芯片PCI9054以单周期方式送到计算机内存中以便进行下一步处理。发送模块接收到PCI总线传输过来的遥控命令后,按照通信协议格式组帧,在通过电平转换芯片转换成RS485电平后,以19.2kHz的频率发送给目标设备,实现对目标设备的各种控制。
根据以上分析,笔者设计的测控卡的具体功能结构如图1所示。下面详细阐述各部分的功能。
·MAX3490E:完成RS485差分电平到TTL电平的转换;
·接收模块:完成遥测数据的接收和缓冲;
·发送模块:完成遥控数据的缓冲和发送;
·接口模块:实现与PCI9054的接口功能,完成读写和传输控制操作;
·PCI9054:完成和PCI总线的接口协议。
1.1 发送模块设计
发送模块主要实现对遥控数据的缓存和并/串转换,同时按照设计的异步串行通信数据帧格式进行相应的处理,最后将数据串行发送。处理器读取线路状态寄存器信息,检查发送FIFO(TxFifo)是否为空,如为空且有遥控数据待发,则将控制数据通过PCI9054发送并存储到发送FIFO中。发送状态机读取TxFifo中数据,通过并/串移位后用19.2kbps的波特率串行输出。发送状态机实现起止位“0”、并/串移位信号、停止位“1”的发送,具体如图2所示。
图3
开始:当移位寄存器空,发送模块处于等待开始状态,一旦检测到非空,发送起始位“0”,状态机进入移位状态;
移位:通过并/串移位寄存器串行发出,当完成8bit移位后,状态机转入停止状态;
停止:在这个状态,为发送的数据加上一位停止位,然后转入开始状态,等待下一个数据。
发送模块包含8位并/串移位寄存器TSR、51×8 bits发送FIFO(TxFifo)、用于实现发送遥控数据计数