1、 本 科 毕 业 设 计 基于 FPGA 的 同步 fifo 设计 与仿真 所在学院 专业班级 电子与信息工程 学生姓名 学号 指导教师 职称 完成日期 年 月 I 摘要 RAM 是一种重要的时序逻辑存储电路,它的逻辑功能是在地址信号的选择下对指定的存储单元进行相应的读写操作。数据读入后,存 储器内的原数据不变;而新数据写入后,原数据自然消失,并为新数据代替。 FIFO 作为 RAM 下面的一种存储器,本身的性能和 RAM 十分地相似。本论文中的同步 FIFO 是指读和写都在一个时钟下工作的存储器。 FIFO 作为一种先进先出的存储器,应用范围广泛,加之现代电子技术的不断发展,信息量越来越大,
2、人们需要对 数据进行快速存储和读取, 尤其体现在大规模的电路设计中,需要较大的存储,实存存储已经无法满足需求,这就需要建立可存储大量数据的虚拟存储空间, 而 FIFO 这种先进先出的结构特点很好地适应了这些要求 。 本文中 同步 FIFO 的对 外接口包括时钟,清零,读请求,写请求,数据输入总线,数据输出总线,空以及满信号。 采用 VerilogHDL 描述语言进行编程,运行成功后在 Quartus开发平台上进行设计仿真。仿真结果显示,本论文设计的同步 FIFO 虽然虚拟存储空间较小,但是程序上可以无限扩展,空满状态的检测方便,虽然程序简单,但体现了设计的灵活性。 关键词:同步; fifo;可
3、编程逻辑器件; FPGA; Verilog 语言 II Abstract RAM is a kind of important temporal logic storage circuit, its logical function in the choice to address signals under specified storage unit for the corresponding reading and writing operation. Data read the original, memory after data within changeless; But new
4、 data writing, the original data, and disappear naturally for new data instead. FIFO as a memory RAM below the performance and RAM, itself very similar. This thesis of synchronous FIFO refers to read and write all in one clock worked under memory. FIFO as an advanced first out memory, wide range of
5、application, together with the modern electronic technology unceasing development, information more and more big, people need to read fast storage and data, especially embodied in large-scale circuit design, need large storage, positive storage cannot meet demand, this need to build can store large
6、amounts of data, and virtual storage space first out this advanced FIFO structural features well adapted to these requirements. In this paper the synchronous FIFO foreign interface including clock, reset, read requests, write request, data input, data output bus, the bus and full signal empty. Using
7、 VerilogHDL describing programming language, after the success of the operation in Quartus development platform design simulation. Simulation results show that, this thesis design synchronous FIFO although virtual storage space on smaller, but the program can be extended unlimitedly, empty full dete
8、cting state of convenient, although procedure is simple, but the reflected design flexibility. Key words: synchronous;fifo; programmable logic device; FPGA; Verilog language III 目录 第 1 章 绪论 . 1 1.1 引言 . 1 1.2 国内外研究现状 . 1 1.3 本论文所做的主要工作 . 2 第 2 章 常用存储器及其原理 . 4 2.1 存储器 . 4 2.1.1 存储器的基本结构 . 4 2.1.2 存储器
9、的基本指标 . 6 2.2 常用的存储器的分类 . 7 2.2.1 RAM . 9 2.2.2 ROM . 9 2.2.3 FIFO. 10 2.3 软 件实现虚拟存储器功能 . 12 第 3 章 基于 FPGA 的同步 FIFO . 16 3.1 各器件介绍 . 16 3.1.1 可编程逻辑器件 . 16 3.1.2 硬件描述语言 VerilogHDL . 16 3.1.3 开发工具简介 . 17 3.2 整体设计方案 . 19 3.2.1 EP1C3T144C8 芯片介绍 . 19 3.2.2 FIFO 接口的设计 . 19 3.3 各种功能模块结果图 . 24 3.3.1 满信号显示 .
10、 24 3.3.2 NRST 低电平时的情况 . 25 3.4 结果仿真图 . 25 第 4 章 调试中错误的解决 . 27 小结 . 28 致谢 . 错误 !未定义书签。 参考文献 . 30 IV 附录 . 31 1 第 1 章 绪论 1.1 引言 早期的电子管、晶体管、中小规模集成电路早已被现在的超大规模集成电路所取代。但是,随着电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。在社会需求下,数字电路系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。 早期的可编程逻辑器件 (PLD),能够完成各种数字逻辑功能,并且延续了 EEPROM 工艺,实现了 电可擦除、
11、电可改写,其输出结构是可编程的逻辑宏单元,因此具有很强的灵活性,但是过于简单,无法满足较大规模的电路。但是 20 世纪 80 年代, Xilinx 推出的 FPGA 具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。同时又满足了设计者要求的设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实现在线检验等优点,立刻占据了市场。 由于用 FPGA 广泛应用于门阵列、 PLD 和中小规模通用数字集成电路 ,使整个设计更加紧凑、更小巧、灵活、稳定、可靠。把 FIFO 器件集成到其中是替代专用芯片的最 有效的实现方式。常用的 FIFO 是双端口的存储器,其中一个端口用
12、于写入数据,而另一个端口用于读出数据 , 同时对存储器 的 字存储单元进行写入和读出操作。 FIFO 型的存储器由另外的信号线 (或标志 )来指明存储器的内容状态 ,不通过 地址来存取数据。 本文提出了一种用 FPGA 芯片实现同步 FIFO 的设计方案 , 重点强调了设计有效、可靠的握手信号 EMPTY 与 FULL 的方法 , 并给出了其 Verilog 语言实现,同时根据程序给出不同情况下的仿真图。 FIFO(First IN First Out)先进先出电路是一种实现数据先进 先出的存储器件,普遍用作数据缓冲器。 FIFO 的基本单元是寄存器,作为存储器件, FIFO 的存储能力是由其
13、内部定义的存储寄存器的数量决定。 1.2 国内外研究现状 ( 1)研究意义 近代信息技术在不断地发展,尤其是在本世纪在九十年代早期美国在南斯拉夫战争和两次海湾战争中运用了大量的电子战、信息战,其强大的军事力量让全世界震惊,持此以外也获得了众多国家的关注和学习,再结合本世纪 70 年代初我国在航天航空事业方面的快速发展,使得我国开始重视和发展信息技术,同样的,技术越是发展,对信息的存储容量就提出了要求,对高速、大 容量、高可靠性的静态存储器提出了更高的要求。军队也对数据存储器提出了更高的要求。从现有的资料中了解到军用计算机对数据传输速率最大也只在 5Mb s,目前采用的最快的数据传输方式 DMA
14、(直接存储器存取模式)已经无法满足几十 Mb s 的超高速采样速率,直接导致数据在采集过程就结束时还没被计算机读取。所以传统的计算机传输方法和处理数据的方法已经难以满足当前的信息技术上的需求,同时,采样速率达不到要求可能造成数据的丢失与混乱。在这里,提出了本论文的主要意义 对于快速采集,慢速处理的系统能做到缓存。 同步 FIFO 是一 种先进先出电路,它能以普通速度匹配数据缓冲器,能在快速的处理器和、外设之间实现匹配。而且在远程通信、数字信号处理、图像处理、大容量存储系统和周边系统有着广泛的应用前景。当 FIFO 芯片在容量、宽度和速度上的提高,芯片也会越来越广阔的应用前景。 近年来,随着存储
15、器在容量以及表现在存储设备的进一步发展, FIFO 存储方式得到了越2 来越广泛的应用。但是国内保密性要求严格的存储器却几乎依赖进口。虽然国内有有名的研究所和厂商也开发了 FIFO 电路,在这方面,台湾企业的技术比国内的有很大的优势。但是存储器目前还没有形成系列化, 远不能满足军事需求,即使是我国引以为傲的航天技术中运用的武器和装备也是依赖国外进口,我国对进口设备的过分依赖对未来的军事建设危害巨大。近年来 我国 FIFO 市场发展迅速,产品产出持续扩张,国家鼓励 FIFO 产业向高技术产品发展,国内企业新增投资项目投资逐渐增多 , FIFO 市场的发展研究增大 ,这么做的目的一方面为了防止国外
16、厂商对我国的封锁和禁运,另一方面研发出国产的高性能同步 FIFO,这对加强国防建设,发展空间技术有着重大意义。 ( 2)国内外发展概况 早在上世纪 80 年代处资讯并不发达, FIFO 存储器容量和速度的要求很 低。 FIFO 芯片是基于中规模逻辑器件的移位寄存器中,串行的移位寄存器作为存储单元,组合逻辑电路构成输入输出端。在这种 FIFO 芯片中数据在时钟的作用下从第一个寄存器到第 N 个寄存器 (N 是FIFO 芯片的容量 )在输入和输出的情况下,最后被读出,从结构的角度看,数据从写入到读出要经过 N 个周期的延迟。如果这种 FIFO 芯片的容量 N 很大,那么这种延迟也将很长。我们可以得
17、出 FIFO 芯片中的缓存器可以对间断性瞬间高速外部数据进行缓存。但从长时间来看,平均速率却不高。 FIFO 缓存器有两种组合,一种就是先进先出,后进后出;第二种时 基于 RAM阵列的结构,目前市面上常用的 FIFO 芯片采用基于 RAM 阵列的结构。大规模集成电路中常采用有两套数据线的双端口 RAM 存储器,两套数据线分别作为输入和输出端口, FIFO 芯片内部存储单元采用双端口 RAM。读写时钟控制 FIFO 的读写地址指针,有顺序地从存储单元读写数据,从初地址开始到最后一个存储单元,最后回到第一个存储单元。还可以通过读写地址来产生空满的标志。采用 RAM 结构,数据从输入到输出的延迟缩小
18、,深度指能缓存数据的个数,宽度是指每个缓存数据的位数。基于能满足市场不断扩大的需求,并在存储深度和宽度上得 到很大发展。新型大规模集成电路技术越来越先进,大容量的 FIFO 芯片必定会成为今后的主流。目前,为了使存储信息得到完善的保存,适应市场高速缓存的需求。存储单元采用动态 RAM 代替静态 RAM,虽然 SRAM 芯片的体积较大,存储容量也不及动态 RAM,但是不需要刷新,工作速度快 在国内单独做 FIFO 的很少。国内也有公司开发 FIFO 电路,但目前还远远不能满足军事需求。通常国内外在设计 FIFO 时有两种方法,一种是利用可编程逻辑器件构造 FIFO,在这方面 Xilinx 公司开
19、发的器件占领了较大的市场,并且质量上也占据了一定的优势 。另一种就是利用 Verilog 等描述语言对 FIFO 的功能结构描述,构建一种虚拟的 FIFO 存储,但是这种虚拟存储可以构成缓存,对于实存细节上的问题可以忽略。但多数 EDA 软件中, EDA 和其他硬件语言编辑器是借助综合器来完成的,综合器可以将 Verilog 语言转变成的物理格式的电路,FIFO 是 RAM 存储器的一种,现在对 FIFO 的描述是体现在它对数据有着存取的功能。但是现在的综合器对数组的综合通常是转变成寄存器的结构。综合后的 FIFO 结构庞大,一旦设计大容量的 FIFO 时,会浪费大量的面积,加上 SRAM 本
20、身集成度低,成 功实现设计的可能性将变得很低。 1.3 本论文所做的主要工作 所谓同步是指的是读和写都在一个时钟下工作的。读地址和空标志是由读时钟产生的,而写地址和和满标志则由写时钟产生,当 FIFO 产生空或满标志时,就要进行读写地址的比较,3 但是直接比较会存在问题,我们知道,存储器在数据的读取上存在时延,存储容量越大,时延会越大,读写地址直接比较,让读写地址的每一位在读写时钟的作用下,输出端结果一开始不一致,要过一段时间才能稳定。因此 FIFO 设计要求如下: ( 1)学习和研究了不同方式实现同步 FIFO 的设计方法,对其的原理性 了进行了重点解析。 ( 2)用硬件描述语言 Veril
21、ogHDL 来实现同步 FIFO,并对其进行仿真。 ( 3)建立读写指针。 4 第 2 章 常用存储器及其原理 2.1 存储器 存储器是计算机系统的重要组成部分之一,有主存储器和辅助存储器之分。本文中讨论的主存储器,又可称为内存储器。主存储器用来存放程序和数据, CPU 在工作过程中要频繁地与主存储器交换信息,因此主存储器的性能在很大程度上影响着整个计算机系统的性能。 目前广泛采用按地址访问的主存储器,它由许许多多的存储元构成,存储元是存储器的最小存储单位,一个存储元可以 存放一位二进制信息。若干个存储元构成一个存储字,每个存储字有一个相对应的惟一的地址且存储字长与机器字长相同。 存储器 作为
22、 计算机系统中的记忆设备,用来存放程序和数据 ,已被越来越多的运到各种超大规模电路中, 尤其在多处理机的系统中,各处理机本身都需与其主存交换信息,而且各处理机在互相通信中,也都需共享存放在存储器中的数据。因此,存储器的地位更为重要。从某种意义上讲,存储器的性能已成为 一些 系统的核心 17。 2.1.1 存储器的基本结构 CPU 执行指令的过程实际上分为两个步骤:一是取指令,二是执行指令。 CPU 与存储器之间是通过总线连接的,当 CPU 执行一条指令时,首先必须从存储器中将指令读出到总线上,再通过总线将指令传送到 CPU 内部,这一过程称为取指令;然后对指令进行译码分析,最后执行该指令,这一
23、过程称为执行指令 ,如图 2.1 所示 。 假设指令从存储器中读出的时间为 At ,指令在总线上传输的时间为 Bt ,指令在 CPU 中执行的时间为 tE。这样,一条指令的执行时间为 At + Bt + Et ,称为指令周期。 Bt 的大小取决于总线传输速度,而 At 的大小取决于所配置的存储器的存取速度,这一时间实际上就是存储器的读周期时间,对某一存储器而言,这一时间是固定的。由此我们可以看出,计算机的性能是 ADD MOV CPU 指令在总线上传输 存储器 指令从存储器中被读出 指令在 CPU 中执行 执行指令 取指令 图 2.1 指令的执行过程 5 由组成它的各个功能部件的综合性能来体现
24、的,光有高速的 CPU 还不够,还要有高速的存储器和高速的总线传输等。 任何计算机系统对 存储器要求具有大容量、高速度以及 低价格等特点。然而,这三者之间是互相矛盾的, 存储器速度增大,存储容量就不可能变得很大,价格也不可能很低;如果要求存储器容量很大,存储速度就不可能很高,成本也不可能很低 。为了解决这些矛盾,除了不断研制新的存储器,提高存储器的性能外,还 需要 从存储器的系统结构上较好地解决存储器大容量、高速度与低价格之间的矛盾。目前在计算机系统中,通常采用多级存储器体系结构,即使用寄存器组、高速缓冲存储器、主存储器和外存储器,它们的存取速度依次递减,存储容量依次递增,位价格依次降低 ,图
25、 2.2 所示 。 最简单的二级存储器层次如图 2.3 所示。整个存储系统由主存储器和辅助存储器两级构成。主存储器一般由半导体存储器构成,它速度快,但容量小,成本较高,通常用来存放程序的“活跃部分”,直接与 CPU 交换信息;辅助存储器一般由磁表面存储器构成,它速度慢、但容量大、成本低,通常用来存放程序的“不活跃部分”,即暂时不执行的程序或者暂时不用的数据,需要时,将程序或数据以信息块为单位从辅助存储器调入主存储器中。因此,何时将辅存中的信息块调入主存,何时将主存中已用完的信息块调入辅存,所有操作由辅助软硬件来完成,主、辅存构成的两级存储层次才成为一个完整的存储系 统,对 CPU 来说,访问存储器的速度是主存储器的,而存储器的容量和成本是辅助存储器的,满足了上述三方面的要求。 CACHE 主存 磁盘 CACHE 磁盘 磁带 光盘 图 2.2 存储系统的分级结构 CPU 存储器