DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1104|回复: 0
打印 上一主题 下一主题

[待整理] 基于FPGA的LBS控制器设计

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 17:01:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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实现的,其优点是稳定性强、不会造成死机,避免了常规的PC I,PCIe板卡类经常死机的问题,其次是传输速率高,充分利用LBS的时序,减少无用的等待时间。

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模式,即非复用的地址/数据总线模式。PEX8 311支持三种局部总线数据传输模式:单周期模式、四周期突发模式、连续突发模式。

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.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控制器具有灵活性强、可编程能力强、适应性强等优点,能迅速缩短产品上市时间、快速响应客户需求,满足市场需要。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-31 06:04 , 耗时 0.091278 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表