1、电子设计自动化技术电子设计自动化技术开课专业:应用电子技术、电子信息工程技术、开课专业:应用电子技术、电子信息工程技术、嵌入式技术与应用等嵌入式技术与应用等一、课程概述1、课程性质 电子设计自动化技术是应用电子技术、电子信息工程技术、嵌入式技术与应用等专业的专业能力模块课程。2、课程与系列产品或项目设计与开发流程的关联 该课程是“直流电机控制模块”开发流程中“模块应用开发”阶段对应的基础课程。3、课程目标 通过“简易电子琴设计”等5个案例的学习与实践,培养学生运用EDA设计方法、设计语言和开发软件等知识,解决数字系统硬件电路设计相关问题的能力。4、与前后续课程的关系 前修课程:数字电子技术、C
2、语言程序设计、单片机应用技术;后续课程:小型智能玩具设计与制作。二、课程内容设计案例序号案例名称案例内容选取案例理由1四位加法器设计 1.1 四位加法器设计方案分析 1.2 四位加法器原理图设计与时序仿真 1.3 四位加法器硬件实现通过四位加法器设计实例,系统地介绍在Quartus II的开发环境中,如何利用原理图输入设计方法进行数字电路系统的设计,掌握最基本、最直观的设计方法。2三人表决器设计2.1 三人表决器设计方案分析2.2 三人表决器Verilog HDL描述与时序仿真2.3 三人表决器硬件实现通过三人表决器设计实例,系统地介绍在Quartus II的开发环境中,利用硬件描述语言输入设
3、计方法进行组合逻辑电路设计的步骤与方法,并介绍Verilog HDL语言的基本单元与构成以及基本语句。3简易电子琴设计 3.1 简易电子琴设计方案分析3.2简易电子琴Verilog HDL描述与时序仿真3.3 简易电子琴硬件实现通过简易电子琴设计实例,系统地介绍在Quartus II的开发环境中,利用Verilog HDL语言的顺序语句与并行语句进行时序逻辑电路的设计,掌握自顶向下的设计方法。4交通管理器设计 4.1 交通管理器设计方案分析 4.2 交通管理器综合设计与时序仿真 4.3 交通管理器硬件实现通过交通管理器设计实例,系统地介绍在Quartus II的开发环境中,利用Verilog
4、HDL语言与原理图混合方式进行数字电路系统的设计,掌握层次电路设计方法。5步进电机控制器设计 5.1 步进电机控制器设计方案分析 5.2 步进电机控制器Verilog HDL描述与时 序仿真 5.3 步进电机控制器硬件实现通过步进电机控制器设计实例,系统地介绍在Quartus II的开发环境中,利用有限状态机方式进行数字电路系统的设计,掌握同步时序逻辑电路常用设计方法。三、与已学电子设计课程比较三、与已学电子设计课程比较 以数字电子钟设计为例以数字电子钟设计为例1、数字电子技术设计方法2、单片机设计方法3、FPGA设计方法(1)原理图输入设计法(2)HDL程序文本输入设计法四、课程主要内容项目
5、一 三人表决器设计项目二 四位加法器设计项目三 数字电子钟设计项目四 交通管理器设计项目五 简易电子琴设计项目六 步进电机控制器设计项目七 数字温度计设计项目一:三人表决器设计Electronic Design Automation 7 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A.项目任务项目任务Electronic Design Automation 10 EDA技术利用Verilog HDL语言设计一个三人表决器,完成如下逻辑功能:投票意见评委A 评委B评委C表决结果功能描述:三个人分别用指拨开关A、B、C来表示自己的意愿,如果对某决议同意
6、,对应的指拨开关拨到高电平(上方),不同意就把对应的指拨开关拨到低电平(下方)。表决结果用LED(高电平亮)显示,如果决议通过那么实验板上LED亮;如果不通过那么实验板上LED不亮;如果对某个决议有任意二到三人同意,那么此决议通过,LED亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,LED不亮。B 项目目标Electronic Design Automation 11 EDA技术通过本项目,利用Verilog HDL语言完成一个基于FPGA的三人表决器设计,并下载到FPGA中进行验证,达到以下要求:1 掌握EDA技术基本概念2 熟悉基于FPGA的EDA设计流程。3 了解CPLD/F
7、PGA的内部结构4 了解QuartusII 软件的基本使用方法5 了解Verilog HDL语言的基本结构 C.知识准备1 EDA技术概述Electronic Design Automation 13 EDA技术 1.1 EDA1.1 EDA技术基本概念技术基本概念 现代电子设计技术的核心现代电子设计技术的核心就是电子设计自动化就是电子设计自动化(Electronic Design Automation(Electronic Design Automation,EDA)EDA)技术。利用技术。利用EDAEDA技术,技术,电子设计师可以方便地实现电子设计师可以方便地实现ICIC设计、电子电路设计
8、和设计、电子电路设计和PCBPCB设计等工作。设计等工作。狭义的狭义的EDAEDA技术,就是以大规模技术,就是以大规模可编程逻辑器件为设计载体,以硬可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发程逻辑器件的开发软件及实验开发系统为设计开发工具,通过使用有系统为设计开发工具,通过使用有关的开发软件,自动完成电子系统关的开发软件,自动完成电子系统设计的逻辑编译、逻辑化简、逻辑设计的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局分割、逻辑综合及优化、逻辑布局布
9、线、逻辑仿真,直至对于特定目布线、逻辑仿真,直至对于特定目标芯片的适配编译、逻辑映射、编标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子程下载等工作,最终形成集成电子系统或专用集成芯片。本课程讨论系统或专用集成芯片。本课程讨论的对象专指狭义的的对象专指狭义的EDAEDA技术。技术。广义的EDA技术,除了狭义的EDA技术外,还包括计算机辅助分析CAA技术(如PSpice、EWB、MATLAB等),印制电路板计算机辅助设计PCB-CAD技术(如Protel、OrCAD等)。在广义的EDA技术中,CAA技术和PCB-CAD技术不具备逻辑综合和逻辑适配的功能,因此它并不能称为真正意义上的E
10、DA技术。EDA技术的3个层次:(1)EWB、PSpice、Protel的学习作为EDA的最初级内容。(2)利用Verilog HDL完成对CPLDFPGA的开发等作为中级内容。(3)ASIC的设计作为最高级内容。Electronic Design Automation 14 EDA技术1.2 EDA技术的主要特征Electronic Design Automation 15 EDA技术EDA技术主要有以下这些特征:(1)高层综合与优化的理论与方法取得了很大的进展,其结果大大缩短了复杂的ASIC的设计周期,同时提高了设计质量。(2)采用硬件描述语言(Hardware Description L
11、anguage,HDL)对电子系统硬件行为、结构、数据流进行描述,目前形成了国际通用的Verilog HDL、VHDL等硬件描述语言。它们均支持不同层次的描述,使得复杂IC的描述规范化,便于传递、交流、保存与修改,并可建立独立的工艺设计文档,便于设计重用。(3)开放式的设计环境(各厂家均适合)。(4)“自顶向下”的设计方法。(5)丰富的元器件模块库。(6)具有较好的人机对话界面与标准的CAM接口。(7)建立并行设计工程框架结构的集成化设计环境,以适应当今ASIC的特点:规模大而复杂、数字与模拟电路并存、硬件与软件并存、产品上市更新快。1.3 EDA技术发展历程Electronic Design
12、 Automation 16 EDA技术With the tide.EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(Computer Assist Design,CAD)、计算机辅助工程设计(Computer Assist Engineering Design,CAE)和电子系统设计自动化(Eleetronie System Design Automation,ESDA)3个发展阶段。1.3.1 20世纪70年代的计算机辅助设计CAD阶段1.3.2 20世纪80年代的计算机辅助工程设计CAE阶段 1.3.3 20世纪90年代电子系统设计自动化EDA阶段 1.4 ED
13、A技术主要内容Electronic Design Automation 17 EDA技术 硬件描述语言硬件描述语言 Verilog HDLVerilog HDL VHDLVHDL 可编程逻辑器件可编程逻辑器件 CPLDCPLD FPGAFPGAEDA软件工具2.可编程逻辑器件Electronic Design Automation 18 EDA技术 可编程逻辑器件(PLD)的定义 逻辑器件:用来实现某种特定逻辑功能的电子器件,最简单的逻辑器件是与、或、非门(74LS00,74LS04等),在此基础上可实现复杂的时序和组合逻辑功能。可编程逻辑器件(PLDProgrammable Logic De
14、vice):器件的功能不是固定不变的,而是可根据用户的需要而进行改变,即由编程的方法来确定器件的逻辑功能。Electronic Design Automation 19 EDA技术PLD出现的背景 电路集成度不断提高 SSIMSILSIVLSI 计算机技术的发展使EDA技术得到广泛应用 设计方法的发展 自下而上自上而下 用户需要设计自己需要的专用电路 专用集成电路(ASICApplication Specific Integrated Circuits)开发周期长,投入大,风险大 可编程器件PLD:开发周期短,投入小,风险小Electronic Design Automation 20 EDA
15、技术PLD器件的优点 集成度高,可以替代多至几千块通用集成度高,可以替代多至几千块通用IC芯片芯片 极大减小电路的面积,降低功耗,提高可靠性极大减小电路的面积,降低功耗,提高可靠性 具有完善先进的开发工具具有完善先进的开发工具 提供语言、图形等设计方法,十分灵活提供语言、图形等设计方法,十分灵活 通过仿真工具来验证设计的正确性通过仿真工具来验证设计的正确性 可以反复地擦除、编程,方便设计的修改和升级可以反复地擦除、编程,方便设计的修改和升级 灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间 保密性好保密性好Electronic Desig
16、n Automation 21 EDA技术PLD的发展趋势 向高集成度、高速度方向进一步发展 最高集成度已达到400万门 向低电压和低功耗方向发展,5V3.3V2.5V1.8V更低 内嵌多种功能模块 RAM,ROM,FIFO,DSP,CPU 向数、模混合可编程方向发展Electronic Design Automation 22 EDA技术PLD芯片制造商 最大的PLD供应商之一 FPGA的发明者,最大的PLD供应商之一 ISP技术的发明者 提供军品及宇航级产品Electronic Design Automation 23 EDA技术PLD器件的分类按集成度 低密度 PROM,EPROM,EE
17、PROM,PAL,PLA,GAL 只能完成较小规模的逻辑电路 高密度,已经有超过400万门的器件 EPLD,CPLD,FPGA 可用于设计大规模的数字系统集成度高,甚至可以做到SOC(System On a Chip)Electronic Design Automation 24 EDA技术PLD器件的分类按结构特点 基于与或阵列结构的器件阵列型 PROM,EEPROM,PAL,GAL,CPLD CPLD的代表芯片如:Altera的MAX系列 基于门阵列结构的器件单元型 FPGAElectronic Design Automation 25 EDA技术PLD器件的分类按编程工艺 熔丝或反熔丝编
18、程器件Actel的FPGA器件 体积小,集成度高,速度高,易加密,抗干扰,耐高温 只能一次编程,在设计初期阶段不灵活 SRAM大多数公司的FPGA器件 可反复编程,实现系统功能的动态重构 每次上电需重新下载,实际应用时需外挂EEPROM用于保存程序 EEPROM大多数CPLD器件 可反复编程 不用每次上电重新下载,但相对速度慢,功耗较大Electronic Design Automation 26 EDA技术PLD的逻辑符号表示方法Electronic Design Automation 27 EDA技术与门乘积项PROM结构 与阵列为全译码阵列,器件的规模将随着输入信号数量n的增加成2n指数
19、级增长。因此PROM一般只用于数据存储器,不适于实现逻辑函数。EPROM和EEPROMEDA技术Electronic Design Automation 28 Electronic Design Automation 29 EDA技术用PROM实现组合逻辑电路功能实现的函数为:BABAF1BABAF2BAF3固定连接点(与)编程连接点(或)PLA(可编程逻辑阵列)结构 与阵列和或阵列均可编程。PLA的内部结构在简单PLD中有最高的灵活性。速度较慢,价格较高Electronic Design Automation 30 PAL(可编程阵列逻辑)结构 与阵列可编程使输入项增多,或阵列固定使器件简化
20、。或阵列固定明显影响了器件编程的灵活性Electronic Design Automation 31 Electronic Design Automation 32 EDA技术BnAn“或”阵列(固定)SnCn+1“与”阵列(可编程)CnnnnnnnnnnnnnnnnnnnnnCBCABACCBACBACBACBAS1AnBnCnAnBnCnAnBnCnAnBnCnAnBnAnCnBnCn用PAL实现全加器GAL(通用阵列逻辑)结构 GAL器件与PAL器件的区别在于用可编程的输出逻辑宏单元(OLMC)代替固定的或阵列。可以实现时序电路。Electronic Design Automation
21、33 逻辑宏单元OLMCGAL器件的OLMCOutput Logic Macro Cell 每个OLMC包含或阵列中的一个或门 组成:异或门:控制输出信号的极性 D触发器:适合设计时序电路 4个多路选择器Electronic Design Automation 34 输出使能选择反馈信号选择或门控制选择输出选择CPLD内部结构(Altera的MAX7000S系列)Electronic Design Automation 35 EDA技术逻辑阵列块(LAB)I/O单元连线资源逻辑阵列模块中包含多个宏单元Electronic Design Automation 36 EDA技术宏单元内部结构乘积项
22、逻辑阵列乘积项选择矩阵可编程触发器可编程的I/O单元 能兼容TTL和CMOS多种接口和电压标准 可配置为输入、输出、双向、集电极开路和三态等形式 能提供适当的驱动电流 降低功耗,防止过冲和减少电源噪声 支持多种接口电压(降低功耗)1.20.5um,5V 0.35um,3.3V 0.25um,internal 2.5V,I/O3.3V 0.18um,internal 1.8V,I/O2.5V and 3.3VElectronic Design Automation 37 EDA技术可编程连线阵列 在各个逻辑宏单元之间以及逻辑宏单元与I/O单元之间提供信号连接的网络 CPLD中一般采用固定长度的线
23、段来进行连接,因此信号传输的延时是固定的,使得时间性能容易预测。Electronic Design Automation 38 EDA技术FPGA结构 CPLD基于乘积项,即可编程的与阵列和固定的或阵列 FPGA基于可编程的查找表(LUT)Electronic Design Automation 39 EDA技术查找表的基本原理Electronic Design Automation 40 EDA技术实际逻辑电路LUT的实现方式 a,b,c,d 输入逻辑输出地址RAM中存储的内容00000000000001000010.0.01111111111N个输入的逻辑函数需要2的N次方的容量的SRAM
24、来实现,一般多个输入的查找表采用多个逻辑块级连的方式FPGA中的嵌入式阵列(EAB)可灵活配置的RAM块 用途 实现比较复杂的函数的查找表,如正弦、余弦等。可实现多种存储器功能,如RAM,ROM,双口RAM,FIFO,Stack等 灵活配置方法:2568,也可配成5124Electronic Design Automation 41 EDA技术FPGA与CPLD的区别CPLDFPGA内部结构ProducttermLookup Table程序存储内部EEPROMSRAM,外挂EEPROM资源类型组合电路资源丰富触发器资源丰富集成度低高使用场合完成控制逻辑能完成比较复杂的算法速度快慢其他资源EAB
25、,锁相环保密性可加密一般不能保密Electronic Design Automation 42 FPGA与CPLD的区别 FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,适于数据的保密。Electronic Design Automation 43 EDA技术FPGA与CPLD的区别 FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几
26、个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。Electronic Design Automation 44 EDA技术FPGA与CPLD的区别 FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。Electronic Design Automation 45 EDA技术FPGA与CPLD的区别 FPGA为非连续式布线,CPLD为连
27、续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。Electronic Design Automation 46 EDA技术3 基于CPLD/FPGA的EDA设计流程 文本编辑器 生成 VHDL 源程序 VHDL 源程序 图形编辑器 VHDL 综合器 逻辑综合、优化 FPGA/CPLD 布线/适配器
28、 自动优化、布局、布线/适配 编程器/下载电缆 编程、配置 网表文件(EDIF、XNF、VHDL)熔丝图、SRAM 文件、VHDL/Verilog 网表 功能仿真 时序仿真 门级 仿真器 功能仿真 时序仿真 VHDL 仿真器 行为仿真 硬件仿真 硬件测试 Electronic Design Automation 47 EDA技术 4 常用EDA工具软件Electronic Design Automation 48 EDA技术 目前世界上有十几家生产目前世界上有十几家生产CPLDCPLDFPGAFPGA的公司,最大的三家是:的公司,最大的三家是:AlteraAltera、XilinxXilinx
29、和和LatticeLattice,其中,其中AlteraAltera和和XilinxXilinx两家两家公司共占有公司共占有6060以上的市场份额。对于以上的市场份额。对于CPLDCPLDFPGAFPGA开发软件,国内很多人喜开发软件,国内很多人喜欢用欢用AlteraAltera公司的公司的MAX+plus IIMAX+plus II、Quartus Quartus II II,考虑到,考虑到Quartus IIQuartus II是是MAX+plus IIMAX+plus II的升的升级产品,所以本书级产品,所以本书CPLDCPLDFPGAFPGA的常用的常用EDAEDA工具主要介绍工具主要
30、介绍Quartus IIQuartus II。4.1 Altera EDA4.1 Altera EDA软件工具软件工具Quartus IIQuartus II简简介介 QuartusQuartus是是AlteraAltera公司新近推出的公司新近推出的EDAEDA软件工具,其设计软件工具,其设计工具完全支持工具完全支持VerilogVerilog、VHDLVHDL的设计流程,其内部嵌有的设计流程,其内部嵌有VerilogVerilog、VHDLVHDL逻辑综合器。第三方的综合工具,如逻辑综合器。第三方的综合工具,如Leonardo SpectrumLeonardo Spectrum、Synpl
31、ify ProSynplify Pro、FPGA Compiler IIFPGA Compiler II有着更好的综合效果,因此通有着更好的综合效果,因此通常建议使用这些工具来完成常建议使用这些工具来完成VHDLVHDLVerilogVerilog源程序的综合。源程序的综合。Quartus IIQuartus II可以直接调用这些第三方工具。同样,可以直接调用这些第三方工具。同样,Quartus IIQuartus II具具备仿真功能,但也支持第三方的仿真工具,如备仿真功能,但也支持第三方的仿真工具,如ModelsimModelsim。此。此外,外,Quartus IIQuartus II为为
32、Altera DSPAltera DSP开发包进行系统模型设计提供了开发包进行系统模型设计提供了集成综合环境,它与集成综合环境,它与MatlabMatlab和和DSP BuilderDSP Builder结合可以进行基于结合可以进行基于FPGAFPGA的的DSPDSP系统开发,是系统开发,是DSPDSP硬件系统实现的关键硬件系统实现的关键EDAEDA工具。工具。Quartus IIQuartus II还可与还可与SOPC BuilderSOPC Builder结合,实现结合,实现SOPCSOPC系统开发系统开发 Electronic Design Automation 49 EDA技术Quar
33、tus II 详细设计流程1.建立新工程并指定目标器件或器件系列。2.使用标准文本编辑程序建立Verilog HDL或 VHDL 设计文件。若需要的话,可以对运用库函数进行实例化或使用 MegaWizard Plug-In Manager(Tools 菜单)建立宏功能模块的自定义变量。3.使用其中一个 Quartus II 支持的 EDA 综合工具综合您的设计,并生成EDIF 网表文件(.edf)或 VQM 文件(.vqm)。4.(可选)使用其中一个 Quartus II 支持的仿真工具对您的设计执行功能仿真。5.在 Quartus II Settings 对话框(Assignments 菜单
34、)中,指定选项和库映射文件,以处理使用其它设计输入 综合工具或通过 MegaWizard Plug-In Manager 生成的 EDIF 网表文件(.edf)、Verilog 设计文件(.v)、VHDL 设计文件(.vhd)、VQM 文件(.vqm)和 AHDL 文本设计文件(.tdf)。6.(可选)在 Quartus II Settings 对话框中,为Verilog 输出文件(.vo)、生成 VHDL 输出文件(.vho)、标准延时格式输出文件(.sdo)、标记模型文件、PartMiner XML 格式文件(.xml)和 IBIS 输出文件(.ibs)指定选项。Electronic De
35、sign Automation 50 EDA技术Quartus II 详细设计流程7.使用 Quartus II 软件编译设计并进行布局布线。可以执行全编译,或者分别运行编译器模块:运行 Analysis&Synthesis,对设计进行综合,并将设计中的函数映射到正确的库模块上。运行 Fitter,对设计进行布局布线。运行 Timing Analyzer,对设计进行时序分析。运行 EDA Netlist Writer,生成与其它 EDA 工具配合使用的输出文件。运行 Assembler,为您的设计建立编程文件。8.(可选)使用其中一个 Quartus II 支持的 EDA 时序分析工具对设计进
36、行时序析。9.(可选)使用其中一个 Quartus II 支持的 EDA 仿真工具对设计进行时序仿真。10.(可选)使用其中一个 Quartus II 支持的 EDA 板级验证工具进行板级验证。11.(可选)使用其中一个 Quartus II 支持的 EDA 形式验证工具进行形式验证,确保 Quartus 布线后网表与综合网表等同。12.(可选)使用其中一个 Quartus II 支持的 EDA 再综合工具进行板级再综合。13.使用编程文件、Programmer 和 Altera 硬件编程器对器件进行编程;或将编程文件转换为其它文件格式以供嵌入式处理器等其它系统使用。Electronic De
37、sign Automation 51 EDA技术支持多种设计输入方法Electronic Design Automation 52 EDA技术?5 硬件描述语言Electronic Design Automation 53 EDA技术.常用硬件描述语言常用硬件描述语言.Verilog HDLVerilog HDL基本结构基本结构Electronic Design Automation 54 EDA技术5.1 Verilog HDL概 述 5.1.1 常用硬件描述语言简介 常用硬件描述语言有Verilog HDL、VHDL和ABEL语言。Verilog HDL起源于Verilog-XL专用于集成
38、电路的设计、仿真与验证,VHDL起源于美国国防部的VHSIC,ABEL则来源于可编程逻辑器件的设计。Electronic Design Automation 55 EDA技术5.1.2 Verilog HDL及其优点 Verilog HDL(以下常简称为 Verilog)最初由 Gateway Design Automation公司(简称GDA)的 Phil Moorby在1983年创建。此后Verilog HDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1995年,IEEE制定了 Verilog HDL的第一个国际标准 IEEE Std 1364-1995,即 V
39、erilog 1.0。2001年,IEEE发布了Verilog HDL的第二个标准版本(Verilog 2.0)IEEE Std 1364-2001,简称为 Verilog-2001标准。现在,Verilog HDL和VHDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,Verilog HDL与 VHDL语言将承担起几乎全部的数字系统设计任务。Electronic Design Automation 56 EDA技术 Verilog HDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬
40、件特征的语句外,Verilog HDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言(C语言)。Verilog HDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是Verilog HDL系统设计的基本点。应用Verilog HDL进行工程设计的优点是多方面的,具体如下:Electronic Design Automation 57
41、 EDA技术 (1)与其他的硬件描述语言相比,Verilog HDL具有更强的行为描述能力。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)Verilog HDL具有丰富的仿真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,对整个工程的结构和功能可行性做出判断。(3)Verilog HDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。Verilog HDL中设计模块的概念、IP核的概念为设计的分解和并行工作提供了有利的支持。Electronic Design
42、Automation 58 EDA技术 (4)用Verilog HDL完成一个确定的设计,可以利用EDA工具进行逻辑综合优化,并自动把Verilog HDL描述设计转变成门级网表。(5)Verilog HDL对设计的描述具有相对独立性。设计者可以不懂硬件的结构,也不必管最终设计的目标器件是什么,而进行独立的设计。(6)由于Verilog HDL具有类似子程序调用等功能,对于完成的设计,在不改变源程序的条描述语句和件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。Electronic Design Automation 59 EDA技术5.1.3 Verilog HDL程序设计约定
43、便于程序的阅读和调试,本书对VerilogHDL程序设计特作如下约定:(1)语句结构描述中方括号“”内的内容为可选内容。(2)对于VerilogHDL的编译器和综合器来说,程序文字的大小写敏感。本书一般使用小写。(3)程序中的注释使用双斜线“/”。在VerilogHDL程序的任何一行中,双斜线“/”后的文字都不参加编译和综合。(4)为了便于程序的阅读与调试,书写和输入程序时,使用层次缩进格式,同一层次的对齐,低层次的较高层次的缩进两个字符。Electronic Design Automation 60 EDA技术5.1.4 Verilog HDL程序设计举例 1.2选1多路选择器的Verilo
44、g HDL程序module mux21a(a,b,s,y);input a,b,s;output y;assign y=s?b:a;endmodule 以上是2选1多路选择器的Verilog HDL程序完整描述。图5.1是此描述对应的逻辑图,图中,a和b分别为两个数据输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。“mux21a”是设计者为此器件取的名称。图5.2是对以上程序综合后获得的门级电路,可以认为是多路选择器mux21a的内部电路结构。图5.1 mux21a实体 图5.2 mux21a结构体 Electronic Design Automation 61 EDA
45、技术 2.说明及分析 可见,此电路的Verilog HDL描述由两大部分组成:(1)端口定义部分,电路输入输出接口。图5.1可以认为是实体的图形表达。(2)功能描述部分,定义输入是如何影响输出。图5.2是此结构体的原理图表达。Electronic Design Automation 62 EDA技术 程序中的逻辑描述是用条件运算符?:表达的。它的含义是,当满足条件s=0,即s为低电平时,a输入端的信号传送至y,否则(即s为高电平时)b输入端的信号传送至y。2选1多路选择器的电路功能可以从图5.3的时序波形中看出,分别向a和b端输入两个不同频率的信号fa和fb(设fafb),当s为高电平时,y输
46、出fb,而当s为低电平时,y输出fa。显然,图5.3的波形证实了Verilog HDL逻辑设计的正确性。图5.3 mux21a功能时序波形图 Electronic Design Automation 63 EDA技术5.2 Verilog HDL程序基本结构 一个相对完整的Verilog HDL程序的比较固定的结构。通常由三部分组成,包含模块、端口定义、逻辑功能描述。1、以Verilog语言的关键词module_endmodule引导的完整的电路模块或称“模块”的描述,模块对应着硬件电路上的逻辑实体。2、以input和output等关键词引导的对模块的外部端口的语句。3、以关键词assign引
47、导的赋值语句负责描述模块内部的逻辑功能或电路结构;always块来描述电路功能。Electronic Design Automation 64 EDA技术 5.2.1 模块表达 一个电路模块是以Verilog的关键词module_endmodule引导的。Verilog完整的、可综合的程序结构能够完整地描述一个电路模块,或一片专用集成电路ASIC的端口结构和电路功能,即无论是一片74LS138还是一片CPU,都必须包含在模块描述语句module_endmodule中。模块语句的一般格式如下:module 模块名(模块端口名);模块端口描述.模块功能描述.endmodule 以上说明,任一可综合
48、的最基本的模块都必须以关键词module开头,在module右侧(空一格或多格)是模块名。模块名属于标识符,具体取名由设计者自定。Electronic Design Automation 65 EDA技术 5.2.2 端口语句、端口信号名和端口模式 端口或端口信号是模块与外部电路连接的通道,这如同一个芯片必须有外部引脚一样,必须具有输入输出或双向口等引脚,以便与外部电路交换信息。通常,紧跟于 module语句下面的是端口语句和端口信号名,它们将对module旁的端口列表中的所有端口名作更详细更具体的说明。端口定义关键词有三种:input、output、inout。端口定义语句的一般格式如下:i
49、nput 端口名1,端口名2,.;output 端口名1,端口名2,.;inout 端口名1,端口名2,.;input msb:lsb 端口名1,端口名2,.;端口关键词旁的端口名可以有多个,端口名间用逗号分开,最后加分号。Electronic Design Automation 66 EDA技术5.2.3 内部信号说明 在模块内部用到的和与端口有关的wire和reg类型变量的声明,如:regwidth-1:0 R变量1,R变量2,;wirewidth-1:0 W变量1,W变量2,;Electronic Design Automation 67 EDA技术 5.2.4 功能定义 模块中最重要的
50、部分是逻辑功能定义部分。有3种方法可在模块中产生逻辑:1.用assign声明语句关键词assign可以引导不同形式的赋值语句,例如简单的赋值语句:assign y=a;/将信号a赋值给y assign y=a&b;/将信号a和信号b逻辑相与后赋值给y由此可见,连续赋值语句的基本格式如下:assign 目标变量名=驱动表达式;Electronic Design Automation 68 EDA技术2.用always块 如:always(posedge clk or posedge clr)beginif(clr)q=0;else if(en)q 程序-Altera-Quartus II 9.0