基于Verilog HDL的异步FIFO设计

 2023-03-01 10:03

论文总字数:16935字

摘 要

在现代生产的IC工业设计中,我们通常会遇到模块与外围芯片的设计当中,多时钟域的情况。当时钟从一个时钟域传递到另一个时钟时域的时候,并且当前时钟域与目标时钟域频率等各方面不一致的时候,信号的同步传播将会受到影响,这将使得系统发生异常,造成时钟的紊乱。为了有效的解决这个问题,我们通过对各种寄存器数据存储的形式实现及应用场合的对比,FIFO作为FPGA芯片内部数据的存储载体,并且绝大部分的数据传递都是遵循先进先出特性的,因此我们采取了异步FIFO(先进先出)存储器来解决上述问题。通过在FIFO中进行标志位的设置,然后进行格雷编码和解码,读时钟域模块设计,写时钟域模块的设计,最后编写TestBench对系统进行调试与纠正,我们通过测试结果可以发现这种方法是简单而又有效的。

关键词: 异步; 多时钟域; 亚稳态; FIFO(先进先出队列)

Asynchronous FIFO design based on Verilog HDL

Abstract

In modern industrial production IC design,We usually encounter module and peripheral chip designs, case of multiple clock domains.When the clock from one clock domain to another clock domain time,And inconsistent aspects of the current clock domain and frequency domain target clock time,Synchronous communication signal will be affected,This will make the system exception occurs,Resulting clock disorder.In order to solve this problem effectively,We realize and comparison applications through the various forms of data storage register,FIFO as data storage carrier FPGA chip, and most of the data transfer is to follow FIFO characteristics,So we took the asynchronous FIFO (First In First Out) memory to solve the above problems.By setting the flag in the FIFO, then Gray coded and decoded, read clock domain module design, write clock domain module design, and finally write testbench debug the system and correct,Our test results can be found through this method it is simple and effective.

Keywords: Asynchronous;Multiple clock domains;Metastable;FIFO(Fist In Fist Out)

目 录

摘 要 I

Asynchronous FIFO design based on Verilog HDL II

Abstract II

第一章 引言 1

1.1 课题研究的目的和意义 1

1.1.1 课题研究的目的 1

1.1.2 课题研究的意义 1

1.2 生产需求状况 1

1.3 FIFO的一些重要参数 1

1.4 Verilog HDL语言的简史 2

第二章 数据的储存 4

2.1 为什么要数据储存 4

2.2 数据储存的载体——FPGA芯片内部的载体 4

2.2.1 触发器 4

2.2.1 查找表 4

2.2.3 块存储 4

2.3 数据存储的形式实现及应用场合——寄存器 4

2.3.1 特征简介 4

2.3.2 实现载体 5

2.3.3 应用场合 5

2.4  数据存储的形式实现及应用场合——RAM 5

2.4.1 特征简介 5

2.4.2 实现载体 5

2.4.3 应用场合 5

2.5 数据存储的形式实现及应用场合——ROM 6

2.5.1 特征简介 6

2.5.2 实现载体 6

2.5.3 应用场合 6

2.6 数据存储的形式实现及应用场合——FIFO 6

2.6.1 特征简介 6

2.6.2 实现载体 6

2.6.3 应用场合 7

2.7 异步FIFO 7

2.7.1 空状态和满状态的判定 7

2.7.2 格雷编码 7

2.7.3 异步FIFO的用法 8

3.1 标志位 9

3.2 格雷编码和解码 9

3. 3 读时钟域模块 10

3.4 写时钟域模块 11

3.5本章小结 12

第四章 系统的调试与仿真 13

4.1 testbench的编写 13

4.2 测试的结果 15

致 谢 16

参考文献 17

第一章 引言

1.1 课题研究的目的和意义

1.1.1 课题研究的目的

异步FIFO(First In First Out,先进先出对列)存储器是一种先进先出逻辑器件,在现今社会的数字系统中得到了广泛的应用。在当今集成电路芯片的发展中,伴随着对设计规模设计难度越来越高的要求,在一个系统当中,将会存在着多个时钟,并且使用异步FIFO传输实时数据在两个不同的时钟系统当中它非常快速并且十分的方便。我们常常会用到异步FIFO。而且对于数据的读、写操作功能来说,它是跨时钟域的。所以对于异步FIFO存储器而言,其FIFO数据的写入是由某一个时钟域的控制信号决定。而其FIFO数据的读出由另一个时钟域的控制信号决定的。

1.1.2 课题研究的意义

随着我国经济技术能力得快速提升,我们的计算机技术、多媒体和数据通信等技术也得到了快速的发展。特别是一些如数字图像、语言等数据传输技术更是得到了极大的提升。其在社会生活取得了一系列的应用。异步FIFO电路更是当今集成电路芯片飞速发展的产物。在社会中应用领域十分广泛(计算机、多媒体、数据通信领域),其潜在市场需求量也十分的庞大。但由于国内对该方面研究起步较晚。国内的一些研究所和厂商开发的FIFO电路还远远不能满足市场和军事等方面需求。所以我们对异步FIFO电路的研究不管是从理论上说还是实际应用上来讲都具有很大的意义。

在现在的设计生产当中,FIFO的设计方法主要有以下两种:一种是在FPGA中基于信元的FIFO设计方法,而另一种是基于SDRAM/DRAM的大容量的设计方法。

1.2 生产需求状况

FPGA(现场可编程门阵列),它是一种主要以数字电路为主的集成芯片。其应用领域已经由当初单纯的通信领域现已经逐渐扩展到各大领域,在社会生产当中扮演者巨大的角色。它应用当于今各大领域(消费电子、工业控制、汽车电子、测试测量)等等。其在各大领域的应用一方面在于FPGA供应商产品功能的先进科学性。而在另一方面,由于越来越多的通用IP或客户定制IP进入市场,为了满足客户的不同要求(快速上市的需要等)。所以在在电子系统器件FPGA的程序设计当中,FIFO(先进先出队列)的设计得到了广泛的应用。它也通常应用在以下几个方面:如用于数据的缓存、用于容纳异步信号的频率或者相位的差异等。而随着技术的更新,电子产品的更新也紧跟其后,品种也在逐渐的增多。所以缓存对于电子产品的工作速度而言是相当重要的。这也就使得FIFO的市场更加的广泛。所以FIFO的研发在一定意义上已经尽量的满足了市场对产品的高速度的要求了。

1.3 FIFO的一些重要参数

我们知道FIFO的宽度指的就是一次数据位的长度,即FIFO在进行一次读写操作的时候产生的数据长度。就像我们所知道的MCU有8位和16位的长度,而ARM有32位长度一样。FIFO的宽度在生产的单片成品IC中,它的宽度是固定不变的。但在某些方面,它其实也是可以有供选择的,如果我们要通过使用FPGA来实现自己的一个FIFO,它的数据位我们就可以自己来规定的。它的数据位也就我们所说的宽度。而相对于FIFO来说,它的深度也是可以变化的。所以说当我们在进行FIFO的实际工作中,数据的继续写入或读出是可以被控制的,我们可以通过用其数据的满/空标志进而来控制它的状态。也就是说,我们在一个具体的应用当中,要精确的得出FIFO深度的数值不是说由一些参数就能得出的。

剩余内容已隐藏,请支付后下载全文,论文总字数:16935字

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;