收藏 分销(赏)

基于FPGA的汉明码译码器的设计.doc

上传人:鼓*** 文档编号:9883250 上传时间:2025-04-12 格式:DOC 页数:40 大小:3.28MB
下载 相关 举报
基于FPGA的汉明码译码器的设计.doc_第1页
第1页 / 共40页
基于FPGA的汉明码译码器的设计.doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述
大连交通大学信息工程学院 毕 业 设 计 (论 文) 题 目 基于FPGA的汉明码译码器的设计 学生姓名 芦 斌 专业班级 信息工程09-2 指导教师 徐 佳  职 称  讲 师 所在单位 电气工程系信息工程教研室 教研室主任   石桂名 完成日期 2013年 6 月 28 日 摘 要 在数字通讯的系统中,数字信号在传输的过程中容易受到干扰,造成码元波形破坏,使得接收端接收到的信号发生错误的判决。为了提高信息传输的准确性,我们引进了差错控制技术。该项技术应采用了可靠而且有效的信道编码方法来实现。汉明码就是一种可以纠正差错的编码。汉明码编译码器是目前最为常用的数字通信内部器件之一,它被广泛地应用在网络传输、存储器校验纠错以及数据安全中。 本课题是基于FPGA的汉明码译码器的设计,使用Verilog语言来实现汉明码译码器的设计。通过理解汉明码译码原理的基础上,设计出了汉明码的译码器,并且写出了译码源程序,还通过QuartusII软件实现仿真。 本次设计首先介绍了EDA的硬件描述语言Verilog和仿真调试软件QuartusII,然后介绍了FPGA的发展历程和产品特性,借此选出合适的FPGA的芯片,最后介绍了汉明码。通过了解汉明码的理论知识来掌握汉明码的译码原理,然后经过理解和分析设计出实现汉明码译码的算法,并且使用Verilog语言在QuartusII软件里完成了基于FPGA的汉明码译码器的编程和仿真实现。同时根据需要,选择了合适的FPGA的芯片和外围元器件,设计出外围硬件的原理图,将理论和实践结合起来。 关键词:汉明码 译码器 FPGA Verilog语言 QuartusII ABSTRACT In 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 judgment. 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 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 the 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 debugging 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 simulation 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 前 言 1 1.1 选题背景 1 1.2 本课题的研究意义 2 1.3 本课题研究目标及主要任务 2 1.4 本课题可行性分析 3 2 EDA的基础知识与集成运行环境 4 2.1 EDA概念 4 2.2 QuartusⅡ的软件介绍 5 2.3 Verilog的简介 8 2.3.1 Verilog的主要功能 10 2.3.2 Verilog的基础语法 10 2.3.3 Verilog的语言优势 13 3 FPGA的简介 14 3.1 FPGA的发展历程 14 3.2 FPGA的产品特性及发展现状 14 3.3 FPGA的发展趋势 15 3.4 FPGA的硬件介绍 17 4 汉明码译码系统模块设计与实现 19 4.1 汉明码的原理 19 4.1.1 汉明码的定义 19 4.1.2 汉明码的监督矩阵H 21 4.1.3 汉明码的生成矩阵G 22 4.1.4 汉明码的校正子(伴随式)S 22 4.2 汉明码的译码器设计 24 4.2.1 译码器的流程图设计 25 4.2.2 译码器的代码设计 25 4.2.3 译码器的仿真,调试与分析 27 4.3 基于FPGA的汉明码译码器硬件设计 30 结 论 32 谢 辞 33 参考文献 34 附 录 35 大连交通大学信息工程学院2013届本科生毕业设计(论文) 1 前 言 1.1 选题的背景 随着现代通信技术的迅速发展,其应用的领域已渗入到社会生活的各个方面,用户对通信系统的质量和对通信系统数据传输的可靠性与有效性的要求也越来越高,通信系统需要具备更高的可靠性、高效率、低复杂性来适应发展的需求[4]。通信的根本任务是传递信息,其中准确地传输数字信号是数字通信的一个重要的环节。在实际应用中,传输数据的无线信道是非常复杂的。在传输数字信号时,由于信道的时变性、衰减性、带宽资源有限性以及干扰大等特点,再有加性噪声的影响,这就导致接收端接收到的信息和发送端实际发送的信息之间存在一定的差错,势必会造成接收端接收到的信号存在一定的误差,造成一定程度的失真。这时就需求我们去寻找一种办法,能够在确保通信系统的可靠性与高效性的基础上来减少数据传输过程中的误比特率。信道编码就是减少数字信号误比特率的主要手段之一。 信源 发送设备 传输媒介 (信道) 接收设备 信宿 干扰 图1-1 通讯系统的组成 在实际的应用中,衡量一个通信系统的优劣,其中的有效性和可靠性是两个最重要的指标,同时它们也是通信技术设计的重要组成部分。然而,从信息传输角度来考虑,既要提高通信系统的有效性(即传输速率),又要提高通信系统的可靠性,这样往往是相互矛盾的。为了提高可靠性,可以在二进制信息序列中以受控的方式引入一些冗余码元(即监督码元),使他们满足一定的约束关系,以期达到检错和纠错的目的。但是,由于添加了冗余码元(监督码元),导致传输信息的速率下降;同时,为了提高效率,信号以简洁、快速的方式传输,这样在遭受到干扰和噪声时,其自我保护能力大大下降,从而降低了传输的可靠性。于是,在实际通信的应用中,采取比较折中的方式,可在确保可靠性指标达到系统要求的前提下,尽可能的提高传输速率[1] ;抑或在满足一定有效性的指标下,尽量提高传输的可靠性。通信技术设计一直致力于提高信息传输的有效性和可靠性,其中保证通信的可靠性是现代数字通信系统需要解决的首要问题。信道编码技术正是用来改善通信可靠性问题的主要技术手段之一。在实际应用中,一个通信系统一般包含信道编码和信道译码两个模块[2] 。 信道编码的主要目的是为了降低误比特率,提高数字通信的可靠性,其方法是在二进制信息序列中添加一些冗余码元(监督码元),与信息码元一起组成被传输的码字。这些冗余码元是以受控的方式引入,它们与信息码元之间有着相互制约的关系。在信道中传输该码字,如果错误了发生,信息码元和冗余码元之间相互制约的关系就将会被破坏 [1]。那么,在接收端对接收到的信息序列按照既定的规则校验码字各码元间的约束关系,从而达到检错、纠错的目的。通过信道编码这种方法,能够有效的在接收端克服信号在无线信道中传输时受到噪声和干扰产生的影响。信道译码也就是信道编码的逆过程,即接收端将接收信息序列按照既定约束关系,同时去掉比特流在传播的过程中混入的噪声干扰和添加的冗余,恢复为比较完整、可靠的信息的过程。 信道编码涉及到的内容也十分广泛,前身纠错编码(FEC)、线性分组码(汉明码、循环码)、理德-所罗门码(RS码)、FIRE码、交织码、卷积码、TCM编码、Turbo码等都是信道编码的研究范畴[11]。  汉明码是信道编码比较好的选择。汉明码是汉明于1950年提出的,是具有纠正一位错误能力的线性分组码。汉明码是在原编码的基础上附加一部分代码,使其能满足纠错码的条件[6]。它的突出特点是:编译码电路简单,易于硬件的实现;用软件实现编译码算法时,软件的效率高;而且性能也比较好。由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。 1.2 本课题的研究意义 本次课程设计的任务就是基于FPGA,利用EDA的技术在Quartus II软件下用Verilog语言来实现汉明码译码器的设计和仿真。 汉明码是一个在原有数据中插入若干校验码来进行错误检查和纠正的编码技术,在原编码的基础上附加了一部分代码,使其满足纠错码的条件。汉明码的编码与译码是通信领域的一个重要研究内容。与一般的编码相比汉明码具有比较高效率,同时也是分组码的典型代表,是深入研究其他分组码的基础,也是研究其他非分组码(如循环码)的基础。 EDA(Electronic Design Automation)技术是随着集成电路和计算机技术飞速发展而应运而生的一种高级、快速、有效的电子设计自动化工具[17]。EDA的主要特征是使用硬件描述语言Verilog来完成设计,这在电子设计领域里受到广泛的接受。EDA技术的发展和推广应用,对高校电子技术课程的教学思想、教学方法和教学目标产生了深远的影响,是电子、信息、通信、电气等电类相关专业的基础学科。本课题利用EDA来实现,与实际联系很大,对将来从事实际工作和相关研究具有很大帮助。同时,选择FPGA的芯片和外围元器件,设计出硬件的原理图,将理论和实践结合起来,对以后的实际工作提供很多的经验。 1.3 本课题研究目标及主要任务 (1)研究目标:本论文是基于FPGA的汉明码译码器的设计。主要研究汉明码编、译码的原理和方法,基于FPGA使用EDA开发软件Quartus II上实现汉明码译码器的设计。通过对汉明码的学习,使用硬件描述语言Verilog设计出了汉明码的译码器,并且写出了源程序,最后通过Quartus II软件的仿真实现。满足电路简单,成本低,开发周期短,执行速度高,升级方便等特点。 (2)主要任务:本次设计要求学会使用仿真调试软件Quartus II和硬件描述语言Verilog,还要求学习汉明码的理论知识,了解汉明码的各种特点,掌握汉明码的译码原理。通过分析设计出实现译码的算法,并且使用Verilog语言在Quartus II软件里完成了基于FPGA的汉明码译码器的编程和仿真实现。同时根据需要,选择合适的FPGA的芯片和外围元器件,设计外围硬件的原理图,将理论和实践结合起来。 1.4 本课题可行性的分析 本课题以理论研究和实验分析相结合的方式进行。课题首先在理论上是可行的,汉明码是1950年由汉明首先构造的,目前汉明码在中小型计算机中普遍采用,其技术已经成熟。 汉明码接收码组 汉明码译码器系统 正确的汉明码信息码 图1-2 译码流程图 在实际操作方面,我们可以借鉴科学工作者已得出的结论,另外其跨专业的技术不多,所以也很少给设计带来不便。在实际设计方面,我们可以利用学校的图书资料和网上资源,利用EDA开发软件Quartus II,使用硬件描述语言Verilog来对汉明码译码器进行设计,观察其可行性,并对结果进行分析。 2 EDA的基础知识与集成运行环境 2.1 EDA概念 EDA(Electronic Design Automation)即电子设计自动化,是以微电子技术为物理层面,现代电子设计为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路芯片ASIC(Application Specific Integrated Circuit)为目的的一门新兴技术[17]。在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。 现在对EDA的概念或范围用得很宽,包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用[1]。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量的工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程都在计算机上自动处理完成。目前EDA 技术已在各大公司、企事业单位和科研教学部门中广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本次毕业设计实现的核心技术即为EDA相关技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。 EDA技术是现代电子设计技术的核心。EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言(如Verilog)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC芯片中,进行特定芯片的适配编译、逻辑映射和编程下载等工作,实现既定的电子电路设计功能。 EDA代表了当今电子设计技术的最新发展方向,它的基本设计方法是:设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级的设计,最后通过综合器和适配器来生成最终的目标器件,这样的设计方法被称为高层次的电子设计方法[7]。 EDA技术的优势[15]:(1)采用硬件描述语言,便于复杂的系统设计(2)拥有强大的系统建模和电路仿真功能(3)拥有自主知识产权(4)开发技术的标准化和规范化(5)全方位地利用计算机的自动设计、仿真和测试(6)对设计者的硬件知识和经验要求低。 EDA设计的实现目标:(1)印刷电路板设计;(2)集成电路(IC或ASIC)设计;(3)可编程逻辑器件(FPGA/CPLD)设计;(4)混合电路设计。 EDA设计的常用软件和设计工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:multiSIM7(原EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,还可以输出多种网表文件,与第三方软件接口。 EDA工具在EDA技术应用中占据极其重要的位置,EDA的核心是利用计算机完成电子设计全过程自动化,因此,基于计算机环境的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Ⅱ上可以完成设计输入、布新布局(适配)、HDL综合、仿真和选择以及硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、处理和器件编程。 QuartusⅡ提供了完整的多平台设计环境,能满足各种特定设计的需求,也是单片机可编程系统(SoPC)设计的综合环境和SoPC开发的基本设计工具,并为Altera DSP开发包运行系统模型的设计提供了集成综合环境。QuartusⅡ设计完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusⅡ可利用第三方的综合工具(如Leonardo Spectrum、Synplify Pro、FPGA Complier II),并能直接调用这些工具。 同时,QuartusⅡ具备仿真功能,同时支持第三方的仿真工具(如Model Sin)。此外, QuartusⅡ与MATLAB和DSP Builder结合,可用于进行基于FPAG的DSP系统开发。 用Quartus II软件进行设计开发的流程图2-1所示: 设计输入 编译 修改设计 编程下载 仿真与定时分析 在线测试 图2-1 Quartus II软件设计开发流程图 其开发步骤为: (1)设计输入:设计输入就是设计者将所设计的电路或系统以开发软件要求的某种形式表达出来,并送入计算机的过程。通常有原理图输入、HDL文本输入、EDIF网表输入、波形输入等几种输入方式。 (2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。 (3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真。定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立或保持时间来进行分析。 (4)编程与验证:用得到的编程文件通过编程电缆配置PLD,加入实际激励,进行在线测试。 在测试过程中,会对包括语法检查和设计规则检查、逻辑综合与化简、逻辑适配、布局与布线等工作进行检查,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。 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 :打开平面图编辑器或将其带至前台。 l :打开编译器窗口或将其带至前台。 l :打开仿真器窗口或将其带至前台。 l :打开时序分析器窗口或将其带至前台。 l :打开编程器窗口或将其带至前台。 l :指定工程名。 l :将工程名设置为和当前文件名一样。 l :打开当前工程的顶层设计文件或将其带至前台。 l :保存所有打开的编译器输入文件,并检查当前工程的语法和其他基本错误。 l :保存工程内所有打开的设计文件,并启动编译器。 l :保存工程内所有打开的仿真器输入文件,并启动仿真器。 图2-4 Quartus II编辑输入原理图界面 Quartus II 的优点:该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内部嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计外,还提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。 Quartus II对软硬器件的支持: Quartus II支持Altera公司的MAX 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应用系统;支持Altera的片上可编程系统(SOPC)开发,系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。 Quartus II对第三方EDA工具的支持:对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、Exemplar Logic、Mentor Graphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的Logic Lock模块设计功能,增添了Fast Fit编译选项,推进了网络编辑性能,并且提升了调试能力。 Quartus II设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA 和CPLD设计的所有阶段的解决方案。与其它EDA软件相比较Quartus II软件的特点主要包括:  (1) 可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。(2) 芯片(电路)平面布局连线编辑。 (3) Logic Lock增量设计方法,使用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。 (4) 功能强大的逻辑综合工具。(5) 完备的电路功能仿真与时序逻辑分析。 (6) 定时和时序分析与关键路径延时分析。(7) 使用Signal Tap II逻辑分析工具进行嵌入式的逻辑分析。 (8) 支持软件源文件的添加和创建,并将它们链接起来生成编程文件。 (9) 使用组合编译方式可一次完成整体设计流程。 (10)自动定位编译的错误。 (11)高效的编程与验证工具。 (12)可读入标准的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年代中期开发出来的,前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发,后者由美国军方所研发。 Verilog HDL是由GDA(Gateway Design Automation)公司的PhilMoorby在1983年末首创的,最初只是设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得Verilog HDL迅速得到推广和应用。1989年CADENCE公司收购了GDA公司,使得Verilog HDL成为了该公司的独家专利。1990年CADENCE公司公开发表了Verilog HDL,并成立LVI组织以促进Verilog HDL成为IEEE标准,即IEEE Standard 1364-1995。Verilog HDL在语言描述风格上传承了上一代硬件描述语言的解释风格,所以描述的器件在编译和综合时适应能力强,系统可以自动优化。虽然对应语言的解读性能较弱,但是仿真以后的纠错能力强。Verilog HDL在模型上注重结构和数据的解释,所以得到EDA生产厂商的喜爱,Verilog HDL成为了一种开放的商业EDA语言。 Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。这也就是说,既可以用电路的功能描述也可以用元器件和它们之间的连接来建立所设计电路的Verilog HDL模型。Verilog模型可以是实际电路的不同级别的抽象。这些抽象的级别和它们对应的模型类型共有以下五种: (1)系统级(system):用高级语言结构实现设计模块的外部性能的模型。 (2)算法级(algorithm):用高级语言结构实现设计算法的模型。 (3)RTL级(Register Transfer Level):描述数据在寄存器之间流动和如何处理这些数据的模型。 (4)门级(gate-level):描述逻辑门以及逻辑门之间的连接的模型。 (5)开关级(switch-level):描述器件中三极管和储存节点以及它们之间连接的模型。 Verilog HDL常用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显示进行时序建模[14]。    Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。    Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够了。 2.3.1 Verilog的主要功能 作为一种硬件描述语言,Verilog HDL可以直接描述硬件结构,也可以通过描述系统行为来实现建模。Verilog HDL的主要特点和功能有以下几点: (1) 描述基本逻辑门,如and、or等基本逻辑门都内置在语言中,可以直接调用。 (2) 描述基本开关模型,如nmos、pmos和coms等基本开关都可以直接调用。 (3) 允许用户定义基元(UDP),这种方式灵活有效,用户定义的基元既可以是组合逻辑也可以是时序逻辑。 (4) Verilog HDL中有两种数据类型,线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。 (5) 能够描述层次设计,可使用模块实例结构描述任何层次。 (6) 设计的规模可以是任意的,语言不对设计的规模(大小)施加任何限制。 (7) Verilog HDL语言的描述能力可以通过使用编程接口(PLI)进一步扩展。PLI是允许外部函数访问Verilog HDL模块内信息,允许设计者与模拟器交互的例程集合。 (8) 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,报括进程和队列级。 (9) 能够使用内置开关级原语,在开关级对设计进行完整建模。 (10) 同一语言可用于生成模拟激励和指定测试的验证的约束条件。 (11) Verilog HDL不仅能够在RTL上进行设计描述,而且能够在体系结构级和算法级的行为上进行设计描述。 (12) 能够使用门和模块实例化语句在结构级上进行结构描述。 (13) Verilog HDL具有混合方式建模的能力,即设计中每个模块均可以在不同设计层次上建模。 (14) Verilog HDL具有内置算术运算符、逻辑运算符、位运算符。 (15) 用延迟表达式或事件表达式来明确地控制过程的启动时间。 (16) 通过命名的事件来触发其它过程里的激活行为或停止行为。 (17) 可描述顺序执行或并行执行的程序结构,并且提供了条件、if-else、case、循环程序结构。 2.3.2 Verilog的基础语法 Verilog的设计初衷是成为一种基本语法与C语言相近的硬件描述语言。这是因为C语言在Verilog设计之初,已经在许多领域中得到广泛应用,C语言的许多语言要素已经被许多人所习惯。一种与C语言相似的硬件描述语言,可以让电路设计人员更容易学习和接受。不过,Verilog与C语言还是存在许多差别。另外,作为一种与普通计算机编程语言不同的硬件描述语言,它还具有一些独特的语言要素,例如向量形式的线网和寄存器、过程中的非阻塞赋值等。总的来说,具备C语言的设计人员将能够很快掌握 [7]。 Verilog的基本设计单元是“模块”(block)。一个模块是由两部分组成:一部分描述接口信息,另一部分描述逻辑功能,即定义输入是如何影响输出的。 根据常见的Verilog HDL程序可以总结出以下特征[14]: (1) Verilog HDL程序是由模块所构成的。每个模块的内容都是嵌在module 和 endmodule 这两个语句之间的,每个模块实现特定的功能,模块是可以进行层次嵌套的。 (2) 每个模块首先要进行端口定义,并说明输入(input)和输出(output),然后对模块的功能进行逻辑描述。 (3) Verilog HDL程序的书写格式自由,一行可以写几个语句,一个语句也可以分多行写。 (4) 除了endmodule语句外,每个语句的最后必须要加分号。 (5) 可以用/* … */和 / / … 对Verilog HDL程序的任何部分作注释。 由此我们可以得出Verilog HDL语言的基础语法有以下几点[14]: 首先,Verilog HDL程序是由模块构成的。Verilog HDL结构完全嵌在module和endmodule声明语句之间,每个模块实现特定的功能,模块是可以进行层次嵌套的。每个Verilog程序包括4个主要部分:端口定义,I/0说明,信号类型声明和功能描述。 在编写Verilog HDL程序时还需要常量,参数(Parameter)型和变量。在程序运行过程中,其值不能被改变的量称为常量。参数型数据是一种常数型的数据,用参数来定义常量,即用参数来定义一个标识符代表一个常量,称为符号常量。采用标识符来代表一个常量,这样可提高程序的可读性和可维护性。参数型常数经常用于定义延迟时间和变量宽度。变量是在程序运行过程中其值是可以改变的量,在Verilog HDL中变量的数据类型有很多种,我们这里主要介绍三种:wire型变量、reg型变量和memory型变量。 wire型表示结构(例如门)之间的物理连接。wire型的变量不能储存值,而且它必须受到驱动器或连续赋值语句assign 的驱动。如果没有驱动器连接到wire型变量上,则该变量就是高阻态。wire型数据常用来表示以assign关键字指定的组合逻辑信号。Verilog程序模块中输入输出信号类型缺省时将自动定义为wire型。wire型信号可以用作任何方程式的输入,也可以用作“assign”语句或实例元件的输出。 reg型是寄存器数据类型的关键字。寄存器是数据储存单元的抽象。通过赋值语句可以改变寄存器的值,其作用相当于改变触发器存储器的值。reg型数据常用来表示always模块内的指定信号,常代表触发器。reg类型数据的缺省初始值为不定值x。 memory型是通过扩展reg型数据的地址范围来生成的。由于Verilog HDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器,ROM存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。但在Verilog语言中没有多维数组存在,所以就需要memory型来生成。 其次,在编写Verilog HDL程序是还需要各种的运算符。有算术运算符(+,−,×,%等),位运算符(&,~ 等),逻辑运算符(&&,|| 等),关系运算符(< ,> 等),等式运
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服