基于激光告警系统的异步FIFO设计和实现

出处:付 林 发布于:2011-08-26 17:01:46

 

  激光技术经过几十年的发展,激光武器已从理论走向实践。激光武器的大量出现带来了日益严峻的威胁,激光告警设备对激光来袭的探测与预报是激光对抗的基本手段。如何从复杂的环境下探测判断激光来袭信号是告警系统面临的首要任务。随着数字技术的发展,处理速度的不断提高,采用数字技术如FPGA等来处理告警信号成为可能。本文采用Verilog HDL语言设计了一种异步FIFO(时钟周期和相位相互独立),它不仅提供数据缓冲,而且能够实现不同时钟域间的转换等功能。

  1 激光告警接收系统的数据采样和处理

  对于高速在片激光告警接收系统,具有较高的采样速率、低功耗、体积小以及相应的高抗干扰性能是提高其成功获取敌方激光武器有效数据的关键,而采用线性CMOS芯片和提高系统的集成度是实现小体积、低功耗的经济、有效的途经。本系统采用Xilinx公司Spartan-Ⅲ系列芯片XC3S1500,设计完成异步FIFO缓存,包括采集控制电路、FFT数据处理、时钟控制信号、接口电路等。激光告警接收系统的数据采样和处理框图如图1所示。

  2 异步FIFO设计

  FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。FIFO一般用于不同时钟域之间的数据传输,比如FIFO的一端时AD数据采集,另一端时计算机的PCI总线,假设其AD采集的速率为16位 100K SPS,那么每秒的数据量为100K×16bit=1.6Mbps,而PCI总线的速度为33MHz,总线宽度32bit,其传输速率为1056Mbps,在两个不同的时钟域间就可以采用FIFO来作为数据缓冲。另外对于不同宽度的数据接口也可以用FIFO,例如单片机位8位数据输出,而DSP可能是16位数据输入,在单片机与DSP连接时就可以使用FIFO来达到数据匹配的目的。

  异步FIFO由读、写地址逻辑,存储单元和空满标志逻辑四部分组成,如图2所示。由图2可以看出,整个系统分为两个独立的时钟域(读时钟域和写时钟域),FIFO的存储介质为一块双口RAM,可以同时进行读写操作。在写时钟域部分,由写地址逻辑生成写控制信号和写地址;在读时钟域部分,由读地址逻辑生成读控制信号和读地址。空满标志信号,由写指针和读指针通过异步比较器相互比较生成。对于异步FIFO设计主要有以下两个难点:一是如何同步异步信号,避免触发器亚稳态的产生;二是如何根据FIFO的指针信号正确地判断FIFO的空满状态。

  2.1 亚稳态问题的解决

  在数字电路中,触发器需要满足setup/hold时间要求。当一个信号被寄存器锁存时,如果信号和时钟之间不能满足这个要求,data2端的值就是不确定的,这个过程称为亚稳态。如图3所示为常用异步时钟和亚稳态[2].

  在异步FIFO中,由于时钟之间周期和相位完全独立,因此数据的丢失概率不为零。尽管亚稳态无法彻底消除,但是可以通过下面方法将其降低到一个可以接受的范围之内。

  (1)对读地址/写地址采用Gray码设计。这是因为采用二进制计数时所有位都可能变化,不利于跨时钟域的同步。例如,3位二进制数从3变到4(即011~100)时,所有位都发生了变化,而Gray码的特点是每次只有一个数据位变化。由于同步多个异步输入信号出现亚稳态的概率远远大于同步一个异步信号的概率,因此,写地址指针和读地址指针均采用Gray码计数器,可以保证一个时钟域的指针尽可能安全地被转换到另一个时钟域,有效避免了亚稳态。

  (2)采用触发器来同步异步输入信号,如图4中的两级触发器,可以将出现亚稳态几率降低到一个很小的程度。

  不过,使用这种方法会增加延时。为了充分利用FPGA器件资源,提高系统运行速度,同时有效地避免亚稳定状态,结合系统实际应用,本设计采用Gray码设计读写地址。

  2.2 空满状态的判断

  在异步FIFO设计中,正确地产生"空"/"满"标志是困难的部分,主要有两个问题:(1)异步时钟域问题,由上分析可知,可采用Gray码计数器解决;(2)因为FIFO"空"/"满"都表明读/写指针相等,因此必须准确区分是读"空"还是写"满"."空"、"满"状态的产生需要两个条件:①对方向的判定:即判定具体是写地址指针将要接近读地址指针,还是读地址指针将要接近写地址指针;②读写地址是否相等[4].

  解决办法:将FIFO地址空间按两位划分成4个象限,每当读/写地址相等时,通过对两位译码以产生正确的"空"/"满"标志。

  若写指针比读指针滞后一个象限,则FIFO为"接近满"状态,此时置标志"direction"为1,并且锁存其值,相应等式为:

  wire disrest_n=~((wptr[n]^rptr[n-1]))&~((wptr[n-1])^rptr[n] ))

  若写指针比读指针超前一个象限,则FIFO为"接近空"状态,此时置标志"direction"为0,并且锁定其值,相应等式为:

  wire dirclr_n=~((~(wptr[n]^rptr[n-1])&(wptr[n-1]^rptr[n]))∣~wrst_n

  3 模块设计的Verilog实现

  Verilog 是由en:Gateway Design Automation公司于大约1984年开始发展。Gateway Design Automation公司后来被 Cadence Design Systems于1990年所购并。现在 Cadence 对于 Gateway 公司的 Verilog 和 Verilog-XL 模拟器拥有全部的财产权。 Verilog HDL进行设计的优点是其工艺无关性。这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。 Verilog HDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASICs和FPGA的设计之用。Verilog 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。

  3.1 存储模块RAM

  为增加设计的可移植性,本设计的存储单元没有采用ISE8.1软件中的IP核,而是通过Verilog HDL语句设计一个二维数组,通过修改参数可得到相应数据宽度的输入/输出存储空间。主要语句如下:

  module dp_ram(rdata,wdata,waddr,raddr,wclken,wclk);

  parameter DATA_WIDTH=12;

  parameter ADDR_WIDTH=10;

  parameter DEPTH=1《ADDR_WIDTH;

  always @(posedge wclk)

  if (wclken) MEM[waddr]<=wdata;

  assign rdata=MEM[raddr];

  endmodule

  3.2 读/写、空/满标志逻辑模块

  读写地址设计中引用了Gray码,因Gray码是一种在相邻计数之间只有一位发生变化的编码方式,用Gray码做地址计数可以消除在电路中的模糊现象,避免亚稳态。Gray码可以借助二进制计数器实现。

  3.3 异步比较器

  异步比较器用于判断比较读指针、写指针的大小,输出控制信号,判断存储器中数据是"接近满"还是"接近空".其主要程序语句如下:

  module async_cmp(aempty_n,afull_n,wptr,rptr,wrst_n);

  always @(posedge high or negedge dirset_n or negedge dirclr_n)

  if (!dirclr_n) direction <= 1'b0;

  else if (!dirset_n) direction <= 1'b1;

  else direction <= high;

  endmodule

  3.4 异步FIFO模块及RTL级硬件电路

  利用Verilog硬件设计描述语言,在Xilinx公司ISE 8.1软件开发环境中编译后得出如图5所示的异步FIFO模块。

  采用综合工具Synplify Pro软件对该设计进行综合,得出RTL级硬件电路结果图如图6所示。

  3.5 芯片资源利用

  表1列出了设计高速在片激光告警接收系统的异步FIFO占用FPGA(XC3S1500)芯片内部资源的情况。由表1可知,FIFO模块完成后,还有大量的资源可以利用,因此剩余资源可用于实现FFT数据处理、采集控制、显示等功能,从而在一块芯片上完成多种功能,可有效减少激光告警接收机的体积,朝小型化发展。


  4 系统波形仿真

  读写时钟异步使得FIFO存储器的输入和输出数据速率不相等,在读操作时钟频率高于写操作时钟频率时,可能出现"读空"状态;当写操作时钟频率高于读操作时钟频率时,可能出现"写满"状态。在高速在片激光告警接收系统中,数据读取时钟比写时钟要高,本文选取种情况进行仿真。无论是"读空"还是"写空",对于异步FIFO来说,读取的数据一定等于写入的数据。利用Modelsim SE 6.0仿真软件进行仿真,其波形如图7所示。结果表明,该设计是正确的。

  本文提出的FIFO设计方法解决了不同时钟域间的数据缓冲和时钟转换功能问题,避免了数据的丢失;通过运用Gray码计数器只变换一位的特点,有效地同步了异步信号,避免了亚稳态的产生;与二进制计数器相比,还能减少线路切换,进而减少功率的消耗[3];采用Verilog HDL语言描述设计,可移植性好、生成的硬件电路面积小、速度快、系统可靠性高。目前,该FIFO设计已经在所研制的激光告警接收系统中得到应用。

 


  

参考文献:

[1]. PCI datasheet https://www.dzsc.com/datasheet/PCI_1201469.html.
[2]. Gray datasheet https://www.dzsc.com/datasheet/Gray_2529394.html.
[3]. n-1 datasheet https://www.dzsc.com/datasheet/n-1_1997158.html.
[4]. XC3S1500 datasheet https://www.dzsc.com/datasheet/XC3S1500_1134617.html.


版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!