当前位置:首页 > 工业控制 > 电子设计自动化

0. 引言

目前,计算机上的系统总线常见的有 ISA总线、 PCI总线以及 VXI总线等。在实际应用中,PCI总线已经成为主流的应用总线,具有较高的数据传输效率,能满足大多数数据采集和发送系统的需求。由于 PCI总线规范相当复杂,一般实际应用中都选择专用的 PCI接口芯片来设计 PCI接口。本文选择美国 PLX公司生产的 PCI总线通用接口芯片 PCI 9054,利用该专用芯片桥接 PCI总线与本地总线 [1-3]。在实际半实物仿真测试系统的应用中,要求仿真计算机能够快速、稳定的连续输出所需数据,而由于 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)结构[4]

嵌入式逻辑阵列块( 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实现 [5]

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

本设计选择的 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存储器的空/满状态。



图 1 EEPROM 配置电路

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

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

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

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

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



图 2 由EAB 模块构成的FIFO 内部结构图



图 3 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_clkevent) 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存储器,提高了半实物仿真测试系统数据传输效率,解决了由于计算机中断而引起的数据传输间歇性问题。

参考文献

[1] Ravi Budruk,Don Anderson,Tom Shanley. PCI Express系统体系结构标准教材 [M].北京:电子工业出版社,2002:5-30.
[2]尹勇, 李宇. PCI总线设备开发宝典[M].北京:北京航空航天大学出版社,2005:1-14.
[3] PLX Technology,Inc. “PCI 9054 Data Book” Version 2.0[Z].USA,1999.
[4]李琳,陈勇生 . FLEX10K系列 EAB的应用 [J].国外电子元器件 . 2001(12):59-62
[5]张志安. 硬目标侵彻引信半实物仿真技术研究[D].南京:南京理工大学,2007.
[6]熊红兵,陈琦 . 基于 FPGA的异步 FIFO设计与实现[J].微计算机信息. 2006,6-2:216-218

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

4月17日消息,Intel官方宣布,工程师内部研发了一种新的AI增强工具,可以让系统级芯片设计师原本需要耗费6个星期才能完成的热敏传感器设计,缩短到区区几分钟。

关键字: Intel 芯片 1.8nm

业内消息,昨天美国芯片设计公司 AMD 推出了锐龙PRO 8040/8000系列AI处理器芯片,为支持人工智能的PC提供动力,试图在与英伟达和英特尔等竞争对手的AI PC 竞争中获得领先地位。

关键字: AMD 锐龙 AI处理器 芯片

今天,小编将在这篇文章中为大家带来电容笔的有关报道,通过阅读这篇文章,大家可以对电容笔具备清晰的认识,主要内容如下。

关键字: 电容笔 导体 芯片

Intel日前举办了Vision 2024年度产业创新大会,亮点不少,号称大幅超越NVIDIA H100的新一代AI加速器Gaudi 3、品牌全新升级的至强6、AI算力猛增的下一代超低功耗处理器Lunar Lake,都吸...

关键字: Intel 芯片 1.8nm

4月12日消息,Intel日前发布了LGA1851独立封装接口的酷睿Ultra处理器,代号Meteor Lake-PS,但不是给消费市场用的,而是面向嵌入式和边缘计算。

关键字: Intel 芯片

业内消息,上周有外媒称中国要求国内大型电信营运商在2027年前逐步淘汰外国芯片,引起半导体行业震动,作为中国市场的头部芯片供应商,英特尔和AMD当天美股盘中股价双双跌逾4%。

关键字: 电信运营商 芯片

在这篇文章中,小编将对晶圆的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 晶圆 芯片

业内消息,继此前正式公布新一代AI加速芯片 Gaudi 3 之后,英特尔拟另准备针对中国市场推出“特供版”Gaudi 3,包括名为HL-328的OAM相容夹层卡(Mezzanine Card )和名为HL-388的PCl...

关键字: 英特尔 特供芯片 芯片 Gaudi3

近日业内消息,美国研究机构American Enterprise Institute的最新报告显示,中国大陆供应商已经占据了俄罗斯芯片市场的近九成(89%)!其他供应商瓜分其余部分:泰国3%、土耳其2%、马尔代夫2%、阿...

关键字: 俄罗斯 芯片

随着科技的飞速发展,电子产品在我们日常生活中扮演着越来越重要的角色。而在这些电子产品中,接口作为连接设备与外部设备的桥梁,其重要性不言而喻。其中,Type-C接口作为一种新型的接口标准,因其独特的优势,逐渐成为了众多电子...

关键字: 电子产品 Type-C 接口
关闭
关闭