数字系统设计复习纲要_第1页
数字系统设计复习纲要_第2页
数字系统设计复习纲要_第3页
数字系统设计复习纲要_第4页
数字系统设计复习纲要_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江苏师范大学科文学院数字系统设计与Verilog HDL 电气工程及其自动化系类EDA工具应用丛书数字系统设计与Verilog HDL(第4版)王金明 编著课 堂 笔 记前 言目前,EDA技术已经成为电子信息类学生一门重要的专业基础课程,并在教学、科研,以及大学生电子设计竞赛等活动中,起着越来越重要的作用,成为电子信息类本科生以及研究生必须掌握的基础知识与基础技能。随着EDA技术的应用日益广泛,对EDA课程的教学的要求也不断提高,必须对教学内容进行优化与更新,以与EDA技术的发展相适应。对于大多数学生而言,通过一学期的学习已经对EDA技术有了一定的了解,为了帮助同学们系统的掌握所学内容,我整理

2、了数字系统设计与Verilog HDL 课堂笔记一书。在本书中,共有五个章节,主要列举了数字系统设计概论、可编程逻辑器件、Verilog HDL语言、Quartus II的安装与使用的相关知识点,简明扼要直击考试要点。在本书的第五章节,通过六个例子阐述了Verilog HDL语言与Quartus II软件的配合使用。由于受编者水平和编写时间所限,书中难免有不足之处,恳请读者批评指正。编 者2014.5.17目 录1.数字系统设计概论51.1数字系统的概念51.2数字系统的发展51.2.1 EDA技术: EDA(Electronic Design Automation)51.2.2数字系统的两种

3、设计思路:51.2.3 构建数字系统的方法途径61.2.4 基于IP模块的设计61.3 数字系统的设计流程71.4 用于开发FPGA和CPLD的EDA工具72.可编程逻辑器件PLD82.1 PLD概述82.1.1 PLD的基本概念82.1.2 PLD的作用82.1.3 PLD的分类82.1.4 PLD的基本构成原理与表示方法92.2 SPLD介绍102.2.1 可编程只读存储器(PROM)102.2.2可编程逻辑阵列PLA(Programmable Logic Array)102.2.3可编程阵列逻辑PAL(Programmable Array Logic)102.2.4通用阵列逻辑(GAL)

4、122.3 HPLD介绍122.3.1 CPLD (Complex Programmable Logic Device,复杂可编程逻辑器件)122.3.2 FPGA(Field Programmable Gate Array,现场可编程门阵列)132.3.3 CPLD与FPGA的异同132.3.4 Altera 公司生产的PLD器件142.3.5 PLD器件的发展趋势143. Verilog HDL 语言143.1 Verilog HDL 基础143.1.1 词法143.1.2 数据类型153.1.3运算符163.2 Verilog HDL中的模块163.2.1 模块163.2.2 Veril

5、og HDL 数字设计中模块中功能的基本描述方式173.3 Verilog HDl 行为语句173.3.1 过程语句173.3.2 块语句183.3.3 赋值语句183.3.4 条件语句183.3.5 循环语句193.3.6 编译向导语句203.4 Verilog HDL 数字设计的层次设计风格203.5常见组合与时序逻辑电路Verilog HDL描述203.5.1 常用组合电路模块的设计203.5.2 常用时序电路模块设计214. Quartus II 介绍214.1 Quartus II 概述214.2 原理图输入法224.3 文本输入方式234.4 设计流程235. 数字系统设计实验24

6、5.1 基础实验245.1.1 加法器245.1.2 译码器255.1.3 触发器265.1.4 计数器285.2 综合设计实验295.2.1 累加器295.2.2 数码管动态扫描301.数字系统设计概论1.1数字系统的概念是指对数字信息进行存储、传输、处理的电子系统。它的输入和输出都是数字量。 通常把门电路、触发器等称为逻辑器件;将由逻辑器件构成,能执行某单一功能的电路,如计数器、译码器、加法器等,称为逻辑功能部件;把由逻辑功能部件组成的能实现复杂功能的数字电路称数字系统。数字系统和功能部件之间的区别之一在于功能是否单一。区别之二在于是否包含控制电路。1.2数字系统的发展1.2.1 EDA技

7、术: EDA(Electronic Design Automation) 立足于计算机工作平台而开发出来的一整套先进的设计电子系统的软件工具。三个发展阶段: (1)电子CAD阶段;(2)电子CAE阶段;(3)EDA阶段。EDA技术的特点:(1)高层综合和优化(2)采用硬件描述语言进行设计 (3)开放性和标准化(4)库的引入(5)支持“自顶向下”设计方法系统设计层次: (1)板图级(物理级)(2)逻辑门级(3)寄存器传输级 (4)行为级(5) 系统级1.2.2数字系统的两种设计思路:(1)自底向上法(Bottom-up设计) 设计过程从最底层设计开始。设计系统硬件时,首先选择具体的元器件,用这些

8、元器件通过逻辑电路设计,完成系统中各独立功能模块的设计,再把这些功能模块连接起来,搭建成完整的硬件系统。 在进行底层设计时,缺乏对整个电子系统总体性能的把握,在整个系统设计完成后,如果发现性能尚待改进,修改起来比较困难,因而设计周期长。(2)自顶向下法(Top_down设计) 按一定原则将系统分成若干子系统,再将每个子系统分成若干个功能模块,再将每个模块分成若干小的模块直至分成许多可以实现的基本模块。1.2.3 构建数字系统的方法途径 专用集成电路 把所设计的数字系统做成一整片规模集成电路,不仅减小了电路的体积、重量、功耗、而且使电路的可靠性大为提高。 PLD完全由用户自行定义芯片逻辑功能的“

9、通用型”数字器件。用户可以借助特定的EDA软件设计一个数字电路或数字系统,通过该软件进行一系列的操作(仿真综合适配)后形成特定的二进制文件,然后通过专门的编程器或ISP(In System Program)的方式下载到芯片中,使其具备预期的功能。可以反复修改,反复编程,直到完全满足要求。降低了开发的风险。管脚定义的灵活,增加了设计的自由度,提高了效率。同时这种设计减少了所需芯片的种类和数量,缩小了体积,降低了功耗,提高了系统的可靠性。1.2.4 基于IP模块的设计IP(Intellectual Property)原来的含义是指知识产权、著作权等,在IC设计领域则可以理解为完成某种功能的设计模块

10、,也可称为IP核。 IP核分为软核、硬核和固核:软核指的是在寄存器级或门级对电路功能用HDL进行描述,表现为VHDL或Verilog HDL代码。用户在使用软核的时候可以修改,以满足自己所需要的功能。实现后电路的总门数在5000门以上。硬核指的是以版图形式描述的设计模块,它基于一定的设计工艺,用户不能改动,用户得到的硬核仅是产品的功能,而不是产品的设计。一般在专用集成电路ASIC器件上实现,总门数在某些方面5000门以上。 固核介于硬核和软核之间,允许用户重新定义关键的性能参数,内部连线也可以重新优化。一般在FPGA器件上实现的、经验证是正确的、总门数在某些方面5000门以上电路结构编码文件称

11、为“固核”。1.3 数字系统的设计流程1、设计输入目前,已成为IEEE标准的是VHDL语言和Verilog HDL语言。l VHDL (Very High Speed Integration Circuit HDL,超高速集成电路硬件描述语言):是于1985年由美国国防部的支持下正式推出的。1987年被采纳为IEEE标准。l Verilog HDL语言是美国Gateway Design Automation公司 于1983年推出的, 1995年被采纳为IEEE标准。2、综合: 指的是将较高层次的设计描述自动转化为较低层次描述的过程。综合器就是能够自动实现上述转换的工具。或者说,综合器是能够将原

12、理图或HDL语言表达和描述的电路功能转化为具体的电路结构网表的工具。 综合有下面几种形式:1)行为综合;2)逻辑综合;3)版图综合。3、适配:是将由综合器产生的网表文件配置于指定的目标器件中,并产生最终的可下载文件。 适配过程包括: 映射、 布局、 布线。4、仿真: 是对所设计电路的功能的验证。 功能仿真:在做完理论设计,没有选择具体器件时所做的仿真。不考虑信号时延等因素的仿真,也叫前仿真。 时序仿真:是在选择了具体器件并完成了布局布线后 进行的包含定时关系的仿真。也叫后仿真。它主要用于验证由于不同的布线方式、分区规划而产生的各种延时对系统功能的影响。5、编程下载和配置:把适配后生成的编程文件

13、装入到PLD器件中的过程称为下载。通常对CPLD器件的下载称为编程(Program),对于FPGA器件的下载称为配置(Configure)。下载后的FPGA/CPLD器件就是所设计的电子系统。1.4 用于开发FPGA和CPLD的EDA工具1.基于CPLD/FPGA的集成开发环境2.可编程逻辑器件PLD2.1 PLD概述2.1.1 PLD的基本概念可编程逻辑器件PLD制作工艺采用的是CMOS工艺,在这些器件的内部,集成了大量功能独立的分立元件,它们可以是基本逻辑门、由基本逻辑门构成的宏单元,以及与阵列、或阵列,芯片内还有大量可配置的连线,在器件出厂时,芯片内的各个元件、单元相互间没有连接,芯片暂

14、不具有任何逻辑功能。芯片内的各个元件、单元如何连接,由用户根据自身的设计的电路功能要求通过计算机编程决定。2.1.2 PLD的作用高密度的PLD,即CPLD/FPGA,能完成任何数字器件的功能,上至高性能的CPU,下至简单的74电路,都可以用CPLD/FPGA 来实现。2.1.3 PLD的分类按编程特点分类按编程次数分类 一次性编程器件(One Time Programmable, OTP) 可多次编程器件按不同的编程元件和编程工艺划分采用熔丝(Fuse)编程元件的器件,如PROM。采用反熔丝(Antifuse)编程元件的器件。 采用紫外线擦除、电编程方式的器件,如EPROM。 采用电擦除、电

15、编程方式的器件,一般采用EEPROM和快闪存储器 (Flash Memory)两种工艺实现。采用静态存储器(SRAM)结构的器件按结构特点分类阵列型的PLD器件:基本结构为与或阵列。如:SPLD和绝大多数的CPLD。单元型的PLD器件:基本结构为逻辑单元。如:FPGA2.1.4 PLD的基本构成原理与表示方法常用门电路在PLD中的表示法(a)与门;(b)或门;(c)输入缓冲器;(d)三态输出缓冲器;(e)非门2.2 SPLD介绍2.2.1 可编程只读存储器(PROM)它包含一个固定的“与”阵列和一个可编程的“或”阵列, 它的“与”阵列是一个“全译码阵列”,即对某一组特定的输入i(i=0,1,2

16、)只能产生一个唯一的乘积项。因为是全译码,当输入变量为n个时,阵列的规模为2n,所以PROM的规模一般很大。PROM存在的不足:PROM虽然也可以用来产生组合逻辑函数,但因为往往只用到了与逻辑阵列输出的最小项的一部分,而且有时这些最小项还可以合并,因此器件内部资源的利用率不高。2.2.2可编程逻辑阵列PLA(Programmable Logic Array) 它的 “与”阵列和“或”阵列都是可编程的。n PLA与PROM比较:1、由于PLA的与逻辑阵列是可编程的,所以就可通过编程只产生所需要的乘积项,使得与逻辑阵列和或阵列所需的规模大为减少,从而有效地提高了芯片的利用率。2、PLA器件内部的与

17、阵列和或阵列均可编程,因而在实现函数时,它的灵活性最高。3、由于PLA的与、或阵列均要求能编程,这种结构在实现比较简单的逻辑功能时还是比较浪费的。2.2.3可编程阵列逻辑PAL(Programmable Array Logic) 其基本结构包含一个可编程的“与”阵列和一个固定的“或”阵列。u PAL的几种输出电路的结构和反馈形式:(1)专用输出结构(2)可编程I/O结构 (3)寄存器输出结构 (4)异或型输出结构u 优缺点1、增加了各种形式的输出电路,扩展了电路的逻辑功能,提高了使用的灵活性。2、采用了双极型熔丝工艺,只能一次性编程3、PAL器件输出电路结构的类型繁多,给设计和使用带来一些不便

18、2.2.4通用阵列逻辑(GAL)采用E2CMOS工艺制作,可以用电信号擦除并反复编程上百次。在结构上的显著特点是输出采用了宏单元(OLMC )。GAL器件的可编程“与”阵列则是送到OLMC上输出的。通过对OLMC单元的编程,器件能满足更多的逻辑电路要求,从而使它比PAL器件具有更多的功能,设计也更为灵活。输出逻辑宏单元(OLMC)的结构4选1选择器用来选择输出方式、输出极性2选1选择器用来选择反馈信号(即选择输出引脚为输入变量)u SPLD结构对比表:2.3 HPLD介绍2.3.1 CPLD (Complex Programmable Logic Device,复杂可编程逻辑器件)一般把所有的

19、集成度超过1000门以上的EPLD (Erasable Programmable Logic Device)器件都称为是CPLD。 * CPLD 包括 三部分:可编程逻辑宏单元、可编程I/O单元、可编程内部连线(1)、可编程逻辑宏单元(LMC,Logic Macro Cell):称为内部逻辑宏单元。 LMC内部主要包括与阵列、或阵列、可编程触发器和数据选择器等电路,能独立地配置为时序或组合工作方式。(a) 多触发器结构和“隐埋”触发器结构:不增加芯片的管脚(b) 乘积项共享结构(c) 异步时钟(2)、可编程I/O单元(IOC,Input/Output Cell)内部信号到引脚的接口部分。一般只

20、有少数几个专用输入端,大部分端口均为I/O 端。其内部通常由三态输出缓冲器、输出极性选择器、输出选择控制器、反馈选择器等几组数据选择器组成。通过编程可以使每个I/O引脚单独地配置为输入、输出和双向工作、寄存器输入等各种不同的工作方式,因而使I/O端的使用更为方便、灵活。(3)、可编程内部连线(PIA,Programmable in aline): 可编程内部连线的作用是在各逻辑宏单元之间以及逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自输入端的信号,并将宏单元的信号送往目的地。在CPLD器件中,一般采用固定长度的线段来进行连接。2.3.2 FPGA(Field

21、Programmable Gate Array,现场可编程门阵列) 包括三部分:可编程逻辑块(CLB,Configurable Logic Block)、I/O模块(IOB,I/O Block)、可编程互连资源(PIR,Programmable Interconnect Resource)(1)、可编程逻辑块CLB:是实现用户功能的基本单元,它们通常规则地排列成一个阵列 主要由逻辑函数发生器、触发器、数据选择器等部分组成。 逻辑函数发生器: CLB中的逻辑函数发生器都是基于查找表结构。查找表结构(LUT,Look-up Table):LUT本质上就是一个RAM。 每一个LUT可以看成一个有4位

22、地址线的16x1的RAM。 当用户通过描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。(2)、IOB:主要完成芯片上逻辑与外部封装脚的接口,它通常排列在芯片的四周;主要由输入触发器、输入缓冲器和输出触发器/锁存器、输出缓冲器组成。 每个IOB控制一个引脚,它们可以被配置为输入、输出或双向I/O功能。( 3)、PIR: 可编程互连资源(PIR)包括各种长度的连线线段和一些可编程连接开关, 它们将各个CLB之间或CLB、 IOB之间以及IOB之间连接起来

23、,构成特定功能的电路。这些金属线段带有可编程开关,通过自动布线实现FPGA内部的CLB和CLB和IOB之间的连线。 连线有三种互连结构:单长线、双长线、长线。 2.3.3 CPLD与FPGA的异同 (1)、相同点:输入/输出单元; 逻辑块阵列;互连资源(2)、CPLD与FPGA的差别:l CPLD是阵列式结构,基于乘积项技术, FPGA是单元式结构,基于查找表技术;l CPLD器件的关键技术是E2PROM和快闪存储器工艺 , FPGA通常采用CMOS SRAM工艺;l CPLD拥有上电即可工作的特性, FPGA需要一个加载过程l CPLD的内连续性的布线结构使其时序延迟具有均匀性和可预测性,

24、FPGA具有的分段式布线结构使其时序延迟具有不可预测性;l CPLD 比较适合于实现各种组合逻辑, FPGA比较适合于含有时序逻辑较多的电路2.3.4 Altera 公司生产的PLD器件主要产品分为CPLD和FPGA两大类型CPLD 基本结构单元是乘积项,在工艺上采用E2PROM编程单元。FPGA 类型器件采用SRAM编程单元。2.3.5 PLD器件的发展趋势 (1)向大规模、高集成度方向进一步发展(2)向低电压、低功耗的方向发展(3)向高速可预测延时的方向发展(4)向功能丰富型发展(5)向模数混合可编程方向发展边界扫描测试技术: 边界扫描测试技术主要解决芯片的测试问题。标准的边界扫描测试只需

25、要四根信号线,能够对电路板上所有支持边界扫描的芯片内部逻辑和边界管脚进行测试。应用边界扫描技术能增强芯片、电路板甚至系统的可测试性。 3. Verilog HDL 语言3.1 Verilog HDL 基础3.1.1 词法Verilog HDL程序是由各种符号流构成的,我们把它们称之为词法。Verilog HDL 中的词法类型包括:(1) 间隔符与注释符;(2) 数值;(3) 字符串;(4) 标识符、关键字;(5) 运算符。一、间隔符与注释符间隔符包括空格符、制表符(tab)、换行以及换页符。Verilog HDL有两种注释形式,单行注释以两个字符“/”起始,以新的一行作为结束;而段注释则是以/

26、*起始,以*/结束。二、数 值Verilog HDL的数值由以下四个基本的值组成:0代表逻辑0或假状态 1代表逻辑1或真状态 x逻辑不定态 z高阻态在程序运行中,其值不能改变的量称为常量。整型数、实型数1).整型数及其表示:+/-<位宽>' <基数> <数值> a、数值常量不能将下划线“_” 其放于数值的首位。b 、在和进制之间,数值之间不允许出现空格。c、如果定义的位宽比实际的位数长,通常在左边补0,但如果数的最左边一位为x或z, 就相应的用x或z在左边补位。d、数值常量中的“z”可以用“?”来代替。2).实型数及其表示: Verilog中的实数可

27、以用十进制表示法与科学计数法两种格式来表示如果采用十进制格式,小数点两侧都必须至少有一位数字,否则为非法表示形式。实数可以转化为整数,根据四舍五入的原则。三、字符串 在Verilog中,字符串大多用于显示信息的命令中。字符串常量是用双引号括起来的字符序列串,它必须包含在同一行中,不能分成多行书写。 字符串变量是寄存器型变量。四、标识符、关键字标识符: 用户为程序描述中的Verilog 对象所起的名字。模块名、端口名和实例名都是标识符。l 标识符必须以英语字母a-z, A-Z起头,或者用下横线符 _ 起头。其中可以包含数字、 $符和下横线符。l Verilog 是大小写敏感的。【特殊标识符】:

28、$ 符号表示 Verilog 的系统任务和函数特殊符号 “#” 常用来表示延迟关键字:是Verilog语言内部的专用词,所有的关键词都是小写的。3.1.2 数据类型连线型数据相当于硬件电路中的各种物理连接,代表的是物理连接线。 寄存器型数据一般对应的是具有状态保持作用的电路,如触发器、寄存器、锁存器。它的特点是输出能保持其值,直到它被赋于新的值。 对于端口信号,输入端口只能是net类型。输出端口可以是net类型,也可以是register类型。若输出端口在过程块中赋值则为register类型;若在过程块外赋值(包括实例化语句,assign 连续赋值语句),则为net类型。 内部信号类型与输出端口

29、相同,可以是net或register类型。parameter 用来定义常量,即用来定义一个标识符代表一个常量。主要用于定义延迟时间和变量宽度。3.1.3运算符按所带操作数的个数区分,运算符可分为3类:单目运算符、双目运算符、三目运算符。按功能分:算术运算符、关系运算符、等式运算符、逻辑运算符、位运算符、 缩位逻辑运算符、移位运算符、并接运算符等。(1)算术运算符用于进行数值运算,+、*、/、%。 (2)逻辑运算符: &&(逻辑与)、|(逻辑或)、!(逻辑非)(3)位运算:将两个操作数按对应位分别进行逻辑运算: (非)(按位取反); &(与); |(或); (异或);,(

30、同或); &(与非); |(或非)(4) 关系运算符>(大于);>= (大于等于) ;< (小于);<= (小于等于)。(5) 等式运算符:= =(相等);!=(不相等);= = =(全等);!= =(不全等)。(6)缩位运算符:缩位运算符将一个矢量缩减为一个标量。 &(与);|(或);(异或);(同或);&(与非);|(或非)。(7)移位运算符A<<n (左移位运算符) A>>n (右移位运算符)(8)条件运算符条件运算符(? :)信号=条件?表达式1:表达式2;(9)拼接运算符拼接运算符 3.2 Verilog HDL

31、中的模块3.2.1 模块模块是Verilog HDL语言的基本描述单位,它用于描述某个电路的功能或结构,以及它与其它模块通信的外部端口。 module <模块名> (<端口列表>)端口说明 (input,output,inout)数据类型说明(wire reg)逻辑功能或结构构成定义(门元件例化、assign数据流always块行为描述、调用其它模块)endmodule 每个模块实现特定的功能;模块可以进行层次嵌套。Verilog HDL程序一行可以写多条语句,也可以一条语句分成多行书写,每条语句以分号结束, endmodule语句后面不必写分号。3.2.2 Veril

32、og HDL 数字设计中模块中功能的基本描述方式(1)、结构描述方式: 描述电路是由哪些基本元件组成,以及相互连接关系。内置门级元件(12个逻辑门and or xor not 等 )、用户自己定义的模块。 门元件的调用调用格式:门元件名称 实例名 (端口列表)多输入门的端口列表: (输出、输入1、输入2、输出3.);对于三态门输入、输出端口:输出,输入,使能控制端);对于buf和not输入、输出端:(输出1,输出2,输出3,输入);(2)、数据流描述方式: 以“assign”关键字开头的连续赋值语句 。 连续赋值语句的语法为: assign #延时量 变量名 = 赋值表达式;(3)、行为描述方

33、式: 行为描述指电路输入输出信号间的逻辑关系。 (4)、混合设计描述方式: 行为功能主要使用过程语句来描述。3.3 Verilog HDl 行为语句3.3.1 过程语句(1)initial 过程语句作用与特点: initial语句主要用于初始化和波形生成,initial 过程块中的语句顺序执行且仅执行一次。语法格式: initial begin  语句1;  语句2;  . 语句n;  end 变量一定被声明为reg型。(2)always 过程语句特点:always语句后跟着的语句是否执行,则要看它的触发条件是否满足,如满足则运行该语

34、句一次,如不断满足则不断地循环执行。 语法格式:always (敏感信号表达式 ) 块语句 3.3.2 块语句串行块begin_end或 begin:块名 块内声明语句 ;语句1; 语句2; . 语句n; end 串行块(顺序块)有以下特点: 1) 块内的语句是按顺序执行的,即只有上面一条语句执行完后下面的语句才能执行。 2) 每条语句的延迟时间是相对于前一条语句执行结束的时间而言的。 3) 直到最后一条语句执行完,程序流程控制才跳出该语句块。 

35、顺序块的格式如下:  begin 语句1; 语句2; . 语句n; end 3.3.3 赋值语句(1) 连续赋值语句以关键字assign 开头的为连续赋值语句,主要用于对wire型变量进行赋值。 (2) 过程赋值语句用在过程语句当中,一般用于对reg型变量进行赋值。过程赋值有阻塞赋值和非阻塞赋值两种方式。 阻塞赋值方式赋值符号为“=”。阻塞赋值语句执行的过程是:首先计算右端赋值表达式的取值,然后立即将计算结果赋值给“=”左端的被赋值变量。如果在一个块语句中,有多条阻塞赋值语句,在前面的赋值语句没有完成之前,后面的语句就不能被

36、执行。 非阻塞赋值方式赋值符号为“ < =”。非阻塞赋值方式的特点是:在整个过程块结束时才完成赋值操作。一齐赋值。3.3.4 条件语句(3) if(表达式1)          语句1;  else  if(表达式2)  语句2;  else  if(表达式3)  语句3; . else  if (表达式m)&#

37、160; 语句m;     else        语句n; (1)Ifelse语句(1) if(表达式) 语句; (2) if(表达式)          语句1       else     &#

38、160;         语句2; (2)case 语句case语句有三种表示方式:1) case(表达式)   <case 分支项>endcase 2) casez(表达式)   <case 分支项> endcase 3) casex(表达式)  <case 分支项> endcase  case分支项的一般格式如下: 分支表达式: 

39、0;   语句; 缺省项(default项): 语句;1)在case语句中,控制表达式与分支表达式的值之间的比较是一种全等比较(=),必须保证两者的对应位全等。2) casez与casex语句是case语句的两种变体,在casez语句中,z被认为是无关值。在casex语句中,值x和z都被认为是无关位。3)可以用? 字符来代替字符x或z,表示无关位。3.3.5 循环语句(1)forever循环语句forever语句实现的是一种无限的循环。forever循环语句常用于产生周期性的波形,用来作为仿真测试信号。forever语句不能独立写在程序中,一般

40、必须写在initial块中。forever语句的格式如下:forever 语句; /这里的语句就是被重复执行的循环体 或  forever  begin 多条语句;  end disable关键字提供了一种中止命名块执行的方法。(2)repeat 循环语句repeat 语句实现的是一种循环次数预先指定的循环。repeat语句的格式如下:  repeat(循环次数表达式)   begin  多条语句 end (3)while 循环语句 while循环语句实现

41、的循环是一种”条件循环“。while语句的格式如下:  while(条件表达式)  begin  多条语句  end (4)for 循环语句for循环语句实现的循环是一种“条件循环” 。for 循环语句的格式如下:for( 语句1;条件表达式;语句2)begin 多条语句; end 3.3.6 编译向导语句以字符“”(反引号)开头;末尾不加分号; (1)宏替换define其使用格式为:define 宏名 字符串(数值或表达式)1)define用来将一个简单的宏名代替一个字符串或一个复杂的表达式。2)文本内容必须在一行中定义,不能采用多行。3)在

42、引用已定义的宏名时,要在宏名前面加上符号“” 。4)可以利用undef 指令来取消宏定义。(2)文件包含includeinclude 是文件包含语句,它可将一个文件全部包含到另一个文件中。其格式为: include “文件名” (3)条件编译ifdef、else 和endif 条件编译命令可以指定仅对程序中的部分内容进行编译。其使用格式为:(1)ifdef 宏名 语句块 endif(2)ifdef 宏名 语句块1else语句块2 edndif 3.4 Verilog HDL 数字设计的层次设计风格Verilog HDL作为一种硬件描述语言,能够从算法级、寄存器级、门级到开关级的多种抽象设计层次

43、对数字系统进行建模。在用Verilog语言设计系统时,一般优先选择层次高的描述方式,因为行为级的描述给综合器提供了可优化的空间。而门级结构描述的电路综合器则很难再进行优化。模块的调用调用格式:模块名称 实例名(信号端口)信号端口可以通过位置或名称关联;但是关联方式不能够混合使用。位置关联: (端口1,端口2,端口3,. );名称关联: (.被调用模块端口名称1(端口名称1), .模块端口名称2(端口名称2), .);Verilog HDL 中的顺序执行与并发执行 顺序执行:串行块内的语句、 “always过程模块”内部的语句、if-else。 并发执行: “assign”持续赋值语句及实例元件

44、调用及两个或更多个“always 过程块”、 并行块内部语句。3.5常见组合与时序逻辑电路Verilog HDL描述3.5.1 常用组合电路模块的设计 组合逻辑电路在数字系统中起着基本组件的作用。 组合逻辑电路包括:门电路、双向三态门、加法器、多路选择器、比较器、乘法器等。(1)简单组合电路的描述调用内置门元件描述、用assign连续赋值语句描述、用过程语句always块描述描述简单的组合逻辑通常使用assign结构,条件运算符是一种在组合逻辑实现分支判断时常使用的格式。(2)复杂组合电路的描述一般用always块实现较复杂的组合逻辑电路3.5.2 常用时序电路模块设计(1) 简单时序逻辑电路

45、的描述通常使用always块( (posedge clk)或 (negedge clk)来描述时序逻辑。(2) 复杂时序逻辑电路的描述通常在always 过程语句里使用条件语句来实现较复杂的时序逻辑电路 。4. Quartus II 介绍4.1 Quartus II 概述 一、概述界面开放: Quartus II是Altera公司的EDA软件,但它可以与其它工业标准的设计输入、综合与校验工具相连接与结构无关: Quartus II系统的核心Compiler支持Altera公司的可编程逻辑器件系列,提供了与结构无关的可编程逻辑环境。丰富的设计库: Quartus II提供丰富的库单元供设计者调用

46、,其中包括74系列的全部器件和其它多种逻辑功能部件,调用库元件进行设计,可以大大减轻设计人员的工作量,缩短设计周期。硬件描述语言: Quartus II软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera公司的AHDL。完全集成化:内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。二、软件的安装(1)运行安装程序(可执行文件)(2)破解文件1. 将crack/bin/sys_cpt.dll拷贝至C:altera80quartusbin下;2. 将crack/license.DAT拷贝至C:altera80下;3.查找网卡物理地址,点击运

47、行,输入cmd,打开操作台,输入命令行 ipconfig /all4. 找到以太网适配器 本地连接,下面有物理地址,输入时取消dash(-) ,只包含字符和数字5. 用记事本打开C:altera80license.DAT,将HOSTID=xxxxxxxxxxxx, 改成你的网卡物理地址,修改后保存。(3)认证4.2 原理图输入法(一)设计输入(二) 设计编译编译器(Complier)完成错误检查、网表提取、逻辑综合、器件适配、产生仿真文件和编程配置文件。指定所用芯片型号分三步完成 给芯片分配引脚运行编译器(三) 设计仿真仿真器(Simulator)四大基本步骤:步骤1:建立波形输入文件 步骤2

48、:仿真前设置 步骤3:编辑输入节点波形 步骤4:仿真(四)编程下载步骤1:用专用连接线将计算机USB口与下载箱相连,打开实验箱电源;连接所设计的I/O线等硬件步骤2:选择Quartus主窗口的Tools/Programmer命令或点击 进入器件编程和配置对话框4.3 文本输入方式.v:是Verilog HDL设计输入文件.vhd:是VHDL设计输入文件.tdf:是AHDL 设计输入文件利用QuartusII文本输入方式进行设计的步骤同原理图法新建工程相同4.4 设计流程1.设计输入: 1)新建文件夹/新建项目/新建文件/选择原理图(文本)输入方式 2)画图(输入图元、连线、给端口及引线命名)/

49、录入文本 3)存盘 4)编译2.设计编译: 1)指定所用芯片型号:Assign/device 2) 给芯片分配引脚: Assign/ pin(或快捷键) 3)运行Processing/Complier (或快捷键)3.仿真: 1)新建文件/选择波形输入方式/添加节点(端口)名称 2)仿真前设置:功能仿真or时序仿真 设置网格尺寸及仿真结束时间 3)给输入添加波形 4)存盘 5)运行Processing/Generate Functional simulation Netlist 6)运行Simulator 7)生成图元4.下载编程: 1)连接实验箱与电脑的UBS线、实验箱电源线、I/O线2)选

50、择Quartus主窗口的Tools/Programmer,进行编程配置(USB Blaster、JTAG) 3)下载( )5.在线测试:5. 数字系统设计实验5.1 基础实验这一章节的是实验主要为数字电路中一些常用的基本数字逻辑单元设计实验和Verilog HDL语言基本设计方法训练实验。设置这一部分的实验有两个目的:一是熟悉实验基本设计流程并初步学会试验箱的使用;二是为后面的综合设计实验及课程设计实验打下基础,同时为复杂电路提供已设计好且经过验证的模板,以备使用。5.1.1 加法器一、实验目的(1)复习加法器的分类以及工作原理。(2)掌握用图形法设计半加器的方法。(3)掌握用元件列化法设计全

51、加器的方法。(4)掌握用元件列化法设计多位加法器的方法。(5)掌握用Verilog HDL语言设计多位加法器的方法。(6)学习运用波形仿真验证程序的正确性。(7)学习定时分析工具的实验方法。二、实验原理加法器是能实现二进制加法运算的电路,是构成计算机中算术运算电路的基本单元。目前,在计算机中,无论加、减、乘、除法运算,都是化为若干步加法运算来完成的。加法器可分为1位加法器和多位加法器两大类。1位加法器又可分为半加器和全加器两种,多位加法器可分为串行进位加法器和超前进位加法器两种。(1)半加器如果不考虑来自低位的进位而将两个1位二进制数相加,称半加器。实现半加运算的电路则称为半加器。若设A和B是

52、两个1位的加数,S是两者相加的和,C是向高位的进位。则由二进制加法运算规则可以得到:(2)全加器在将两个1位二进制数相加时,除了最低位以外,每一个都应该考虑来自低位的进位,即将两个对应位的加数来自低位的进制的三位数相加,这种运算称全加。实现全加运算的电路则称为全加器。5.1.2 译码器一、实验目的(1)复习二进制译码器及显示器的构成及工作原理(2)掌握Verilog HDL语言设计二进制译码器的方法(3)掌握用Verilog HDL 语言设计显示译码器的方法(4)进一步学习运用波形仿真验证程序的正确性二、实验原理译码器是数字系统设计中常用的组合逻辑电路,其逻辑功能是将每个输入的二进制代码译成对

53、应的高、电平信号并输出。译码是编码的反操作。常见的译码器电路由二进制译码器、二十进制译码器和显示译码器三类。(1)3线8线译码器3线8线译码器是二进制译码器的一种。其输入胃一组3位二进制代码,而输出则是一路高低电平信号。(2)七段数码管显示译码器为了能以十进制数码直观地显示数字系统的运行数据,目前广泛使用七段数码显示译码器来显示字符,因这种字符显示器由七段课发光的线段拼合而成,又称为七段数码管。半导体数码管的每条线段都是一个发光二极管。如果七个发光二极管的公共端是阴极并且接在一起,则称之为共阴极数码管,反之则称之为共阳极数码管。半导体数码管可以用TTL和CMOS集成电路直接驱动。为此,就需要使

54、用显示译码器将BCD代码译成数码管所需要的驱动信号,以便数码管以十进制数字显示出BCD代码所表示的数值。三、实验内容及步骤(1)用Verilog HDL语言设计3线8线译码器,仿真设计结果。(2)用Verilog HDL语言设计七段数码管显示译码器,仿真设计结果,进行定时分析。(3)下载七段数码管显示译码器,并进行在线测试。四、设计示例(1)用Verilog HDL语言设计3线8线译码器module decoder_38(out,in);output7:0out;input2:0in;reg7:0out;always(in)begincase(in)3'd0:out=8'b11111110;3'd1:out=8'b11111101;3'd2:out=8'b11111011;3'd3:out=8'b11110111;3'd4:out=8'b11101111;3'd5:out=8'b11011111;3'd6:out=8'b10111111;3'd7:out=8'b01111111;endcaseendendmodule(2) 用Verilog HDL语言设计七段数码管显示译码器module decode4_7(a,b,c,d,e,f,g,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论