毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc

上传人:哈尼dd 文档编号:3946684 上传时间:2019-10-10 格式:DOC 页数:30 大小:472.15KB
返回 下载 相关 举报
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第1页
第1页 / 共30页
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第2页
第2页 / 共30页
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第3页
第3页 / 共30页
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第4页
第4页 / 共30页
毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-verilog语言随机存储器的应用探讨与实践.doc(30页珍藏版)》请在三一文库上搜索。

1、 西北大学学士学位论文摘 要 Verilog是一种用于数字逻辑电路设计的语言。它既是一种行为描述语言,也是一种结构描述语言。也就是说,既可以用电路的功能描述也可用元器件和它们之间的连接来建立所设计电路的verilog模型。本次设计就是以 verilog语言为设计工具,它是在现场可编程门阵列(FPGA)上实现的。软件环境是xilinx的ISE8连接modisim. 本文主要是对可编程逻辑器件随机存储器的应用探讨与实践,主要讲了与毕设有关的verilog语言,ISE开发环境及随机存储器程序在ISE上的模拟过程。主要工作有: 1.熟悉随机存储器的工作过程及其构造; 2.用verilog语言编写模拟程

2、序。 3.在ISE上对程序进行编译模拟结果关键词:verilog,现场可编程门阵列,随机存储器 ABSTRACTVerilog is a language which used in the numeral logic circuit design. It is a kind of behaviordescription language. And it is also a kind of structure description language. In other words, the verilog model of the designed circuit can be establ

3、ished by the circuit function description and the connection between components. This design took verilog language as the design tool and implemented on FPGA. The software environment is the connection between xilinx ISE6 and modisim.This paper mainly discussed the programmable logical component (ra

4、ndom memory). The verilog language, ISE development environment and random memory programs during the simulation process on ISE which related to graduate design in it.The main work included:1.familiared with the work process and its structure of random memory.2.made simulation programs with verilog

5、piled analogue results of programs on ISE. Key words: verilog, FPGA, Random memory 目录第一章 前言51.1研究背景,目的:51.2论文的主要工作51.3论文的组织5第二章verilog HDL62.1 Verilog语言简介62.2verilog HDL历史62.3设计流程72.4verilog语言语法:72.4.1端口72.4.2常量72.4.3变量82.5 Verilog代码编写风格:82.6与Verilog语言相关的HLD介绍102.6.1 ASIC技术的发展102.6.2 HLD符合目前对电路的两个要求

6、112.6.3 电路设计方法112.6.4 电路设计应该采用的方法112.7 Verilog语言的主要能力11第三章FPGA简介133.1FPGA的概念133.2FPGA的基本特点133.3FPGA的工作原理133.4FPGA设计流程133.4.1功能仿真143.4.2逻辑综合153.4.3前仿真153.4.4布局布线163.4.5后仿真163.5 FPGA前景173.6FPGA常用器件介绍173.6.1固定功能器件173.6.2可编程器件183.6.3可重编程器件183.6.4可重配置器件183.6.5可复用器件183.6.6可升级器件18第四章随机存储器194.1随机存储器的组成194.1

7、.1存储体194.1.2地址译码器194.1.3I/O电路:194.1.4驱动器194.1.5片选与读/写控制电路194.1.6输出驱动电路194.2存储器实例19第五章程序原代码及说明215.1程序原代码215.2说明21第六章ISE环境及仿真236.1新建工程236.2编写并调试程序246.3 创建并调试测试文件256.4模拟结果26第七章结论与展望28致谢29参考文献29 第一章 前言1.1研究背景,目的:数字信号处理系统研究人员产生比较理想的算法思路后,在计算机上用C或其它语言验证,但是它是有缺陷的.在许多工程上需要有实时响应的要求,这时,如果我们仅仅使用通用的微处理器和一般的语言,往

8、往无法满足在几个ms甚至us内要对大量数据完成复杂运算的实时响应的要求.我们不得不设计专用的高速硬线逻辑来完成运算,这就既要有好的算法又要有好的设计工具.用verilog HDL编写程序设计硬件的好处在于易于理解易于维护,调试电路速度快,而且有许多易于掌握的仿真,综合和布局布线工具,这都是C语言所无法比拟的.用verilog HDL设计计算机电路具有很多优点,而用传统设计方法电路原理图输入法只能设计些规模小,简单的电路,你还必须熟悉所选器件的内部结构和外部引线,这大大延长设计周期.采用verilog HDL输入法最大优点是其与工艺的无关性,从而降低工作量,缩短了设计时间.本研究就是用veril

9、og语言模拟随机存储器的工作过程,为它的仿真综合设计以及投片生产打下基础具有非常深远的意义.1.2论文的主要工作我的主要工作体现在ISE上用verilog编写出随机存储器的模拟程序,所以论文主要体现在对随机存储器工作过程的理解以及verilog编程技术的探索实践:(1) 从计算机组成原理上了解随机存储器的组成,以及各部件的工作过程;(2) 熟悉verilog语言语法及编程流程;(3) 对FPGA有一个大致了解;(4) 了解ISE8.0和modisim的环境,对其安装使用有一定掌握。1.3论文的组织 全文共分六章:第一章 前言:介绍了本文研究背景,目的及主要工作;第二章 Verilog HDL语

10、言:介绍了语言历史语法及编程流程;第三章 FPGA简介:介绍了FPGA的一般知识;第四章 随机存储器简介:介绍了随机存储器的结构及工作过程;第五章 程序原代码:介绍了程序代码及对此进行的解释说明;第六章 ISE工作环境:介绍了ISE的使用方法;第七章 结论与展望:总结本文的成果,指出需要进一步开展的工作。 第二章verilog HDL2.1 Verilog语言简介Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。由

11、于Verilog HDL既是机器可读的语言也是人类可读的语言,因此它支持硬件设计的开发、验证、综合和测试;硬件数据之间的通信;硬件的设计、维护和修改。现在,Verilog HDL已经成为数字系统设计的首选语言,并成为综合、验证和布局布线技术的基础。Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。Verilog HDL语言不仅定义了语法,而且对

12、每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。Verilog硬件描述语言(Verilog HDL)使各种设计工具(包括验证仿真、时序分析、测试分析以及综合)能够在多个抽象层次上以标准文本格式描述数字系统,简单、直观并富有效率。由于其丰富的功能,Verilog HD

13、L已经成为数字系统设计的首选语言。Verilog包含了丰富的内建原语,包括逻辑门、用户定义的原语、开关以及线逻辑。它还具有器件管脚间的时延和时序检查功能。从本质上讲,Verilog所具有的混合抽象层次由两种数据类型所提供,这两种数据类型是线网(net)和变量(variable)。对于连续赋值,变量和线网的表达式能够连续地将值驱动到线网,它提供了基本的结构级建模方法。对于过程赋值,变量和网络值的计算结果可以存储于变量当中,它提供了基本的行为级建模方法。一个用Verilog HDL描述的设计包含一组模块,每一个模块都包含一个I/O接口和一个功能描述。模块的功能描述可以是结构级的、行为级的、也可以是

14、结构级和行为级的混合。这些模块组成一个层次化结构并使用线网进行互连。Verilog语言可以通过使用编程语言接口(Programming Language Interface,PLI)和Verilog程序接口(Verilog Procedural Interface,VPI)进行扩展。PLI/VPI是一些例程的集合,它使得外部函数能够访问包含在Verilog HDL描述内部的信息,推动了与仿真之间的动态交互。PLI/VPI的应用包括将Verilog HDL仿真器与其它仿真和CAD系统、用户定制的调试任务、时延计算以及标注器相连接。2.2verilog HDL历史 Verilog HDL是硬件描述

15、语言的一种,用于数字电子系统的设计。他允许设计者用它来进行各种级别的逻辑设计,可以用它进行数字逻辑系统的仿真验证,时序分析,逻辑综合。他是目前应用最广泛的一种硬件描述语言。Verilog HDL是在1983年,由GDA(Gate Way Design Automation)公司的phil moorby首创的。他后来成为Verilog-XL的主要设计者和Cadence公司(Cadence Design System)的第一个合伙人.在1984-1985年,Moorby设计出第一个关于Verilog-XL仿真器,1986年,他对Verilog HDL的发展又作出了另一个巨大贡献:即提出了用于快速门

16、级仿真的XL算法.随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1990年,Cadence公司决定公开Verilog HDL语言。鉴于的优越性,LEEE于1995年制定了Verilog HDL的LEEE标准,即Verilog HDL1364-1995.2.3设计流程采用自顶向下的设计是我的基本体会,利用层次化,结构化的设计方法,一个完整的硬件设计任务首先由总设计师划分若干个可操作的模块,编制出相应的模型,通过仿真加以验证后,再把这些模块分配给下一层的工作人员,这就允许多个设计者同时设计一个硬件系统中的不同模块,其中每个设计者负责自己所承担的部分,而由上一层设计师对

17、其下层设计者完成的设计用行为级上层模块对其所做的设计进行验证. 系统级设计模块B模块C模块A 模块C2模块C1模块B1模块B2模块A3模块A2模块A1 自顶向下的设计(即TOP-DOWN设计)是从系统开始,把系统划分为若干基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接用EDA元件库中的元件来实现为止.2.4verilog语言语法:下面介绍与本次编程有关的语法.verilog的基本设计单元是”模块”.一个模块是由两部分组成的:一部分描述接口,另一部分描述逻辑功能即定义输入是如何影响输出的.2.4.1端口模块的端口声明了模块的输入输出口.其格式module 模

18、块名(口1,口2,口3,.)模块的内容包括I/O说明,内部信号声明,功能定义.I/O说明的格式如下,输入口:input 端口名1,端口名2,.端口名I;输出口:output 端口名1,端口名2,.端口名I.2.4.2常量在程序运行中,其值不能被改变的量称为常量。首先对数字中的整数作一说明,B或b代表二进制整数,数字表达方式为位宽进制数字,x代表不定值,z代表高阻值,如4b10x0.2.4.3变量即在程序运行过程中其值可以改变的量。Reg型是寄存器数据类型通过赋值语句可以改变寄存器储存的值。Reg型数据常用来表示用于“always”模块内的指定信号,常代表触发器。通常,在设计中要由”always

19、”块通过使用行为描述语句来表达逻辑关系。在“always”块内被赋值的每一个信号都必须定义成reg型。Memory型是verilogHDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器。数组中的每一个单元通过一个数组索引来进行寻址。Memory型数据是通过扩展reg型数据的地址范围来生成的。其格式为:regn-1:0存储器名m-1:0;在这里,regn-1:0定义了存储器中每一个存储单元的大小,即该存储单元是一个N位的寄存器。存储器名后的M-1:0则定义了该存储器中有多少这样的寄存器,最后用分号结束定义语句。 下面介绍块语句begin-end,它是顺序块,特点是(1)块内的语

20、句是按顺序执行的,即只有上面一条语句执行完后,下面的一条语句才能够执行。(2)每条语句的延迟时间是相对于前一条语句的仿真时间而言的(3)直到最后一条语句执行完,程序流程控制才跳出该语句块。 If语句用来判定所给定的条件是否满足,根据判定的结果决定执行给出的两种操作。Case语句是一种多分支选择语句,if语句只有两个分支可供选择,实际问题中常需要用到多分支选择,case语句可直接处理多分支选择。2.5 Verilog代码编写风格: 下面是我的一些编程体会,Verilog代码编写规范,经常是一个不太受欢迎的话题,但却是非常有必要的。 每个代码编写者都有自己的编写习惯,而且都喜欢按照自己的习惯去编写

21、代码。与自己编写风格相近的代码,阅读起来容易接受和理解。相反和自己编写风格差别较大的代码,阅读和接受起来就困难一些。曾有编程大师总结说,一个优秀的程序员,能维护的代码长度大约在1万行数量级。代码的整洁程度,很大程度上影响着代码的维护难度。遵循代码编写规范书写的代码,很容易阅读、理解、维护、修改、跟踪调试、整理文档。相反代码编写风格随意的代码,通常晦涩、凌乱,会给开发者本人的调试、修改工作带来困难,也会给合作者带来很大麻烦。(实际上英文Coding Style有另一层涵义,更偏重的是,某一个电路,用那一种形式的语言描述,才能将电路描述得更准确,综合以后产生的电路更合理。我想说的是,编写Veril

22、og代码时的书写习惯。) (1)强调编写规范的宗旨:缩小篇幅,提高整洁度,便于跟踪、分析、调试,增强可读性,帮助阅读者理解,便于整理文档,便于交流合作 (2) 变量及信号命名规范 a系统级信号的命名 系统级信号指复位信号,置位信号,时钟信号等需要输送到各个模块的全局信号;系统信号以字符串Sys开头。 b 低电平有效的信号后一律加下划线和字母n。如:SysRst_n;FifoFull_n; c. 经过锁存器锁存后的信号,后加下划线和字母r,与锁存前的信号区别。如CpuRamRd信号,经锁存后应命名为CpuRamRd_r。低电平有效的信号经过锁存器锁存后,其命名应在_n后加r。如CpuRamRd_

23、n信号,经锁存后应命名为CpuRamRd_nr多级锁存的信号,可多加r以标明。如CpuRamRd信号,经两级触发器锁存后,应命名为CpuRamRd_rr。 d 模块的命名 在系统设计阶段应该为每个模块进行命名。命名的方法是,将模块英文名称的各个单词首字母组合起来,形成3到5个字符的缩写。若模块的英文名只有一个单词,可取该单词的前3个字母。各模块的命名以3个字母为宜。例如:Arithmatic Logical Unit模块,命名为ALU。Data Memory Interface模块,命名为DMI。Decoder模块,命名为DEC。 e 模块之间的接口信号的命名 所有变量命名分为两个部分,第一部

24、分表明数据方向,其中数据发出方在前,数据接收方在后,第二部分为数据名称。两部分之间用下划线隔离开。第一部分全部大写,第二部分所有具有明确意义的英文名全部拼写或缩写的第一个字母大写,其余部分小写。举例:CPUMMU_WrReq,下划线左边是第一部分,代表数据方向是从CPU模块发向存储器管理单元模块(MMU)。下划线右边Wr为Write的缩写,Req是Request的缩写。两个缩写的第一个字母都大写,便于理解。整个变量连起来的意思就是CPU发送给MMU的写请求信号。模块上下层次间信号的命名也遵循本规定。若某个信号从一个模块传递到多个模块,其命名应视信号的主要路径而定。 f 模块内部信号 模块内部的

25、信号由几个单词连接而成,缩写要求能基本表明本单词的含义;单词除常用的缩写方法外(如:Clock-Clk, Write-Wr, Read-Rd等),一律取该单词的前几个字母( 如:Frequency-Freq, Variable-Var 等);每个缩写单词的第一个字母大写;若遇两个大写字母相邻,中间添加一个下划线(如DivN_Cntr);举例:SdramWrEn_n;FlashAddrLatchEn;(3)编码格式规范 a 分节书写,各节之间加1到多行空格。如每个always,initial语句都是一节,每节基本上完成一个特定的功能,即用于描述某几个信号的产生。在每节之前有几行注释对该节代码加以

26、描述,至少列出本节中描述的信号的含义。 b行首不要使用空格来对齐,而是用Tab键,Tab键的宽度设为4个字符宽度。行尾不要有多余的空格。 c 注释,使用/进行的注释行以分号结束;使用/* */进行的注释,/*和*/各占用一行,并且顶头;例:/ Edge detector used to synchronize the input signal; d空格的使用:不同变量,以及变量与符号、变量与括号之间都应当保留一个空格。Verilog关键字与其它任何字符串之间都应当保留一个空格。如:Always ()使用大括号和小括号时,前括号的后边和后括号的前边应当留有一个空格。逻辑运算符、算术运算符、比较运

27、算符等运算符的两侧各留一个空格,与变量分隔开来;单操作数运算符例外,直接位于操作数前,不使用空格。使用/进行的注释,在/后应当有一个空格;注释行的末尾不要有多余的空格。例:assign SramAddrBus = AddrBus31:24, AddrBus7:0 ;assign DivCntr3:0 = DivCntr3:0 + 4b0001;assign Result = Operand; e同一个层次的所有语句左端对齐;Initial、always等语句块的begin关键词跟在本行的末尾,相应的end关键词与Initial、always对齐;这样做的好处是避免因begin独占一行而造成行数

28、太多;例:always ( posedge SysClk or negedge SysRst ) beginif( !SysRst ) DataOut = 4b0000;else if( LdEn ) beginDataOut = DataIn;Endelse DataOut = DataOut + 4b0001;end f不同层次之间的语句使用Tab键进行缩进,每加深一层缩进一个Tab; g在endmodule,endtask,endcase等标记一个代码块结束的关键词后面要加上一行注释说明这个代码块的名称; h在task名称前加tsk以示标记。在function的名称前加func以示标记。

29、例如:task tskResetSystem;endtask /of tskResetSystem 以上列出的代码编写规范无法覆盖代码编写的方方面面,还有很多细节问题,需要在实际编写过程中加以考虑。并且有些规定也不是绝对的,需要灵活处理。并不是律条,但是在一个项目组内部、一个项目的进程中,应该有一套类似的代码编写规范来作为约束。总的方向是,努力写整洁、可读性好的代码。2.6与Verilog语言相关的HLD介绍2.6.1 ASIC技术的发展由于设计的系统的规模已从几十几百门增加到几万几十万门,使得从前电子工程师所熟悉的画电路图、真值表和卡诺图的设计方法已经远远不能满足数字系统的复杂性要求高层次设

30、计方法HLD(High Level Design)是从八十年代末以来,最新专用集成电路设计的、最先进的设计方法,它为用户设计更大规模、更高水平、性能优良的数字系统提供了可靠的保证。设计技术的发展使得HLD成为可能:(1)采用最原始的版图设计只需要相应的图形编辑工具。(2)采用电路图设计就需要相应的布局布线工具。(3)采用HDL语言设计电路就需要相应的综合工具支持。结论:正是综合技术的提出使得HLD成为可能。2.6.2 HLD符合目前对电路的两个要求Time to Market:对于通信领域来说,快速推出市场需要的系统具有非常重要的价值,HLD使得快速设计较大的芯片成为可能。SOC:目前对数子系

31、统的需求是规模越来越大,HLD非集成电路专业背景的通信厂商设计大规模芯片提供了可能。2.6.3 电路设计方法自顶而下的设计(Top-Down):先对所要设计的系统进行功能描述,然后逐步分块细化,直至结构化最底层的具体实现。提高设计生产的效率:自顶向下的设计方法允许设计者从一个高抽象层次上对系统的功能进行定制,而不需要考虑门级的具体实现方法,这充分体现了工艺无关性的基本设计思想。设计者只需要写出设计中所需部件的硬件描述语言代码或者是其它类型的模型,设计工具就会根据编写的高层描述生成门级的实现,这就大大减少了设计者以往必须花费在设计细节上的时间。增加了设计的重用性:在大多数的自顶向下设计过程中,对

32、设计的描述都保持在一个通用的工艺水平上,它不是为某一厂家的工艺库而特意定制的,也就是说,设计是与工艺无关的,所以在实现设计时不必使用某一特定厂家的工艺,这样就极大的提高了设计的可重用性,如果需要改变设计所使用的工艺,只需要将设计在相应的工艺库上映设即可。错误的早期发觉:可以带来如下好处:(1)减少产品开发周期。(2)降低开发成本。(3)增加设计一次成功通过的可能性。2.6.4 电路设计应该采用的方法强调进行系统开发的方式:首先进行系统分析,给出Specification,划分模块,明确模块接口,确定模块内部功能,此时应该编写详细的设计说明文档,之后才是编程,调试。2.7 Verilog语言的主

33、要能力下面列出的是Verilog硬件描述语言的主要能力:(1)基本逻辑门,例如and、or和nand等都内置在语言中。(2)用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。(3)开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。(4)提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。(5)可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。(6)Verilog HDL中有两类数据类型:线网数据类型和寄存器

34、数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。(7)能够描述层次设计,可使用模块实例结构描述任何层次。(8)设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。(9)Verilog HDL不再是某些公司的专有语言而是IEEE标准。(10)人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。(11)Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。(12)设计能够在多个层次上加以描述,从开关级、门级、

35、寄存器传送级(RTL)到算法级,包括进程和队列级。(13)能够使用内置开关级原语在开关级对设计完整建模。(14)同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。(15)Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。(16)在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。(17)能够使用门和模块实例化语句在结构级进行结构描述。(18)Verilog HDL 的混合方式建模能力,即在一个设计

36、中每个模块均可以在不同设计层次上建模。(19)Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。(20)对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。(21)可以显式地对并发和定时进行建模。(22)提供强有力的文件读写能力。(23)语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。 第三章FPGA简介3.1FPGA的概念 FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发

37、展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。3.2FPGA的基本特点FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)

38、FPGA内部有丰富的触发器和IO引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。3.3FPGA的工作原理FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完

39、成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。3.4FPGA设计流程 流程图如下图,由于时间的

40、限制,本设计只进行了前三步,主要用了modelsim和ISE等仿真工具。 (1)设计定义(2)HDL实现逻辑仿真器(3)功能仿真逻辑综合器(4)逻辑综合逻辑仿真器(5)前仿真FPGA厂家工具(6)布局布线(8)静态时序分析逻辑仿真器(7)后仿真(9)在系统测试说明:l 逻辑仿真器主要指modelsim,Verilog-XL等。l 逻辑综合器主要指LeonardoSpectrum、Synplify、FPGA Express/FPGA Compiler等。l FPGA厂家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、Alliance、ISE

41、4.1等。下面分别介绍:。3.4.1功能仿真RTL代码调用模块的行为仿真模型测试程序(test bench)测试数据逻辑仿真器说明:“调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如Altera 提供的LPM库中的乘法器、存储器等部件的行为模型。3.4.2逻辑综合设置综合目标和约束条件调用模块的黑盒子接口RTL代码逻辑综合器HDL网表(netlist)EDIF网表(netlist)说明:“调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。3.4.3前仿真逻

42、辑综合器调用模块的行为仿真模型测试数据测试程序(test bench)HDL网表(netlist)逻辑仿真器说明:一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。3.4.4布局布线逻辑综合器设置布局布线约束条件FPGA厂家工具EDIF网表(netlist)调用模块的综合模型SDF文件(标准延时格式)HDL网表(netlist)下载/编程文件3.4.5后仿真测试数据SDF文件(标准延时格式)FPGA基本单元仿真模型测试程序(test bench)FPGA厂家工具HDL网表(netlist)逻辑仿真器 3.5 FPGA前景随着FPGA经济的发展,将出现一轮强劲的FPGA

43、冲击波。用户定制产品将继续在多方面满足用户的需求,并不断为那些寻求专用解决方案的用户提供高效益的战略支持。 目前在这个变幻莫测的市场中,半导体新产品不断涌现和消亡,当人们需要最新最好的产品时,FPGA就成为那些面对无法预测前景的产品的最佳解决方案。原因很简单,片上器件的尺寸正在缩减,金属层数目则继续增加。所有这些条件都有利于PLD/FPGA在市场上的普及。此外,因特网发展的趋势也有利于FPGA,所有这些门电路能用许多线快速轻松地连接起来,有助于加速芯片实现过程并增强性能。 FPGA芯片虽然成本略微高于ASIC芯片,但具有货源畅通、可多次编程使用等优点。目前FPGA单片所含的逻辑门和片上存储器的

44、容量越做越大,百万门级的可编程逻辑芯片已成为寻常产品。在中小批量通信产品的设计生产中,用FPGA实现HDLC功能是一种值得采用的方法。正是有鉴于此,Innocor、Xilinx等公司推出了能在FPGA中实现HDLC功能的IP Core(Intellectual Property Core,知识产权核)。目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。目前,ASIC的容量越来越大。十年前,其规模为每平方英寸10,000个门电路;现在密度已达到平均每平方英寸1百万个门电路。随着密度的不断提高,芯片显然受到引脚的限制。片上芯片很多,但接入内核的引脚数目是有限的。然而,如果选用FPGA,就不存在这样的限制,因为现在可达到的金属层数目增强了产品的优势。当片上器件可编程时,设计能力就可在工厂或现场得到充分利用。对于FPGA,即便将来能够集成50亿个晶体管,也可用可编程逻辑器件来实现所需的完整芯片。对于FPGA还有更多的好消息。FPGA将为系统级设计提供有利条件,因为片上系统I/O具有丰富的可用功能,这一点尤为重要,因此许多设计从一开始就需要网络结构。该结构对数据带宽的需求非常大,这正是FPGA领域需要与新兴产品不断增长的功能完美匹配之处。 另外,FPGA是原型设计中的佼佼者,现在灵活性和适应性更强。尽管当前可编程器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1