1、 1 毕业设计文献综述 电子信息工程 基于 FPGA 的同步 FIFO 的设计与仿真 前言 早期的电子管、晶体管、中小规模集成电路早已被现在的超大规模集成电路所取代。但是,随着电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。在社会需求下,数字电路系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。 FPGA设计根据芯片的不同可分为同步设计和异步设计两种系统设计方法 。FPGA设计关键在于如何提高系统工作频率和稳定性,并最大程度地可以在很大程改善应用中遇到的问题。同步设计中触发器的建立和保持时 间比较容易满足 , 可以更好地减小压稳态闭的发生概率 , 这也是同步设计
2、优于异步设计的优势。本文提出了一种用 FPGA 芯片实现同步 FIFO 的设计方案 , 重点强调了设计有效、可靠的握手信号 EMPTY 与 FULL 的方法 , 并给出了其 Verilog语言实现,同时根据程序给出不同情况下的仿真图。 FIFO(First IN First Out)先进先出电路是一种实现数据先进先出的存储器件,普遍用作数据缓冲器。 FIFO的基本单元是寄存器,作为存储器件, FIFO的存储能力是由其内部定义的存储寄存器的数量决定。 主题 1、 关于 FPGA和同步 FIFO的介绍 FPGA(Field Programmable Gate Array)即现场可编程门阵列, 它
3、具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点 ,同时 兼容了 PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。 它是专用集成电路 (ASIC)领域中 同时解决 定制电路 和 可编程器件门电路数有限的缺点 而制定出的一种 半定制电路而出现的。 FPGA由可编程输入 /输出单元、基本可编程逻辑单元、嵌入式块 RAM、布线资源、底层嵌入功能单元和内嵌专用硬核六部分组成。 其中 FPGA内自带的 RAM,根据 RAM 的不同还可以为单口 RAM和双口 RAM,和类似 RAM的 CAM、FIFO等存储结构。 FPGA丰富的布线资源连同其内部所有单元,信号在连线上的驱2 动和传输
4、能力取决于连线的长度和工艺。虽然 FPGA与 CPLD相比,只能完成简单的时序逻辑,时序延迟也不可预测,但 FPGA在编程上要比 CPLD灵活得多,集成度也比 CPLD高,因此 在通信、数据处理、网络、仪器、工业控制、军事和航空航天等众多领域 广泛被运用。 FIFO 是英文 First In First Out 的缩写,是一种先进先出的数据 缓存器 , FIFO 的数据 读写操作与 SRAM 的数据读写操作是相似的,唯一的区别是 FIFO 没有外部读写地址线。这样优点在于使用起来非常简单,但缺点就是只能顺序写入数据,在编程的同时还需要判断地址读写是否正确。 FIFO 数据地址由内部读写指针自动
5、加 1 完成,只有在顺序的读出数据的情况下,这种情况不存在普通存储器那中。 FIFO 存储器主要分为基于移位寄存器型和基于 RAM型。 RAM 型存储器又有单口双口 RAM之分, 目前市面上常用的 FIFO芯片采用基于 RAM阵列的结构。大规模集成电路中常采用有两套数据线的双端口 RAM存储器,两套数据线分别作为输 入和输出端口, FIFO芯片内部存储单元采用双端口 RAM。采用 RAM结构,不仅能缩小从输入到输出的延迟,还能缓存多个数据,存储容量较大,能满足市场不断扩大的需求 2、 FPGA的发展简史 PLD 是可编程逻辑器件( Programmable Logic Device)的简称,
6、FPGA 是现场可编程门阵列( Field Programmable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或 PLD/FPGA。 早期的可编程逻辑器件只有 PROM、 EPROM、 EEPROM 三种 , 结构 简单 ,只能完成简单的数字逻辑功能 。 其后, 研发 可编程逻辑器件 (PLD)可以运行 各种数字逻辑功能 ,在结构上也比较复杂。 典型的 PLD 由一个 “与 ”门和一个 “或 ”门阵列组成,而任意一个组合逻辑都可以用 “与一或 ”表达式来描述 。 接下来 阶段的产品主要有 PAL(可编程阵列逻
7、辑 )和 GAL(通用阵列逻辑 )。PAL 器件是现场可编程的,它的实现工艺有反熔丝技术、 EPROM 技术和EEPROM 技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列 (PLA),它是 由一个 “与 ”平面和一个 “或 ”平面构成, 但是这两个平面的连接关系是可编程3 的。 PLA 器件既有现场可编程的,也有掩膜可编程的。 在 PAL 的基础上,又发展了一种通用阵列逻辑 GAL, 它采用了 EEPROM 工艺,实现了电可 擦 除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。早期的 PLD 器件的一个共同特点是可以实现速度特性较好的逻辑功
8、能,但 结构 简单 , 只能实现规模较小的电路。 20 世纪 80 年代中期。 Altera 和 Xilinx 分别推出了类似于 PAL 结构的扩展型 CPLD(Complex Programmab1e Logic Device) 和 与 标 准 门 阵 列类 似 的FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了 PLD 和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。 当中以 FPGA 为代表的 编程器件 取得了飞速的 发展 , FPGA 内 可利用逻辑闸从最初的 1200 发展
9、到 90 年代的 25 万 。 此外,FPGA 还自带的 RAM,根据 RAM 的不同还可以为单口 RAM 和双口 RAM,和类似 RAM 的 CAM、 FIFO 等存储结构。 FPGA 又有着丰富的 布线资源,连接着FPGA 所有内部单元,信号在连线上的驱动和传输能力取决于连线的长度和工艺。虽然 FPGA 与 CPLD 相比,只能完成简单的时序逻辑,时序延迟也不可预测,但 FPGA 在编程上要比 CPLD 灵活得多,集成度也比 CPLD 高,而且应用范围广,面对市场需求,厂商正不断消除 FPGA 的缺陷,强化 FPGA 在运算和大功耗的缺点,让 FPGA 运用到更广泛的领域。 自 1985
10、年 Xilinx 公司推出有史以来第一颗现场可程序化逻辑组件至今,已经历了超过二十几年的发展历史。在发展过程中,以 FPGA 为代表的数字系统现场集成取得了惊人 的发展:现场可程序化逻辑组件从最初的 1200 个可利用逻辑闸,发展到 90 年代的 25 万个可利用逻辑闸。 3、使用 verilog语言 硬件描述语言 HDL 是一种用形式化方法来描述数字电路和系统的语言。HDL 具有与具体硬件电路和设计平台无关的特性,并具有良好的电路行为描述和系统描述的能力,并在语言易读性和层次化结构化设计方面,表现了强大的生命力和应用潜力。 VerilogHDL( Verilog Hardware Descr
11、iption Language)是硬件描述语言的一种。设计者可用它进行进行数字逻辑系统的仿真验证、 时序分析、逻辑综合,应用范围广,是目前最受欢迎的硬件描述性语言之一。目前在美国使4 用的 VerilogHDL 进行设计的工程师大约有 10 万多人,全美国有 200 多所大学授用 Verilog 硬件描述语言的设计方法。在台湾地区几乎所有著名大学的电子和计算机工程系都在讲授与 Verilog 有关的课程。 VerilogHDL 作为描述硬件电路设计的语言,能形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述;可借用高级语言的结构来抽象地描述电路行为;具有电路仿真与验证功能以保证设
12、计的正确性;支持电路描述由高层到低层 的转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。 Verilog HDL和 VHDL是目前世界上最流行的两种硬件描述语言,都是在 20世纪 80年代中期开发出来的。前者由 Gateway Design Automation公司开发 但是相比 VHDL, VerilogHDL被正式成为 IEEE标准的时间是在 1995年 。 但是 VHDL是从美国军方组织开发的, VerilogHDL是从普通的民间公司的私有财产转化而来的,因此更有生命力。 VerilogHDL于 1983年推出,已有 20多年的历史,因而 VerilogHDL有更广泛的设
13、计群体,资源比 VHDL丰富,更重要的是 Verilog HDL语言 易学易用,只要 有 C语言的编程经验, 通过一段时间内内的学习就能 很快的学习和掌握, 虽然 Verilog HDL语法简单易懂,编程上也比较自由 , 但 容易造成初学者犯一些错误 。 因此 Verilog HDL学习会与 ASIC设计 紧密相关 , VerilogHDL在门级方面开关电路描述方面有着很强的优势 , VerilogHDL对 HDL设计方法的学习入门又基础,学习者可以边学边用中 获得 掌握 VerilogHDL建模、仿真和综合技术,并为今后学习高级语言打下 基础 。 近年来, FPGA 的设计在规模和复杂度方面
14、不断取得进展,对系统的设计周期要求越来越短,这就要求技术人员采用高水平的设计工具。用 硬件描述语言Verilog HDL 来 设计, 可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,同时可以再不同规模应用时轻易地进行修改,以适应不同规模的应用。VerilogHDL 在输入上与工艺无关,这就不需要在设计和验证的时候考虑门级和工艺实现的具体细节,在这方面 VerilogHDL 占据很大的优势。加上 VerilogHDL在输入上与工艺无关,这也提高了 VerilogHDL 模型的可重用性。 常用的 Verilog HDL 语言开发软件有 Altera 公司的 MAX+PLUS II,
15、Quartus II 和 Xilinx 公司的Foundation ISE,在本次毕业设计中我们将运用 Altera 公司的 Quartus II I 作为设5 计的软件。 4、基本工具软件 Quartus II 是 ALtera 提供的 FPGA/CPLD 开发集成环境, Altera 是世界最大可编程逻辑器件供应商之一。使用 Quartus II 你可以尽快完成设计输入、布线布局、仿真、 HDL 综合和下载及硬件测试等流程,它提供了一种与结构 无关的设计环境,使设计者能方便地进入设计输入、快速处理和器件编程。 Altera 开发的 Quartus II 软件提供了完整的多平台设计环境,能够
16、满足各种不同设计的需要,更能支持百万门级的 FPGA 设计,为 FPGA 的开发提供了优化的综合和适配功能。 Quartus II 设计工具完全支持 VHDL、 VerilogHDL 的设计流程、其内部嵌有 VHDL、 VerilogHDL 逻辑综合器。该软件除具备 Quartus II 仿真功能外,同时也支持第三方的仿真工具。 Quartus II 不仅可以与 MATLAB 和DSP Builder 结合进行基于 FPGA 的 DSP 系统开发,是 DSP 硬件系统实现的关键EDA 工具, Quartus II 还可以与 SOPC Builder 结合,实现 SOPC 系统开发。Quartu
17、s II 也是是业界唯一提供 FPGA 设计流程的设计工具。 Quartus II 通过增强层次模块级设计方式,可将性能平均提高 15%,设计者可以使用该软件中最新提供的 HDL 测试模板,快速开发 HDL 的仿真矢量。Quartus II 可以自动地从 Quartus II 仿真波形中创建完整的 HDL 测试平台。Quartus II 支持高速 I/O 设计, IBIS 模型 根据每个引脚 I/O 标准设置来制定。Quartus II 内部包括模块化的编译器还可以进行分析、综合器、适配器、装配器、时序分析器、设计辅助模块、 EDA 网表文件生成器等功能。目前使用的Quartus II9.1
18、版本采用了高级布线算法,可以多个处理机处理,编译时间上大大缩短,而且这个版本的软件特性能迅速达到时序逼近,满足功耗预算。 Quartus II软件的使用者可以选择运行所有的编译器模块,也可以单独运行各个模块。现在 Altera已停止支持更新 Maxplus II,Quartus II与其相比不仅支持相似设备和 丰富的图形界面。 Altera在 Quartus I还包括是许多 SignalTap II,芯片设计辅助编辑器和 RTL Viewer设计辅助工具同时继承了 Maxplus II友好的图形界面 ,使用方便的特点 5、小结 随着集成电路技术的发展,人们对信息的存储需求 越来越大, 芯片集成
19、度和6 电路性能不断提高 ,对 数据 可 进行快速存储和读取, 尤其体现在大规模的电路设计中,需要较大的存储, 传统方法和手段进行产品开发 已经无法满足需求,这就需要建立可存储大量数据的虚拟存储空间, 对电路的设计和辅助工具进行升级与完善, 大容量存储器是 FIFO今后的发展方向 , 同步 FIFO的读和写都是同一个时钟,先进先出的设计也让设计者编译更加简单方便。 论文中 Verilog HDL硬件描述语言使用面广、资源丰富、 学习简单 , 只要 有 C语言的编程经验, 通过一段时间内内的学习就能 很快的学习和掌握, 在社会上十分通用,一旦熟练操作,可以尝试学习难度较高编程。 此次设计,将体现
20、 FIFO对 数据 的 快速存储和读取 。 7 参考文献 1张丕状基于 VDHL 的 CPLD/FPGA 开发与应用 M.北京: 国防工业出版社 ,2009.6 2罗苑棠 CPLD/FPGA 常用模块与综合系统设计 M.北京:电子工业出版社,2007.11 3刘凌 胡永生数字信号处理的 FPGA 实现 M北京:清华大学出版社, 2003.1 4Peter Wilson. FPGA 设计实践 M.北京 :人民邮电出版社, 2009.7 5夏宇闻 .Verilog 数字系统设计教程 M.北京:北京航空航天大学出版社 ,2003.7 6任晓东 .CPLD/FPGA 高级应用于开发指南 M.北京:电子
21、工业出版社, 2003.12 7王诚,薛小 刚,钟信潮 FPGA 及 CPLD 设计 M.北京:人民邮电出版社 ,2003.92 9朱明程 . FPGA 原理及应用设计 M.北京:电子工业出版社, 2001.10 10褚振勇 瓮木云 . FPGA 的设计与应用 M.西安: 西安 电子科技大学出版社,2002.27 11黄正瑾 .在系统编程技术及其应用 M.南京 :东南大学出版社 ,1998. 12Van HW Broeck,Skudelny HC,Stanke GV.Analysis and realization of a pulse width modulator based on vol
22、tage space vectorsJ.IEEE Transom Industry Applications, 1988,24 (1):142-150. 13Cirstea M.Vector control system design and analysis using VHDLC .Power Electronics Specialists Conference, IEEE 32nd Annual,2001: 81-84. 14张奇山 刘安芝 刘希顺 .基于 FPGA 的 FIFO 设计和应用 C.2009-18-305 15刘志杨 郭继昌 关欣 黄彩彩 .利用 FPGA 实现同步 FIFO 设置方法C.2006-02-29