基于可编程逻辑器件的数据传输接口研究与设计

1970-01-01 08:00

  摘要:目前部分基于X86体系结构平台的测试仪器已经采用了PCI板卡设备来控制整个测试电路的运行、采集测试数据,因此在PCI板卡上的本地总线与数据传输电路之间需要设计接口电路。在分析PCI9054接口控制器的基础上,研究和设计了一种实用的数据传输接口电路并在现场可编程门阵列器件内部得以实现。?
  关键词:PCI总线;数据传输;FPGA? ?
  
  1引言?
  近年来PCI总线已经在高档测试仪器中得到越来越广泛的应用。由于PCI总线协议非常复杂,不便于与测量控制逻辑直接连接,需要经过一个PCI接口控制器作为桥梁。另外考虑到软件的处理速度和工作效率,测量电路高速采集的数据也不能立即传送给主机,因此在FPGA内部设计了FIFO缓冲器。设计方案如图1所示。当送入FIFO的测量数据达到预定的数量时,本地中断逻辑通过PCI总线接口控制器向主机提出中断请求,主机响应中断后,通过PCI总线控制器从FIFO中取走测量数据。?
  PCI接口控制器的设计相对来说比较复杂。目前比较常用的方案有两种:第一种是用可编程逻辑器件设计实现,第二种方案是采用专用接口芯片。由于前者方案需要投入大量的人力、物力进行逻辑验证和时序分析工作,延长了开发周期,因此本文选择了专用接口芯片方案。具体型号是PLX公司的PCI9054芯片。使用这种专用芯片桥接PCI总线和本地总线,开发者可以省去考虑很多复杂的PCI总线规范,而集中精力开发硬件和驱动程序。?
  以下主要论述图1虚线框内的FPGA设计与实现。重点是与PCI9054接口的本地总线控制逻辑和中断逻辑。
  
  2数据采集接口逻辑的设计?
  2.1PCI9054本地总线研究?
  对本地总线操作过程及控制信号时序关系的分析是应用PCI9054芯片和设计本地总线控制器的基础性工作。PCI9054本地总线的信号包括:LHOLD(输出)申请占用本地总线信号;LHOLDA(输入)本地总线应答信号;ADS#(输出)地址选通信号;BLAST#(输出)传输结束指示信号;LW/R(输出)读写状态信号(高电平表示写,低电平表示读);READY#(输入)外部等待信号;LCLK(输出)本地时钟;LRESET#(输出)本地复位信号;LA[31:2](输出)本地地址总线;LD[31:0](输入/输出)本地数据总线。上述信号名后带有“#”的表示低电平有效,另外输入输出是针对PCI9054芯片而言的。 ?
 
  当读数据时,本地总线上的各信号时序关系如图2所示,控制信号有效边沿的含义已标注于图中。图2所示的PCI从方式读操作中,每次传输的数据有多个字,ADS#信号变低表示数据传输周期的开始,之后每个时钟周期的上升沿将本地数据总线上的数据读入9054内部,在紧接着的时钟下降沿自动增加本地地址总线上的地址;数据传输状态将一直持续到BLAST#信号变低,表示当前数据期已经是传输的最后一个数据期,数据传输即将结束。这种传输方式称为突发传输。相对应的PCI9054也支持单周期传输。在单周期传输时,每次只传输一个字,BLAST#信号在ADS#信号有效后的下一个时钟周期就会出现。显然单周期方式的数据传输率较之突发传输方式会慢很多,由于FPGA内的FIFO数据传输率能够与PCI9054的数据传输率相适应,本文采用突发传输方式以提高PCI总线的传输效率。?   2.2本地总线控制?
  根据前文可以明确出本地总线控制器的设计目标:根据输入的控制信号LHOLD、ADS#、BLAST#生成符合本地总线时序要求的控制信号LHOLDA、READY#和FIFO的读请求信号RDREQ。 对于LHOLD信号的应答问题,采用Verilog语言中的always和assign语句就能简便高效的实现。对READY#信号的处理可以采用同步状态机,其状态图如图3所示:?
  
  2.3对于本地中断的分析和应用?
  当采集并存储在FIFO中的数据达到一定数量,为了避免FIFO溢出主机需要将测试数据从FIFO中取走。从提高效率的角度出发,采用中断方式完成该工作。?

基于可编程逻辑器件的数据传输接口研究与设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:商业智能——发掘数据金矿的工具

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: