




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连交通大学信息工程学院毕 业 设 计 (论 文)题 目 基于FPGA的汉明码译码器的设计 学生姓名 芦 斌 专业班级 信息工程09-2 指导教师 徐 佳 职 称 讲 师 所在单位 电气工程系信息工程教研室 教研室主任 石桂名 完成日期 2013年 6 月 28 日摘 要在数字通讯的系统中,数字信号在传输的过程中容易受到干扰,造成码元波形破坏,使得接收端接收到的信号发生错误的判决。为了提高信息传输的准确性,我们引进了差错控制技术。该项技术应采用了可靠而且有效的信道编码方法来实现。汉明码就是一种可以纠正差错的编码。汉明码编译码器是目前最为常用的数字通信内部器件之一,它被广泛地应用在网络传输、存储
2、器校验纠错以及数据安全中。本课题是基于FPGA的汉明码译码器的设计,使用Verilog语言来实现汉明码译码器的设计。通过理解汉明码译码原理的基础上,设计出了汉明码的译码器,并且写出了译码源程序,还通过QuartusII软件实现仿真。本次设计首先介绍了EDA的硬件描述语言Verilog和仿真调试软件QuartusII,然后介绍了FPGA的发展历程和产品特性,借此选出合适的FPGA的芯片,最后介绍了汉明码。通过了解汉明码的理论知识来掌握汉明码的译码原理,然后经过理解和分析设计出实现汉明码译码的算法,并且使用Verilog语言在QuartusII软件里完成了基于FPGA的汉明码译码器的编程和仿真实现
3、。同时根据需要,选择了合适的FPGA的芯片和外围元器件,设计出外围硬件的原理图,将理论和实践结合起来。关键词:汉明码 译码器 FPGA Verilog语言 QuartusII ABSTRACTIn digital communication systems, digital signal during transmission is easy to be disturbed, resulting in destruction of the symbol waveform, so that the receiver receives the signal error occurred judgm
4、ent. In order to improve the accuracy of information, we introduce error control techniques. The technology uses a reliable and effective method of channel coding to achieve. Hamming code is a kind of code which is able to correct errors. Hamming code codes is
5、 one kind of the most commonly used devices in digital communications, which is widely used in network transmission, memory parity error correction and data security. The design of Hamming code codec in this project, this passage realized decode of hamming with language of verilog. Based on th
6、e theory of introduction of decode of hamming, this passage designed decoder of hamming. The source program wad written by verilog language. The soft of QuartusII simulated and tested the program.It requires basic theoretical knowledge of hamming code, and learn how to use the simulation and debuggi
7、ng software QuartusII as well as the hardware description language Verilog, and understand the various features of Hamming codes to master the peinciple of coding and decoding, then to understand and analyze, design its algorithm implementation, and complete the Verilog language programming and simu
8、lation on FPGA-based software QuartusII; in the meantime, according to its requirement, select a FPGA chip and external components, finally create the hardware entity, combine the theory with practice.Key words: Hamming Decoder FPGA Verilog language QuartusII 目 录1 前 言11.1 选题背景11.2 本课题的研究意义21.3
9、本课题研究目标及主要任务21.4 本课题可行性分析32 EDA的基础知识与集成运行环境42.1 EDA概念42.2 Quartus的软件介绍52.3 Verilog的简介82.3.1 Verilog的主要功能102.3.2 Verilog的基础语法102.3.3 Verilog的语言优势133 FPGA的简介143.1 FPGA的发展历程143.2 FPGA的产品特性及发展现状143.3 FPGA的发展趋势153.4 FPGA的硬件介绍174 汉明码译码系统模块设计与实现194.1 汉明码的原理194.1.1 汉明码的定义194.1.2 汉明码的监督矩阵H214.1.3 汉明码的生成矩阵G22
10、4.1.4 汉明码的校正子(伴随式)S224.2 汉明码的译码器设计244.2.1 译码器的流程图设计254.2.2 译码器的代码设计254.2.3 译码器的仿真,调试与分析274.3 基于FPGA的汉明码译码器硬件设计30结 论32谢 辞33参考文献34附 录35大连交通大学信息工程学院2013届本科生毕业设计(论文)1 前 言1.1 选题的背景随着现代通信技术的迅速发展,其应用的领域已渗入到社会生活的各个方面,用户对通信系统的质量和对通信系统数据传输的可靠性与有效性的要求也越来越高,通信系统需要具备更高的可靠性、高效率、低复杂性来适应发展的需求4。通信的根本任务是传递信息,其中准确地传输数
11、字信号是数字通信的一个重要的环节。在实际应用中,传输数据的无线信道是非常复杂的。在传输数字信号时,由于信道的时变性、衰减性、带宽资源有限性以及干扰大等特点,再有加性噪声的影响,这就导致接收端接收到的信息和发送端实际发送的信息之间存在一定的差错,势必会造成接收端接收到的信号存在一定的误差,造成一定程度的失真。这时就需求我们去寻找一种办法,能够在确保通信系统的可靠性与高效性的基础上来减少数据传输过程中的误比特率。信道编码就是减少数字信号误比特率的主要手段之一。信源发送设备传输媒介(信道)接收设备信宿干扰图1-1 通讯系统的组成在实际的应用中,衡量一个通信系统的优劣,其中的有效性和可靠性是两个最重要
12、的指标,同时它们也是通信技术设计的重要组成部分。然而,从信息传输角度来考虑,既要提高通信系统的有效性(即传输速率),又要提高通信系统的可靠性,这样往往是相互矛盾的。为了提高可靠性,可以在二进制信息序列中以受控的方式引入一些冗余码元(即监督码元),使他们满足一定的约束关系,以期达到检错和纠错的目的。但是,由于添加了冗余码元(监督码元),导致传输信息的速率下降;同时,为了提高效率,信号以简洁、快速的方式传输,这样在遭受到干扰和噪声时,其自我保护能力大大下降,从而降低了传输的可靠性。于是,在实际通信的应用中,采取比较折中的方式,可在确保可靠性指标达到系统要求的前提下,尽可能的提高传输速率1 ;抑或在
13、满足一定有效性的指标下,尽量提高传输的可靠性。通信技术设计一直致力于提高信息传输的有效性和可靠性,其中保证通信的可靠性是现代数字通信系统需要解决的首要问题。信道编码技术正是用来改善通信可靠性问题的主要技术手段之一。在实际应用中,一个通信系统一般包含信道编码和信道译码两个模块2 。 信道编码的主要目的是为了降低误比特率,提高数字通信的可靠性,其方法是在二进制信息序列中添加一些冗余码元(监督码元),与信息码元一起组成被传输的码字。这些冗余码元是以受控的方式引入,它们与信息码元之间有着相互制约的关系。在信道中传输该码字,如果错误了发生,信息码元和冗余码元之间相互制约的关系就将会被破坏 1。那么,在接
14、收端对接收到的信息序列按照既定的规则校验码字各码元间的约束关系,从而达到检错、纠错的目的。通过信道编码这种方法,能够有效的在接收端克服信号在无线信道中传输时受到噪声和干扰产生的影响。信道译码也就是信道编码的逆过程,即接收端将接收信息序列按照既定约束关系,同时去掉比特流在传播的过程中混入的噪声干扰和添加的冗余,恢复为比较完整、可靠的信息的过程。信道编码涉及到的内容也十分广泛,前身纠错编码(FEC)、线性分组码(汉明码、循环码)、理德-所罗门码(RS码)、FIRE码、交织码、卷积码、TCM编码、Turbo码等都是信道编码的研究范畴11。 汉明码是信道编码比较好的选择。汉明码是汉明于195
15、0年提出的,是具有纠正一位错误能力的线性分组码。汉明码是在原编码的基础上附加一部分代码,使其能满足纠错码的条件6。它的突出特点是:编译码电路简单,易于硬件的实现;用软件实现编译码算法时,软件的效率高;而且性能也比较好。由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。1.2 本课题的研究意义本次课程设计的任务就是基于FPGA,利用EDA的技术在Quartus II软件下用Verilog语言来实现汉明码译码器的设计和仿真。汉明码是一个在原有数据中插入若干校验码来进行错误检查和纠正的编码技术,在原编码的基础上附加了一部分代码,使其满足纠错码的条件。汉明码的编码与译码是通信领域的一个重要研究
16、内容。与一般的编码相比汉明码具有比较高效率,同时也是分组码的典型代表,是深入研究其他分组码的基础,也是研究其他非分组码(如循环码)的基础。EDA(Electronic Design Automation)技术是随着集成电路和计算机技术飞速发展而应运而生的一种高级、快速、有效的电子设计自动化工具17。EDA的主要特征是使用硬件描述语言Verilog来完成设计,这在电子设计领域里受到广泛的接受。EDA技术的发展和推广应用,对高校电子技术课程的教学思想、教学方法和教学目标产生了深远的影响,是电子、信息、通信、电气等电类相关专业的基础学科。本课题利用EDA来实现,与实际联系很大,对将来从事实际工作和相
17、关研究具有很大帮助。同时,选择FPGA的芯片和外围元器件,设计出硬件的原理图,将理论和实践结合起来,对以后的实际工作提供很多的经验。1.3 本课题研究目标及主要任务(1)研究目标:本论文是基于FPGA的汉明码译码器的设计。主要研究汉明码编、译码的原理和方法,基于FPGA使用EDA开发软件Quartus II上实现汉明码译码器的设计。通过对汉明码的学习,使用硬件描述语言Verilog设计出了汉明码的译码器,并且写出了源程序,最后通过Quartus II软件的仿真实现。满足电路简单,成本低,开发周期短,执行速度高,升级方便等特点。(2)主要任务:本次设计要求学会使用仿真调试软件Quartus II
18、和硬件描述语言Verilog,还要求学习汉明码的理论知识,了解汉明码的各种特点,掌握汉明码的译码原理。通过分析设计出实现译码的算法,并且使用Verilog语言在Quartus II软件里完成了基于FPGA的汉明码译码器的编程和仿真实现。同时根据需要,选择合适的FPGA的芯片和外围元器件,设计外围硬件的原理图,将理论和实践结合起来。1.4 本课题可行性的分析本课题以理论研究和实验分析相结合的方式进行。课题首先在理论上是可行的,汉明码是1950年由汉明首先构造的,目前汉明码在中小型计算机中普遍采用,其技术已经成熟。汉明码接收码组汉明码译码器系统正确的汉明码信息码图1-2 译码流程图在实际操作方面,
19、我们可以借鉴科学工作者已得出的结论,另外其跨专业的技术不多,所以也很少给设计带来不便。在实际设计方面,我们可以利用学校的图书资料和网上资源,利用EDA开发软件Quartus II,使用硬件描述语言Verilog来对汉明码译码器进行设计,观察其可行性,并对结果进行分析。2 EDA的基础知识与集成运行环境2.1 EDA概念EDA(Electronic Design Automation)即电子设计自动化,是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路芯片ASIC(Application Specific Integrated Circuit)
20、为目的的一门新兴技术17。在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。现在对EDA的概念或范围用得很宽,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用1。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量的工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程都在计算机上自动处理完成。目前EDA 技术已在各大公司、企事业单位和科研教学部门中广泛使用。例如在飞机制造过程中,从设计、
21、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本次毕业设计实现的核心技术即为EDA相关技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA技术是现代电子设计技术的核心。EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言(如Verilog)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC芯片中,进行特定芯片的适配编译、逻辑映射和编程下载等工作,实现既定的电子电路设计功能。EDA代表了当今电子设计技术的最新发展方向,它的基本设计方法是
22、:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级的设计,最后通过综合器和适配器来生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法7。EDA技术的优势15:(1)采用硬件描述语言,便于复杂的系统设计(2)拥有强大的系统建模和电路仿真功能(3)拥有自主知识产权(4)开发技术的标准化和规范化(5)全方位地利用计算机的自动设计、仿真和测试(6)对设计者的硬件知识和经验要求低。EDA设计的实现目标:(1)印刷电路板设计;(2)集成电路(IC或ASIC)设计;(3)可编程
23、逻辑器件(FPGA/CPLD)设计;(4)混合电路设计。EDA设计的常用软件和设计工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,还可以输出多种网表文件,与第三方软件接口。EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机完成电
24、子设计全过程自动化,因此,基于计算机环境的EDA软件的支持是必不可少的。EDA工具大致可以分为以下5个模块:设计输入编辑器;HDL综合器;仿真器;适配器(或布局布线器);下载器7。当然这种分类不是绝对的,现在往往把各EDA工具集成在一起,如MAX+PLUS、Quartus等。2.2 Quartus的软件介绍Quartus是Altera公司提供的FPGA/CPLD集成开发软件,Altera是世界上最大的可编程逻辑器件供应商之一。Quartus在21世初被推出,是Altera老一代FPGA/CPLD集成开发软件MAX+plus II的更新换代产品,其界面友好,使用便捷。在Quartus上可以完成设
25、计输入、布新布局(适配)、HDL综合、仿真和选择以及硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、处理和器件编程。 Quartus提供了完整的多平台设计环境,能满足各种特定设计的需求,也是单片机可编程系统(SoPC)设计的综合环境和SoPC开发的基本设计工具,并为Altera DSP开发包运行系统模型的设计提供了集成综合环境。Quartus设计完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。Quartus可利用第三方的综合工具(如Leonardo Spectrum、Synplify Pro、FPGA Complier
26、II),并能直接调用这些工具。同时,Quartus具备仿真功能,同时支持第三方的仿真工具(如Model Sin)。此外, Quartus与MATLAB和DSP Builder结合,可用于进行基于FPAG的DSP系统开发。 用Quartus II软件进行设计开发的流程图2-1所示:设计输入编译修改设计编程下载仿真与定时分析在线测试图2-1 Quartus II软件设计开发流程图其开发步骤为:(1)设计输入:设计输入就是设计者将所设计的电路或系统以开发软件要求的某种形式表达出来,并送入计算机的过程。通常有原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种输入方式。(2)编译:先根据设计要
27、求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。(3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真。定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立或保持时间来进行分析。(4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。在测试过程中,会对包括语法检查和设计规则检查、逻辑综合与化简、逻辑适配、布局与布线等工作进行检查,如果出现错误,
28、则需重新回到设计输入阶段,改正错误或调整电路后重新测试。Quartus II软件的工作环境如图2-2所示:工具按钮层次结构显示信息提示窗口工作区菜单栏图2-2 Quartus II管理器窗口图2-3 Quartus II工具栏表2-1 工具栏各按钮的基本功能l:建立一个新的图形、文本、波形或是符号文件。l:打开一个文件,启动相应的编辑器。l:保存当前文件。l:打印当前文件或窗口内容。l:将选中的内容剪切到剪贴板。l:将选中的内容复制到剪贴板。l:粘贴剪贴板的内容到当前文件中。l:撤销上次的操作。l:单击此按钮后再单击窗口的任何部位,将显示相关帮助文档。l:打开层次显示窗口或将其带至前台。l:打
29、开平面图编辑器或将其带至前台。l:打开编译器窗口或将其带至前台。l:打开仿真器窗口或将其带至前台。l:打开时序分析器窗口或将其带至前台。l:打开编程器窗口或将其带至前台。l:指定工程名。l:将工程名设置为和当前文件名一样。l:打开当前工程的顶层设计文件或将其带至前台。l:保存所有打开的编译器输入文件,并检查当前工程的语法和其他基本错误。l:保存工程内所有打开的设计文件,并启动编译器。l:保存工程内所有打开的仿真器输入文件,并启动仿真器。图2-4 Quartus II编辑输入原理图界面Quartus II 的优点:该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的
30、EDA工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内部嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计外,还提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II对软硬器件的支持: Quartus II支持Altera公司的MAX
31、3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列等,支持MAX7000/MAX3000等乘积项器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/Mega Function宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。此外,Quartus II 通过和DSP Builder工具与Matlab和Simulink相结合,可以方便地实现各种DSP应用系统;支持Alte
32、ra的片上可编程系统(SOPC)开发,系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quartus II对第三方EDA工具的支持:对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、Exemplar Logic、Mentor Graphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的Logic Loc
33、k模块设计功能,增添了Fast Fit编译选项,推进了网络编辑性能,并且提升了调试能力。Quartus II设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA 和CPLD设计的所有阶段的解决方案。与其它EDA软件相比较Quartus II软件的特点主要包括: (1) 可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。(2) 芯片(电路)平面布局连线编辑。 (3) Logic Lock增
34、量设计方法,使用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。 (4) 功能强大的逻辑综合工具。(5) 完备的电路功能仿真与时序逻辑分析。 (6) 定时和时序分析与关键路径延时分析。(7) 使用Signal Tap II逻辑分析工具进行嵌入式的逻辑分析。 (8) 支持软件源文件的添加和创建,并将它们链接起来生成编程文件。 (9) 使用组合编译方式可一次完成整体设计流程。 (10)自动定位编译的错误。 (11)高效的编程与验证工具。 (12)
35、可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。 (13)能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。2.3 Verilog的简介Quartus II设计软件经常使用Verilog HDL和VHDL这两种硬件描述语言来进行设计,同时Verilog HDL和VHDL也是目前世界上最流行的两种硬件描述语言(HDL:Hardware Description Language),均为IEEE标准,被广泛地应用于基于可编程逻辑器件的项目开发。二者都是在20世纪80年代中期开发出来的,前者由Gat
36、eway Design Automation公司(该公司于1989年被Cadence公司收购)开发,后者由美国军方所研发。Verilog HDL是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只是设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广和应用。1989年CADENCE公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年C
37、ADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。Verilog HDL在语言描述风格上传承了上一代硬件描述语言的解释风格,所以描述的器件在编译和综合时适应能力强,系统可以自动优化。虽然对应语言的解读性能较弱,但是仿真以后的纠错能力强。Verilog HDL在模型上注重结构和数据的解释,所以得到EDA生产厂商的喜爱,Verilog HDL成为了一种开放的商业EDA语言。Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件
38、和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种:(1)系统级(system):用高级语言结构实现设计模块的外部性能的模型。 (2)算法级(algorithm):用高级语言结构实现设计算法的模型。 (3)RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。 (4)门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。 (5)开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。 Ve
39、rilog HDL常用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显示进行时序建模14。 Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
40、0; Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够了。2.3.1 Verilog的主要功能作为一种硬件描述语言,Verilog HDL可以直接描述硬件结构,也可以通过描述系统行为来实现建模。Verilog HDL的主要特点和功能有以下
41、几点:(1) 描述基本逻辑门,如and、or等基本逻辑门都内置在语言中,可以直接调用。(2) 描述基本开关模型,如nmos、pmos和coms等基本开关都可以直接调用。(3) 允许用户定义基元(UDP),这种方式灵活有效,用户定义的基元既可以是组合逻辑也可以是时序逻辑。(4) Verilog HDL中有两种数据类型,线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。(5) 能够描述层次设计,可使用模块实例结构描述任何层次。(6) 设计的规模可以是任意的,语言不对设计的规模(大小)施加任何限制。(7) Verilog HDL语言的描述能力可以通过使用
42、编程接口(PLI)进一步扩展。PLI是允许外部函数访问Verilog HDL模块内信息,允许设计者与模拟器交互的例程集合。(8) 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,报括进程和队列级。(9) 能够使用内置开关级原语,在开关级对设计进行完整建模。(10) 同一语言可用于生成模拟激励和指定测试的验证的约束条件。(11) Verilog HDL不仅能够在RTL上进行设计描述,而且能够在体系结构级和算法级的行为上进行设计描述。(12) 能够使用门和模块实例化语句在结构级上进行结构描述。(13) Verilog HDL具有混合方式建模的能力,即设计中每个模块均可
43、以在不同设计层次上建模。(14) Verilog HDL具有内置算术运算符、逻辑运算符、位运算符。(15) 用延迟表达式或事件表达式来明确地控制过程的启动时间。(16) 通过命名的事件来触发其它过程里的激活行为或停止行为。 (17) 可描述顺序执行或并行执行的程序结构,并且提供了条件、if-else、case、循环程序结构。2.3.2 Verilog的基础语法Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域中得到广泛应用,C语言的许多语言要素已经被许多人所习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学
44、习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握 7。Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成:一部分描述接口信息,另一部分描述逻辑功能,即定义输入是如何影响输出的。根据常见的Verilog HDL程序可以总结出以下特征14:(1) Verilog HDL程序是由模块所构成的。每个模块的内容都是嵌在module 和 endmodule 这
45、两个语句之间的,每个模块实现特定的功能,模块是可以进行层次嵌套的。(2) 每个模块首先要进行端口定义,并说明输入(input)和输出(output),然后对模块的功能进行逻辑描述。(3) Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分多行写。(4) 除了endmodule语句外,每个语句的最后必须要加分号。(5) 可以用/* */和 / / 对Verilog HDL程序的任何部分作注释。由此我们可以得出Verilog HDL语言的基础语法有以下几点14:首先,Verilog HDL程序是由模块构成的。Veril
46、og HDL结构完全嵌在module和endmodule声明语句之间,每个模块实现特定的功能,模块是可以进行层次嵌套的。每个Verilog程序包括4个主要部分:端口定义,I/0说明,信号类型声明和功能描述。在编写Verilog HDL程序时还需要常量,参数(Parameter)型和变量。在程序运行过程中,其值不能被改变的量称为常量。参数型数据是一种常数型的数据,用参数来定义常量,即用参数来定义一个标识符代表一个常量,称为符号常量。采用标识符来代表一个常量,这样可提高程序的可读性和可维护性。参数型常数经常用于定义延迟时间和变量宽度。变量是在程序运行过程中其值是可以改变的量,在
47、Verilog HDL中变量的数据类型有很多种,我们这里主要介绍三种:wire型变量、reg型变量和memory型变量。wire型表示结构(例如门)之间的物理连接。wire型的变量不能储存值,而且它必须受到驱动器或连续赋值语句assign 的驱动。如果没有驱动器连接到wire型变量上,则该变量就是高阻态。wire型数据常用来表示以assign关键字指定的组合逻辑信号。Verilog程序模块中输入输出信号类型缺省时将自动定义为wire型。wire型信号可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出。reg型是寄存器数据类型的关键字。寄存器是数据储存单元的抽象。通过赋值语
48、句可以改变寄存器的值,其作用相当于改变触发器存储器的值。reg型数据常用来表示always模块内的指定信号,常代表触发器。reg类型数据的缺省初始值为不定值x。memory型是通过扩展reg型数据的地址范围来生成的。由于Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器,ROM存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。但在Verilog语言中没有多维数组存在,所以就需要memory型来生成。其次,在编写Verilog HDL程序是还需要各种的运算符。有算术运算符(+,×,%等),位运算符(&, 等),逻辑运算
49、符(&&,| 等),关系运算符(< ,> 等),等式运算符(= =,!= 等),移位运算符(<< ,>> 等),位拼接运算符,缩减运算符等14。在程序编写的公式中如果用到多个运算符,这时就需要按照每种运算符的优先级顺序来进行运算。每种运算符的优先级别各不相同,优先级从上到下依次递减,最上面具有最高的优先级。其中逻辑非运算符的优先级最高,逻辑或运算符的优先级最低。下表为各运算符的优先级别:! × / %+ << >>< <= > >= = ! = = = = ! = =& |&a
50、mp;| |高低优先级别图2-5 各运算符的优先级别最后,在编写Verilog HDL程序是还需要各种的语句。(1)赋值语句有两种,一种是非阻塞赋值(non_blocking)(如b<=a),同一个always块内的赋值语句操作可以同时进行,只有块结束后才完成赋值操作,b的值不会立即改变。还有一种是阻塞赋值(blocking)(如b=a),同一block内,后一语句的执行必须等到前一语句执行完才能执行,赋值语句执行完后,块才结束,b的值在赋值语句执行完后立刻就改变。(2)条件语句常用的也是两种,一种是if-else语句,if语句用来判定所给的条件是否满足,根据判定的结果(真或假
51、)决定执行运行的结果。if语句的表达式一般是逻辑表达式或关系表达式。另一种是case语句。case语句是一种多分支语句,可直接处理多分支选择。(3)循环语句常用的有四种。forever语句是可以连续执行的循环语句;repeat语句是可以连续执行一条语句n次;while语句是执行一条语句直到某个条件不满足。如果一开始条件就不满足(为假),则语句一次也不能被执行;for语句需要三个步骤来完成循环,第一步是先给控制循环次数的变量赋初值,第二步是判定控制循环的表达式的值,如为假就跳出循环语句,如为真则执行指定的语句后,进行第三步,第三步是执行一条赋值语句来修正控制循环变量次数的变量的值,然后回到第二步
52、继续运行。(4)结构说明语句常用的有四种。initial语句是仿真开始时对各变量进行初始化,只执行一次;always语句在仿真过程中不断重复执行,但always后面跟着的过程块是否执行,就要看它的触发条件是否满足了;task和function说明语句分别用来定义任务和函数,利用任务和函数可以把一个很大的程序模块分解成许多小的任务和函数便于理解和调试14。2.3.3 Verilog的语言优势Verilog HDL推出已经有20年了,拥有广泛的设计群体,成熟的资源也比其他语言丰富。Verilog更大的一个优势是,它非常容易掌握,只要有C语言的编程基础,通过比较短的时间,经过一些实际的操作就可以在2
53、3个月内掌握这种语言。而其他语言设计相对要难一点,像VHDL语言,它不是很直观,需要有Ada编程基础,至少需要半年以上的专业培训才能掌握。还有Verilog HDL允许对同一个电路进行不同抽象层次的描述,包括开关级、门级、RTL级或者行为级描述电路;Verilog HDL不仅可以设计电路,也可以描述电路的激励,用于电路的验证;Verilog HDL是IEEE标准,得到绝大多数EDA工具的支持;Verilog HDL设计具有工艺无关性,适合综合设计;有大量的单元库资源;Verilog HDL类似编程,有利于开发调试,在设计前期就可以完成电路功能验证,减少费用和时间;Verilog HDL与C语言
54、有PLI接口,设计者可以通过编写增加的C语言代码来访问Verilog内部数据结构,扩展语言的功能等。通过Verilog HDL和VHDL比较来看出Verilog语言的优势。目前版本的Verilog HDL和VHDL在行为级抽象建模的覆盖面范围方面有所不同。一般认为Verilog在系统级抽象方面要比VHDL略差一些,但在门级开关电路描述方面要强的多。目前在美国,高层次数字系统设计领域中,应用Verilog和VHDL的比率分别是80和20;日本和台湾与美国差不多;但在欧洲VHDL发展的比较好。在中国很多集成电路设计公司都采用Verilog,但VHDL也有一定的市场。总的来说,采用Verilog H
55、DL设计时具有以下优点8:(1)设计者可以在非常抽象的层次上对线路进行描述而不必选择特定的制造工艺。逻辑综合工具可以将设计自动转换成任意一种制造工艺版图。如果出现新的制造工艺,也不必对电路重新设计,只要将RTL级描述输入综合工具,即可生成针对新的门级网表。这种设计使得工程师在功能设计、逻辑验证阶段,可以不必过多得考虑门级及工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件即可。(2)设计者可以在设计周期的早期对电路的功能进行仿真验证。可以很容易的对RTL级描述进行优化和修改,这样可以在初期发现和排除绝大多数的设计错误,大大降低了在设计后期的门级网表和版图上出错的可能性,避
56、免设计过程的反复,缩短了设计周期。(3)使用Verilog进行编写程序,带有文字注释的源程序非常方便修改。与门级电路图相比,能够对电路进行更加简明扼要的描述。更加便于理解。对于复杂的设计,如果用门级原理图来表达,几乎是无法理解的。(4)Verilog 是一种通用的硬件描述语言,易学易用。可以在不同抽象层次上对电路进行描述。绝大多数流行的综合工具都支持Verilog,所有的制造商也都提供Verilog综合之后仿真的原件库。 3 FPGA的简介3.1 FPGA的发展历程FPGA并非是近几年来才有的,FPGA一词于1984年就已经出现,至今已经超过20年以上的时间,不过过去十多年内FPGA都未受到太
57、多的重视,原因是FPGA的功耗用电、电路密度、频率效能、电路成本等都不如ASIC,而在这十多年内,FPGA多半只用在一些特殊的领域,例如芯片业者针对新产品测试市场反应,即便初期产品未能达到量产规模,也能先以FPGA制成产品进行测试。 有些芯片设计公司承接了一些小型的设计项目,在量产规模不足的情况下也一样使用FPGA,或如政府、军方的特殊要求,不期望使用开放的芯片与电路,也会倾向使用FPGA。不过如前所述的,在愈来愈多芯片无法用开设掩膜的模式生产后,这些芯片又想上市,就只好以FPGA模式来生产。所幸FPGA也受益于摩尔定律,在工艺技术不断的提升下,晶体管愈来愈缩密化,原本相较ASIC逊色的电路密度过低、频率效能过低、电路成本过高等问题,在新一代FPGA上,早已拉近与ASIC间的表现差距。 正因如此,近年来FPGA不断抢食ASIC市场,迫使ASIC业者不得不推出策略因应,最显著的策略就是提出结构化ASIC(Structured ASIC),或者也称为平台化ASIC(Platform ASIC),结构化/平台化ASIC,期望通过减少重新开设的掩膜数、减少电路修改成本及时间,使芯片可以更早上市。但结构化和平台化ASIC只是减少重开掩膜的张数,并不能完全免除掩膜的使用,加上配套的设计工具(EDA)与已有数十年运用的ASIC、FPGA相比,明显不够完备,后势发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理进货合同范例
- 光伏发电建设工程合同范例
- 共同经营厂合同标准文本
- 以店面入股合同标准文本
- 义乌买卖合同标准文本
- erp软件购买合同范例
- 华光股合同标准文本
- 个人雇佣保安合同范例
- 卖地合同范例
- 护理查房手机应用方案
- 2022年中国通用技术集团控股有限责任公司招聘笔试题库及答案解析
- 小学 三年级 心理健康《最好的老师-兴趣的作用》教学设计
- 间歇经口管饲法 课件
- 导电胶rohs2.078中文深圳市华测检测技术股份市浦东新区新金桥路1996号
- 9 短诗三首 生字笔顺课件(共10张PPT)
- 无线射频识别技术外文翻译参考文献
- 电力负荷曲线与用电负荷预测课件
- 钢支撑、围檩专项施工方案
- 【2021部编版语文】-四年级下册第六单元教材解读--PPT课件
- 压力管道安装许可证换证自评报告
- 起重机械定期检验规则概述
评论
0/150
提交评论