《教学配套课件:电子设计自动化技术》由会员分享,可在线阅读,更多相关《教学配套课件:电子设计自动化技术(430页珍藏版)》请在金锄头文库上搜索。
1、电子设计自动化技术电子设计自动化技术课程简介课程简介开课专业:应用电子技术、电子信息工程技术、开课专业:应用电子技术、电子信息工程技术、嵌入式技术与应用等嵌入式技术与应用等一、课程概述1、课程性质电子设计自动化技术是应用电子技术、电子信息工程技术、嵌入式技术与应用等专业的专业能力模块课程。2、课程与系列产品或项目设计与开发流程的关联该课程是“直流电机控制模块”开发流程中“模块应用开发”阶段对应的基础课程。3、课程目标通过“简易电子琴设计”等5个案例的学习与实践,培养学生运用EDA设计方法、设计语言和开发软件等知识,解决数字系统硬件电路设计相关问题的能力。4、与前后续课程的关系前修课程:数字电子
2、技术、C语言程序设计、单片机应用技术;后续课程:小型智能玩具设计与制作。二、课程内容设计案例序号案例名称案例内容选取案例理由1四位加法器设计1.1四位加法器设计方案分析1.2四位加法器原理图设计与时序仿真1.3四位加法器硬件实现通过四位加法器设计实例,系统地介绍在QuartusII的开发环境中,如何利用原理图输入设计方法进行数字电路系统的设计,掌握最基本、最直观的设计方法。2三人表决器设计2.1三人表决器设计方案分析2.2三人表决器VerilogHDL描述与时序仿真2.3三人表决器硬件实现通过三人表决器设计实例,系统地介绍在QuartusII的开发环境中,利用硬件描述语言输入设计方法进行组合逻
3、辑电路设计的步骤与方法,并介绍VerilogHDL语言的基本单元与构成以及基本语句。3简易电子琴设计3.1简易电子琴设计方案分析3.2简易电子琴VerilogHDL描述与时序仿真3.3简易电子琴硬件实现通过简易电子琴设计实例,系统地介绍在QuartusII的开发环境中,利用VerilogHDL语言的顺序语句与并行语句进行时序逻辑电路的设计,掌握自顶向下的设计方法。4交通管理器设计4.1交通管理器设计方案分析4.2交通管理器综合设计与时序仿真4.3交通管理器硬件实现通过交通管理器设计实例,系统地介绍在QuartusII的开发环境中,利用VerilogHDL语言与原理图混合方式进行数字电路系统的设
4、计,掌握层次电路设计方法。5步进电机控制器设计5.1步进电机控制器设计方案分析5.2 步进电机控制器Verilog HDL描述与时 序仿真5.3步进电机控制器硬件实现通过步进电机控制器设计实例,系统地介绍在QuartusII的开发环境中,利用有限状态机方式进行数字电路系统的设计,掌握同步时序逻辑电路常用设计方法。三、与已学电子设计课程比较三、与已学电子设计课程比较以数字电子钟设计为例以数字电子钟设计为例1、数字电子技术设计方法2、单片机设计方法3、FPGA设计方法(1)原理图输入设计法(2)HDL程序文本输入设计法四、课程主要内容项目一 三人表决器设计项目二 四位加法器设计项目三 数字电子钟设
5、计项目四 交通管理器设计项目五 简易电子琴设计项目六 步进电机控制器设计项目七 数字温度计设计ThanksforyourtimeThanksforyourtime!项目一:三人表决器设计Electronic Design Automation 7 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A.项目任务项目任务Electronic Design Automation 10 EDA技术利用VerilogHDL语言设计一个三人表决器,完成如下逻辑功能:投票意见评委A评委B评委C表决结果功能描述:三个人分别用指拨开关A、B、C来表示自己的意愿,如果对某决
6、议同意,对应的指拨开关拨到高电平(上方),不同意就把对应的指拨开关拨到低电平(下方)。表决结果用LED(高电平亮)显示,如果决议通过那么实验板上LED亮;如果不通过那么实验板上LED不亮;如果对某个决议有任意二到三人同意,那么此决议通过,LED亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,LED不亮。B项目目标Electronic Design Automation 11 EDA技术通过本项目,利用VerilogHDL语言完成一个基于FPGA的三人表决器设计,并下载到FPGA中进行验证,达到以下要求:1掌握EDA技术基本概念2熟悉基于FPGA的EDA设计流程。3了解CPLD/FPG
7、A的内部结构4了解QuartusII软件的基本使用方法5了解VerilogHDL语言的基本结构C.知识准备1EDA技术概述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技术不具备逻辑综合和逻辑适配的功能,因此它并不能称为真正意义上的EDA技术。EDA技术
10、的3个层次:(1)EWB、PSpice、Protel的学习作为EDA的最初级内容。(2)利用VerilogHDL完成对CPLDFPGA的开发等作为中级内容。(3)ASIC的设计作为最高级内容。Electronic Design Automation 14 EDA技术1.2EDA技术的主要特征Electronic Design Automation 15 EDA技术EDA技术主要有以下这些特征:(1)高层综合与优化的理论与方法取得了很大的进展,其结果大大缩短了复杂的ASIC的设计周期,同时提高了设计质量。(2)采用硬件描述语言(HardwareDescriptionLanguage,HDL)对电
11、子系统硬件行为、结构、数据流进行描述,目前形成了国际通用的VerilogHDL、VHDL等硬件描述语言。它们均支持不同层次的描述,使得复杂IC的描述规范化,便于传递、交流、保存与修改,并可建立独立的工艺设计文档,便于设计重用。(3)开放式的设计环境(各厂家均适合)。(4)“自顶向下”的设计方法。(5)丰富的元器件模块库。(6)具有较好的人机对话界面与标准的CAM接口。(7)建立并行设计工程框架结构的集成化设计环境,以适应当今ASIC的特点:规模大而复杂、数字与模拟电路并存、硬件与软件并存、产品上市更新快。1.3EDA技术发展历程Electronic Design Automation 16 E
12、DA技术Withthetide.EDA技术伴随着计算机、集成电路、电子系统设计的发展,经历了计算机辅助设计(ComputerAssistDesign,CAD)、计算机辅助工程设计(ComputerAssistEngineeringDesign,CAE)和电子系统设计自动化(EleetronieSystemDesignAutomation,ESDA)3个发展阶段。1.3.120世纪70年代的计算机辅助设计CAD阶段1.3.220世纪80年代的计算机辅助工程设计CAE阶段1.3.320世纪90年代电子系统设计自动化EDA阶段1.4EDA技术主要内容Electronic Design Automat
13、ion 17 EDA技术硬件描述语言硬件描述语言Verilog HDLVerilog HDL VHDLVHDL 可编程逻辑器件可编程逻辑器件 CPLDCPLDFPGAFPGAEDA软件工具2.可编程逻辑器件Electronic Design Automation 18 EDA技术 可编程逻辑器件(PLD)的定义逻辑器件:用来实现某种特定逻辑功能的电子器件,最简单的逻辑器件是与、或、非门(74LS00,74LS04等),在此基础上可实现复杂的时序和组合逻辑功能。可编程逻辑器件(PLDProgrammable Logic Device):器件的功能不是固定不变的,而是可根据用户的需要而进行改变,即
14、由编程的方法来确定器件的逻辑功能。Electronic Design Automation 19 EDA技术PLD出现的背景电路集成度不断提高SSIMSILSIVLSI计算机技术的发展使EDA技术得到广泛应用设计方法的发展自下而上自上而下用户需要设计自己需要的专用电路专用集成电路(ASICApplication Specific Integrated Circuits)开发周期长,投入大,风险大可编程器件PLD:开发周期短,投入小,风险小Electronic Design Automation 20 EDA技术PLD器件的优点集成度高,可以替代多至几千块通用集成度高,可以替代多至几千块通用IC
15、芯片芯片极大减小电路的面积,降低功耗,提高可靠性极大减小电路的面积,降低功耗,提高可靠性具有完善先进的开发工具具有完善先进的开发工具提供语言、图形等设计方法,十分灵活提供语言、图形等设计方法,十分灵活通过仿真工具来验证设计的正确性通过仿真工具来验证设计的正确性可以反复地擦除、编程,方便设计的修改和升级可以反复地擦除、编程,方便设计的修改和升级灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间灵活地定义管脚功能,减轻设计工作量,缩短系统开发时间保密性好保密性好Electronic Design Automation 21 EDA技术PLD的发展趋势向高集成度、高速度方向进一步发展最高集成度已达
16、到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,EEPROM,PAL,PLA,GAL只能完成较小规模的逻辑电路高密度,已经有超过400万门的器件EPLD ,CPLD,FPGA可用于
17、设计大规模的数字系统集成度高,甚至可以做到SOC(System On a Chip)Electronic Design Automation 24 EDA技术PLD器件的分类按结构特点基于与或阵列结构的器件阵列型PROM,EEPROM,PAL,GAL,CPLDCPLD的代表芯片如:Altera的MAX系列基于门阵列结构的器件单元型FPGAElectronic Design Automation 25 EDA技术PLD器件的分类按编程工艺熔丝或反熔丝编程器件Actel的FPGA器件体积小,集成度高,速度高,易加密,抗干扰,耐高温只能一次编程,在设计初期阶段不灵活SRAM大多数公司的FPGA器件可
18、反复编程,实现系统功能的动态重构每次上电需重新下载,实际应用时需外挂EEPROM用于保存程序EEPROM大多数CPLD器件可反复编程不用每次上电重新下载,但相对速度慢,功耗较大Electronic Design Automation 26 EDA技术PLD的逻辑符号表示方法Electronic Design Automation 27 EDA技术与门乘积项PROM结构与阵列为全译码阵列,器件的规模将随着输入信号数量n的增加成2n指数级增长。因此PROM一般只用于数据存储器,不适于实现逻辑函数。EPROM和EEPROMEDA技术Electronic Design Automation 28 El
19、ectronic Design Automation 29 EDA技术用PROM实现组合逻辑电路功能实现的函数为:固定连接点(与)编程连接点(或)PLA(可编程逻辑阵列)结构与阵列和或阵列均可编程。PLA的内部结构在简单PLD中有最高的灵活性。速度较慢,价格较高Electronic Design Automation 30 PAL(可编程阵列逻辑)结构与阵列可编程使输入项增多,或阵列固定使器件简化。或阵列固定明显影响了器件编程的灵活性Electronic Design Automation 31 Electronic Design Automation 32 EDA技术AnBnCnAnBnCn
20、AnBnCnAnBnCnAnBnAnCnBnCn用PAL实现全加器GAL(通用阵列逻辑)结构GAL器件与PAL器件的区别在于用可编程的输出逻辑宏单元(OLMC)代替固定的或阵列。可以实现时序电路。Electronic Design Automation 33 逻辑宏单元OLMCGAL器件的OLMCOutputLogicMacroCell每个OLMC包含或阵列中的一个或门组成:异或门:控制输出信号的极性D触发器:适合设计时序电路4个多路选择器Electronic Design Automation 34 输出使能选择反馈信号选择或门控制选择输出选择CPLD内部结构(Altera的MAX7000S
21、系列)Electronic Design Automation 35 EDA技术逻辑阵列块(LAB)I/O单元连线资源逻辑阵列模块中包含多个宏单元Electronic Design Automation 36 EDA技术宏单元内部结构乘积项逻辑阵列乘积项选择矩阵可编程触发器可编程的I/O单元能兼容TTL和CMOS多种接口和电压标准可配置为输入、输出、双向、集电极开路和三态等形式能提供适当的驱动电流降低功耗,防止过冲和减少电源噪声支持多种接口电压(降低功耗)1.20.5um,5V0.35um,3.3V0.25um,internal 2.5V,I/O3.3V0.18um,internal 1.8V
22、,I/O2.5V and 3.3VElectronic Design Automation 37 EDA技术可编程连线阵列在各个逻辑宏单元之间以及逻辑宏单元与I/O单元之间提供信号连接的网络CPLD中一般采用固定长度的线段来进行连接,因此信号传输的延时是固定的,使得时间性能容易预测。Electronic Design Automation 38 EDA技术FPGA结构CPLD基于乘积项,即可编程的与阵列和固定的或阵列FPGA基于可编程的查找表(LUT)Electronic Design Automation 39 EDA技术查找表的基本原理Electronic Design Automatio
23、n 40 EDA技术实际逻辑电路LUT的实现方式a,b,c,d输入逻辑输出地址RAM中存储的内容00000000000001000010.0.01111111111N个输入的逻辑函数需要2的N次方的容量的SRAM来实现,一般多个输入的查找表采用多个逻辑块级连的方式FPGA中的嵌入式阵列(EAB)可灵活配置的RAM块用途实现比较复杂的函数的查找表,如正弦、余弦等。可实现多种存储器功能,如RAM,ROM,双口RAM,FIFO,Stack等灵活配置方法:2568,也可配成5124Electronic Design Automation 41 EDA技术FPGA与CPLD的区别CPLDFPGA内部结构
24、ProducttermLookup Table程序存储内部EEPROMSRAM,外挂EEPROM资源类型组合电路资源丰富触发器资源丰富集成度低高使用场合完成控制逻辑能完成比较复杂的算法速度快慢其他资源EAB,锁相环保密性可加密一般不能保密Electronic Design Automation 42 FPGA与CPLD的区别FPGA采用SRAM进行功能配置,可重复编程,但系统掉电后,SRAM中的数据丢失。因此,需在FPGA外加EPROM,将配置数据写入其中,系统每次上电自动将数据引入SRAM中。CPLD器件一般采用EEPROM存储技术,可重复编程,并且系统掉电后,EEPROM中的数据不会丢失,
25、适于数据的保密。Electronic Design Automation 43 EDA技术FPGA与CPLD的区别FPGA器件含有丰富的触发器资源,易于实现时序逻辑,如果要求实现较复杂的组合电路则需要几个CLB结合起来实现。CPLD的与或阵列结构,使其适于实现大规模的组合功能,但触发器资源相对较少。Electronic Design Automation 44 EDA技术FPGA与CPLD的区别FPGA为细粒度结构,CPLD为粗粒度结构。FPGA内部有丰富连线资源,CLB分块较小,芯片的利用率较高。CPLD的宏单元的与或阵列较大,通常不能完全被应用,且宏单元之间主要通过高速数据通道连接,其容量
26、有限,限制了器件的灵活布线,因此CPLD利用率较FPGA器件低。Electronic Design Automation 45 EDA技术FPGA与CPLD的区别FPGA为非连续式布线,CPLD为连续式布线。FPGA器件在每次编程时实现的逻辑功能一样,但走的路线不同,因此延时不易控制,要求开发软件允许工程师对关键的路线给予限制。CPLD每次布线路径一样,CPLD的连续式互连结构利用具有同样长度的一些金属线实现逻辑单元之间的互连。连续式互连结构消除了分段式互连结构在定时上的差异,并在逻辑单元之间提供快速且具有固定延时的通路。CPLD的延时较小。Electronic Design Automati
27、on 46 EDA技术3基于CPLD/FPGA的EDA设计流程Electronic Design Automation 47 EDA技术 4常用EDA工具软件Electronic Design Automation 48 EDA技术目前世界上有十几家生产目前世界上有十几家生产CPLDCPLDFPGAFPGA的公司,最大的三家是:的公司,最大的三家是:AlteraAltera、XilinxXilinx和和LatticeLattice,其中,其中AlteraAltera和和XilinxXilinx两家两家公司共占有公司共占有6060以上的市场份额。对于以上的市场份额。对于CPLDCPLDFPGAF
28、PGA开发软件,国内很多人喜开发软件,国内很多人喜欢用欢用AlteraAltera公司的公司的MAX+plus IIMAX+plus II、Quartus Quartus II II,考虑到,考虑到Quartus IIQuartus II是是MAX+plus IIMAX+plus II的升的升级产品,所以本书级产品,所以本书CPLDCPLDFPGAFPGA的常用的常用EDAEDA工具主要介绍工具主要介绍Quartus IIQuartus II。4.1 Altera EDA4.1 Altera EDA软件工具软件工具Quartus IIQuartus II简简介介 QuartusQuartus是
29、是AlteraAltera公司新近推出的公司新近推出的EDAEDA软件工具,其设计软件工具,其设计工具完全支持工具完全支持VerilogVerilog、VHDLVHDL的设计流程,其内部嵌有的设计流程,其内部嵌有VerilogVerilog、VHDLVHDL逻辑综合器。第三方的综合工具,如逻辑综合器。第三方的综合工具,如Leonardo SpectrumLeonardo Spectrum、Synplify ProSynplify Pro、FPGA Compiler IIFPGA Compiler II有着更好的综合效果,因此通有着更好的综合效果,因此通常建议使用这些工具来完成常建议使用这些工具
30、来完成VHDLVHDLVerilogVerilog源程序的综合。源程序的综合。Quartus IIQuartus II可以直接调用这些第三方工具。同样,可以直接调用这些第三方工具。同样,Quartus IIQuartus II具具备仿真功能,但也支持第三方的仿真工具,如备仿真功能,但也支持第三方的仿真工具,如ModelsimModelsim。此。此外,外,Quartus IIQuartus II为为Altera DSPAltera DSP开发包进行系统模型设计提供了集开发包进行系统模型设计提供了集成综合环境,它与成综合环境,它与MatlabMatlab和和DSP BuilderDSP Buil
31、der结合可以进行基于结合可以进行基于FPGAFPGA的的DSPDSP系统开发,是系统开发,是DSPDSP硬件系统实现的关键硬件系统实现的关键EDAEDA工具。工具。Quartus IIQuartus II还可与还可与SOPC BuilderSOPC Builder结合,实现结合,实现SOPCSOPC系统开发系统开发 Electronic Design Automation 49 EDA技术QuartusII详细设计流程1.建立新工程并指定目标器件或器件系列。2. 使用标准文本编辑程序建立Verilog HDL或 VHDL 设计文件。 若需要的话,可以对运用库函数进行实例化或使用 MegaWi
32、zard Plug-In Manager (Tools 菜单)建立宏功能模块的自定义变量。3. 使用其中一个 Quartus II 支持的 EDA 综合工具综合您的设计,并生成EDIF 网表文件 (.edf) 或 VQM 文件 (.vqm)。4. (可选)使用其中一个 Quartus II 支持的仿真工具对您的设计执行功能仿真。5. 在 Quartus II Settings 对话框(Assignments 菜单)中,指定选项和库映射文件,以处理使用其它设计输入 综合工具或通过 MegaWizard Plug-In Manager 生成的 EDIF 网表文件 (.edf)、Verilog 设计
33、文件 (.v)、VHDL 设计文件(.vhd)、VQM 文件 (.vqm) 和 AHDL 文本设计文件 (.tdf)。6. (可选)在 Quartus II Settings 对话框中,为Verilog 输出文件 (.vo)、生成 VHDL 输出文件(.vho)、标准延时格式输出文件 (.sdo)、标记模型文件、PartMiner XML 格式文件 (.xml) 和 IBIS 输出文件 (.ibs) 指定选项。Electronic Design Automation 50 EDA技术QuartusII详细设计流程7. 使用 Quartus II 软件编译设计并进行布局布线。 可以执行全编译,或
34、者分别运行编译器模块: 运行 Analysis & Synthesis,对设计进行综合,并将设计中的函数映射到正确的库模块上。 运行 Fitter,对设计进行布局布线。 运行 Timing Analyzer,对设计进行时序分析。 运行 EDA Netlist Writer,生成与其它 EDA 工具配合使用的输出文件。 运行 Assembler,为您的设计建立编程文件。8. (可选)使用其中一个 Quartus II 支持的 EDA 时序分析工具对设计进行时序析。9. (可选)使用其中一个 Quartus II 支持的 EDA 仿真工具对设计进行时序仿真。10. (可选)使用其中一个 Quart
35、us II 支持的 EDA 板级验证工具进行板级验证。11. (可选)使用其中一个 Quartus II 支持的 EDA 形式验证工具进行形式验证,确保 Quartus 布线后网表与综合网表等同。12. (可选)使用其中一个 Quartus II 支持的 EDA 再综合工具进行板级再综合。13. 使用编程文件、Programmer 和 Altera 硬件编程器对器件进行编程;或将编程文件转换为其它文件格式以供嵌入式处理器等其它系统使用。Electronic Design Automation 51 EDA技术支持多种设计输入方法Electronic Design Automation 52 E
36、DA技术?5硬件描述语言Electronic Design Automation 53 EDA技术.常用硬件描述语言常用硬件描述语言.Verilog HDLVerilog HDL基本结构基本结构Electronic Design Automation 54 EDA技术5.1VerilogHDL概述5.1.1常用硬件描述语言简介常用硬件描述语言有Verilog HDL、VHDL和ABEL语言。VerilogHDL起源于Verilog-XL专用于集成电路的设计、仿真与验证,VHDL起源于美国国防部的VHSIC,ABEL则来源于可编程逻辑器件的设计。Electronic Design Automat
37、ion 55 EDA技术5.1.2VerilogHDL及其优点VerilogHDL(以下常简称为Verilog)最初由GatewayDesignAutomation公司(简称GDA)的PhilMoorby在1983年创建。此后VerilogHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1995年,IEEE制定了VerilogHDL的第一个国际标准IEEEStd1364-1995,即Verilog1.0。2001年,IEEE发布了VerilogHDL的第二个标准版本(Verilog2.0)IEEEStd1364-2001,简称为Verilog-2001标准。现在,V
38、erilogHDL和VHDL作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VerilogHDL与VHDL语言将承担起几乎全部的数字系统设计任务。Electronic Design Automation 56 EDA技术VerilogHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VerilogHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言(C语言)。VerilogHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系
39、统)分成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VerilogHDL系统设计的基本点。应用VerilogHDL进行工程设计的优点是多方面的,具体如下:Electronic Design Automation 57 EDA技术(1)与其他的硬件描述语言相比,VerilogHDL具有更强的行为描述能力。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VerilogHDL具有丰富的仿
40、真语句和库函数,使得在任何大系统的设计早期,就能查验设计系统的功能可行性,随时可对系统进行仿真模拟,对整个工程的结构和功能可行性做出判断。(3)VerilogHDL语句的行为描述能力和程序结构,决定了它具有支持大规模设计的分解和已有设计的再利用功能。VerilogHDL中设计模块的概念、IP核的概念为设计的分解和并行工作提供了有利的支持。Electronic Design Automation 58 EDA技术(4)用VerilogHDL完成一个确定的设计,可以利用EDA工具进行逻辑综合优化,并自动把VerilogHDL描述设计转变成门级网表。(5)VerilogHDL对设计的描述具有相对独立
41、性。设计者可以不懂硬件的结构,也不必管最终设计的目标器件是什么,而进行独立的设计。(6)由于VerilogHDL具有类似子程序调用等功能,对于完成的设计,在不改变源程序的条描述语句和件下,只需改变类属参量或函数,就能轻易地改变设计的规模和结构。Electronic Design Automation 59 EDA技术5.1.3VerilogHDL程序设计约定便于程序的阅读和调试,本书对VerilogHDL程序设计特作如下约定:(1)语句结构描述中方括号“”内的内容为可选内容。(2)对于VerilogHDL的编译器和综合器来说,程序文字的大小写敏感。本书一般使用小写。(3)程序中的注释使用双斜线
42、“/”。在VerilogHDL程序的任何一行中,双斜线“/”后的文字都不参加编译和综合。(4)为了便于程序的阅读与调试,书写和输入程序时,使用层次缩进格式,同一层次的对齐,低层次的较高层次的缩进两个字符。Electronic Design Automation 60 EDA技术5.1.4VerilogHDL程序设计举例1.2选1多路选择器的VerilogHDL程序modulemux21a(a,b,s,y);inputa,b,s;outputy;assigny=s?b:a;endmodule以上是2选1多路选择器的VerilogHDL程序完整描述。图5.1是此描述对应的逻辑图,图中,a和b分别为
43、两个数据输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。“mux21a”是设计者为此器件取的名称。图5.2是对以上程序综合后获得的门级电路,可以认为是多路选择器mux21a的内部电路结构。图5.1mux21a实体图5.2mux21a结构体Electronic Design Automation 61 EDA技术2.说明及分析可见,此电路的VerilogHDL描述由两大部分组成:(1)端口定义部分,电路输入输出接口。图5.1可以认为是实体的图形表达。(2)功能描述部分,定义输入是如何影响输出。图5.2是此结构体的原理图表达。Electronic Design Automa
44、tion 62 EDA技术程序中的逻辑描述是用条件运算符?:表达的。它的含义是,当满足条件s=0,即s为低电平时,a输入端的信号传送至y,否则(即s为高电平时)b输入端的信号传送至y。2选1多路选择器的电路功能可以从图5.3的时序波形中看出,分别向a和b端输入两个不同频率的信号fa和fb(设fafb),当s为高电平时,y输出fb,而当s为低电平时,y输出fa。显然,图5.3的波形证实了VerilogHDL逻辑设计的正确性。图5.3mux21a功能时序波形图Electronic Design Automation 63 EDA技术5.2VerilogHDL程序基本结构一个相对完整的Verilog
45、HDL程序的比较固定的结构。通常由三部分组成,包含模块、端口定义、逻辑功能描述。1、以Verilog语言的关键词module_endmodule引导的完整的电路模块或称“模块”的描述,模块对应着硬件电路上的逻辑实体。2、以input和output等关键词引导的对模块的外部端口的语句。3、以关键词assign引导的赋值语句负责描述模块内部的逻辑功能或电路结构;always块来描述电路功能。Electronic Design Automation 64 EDA技术5.2.1模块表达一个电路模块是以Verilog的关键词module_endmodule引导的。Verilog完整的、可综合的程序结构能
46、够完整地描述一个电路模块,或一片专用集成电路ASIC的端口结构和电路功能,即无论是一片74LS138还是一片CPU,都必须包含在模块描述语句module_endmodule中。模块语句的一般格式如下:module模块名(模块端口名);模块端口描述.模块功能描述.endmodule以上说明,任一可综合的最基本的模块都必须以关键词module开头,在module右侧(空一格或多格)是模块名。模块名属于标识符,具体取名由设计者自定。Electronic Design Automation 65 EDA技术5.2.2端口语句、端口信号名和端口模式端口或端口信号是模块与外部电路连接的通道,这如同一个芯片
47、必须有外部引脚一样,必须具有输入输出或双向口等引脚,以便与外部电路交换信息。通常,紧跟于module语句下面的是端口语句和端口信号名,它们将对module旁的端口列表中的所有端口名作更详细更具体的说明。端口定义关键词有三种:input、output、inout。端口定义语句的一般格式如下:input端口名1,端口名2,.;output端口名1,端口名2,.;inout端口名1,端口名2,.;inputmsb:lsb端口名1,端口名2,.;端口关键词旁的端口名可以有多个,端口名间用逗号分开,最后加分号。Electronic Design Automation 66 EDA技术5.2.3内部信号说
48、明在模块内部用到的和与端口有关的wire和reg类型变量的声明,如:regwidth-1:0R变量1,R变量2,;wirewidth-1:0W变量1,W变量2,;Electronic Design Automation 67 EDA技术5.2.4功能定义模块中最重要的部分是逻辑功能定义部分。有3种方法可在模块中产生逻辑:1.用assign声明语句关键词assign可以引导不同形式的赋值语句,例如简单的赋值语句:assigny=a;/将信号a赋值给yassigny=a&b;/将信号a和信号b逻辑相与后赋值给y由此可见,连续赋值语句的基本格式如下:assign目标变量名=驱动表达式;Electro
49、nic Design Automation 68 EDA技术2.用always块如:always(posedgeclkorposedgeclr)beginif(clr)q=0;elseif(en)q程序-Altera-QuartusII9.0,运行QuartusII软件。图2-4QUARTUSII软件运行界面EDA技术Electronic Design Automation 141 1 1建立工程文件建立工程文件(2)选择软件中的菜单File-NewProjectWizard,新建一个工程。图2-5新建工程对话框EDA技术Electronic Design Automation 142 1 1
50、建立工程文件建立工程文件(3)点击图2-5中的NEXT进入工作目录,工程名的设定对话框如图2-6所示。图2-6指定工程名称及工作目录EDA技术Electronic Design Automation 143 1 1建立工程文件建立工程文件(4)点击NEXT,进入下一个设定对话框,如图2-7所示。器件选择对话框如图2-8所示。这里我们以选用CycloneII系列芯片EP2C5Q208C8为例进行介绍。确定芯片后点击NEXT进入EDAtool对话框设置。图2-7选择添加设计文件对话框图2-8器件选择界面图2-9EDATOOL对话框EDA技术Electronic Design Automation
51、144 1 1建立工程文件建立工程文件(5)按默认选项,点击NEXT出现新建工程以前所有的设定信息,如图2-10所示,点击FINISH完成新建工程的建立。图2-10新建工程信息EDA技术Electronic Design Automation 145 2. 2.建立图形设计文建立图形设计文件件(1)在创建好设计工程后,选择File-NEW菜单,出现图2-11所示的新建设计文件类型选择窗口。图2-11新建设计文件选择窗口EDA技术Electronic Design Automation 146 (2)在New对话框(图2-11)中选择DesignFiles下的BlockDiagram/Schem
52、aticFile,点击OK按钮,打开图形编辑器对话框,如图2-12所示。2. 2.建立图形设计文建立图形设计文件件图2-12QUARTUSII图形编辑器对话框EDA技术Electronic Design Automation 147 (3)在这里以用原理图输入设计一个三八译码器为例,介绍基本单元符号输入方法的步骤。在图2-12所示的图形编辑器窗口的工件区双击鼠标的左键,或点击图中的符号工具按钮,或选择菜单Edit-InsertSymbol,则弹出如图2-13所示的Symbol对话框。2. 2.建立图形设计文建立图形设计文件件图2-13Symbol对话框EDA技术Electronic Desig
53、n Automation 148 2.建立图形设计文件(4)用鼠标点击单元库前面的“+”号,展开单元库,用户可以选择所需要的图元或符号,该符号则显示在右边的显示符号窗口,用户也可以在符号名称里输入你所需要的符号名称,点击OK按钮,所选择的符号将显示在图形编辑器的工件工域。(5)参考图2-14所示,将要选择的器件符号放置在图形编辑器的工件区域,用正交节点工具将元件连接起来,然后定义端口的名称。图2-14设计文件的输入EDA技术Electronic Design Automation 149 (6)完成图形编辑的输入之后,需要保存设计文件或重新命名设计文件。选择File-SaveAs项,出现如图2
54、-15所示对话框,选择好文件保存目录,并在文件名栏输入设计文件名。2.建立图形设计文件图2-15保存设计文件对话框EDA技术Electronic Design Automation 150 3对设计文件进行编译QuartusII编译器窗口包含了对设计文件处理的全过程。在QuartusII软件中选择Processing-CompilerTool菜单项,则出现QuartusII的编译器窗口,如图2-16所示。整个编译完成,软件会提示编译成功,如图2-17所示。图2-16QUARTUSII编译器窗口图2-17全编译成功界面EDA技术Electronic Design Automation 151 4
55、.对设计文件进行仿真(1)创建一个仿真波形文件,选择QuartusII软件File-New,进入新建文件对话框。如图2-18所示。在Verification/DebuggingFiles项目中选择VectorWaveformFile,点击OK按钮,则打开了一个空的波形文件编辑器窗口,如图2-19所示。图2-18新建文件对话框图2-19波形编辑器EDA技术Electronic Design Automation 152 4.对设计文件进行仿真(2)设置仿真结束时间,波形编辑器默认的仿真结束时间为1uS,根据仿真需要,可以自由设置仿真的结束时间。选择QuartusII软件的Edit-EndTime
56、命令,弹出线路束时间对话框,在Time框内输入仿真结束时间,点击OK按钮完成设置。(3)加入输入、输出端口,在波形编辑器窗口左边的端口名列表区双击鼠标左键,或是点击鼠标右键,在弹出的右键菜单中选择InsertNodeorBus命令,在弹出的InsertNodeorBus对话框如图2-20所示界面中点击NodeFinder按钮。图2-20InsertNodeorBus对话框EDA技术Electronic Design Automation 153 在出现的NodeFinder界面中,如图2-21所示,在Filter列表中选择Pins:all,在Named窗口中输入“*”,点击List在Nodes
57、Found窗口出现所有信号的名称,点击中间的按钮则SelectedNodes窗口下方出现被选择的端口名称。双击OK按钮,完成设置,回到图2-20所示的InsertNodeorBus对话框,单击OK按钮,所有的输入、输出端口将会在端口名列表区内显示出来,如图2-22所示。图2-21NodeFinder对话框图2-22在波形编辑器中加入端口4.对设计文件进行仿真EDA技术Electronic Design Automation 154 (4)编辑输入端口波形,即指定输入端口的逻辑电平变化,在如图2-22所示的波形编辑窗口中,选择要输入波形的输入端口如A端口,在端口名显示区左边的波形编辑器工具栏中有
58、要输入的各种波形,其按钮说明如图2-23所示。根据仿真的需要输入波形。完成后如图2-24所示。最后选择软件的File-Save进行保存。图2-23波形编辑器工具栏图2-24编辑输入端口波形4.对设计文件进行仿真EDA技术Electronic Design Automation 155 (5)指定仿真器设置,在仿真过程中有时序仿真和功能仿真之分,在这里介绍功能仿真。在QUARTUSII软件中选择Processing-SimulatorTool命令,打开仿真器工具窗口,如图2-25所示。图2-25仿真器工具窗口4.对设计文件进行仿真EDA技术Electronic Design Automation
59、 156 按图2-25上的提示,首先产生功能仿真网表文件,点击产生功能仿真网表的按钮GenerateFunctionalSimulationNetlist,产生功能仿真网表,然后点击开始仿真的START按钮开始进行仿真,直到仿真进度条为100%完成仿真。点击仿真报告窗口按钮Report,观察仿真波形。如图2-26所示。图2-26仿真波形4.对设计文件进行仿真EDA技术Electronic Design Automation 157 5.管脚分配在前面选择好一个合适的目标器件(在这个实验中选择为EP2C5Q208C8),完成设计的分析综合过程,得到工程的数据文件以后,需要对设计中的输入、输出引脚
60、指定到具体的器件管脚号码,指定管脚号码称为管脚分配或管脚锁定。这里介绍两种方法进行管脚锁定。(1)点击Assignments菜单下面的Pins,进入到PinPlanner引脚分配窗口,如图2-27所示。在每个端口的Location处双击,再在下拉框中选择相应的引脚号。图2-27管脚分配EDA技术Electronic Design Automation 158 针对实验开发系统CycloneIIEP2C5Q208C8芯片,依照表2-3和表2-4所示的硬件与FPGA的管脚连接表(或附录),对所有端口进行管脚分配,如图2-28所示。5.管脚分配图2-28所有引脚全部分配结束后的软件窗口EDA技术El
61、ectronic Design Automation 159 (2)点击Assignments菜单下面的PinPlanner(也可直接点击工具栏上的引脚分配按钮)出现如图2-29所示的所选目标芯片的管脚分布图。5.管脚分配图2-29目标芯片的管脚分布图EDA技术Electronic Design Automation 160 与上面的方法相同,依照表2-3和表2-4所示的硬件与FPGA的管脚连接表(或附录),如端口A对应的管脚为PIN_118,则双击PIN_118管脚出现如图2-30所示对话框。图2-30管脚分配对话框5.管脚分配EDA技术Electronic Design Automatio
62、n 161 在图2-30对话框中的NodeName框中输入对应的端口名A或者通过下拉菜单选取对应的端口名称A,点击OK按钮,完成对端口A的管脚分配。用相同的方法,依照下表2-5对其它端口进行管脚分配,管脚分配完后,如下图2-31所示。图2-31所有引脚全部分配结束后的软件窗口端口名使用模块信号对应FPGA管脚说明A拨码开关K3PIN_118译码器的三位输入B拨码开关K2PIN_127C拨码开关K1PIN_128D0LED灯LED1PIN_142译码器的八位输出D1LED灯LED2PIN_141D2LED灯LED3PIN_139D3LED灯LED4PIN_138D4LED灯LED5PIN_137
63、D5LED灯LED6PIN_135D6LED灯LED7PIN_134D7LED灯LED8PIN_133表2-4端口管脚分配表5.管脚分配EDA技术Electronic Design Automation 162 6从设计文件到目标器件的加载(1)使用下载电缆将PC机与实验系统连接起来。(2)选择QuartusII软件的Tool-Programmer命令,进行编程器窗口,如图2-32所示,若是初次安装QuartusII,没有设置编程硬件,则编程硬件类型为NoHardware,需要对编程硬件进行设置。点击HardwareSetup编程硬件设置按钮,进入如图2-33所示的编程硬件设置对话框。图2-3
64、2编程器窗口图2-33编程器硬件设置对话框EDA技术Electronic Design Automation 163 (3)若是USB下载方式,在Currentlyselectedhardware栏选择USB-Blaster,如图2-34所示,利用计算机的USB口直接对FPGA进行配置。如果使用的是并口下载线,则点击AddHardware按钮,进入图2-35,从Hardwaretype列表中选择所需要硬件类型,点击OK按钮,完成对硬件类型的设置。回到编程器硬件设置窗口,点击Close按钮退出设置。则在编程器对话框中的编程硬件类型会出现刚才选取的编程器硬件。图2-34选择USB-Blaster图
65、2-35编程硬件选择对话框6从设计文件到目标器件的加载EDA技术Electronic Design Automation 164 任务2利用原理图输入法设计四位加法器1、打开QUARTUSII软件,新建一个工程adder4bit。2、建完工程之后,再新建一个BlockDiagram/SchematicFile。在原理图编辑窗口绘制如图2-36的半加器原理图。点击File-Save,将已设计好的图文件取名为:h_adder,并存在工程文件夹内。图2-36半加器原理图3、将h_adder设置成顶层实体。在诸多文件打开的状态下,选中h_adder.bdf为当前文件。点击ProjectSetasTop
66、-LevelEntity,或右键SetasTop-LevelEntity。4、编译。如果发现有错,排除错误后再次编译。直到编译通过就可以进行波形仿真。EDA技术Electronic Design Automation 165 任务2利用原理图输入法设计四位加法器5、时序仿真。建立波形文件,设置波形参量,再保存(注意:Quartus在波形仿真时,只支持一个与工程名同名的波形文件,所以在对多个文件进行波形仿真时,对波形文件都取工程名进行保存,后缀名为.vwf;若确实想保留多个波形文件,则可以分别命名,想对哪个波形文件进行仿真时,点击Processing-simulationTool,在Simula
67、tioninput中输入待仿真的波形文件即可,如图2-37所示),最后运行波形仿真。图2-38是仿真运算完成后的时序波形。观察分析波形,图2-38显示的半加器的时序波形是正确的。此时我们就可以将半加器h_adder封入库生成半加器元件了,为后续生成1位全加器做准备。图2-37仿真工具界面图2-38仿真结果EDA技术Electronic Design Automation 166 任务2利用原理图输入法设计四位加法器6、封装入库。封将仿真调试好的半加器封装入库。打开h_adder.bdf文件,在File-Create/update如图2-39所示。图2-39元件封装入库7、全加器原理图设计。以上
68、实验步骤我们主要是生成了一个半加器,我们再用同样的方法按照图2-40中1位全加器原理图生成一个1位全加器元件(注意生成的半加器在元器件库的Project选项下,如图2-41)。图2-401位全加器原理图图2-41Symbol对话框EDA技术Electronic Design Automation 167 8、全加器仿真。9、四位加法器原理图设计。根据四位加法器的原理画出如图2-42的四位加法器原理图。为方便观察输出波形,四位加法器输入输出采用总线画法,总线命名为被加数a3.0,加数命名为b3.0,同时要为每根总线分支加上网络名,方法为选定某总线分支后,右键-Properties,在弹出的Nod
69、eProperties对话框(如图2-43)中输入总线分支网络名,如a0,a1,。图2-42四位加法器原理图图2-43节点添加网络名任务2利用原理图输入法设计四位加法器EDA技术Electronic Design Automation 168 任务2利用原理图输入法设计四位加法器10、四位全加器仿真,仿真波形如图2-44。注意仿真结果观察将数值以无符号数形式输出最好,设置方法为选定某个端口后,右键-Properties,在图2-45对话框中选择UnsignedDecimal。图2-44四位加法器仿真波形图2-45节点数据的进制选择EDA技术Electronic Design Automatio
70、n 169 11、引脚锁定。编译仿真无误后,依照按键、LED与FPGA的管脚连接表进行管脚分配,表2-5是管脚分配表。分配完成后,再进行全编译一次,以使管脚分配生效。端口名使用模块信号对应FPGA管脚说明a3按键S1PIN_1074位加法器的被加数输入a2按键S2PIN_108a1按键S3PIN_110a0按键S4PIN_112b3按键S5PIN_1134位加法器的加数输入b2按键S6PIN_114b1按键S7PIN_115b0按键S8PIN_116sum4LED灯LED1PIN_1424位加法器的和输出sum3LED灯LED2PIN_141sum2LED灯LED3PIN_139sum1LED
71、灯LED4PIN_138sum0LED灯LED5PIN_137表2-5端口管脚分配表任务2利用原理图输入法设计四位加法器EDA技术Electronic Design Automation 170 12、不用的管脚设置为输入高阻态设置方法如下:(1)单击菜单栏Assignments-Device(2)单击对话框右侧中间的DeviceandPinOptions按钮(3)在UnusedPins选项卡中,将Reserveallunusedpins下拉菜单选项由默认的Asoutputdrivingground(输出低电平)改为Asinputtri-stated(输入高阻态)。(值得注意的是,做完这样的设
72、置后,一定要重新编译再下载,才会生效!)13、编程下载。用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的设计思想一致。任务2利用原理图输入法设计四位加法器E.考核评价1.考核办法Electronic Design Automation 172 EDA技术学生在规定时间内,利用原理图输入法完成四位加法器设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Automation 173 EDA技术(1)完成四位加法器的原理图设计,原理图设计合理,布局美观,器件选择符合要求,命名规范,符合设计需求。
73、(2)掌握QuartusII9.0原理图输入方法操作流程,能熟练使用原理图设计方法进行四位加法器的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.0软件进行四位加法器的时序仿真,仿真结果正确,并能对仿真结果进行详细分析。(4)会添加约束文件,进行四位加法器管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成四位加法器下载配置,编程下载成功。(6)设计报告按时上交,原理图正确,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计四位加法器,并能指导其他成员进行相关的实践操作。3.评分标准Electronic Design Automatio
74、n 174 EDA技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,完成以上(1)-(6)项操作,结果无重大失误。D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 176 EDA技术1利用原理图方法设计四位减法器2利用原理图方法设计八位加法器Thanks for your time Thanks for your time !项目三:数字电子钟设计Electronic Design A
75、utomation 178 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A.项目任务项目任务Electronic Design Automation 181 EDA技术本项目利用FPGA器件和VerilogHDL语言设计一个含时/分/秒且带数码管显示的时钟。系统设计要求:(1)系统时钟为50MHz;(2)具有时、分、秒计数显示功能,且以24小时循环计时;(3)用6个七段数码管(共阳极)来显示时间;(4)具有清零功能。B项目目标Electronic Design Automation 182 EDA技术通过数字电子钟设计项目训练及相关知识学习,达到如
76、下目标:1、理解数字电子钟设计方案2、掌握VerilogHDL语言的语言要素与基本语句3、学会利用VerilogHDL语言设计分频电路4、会利用VerilogHDL设计常用组合与时序逻辑电路5、能利用学习开发板对设计电路进行下载与调试6、能按照现场管理要求(整理、整顿、清扫、清洁、素养、安全、环保、节能)安全文明生产。7、会查找相关资料。8、会撰写项目报告并答辩。9、具有团队合作精神,具有一定的组织协调能力。C.知识准备Verilog除了具有类似于计算机高级语言所具备的一些文字规则外,还包含许多特有的规则和表达方式,在此作进一步的细述和归纳。在Verilog程序运行过程中,其值不能被随意改变的
77、量,称为常量或常数,常数主要有3种类型,即整数类型(integer),实数类型(real)和字符串类型(strings),其中的整数型常量是可以综合的,而实数型和字符串型常量是不可综合的。与整数类型相关的数字有多种表达方式,以下列举它们的类型及其表达规范。一、VerilogHDL语言要素1、VerilogHDL文字规则在VerilogHDL中,整型常量即整常数有以下四种进制表示形式:1)二进制整数(b或B)2)十进制整数(d或D)3)十六进制整数(h或H)4)八进制整数(o或O)数字表达方式有以下三种:1)这是一种全面的描述方式。2)在这种描述方式中,数字的位宽采用缺省位宽(这由具体的机器系统
78、决定,但至少32位)。3)在这种描述方式中,采用缺省进制十进制。在表达式中,位宽指明了数字的精确位数。例如:一个4位二进制数的数字的位宽为4,一个4位十六进制数的数字的位宽为16(因为每单个十六进制数就要用4位二进制数来表示)。(1)整数实数也都属于十进制的数,通常,他们的表述必须带有小数点,但小数点两侧必须有数字,例如数值“17.”的表述方法是错误的,以下的表述都是正确的:3.1415926,23_456_789.567_3(=23456789.5673),25.86E-2(=0.2586)Verilog语言可以将实数转换为整数,方法是将实数通过四舍五入的方法转化为最接近的整数,例如,23.
79、35和23.356都转换为整数23,23.53和23.536都转换为整数24,-23.35转换为-23。(2)实数Verilog中有两种类型的字符串:文字字符串和数位字符串。字符串则是一维的字符数组,须放在双引号中。(1)文字字符串文字字符串是用双引号引起来的一串文字,字符串不能分成多行书写。如:ERROR,Hello,Robot!,X。字符串的作用主要是用于仿真时,显示一些相关的信息,或者指定显示的格式。字符串变量属于reg型变量,其宽度为字符串中字符的个数乘以8。(2)数位字符串数位字符串也称位矢量,数位字符串与文字字符串相似,但所代表的是二进制、八进制或十六进制的数组。如前所示。(3)字
80、符串(4)标识符标识符是Verilog语言中各种成分的名称,这些成分包括常量、变量、端口或参数等。定义标识符需要遵循以下规则:有效的字符:包括26个大小写英文字母,数字09、“$”以及下划线“_”等,或它们的组合。标识符最长可以包含1023个字符。任何标识符必须以英文字母或下划线开头。标识符中的英文字母区分大小写(注意,这与VHDL不同)。不允许包含图形符号(如回车符、换行符等),也不允许包含空格符。Verilog的保留字不能用于作为标识符使用。以下是几种合法和非法标识符的示例。合法的标识符:Decoder_1,FFT_,_abc123,REG,_Decoder_1,RyY_RST_,Data
81、_BUS非法的标识符:2FET-起始为数字Not-RST-符号“-”不能作为标识符的构成reg-关键词不能作为标识符res*-使用了无效字符“*”(4)标识符VerilogHDL中总共有十九种数据类型,数据类型是用来表示数字电路硬件中的物理连接、数据储存和传输单元等。最基本的数据类型有:reg型、wire型、integer型、parameter型其它的类型如下:large型、medium型、scalared型、time型、small型、tri型、tri0型、tri1型、triand型、trior型、trireg型、vectored型、wand型、wor型。2、VerilogHDL数据类型在程序
82、运行过程中,其值不能被改变的量称为常量。在VerilogHDL中用parameter来定义常量,即用parameter来定义一个标识符代表一个常量,称为符号常量,即标识符形式的常量,采用标识符代表一个常量可提高程序的可读性和可维护性。parameter型数据是一种常数型的数据,其说明格式如下:parameter参数名1表达式,参数名2表达式,,参数名n表达式;parameter是参数型数据的关键词,关键词后跟着一个用逗号分隔开的赋值语句表。(1)parameter参数型(2)parameter参数型在每一个赋值语句的右边必须是一个常数表达式。也就是说,该表达式只能包含数字或先前已定义过的参数。
83、见下列:parametermsb=7;/定义参数msb为常量7parametere=25,f=29;/定义二个常数参数parameterr=5.7;/声明r为一个实数型参数parameterbyte_size=8,byte_msb=byte_size-1;/用常数表达式赋值parameteraverage_delay=(r+f)/2;/用常数表达式赋值Verilog的net网线数据类型包含多种不同功能类型的子类型,其中可综合的子类型仅有wire、tri、supply0和supply1四种。在这里,wire类型最常用。1)wire型wire型数据常用来表示用于以assign关键字指定的组合逻辑信
84、号。wire型信号的格式同reg型信号的很类似。其格式如下:wiren-1:0数据名1,数据名2,数据名i;例子:wirea;/定义了一个一位的wire型数据wire7:0b;/定义了一个八位的wire型数据wire4:1c,d;/定义了二个四位的wire型数据(2)net网线类型(2)net网线类型2)其它net型tri和wire唯一的区别是名称书写上的不同,其功能和使用方法完全一样。对于Verilog综合器而言,对tri型和wire型变量的处理也完全相同。定义为tri型的目的仅仅是为了增加程序的可读性,表示该信号综合后的电路具有三态的功能。supply0和supply1类型分别表示地线(逻
85、辑0)和电源线(逻辑1)。其它一些类型还有tri0(下拉类型)、tri1(上拉类型)、wand(线与类型驱动)、wor(线或类型驱动)、trior(三态线或类型)等。(3)register寄存器类型register类型或variable类型变量除了可以描述组合电路外还具有寄存特性,即具有在接受下一次赋值前,可以保持原值不变的特性。Verilog语言中的variable类型包含五种不同的数据类型,但仅reg和integer类型是可综合的。1)reg型寄存器是数据储存单元的抽象。寄存器数据类型的关键字是reg。通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。reg型数据的格式如
86、下:regn-1:0数据名1,数据名2,数据名i;或regn:1数据名1,数据名2,数据名i;(3)register寄存器类型2)integer型大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。(4)memory存储器型VerilogHDL通过对reg型变量建立数组来对存储器建模,可以描述RAM型存储器,ROM存储器和reg文件。数组中的每一个单元通过一个数组索引进行寻址。在Verilog语言中没有多维数组存在。memory型数据是通过扩展reg型数据的地址范围来生成的。其格式如下:regn-
87、1:0存储器名m-1:0;或regn-1:0存储器名m:1;举例说明:reg7:0mema255:0;3、Verilog操作符VerilogHDL语言的运算符范围很广,其运算符按其功能可分为以下几类:1)算术运算符(+,*,/,)2)赋值运算符(=,=,=)4)逻辑运算符(&,|,!)5)条件运算符(?:)6)位运算符(,|,&,)7)移位运算符()8)拼接运算符()9)其它(1)算术运算符在VerilogHDL语言中,算术运算符又称为二进制运算符,共有下面几种:1)+(加法运算符,或正值运算符,如rega+regb,+3)2)-(减法运算符,或负值运算符,如rega-3,-3)3)*(乘法运
88、算符,如rega*3)4)/(除法运算符,如5/3)5)%(模运算符,或称为求余运算符,要求两侧均为整型数据。如73的值为1)(2)位运算符VerilogHDL作为一种硬件描述语言,是针对硬件电路而言的。在硬件电路中信号有四种状态值1,0,x,z.在电路中信号进行与或非时,反映在VerilogHDL中则是相应的操作数的位运算。VerilogHDL提供了以下五种位运算符:1)/取反2)&/按位与3)|/按位或4)/按位异或5)/按位同或(异或非)说明:位运算符中除了是单目运算符以外,其余均为二目运算符,即要求运算符两侧各有一个操作数。位运算符中的二目运算符要求对两个操作数的相应位进行运算操作。(
89、3)逻辑运算符在VerilogHDL语言中存在三种逻辑运算符:1)&逻辑与2)|逻辑或3)!逻辑非&和|是二目运算符,它要求有两个操作数,如(ab)&(bc),(ab)|(bb)。下表为逻辑运算的真值表,它表示当a和b的值为不同的组合时,各种逻辑运算所得到的值。ab!a!ba&ba|b真真假假真真真假假真假真假真真假假真假假真真假假(4)关系运算符关系运算符共有以下四种:aba大于ba=ba大于或等于b在进行关系运算时,如果声明的关系是假的(flase),则返回值是0,如果声明的关系是真的(true),则返回值是1,如果某个操作数的值不定,则关系是模糊的,返回值是不定值。(5)等式运算符在Ve
90、rilogHDL语言中存在四种等式运算符:1)=(等于)2)!=(不等于)3)=(等于)4)!=(不等于)这四个运算符都是二目运算符,它要求有两个操作数。=和!=又称为逻辑等式运算符。其结果由两个操作数的值决定。由于操作数中某些位可能是不定值x和高阻值z,结果可能为不定值x。(5)等式运算符=和!=运算符则不同,它在对操作数进行比较时对某些位的不定值x和高阻值z也进行比较,两个操作数必须完全一致,其结果才是1,否则为0。=和!=运算符常用于case表达式的判别,所以又称为case等式运算符。这四个等式运算符的优先级别是相同的。下面画出与的真值表,帮助理解两者间的区别。下面举一个例子说明“”和“
91、”的区别。(6)移位运算符在VerilogHDL中有两种移位运算符:(右移位运算符)。其使用方法如下:an或ana代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。moduleshift;reg3:0start,result;initialbeginstart=1;/start在初始时刻设为值0001result=(start2);/移位后,start的值0100,然后赋给result。endendmodule(7)位拼接运算符在VerilogHDL语言有一个特殊的运算符:位拼接运算符。用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作。其使用方法如下:信
92、号1的某几位,信号2的某几位,.,.,信号n的某几位即把某些信号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。见下例:a,b3:0,w,3b101也可以写成为a,b3,b2,b1,b0,w,1b1,1b0,1b1(8)缩减接运算符缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行或与非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行
93、或与非运算,第二步将运算结果与第三位进行或与非运算,依次类推,直至最后一位。例如:reg3:0B;regC;C=&B;相当于:C=(B0&B1)&B2)&B3;(9)运算符优先级别! */%+-=!=!=&|&|?:高优先级别低优先级别(10)关键词在VerilogHDL中,所有的关键词是事先定义好的确认符,用来组织语言结构。关键词是用小写字母定义的,因此在编写原程序时要注意关键词的书写,以避免出错。下面是VerilogHDL中使用的关键词:always,and,assign,begin,buf,bufif0,bufif1,case,casex,casez,cmos,deassign,defa
94、ult,defparam,disable,edge,else,end,endcase,endmodule,endfunction,endprimitive,endspecify,endtable,endtask,event,for,force,forever,fork,function,highz0,highz1,if,initial,inout,input,integer,join,large,macromodule,medium,module,nand,negedge,nmos,nor,not,notif0,notifl,or,output,parameter,pmos,posedge,p
95、rimitive,pull0,pull1,pullup,pulldown,rcmos,reg,releses,repeat,mmos,rpmos,rtran,rtranif0,rtranif1,scalared,small,specify,specparam,strength,strong0,strong1,supply0,supply1,table,task,time,tran,tranif0,tranif1,tri,tri0,tri1,triand,trior,trireg,vectored,wait,wand,weak0,weak1,while,wire,wor,xnor,xor二、Ve
96、rilog语句1赋值语句和块语句(1)赋值语句在VerilogHDL语言中,信号有两种赋值方式:非阻塞(Non_Blocking)赋值方式(如b=a;)1)块结束后才完成赋值操作。2)b的值并不是立刻就改变的。3)这是一种比较常用的赋值方法。(编写可综合模块时)阻塞(Blocking)赋值方式(如b=a;)1)赋值语句执行完后,块才结束。2)b的值在赋值语句执行完后立刻就改变的。3)可能会产生意想不到的结果。(2)赋值语句非阻塞(Non_Blocking)赋值方式always(posedgeclk)beginb=a;cb)out1b)out1=int1;elseout1=int2;(II)if
97、(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;.elseif(表达式m)语句m;else语句n;(2)case语句case语句是一种多分支选择语句,而实际问题中常常需要用到多分支选择,Verilog语言提供的case语句直接处理多分支选择。case语句通常用于微处理器的指令译码,它的一般形式如下:(I)case(表达式)endcase(II)casez(表达式)endcase(III)casex(表达式)endcasecase分支项的一般格式如下:分支表达式:语句缺省项(default项):语句3循环语句在VerilogHDL中存在着四种类型的循环语句,用
98、来控制执行语句的执行次数。1)forever连续的执行语句2)repeat连续执行一条语句n次3)while执行一条语句直到某个条件不满足。如果一开始条件即不满足(为假),则语句一次也不能被执行。4)for通过以下三个步骤来决定语句的循环执行a)先给控制循环次数的变量赋初值。b)判定控制循环的表达式的值,如为假则跳出循环语句,如为真则执行指定的语句后,转到第三步。c)执行一条赋值语句来修正控制循环变量次数的变量的值,然后返回第二步。forever语句的格式如下:forever语句;或foreverbegin多条语句endforever循环语句常用于产生周期性的波形,用来作为仿真测试信号。它与a
99、lways语句不同之处在于不能独立写在程序中,而必须写在initial块中。(1)forever语句repeat语句的格式如下:repeat(表达式)语句;或repeat(表达式)begin多条语句end在repeat语句中,其表达式通常为常量表达式。使用repeat循环语句及加法和移位操作来实现一个乘法器。(2)repeat语句parametersize=8,longsize=16;regsize:1opa,opb;reglongsize:1result;begin:multreglongsize:1shift_opa,shift_opb;shift_opa=opa;shift_opb=op
100、b;result=0;repeat(size)beginif(shift_opb1)result=result+shift_opa;shift_opa=shift_opa1;endendwhile语句的格式如下:while(表达式)语句或while(表达式)begin多条语句end。下面举一个while语句的例子,该例子用while循环语句对rega这个八位二进制数中值为1的位进行计数。(3)repeat语句begin:count1sreg7:0tempreg;count=0;tempreg=rega;while(tempreg)beginif(tempreg0)count=count+1;t
101、empreg=tempreg1;endendfor语句的一般形式为:for(表达式1;表达式2;表达式3)语句()for语句例1:初始化RAMbegin:init_memreg7:0tempi;for(tempi=0;tempimemsize;tempi=tempi+1)memorytempi=0;end例2:用for循环语句来实现前面用repeat语句实现的乘法器parametersize=8,longsize=16;regsize:1opa,opb;reglongsize:1result;begin:multintegerbindex;result=0;for(bindex=1;binde
102、x=size;bindex=bindex+1)if(opbbindex)result=result+(opa(bindex-1);endD任务实现Electronic Design Automation 220 EDA技术任务1数字电子钟设计方案分析根据系统设计要求,系统设计采用自顶向下的设计方法,系统的整体组装设计原理图如图3-2所示,数字电子钟由秒钟计时模块、分钟计时模块、时钟计时模块、数码管扫描模块、数码管译码模块以及分频模块组成。图3-2数字电子钟原理图任务任务2 2 数字电子钟的数字电子钟的Verilog HDLVerilog HDL程序设计程序设计1. 新建工程2.秒钟计数模块的V
103、erilogHDL描述与时序仿真任务任务2 2 数字电子钟的数字电子钟的Verilog HDLVerilog HDL程序设计程序设计(1)添加设计文件,建立秒钟计数模块的Verilog源程序设计文件并综合(2)添加仿真文件,进行秒钟计数模块秒钟计数模块时序仿真仿真波形如图3-4所示:图3-4秒钟计数模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计3. 分钟计数模块的Verilog HDL描述与时序仿真(1)添加设计文件,建立分钟计数模块的Verilog HDL源程序设计文件并综合任务2数字电子钟的VerilogHDL程序设计(2)添加仿真文件,进行分钟计数模块钟计数模块时序仿真仿
104、真波形如图3-5所示:图3-5分钟计数模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计任务2数字电子钟的VerilogHDL程序设计4.时钟计数模块的Verilog描述与时序仿真(1)添加设计文件,建立时钟计数模块的Verilog源程序设计文件并综合(2)添加仿真文件,进行时钟计数模块钟计数模块时序仿真仿真波形如图3-6所示:图3-6时钟计数模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计5. 分频模块的分频模块的Verilog HDL描述与时序仿真描述与时序仿真(1)添加设计文件,建立分频模块分频模块的Verilog HDL源程序设计文件并综合任务2数字电子钟的V
105、erilogHDL程序设计(2)添加仿真文件,进行分频模块分频模块时序仿真仿真波形如图3-7所示,因为分频系数较高,所以图中50Mhz的系统时钟clk显示不出来,变成黑色了。 图3-7分频模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计6. 数码管选通模块的Verilog HDL描述与时序仿真(1)添加设计文件,建立数码管选通模块的Verilog HDL源程序设计文件并综合任务2数字电子钟的VerilogHDL程序设计(2)添加仿真文件,进行数码管选通模块数码管选通模块时序仿真仿真波形如图3-8所示:图3-8数码管选通模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计
106、7. 数码管显示模块数码管显示模块的Veriolg HDL描述与时序仿真(1)添加设计文件,建立数码管显示模块的Verilog HDL源程序设计文件并综合任务2数字电子钟的VerilogHDL程序设计(2)添加仿真文件,进行数码管显示模块数码管显示模块时序仿真仿真波形如图3-9所示:图3-9数码管显示模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计8. 数字电子钟的顶层模块的Verilog HDL描述与时序仿真(1)添加顶层设计文件,建立带数码管显示的电子钟的Verilog HDL源程序设计文件并综合任务2数字电子钟的VerilogHDL程序设计(2)添加仿真文件,进行带数码管显
107、示的电子钟时序仿真仿真波形如图3-10所示:图3-10顶层模块的仿真波形图任务2数字电子钟的VerilogHDL程序设计9. 数字电子钟硬件实现(1)数字电子钟管脚指定,按照表3-4所示的端口管脚分配表,进行如图3-11所示的管脚指定。端口名使用模块信号对应FPGA管脚说 明clk系统时钟PIN_2350Mhz的系统时钟clr按键S8PIN_116时钟清零按键seg7数码管dp段段选PIN_1717段数码管段选信号输出,低电平有效seg6数码管g段段选PIN_164seg5数码管f段段选PIN_168seg4数码管e段段选PIN_173seg3数码管d段段选PIN_175seg2数码管c段段选
108、PIN_169seg1数码管b段段选PIN_165seg0数码管a段段选PIN_170seg_sel5从左数第1个数码管位选PIN_208数码管位选信号输出,低电平有效seg_sel4从左数第2个数码管位选PIN_207seg_sel3从左数第3个数码管位选PIN_206seg_sel2从左数第4个数码管位选PIN_205seg_sel1从左数第5个数码管位选PIN_151seg_sel0从左数第6个数码管位选PIN_152表3-4端口管脚分配表图3-11数字电子钟管脚指定图(2)数字电子钟的综合实现(3)数字电子钟下载配置E.考核评价1.考核办法Electronic Design Autom
109、ation 241 EDA技术学生在规定时间内完成数字电子钟的VerilogHDL程序设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Automation 242 EDA技术(1)完成数字电子钟VerilogHDL源程序设计,程序结构合理,语句使用正确,符合设计需求。(2)掌握QuartusII9.0文本输入方法操作流程,能熟练使用VerilogHDL语言设计方法进行数字电子钟的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.0软件进行数字电子钟的时序仿真,仿真结果正确,并能对仿真结
110、果进行详细分析。(4)会添加约束文件,进行数字电子钟管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成数字电子钟下载配置,编程下载成功。(6)设计报告按时上交,源程序正确,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计数字电子钟,并能指导其他成员进行相关的实践操作。3.评分标准Electronic Design Automation 243 EDA技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,完成以上(1)-(6)项操作,结果无重大失误。
111、D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 245 EDA技术1利用VerilogHDL语言设计四位加法器2利用VerilogHDL语言设计一彩灯控制器,系统设计要求:(1)控制八个彩灯,有六种花型可以自动变换,循环往复;(2)彩灯变换有快、中、慢三种节拍可以选择;(3)具有清零开关。Thanks for your time Thanks for your time !项目四:交通管理器设计Electronic Design Automation 247 EDA技术主要内容D 任务实现A 项目任务B 项目目
112、标C 知识准备E 考核评价F 拓展提高A项目任务Electronic Design Automation 249 EDA技术本项目利用原理图与Verilog混合设计方法设计一个交通管理器,模拟十字路口交通灯管理系统,完成对交通灯状态进行模拟控制的设计。一条主干道和支干道汇合成十字路口,每个入口处设置背靠背一对信号灯:红、绿、黄三盏,交通灯的控制要实现:(1)主干道、支干道的通行时间完全区分开;(2)每个路口用2个八段LED数码管进行倒计时显示。B项目目标Electronic Design Automation 250 EDA技术通过交通管理器设计项目训练及相关知识学习,达到如下目标:1、理解交
113、通管理器设计方案2、熟悉AlteraFPGA开发流程,掌握原理图与Verilog混合设计方法3、会应用FPGA开发方法进行交通管理器设计4、能利用学习开发板对设计电路进行下载与调试5、能按照现场管理要求(整理、整顿、清扫、清洁、素养、安全、环保、节能)安全文明生产6、会查找相关资料7、会撰写项目报告并答辩8、具有团队合作精神,具有一定的组织协调能力C知识准备前面分别介绍了原理图设计方式和Verilog设计方式,实际上,很多较为复杂的设计采用的是两者的结合。即采用Verilog与原理图混合方式来进行设计。一般情况下,使用Verilog语言描述底层模块,再应用原理图设计方法设计顶层原理图文件。一、
114、Verilog与原理图混合设计方式1四位二进制计数器的Verilog设计一、Verilog与原理图混合设计方式modulecnt4(pst,rst,enable,load,clk,data,cnt);inputpst,rst,enable,load,clk;input3:0data;output3:0cnt;reg3:0cnt;always(posedgepstorposedgerstorposedgeclk)beginif(rst)cnt=4h0;/复位elseif(pst)cnt=4hf;/置位elseif(clk)if(load)cnt=data;/预置elseif(enable)cnt
115、Create/Update-CreateSymbolFilesforCurrentFile,如图4-1所示;图4-1 创建原理图图标方式12.在工程管理器窗口,选择Files选项卡,单击选定要创建原理图图标的文件,右键,在弹出的菜单中选择“CreatSymbolFilesforCurrentFile”,如图4-2所示。这时,QuartusII将调出编译器对cnt4.v进行编译,编译后生成cnt4的图形符号,弹出“CreatSymbolFilewassuccessful”对话框,如图4-3所示,单击确定即可。图4-2 创建原理图图标方式2图4-3 创建原理图图标成功一、Verilog与原理图混合
116、设计方式2八段显示译码器的Verilog设计一、Verilog与原理图混合设计方式八段显示译码器的Verilog源程序,用来将四位二进制数译码为驱动八段数码管(共阴极)的显示信号,该文件名取为decoder.v。其原理图图标的创建过程同上,文件放在同一目录内。moduledecoder(A,SEG);input3:0A;output7:0SEG;reg7:0SEG;always(A)begincase(A)4h0:SEG=8h3f;4h1:SEG=8h06;4h2:SEG=8h5b;4h3:SEG=8h4f;4h4:SEG=8h66;4h5:SEG=8h6d;4h6:SEG=8h7d;4h7:
117、SEG=8h07;一、Verilog与原理图混合设计方式4h9:SEG=8h6f;4ha:SEG=8h77;4hb:SEG=8h7c;4hc:SEG=8h39;4hd:SEG=8h5e;4he:SEG=8h79;4hf:SEG=8h71;default:SEG=8h00;endcaseendendmoduleEDA技术Electronic Design Automation 258 一、Verilog与原理图混合设计方式3顶层文件原理图设计在工程中创建一原理图文件top.bdf,该文件即为本案例的最顶层的图形设计文件,调用了前面两节创建的两个功能的文件,将cnt4.v和decoder.v两个模
118、块组装起来,成为一个完整的设计。在top.bdf文件中,打开元件库,单击Project选项卡前的+号,即可看到前面创建的cnt4与decoder图标,如图4-4所示。图4-4 更新后的元件库EDA技术Electronic Design Automation 259 调用cnt4与decoder元件,按照图4-5所示原理图,依次添加输入输出端口,连线,添加网络名,保存即可得顶层原理图文件。一、Verilog与原理图混合设计方式图4-5 顶层设计原理图最后开始编译和综合,编译完成后,还可以进行仿真,方法与之前类似,得到的仿真波形如图4-6所示。图4-6 四位二进制计数译码显示器仿真波形图EDA技术
119、Electronic Design Automation 260 D任务实现EDA技术Electronic Design Automation 261 任务任务1 1 交通管理器设计方案分析交通管理器设计方案分析十字路口交通管理器是一个控制类型的数字系统,其数据处理单元比较简单。在以下的设计实例中,我们设定主干道通行时间为15s,次干道通行时间为10s,黄灯时间均为3s,则在正常工作状态下,交通管理器循环一次所需时间t=15+3+10+3=31s.在此直接按照功能要求,即常规的十字路口交通管理器规则,给出交通管理器工作流程如图4-7所示。图4-7交通管理器工作流程图EDA技术Electroni
120、c Design Automation 262 任务2交通管理器设计1.新建工程2.核心控制模块的Verilog描述与时序仿真(1)添加设计文件,建立核心控制模块的Verilog源程序设计文件;EDA技术Electronic Design Automation 263 任务2交通管理器设计EDA技术Electronic Design Automation 264 (2)添加仿真文件,进行核心控制模块时序仿真。仿真波形如图4-8所示:图4-8 核心控制模块仿真波形图任务2交通管理器设计EDA技术Electronic Design Automation 265 任务2交通管理器设计3.显示模块的V
121、erilog描述与时序仿真(1)添加设计文件,建立显示模块的Verilog源程序设计文件。EDA技术Electronic Design Automation 266 任务2交通管理器设计EDA技术Electronic Design Automation 267 任务2交通管理器设计(2)添加仿真文件,进行显示模块时序仿真。仿真波形如图4-9所示:图4-9 显示模块仿真波形图EDA技术Electronic Design Automation 268 4.交通管理器顶层原理图设计与时序仿真(1)将核心控制模块的Verilog设计转换成原理图图标;(2)将显示模块的Verilog设计转换成原理图图标
122、;(3)添加设计文件,利用核心控制模块与显示模块原理图图标进行交通管理器的顶层电路原理图设计,如图4-10所示。图4-10 交通管理器顶层电路原理图(仿真用)任务2交通管理器设计EDA技术Electronic Design Automation 269 任务2交通管理器设计(4)、添加仿真文件,进行交通管理器时序仿真。仿真波形如图4-11、4-12所示:图4-11 顶层模块仿真波形图(全局)图4-12顶层模块仿真波形图(局部)EDA技术Electronic Design Automation 270 任务2交通管理器设计5.交通管理器硬件实现(1)添加设计文件,建立分频程序模块的Verilog
123、程序设计;EDA技术Electronic Design Automation 271 (2)修改交通管理器顶层原理图,添加分频程序模块如图4-13所示。(在图4-13中输出端额外添加了6个反向器,这主要是由实验箱硬件决定的,从实验箱底板硬件连接可知:LED为共阳极连接方式,当LED接收到低电平“0”时,LED灯发亮,为了正确反应输出的高低电平(习惯上人们常当LED接收到高电平“1”时,LED灯亮,当LED灯接收到低电平“0”,LED灯灭),所以为每一位输出接了一个反向器。)图4-13交通管理器顶层电路原理图(下载用)任务2交通管理器设计EDA技术Electronic Design Automa
124、tion 272 4.对设计文件进行仿真(3)进行交通管理器管脚指定与编程下载,按照表4-1所示的端口管脚分配表,进行如图4-14所示的管脚指定。端口名使用模块信号对应FPGA管脚说明clkCLK0PIN_2350MHz的系统时钟rst_nS8PIN_116复位按键RedAled1PIN_142主干道红灯信号输出YellowAled2PIN_141主干道黄灯信号输出GreenAled3PIN_139主干道绿灯信号输出RedBled6PIN_135次干道红灯信号输出YellowBled7PIN_134次干道黄灯信号输出GreenBled8PIN_133次干道绿灯信号输出seg_sel3dig7P
125、IN_208主干道灯亮倒计时十位位选信号输出seg_sel2dig6PIN_207主干道灯亮倒计时个位位选信号输出seg_sel1dig1PIN_149次干道灯亮倒计时十位位选信号输出seg_sel0dig0PIN_150次干道灯亮倒计时个位位选信号输出seg7seg7PIN_171数码管dp段段选seg6seg6PIN_164数码管g段段选seg5seg5PIN_168数码管f段段选seg4seg4PIN_173数码管e段段选seg3seg3PIN_175数码管d段段选seg2seg2PIN_169数码管c段段选seg1seg1PIN_165数码管b段段选seg0seg0PIN_170数码管
126、a段段选表4-1端口管脚分配表E.考核评价1.考核办法Electronic Design Automation 274 EDA技术学生在规定时间内完成交通管理器设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Automation 275 EDA技术(1)完成交通管理器设计,程序结构合理,语句使用正确,原理图符合设计需求。(2)掌握QuartusII9.0混合输入法操作流程,能熟练使用原理图与Verilog语言混合设计方法进行交通管理器的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.
127、0软件进行交通管理器的时序仿真,仿真结果正确,并能对仿真结果进行详细分析。(4)会添加约束文件,进行交通管理器管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成交通管理器下载配置,编程下载成功。(6)设计报告按时上交,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计交通管理器,并能指导其他成员进行相关的实践操作。3.评分标准Electronic Design Automation 276 EDA技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,
128、完成以上(1)-(6)项操作,结果无重大失误。D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 278 EDA技术1利用原理图与Verilog混合设计方法设计一个数字秒表,系统设计要求:(1)数字秒表的计时范围是0秒59分59.99秒。(2)数字秒表的计时精度是10ms。(3)具有复位开关,复位开关按下,计时清零。(4)具有启/停开关,即按一下启/停开关,启动计数器开始计时,再按一下启/停开关,则停止计时。拓展提高Electronic Design Automation 279 EDA技术2利用原理图与Veril
129、og混合设计方法设计一个两人乒乓游戏机,系统设计要求:两人乒乓游戏机能够模拟乒乓球比赛的基本过程和规则,并能自动裁判和计分。乒乓游戏机用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定的方向移动来代表球的运动。在游戏机的两侧各设置两个开关,一个是发球开关,另一个是击球开关,甲乙两人按乒乓球比赛的规则来操作开关。(1)使用乒乓球游戏机的甲乙双方各在不同的位置发球或击球。(2)乒乓球的位置和移动方向由灯亮及依次点燃的方向决定,球移动的速度为0.10.5s移动一位。游戏者根据球的位置发出相应的动作,提前击球或出界均判失分。(3)比赛用11分为一局来进行,甲乙双方都
130、应设置各自的记分牌,任何一方先记满11分,该方就算胜了此局。当记分牌清零后,又可开始新的一局比赛。Thanks for your time Thanks for your time !项目五:简易电子琴设计Electronic Design Automation 281 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A.项目任务项目任务Electronic Design Automation 284 EDA技术本项目利用FPGA器件和VerilogHDL语言设计一个音乐播放器,能够实现乐曲的播放功能,同时在音乐播放时能够显示音调符号及音的高低。B项目
131、目标Electronic Design Automation 285 EDA技术通过简易电子琴设计项目训练及相关知识学习,达到如下目标:1、理解简易电子琴设计方案2、了解Verilog中两种结构语句3、掌握Verilog函数和任务的语句格式4、能用函数和任务进行逻辑电路设计5、学会利用Verilog语言宏功能函数进行较高层次的设计6、能按照现场管理要求(整理、整顿、清扫、清洁、素养、安全、环保、节能)安全文明生产7、会查找相关资料8、会撰写项目报告并答辩9、具有团队合作精神,具有一定的组织协调能力C.知识准备1结构说明语句Verilog语言中的任何过程模块都从属于以下四种结构的说明语句。1)i
132、nitial说明语句2)always说明语句3)task说明语句4)function说明语句initial和always说明语句在仿真的一开始即开始执行。initial语句只执行一次。相反,always语句则是不断地重复执行,直到仿真过程结束。一、结构语句(1)initial语句initial语句的格式如下:initialbegin语句1;语句2;.语句n;end举例说明:initialbeginareg=0;/初始化寄存器aregfor(index=0;indexsize;index=index+1)memoryindex=0;/初始化一个memoryendalways语句在仿真过程中是不断
133、重复执行的。其声明格式如下:alwaysalways语句由于其不断重复执行的特性,只有和一定的时序控制结合在一起才有用。如果一个always语句没有时序控制,则这个always语句将会发成一个仿真死锁。如下:alwaysareg=areg;这个always语句将会生成一个0延迟的无限循环跳变过程,这时会发生仿真死锁。如果加上时序控制,则这个always语句将变为一条非常有用的描述语句。如下:always#half_periodareg=areg;(2)always语句2task和function说明语句task和function说明语句分别用来定义任务和函数。利用任务和函数可以把一个很大的程序
134、模块分解成许多较小的任务和函数便于理解和调试。输入、输出和总线信号的值可以传入、传出任务和函数。任务和函数有些不同,主要的不同有以下四点:1)函数只能与主模块共用同一个仿真时间单位,而任务可以定义自己的仿真时间单位。2)函数不能启动任务,而任务能启动其它任务和函数。3)函数至少要有一个输入变量,而任务可以没有或有多个任何类型的变量。4)函数返回一个值,而任务则不返回值。一、结构语句(1)task说明语句1)任务的定义定义任务的语法如下:任务:task;.endtask这些声明语句的语法与模块定义中的对应声明语句的语法是一致的。2)任务的调用及变量的传递启动任务并传递输入输出变量的声明语句的语法
135、如下:任务的调用:(端口1,端口2,.,端口n);下面的例子说明怎样定义任务和调用任务:任务定义:taskmy_task;inputa,b;inoutc;outputd,e; /执行任务工作相应的语句c=foo1;/赋初始值d=foo2;/对任务的输出变量赋值te=foo3;endtask函数的目的是返回一个用于表达式的值。(2)function说明语句1)定义函数的语法:function (函数名);begin.endendfunction2)从函数返回的值函数的定义蕴含声明了与函数同名的、函数内部的寄存器。如在函数的声明语句中为缺省,则这个寄存器是一位的,否则是与函数定义中一致的寄存器。函
136、数的定义把函数返回值所赋值寄存器的名称初始化为与函数同名的内部变量。3)函数的调用函数的调用是通过将函数作为表达式中的操作数来实现的。其调用格式如下: (,*)其中函数名作为确认符。下面的例子中通过对两次调用函数getbyte的结果值进行位拼接运算来生成一个字。word=control?getbyte(msbyte),getbyte(lsbyte):0;EDA技术Electronic Design Automation 293 三VerilogHDL设计中LPM函数的应用本节介绍VerilogHDL设计中LPM函数的应用1、通过端口和参数定义例化LPM下面以设计一个计数器的例子说明在Veril
137、ogHDL设计文件中通过端口和参数定义例化LPM的方法。本例使用QuartusII自带的基本宏功能模块lpm_counter,创建一个计数器。EDA技术Electronic Design Automation 294 常用的LPM兆功能块分类宏单元注释门单元函数Lpm_andLpm_bustriLpm_clshiftLpm_constantLpm_decodeLpm_invLpm_muxbusmuxmuxLpm_orLpm_xor参数化与门参数化三态缓冲器参数化组合逻辑移位器参数化常数产生器参数化解码器参数化反向器参数化多路选择器参数化总线选择器多路选择器参数化或门参数化异或门算术运算函数Lp
138、m_absLpm_add_subLpm_compareLpm_counterLpm_mult参数化绝对值运算参数化加/减法器参数化比较器参数化计数器参数化乘法器存储函数Lpm_ffLpm_latchLpm_ram_dqLpm_ram_ioLpm_romLpm_shiftreg参数化D触发器参数化锁存器输入/输出分开的参数化RAM输入/输出复用的参数化RAM参数化ROM参数化移位寄存器用户定制函数CsfifoCsdpram参数化先进先出队列参数化双口RAMEDA技术Electronic Design Automation 295 应用lpm_counter组件设计一个12进制计数器EDA技术El
139、ectronic Design Automation 296 通过MegaWizardPlug-InManager例化LPM下面我们利用MegaWizardPlug-InManager方法例化LPM,创建一个12进制计数器.EDA技术Electronic Design Automation 297 打开MegaWizardPlug-InManager(Tools-MegaWizardPlug-inManager)EDA技术Electronic Design Automation 298 EDA技术Electronic Design Automation 299 EDA技术Electronic
140、Design Automation 300 EDA技术Electronic Design Automation 301 EDA技术Electronic Design Automation 302 EDA技术Electronic Design Automation 303 EDA技术Electronic Design Automation 304 EDA技术Electronic Design Automation 305 EDA技术Electronic Design Automation 306 EDA技术Electronic Design Automation 307 modulecnt4(a
141、clr,clk_en,clock,data,sload,updown,cout,q);inputaclr;/异步清零inputclk_en; /时钟使能inputclock; /时钟输入input3:0data;/4位预置数inputsload; /同步预置加载控制端inputupdown;/计数方向控制端output cout; /进位输出output 3:0q;/4位计数结果输出wiresub_wire0;/定义内部连线wire3:0sub_wire1;/定义内部连线wirecout=sub_wire0;/与assign相同的赋值语句wire3:0q=sub_wire13:0;/与assi
142、gn相同的赋值语句EDA技术Electronic Design Automation 308 lpm_counterlpm_counter_component(/注意例化语句中未用端口必须接上指定电平.sload(sload),.clk_en(clk_en),.aclr(aclr),.clock(clock),.data(data),.updown(updown),.cout(sub_wire0),.q(sub_wire1),.aload(1b0),.aset(1b0),.cin(1b1),.cnt_en(1b1),.eq(),.sclr(1b0),.sset(1b0);Defparam/参数
143、传递说明语句lpm_counter_component.lpm_direction=UNUSED,/单方向计数参数未用lpm_counter_component.lpm_modulus=12,/模12计数器lpm_counter_component.lpm_port_updown=PORT_USED,/使用加减计数lpm_counter_component.lpm_type=LPM_COUNTER,/计数器类型lpm_counter_component.lpm_width=4;/计数器位宽endmoduleEDA技术Electronic Design Automation 309 仿真结果如图
144、所示EDA技术Electronic Design Automation 310 任务任务1 简易电子琴设计方案分析简易电子琴设计方案分析 一般来说,所有乐音有四个基本要素 “音的长短”(决定节拍)、“音的高低”(频率决定)、“音的强度”、“音色”。而其中最重要的是 “音的长短” 和 “音的高低”。为了简化设计,本任务设计的音乐播放电路只考虑音的最重要的两个方面: “音的长短” 和“音的高低”,忽略音的强度和音色。要求音乐播放电路最少能连续循环播放一首歌曲,在此基础上可再做进一步的扩展。 为实现播放 “音的长短” 和 “音的高低” ,可根据乐谱用一个控制电路模块产生 “音的长短” 和 “音的高低
145、”信号,控制电路模块包括一个节拍产生子模块(控制“音的长短”)与音符产生子模块(控制“音的高低”)。 用一个分频系数、音符显示数据产生模块把音符信号转换为分频系数、音符显示数据和高低音显示电平。用一个可控分频模块根据分频系数产生不同频率信号驱动喇叭或蜂鸣器播放音乐。D任务实现EDA技术Electronic Design Automation 311 电路输入只有系统时钟信号,经分频后,产生两路时钟信号:一路作为可控分频电路模块的输入时钟,经可控分频电路模块分频后,得到各种所需的乐音信号。另一路作为控制电路模块的输入时钟,用来产生节拍。这两路时钟信号的频率根据具体的实验条件和所选歌曲可有所不同。
146、电路的输出有:一路一线是乐音信号输出,用来驱动外接喇叭或蜂鸣器播放音乐;一路八线用来驱动外接的数码管段选信号,一路一线用来驱动数码管位选信号,二者结合使用用来显示播放的音符简谱符号;一路一线用来驱动外接的一个LED,播放高音时发光。EDA技术Electronic Design Automation 312 音乐电路是模仿人歌唱的电路,故可用人歌唱作为原型来分析设计本任务的总体方案。人通过声带振动发出声音,声带振动频率不同发出不同声音。故在用数字电路来模仿时,用一个控制电路,实现声带振动功能,控制音符信号的产生;用一个电路把音符信号转换为可控分频模块可用的分频系数;可控分频电路在分频系数作用下产
147、生不同频率信号来驱动外接喇叭或蜂鸣器播放音乐。控制电路模块根据歌谱控制可控分频电路模块按照一定节拍在不同时间发出不同的乐音。而控制电路模块应该分为两个子模块,一个用于产生节拍,称节拍产生模块;另一个用于根据歌谱控制可控分频电路模块在不同时间发出不同的乐音,称音符产生模块。音乐电路是连续循环播放的,故控制电路模块的核心部分节拍产生模块是一个计数器,每个状态持续的时间是需播放的所有音的音长的最小公因数,比如是一个十六分音符时值,具体时间长度应根据需播放的歌曲而定。这样,每个音符持续的时间是每个状态持续的时间的整数倍,故占据整数倍个状态。具体占据状态的个数要根据每个音的音长来决定。控制电路的计数器的
148、模即状态数,可由需播放歌曲的各个音所占据状态个数累加而得。例如,一首用于播放“两只老虎”乐曲的音乐电路的控制电路的计数器的模是136。节拍产生电路的计数器是用来产生节拍定的,音符产生模块则将节拍产生电路的计数器的状态翻译成对应的音符,如需播放的歌曲中所用到的音符为916个,则音符产生模块的输出信号应有四位,其他情况依此类推。EDA技术Electronic Design Automation 313 控制电路模块只是根据歌谱产生控制可控分频模块按照一定节拍在不同时间发出不同乐音的音符信号。控制电路模块要具体控制可控分频模块,还要把音符信号转换为分频系数作为可控分频模块的输入信号,也要根据音符信号
149、决定提供给外围数码管的用于显示简谱音符符号的数据和提供给外围LED的用于显示高低音的数据,这就需要另一个模块分频系数、LED数据产生模块。分频系数、LED数据产生模块根据音符产生模块输出的音符信息,产生每个时刻提供给可控分频模块的分频系数、提供给外围数码管的用于显示谱音符符号的数据和提供给外围LED的用于显示高低音的数据。可控分频模块根据分频系数产生不同频率信号驱动喇叭或蜂鸣器播放音乐。播放音乐电路设计总体参考方案如图5-13所示,其中的两个时钟频率的取值将在下面介绍实施的部分做分析。LedHighClk1MHzClk8HzIndexToneSpkout节拍产生模块音符产生模块分频系数、LED
150、数据产生模块可控分频模块SegCode系统分频模块图5-13播放电路总体方案EDA技术Electronic Design Automation 314 本音乐电路设计重点在控制电路模块和可控分频模块设计,下面讨论这两个模块以及顶层模块的设计方案的选择。1. 控制电路模块(节拍产生模块与音符产生模块)设计方案的选择 节拍产生模块是一个计数器,可采用通常的方法设计。 音符产生模块的输入信号是节拍产生模块输出的计数值,输出信号是表示音符的音符序号。在节拍产生模块输出的计数值变化范围不大并且音符产生模块的输出数值不需灵活改变时,可用Verilog HDL语句直接来描述音符产生模块。在节拍产生模块输出的
151、计数值变化范围较大或音符产生模块的输出数值需灵活改变时,可使用LPM_ROM来存储对应于不同计数值的音符序号。这里我们分别用这两种方法来实现,可对比学习。2. 可控分频模块设计方案的选择 (1)等占空比和非等占空比方案选择 可控分频电路按输出时钟的占空比来分,有等占空比和非等占空比两类方案。为了得到足够驱动蜂鸣器的功率,采用等占空比输出的可控分频电路方案。EDA技术Electronic Design Automation 315 (2)偶数分频、整数分频方案的选择 常见的分频电路有偶数分频、奇数分频和整数分频电路,本任务从原理来看,既有偶数分频又有奇数分频,故应属于整数分频电路。非等占空比的偶
152、数分频、奇数分频电路有统一的设计方法并且比较简单,但等占空比的偶数分频、奇数分频电路设计方法则不相同。对于偶数(2N)的等占空比分频,可先做N非等占空比分频,再做2分频即可,比较简单。对于等占空比的奇数分频电路则不能采用这种方法,比较复杂。本任务可采取用较高频率(比如50 MHz)的输入时钟,这样分频比就比较大,故对于初学者,作为初步解决方案,可采用偶数分频比近似代替奇数分频比的方法,把整数分频电路变成偶数(2N)分频电路,用先做N非等占空比分频,再做2分频这种较简单的方法来设计;作为提高,可采用比较复杂的真正的整数分频电路设计方法设计。3. Verilog HDL输入设计法和原理图输入设计法
153、的选择在本任务中,底层模块采用Verilog HDL语言设计较简单,顶层模块采用原理图设计与Verilog HDL设计均可,我们采用原理图设计顶层电路。EDA技术Electronic Design Automation 316 任务2简易电子琴VerilogHDL程序设计下面以用于播放“两只老虎”乐曲的音乐电路为例,对音乐电路各模块的实施进行进一步的设计实现。 (一)控制电路模块 控制电路模块包含节拍产生模块和音符产生模块两个子模块,合写成一个文件。 1节拍产生模块设计分析 根据以上分析,此模块为一个计数器,现在需进一步决定计数器的模与输入时钟频率。 根据乐曲“两只老虎”简谱,见图5-14,此
154、乐曲以四分音符为一拍,四拍为一节,所有音的音长最小公因数是一个十六分音符时值,所以,以十六分音符时值作为一个状态持续时间,把乐曲“两只老虎”中各个音符所占据状态个数累加而得知节拍产生模块计数器的模是136,其中最后体止符用了8个时间单位。 乐曲“两只老虎”的简谱没有明确标出播放速度,根据经验设定1 min播放60拍,但一般儿歌均是比较轻快的,因此此处设定1 min播放120拍,一拍持续时间即四分音符的时值为0.5s,一个状态持续时间即一个十六分音符时值为0.125 s。故节拍产生模块输入时钟周期为0.125s,频率为8Hz。EDA技术Electronic Design Automation 3
155、17 图5-17两只老虎简谱EDA技术Electronic Design Automation 318 2、音符产生模块设计分析 音符产生模块的功能是将节拍产生电路的计数器的值按照乐曲“两只老虎”的简谱翻译成对应的音符。规定用Counter表示计数器的值,Index表示15个音符符号。播放乐曲一般需低音7个、中音7个与高音1个,共15个音符,用15个数字(Index)115来表示,则乐曲“两只老虎”简谱的15个音符与数字(Index)的对应关系见表5-4。 表5-4 乐曲“两只老虎”简谱音符与数字对应关系EDA技术Electronic Design Automation 319 根据乐曲“两只
156、老虎”简谱可得其计数器值与音符对应关系,见表5-5。表5-5音符产生模块计数器值与音符对应表EDA技术Electronic Design Automation 320 3控制电路模块Verilog HDL描述方式一 控制电路模块的输入时钟信号与Clk8Hz相连;Index表示音符信息,因为Index取值为115,故为四位二进制信号。 此控制电路模块Verilog描述有两个always块,一个描述的是一个时序逻辑电路计数器(节拍产生模块),另一个描述的是一个组合逻辑译码电路(音符产生模块),两模块由Counter信号相连,这是一个数字系统的控制模块描述。具体程序描述如下:EDA技术Electro
157、nic Design Automation 321 EDA技术Electronic Design Automation 322 EDA技术Electronic Design Automation 323 4、仿真图图5-25是控制电路模块在Quartus软件中的仿真图,其中四位二进制数Index用十进制表示。图5-25控制电路模块EDA技术Electronic Design Automation 324 (二) 分频系数、音符显示数据产生模块1设计分析设计分析 此模块的功能是产生提供给可控分频模块的分频系数、提供给外围数码管和外围LED的数据。乐曲“两只老虎”是F调,其音符对应的频率数据见表5
158、-6,又因为可控分频模块的输入时钟设为1 MHz,则最大分频系数为1000000/349.22864,需用12位二进制表示,故可控分频模块的计数器为12位二进制计数器。可得音符信号对应的分频系数、音符显示数据和高低音指示电平见表5-6。 EDA技术Electronic Design Automation 325 表5-6音符信号对应的分频系数、音符显示数据和高低音指示电平EDA技术Electronic Design Automation 326 2、设计文件、设计文件Verilog HDL描述描述 对于简单的组合逻辑模块的Verilog HDL描述,最常用的方法是应用CASE语句或IF语句来描
159、述。在设计文件中:Index为四位二进制信号,表示输入音符信息;SEG为八位二进制信号,是提供给外围数码管的位选信号,数码管用于显示简谱音符符号的数据;SEG_SEL为一位二进制信号,是提供给外围数码管的位选信号;LED是提供给外围LED的用于显示高低音的数据;Tone是供给可控分频模块的分频系数。EDA技术Electronic Design Automation 327 EDA技术Electronic Design Automation 328 3、仿真图图5-26是分频系数、音符显示数据产生模块在Quartus软件中的仿真图,其中SEG用十六进制(总线形式)表示简谱音符符号的数码管译码信号
160、(段码表),Index用十进制(总线形式)表示输入音符信息、Tone用十进制(总线形式)表示分频系数。 图5-26分频系数、音符显示数据产生模块仿真图EDA技术Electronic Design Automation 329 (三) 可控分频模块1、设计分析 此模块的功能是用一个可控分频电路来产生播放音乐所需的每个音。其实质是设计一个可预置数的计数器,预置数就是分频系数。 作为初步解决方案,本任务采用偶数分频近似代替奇数分频的方法,把整数分频电路变成偶数分频电路来设计。可控分频模块是一个2后分频的可控分频电路。可控分频模块的输入时钟clk频率选1 MHz,为了使可控分频模块分频系数取值范围比较
161、合适,输入时钟先经(211-Tone)的可控分频,同时为了使输出信号SpkS具有较高的驱动功率,可控分频后再经2分频,使输出信号 SpkS具有50%的占空比,从而具有较高的驱动功率。EDA技术Electronic Design Automation 330 EDA技术Electronic Design Automation 331 3、仿真图 图5-27是可控分频模块在Quartus软件中的仿真图。其中clk输入频率为1M,由于频率太大,显示的是一条黑带,Tone是用二进制(总线形式)表示的分频系数,Spks是可控分频模块输出音频信号。分频系数,Spks是可控分频模块输出音频信号。图5-27可
162、控分频模块仿真图EDA技术Electronic Design Automation 332 (四) 简易电子琴顶层模块设计 简易电子琴顶层模块用原理图输入法设计。把以上各子模块在Quartus创建图元,新建一个原理图编辑文件,然后把创建的图元组装起来构成一个完整的电路进行编译,仿真。 1、简易电子琴顶层原理图输入描述。图5-28简易电子琴顶层原理图输入EDA技术Electronic Design Automation 333 2、简易电子琴顶层模块仿真图图5-29简易电子琴顶层模块仿真图EDA技术Electronic Design Automation 334 (五)简易电子琴硬件实现(1)简
163、易电子琴管脚指定,按照表5-7所示的端口管脚分配表,进行如图5-31所示的管脚指定。表5-7 端口管脚分配表端口名使用模块信号对应FPGA管脚说 明clk50Mhz系统时钟PIN_2350Mhz的系统时钟seg7数码管dp段段选PIN_1717段数码管段选信号输出,低电平有效seg6数码管g段段选PIN_164seg5数码管f段段选PIN_168seg4数码管e段段选PIN_173seg3数码管d段段选PIN_175seg2数码管c段段选PIN_169seg1数码管b段段选PIN_165seg0数码管a段段选PIN_170seg_sel从左数第1个数码管位选PIN_208数码管位选信号输出,低
164、电平有效LED从左数第1个LED位选PIN_142LED位选信号输出,低电平有效Spks蜂鸣器PIN_3蜂鸣器驱动信号输出图5-31 简易电子琴管脚指定图(2)简易电子琴的综合实现(3)简易电子琴下载配置E.考核评价1.考核办法Electronic Design Automation 338 EDA技术学生在规定时间内完成简易电子琴的VerilogHDL程序设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Automation 339 EDA技术(1)完成简易电子琴VerilogHDL源程序设计,程序结构合理,语句使用正确,
165、符合设计需求。(2)掌握QuartusII9.0文本输入方法操作流程,能熟练使用VerilogHDL语言设计方法进行简易电子琴的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.0软件进行简易电子琴的时序仿真,仿真结果正确,并能对仿真结果进行详细分析。(4)会添加约束文件,进行简易电子琴管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成简易电子琴下载配置,编程下载成功。(6)设计报告按时上交,源程序正确,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计简易电子琴,并能指导其他成员进行相关的实践操作。3.评分标准Electronic D
166、esign Automation 340 EDA技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,完成以上(1)-(6)项操作,结果无重大失误。D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 342 EDA技术1带弹奏功能的电子琴设计设计一个简易的七音符电子琴,演奏时可以选择手动演奏(由键盘输入)还是自动演奏已存入的乐曲;能够自动演奏多首乐曲,且每首乐曲可重复演奏。2智能函数发生器设
167、计智能函数发生器能够产生递增斜波、递减斜波、方波、三角波、正弦波及阶梯波,并可通过开关选择输出的波形。Thanks for your time Thanks for your time !项目六步进电机控制器设计Electronic Design Automation 344 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A.项目任务项目任务Electronic Design Automation 347 EDA技术本项目利用状态机方法设计一个三相步进电机控制器,该控制器能够实现电机的速度控制、工作方式选择等多种功能。B项目目标Electronic
168、Design Automation 348 EDA技术通过步进电机控制器设计项目训练及相关知识学习,达到如下目标:理解步进电机控制器设计方案了解状态机的结构和功能掌握各种状态机的设计方法能用状态机方法进行逻辑电路设计能利用学习开发板对设计电路进行下载与调试能按照现场管理要求(整理、整顿、清扫、清洁、素养、安全、环保、节能)安全文明生产会查找相关资料会撰写项目报告并答辩具有团队合作精神,具有一定的组织协调能力C.知识准备一、有限状态机设计VerilogHDL综合器易于优化易构成性能良好的时序逻辑模块结构模式简单、层次分明、易读易懂、易排错运行模式类似于CPU,易于进行顺序控制利用同步时序和全局时
169、钟线可实现高速FSM高可靠性,非法状态易控制1概述(4)辅助进程用于配合状态机工作的组合进程或时序进程,例如为了完成某种算法的进程;或用于配合状态机工作的其他时序进程,例如为了稳定输出设置的数据锁存器等。2一般有限状态机的设计1、一般有限状态机的组成()说明部分说明部分中包含状态转换变量的定义和所有可能状态的说明,必要时还要确定每一状态的编码。在Verilog状态机程序的说明部分中,各状态元素是用参数说明关键词parameter来定义的。()时序进程时序进程是指负责状态机运转和在时钟驱动下负责状态转换的进程。作为状态机的“驱动泵”。(3)组合进程组合进程的任务是根据外部输入的控制信号,和当前状
170、态的状态值确定下一状态的去向,以及确定对外输出或对内部其他组合或时序进程输出控制信号的内容。异步时序逻辑电路:所有的CP是接在一起的,所以同时动作时序脉冲只接入了第一个触发器,异步动作3时序电路的特点与组成1JC11K1JC11K1JC11K&FF1FF0FF2ZCPQ2Q1Q0图2同步时序逻辑电路CP1JC11K1JC11K1JC11K&FF1FF0FF2ZQ2Q1Q0图3异步时序逻辑电路同步时序逻辑电路:输出状态仅与存储电路的状态有关,而与外部输入无直接关系。(2)按照输出信号的特点米里(Mealy)型摩尔(Moore)型输出状态不仅与存储电路的状态有关,而且与外部输入也有关。3时序电路的
171、特点与组成Moore:输出状态仅与存储电路的状态有关,而与输入无直接关系。3时序电路的特点与组成Moore机模型:状态寄存器次态逻辑输出逻辑输出输入时钟图4Moore机模型框图Mealy机模型:状态寄存器次态逻辑输出逻辑输出输入时钟图5Mealy机模型框图Mealy:输出状态不仅与存储电路的状态有关,而且与外部输入也有关。这里就是Moore状态机和Mealy的不同所在,Mealy机模型的输出与输入有关。竞争与冒险p产生次态的电路是组合逻辑电路。组合逻辑电路存在竞争与冒险,可能导致时序系统进入不正确的状态。p所谓竞争与冒险,就是在组合电路中,信号经不同途径传输后,达到电路中某一会合点的时间有先有
172、后,这种现象称为竞争。由于竞争而使电路输出发生瞬间错误的现象,称为冒险。p使用同步时序逻辑电路可以克服次态逻辑存在竞争冒险的问题,本章后面主要围绕同步时序电路展开。3时序电路的特点与组成4Moore型状态机的设计Moore型状态机框图以下介绍Moore型状态机的另一个应用实例,即用状态机设计一个AD采样控制器。对A/D器件进行采样控制RCSTATUSD11.0AD574启动时序20usZ/CS对AD574初始化st0st1st2st3st4打开片选,启动12位转换采样周期中等待STATUS=1 :正在转换!STATUS=0 :转换结束!12位转换数据输出有效由 LOCK 发数据锁存信号PROC
173、ESSREG时序进程PROCESSCOM组合进程PROCESSLATCH锁存器current_statenext_stateLOCK状态机FSMFPGA/CPLDCLKCSA0RCK12/8STATUSD11.0AD574Q11.0模拟信号输入采样数据输出AD574控制器Verilog HDL源程序AD574控制器Verilog HDL源程序AD574控制器仿真波形图5Mealy型有限状态机的设计Mealy状态机的框图/一般状态机描述modulemealy1(clk,datain,reset,q);inputclk,datain,reset;output4:0q;reg4:0q;paramet
174、erst0=0,st1=1,st2=2,st3=3,st4=4;reg2:0stx;always(posedgeclk,posedgereset)/决定转换状态的过程begin:COMREGif(reset)stx=st0;elsecase(stx)st0:beginif(datain)stx=st1;endst1:beginif(!datain)stx=st2;endst2:beginif(datain)stx=st3;endst3:beginif(!datain)stx=st4;endst4:beginif(datain)stx=st0;enddefault:stx=st0;endcase
175、endalways(stx,datain)/输出控制信号过程begin:COM1case(stx)st0:beginif(datain)q=5b10000;elseq=5b01010;endst1:beginif(!datain)q=5b10111;elseq=5b10100;endst2:beginif(datain)q=5b10101;elseq=5b10011;endst3:beginif(!datain)q=5b11011;elseq=5b01001;endst4:beginif(datain)q=5b11101;elseq=5b01101;enddefault:q=5b00000;e
176、ndcaseendendmodule进程间一般是并行运行的,但由于敏感信号的设置不同以及电路的延迟,在时序上进程间的动作是有先后的。例6-8状态机工作时序图可以从该状态机的工作时序图6-8上清楚看到,输出信号有许多毛刺。为了解决这个问题,可以考虑将输出信号q值由时钟信号锁存后再输出,也可用时钟同步输出信号/加锁存器后的状态机描述modulemealy2(clk,datain,reset,q);inputclk,datain,reset;output4:0q;reg4:0q1,q;parameterst0=0,st1=1,st2=2,st3=3,st4=4;reg2:0stx;always(po
177、sedgeclk,posedgereset)/决定转换状态的过程begin:COMREGif(reset)stx=st0;elsecase(stx)st0:beginif(datain)stx=st1;endst1:beginif(!datain)stx=st2;endst2:beginif(datain)stx=st3;endst3:beginif(!datain)stx=st4;endst4:beginif(datain)stx=st0;enddefault:stx=st0;endcaseendalways(stx,datain)/输出控制信号过程begin:COM1case(stx)st
178、0:beginif(datain)q1=5b10000;elseq1=5b01010;endst1:beginif(!datain)q1=5b10111;elseq1=5b10100;endst2:beginif(datain)q1=5b10101;elseq1=5b10011;endst3:beginif(!datain)q1=5b11011;elseq1=5b01001;endst4:beginif(datain)q1=5b11101;elseq1=5b01101;enddefault:q1=5b00000;endcaseendalways(posedgeclk)q=q1;endmodul
179、e例6-9状态机工作时序图2比较图6-8和图6-9,可以注意到,q的输出时序在发生锁存后有延迟一个时钟周期的现象,这是由于同步锁存的原因。二二 步进电机控制技术步进电机控制技术2.1步进电机的工作原理步进电机的工作原理 步进电机的工作就是步进转动。在一般的步进电机工作中,其电源都是采用单极性的直流电源。要使步进电机转动,就必须对步进电机定子的各相绕组以适当的时序进行通电。步进电机的步进进程可以用图6-10来说明。图6-10是一个三相反应式步进电机,其定子的每相都有一对磁极,每个磁极都只有一个齿,即磁极本身,故三相步进电机有三对磁极共6个齿;其转子有4个齿,分别称为1、2、3、4齿。直流电源U通
180、过开关A、B、C分别对步进电机的A、B、C相绕组轮流通电。A相通电B相通电C相通电图6-10步进电机工作原理分析图2.2 2.2 步进电机的工作方式步进电机的工作方式 步进电机有三相、四相、五相、六相等多种,为了分析方便,我们仍以三相步进电机为例进行分析和讨论。步进电机可工作于单相通电方式,也可工作于双相通电方式和单相、双相交叉通电方式。选用不同的工作方式,可使步进电机具有不同的工作性能,如减小步距,提高定位精度和工作稳定性等。对于三相步进电机则有单相三拍(简称单三拍)方式,双相三拍(简称双三拍)方式、三相六拍工作方式。1 1步进电机单三拍工作方式步进电机单三拍工作方式单三拍就是每次只给一个线
181、组通电,其余的绕组断开。绕组的通电顺序:ABCA电压波形各相通电的电压波形如图6-11所示。图6-11单三拍工作的电压波形2 2步进电机的双三拍工作方式步进电机的双三拍工作方式 绕组的通电顺序:ABBCCAAB 电压波形各相通电的电压波形如图6-12所示。图6-12双三拍工作的电压波形3 3步进电机三相六拍工作方式步进电机三相六拍工作方式绕组的通电顺序: AABBBCCCAA电压波形各相通电的电压波形如图6-13所示,其工作原理分析图如图6-14所示。图6-13三相六拍工作的电压波形图6-14三相六拍工作原理分析图图6-15 步进电机控制器元件符号Electronic Design Autom
182、ation 377 任务任务1 步进电机控制器设计方案分析步进电机控制器设计方案分析本项目用Verilog语言设计一个三相步进电机控制器,具体要求如下:(1)两种工作方式,三相三拍和三相六拍,三相三拍运行时,步进电机各绕组的通电顺序为A-B-C-A,依次类推;三相六拍运行时,步进电机个绕组的通电顺序为A-AB-B-BC-C-CA-A,依次类推。(2)能实现电机速度控制,有高、中、低三挡速度可调。(3)可控制步进电机行走步数,也即转动角度。D任务实现EDA技术Electronic Design Automation 378 我们利用状态机的工作原理来设计步进电机的控制程序。设计中要注意的问题:
183、在电机停转之后,应使输出为零,即保持电机的电路电流为零,从而达到保护电机不被烧毁的目的。解决方法:本项目要求需要输出三种(三相三拍)或六种(三相六拍)状态,这几种均为旋转状态,设计中需额外加入另一种状态,即不通电状态,用于保护电机,避免电机因通电过长而烧坏。EDA技术Electronic Design Automation 379 任务2步进电机控制器设计步进电机控制器设计EDA技术Electronic Design Automation 380 任务2步进电机控制器设计步进电机控制器设计EDA技术Electronic Design Automation 381 任务2步进电机控制器设计步进电
184、机控制器设计EDA技术Electronic Design Automation 382 步进电机控制器的仿真波形如图6-16所示。图6-16步进电机控制器仿真波形仿真波形图E.考核评价1.考核办法Electronic Design Automation 384 EDA技术学生在规定时间内完成步进电机控制器的VerilogHDL程序设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Automation 385 EDA技术(1)完成步进电机控制器设计,程序结构合理,语句使用正确,符合设计需求。(2)掌握QuartusII9.0文
185、本输入方法操作流程,能熟练使用状态机设计方法进行步进电机控制器的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.0软件进行步进电机控制器的时序仿真,仿真结果正确,并能对仿真结果进行详细分析。(4)会添加约束文件,进行步进电机控制器管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成步进电机控制器下载配置,编程下载成功。(6)设计报告按时上交,源程序正确,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计步进电机控制器,并能指导其他成员进行相关的实践操作。3.评分标准Electronic Design Automation 386 EDA
186、技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,完成以上(1)-(6)项操作,结果无重大失误。D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 388 EDA技术1自动售货机控制系统设计利用状态机方法设计一个自动售货机的逻辑控制电路。它有两个投币口分别为一元投币口和五角投币口,假设每次只能投入一枚一元或五角硬币,投入一元五角硬币后机器自动给出一瓶矿泉水,投入两元硬币后,在给出一瓶矿泉
187、水的同时找回一枚五角的硬币拓展提高Electronic Design Automation 389 EDA技术2三层电梯控制系统设计利用状态机方法设计一个三层电梯控制系统,具体功能需求如下:(1)每层电梯入口处设有上下请求开关,电梯内设有顾客到达层次的停站请求开关。(2)设有电梯入口处位置指示装置及电梯运行模式(上升或下降)指示装置。(3)电梯每秒升(降)一层楼。(4)电梯到达有停站请求的楼层,经过1秒电梯门打开,开门指示灯亮,开门4秒后,电梯门关闭(开门指示灯灭),电梯继续进行,直至执行完最后一个请求信号后停留在当前层。(5)能记忆电梯内外所有请求,并按照电梯运行规则按顺序响应,每个请求信号
188、保留至执行后消除。(6)电梯运行规则:当电梯处于上升模式时,只响应比电梯所在位置高的上楼请求信号,由下而上逐个执行,直到最后一个上楼请求执行完毕;如果高层有下楼请求,则直接升到由下楼请求的最高楼层,然后进入下降模式。当电梯处于下降模式时则与上升模式相反。(7)电梯初始状态为一层开门状态。Thanks for your time Thanks for your time !项目七:数字温度计设计Electronic Design Automation 391 EDA技术主要内容D 任务实现A 项目任务B 项目目标C 知识准备E 考核评价F 拓展提高A项目任务Electronic Design A
189、utomation 393 EDA技术本项目利用FPGA器件与单总线器件DS18B20(温度传感器)设计一个数字温度计,能够实现温度检测与显示功能。B项目目标Electronic Design Automation 394 EDA技术通过数字温度计设计项目训练及相关知识学习,达到如下目标:1、理解数字温度计设计方案2、掌握单总线技术的通信协议3、掌握单总线器件DS18B20的工作原理及使用方法4、掌握FPGA器件对单总线器件的控制方法5、会对DS18B20的应用进行Verilog程序设计6、能利用学习开发板对设计电路进行下载与调试7、能按照现场管理要求(整理、整顿、清扫、清洁、素养、安全、环保
190、、节能)安全文明生产8、会查找相关资料9、会撰写项目报告并答辩10、具有团队合作精神,具有一定的组织协调能力C知识准备DS18B20是一种一线式数字温度传感器,具有体积小、功耗低、测温精度高、抗干扰能力强等优点,非常适用于多点温度检测系统。并且它无需任何外围接口及A/D转换电路,全部传感元件及转换电路集成在形如一只三极管的集成电路内,可直接将采集到的室温转化成串行数字信号送处理器处理。温度测量范围为55125,测量精度保持在0.5左右。一、温度传感器二、单总线器件单总线支持一主多从式结构,设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放总线,而让其它设
191、备使用总线。图7-1所示为单总线器件的硬件接口示意图,图7-2为初始化时序(总线复位):置总线为低电平并保持至少480s,然后拉高电平,等待从端重新拉低电平作为相应,则初始化完成。1单总线的工作原理图7-1 DS18B20接口示意图图7-2 初始化信号时序图7-3为写数据信号时序,该时序包括写“0”和“1”;写数据位0时:置总线为低电平并保持至少15s,然后保持低电平15s45s等待从端对电平采样,最后拉高电平完成写0操作;写数据位1时:置总线为低电平并保持115US,然后拉高电平并保持15s45s等待从端对电平采样,完成写1操作。二、单总线器件图7-3 写数据信号时序图7-4为读数据时序,该
192、时序包括读数据”0”和”1”;读数据位时:置总线为底电平并保持至少1s,然后拉高电平保持至少1s,在15s内采样总线电平获的数据,延时45s完成读操作。二、单总线器件图7-4 读数据信号时序通常把挂在单总线上的器件称之为单总线器件,单总线器件内一般都具有控制、收发、存储等电路。为了区分不同的单总线器件,厂家生产单总线器件时都要刻录一个64位的二进制ROM代码,以标志其ID号。目前,单总线器件主要有数字温度传感器(如DS18B20)、A/D转换器(如DS2450)、门标、身份识别器(如DS1990A)、单总线控制器(如DS1WM)等。本节介绍常见的单总线数字温度传感器DS18B20的使用方法。2
193、单总线器件二、单总线器件(1)DS18B20简介DS18B20是DALLAS公司生产的一线式数字温度传感器,具有微型化、低功耗、高性能、抗干扰能力强等优点,DS18B20可以程序设定912位的分辨率,精度为0.5C。二、单总线器件(2)DS18B20的主要特性1)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电;2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;4)DS18B20在使用中不需要任何外围元件,全部
194、传感元件及转换电路集成在形如一只三极管的集成电路内;5)温范围55125,在-10+85时精度为0.5;6)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;8)测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;9)负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。二、单总线器件(3)DS18B20的内部结构DS18B20内部结构主要由四部分组成
195、:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列如下图7-5所示:DS18B20引脚定义: 1)DQ为数字信号输入/输出端;2)GND为电源地;3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)图7-5 DS18B20引脚排列EDA技术Electronic Design Automation 403 (4)DS18B20工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。DS18B20测温原理如图7-6所示。图7-6DS18B20测温原理
196、框图二、单总线器件EDA技术Electronic Design Automation 404 (5)DS18B20有4个主要的数据部件1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。二、单总线器件3)DS18B20温度传感
197、器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。4)配置寄存器低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表7-3所示:(DS18B20出厂时被设置为12位)二、单总线器件(6)高速暂存存储器高速暂存存储器由9个字节组成,其分配如表7-4所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。处理器可通过单线接口读到
198、该数据,读取时低位在前,高位在后,数据格式如表7-1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。第九个字节是冗余检验字节。二、单总线器件二、单总线器件(7)控制命令根据DS18B20的通讯协议,主机(FPGA)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主
199、CPU收到此信号表示复位成功。EDA技术Electronic Design Automation 408 D任务实现EDA技术Electronic Design Automation 409 任务1数字温度计设计方案分析本项目利用FPGA器件和DS18B20设计一个带数码管显示的数字温度计。设计要求:(1)系统时钟为50MHz;(2)用5个八段数码管(共阳极)来显示温度(精确到小数点后一位,正温格式如121.6C,负温格式如-16.8C);(3)若检测到DS18B20器件且通信正常,LED亮。图7-7 数字温度计原理图EDA技术Electronic Design Automation 410
200、任务2数字温度计设计1.新建工程2.DS18B20控制模块(ds18B20)Verilog描述EDA技术Electronic Design Automation 411 EDA技术Electronic Design Automation 420 任务2数字温度计设计3.显示模块的Verilog描述与时序仿真(1)添加设计文件,建立显示模块的Verilog源程序设计文件。EDA技术Electronic Design Automation 422 4.数字温度计顶层原理图设计(1)将核心控制模块的Verilog设计转换成原理图图标;(2)将显示模块的Verilog设计转换成原理图图标;(3)添加设
201、计文件,利用核心控制模块与显示模块原理图图标进行数字温度计的顶层电路原理图设计,如下图所示。数字温度计顶层电路原理图任务2数字温度计设计EDA技术Electronic Design Automation 423 4.对设计文件进行管脚指定(3)进行数字温度计管脚指定与编程下载,按照表7-7所示的端口管脚分配表,进行如图7-7所示的管脚指定。E.考核评价1.考核办法Electronic Design Automation 425 EDA技术学生在规定时间内完成数字温度计设计并运行测试,输出仿真结果,进行编程下载与硬件调试,课后完成设计报告。2.考核要求Electronic Design Auto
202、mation 426 EDA技术(1)完成数字温度计设计,程序结构合理,语句使用正确,原理图符合设计需求。(2)掌握QuartusII9.0混合输入法操作流程,能熟练使用原理图与Verilog语言混合设计方法进行数字温度计的设计,并能解决设计过程中碰到的问题。(3)会添加仿真文件,并能使用QuartusII9.0软件进行数字温度计的时序仿真,仿真结果正确,并能对仿真结果进行详细分析。(4)会添加约束文件,进行数字温度计管脚指定,管脚选择合理,与硬件电路对应关系明确。(5)完成数字温度计下载配置,编程下载成功。(6)设计报告按时上交,思路清晰,书写规范,结果正确,分析合理。(7)能用多种方法设计
203、数字温度计,并能指导其他成员进行相关的实践操作。3.评分标准Electronic Design Automation 427 EDA技术A能独立完成以上(1)-(7)项操作,结果完全正确,并能对各关键操作有详细分析。B能在教师或同学少量提示下,完成以上(1)-(6)项操作,结果完全正确。C能在教师或同学帮助下,完成以上(1)-(6)项操作,结果无重大失误。D不能完成以上(1)-(6)项操作,或结果有重大失误。F.拓展提高拓展提高Electronic Design Automation 429 EDA技术1电子万年历设计利用FPGA与SPI总线器件DS1302设计一个电子万年历,具体功能需求如下:(1)能够显示日期、星期与时间,即年、月、日、星期、时、分、秒;(2)用8位数码管分屏显示,上电后首先显示日期与星期,5秒后显示时间,如此循环;(3)系统时钟50MHZ.2.玩具机器狗设计Thanks for your time Thanks for your time !