基于FPGA的PEX8311的LBS控制器的实现

时间:2022-10-02 06:01:29

基于FPGA的PEX8311的LBS控制器的实现

摘 要:通过对LBS控制器的控制信号、LBS总线读写操作时序、LBS状态机进行分析,设计并实现了一个高效、可靠的LBS控制器来实现FPGA和PEX8311的通信系统,在PEX8311和FPGA接口中运行状态正常,稳定性强,成功应用于某视频采集卡、某PCIe数据采集卡等,基于FPGA设计的LBS控制器具有灵活性强、可编程能力强、适应性强等优点。

关键词:FPGA; PCIe; PEX8311; LBS; 状态机

中图分类号:

TN914-34

文献标识码:A

文章编号:1004-373X(2011)19

-0097

-03

Implementation of LBS Controller of PEX8311 Based on FPGA

LIU Duo

(College of Communication and Information Engineering, Xi’an University of Science and Technology, Xi’an 710054, China)

Abstract: Through analyzing the control signal of LBS controller, reading and writing operation sequence of LBS bus and LBS state machine, an efficient, reliable LBS controller is designed to achieve the communication between FPGA and PEX8311. It has high stability and normal state running in FPGA interface and PEX8311, which is successfully used in some video capture card and PCIe card. The FPGA-based LBS controller has features of flexibility, programmable ability, adaptability, etc.

Keywords: FPGA; PCIe; PEX8311; LBS; state machine

收稿日期:2011-04-20

0 引 言

PLX的一款桥芯片PEX8311可将标准处理器、DSP和FPGA总线接口升级为PCI Express(PCIe)。PEX8311单道PCIe至32位、66 MHz通用局部总线桥可在两种标准间转换协议,它可用于通讯线路卡、监视系统、工业控制、IP媒体服务器和医疗成像系统,以实现可升级的高带宽互联。采用根联合体或终端点的PCI嵌入式系统设计可采用PEX8311桥芯片移植到PCIe。本文就是基于PEX8311和FPGA来实现PCIe标准1x传输。

1 系统介绍

FPGA和PEX8311之间通过LBS(LocalBus)来连接、发送和接收命令及数据,其中FPGA主要控制LBS的运行,本文通过设计一个高效、可靠的LBS控制器来实现FPGA和PEX8311的通信。如图1所示。

本系统的控制的核心是LBS控制器,该控制器是通过FPGA采用VerilogHDL实现的,其优点是稳定性强、不会造成死机,避免了常规的PCI,PCIe板卡类经常死机的问题,其次是传输速率高,充分利用LBS的时序,减少无用的等待时间。

图1 系统拓扑

FPGA采用Altera公司的Cyclone3系列的3C120款FPGA芯片。Cyclone3是功耗最低、成本最低的高性能FPGA产品,鉴于上述特点本设计采用它来实现PCIe的传输功能。

PEX8311是PLX公司的一款x1的PCI Express接口芯片,本地端总线频率最高可达66 MHz,数据位宽为32 b。PEX8311有主模式、从模式和DMA三种数据传输模式,可灵活、方便地与各CPU,FPGA和ASIC无缝连接,实现高速传输。

2 LBS控制器设计

2.1 控制信号介绍

Hold信号:请求控制总线的信号,FPGA向PEX8311发出控制总线的请求。

Holda信号:PEX8311响应FPGA请求的信号。

LCLK信号:时钟输入信号。

ADS信号:地址选通信号。

BLAST信号:最后一个数据的同步信号。

LA[31:2]信号:地址线。

LD[31:0]信号:数据线。

LW/R信号:读写控制。

Ready信号:数据有效信号。

2.2 LBS总线读写操作时序介绍

LBS总线操作有单次读写和Burst读写方式,本设计中采用单次读写设计用来传输FPGA内部的寄存器读写控制,这些寄存器是用于配置各逻辑模块的功能控制,通过CPU或软件来实时控制;Burst读写方式主要用于大批量数据传输,本文中主要是传输高速的DDR数据,利用Burst传输方式可以实现高速自动大容量数据传输,充分利用LBS的传输带宽,提高传输效率。

2.3 PEX8311芯片介绍

PEX8311芯片的LBS端具有32位数据总线宽度和66 MHz时钟频率,PEX8311支持三种LBS总线接口模式:C模式,J模式和M模式,可方便地与多种微处理器连接。接口模式由MODE0和MODE1两管脚确定。本设计采用时序逻辑相对简单的C模式,即非复用的地址/数据总线模式。PEX8311支持三种局部总线数据传输模式:单周期模式、四周期突发模式、连续突发模式。

DMA传输数据使传输任务从主控设备中解脱出来,由短且有效的传输描述符来承担,让主控设备可以有时间去处理其他事件。PEX8311有两个DMA通道,可以同时处理两侧总线上要求的传输,免去外部设备的等待。另外,DMA传输可以与主模式和从模式传输同步操作,但后两者比DMA传输优先级高。考虑到DMA传输有以上优点,本设计中PCI Express接口部分采用连续突发模式DMA块传输模式,LBS总线接口采用C模式。

2.4 LBS状态机设计

LBS共设计有4个状态:IDLE,START,DO,BUSY。其状态转移图如图2所示。

IDLE:空闲状态。

START:当ADS地址选通有效时进入此状态,进行地址空间判断。

DO:当地址空间有效,并且传输条件满足时进入传输状态,每个时钟判断条件,当条件满足时继续该状态,当条件不满足时,进入BUSY等待状态,传输结束(BLAST有效)进入IDLE状态。

BUSY:当数据没准备好时,在BUSY状态等待,当数据准备好后进入DO状态,当超时后进入IDLE状态,实时退出。

图2 LBS状态转移图

2.5 LBS状态机工作流程

FPGA作为LBS的逻辑控制器,负责协调好与DDR_FIFO数据和PEX8311之间的时序关系。系统接收数据时,首先由驱动程序向PEX8311发送复位信号,通过LRESET复位LBS本地端的FPGA,清空FPGA内部DDR_FIFO内部数据,并将HF和FF标志置为无效,然后等待数据的输入。FPGA读入DDR数据后,首先将DDR数据写入DDR_FIFO中,当DDR_FIFO中的数据达到半满状态时,HF标志位有效,通过FPGA向PEX8311发出DMA中断请求。PC机响应中断后,设置DMA传输模式,传输字节数及地址信号等。PEX8311通过LHOLD申请控制本地总线,此时FPGA发出的LHOLDA响应信号后获得本地总线的控制权,并立即进入连续字节突发模式的Block DMA周期即由IDLE状态到START状态。FPGA在收到有效的LW/R读信号和ADS地址选通信号后,进入DO状态,同时发出Ready本地准备好应答信号,使能DDR_FIFO的读允许REN和输出允许OE。在传输最后一个数据时,PEX8311发出BLAST信号,FPGA配置DDR_FIFO读使能和输出使能无效,并取消Ready从而结束DMA周期。PC系统发送数据时,FPGA将计算机通过PCIe传过来的LBS数据写入PC_FIFO中,再输出写入到DDR中。

2.6 LBS状态机核心编码设计

按照上述4个状态进行Verilog设计,经过仿真和上板调试,效果很好,下面是状态机设计程序,仿真时序图如图3,图4所示。

3 结 语

本文设计的LBS控制器应用在PEX8311和FPGA接口中运行状态正常,稳定性强,已成功应用于某视频采集卡、某PCIe数据采集卡,经过实践证明,基于FPGA设计的LBS控制器具有灵活性强、可编程能力强、适应性强等优点,能迅速缩短产品上市时间、快速响应客户需求,满足市场需要。

参 考 文 献

[1]王金明.VerilogHDL程序设计教程[M].北京:人民邮电出版社,2004.

[2]王齐.PCIe体系结构导读[M]. 北京:机械工业出版社,2010.

[3]王传新.FPGA设计基础[M].北京:高等教育出版社,2007.

[4]王诚,吴继华.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2005.

[5]沈辉,张萍.FPGA在PCI Express总线接口中的应用\.现代电子技术,2010,33(14):109-111.

[6]李丹,贺占庄,李灏.PCI Express总线接口板的设计与实现\.现代电子技术,2009,32(4):158-161.

上一篇:基于DM642的视频音频监控系统设计 下一篇:水源热泵系统在部队干休所规划中的综合研究