第3章-组合电路的Verilog设计汇总课件.pptx

上传人(卖家):三亚风情 文档编号:2430706 上传时间:2022-04-17 格式:PPTX 页数:82 大小:876.76KB
下载 相关 举报
第3章-组合电路的Verilog设计汇总课件.pptx_第1页
第1页 / 共82页
第3章-组合电路的Verilog设计汇总课件.pptx_第2页
第2页 / 共82页
第3章-组合电路的Verilog设计汇总课件.pptx_第3页
第3页 / 共82页
第3章-组合电路的Verilog设计汇总课件.pptx_第4页
第4页 / 共82页
第3章-组合电路的Verilog设计汇总课件.pptx_第5页
第5页 / 共82页
点击查看更多>>
资源描述

1、 E D A技术与应用第第3章章 组合电路的组合电路的Verilog设计设计 E D A技术与应用3.1 半加器电路的半加器电路的Verilog描述描述半加器的电路结构半加器的电路结构半加器的仿真功能波形图半加器的仿真功能波形图ABSOCO0000011010101101半加器的真值表半加器的真值表半加器逻辑表达式:半加器逻辑表达式:和:和:SO=A0A1进位进位:CO=A0A1 E D A技术与应用 例例3-1:半加器:半加器 module h_adder (A, B, SO, CO);input A, B;output SO, CO;assign SO=AB;/将变量将变量A和和B执行异或

2、逻辑后执行异或逻辑后 将结果赋值给输出信号将结果赋值给输出信号SOassign CO=A&B;/将变量将变量A和和B执行执行与与逻辑后将逻辑后将 结果结果赋值给赋值给输出信号输出信号COendmodule 以关键词以关键词module_endmodule引导的完整的电路模块或称引导的完整的电路模块或称“模块模块”描述。模块对应着硬件电路上的描述。模块对应着硬件电路上的逻辑实体逻辑实体(也称实例(也称实例Instance) 以以关键词关键词input和和output引导的对模块的引导的对模块的外部端口外部端口描述语句。描描述语句。描述电路器件的述电路器件的端口状况端口状况及及信号性质信号性质,如

3、信号流动方向和信号的,如信号流动方向和信号的数据类型等。数据类型等。 以关键词以关键词assign引导的引导的赋值语句赋值语句,用于描述模块的,用于描述模块的逻辑功能逻辑功能和和电路结构电路结构。三个组成部分:三个组成部分: E D A技术与应用 任何一可综合的最基本模块都必须以关键词任何一可综合的最基本模块都必须以关键词module开头开头。 module右侧(空一格或多格)是右侧(空一格或多格)是模块名模块名,模块名属于标示符,模块名属于标示符,由设计者自定。(由设计者自定。(不应用数字或中文定义,也不应用与不应用数字或中文定义,也不应用与EDA工工具库中已定义好的关键词或元件名作为模块名

4、,且不能用数字具库中已定义好的关键词或元件名作为模块名,且不能用数字起头起头) 模块名右侧的括号称为模块名右侧的括号称为模块端口列表模块端口列表,列出此模块,列出此模块所有输入、所有输入、输出或双向端口名输出或双向端口名,端口名间用,端口名间用逗号分开逗号分开,右侧,右侧括号外加分号括号外加分号。 endmodule是模块是模块结束结束语句,不加任何标点符号。对模块端口语句,不加任何标点符号。对模块端口和功能的描述语句必须放在和功能的描述语句必须放在module_endmodule之间。之间。1、模块、模块语句及其表达方式语句及其表达方式 module 模块名模块名 (模块端口名表);(模块端

5、口名表);模块端口和模块功能描述模块端口和模块功能描述endmodule E D A技术与应用 对端口名表中的端口进行定义对端口名表中的端口进行定义。 端口关键词:端口关键词:input,output,inout 端口关键词旁的端口名可以有多个,逗号分开,最后加分号。端口关键词旁的端口名可以有多个,逗号分开,最后加分号。 前三前三种描述了标量位,最后一种描述了逻辑矢量位。种描述了标量位,最后一种描述了逻辑矢量位。例例: output 3:0 C, D; /定义两个定义两个4位位宽的总线端口输出信号位位宽的总线端口输出信号C3:0(等同于定义了四个单个位信号(等同于定义了四个单个位信号C3、C2

6、、C1、C0)和)和D3:02、端口语句、端口信号名和端口模式、端口语句、端口信号名和端口模式input 端口名端口名1,端口名,端口名2,;/输入端口输入端口output 端口端口名名1,端口名,端口名2,; /输出端口输出端口inout 端口端口名名1,端口名,端口名2,; /双向端口双向端口input msb : lsb 端口端口名名1,端口名,端口名2,; /多信号端口多信号端口 或总线端口或总线端口 -逻辑矢量位逻辑矢量位 标标量量位位最高位数最高位数最低位数最低位数 E D A技术与应用 input:输入端口输入端口。单向只读模式,数据只能由此端口被读入模。单向只读模式,数据只能由

7、此端口被读入模块实体中。块实体中。 output:输出端口输出端口。单向输出模式,数据只能通过此端口从模。单向输出模式,数据只能通过此端口从模块实体向外流出,即将此模块中数据向此端口赋值。块实体向外流出,即将此模块中数据向此端口赋值。 inout:双向端口双向端口。输入输出双向端口,从端口内部看,可对此。输入输出双向端口,从端口内部看,可对此端口进行赋值,或通过此端口读入外部的数据信息;从端口外端口进行赋值,或通过此端口读入外部的数据信息;从端口外部看,信号既可由此端口流出,又可向此端口输入信号。部看,信号既可由此端口流出,又可向此端口输入信号。2、端口语句、端口信号名和端口模式、端口语句、端

8、口信号名和端口模式input 端口名端口名1,端口名,端口名2,;/输入端口输入端口output 端口端口名名1,端口名,端口名2,; /输出端口输出端口inout 端口端口名名1,端口名,端口名2,; /双向端口双向端口input msb : lsb 端口端口名名1,端口名,端口名2,; /多信号端口多信号端口 或总线端口或总线端口 -逻辑矢量位逻辑矢量位 标标量量位位最高位数最高位数最低位数最低位数 E D A技术与应用 :逻辑异或。:逻辑异或。 &:逻辑与。:逻辑与。3、逻辑操作符、逻辑操作符AB/A、B异或异或A&B /A、B相与相与 E D A技术与应用 assign是连续赋值命名的

9、关键词。是连续赋值命名的关键词。 等号右侧的驱动表达式中的等号右侧的驱动表达式中的任一信号变量发生变化任一信号变量发生变化时,此时,此表达表达式被计算一遍式被计算一遍,并将获得的数据,并将获得的数据立即赋给立即赋给等号左侧的变量名所等号左侧的变量名所标示的目标变量。标示的目标变量。 驱动的含义是强调表达式的本质是对于目标变量的激励源或赋驱动的含义是强调表达式的本质是对于目标变量的激励源或赋值源。值源。 assign引导的赋值语句是引导的赋值语句是并行赋值并行赋值语句。语句。4、连续赋值语句、连续赋值语句assign 目标变量名目标变量名= 驱动表达式;驱动表达式;并行执行并行执行:语句是同时执

10、行的,与先后次序无关。:语句是同时执行的,与先后次序无关。顺序执行顺序执行:按照语句的前后排列方式逐条顺序执行:按照语句的前后排列方式逐条顺序执行的的。 E D A技术与应用 方括号表示,括号中的内容是可以选择使用的。方括号表示,括号中的内容是可以选择使用的。 任何时刻,等式右侧的任何时刻,等式右侧的“驱动表达式驱动表达式”中中任一变量发生变化任一变量发生变化时时立立即计算出此表达式即计算出此表达式的值,经过指定的的值,经过指定的延时时间后再赋值延时时间后再赋值给左侧的给左侧的目标变量。目标变量。 延时延时值用于值用于Verilog Test Bench程序中进行仿真,在综合器中延时程序中进行

11、仿真,在综合器中延时值被忽略,值被忽略,不参与综合不参与综合。例例: timescale 10ns/100ps;/设置仿真的基本时间单元是设置仿真的基本时间单元是10ns, 仿真时间精度仿真时间精度100psassign #6 R1=A&B;/6个时间单元后将结果赋值给目标变量个时间单元后将结果赋值给目标变量4、连续赋值语句、连续赋值语句assign 延时延时 目标变量名目标变量名= 驱动表达式;驱动表达式; E D A技术与应用 Verilog语言语言预先定义好预先定义好的有特殊含义的英文词语。的有特殊含义的英文词语。 Verilog规定所有关键词必须规定所有关键词必须小写小写。5、关键词、

12、关键词 设计者在设计者在Verilog程序中程序中自定义自定义的,用于标识不同名称的词语,的,用于标识不同名称的词语,如模块名、信号名、端口名等。如模块名、信号名、端口名等。 标识符标识符区分大小写区分大小写。6、标识符、标识符 E D A技术与应用 注释符号注释符号“/”,用于,用于隔离程序隔离程序,添加程序,添加程序说明文字说明文字。本身。本身无功无功能含义能含义。 “/”后的注释文字后的注释文字只能放在同一行只能放在同一行。 另一另一种注释符号种注释符号“/*/”类似一个括号,只要文字在此类似一个括号,只要文字在此“括号括号”中就中就可以换行可以换行。7、注释符号、注释符号 可以一行写多

13、条语句,或分行书写。可以一行写多条语句,或分行书写。 建议最顶层建议最顶层module_endmodule模块描述语句放在最左侧,比他模块描述语句放在最左侧,比他低一层次的描述语句靠右一个低一层次的描述语句靠右一个Tab键距离,同一语句的关键词对键距离,同一语句的关键词对齐(如齐(如module_endmodule、table_endtable、begin_end等)。等)。8、规范的程序书写格式、规范的程序书写格式 E D A技术与应用 文件名可由设计者任意给定,文件后缀扩展名必须是文件名可由设计者任意给定,文件后缀扩展名必须是“.v”。 建议程序的建议程序的文件名与文件名与该程序的该程序的

14、模块名一致模块名一致(对于(对于Quartus II必须必须满足这一点)。满足这一点)。 文件名文件名区分大小写区分大小写(对于(对于Quartus II文件名与程序模块名的大小文件名与程序模块名的大小写必须一致)。写必须一致)。 文件名文件名不应该用中文或数字不应该用中文或数字来命名。来命名。 进入工程设计的进入工程设计的Verilog程序必须存入某文件夹中,不要存在根目程序必须存入某文件夹中,不要存在根目录内或桌面上。录内或桌面上。9、文件取名和存盘、文件取名和存盘 E D A技术与应用 例例3-1:半加器:半加器 module h_adder (A, B, SO, CO);input A

15、, B;output SO, CO;assign SO=AB;/将变量将变量A和和B执行异或逻辑后执行异或逻辑后 将结果赋值给输出信号将结果赋值给输出信号SOassign CO=A&B;/将变量将变量A和和B执行执行与与逻辑后将逻辑后将 结果结果赋值给赋值给输出信号输出信号COendmodule 以关键词以关键词module_endmodule引导的完整的电路模块或称引导的完整的电路模块或称“模块模块”描述。模块对应着硬件电路上的描述。模块对应着硬件电路上的逻辑实体逻辑实体(也称实例(也称实例Instance) 以以关键词关键词input和和output引导的对模块的引导的对模块的外部端口外部

16、端口描述语句。描描述语句。描述电路器件的述电路器件的端口状况端口状况及及信号性质信号性质,如信号流动方向和信号的,如信号流动方向和信号的数据类型等。数据类型等。 以关键词以关键词assign引导的引导的赋值语句赋值语句,用于描述模块的,用于描述模块的逻辑功能逻辑功能和和电路结构电路结构。三个组成部分:三个组成部分: E D A技术与应用3.2 多路选择器多路选择器的的Verilog描述描述4选选1多路多路选择器选择器4选选1多路选择器多路选择器MUX41a的时序波形的时序波形3.2.1 4选选1多路选择器及多路选择器及case语句表述方式语句表述方式输入输入端口端口通道选择控通道选择控制信号端

17、制信号端输出输出端口端口s1s0y00a01b10c11d真值表真值表 E D A技术与应用 例例3-2:4选选1多路选择器多路选择器 module MUX41a (a, b, c, d, s1, s0, y); input a, b, c, d; input s1, s0; output y; reg y; /信号类型定义段信号类型定义段 always (a or b or c or d or s1 or s0)begin : MUX41 /块语句开始块语句开始 case(s1,s0)2b00: y=a; 2b01: y=b; 2b10: y=c; 2b11: y=d; default: y

18、=a;endcase endendmodule 电电路路模模块块端端口口说说明明和和定定义义端端Verilog 具具体体描描述述电电路路功功能能的的语语句句 电电路路模模块块功功能能描描述述段段Verilog 表表述述的的可可综综合合的的完完整整电电路路模模块块 E D A技术与应用 以关键词以关键词reg定义的定义的模块内相关信号的特性和数据类型模块内相关信号的特性和数据类型。 以关键词以关键词always引导的引导的对模块逻辑功能描述的顺序语句对模块逻辑功能描述的顺序语句。 以以case_endcase引导的引导的多条件分支赋值语句多条件分支赋值语句。 以以begin_end引导引导的的顺

19、序语句块顺序语句块。 Verilog数据并位数据并位及及数据表达方式数据表达方式。五种新的语句结构和表述方式:五种新的语句结构和表述方式: 例例3-2: E D A技术与应用 用于定义用于定义寄存器型寄存器型数据类型的变量。数据类型的变量。 Verilog中最常用的变量:中最常用的变量: 寄存器型寄存器型变量变量:表示暂时存储数据的变量(并不一定表示硬:表示暂时存储数据的变量(并不一定表示硬件中的物理寄存器)。关键词是件中的物理寄存器)。关键词是reg;需要定义某信号为寄存需要定义某信号为寄存器型变量时,必须器型变量时,必须显性定义显性定义;被赋值的信号在过程语句;被赋值的信号在过程语句alw

20、ays引导引导的的语句(语句(具有时序执行的特点,习惯上称行为语具有时序执行的特点,习惯上称行为语句)中规定必须是句)中规定必须是reg型变量。不能作为逻辑门输出或者型变量。不能作为逻辑门输出或者assign语句输出。语句输出。 网线网线性变量性变量:进程之间的物理互连。常用关键词是:进程之间的物理互连。常用关键词是wire;默默认定义认定义为为wire型;型;assign引导的赋值语句左侧的目标信号的类引导的赋值语句左侧的目标信号的类型必须是网线型型必须是网线型wire。 输入端口输入端口信号信号不能不能定义为寄存器型信号类型。定义为寄存器型信号类型。1、reg型变量定义型变量定义reg 变

21、量名变量名1,变量名,变量名2,; /一位变量一位变量reg msb: lsb 变量名变量名1,变量名,变量名2,; /矢量型变量矢量型变量 E D A技术与应用 Verilog-2001版本允许在版本允许在端口名表中端口名表中直接对端口变量直接对端口变量定义矢定义矢量量(总线形式),甚至定义端口的(总线形式),甚至定义端口的数据类型数据类型。例例: module seg_7 (input 3:0 num, input en, output reg 6:0 seg); /定义输入端口定义输入端口num是一个是一个4位矢量,定义位矢量,定义en为一位的输入端为一位的输入端口,定义输出端口口,定义

22、输出端口seg是一个寄存器数据类型是一个寄存器数据类型 的的7位总线。位总线。1、reg型变量定义型变量定义reg 变量名变量名1,变量名,变量名2,; /一位变量一位变量reg msb: lsb 变量名变量名1,变量名,变量名2,; /矢量型变量矢量型变量 E D A技术与应用 Verilog中有两类能引导顺序语句的过程语句,一类是中有两类能引导顺序语句的过程语句,一类是always语句,语句,另一类是另一类是initial语句。语句。 任何顺序语句都必须放在过程语句结构中。任何顺序语句都必须放在过程语句结构中。 以关键词以关键词always引导,右侧的括号及括号中所列的信号或表达式引导,右

23、侧的括号及括号中所列的信号或表达式都属于敏感信号,过程语句中都属于敏感信号,过程语句中所有输入信号都放在敏感信号表所有输入信号都放在敏感信号表中。中。 敏感信号表述方式敏感信号表述方式: 用关键词用关键词or连接所有敏感信号(每当其中一个或多个信号发生连接所有敏感信号(每当其中一个或多个信号发生变化时,都启动变化时,都启动过程过程语句,执行一遍此结构中的所有程序语语句,执行一遍此结构中的所有程序语句。句。) 用用逗号区分逗号区分所有敏感信号。所有敏感信号。 省略形式省略形式(默认过程语句中敏感信号表中列全了所有应该被列(默认过程语句中敏感信号表中列全了所有应该被列入的信号,写成入的信号,写成a

24、lways (*)或或always *)。)。2、过程语句、过程语句always (敏感信号及敏感信号列表或表达式)(敏感信号及敏感信号列表或表达式)包括块语句的各类顺序语句包括块语句的各类顺序语句 E D A技术与应用 以关键词以关键词begin_end引导,本身没有功能,仅限于在引导,本身没有功能,仅限于在always引导的引导的过程语句结构中使用,类似于一个过程语句结构中使用,类似于一个括号括号,括号中的语句都被认定,括号中的语句都被认定归属于同一操作模块。归属于同一操作模块。 此此语句不可综合,只能用于仿真。语句不可综合,只能用于仿真。 若某若某 一语句结构中仅包含一语句结构中仅包含一

25、条语句一条语句,且无需定义局部变量时,块,且无需定义局部变量时,块语句被默认使用,即语句被默认使用,即无需显式无需显式定义块,可省略。定义块,可省略。 若包含若包含多条语句多条语句(包括含有局部变量定义的单条语句),则必须(包括含有局部变量定义的单条语句),则必须用用begin_end的的显式显式结构将它们结构将它们“括括”起来。起来。 “:块名:块名”可用于注释当前块的特征,综合时不参加编译,可省可用于注释当前块的特征,综合时不参加编译,可省略。略。3、块语句、块语句begin_endbegin : 块名块名语句语句1;语句;语句2;语句;语句n;end E D A技术与应用 case语句的

26、含义是,当满足语句的含义是,当满足case右侧括号中的表达式的值等于取值右侧括号中的表达式的值等于取值1、取值、取值2时,执行对应的语句。时,执行对应的语句。 Verilog有两类条件语句,有两类条件语句,if_else语句和语句和case_endcase语句,都属于语句,都属于可综合的顺序语句必须放在过程语句可综合的顺序语句必须放在过程语句always中使用。中使用。 case语句有三种表述方式,语句有三种表述方式,case、casez、casex。4、case条件语句条件语句case (表达式)(表达式) 取值取值1: begin 语句语句1;语句;语句2;语句;语句n; end 取值取值

27、2: begin 语句语句n+1;语句语句n+2;语句语句n+m; end default: begin 语句语句n+m+1;endendcase E D A技术与应用4、case条件语句条件语句 表达式中的值必须在表达式中的值必须在case以下列出的取值范围内,且以下列出的取值范围内,且数据数据类型必须匹配类型必须匹配。 Verilog允许出现多个分支取值同时满足允许出现多个分支取值同时满足case表达式的情况,表达式的情况,此时将执行此时将执行最先满足最先满足表达式的分支项,然后随即表达式的分支项,然后随即跳出跳出case语句,不再检测其余分支项。语句,不再检测其余分支项。 除非所有条件句

28、中的选择取值能完整覆盖除非所有条件句中的选择取值能完整覆盖case语句中表达语句中表达式的取值,否则通常最末一个条件句的选择必须加上式的取值,否则通常最末一个条件句的选择必须加上default语句,完成以上已列所有条件句中未能列出的其他语句,完成以上已列所有条件句中未能列出的其他可能取值的逻辑操作。使用可能取值的逻辑操作。使用default语句的目的是语句的目的是避免综合避免综合器插入不必要的锁存器器插入不必要的锁存器,但,但有时为了实现时序电路,也会有时为了实现时序电路,也会利用不完整的条件语句利用不完整的条件语句。注意:注意: E D A技术与应用5、Verilog的四种逻辑状态的四种逻辑

29、状态 0:二进制:二进制0、低电平、逻辑、低电平、逻辑0、事件为伪的判断结果。、事件为伪的判断结果。 1:二进制:二进制1、高电平、逻辑、高电平、逻辑1、事件为真的判断结果。、事件为真的判断结果。 z或或Z:高阻态,或高阻值,不区分大小写。:高阻态,或高阻值,不区分大小写。 x或或X:不确定,或未知的逻辑状态,不区分大小写。:不确定,或未知的逻辑状态,不区分大小写。例例3-2中,中,s1, s0所有可能的数据都已出现在四条条件语句所有可能的数据都已出现在四条条件语句中,但由于存在中,但由于存在z值和值和x值,所以仍然推荐加上值,所以仍然推荐加上default,以免,以免综合器加上不必要时序模块

30、。综合器加上不必要时序模块。 E D A技术与应用5、Verilog的四种逻辑状态的四种逻辑状态 问号问号“?”可以用来表示可以用来表示高阻值高阻值;还可以表示;还可以表示“不关心不关心”,即即可以用问号可以用问号“?”替代一些位值,以表示在逻辑关系中替代一些位值,以表示在逻辑关系中对这些位不在乎是什么值,以便简化逻辑表达对这些位不在乎是什么值,以便简化逻辑表达。 casez:当变量取值:当变量取值为高阻值为高阻值z时使用。如果分支取值的某时使用。如果分支取值的某些位是高阻值些位是高阻值z,则这些位的,则这些位的比较就不用比较就不用再考虑,只关注再考虑,只关注其他位(其他位(1或或0)的比较结

31、果。)的比较结果。 casex:当变量取值为未知值:当变量取值为未知值x时使用。如果表达式的值和时使用。如果表达式的值和取值之间,有一方的某些位是取值之间,有一方的某些位是z或或x,那么这些位的比较就,那么这些位的比较就不予以考虑。不予以考虑。 E D A技术与应用6、并位操作运算符、并位操作运算符 大括号大括号“ ”是并位运算符。是并位运算符。 可以将两个或多个信号按二进制位拼接起来,作为一个可以将两个或多个信号按二进制位拼接起来,作为一个数据信号使用。数据信号使用。例:例:s1, s0/用用 将将s1、s0拼接起来得到一个新的拼接起来得到一个新的 信号变量,即位矢信号变量,即位矢s1, s

32、0,由于,由于s1、 s0的取值范围是二进制数的取值范围是二进制数0和和1,新的,新的 信号变量的取值范围是两位二进制信号变量的取值范围是两位二进制 数数00、01、10、11。 并位运算符可以嵌套使用。并位运算符可以嵌套使用。例:例:a1, b1, 4a2, b2=a1, b1, a2, b2, a2, b2, a2, b2, a2, b2=a1, b1, a2, b2, a2, b2, a2, b2, a2, b2 E D A技术与应用7、Verilog的数字表达形式的数字表达形式 一一撇左侧的撇左侧的“位宽位宽”(十进制数形式)指示此数的(十进制数形式)指示此数的二进制位数二进制位数(不

33、管后面指示的是什么进制,这里位宽都是以二进制数为标准(不管后面指示的是什么进制,这里位宽都是以二进制数为标准得到的位数)。得到的位数)。 一一撇右侧撇右侧“进制进制”(字母形式)指示出其右侧(字母形式)指示出其右侧“数字数字”的进制。的进制。B表示二进制,表示二进制,O表示八进制,表示八进制,H表示十六进制,表示十六进制,D表示十进制表示十进制,且且不分大小写不分大小写。例:例:2b10 /两位二进制数两位二进制数104B1011 /四位四位二进制数二进制数10114hA /四位四位二进制数二进制数10103D7 /三位二进制数三位二进制数111 E D A技术与应用7、Verilog的数字表

34、达形式的数字表达形式 Verilog中只有标明了数值的数据才能确定其二进制位数。中只有标明了数值的数据才能确定其二进制位数。例:例:S3: 0=1;/3: 0表示有四位二进制,所以等号右侧表示有四位二进制,所以等号右侧 的的1应该等于二进制数应该等于二进制数0001,正式表达为,正式表达为 4b0001S5: 0=7; /等号右侧的等号右侧的7等于等于6b0001115bz /正式表达为正式表达为5bzzzzzreg7: 0 R;R=4; /等号右侧的等号右侧的4正式表达为正式表达为8b00000100 E D A技术与应用7、Verilog的数字表达形式的数字表达形式 Verilog-200

35、1规范还可以定义规范还可以定义有符号二进制数有符号二进制数。 sb是定义有符号二进制数的进制限定关键词。是定义有符号二进制数的进制限定关键词。例:例:8b10111011/无符号数无符号数8sb10111011 /有符号数,采用有符号数,采用2的补码形式表示,最高的补码形式表示,最高 位是符号,若为位是符号,若为1则是负数,若为则是负数,若为0则是正则是正 数,这里符号位是数,这里符号位是1。换算成十进制数是。换算成十进制数是 -69。 E D A技术与应用 例例3-2:4选选1多路选择器多路选择器 module MUX41a (a, b, c, d, s1, s0, y); input a,

36、 b, c, d; input s1, s0; output y; reg y; /信号类型定义段信号类型定义段 always (a or b or c or d or s1 or s0)begin : MUX41 /块语句开始块语句开始 case(s1,s0)2b00: y=a; 2b01: y=b; 2b10: y=c; 2b11: y=d; default: y=a;endcase endendmodule 电电路路模模块块端端口口说说明明和和定定义义端端Verilog 具具体体描描述述电电路路功功能能的的语语句句 电电路路模模块块功功能能描描述述段段Verilog 表表述述的的可可综综

37、合合的的完完整整电电路路模模块块 E D A技术与应用3.2.2 4选选1多路选择器及多路选择器及assign语句表述方式语句表述方式 相同的功能可以由不同的电路结构实现,也可以由不同相同的功能可以由不同的电路结构实现,也可以由不同的描述方法来描述。的描述方法来描述。 例例3-3:4选选1多路选择器多路选择器 module MUX41a (a, b, c, d, s1, s0, y); input a, b, c, d, s1, s0; output y; wire 1: 0 SEL; /定义定义2元素位矢量元素位矢量SEL为网线型变量为网线型变量 wire AT, BT, CT, DT; /

38、定义中间变量,以作连接或信号节点定义中间变量,以作连接或信号节点 assign SEL=s1, s0; /对对s1、s0进行并位操作,即进行并位操作,即 SEL1=s1; SEL 0=s0 assign AT=(SEL=2D0);assign BT=(SEL=2D1); assign CT=(SEL=2D2);assign DT=(SEL=2D2); assign y=(a&AT) | (b&BT) | (c&CT) | (d&DT) /4个逻辑信号相或个逻辑信号相或endmodule 采用了数据流的逻辑描述方式,即直接用布尔逻辑表达式采用了数据流的逻辑描述方式,即直接用布尔逻辑表达式来描述模

39、块的功能。来描述模块的功能。 E D A技术与应用1、按位逻辑操作符、按位逻辑操作符 逻辑操作是逻辑操作是按位按位分别进行的。分别进行的。 若两个操作数位矢具有不同长度,综合器自动根据最长位的操作若两个操作数位矢具有不同长度,综合器自动根据最长位的操作数的位数,把数的位数,把较短的数据按左端补较短的数据按左端补0对齐对齐。 逻辑操作的结果的逻辑操作的结果的位宽位宽由操作表达式左端的由操作表达式左端的赋值目标信号赋值目标信号的位宽的位宽来决定。来决定。逻辑逻辑操作符操作符功能功能A,B逻辑逻辑操作结果操作结果C,D逻辑逻辑操作结果操作结果C,E逻辑逻辑操作结果操作结果逻辑取反逻辑取反A=1b1C

40、=4b0011E=6b101001|逻辑或逻辑或A | B=1b1C | D=4b1111C | E=6b011110&逻辑与逻辑与A&B=1b0C&D=4b1000C&E=6b000100逻辑异或逻辑异或AB=1b1CD=4b0111CE=6b011010或或逻辑同或逻辑同或AB=1b0 CD=4b1000 CE=4b100101设:设:A=1b0; B=1b1; C3: 0=4b1100; D3:0=4b1011; E5:0=6b010110 E D A技术与应用2、等式操作符、等式操作符 全等比较操作符全等比较操作符“=”将将x或或z都当成确定的值都当成确定的值进行比较,当表进行比较,当

41、表述完全相等时输出述完全相等时输出1。 全等比较操作符全等比较操作符“=”对于两个比较对于两个比较位数不等位数不等的情况,不会像的情况,不会像等于比较操作符等于比较操作符“=”那样高位补那样高位补0后再比较,而会直接判断两后再比较,而会直接判断两数据不等数据不等。 运算操作运算操作的结果的的结果的位宽位宽由操作表达式左端的由操作表达式左端的赋值目标信号赋值目标信号的位宽的位宽来决定来决定。等式操作符等式操作符含义含义等式操作示例等式操作示例=等于等于(3=4)=0; (A=4b1011)=1; (B=4b1011)=0;!=不等于不等于(D!=C)=0; (3!=4)=1;=全等全等(D=C)

42、=1; (E=4b0 x10)=0;!=不全等不全等(E!=4b0 x10)=1;设:设:A=4b1011; B=4b0010; C=4b0z10; D=4b0z10; E=3bx10 E D A技术与应用3、wire定义网线型变量定义网线型变量 如果如果assign语句语句中需要有中需要有端口以外端口以外的信号或连接线性质的变量,的信号或连接线性质的变量,由于由于assign语句中的输出信号变量必须是语句中的输出信号变量必须是wire网线型变量,这些网线型变量,这些端口以外的信号或变量必须端口以外的信号或变量必须显式定义显式定义。 wire定义的网线型变量可在定义的网线型变量可在任何类型任何

43、类型的表达式或赋值语句中(包的表达式或赋值语句中(包括连续赋值和过程赋值语句)作括连续赋值和过程赋值语句)作输入信号输入信号,也可在,也可在连续赋值连续赋值语句语句或或实体元件例化实体元件例化中用作中用作输出信号输出信号。 可用直接可用直接wire来表达来表达assign语句。语句。例:例:wire Y=a1a2; /等同于等同于wire a1, a2; assign Y=a1a2wire 变量名变量名1,变量名,变量名2,; /一位一位变量变量wire msb: lsb 变量名变量名1,变量名,变量名2,;/矢量型变量矢量型变量 E D A技术与应用3.2.2 4选选1多路选择器及多路选择器

44、及assign语句表述方式语句表述方式 相同的功能可以由不同的电路结构实现,也可以由不同相同的功能可以由不同的电路结构实现,也可以由不同的描述方法来描述。的描述方法来描述。 例例3-3:4选选1多路选择器多路选择器 module MUX41a (a, b, c, d, s1, s0, y); input a, b, c, d, s1, s0; output y; wire 1: 0 SEL; /定义定义2元素位矢量元素位矢量SEL为网线型变量为网线型变量 wire AT, BT, CT, DT; /定义中间变量,以作连接或信号节点定义中间变量,以作连接或信号节点 assign SEL=s1,

45、s0; /对对s1、s0进行并位操作,即进行并位操作,即 SEL1=s1; SEL 0=s0 assign AT=(SEL=2D0);assign BT=(SEL=2D1); assign CT=(SEL=2D2);assign DT=(SEL=2D2); assign y=(a&AT) | (b&BT) | (c&CT) | (d&DT) /4个逻辑信号相或个逻辑信号相或endmodule 采用了数据流的逻辑描述方式,即直接用布尔逻辑表达式采用了数据流的逻辑描述方式,即直接用布尔逻辑表达式来描述模块的功能。来描述模块的功能。 E D A技术与应用3.2.3 4选选1多路选择器及条件赋值语句多

46、路选择器及条件赋值语句表述方式表述方式 例例3-4:4选选1多路选择器多路选择器 module MUX41a (A, B, C, D, S1, S0, Y); input A, B, C, D, S1, S0; output Y; wire AT = S0 ? D : C; wire BT = S0 ? B : A; wire Y = (S1 ? AT : BT); endmodule例例3-4的的RTL图图s1s0y00a01b10c11d真值表真值表 E D A技术与应用条件赋值语句条件赋值语句条件表达式条件表达式 ? 表达式表达式1 :表达式:表达式2 条件操作符条件操作符“?:?:”

47、当条件表达式的计算值为真时(数值等于当条件表达式的计算值为真时(数值等于1),选择并计算),选择并计算表达表达式式1的值,否则(数值等于的值,否则(数值等于0),选择并计算),选择并计算表达式表达式2的值。的值。 在连续赋值(并行赋值)和过程赋值(顺序赋值)语句结构中都在连续赋值(并行赋值)和过程赋值(顺序赋值)语句结构中都可以使用。可以使用。 E D A技术与应用3.2.3 4选选1多路选择器及条件赋值语句多路选择器及条件赋值语句表述方式表述方式 例例3-4:4选选1多路选择器多路选择器 module MUX41a (A, B, C, D, S1, S0, Y); input A, B, C

48、, D, S1, S0; output Y; wire AT = S0 ? D : C; wire BT = S0 ? B : A; wire Y = (S1 ? AT : BT); endmodule例例3-4的的RTL图图s1s0y00a01b10c11d真值表真值表 E D A技术与应用3.2.4 4选选1多路选择器及条件语句表述多路选择器及条件语句表述方式方式 例例3-5:4选选1多路选择器多路选择器 module MUX41a (A, B, C, D, S1, S0, Y); input A, B, C, D, S1, S0; output Y; reg 1: 0 SEL; reg

49、Y; always (A, B, C, D, SEL) begin /块语句起始块语句起始SEL=S1, S0; /把把S1,S0并位为并位为2元素矢量变量元素矢量变量 SEL 1: 0if (SEL=0) Y=A; /当当SEL=0成立,即成立,即(SEL=0)=1 时,时,Y=A else if (SEL=1) Y=B; /当当(SEL=1)为真,为真,Y=B else if (SEL=2) Y=C; /当当(SEL=2)为真,为真,Y=C else Y=D; /当当(SEL=3)为真为真,即,即 SEL=2b11时,时,Y=D end /块块语句结束语句结束endmodule E D A

50、技术与应用1、if条件语句条件语句n 只有一个条件的只有一个条件的if条件语句条件语句if (条件表达式条件表达式) 语句语句1; else 语句语句2; 2选选1多路选择器。多路选择器。 条件表达式的值为条件表达式的值为1时,执行语句时,执行语句1,条件表达式的值为,条件表达式的值为0时,执时,执行语句行语句2。n 执行的语句有多条时,用执行的语句有多条时,用begin_end括起来。括起来。if (条件表达式条件表达式) 语句语句1; else begin 语句语句2;语句;语句3;语句;语句n;end E D A技术与应用1、if条件语句条件语句n 多条件的多条件的if条件语句条件语句i

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(第3章-组合电路的Verilog设计汇总课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|