收藏 分享(赏)

新编数字逻辑电路(江国强).ppt

上传人:s36f12 文档编号:8696904 上传时间:2019-07-08 格式:PPT 页数:437 大小:7.31MB
下载 相关 举报
新编数字逻辑电路(江国强).ppt_第1页
第1页 / 共437页
新编数字逻辑电路(江国强).ppt_第2页
第2页 / 共437页
新编数字逻辑电路(江国强).ppt_第3页
第3页 / 共437页
新编数字逻辑电路(江国强).ppt_第4页
第4页 / 共437页
新编数字逻辑电路(江国强).ppt_第5页
第5页 / 共437页
点击查看更多>>
资源描述

1、2019/7/8,1,新编数字逻辑电路,江国强 编制 桂林电子科技大学 信息科技学院,2019/7/8,2,目 录,第1章 数制与编码 第2章 逻辑代数基础 第3章 门电路 第4章 组合逻辑电路 第5章 触发器 第6章 时序逻辑电路 第7章 脉冲单元电路 第8章 数模与模数转换 第9章 程序逻辑电路 第10章可编程逻辑器件 设计实例,2019/7/8,3,第1章 数制与编码,1.1 概述 1.2 数制及其转换 1.3 编码 1.4 现代数字系统设计方法,2019/7/8,4,第2章 逻辑代数基础,2.1 逻辑代数基本概念 2.2 逻辑代数运算法则 2 .3 逻辑函数的表达式 2.4 逻辑函数的

2、公式简化法 2.5 Verilog HDL基础,2019/7/8,5,第3章 门电路,3.1 概述 3.2 晶体管的开关特性 3.3 分立元件门 3.4 TTL集成门 3.5 其他双极型的集成门 3.6 MOS集成门 3.7 基于Verilog HDL的门电路设计,2019/7/8,6,第4章 组合逻辑电路,4.1 概述 4.2 常用组合逻辑电路 4.3 组合逻辑电路设计 4.4 组合逻辑电路的竞争-冒险现象,2019/7/8,7,第5章 触发器,5.1 概述 5.2 基本RS触发器 5.3 钟控触发器 5.4 集成触发器 5.5 触发器之间的转换 5.6 触发器的设计,2019/7/8,8,

3、第6章 时序逻辑电路,6.1 概述 6.2 寄存器和移位寄存器 6.3 计数器 6.4 时序逻辑电路设计 6.5 数字系统设计方法,2019/7/8,9,第7章 脉冲单元电路,7.1 概述 7.2 施密特触发器 7.3 单稳态触发器 7.4 多谐振荡器,2019/7/8,10,第8章 数模和模数转换,8.1 概述 8.2 数模(D/A)转换 8.3 模数(A/D)转换,2019/7/8,11,第9章 程序逻辑电路,9.1 概述 9.2 随机存储器 9.3 只读存储器 9.4 基于Verilog HDL的存储器设计 9.5 程序逻辑电路的应用,2019/7/8,12,第10章 可编程逻辑器件,1

4、0.1 可编程逻辑器件的基本原理 10.2 可编程逻辑器件的设计技术 10.3 可编程逻辑器件的编程与配置,2019/7/8,13,第1章 数制与编码,1.1 概述1.1.1 模拟电子技术和数字电子技术模拟电子技术是分析和处理模拟信号的技术,模拟信号(如正弦波)具有在数值上和时间上都是连续的特点。使用的主要器件:晶体管工作在线性区(即放大区)用于构成信号的放大和正弦振荡电路。,本章介绍脉冲信号和数字信号的特点、数制及其转换、二-十进制编码和字符编码。,数字电子技术是分析和处理数字信号的技术,数字信号(如矩形波)具有在数值上和时间上都是不连续的特点,使用的主要器件:晶体管,但工作在非线性区(即截

5、止区和饱和区),构成信号的开关电路。,2019/7/8,14,脉冲电路,所谓脉冲电压或电流是指在极短暂时间间隔内作用于电路的电压或电流。,尖脉冲,方波,矩形脉冲,梯形脉冲,2019/7/8,15,脉冲上升时间:脉冲前沿从0.1Um上升到0.9Um所需要的时间,脉冲下降时间:脉冲前沿从0.9Umx下降到0.1Um所需要的时间,脉冲的主要参数,Um,0.9Um,0.5Um,0.1Um,0,tw,tr,tf,tp,脉冲幅度:脉冲电压或电流由0跳变至最大值,前沿,平顶,后沿,T,脉冲宽度:从脉冲前沿上升到0.5Um处开始,到脉冲后沿下降到0.5Um为止所持续的时间。也称有效脉宽。,脉冲周期:周期性重复

6、的脉冲序列中,两个相邻脉冲间的时间间隔。,2019/7/8,16,1.1.2 脉冲信号和数字信号 狭义:脉冲信号是指在短时间内突然作用的信号。广义:除了正弦波或若干个正弦波合成的信号以外的信号都可以称为脉冲信号。特点:脉冲波形是不连续的,但一般都有周期性。,2019/7/8,17,数字信号是指由高低两种电平构成的矩形波,通常用“1”表示高电平,用“0”表示低电平。把矩形波按周期划分,就可以得到由0和1构成的符号组合,如:“110100011”,它可以代表二进制数字,所以把矩形波称为数字信号。数字信号也是一种脉冲信号。,1.1.3 数字电路的特点 数字电路只有“与”“或”“非”三种基本电路,电路

7、简单,而且容易实现。,2019/7/8,18, 数字电路容易实现集成化,数字集成电路(IC)具有体积小、功耗低、可靠性高。, 数字电路用0和1两种状态来表示信息,便于信息的存储、传输和处理。, 数字电路能够对输入的数字信号进行各种算术运算和逻辑运算。能按照人们设计好的规则,进行逻辑推理和逻辑判断,得出相应的输出结果,即数字电路具有逻辑思维能力,它是计算机以及智能控制电路的基本电路,2019/7/8,19,1.2 数制及其转换,1.2.1 数制及其转换 1. 数制十进制、二进制、八进制和十六进制。 (1)十进制 用09十个符号来表示数,基数:i = 10(符号个数) 权值:10i 进位规则:“逢

8、十进一”或“借一当十”,(125.625)10= 1102+2101+5100+610-1+210-2+510-3,2019/7/8,20,(2)二进制 用0和1两个符号表示数,基数是2,权值为2i。 进位规则:“逢二进一”或“借一当二”,任意一个二进制数D均可展开为: (1101.101)2= 123+122+021+120+12-1+02-2+12-3 =(13.625)10,2019/7/8,21,(3)八进制 用07八个符号表示数,基数:8,权值:8i 进位规则:“逢八进一”或“借一当八” 任意一个八进制数D均可展开为:,(376.65)8= 382+781+680+68-1+58-2

9、=(254.828125)10,2019/7/8,22,(4)十六进制数 用09和AF十六个符号表示数,基数:16,权值:16i 进位规则:“逢十六进一”或“借一当十六” 任意一个十六进制数D均可展开为:,(1FD.6C)16= 1162+15161+13160+616-1+1216-2 =(509.421875)10,2019/7/8,23,在数字电路中,可以用括弧加下注脚的方式,或者用在数字后面加数制前缀或后缀的方式。例如,在Verilog HDL中 十进制数的前缀为“D”或“d” (Decimal) 二进制数的前缀为“B”或“b” (Binary) 八进制数的前缀为“O”或“o” (Oc

10、tonary) 十六进制数的前缀为“H”或“h” (Hexadecimal)。例如,(25)10=d25(25D)=25 (十进制数的前缀或后缀可略) (1101.101)2=b1101.101(1101.101B) (76.56)8=o76.56(76.56O) (1FD.6C)16=h1FD.6C(1FD.6CH),2019/7/8,24,2. 数制之间的转换 十进制数到N进制数的转换 整数部分:除以N看余数 小数部分:乘以N看向整数的进位 例如:求(62.625)10?,(62.625)10(111110.101)2,2019/7/8,25,(2)N进制数转换为十进制数 方法:按权展开

11、(1101.011)2 =,123+122+021+120+02-1+12-2+12-3=,8+4+0+1+0.0+0.25+0.125=(13.375)10,(376.65)8= 382+781+680+68-1+58-2=(254.828125)10,(1FD.6C)16= 1162+15161+13160+616-1+1216-2 =(509.421875)10,2019/7/8,26,(3)二进制数与八进制数之间的转换 因为23=8,因此3位二进制数对应1位八进制数,而1位八进制数对应3位二进制数。例如: (11010011.1101101)2=(323.664)8 (174.536)

12、8=(1111100.10101111)2,(4)二进制数与十六进制数的转换 因为24=16,所以4位二进制数对应1位十六进制数,而1位十六进制数对应为4位二进制数。例如: (11010011.1101101)2=(D3.DA)16 (17C.5F)16=(101111100.01011111)2,2019/7/8,27,1.3 编码,1.3.1 二-十进制编码 (BCD码),2019/7/8,28,1.3.2 字符编码 (ASCII码),2019/7/8,29,ASCII(American Standard Code for Information Interchange )用7位二进制符号

13、(a7a6a5a4a3a2a1)来表示字符和命令 例如:数字0的ASCII码是0110000B或30H 9是0111001B或39H A是1000001B或41H a是1100001B或61H,用途与特点: (1)ASCII码是计算机与外部设备交换信息的字符编码,2019/7/8,30,ASCII码有大小之分 空格(20H)数字(019) 大写字母(ABZ)小写字母(abz),作业:P91.2,1.3,1.4,1.5,2019/7/8,31,1.4 现代数字系统设计流程(方法),电子设计自动化(Electronic Design Automation ,EDA),2019/7/8,32,201

14、9/7/8,33,2019/7/8,34,2019/7/8,35,1.5 同步练习,一、填 空 题 1. 将二进制、八进制和十六进制数转换为十进制数的共同规则 是 。 2. 十进制数26.625对应的二进制数为 ;十六进制数5FE对应的二进制数为 。 3. 二进制数1101011.011B对应的十进制数为 ,对应的8421BCD码为 。 4. 二进制数1101011.011B对应的八进制数为 ,对应的十六进制数为 。 5. (100101010011.00110111)8421BCD表示的十进制数为 。,1. 按权展开;2. 11010.101B;010111111110B 3. 107.37

15、5D,(000100000111.001101110101)8421BCD 4. 153.3Q,6B.6H;5. 953.37D,2019/7/8,36,6. (001111110001.01011111)2421BCD表示的十进制数为 。 7. (100101111100.00010100)5211BCD表示的十进制数为 。 8. (110010100111.10000111)余3BCD表示的十进制数为 。 9. 数字字符“9”对应的ASCII码为 。10. 字母字符“b”对应的ASCII码为 。,6. 391.59D 7. 647.12D 8. 974.54D 9. 0111001B(39

16、H)10. 1100010B(62H),2019/7/8,37,二、单向选择题 1. 表示一个两位十进制数至少需要( )位二进制数。 5 6 7 8 2. 十进制数127.25对应二进制数为( )。 1111111.01 10000000.10 1111110.01 1100011.11 3. 十进制数28.43的余3BCD码是( )。 00111000.01000011 01011011.01110110 01101100.10000111 01111101.10011000 4. 在下列ASCII字符中,最大的字符是( )。 “A” “z” “9” “0” 5. 在下列ASCII字符中,最

17、小的字符是( )。 “A” “z” “9” “0”,2019/7/8,38,第2章 逻辑代数基础,本章介绍分析和设计数字逻辑电路功能的数学方法,包括:逻辑代数的基本概念、逻辑函数及其表示方法、基本公式、常用公式和重要定理和逻辑函数的简方法化。,2019/7/8,39,2.1 逻辑代数基本概念,2.1.1 逻辑常量和逻辑变量 1. 逻辑常量“0”和“1”(高阻“”、未知“”) 用来代表两种逻辑状态,如电平的高和低、电流的有和无、灯的亮和灭、开关的闭合和断开等。,2. 逻辑变量由字母或字母加数字组成 原变量: A、B、C、A1 反变量: 原变量与反变量的关系:“互非”或“互补”,2019/7/8,

18、40,2.1.2 基本逻辑和复合逻辑,1. 基本逻辑(与、或、非三种),(1)与逻辑 与逻辑概念:只有决定事件结果的全部条件(输入)同时具备时,结果(输出)才发生。,逻辑函数的表示方法: 真值表、函数表达式、卡诺图和逻辑图,2019/7/8,41,真值表:用“0”和“1”表示输入与输出之间全部关系的表格,真值表(与),逻辑函数表达式:P = AB =AB=A&B, 运算规则:000, 010, 100, 111,2019/7/8,42,(2)或逻辑 或逻辑概念:在决定事件结果的诸多条件中只要有任何一个满足,结果就会发生 。,真值表(或),逻辑函数表达式:P = AB =A|B,运算规则: 00

19、0,011, 101,111,2019/7/8,43,真值表(非),(3)非逻辑 非逻辑概念:只要条件具备了,结果便不会发生,而条件不具备时,结果一定发生 。,逻辑函数表达式:,2019/7/8,44,2. 复合逻辑与非、或非、与或非、异或和同或逻辑 (1)与非逻辑,真值表,特点:全高出低、一低出高,逻辑函数表达式:,2019/7/8,45,(2)或非逻辑,真值表(或非),特点:全低出高、一高出低,逻辑函数表达式,2019/7/8,46,(3)与或非逻辑,逻辑符号,逻辑函数表达式,2019/7/8,47,(4)异或逻辑,真值表,特点:相同为0、相异为1,逻辑符号,逻辑函数表达式,2019/7/

20、8,48,(5)同或逻辑,真值表(同或),特点:相同为1、相异为0,逻辑符号,国际常用 符号,逻辑函数表达式:P = A B= =(A&B)|(A&B),2019/7/8,49,2.1.3 逻辑函数的表示方法 1. 真值表和逻辑函数表达式,【例2.1】楼上楼下开关电路如图所示,该电路让用户在楼上或楼下均可控制楼道电灯的亮和灭。,真值表,2019/7/8,50,【例2.2】 设计三人表决器电路。,真值表,表达式: 最小项推导法最小项表达式 使输出为1的输入组合写成乘积项的形式,其中取值为1的输入用原变量表示,取值为0的输入用反变量表示,然后把这些乘积项加起来。,2019/7/8,51,最大项推导

21、法最大项表达式把使输出为0的输入组合写成和项的形式,其中取值为0的输入用原变量表示,取值为1的输入用反变量表示,然后把这些和项乘起来。,【练习题】 设计长走廊开关电路,要求用四个开关(A,B,C,D)独立控制一盏(P)灯的亮与灭。,2019/7/8,52,2019/7/8,53,2. 逻辑函数表达式和逻辑图用逻辑符号实现逻辑函数表达式中的各种运算而画出的部件图,优先规则:括弧内“()”“逻辑乘”“逻辑加”,2019/7/8,54,2.1.4 逻辑函数的相等 函数F与G有相同的真值表,则:F=G 。,例如:函数F=A+BC与函数G=(A+B)(A+C),则F=G,即 A+BC=(A+B)(A+C

22、),2019/7/8,55,2.2 逻辑代数的运算法则,2.2.1 逻辑代数的基本公式 1. 关于常量与变量关系公式,2019/7/8,56,2.2.2 逻辑代数的基本定理 1. 代入定理 代入定理规定,在任何一个包含某个相同变量的逻辑等式中,用另外一个函数式代入式中所有这个变量的位置,等式仍然成立。,用途:扩大基本公式和常用公式的使用范围 例如已知: 则:,2019/7/8,57,2. 反演定理 反演定理规定,将原函数F中的全部“”换成“+”,“+”换成“”,“0”换成“1”,“1”换成“0”,原变量换成反变量,反变量换成原变量,所得到的新函数就是原函数的反演式,记作 。,用途:直接求原函数

23、的反函数 例如已知:,则:,又如:,则:,规则: “()”“”“”; 大的“非号”在变换中不变,2019/7/8,58,3. 对偶定理 对偶定理规定,将原函数F中的全部“”换成“+”,“+”换成“”,“0”换成“1”,“1”换成“0”,所得到的新函数就是原函数的对偶式,记作F或F*。,用途:已知某公式成立,则其对偶式亦成立 函数,对偶式,又如:,则:,2019/7/8,59,2.2.3 逻辑代数的常用公式,常用公式1: (10),证:,对偶式: (10),2019/7/8,60,常用公式3: (12),证:,对偶式: (12),常用公式4: (13),证:,对偶式: (13),2019/7/8

24、,61,推论:,证:,2.2.4 异或运算公式,作业:P46 2.7,2.8,2.9,2019/7/8,62,2.3 逻辑函数的表达式,包括:与或式、与非与非式、或与式、或非或非式和与或非式,1. 与或式,2.或与式,2019/7/8,63,3. 与非与非式,4. 或非或非式,2019/7/8,64,2.3.2 逻辑函数的标准表达式 最小项表达式全部由最小项构成的与或式(积之和式) 最大项表达式全部由最大项构成的或与式(和之积式),1. 最小项包含全部变量的乘积项,每个变量均以原变量或反变量的形式在乘积项中出现一次,三变量(A,B,C)的最小项(8个):,2019/7/8,65,最小项编号,最

25、小项的特点: 在变量的任何取值下必有一个最小项,而且仅有一个最小项的值为1 ; 全体最小项之和为1 ; 任意两个最小项的乘积为0。,2019/7/8,66,2. 最大项包含全部变量的和项,每个变量均以原变量或反变量的形式在和项中出现一次,三变量(A,B,C)的最大项(8个):,最大项编号,2019/7/8,67,最大项的特点: 在变量的任何取值下必有一个最大项,而且仅有一个最大项的值为0 ; 全体最大项之积为0 ; 任意两个最大项之和为1。,2019/7/8,68,2. 最大项表达式可由最大项法直接从真值表中导出 例如:三人表决器设计的输出表达式,2019/7/8,69,2.3.3 约束及其表

26、示方法约束:不允许出现的输入变量取值组合(最小项),【例1】设计行车控制电路,不可能出现的最小项,对输出无影响的最小项 称为任意项、无关项,记作“”或“”、“d”,真值表,2019/7/8,70,【例2】设计一位十进制数(8421BCD码)的四舍五入电路。,2019/7/8,71,2.4 逻辑函数的公式简化法,2.4.1 简化的意义,简化:,2019/7/8,72,解:,【例2.9】化简,解:,2019/7/8,73,【例2.10】化简,解:,作业:P46 2.9 2.10 2.11,2019/7/8,74,2.5 Verilog HDL基础,2.5.1 Verilog HDL程序模块结构,2

27、019/7/8,75,1. 模块端口定义模块端口定义用来声明设计电路模块的输入输出端口,端口定义格式如下 module 模块名(端口1,端口2,端口3,); 在端口定义的圆括弧中,是设计电路模块与外界联系的全部输入输出端口信号或引脚,它是设计实体对外的一个通信界面,是外界可以看到的部分(不包含电源和接地端),多个端口名之间用“,”分隔。例如, module adder(sum,cont,ina,inb,cin);,2019/7/8,76,2. 模块内容 模块内容包括I/O说明、信号类型声明和功能描述。 1) 模块的I/O说明 模块的I/O说明用来声明模块端口定义中各端口数据流动方向包括输入(i

28、nput)、输出(output)和双向(inout)。I/O说明格式如下 input 端口1,端口2,端口3,; output 端口1,端口2,端口3,; 例如 input ina,inb,cin; output sum,cont;,2019/7/8,77,2) 信号类型声明 信号类型声明用来说明设计电路的功能描述中,所用的信号的数据类型以及函数声明。 信号的数据类型主要有连线(wire)、寄存器(reg)、整型(integer)、实型(real)和时间(time)等类型。,2019/7/8,78,3) 功能描述功能描述是Verilog HDL程序设计中最主要的部分,用来描述设计模块的内部结构

29、和模块端口间的逻辑关系,在电路上相当于器件的内部电路结构。功能描述可以用assign语句、元件例化(instantiate)、always块语句、initial块语句等方法来实现,通常把确定这些设计模块描述的方法称为建模。,2019/7/8,79,2.5.2 Verilog HDL的词法,1. 空白符和注释Verilog HDL的空白符包括空格、tab符号、换行和换页。空白符如果不是出现在字符串中,编译源程序时将被忽略。注释分为行注释和块注释两种方式。行注释用符号/(两个斜杠)开始,注释到本行结束。块注释用/*开始,用*/结束。块注释可以跨越多行,但它们不能嵌套。,2019/7/8,80,2.

30、 常数Verilog HDL的常数包括数字、未知x和高阻z三种。数字可以用二进制、十进制、八进制和十六进制等4种不同数制来表示,完整的数字格式为 其中,位宽表示数字对应的二进制数的位数宽度;进制符号包括b或B(表示二进制数),d或D(表示十进制数),h或H(表示十六进制数),o或O(表示八进制数)。,2019/7/8,81,例如 8b10110001 /表示位宽为8位的二进制数 或:b10110001(忽略位宽) 8hf5 /表示位宽为8位的十六进制数 或:hf5 十进制数的位宽和进制符号可以缺省,例如 /表示十进制数125 b1111xxxx /等价8hfx b1101zzzz /等价8hd

31、z,2019/7/8,82,3. 字符串 字符串是用双引号括起来的可打印字符序列,它必须包含在同一行中。例如, ”ABC”,”A BOY.”,”A”,”1234” 都是字符串。,2019/7/8,83,4. 标识符标识符是用户编程时为常量、变量、模块、寄存器、端口、连线、示例和begin-end块等元素定义的名称。标识符可以是字母、数字和下划线“_”等符号组成的任意序列。定义标识符时应遵循如下规则 首字符不能是数字。 字符数不能多于1024个。 大小写字母是不同的。 不要与关键字同名。,2019/7/8,84,5. 关键字关键字是Verilog HDL预先定义的单词,它们在程序中有不同的使用目

32、的。例如,module和endmodule来指出源程序模块的开始和结束;用assign来描述一个逻辑表达式等。Verilog -1995的关键字有97个(见表4.1所示),Verilog -2001增加了5个共102个。,2019/7/8,85,6. 操作符操作符也称为运算符,是Verilog HDL预定义的函数名字,这些函数对被操作的对象(即操作数)进行规定的运算,得到一个结果。操作符通常由13个字符组成,例如,“+”表示加操作,“=”(两个=字符)表示逻辑等操作,“=”(3个=字符)表示全等操作。有些操作符的操作数只有1个,称为单目操作;有些操作符的操作数有2个,称为双目操作;有些操作符的

33、操作数有3个,称为三目操作。,2019/7/8,86,1) 算术操作符(Arithmetic operators) 常用的算术操作符: +(加)、-(减)、*(乘)、/(除)、%(求余)。 其中%是求余操作符, 在两个整数相除的基础上,取出其余数。例如,5 % 6的值为5;13 % 5的值是3。,2019/7/8,87,2) 逻辑操作符(Logical operators ) 逻辑操作符包括: &(逻辑与)、|(逻辑或)、!(逻辑非),3) 位运算(Bitwise operators) 位运算是将两个操作数按对应位进行逻辑操作。位运算操作符包括:(按位取反)、&(按位与)、|(按位或)、(按位

34、异或)、或(按位同或)。 在进行位运算时,当两个操作数的位宽不同时,计算机会自动将两个操作数按右端对齐,位数少的操作数会在高位用0补齐。,2019/7/8,88,4) 关系操作符(Relational operators) 关系操作符有:(大于)、=(大于等于)。 其中,=也是赋值运算的赋值符号。关系运算的结果是1位逻辑值。在进行关系运算时,如果关系是真,则计算结果为1;如果关系是假,则计算结果为0;如果某个操作数的值不定,则计算结果不定(未知),表示结果是模糊的。,2019/7/8,89,5) 等式操作符(Equality operators) 等值操作符包括: =(等于)、!=(不等于)、

35、=(全等)、 !=(不全等)4种。等值运算的结果也是1位逻辑值,当运算结果为真时,返回值1;为假则返回值0。相等操作符(=)与全等操作符(=)的区别是:当进行相等运算时,两个操作数必须逐位相等,其比较结果的值才为1(真),如果某些位是不定或高阻状态,其相等比较的结果就会是不定值;而进行全等运算时,对不定或高阻状态位也进行比较,当两个操作数完全一致时,其结果的值才为1(真),否则结果为0(假)。,2019/7/8,90,6) 缩减操作符(Reduction operators) 缩减操作符包括: &(与)、&(与非)、|(或)、|(或非)、 (异或)、或(同或)。缩减操作运算法则与逻辑运算操作相

36、同,但操作的运算对象只有一个。在进行缩减操作运算时,对操作数进行与、与非、或、或非、异或、同或等缩减操作运算,运算结果有1位1或0。例如,设A = 8b11010001,则& A = 0(在与缩减运算中,只有A中的数字全为1时,结果才为1);|A = 1(在或缩减运算中,只有A中的数字全为0时,结果才为0)。,2019/7/8,91,7) 转移操作符(Shift operators) 转移操作符包括: (右移)、 n ; /将操作数的内容右移n位,同时从左边开始用0来填补移出的位数。 操作数 4的结果是A = 8b00001101;而A 4的结果是A = 8b00010000。,2019/7/

37、8,92,8). 条件操作符(Conditional operators) 条件操作符为:?: 条件操作符的操作数有3个,其使用格式为 操作数 = 条件 ? 表达式1:表达式2; 即当条件为真(条件结果值为1)时,操作数 = 表达式1;为假(条件结果值为0)时,操作数 = 表达式2。,2019/7/8,93,9) 位并接操作符(Concatenation operators) 并接操作符为: 并接操作符的使用格式为 操作数1的某些位,操作数2的某些位,操作数n的某些位;即将操作数1的某些位与操作数2的某些位与与操作数n的某些位并接在一起。例如,将1位全加器进位cont与和sum并接在一起使用,

38、它们的结果由两个加数a、b及低位进位cin相加决定的表达式为 cont,sum= a+b+cin;,2019/7/8,94,7. Verilog HDL数据对象 Verilog HDL数据对象是指用来存放各种类型数据的容器,包括常量和变量。,1) 常量 常量是一个恒定不变的值数,一般在程序前部定义。常量定义格式为 parameter 常量名1 = 表达式,常量名2 = 表达式,常量名 n = 表达式; parameter是常量定义关键字,常量名是用户定义的标识符,表达式是为常量赋的值。例如 parameter Vcc = 5,fbus = b11010001;,2019/7/8,95,2) 变

39、量 变量是在程序运行时其值可以改变的量。在Verilog HDL中,变量分为网络型(nets type)和寄存器型(register type)两种。,(1)网络型变量(nets type) nets型变量是输出值始终根据输入变化而更新的变量,它一般用来定义硬件电路中的各种物理连线。Verilog HDL提供的nets型变量如下。,2019/7/8,96,2019/7/8,97,(2)寄存器型变量(register type)register型变量是一种数值容器,不仅可以容纳当前值,也可以保持历史值,这一属性与触发器或寄存器的记忆功能有很好的对应关系。register型变量也是一种连接线,可以

40、作为设计模块中各器件间的信息传送通道。register型变量与wire型变量的根本区别在于register型变量需要被明确地赋值,并且在被重新赋值前一直保持原值。register型变量是在always、initial等过程语句中定义,并通过过程语句赋值。,2019/7/8,98,常用的register型变量及说明,2019/7/8,99,向量定义时需要位宽选项,例如 reg7:0 data; /定义1个8位寄存器型变量,最高有效位是7,最低有效位是0 reg0:7 data; /定义1个8位寄存器型变量,最高有效位是0,最低有效位是7 向量定义后可以采有多种使用形式(即赋值) data=b00

41、000000; data5:3=B111; data7=1;,2019/7/8,100,(3)数组若干个相同宽度的向量构成数组。在数字系统中,reg型数组变量即为memory(存储器)型变量。 存储器型可以用如下语句定义 reg7:0 mymemory1023:0; 上述语句定义了一个1024个字存储器变量mymemory,每个字的字长为8位。在表达式中可以用下面的语句来使用存储器: mymemory7 = 75; /存储器mymemory的第7个字被赋值75,2019/7/8,101,2.5.3 Verilog HDL的语句,语句是构成Verilog HDL程序不可缺少的部分。Verilog

42、 HDL的语句包括赋值语句、条件语句、循环语句、结构说明语句和编译预处理语句等类型,每一类语句又包括几种不同的语句。在这些语句中,有些语句属于顺序执行语句,有些语句属于并行执行语句。,2019/7/8,102,1. 赋值语句,1) 门基元赋值语句 格式 基本逻辑门关键字 (门输出,门输入1,门输入2,门输入n); 基本逻辑门关键字是Verilog HDL预定义的逻辑门,包括and、or、not、xor、nand、nor等;圆括弧中内容是被描述门的输出和输入信号。例如,具有a、b、c、d四个输入和y为输出与非门的门基元赋值语句为 nand(y,a,b,c,d);,2019/7/8,103,2)

43、连续赋值语句 格式 assign 赋值变量 = 表达式; 例如 assign y = (a & b & c & d);连续赋值语句的“=”号两边的变量都应该是wire型变量。在执行中,输出y的变化跟随输入a、b、c、d的变化而变化,反映了信息传送的连续性。,2019/7/8,104,3) 过程赋值语句过程赋值语句出现在initial和always块语句中,赋值符号是“=”,格式为 赋值变量 = 表达式;在过程赋值语句中,赋值号“=”左边的赋值变量必须是reg(寄存器)型变量,其值在该语句结束即可得到。如果一个块语句中包含若干条过程赋值语句,那么这些过程赋值语句是按照语句编写的顺序由上至下一条一

44、条地执行,前面的语句没有完成,后面的语句就不能执行,就象被阻塞了一样。因此,过程赋值语句也称为阻塞赋值语句。,2019/7/8,105,4) 非阻塞赋值语句 非阻塞赋值语句也是出现在initial和always块语句中,赋值符号是“=”,格式为 赋值变量 = 表达式;在非阻塞赋值语句中,赋值号“=”左边的赋值变量也必须是reg型变量,其值不象在过程赋值语句那样,语句结束时即刻得到,而在该块语句结束才可得到。,2019/7/8,106,2. 条件语句条件语句包含if语句和case语句,它们都是顺序语句,应放在always块中。,1) if语句 完整的Verilog HDL的if语句结构如下: i

45、f (表达式) begin 语句; end else if (表达式) begin 语句; end else begin 语句; end,2019/7/8,107,2) case语句case语句是一种多分支的条件语句,完整的case语句的格式为 case (表达式)选择值1 : 语句1;选择值2 : 语句2;选择值n : 语句n;default : 语句n+1;endcase,2019/7/8,108,case语句还有两种变体语句形式,即casez和casex语句。casez和casex语句与case语句的格式完全相同,它们的区别是:在casez语句中,如果分支表达式某些位的值为高阻z,那么对

46、这些位的比较就不予以考虑,只关注其他位的比较结果。 在casex语句中,把不予以考虑的位扩展到未知x,即不考虑值为高阻z和未知x的那些位,只关注其他位的比较结果。,2019/7/8,109,3. 循环语句循环语句包含for语句、repeat语句、while语句和forever语句4种。 1) for语句 for语句的语法格式为 for (循环指针 = 初值; 循环指针 终值; 循环指针 = 循环指针 + 步长值)begin语句;end,2019/7/8,110,2. repeat语句 语法格式 repeat(循环次数表达式) 语句;,2019/7/8,111,4. 结构声明语句Verilog

47、HDL的任何过程模块都是放在结构声明语句中,结构声明语句包括always、initial、task和function等4种结构。 1) always块语句在一个Verilog HDL模块(module)中,always块语句的使用次数是不受限制的,块内的语句也是不断重复执行的。always块语句的语法结构为,2019/7/8,112,always (敏感信号表达式)begin/ 过程赋值语句;/ if语句,case语句;/ for语句,while语句,repeat语句;/ tast语句、function语句;end,2019/7/8,113,在always块语句中,敏感信号表达式(event-expression)应该列出影响块内取值的所有信号(一般指设计电路的输入信号),多个信号之间用“or”连接。当表达式中任何信号发生变化时,就会执行一遍块内的语句。块内语句可以包括:过程赋值、if、case、 for、while、repeat、tast和function等语句。敏感信号表达式中用“posedge”和“negedge”这两个关键字来声明事件是由时钟的上升沿或下降沿触发。always ( posedge clk)表示事件由clk的上升沿触发;always ( negedge clk)表示事件由clk的下降沿触发。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报