基于PCI接口芯片外扩FIFO的FPGA实现

发布者:知者如渊最新更新时间:2011-12-01 关键字:PCI接口  外扩FIFO  FPGA 手机看文章 扫描二维码
随时随地手机看文章

  0. 引言

  目前,计算机上的系统总线常见的有 ISA总线、 PCI总线以及 VXI总线等。在实际应用中,PCI总线已经成为主流的应用总线,具有较高的数据传输效率,能满足大多数数据采集和发送系统的需求。由于 PCI总线规范相当复杂,一般实际应用中都选择专用的 PCI接口芯片来设计 PCI接口。本文选择美国 PLX公司生产的 PCI总线通用接口芯片 PCI 9054,利用该专用芯片桥接 PCI总线与本地总线。在实际半实物仿真测试系统的应用中,要求仿真计算机能够快速、稳定的连续输出所需数据,而由于 PCI 9054内部 FIFO存储器主要用于数据的读写控制,容量有限,不能满足半实物仿真测试系统数据传输的要求。因此,本文提出利用 FPGA内部的嵌入式阵列块( EAB)(Embedded Array Blocks)来实现外扩 FIFO的功能,目的是用于存储由 PCI总线传输过来的仿真数据,并在 D/A转换期间起到数据缓存的作用。

  1. PCI 9054特性及 FPGA内部 EAB模块简介

  1.1  PCI 9054接口芯片简介及配置

  PCI 9054内部有六个可编程的 FIFO存储器,它们可分别实现 PCI发起读、写操作, PCI目标读、写操作和 DMA方式读、写操作。这里采用 DMA方式传输数据,可实现大量数据的突发传输而不丢失,数据通过 PCI 9054内部的 FIFO进行双向传输。为此,核心控制芯片 FPGA内部专门设计了与 PCI 9054进行数据通信的逻辑控制单元,通过查询 FIFO的当前状态,实时地把数据传送到相应的存储单元。

  PCI 9054内部提供一个串行 EEPROM配置接口,为 PCI总线和局部总线配置部分重要信息,如本地总线的基地止空间、I/O空间、中断控制信号等信息,总容量为 2 K字节或 4 K字节,其内容可通过 PCI总线写入,也可通过编程器直接烧写。EPROM一定要选择支持串行传输方式的芯片,这里选用 93CS56L作为外接 EEPROM,容量为 2 K字节, EEPROM的配置电路如图 1所示。图中 93CS56L的 1、2、3/4引脚与 PCI9054上的 EECS、EESK、EEDI/EEDO引脚相连,系统启动时自动检测 EEPROM,并将初始化配置参数装入 PCI配置寄存器中,根据本地总线对内存、 I/O端口和中断等统一划分空间,自动配置。EEPROM的配置至关重要,其配置不正确可导致整个系统无法运行。


  1.2嵌入式逻辑阵列块( EAB)结构

  嵌入式逻辑阵列块( EAB)具有逻辑和存储功能,在输入、输出端口上带有寄存器的 RAM块,利用它们可以实现 ROM、RAM、双端口 RAM和 FIFO等功能设计。每个 EAB模块均含有 2 K的数据容量,每个 EAB单元中还包括数据区、总线和读 /写控制等。数据区是 EAB的核心部分,可根据数据/地址线的不同设置将其配置为 2048×1bit,1024×2bit, 512×4bit,256×8bit等。相应的数据总线可以配置成 8bit、4bit、2bit或 1bit宽,地址总线可以配置成 8bit、9bit、10bit或 11bit宽。而输入输出总线相对应,这三条总线都可以设置为同步/异步两种工作方式。

  2. 外扩异步 FIFO的 FPGA实现

  2.1异步 FIFO存储器的内部结构及工作原理

  本设计选择的 EPF10K10 FPGA内部含有 3个嵌入式阵列块( EAB)。为了实现大容量的异步 FIFO存储器,可以通过内部级联的方法把多个 EAB模块进行连接,如本设计把 3个 EAB模块进行连接,每个 EAB模块均为 512×4 Bit,连接以后可实现 512×12 Bit的 FIFO存储模块,即 FIFO存储器的容量为 6 KB。图 2给出了利用 EAB模块构成 FIFO存储器的内部结构图。


  从图 2可以看出,异步 FIFO存储器包含一个双端口的 RAM、写指针(WP)、读指针(RP)、空标志产生逻辑( FULL)及满标志产生逻辑 (EMPTY)。其工作过程是把 PCI9054读入的内存波形数据缓存到 RAM中,然后根据仿真需要,把波形数据传送给 D/A转换模块。其遵循的原则是写入数据位数及时钟与 PCI9054输出数据位数及本地时钟( LCLK)同步,而输出数据位数及时钟与 D/A转换模块的输入数据位数及时钟相一致,且硬件系统第一个读入的数据为输出端口读出的第一个数据,依此类推。由于时钟频率的不同,输入口和输出口的工作过程彼此是独立的,即可以同时进行读写操作。只要 FIFO存储器的数据标志位 FULL为非满状态,就可以继续向 FIFO存储器中写入数据;只要 FIFO存储器的数据标志位 EMPTY为非空状态,就可以继续从 FIFO存储器中读取数据。

  2.2异步 FIFO存储器的 FPGA实现方法

  由 EAB构成的 FIFO模块,只需对其进行编程实现,而无需其它外部元件匹配。设计过程中主要考虑的一是如何实现数据在传输过程中不丢失数据,即如何同步异步时钟信号,避免亚稳态的产生;二是如何正确地判断 FIFO存储器的空/满状态。

  图 2 由 EAB模块构成的 FIFO内部结构图图 3给出了 FIFO存储器的四种状态,即:


  1)初始状态:对于本设计而言,即为 WP=0,RP=511。此时的 FIFO处于空状态, RP=WP-1,不能对其进行读操作。

  1 RP=WP状态。FIFO只要再进行一次写操作就会变成满状态。

  2 RP=WP-2状态。FIFO只要再进行一次读操作就会变成空状态。

  3 RP=WP-1状态,FIFO已经存满数据,不能对其进行写操作。

  可以看出,满状态和空状态的 RP和 WP的关系是一致的,均为 RP=WP-1。但在满或空状态出现之前的一个状态是各不相同的。当 RP=WP时,由于写入一个数据而使其进入满状态( RP=WP-1),而在 RP=WP-2时,由于读出一个数据而使其进入空状态( RP=WP-1)。设计中可以根据这一原则通过软件编程来得到空 /满状态标志产生的条件。下面给出一段描述空状态产生的 VHDL语言程序。

  process(wr_clk,reset)

  begin

  if reset='1' then

  empty_in<='1';

  elsif (wr_clk='1' and wr_clk'event) then

  if ((rp=wp-2 or (rp=fifo_depth-1 and wp=1)

  or(rp=fifo_depth-2 and wp=0)

  and (rd_en='0' and wr_en='1')) then

  empty_in<='1';

  elsif (empty_in='1' and wr_en='0') then

  empty_in<='0';

  end if;

  end if;

  end procESS;

  其中:

  wr_clk为写入数据时钟信号; reset为系统复位信号;empty_in为空标志信号; fifo_depth为 FIFO存储器深度值,这里为 512;rp为读数据指针; wp为写数据指针; wr_en为写入数据使能信号;rd_en为读出数据使能信号。

  对于异步 FIFO而言,设计过程中还需考虑的一点就是如何消除不同时钟域的亚稳态。这里主要是对读 /写地址采用雷格码变换,即相邻地址之间只有一个数据位不同,据此可以很好地减少亚稳态的发生。雷格码可以通过对 FPGA内部编程实现二进制计数器来完成,即读地址的雷格码计数器用读时钟,写地址的雷格码用写时钟,数据输入端由两个相邻二进制的数据位异或产生,这样就很好地解决了当读/写地址指针相同时,由于读/写时钟异步而产生的地址错误。下面给出的是读地址雷格码程序描述。

  process(rd_clk,reset,rd_en)

  begin

  if reset='1' then

  rd_gray<="00000000";

  else

  rd_gray(3)<=rp(3);

  rd_gray(2)<=rp(3)xor rp(2);

  rd_gray(1)<=rp(2)xor rp(1);

  rd_gray(0)<=rp(1)xor rp(0);

  end if;

  end process;

  其中: reset为系统复位信号; rd_clk为读出数据时钟信号; rd_en为读出数据使能信号; rp为读数据指针;rd_gray为读雷格码地址。

  3. 结束语 本文根据半实物仿真测试系统的要求,利用 FPGA芯片内部 EAB模块设计了基于 PCI总线接口的异步 FIFO缓存器。针对异步 FIFO设计中的空 /满状态及亚稳态问题,给出了具体的解决方法,主要采用 VHDL语言进行了 FIFO的电路设计,利用 ALTERA公司的 EPF10K10 FPGA芯片实现了该设计,并将这一设计应用到半实物仿真测试系统中进行连续波形数据的传输,在实际测试系统中取得了较好的效果。

  本文作者创新点:在半实物仿真测试系统中,本着模块化的设计思想,本文利用 FPGA芯片内部 EAB模块设计了异步 FIFO存储器,提高了半实物仿真测试系统数据传输效率,解决了由于计算机中断而引起的数据传输间歇性问题。

关键字:PCI接口  外扩FIFO  FPGA 引用地址:基于PCI接口芯片外扩FIFO的FPGA实现

上一篇:基于FPGA的惯导系统温控电路接口设计
下一篇:FPGA动态局部可重构中基于TBUF总线宏设计

推荐阅读最新更新时间:2024-05-02 21:45

最强大脑当属CPU+FPGA
对于机器人而言,什么才最重要? 能够暴力弹跳的复杂机械装置?各类价格昂贵的?或像EVE那样以萌神外形征服世界? No,no,no!最重要的是: 能在复杂的环境中完成特定工作,做一个有益于人民的机器人。 为了实现这一崇高目标,机器人要眼观六路,耳听八方,行走天下,胸有丘壑。 而这一切都离不开一颗强劲的大脑——高性能计算平台和高效算法。 通用处理器在计算性能和能效上越来越难以满足日益庞大、多样化的数据处理需求。 借助由、和其他智能引擎等协处理器与一起组成的异构计算平台来提升计算性能,已成为当下学术界和工业界的研究热点。 异构计算作为一种特殊的并行计算方式,能够根据每个计算子系统的结构特点为其分配不同的计算任务,在提高
[机器人]
基于现场可编程门阵列的数控延时器的设计
1引言 利用硬件描述语言结合可编程逻辑器件(PLD)可以极大地方便数字集成电路的设计,本文介绍一种利用VHDL.硬件描述语言结合现场可编程门阵列(FPGA)设计的数控延时器,延时器在时钟clk的作用下,从8位数据线输入延时量,到IATCH高电平时锁存数据,可以实现对触发脉冲TRIG的任意量的延时。由于延时范围不同,设计所用到的FPGA的资源也不同,本文详细介绍最大延时量小于触发脉冲周期的情况。该延时器的软件编程和调试均在Muxplus II环境下完成,系统设计选用Altera公司的EPFl0K30AQC208-3,EPC1441型专用电路,与DSP相结合,应用于雷达目标模拟器的控制部分,实现对目标距离的模拟。 2 设计
[半导体设计/制造]
强化协作生态 SoC FPGA成攻城利器
Altera公司意欲通过更先进的制程工艺和更紧密的产业合作,正逐步强化FPGA协同处理器,大幅提升SoC FPGA的整体性能,为抢攻嵌入式系统市场版图创造更大的差异化优势。随着SoC FPGA在嵌入式系统市场的渗透率急速攀升,FPGA厂商各自开发出更具竞争力的SoC FPGA、创新ASIC级可编程架构、加强与SoC合作伙伴的交流,意图打造更完善的SoC生态系统,大举进攻嵌入式系统应用市场。   Altera公司亚太区产品市场经理谢晓东表示,Altera SoC FPGA将ARM双核处理器与Altera SoC FPGA的先进技术相联接,采用了双核ARM Cortex-A9 MPCore处理器以及硬核存储器控制器和外设,在处理器系
[模拟电子]
强化协作生态 SoC <font color='red'>FPGA</font>成攻城利器
利用搭载全域硬2D NoC的FPGA器件去完美实现智能化所需的高带宽低延迟计算
随着大模型、高性能计算、量化交易和自动驾驶等大数据量和低延迟计算场景不断涌现,加速数据处理的需求日益增长,对计算器件和硬件平台提出的要求也越来越高。发挥核心器件内部每一个计算单元的作用,以更大带宽连接内外部存储和周边计算以及网络资源,已经成为智能化技术的一个重要趋势。这使得片上网络(Network-on-Chip)这项已被提及多年,但工程上却不容易实现的技术再次受到关注。 作为一种被广泛使用的硬件处理加速器,FPGA可以加速联网、运算和存储,其优点包括计算速度与ASIC相仿,也具备了高度的灵活性,能够为数据中心与边缘计算提供理想的数据处理加速;除此之外,FPGA还在传感器融合和输入数据流整理汇流等领域发挥关键作用,是智能化应用
[嵌入式]
莱迪思FPGA让玩视科技实现SDI与HDMI灵活转换
莱迪思半导体有限公司,低功耗可编程器件的领先供应商,近日宣布深圳玩视科技有限公司(HDCVT)采用莱迪思FPGA器件提供的丰富高速的SERDES资源和灵活的I/O接口,实现双通道3G SDI转HDMI/VGA/RGB桥接,适用于专业音视频传输、处理及控制类设备。 莱迪思中国销售副总裁王诚先生表示:“玩视科技有限公司作为本地领军企业,专注音频和视频设备的设计、制造和销售。我们很高兴看到他们的产品选用我们的FPGA器件,莱迪思FPGA可实现各类灵活的桥接解决方案,并且通过我们资深的研发和应用工程方面的经验,满足他们的各类需求,帮助他们缩短产品上市时间。” Lattice FPGA系列具备高性能特性,如增强的DSP架构、高速SE
[嵌入式]
用内部逻辑分析仪调试FPGA
   推动FPGA调试技术改变的原因   进行硬件设计的功能调试时,FPGA的再编程能力是关键的优点。CPLD和FPGA早期使用时,如果发现设计不能正常工作,工程师就使用“调试钩”的方法。先将要观察的FPGA内部信号引到引脚,然后用外部的逻辑分析仪捕获数据。然而当设计的复杂程度增加时,这个方法就不再适合了,其中有几个原因。第一是由于FPGA的功能增加了,而器件的引脚数目却缓慢地增长。因此,可用逻辑对I/O的比率减小了,参见图1。此外,设计很复杂时,通常完成设计后只有几个空余的引脚,或者根本就没有空余的引脚能用于调试。                                  图1 Lattice FPGA的LUT
[测试测量]
用内部逻辑分析仪调试<font color='red'>FPGA</font>
Altera 与西藏大学在今年九月共同成立 FPGA 实验室
Altera公司 (NASDAQ: ALTR) 今天宣布,Altera在今年九月成为首家外资公司与西藏大学共同成立一个 FPGA实验室。西藏大学位于西藏拉萨,有超过12,000名学生,是一所享有盛名的学府,并且是西藏地区唯一被国家列入211项目名单之内的高等学府。该项目是培养中国的高级别的精英大学,目的是配合经济和社会的发展策略。这足以证明西藏大学在科学,技术和人力资源方面,已达到相当水平,符合中国政府设定的标准。 该联合实验室是世界上海拔最高的FPGA实验室,备有33套Altera Cyclone® II FPGAs的DE2-70开发套件装备。这是Altera在中国的第84个联合实验室,并且是Altera 大学计划
[嵌入式]
先进FPGA开发工具中的时序分析
概述 对于现今的FPGA芯片供应商,在提供高性能和高集成度独立FPGA芯片和半导体知识产权(IP)产品的同时,还需要提供性能卓越且便捷易用的开发工具。本文将以一家领先的FPGA解决方案提供商Achronix为例,来分析FPGA开发工具套件如何与其先进的硬件结合,帮助客户创建完美的、可在包括独立FPGA芯片和带有嵌入式FPGA(eFPGA)IP的ASIC或者SoC之间移植的开发成果。 随着人工智能、云计算、边缘计算、智能驾驶和5G等新技术在近几年异军突起,也推动了FPGA技术的快速发展,如Achronix的Speedster7t独立FPGA芯片不仅采用了7nm的工艺,而且还带有二维片上网络(2D NoC)和机器学习处理
[嵌入式]
先进<font color='red'>FPGA</font>开发工具中的时序分析
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved