基于fpga的非对称同步fifo设计

基于fpga的非对称同步fifo设计

ID:25002922

大小:55.00 KB

页数:6页

时间:2018-11-16

基于fpga的非对称同步fifo设计_第1页
基于fpga的非对称同步fifo设计_第2页
基于fpga的非对称同步fifo设计_第3页
基于fpga的非对称同步fifo设计_第4页
基于fpga的非对称同步fifo设计_第5页
资源描述:

《基于fpga的非对称同步fifo设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于FPGA的非对称同步FIFO设计

2、第1内容显示中本文在分析了非对称同步FIFO的结构特点及其设计难点的基础上,采用VHDL描述语言,并结合FPGA,实现了一种非对称同步FIFO的设计。  关键词:非对称同步FIFO;VHDL;FPGA;DLL;BlockRAM  引言  FIFO是一种常用于数据缓存的电路器件,可应用于包括高速数据采集、多处理器接口和通信中的高速缓冲等各种领域。然而在某些应用,例如在某数据采集和处理系统中,需要通过同步FIFO来连接8位A/D和16位数据总线的MCU,但是由于目前同步FIFO器件的输入与输出数据总线宽度相等,不能满足这种应用,因此通常采用

3、输入与输出数据总线宽度均为8位的同步FIFO作为它们之间的数据缓冲,并对MCU数据总线的高8位采用软件进行屏蔽,或是在同步FIFO外围增加数据锁存器及逻辑控制器件的方法解决。为了提高效率和降低系统设计的难度,本文采用VHDL描述语言,充分利用Xilinx公司SpartanIIFPGA的系统资源,设计实现了一种非对称同步FIFO(输入与输出数据总线宽度不一致的同步FIFO),它不仅提供数据缓冲,而且能进行数据总线宽度的转换。  非对称同步FIFO的设计难点  对于非对称同步FIFO的设计来说,不能简单地通过修改现成的同步FIFO模块而得到,这是因为非对称同步FIFO的设计有以

4、下几个需要解决的难点问题:  (1)写数据与读数据总线宽度不同。设写数据与读数据总线宽度分别为的器件,需要占用大量的存储空间。通常在编写VHDL程序时用数组描述的方法来设计数据存储结构,在综合时会耗用大量的寄存器,所以这种方法在FIFO的设计中是不可行的。  非对称同步FIFO的设计  针对以上设计中的难点,本文采用VHDL描述语言,利用Xilinx公司SpartanIIFPGA设计实现了一种非对称同步FIFO,设计中充分利用了FPGA中的资源如时钟延迟锁相环(DLL)和BlockRAM。  FPGA中的DLL  FPGA中的DLL是一种很好的资源,Xilinx公司Spar

5、tanII、SpartanIIE、Virtex-E等系列器件中就采用时钟延迟锁相环技术进行FPGA内部的时钟控制,它可以对时钟进行倍频、锁相等操作。  本设计中要利用SpartanII系列器件中的DLL产生二倍频时钟信号,电路原理图如图1所示。其中IBUFG、IBUF、BUFG、OBUF是时钟缓冲器,提供时钟信号的最小时延。  FPGA中的RAM  Xilinx公司的FPGA器件提供了片内RAM可供直接使用,而不必使用寄存器来构成存储空间,从而大大提高了芯片的利用率。根据型号的不同,FPGA中提供了两种结构的RAM:分布式RAM和BlockRAM。分布式RAM可以利用可配置

6、逻辑模块(CLB)设计实现,主要用于小容量片内存储;BlockRAM是FPGA内部的专用RAM模块,通常沿芯片的垂直边排列。根据具体型号不同,FPGA内部的BlockRAM在单位容量和总体容量上都有较大的不同。本设计将采用BlockRAM用于FIFO的编写。由于在Xilinx公司SpartanIIFPGA器件库中没有现成的宏模块,就需要自己生成BlockRAM模块,具有较高的灵活度。利用Xilinx公司的配套软件ISEFoundation和ISE模块的名称、BlockRAM的类型(如单口还是双口)、地址线和数据线的宽度,就可以生成用户希望得到的结构。一般来说,生成的结构会自

7、动加载到当前的项目中,从而可以像器件库中的元件一样调用。  非对称同步FIFO的结构  下面以时把双口RAM设计成写口RAM和读口RAM两个部分。例如FIFO写口RAM部分为512×8,读口RAM部分为256×16,这样通过数据存储格式的改变达到写数据与读数据总线宽度的转换。  (2)由于读数据时钟频率是写数据时钟频率的两倍,因此可利用FPGA中的DLL产生二倍频时钟信号来提高写数据的时钟频率,使读数据和写数据的时钟频率相等。二倍频时钟信号提供给写口RAM、写地址产生模块,而源时钟信号(一倍频)提供给读口RAM、读地址产生模块及空/满标志产生模块,从而解决了内部数据处理同步

8、的问题。  (3)由于双口RAM中存在两种数据存储格式,因此地址位数不同,读地址和写地址不能一一对应,例如FIFO写口RAM部分为512×8,读口RAM部分为256×16,因此写地址要求9位,而读地址要求8位,对于同一数据的写地址与读地址,写地址的高8位与读地址的8位相等,它们的区别仅在写地址的最低一位。因此可把写地址的高8位与读地址一同输入空/满标志产生模块,从而得到正确的full和empty信号。下面仅给出读写地址产生逻辑及空/满标志产生逻辑的VHDL设计程序:fifo_od8;//写地址增加1    endi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。