Verilog基本语法.pdf

上传人:李医生 文档编号:6064706 上传时间:2020-09-04 格式:PDF 页数:71 大小:518.35KB
返回 下载 相关 举报
Verilog基本语法.pdf_第1页
第1页 / 共71页
Verilog基本语法.pdf_第2页
第2页 / 共71页
Verilog基本语法.pdf_第3页
第3页 / 共71页
Verilog基本语法.pdf_第4页
第4页 / 共71页
Verilog基本语法.pdf_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《Verilog基本语法.pdf》由会员分享,可在线阅读,更多相关《Verilog基本语法.pdf(71页珍藏版)》请在三一文库上搜索。

1、 第第3章章 Verilog 基本语法基本语法 2 3.1 Verilog HDL基本模块说明基本模块说明 3.2 Verilog HDL中的词汇约定中的词汇约定 3.3 Verilog HDL 数据类型数据类型 3.4 Verilog HDL 运算符运算符 主要内容主要内容: : 3 3.1 Verilog HDL基本模块说明基本模块说明 module能够表示:能够表示: 物理块,物理块,如如IC或或ASIC单元单元 逻辑块,逻辑块,如一个如一个CPU设计的设计的ALU部分部分 整个系统整个系统 每一个模块的描述从关键词每一个模块的描述从关键词module开始,有一个名称(如开始,有一个名称

2、(如 SN74LS74,DFF,ALU等等),由关键词等等),由关键词endmodule结束。结束。 module是层是层 次化设计的基次化设计的基 本构件本构件 逻辑描述放在逻辑描述放在 module内部内部 4 Verilog 模块模块(module)结构基本要素结构基本要素 知识点:知识点: 3.1.1 端口信息端口信息 3.1.2 输入输入/ /输出说明输出说明 3.1.3 逻辑功能描述逻辑功能描述 5 3.1.1 端口信息端口信息 1,端口在模,端口在模 块名字后的块名字后的 括号中列出括号中列出 3,端口可以说,端口可以说 明为明为input, , output及及inout 2,

3、端口等价于硬,端口等价于硬 件的引脚件的引脚( (pin) ) 模块通过端口与外部通信模块通过端口与外部通信 6 Verilog 模块的结构由在模块的结构由在module和和endmodule 关键词之间的四个主要部分组成:关键词之间的四个主要部分组成: - 1. 端口信息:端口信息: module combination(a, b, c, d ); - 2. 输入输入/输出说明输出说明 : input a, b, c ; output d ; -/ 输入输入/输出端口信号类型声明,缺省为输出端口信号类型声明,缺省为wire型型 : - 3. 内部信号:内部信号: wire x; - 4. 功

4、能定义:功能定义: assign d = a | x ; assign x = ( b endmodule 3.1.2 端口说明端口说明 7 3.1.3 逻辑功能描述逻辑功能描述 module mux2to1 (out, a, b, sel); input a, b, sel; output out; wire out; assign out=(sel)?b:a; endmodule 两路选择器的两路选择器的RTL级描述级描述1: 8 两路选择器的两路选择器的RTL级描述级描述2: module mux2to1 (out, a, b, sel); input a, b, sel; output

5、 out; reg out; always ( sel or a or b) if (! sel) out = a; else out = b; endmodule 9 1. 端口信息端口信息 2. 输入输入/输出说明输出说明 3. 逻辑功能描述(逻辑功能描述(实例化实现功能描述实例化实现功能描述) 实例化实例化( (module instances):): 10 module mux2to1 (out, a, b, sl); input a, b, sl; output out; not u1 (nsl, sl ); and u2 (sela, a, nsl); and u3 (selb,

6、b, sl); or u4 (out, sela, selb); endmodule 两路选择器的门级描述两路选择器的门级描述- -实例化:实例化: 11 请在下面的空格中填入适当的符号请在下面的空格中填入适当的符号 使其成为右图的使其成为右图的Verilog 模块模块 : module block1(a, b, , , ); input , , ; d, ; assign d = a | ( b assign e = ( b _ 练习练习: :编写编写Verilog HDL模块模块 a b c d e 12 module block1(a, b, c, d, e ); input a, b,

7、 c; output d, e ; assign d = a | ( b assign e = ( b endmodule 练习练习答案答案:编写编写Verilog HDL模块模块 a b c d e 13 3.2 Verilog HDL中的词汇约定中的词汇约定 知识点:知识点: 3.2.1 术语及定义术语及定义 3.2.2 空白符和注释空白符和注释 3.2.3 Verilog采用的四值逻辑系统采用的四值逻辑系统 3.2.4 整数常量和实数常量整数常量和实数常量 3.2.5 字符串字符串 3.2.6 标识符标识符 3.2.7 系统任务及函数系统任务及函数 3.2.8 编译指导编译指导 3.2.

8、9 文本包含文本包含 3.2.10 文本替换文本替换 14 3.2.1 术语及定义术语及定义 1.空白符:空白符:空格、空格、tabs及换行及换行 2. 标志符标志符(Identifier):Verilog中对象中对象(如模块或信号如模块或信号)的名字的名字 3.LSB:最低有效位最低有效位(Lease significant bit) 4.MSB:最高有效位最高有效位(Most significant bit) 15 3.2.2 空白符和注释空白符和注释 module MUX2_1 (out, a, b, sel); / Port declarations output out; input

9、 sel; / control input input b, a; /* data inputs */ wire sel_, a1, b1; /*The netlist logic selects input ”a” when sel = 0 and it selects ”b” when sel = 1. */ not not1 (sel_, sel); and and1 (a1, a, sel_); and and2 (b1, b, sel); or or1 (out, a1, b1); endmodule 格式自由格式自由 使用空白符提高可读性及代码组使用空白符提高可读性及代码组 织。织

10、。Verilog忽略空白符除非用于忽略空白符除非用于 分开其它的语言标记。分开其它的语言标记。 多行注释,在多行注释,在/* /* */*/内内 单行注释单行注释 到行末结束到行末结束 16 3.2.3 Verilog采用的四值逻辑系统采用的四值逻辑系统 0, Low, False, Logic Low, Ground,VSS, Negative Assertion 1, High, True, Logic High, Power, VDD, VCC, Positive Assertion X Unknown: Occurs at Logical Which Cannot be Resolve

11、d Conflict Z, High Impedance, Tri- Stated, Disabled Driver (Unknown) 17 3.2.4 整数常量和实数常量整数常量和实数常量 Verilog中,常量中,常量(literals)可是整数也可以是实数。可是整数也可以是实数。 1.整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为: 其中其中 size :位数大小,由十进制数表示的位数位数大小,由十进制数表示的位数(bit) 表示。表示。缺省为缺省为32位位 base:数基,可为数基,可为2(b)、8(o)、10(d)、 16(h)进制。缺省为进

12、制。缺省为10进制进制 value:是所选数基内任意有效数字,包括是所选数基内任意有效数字,包括 X、Z。 2.实数常量可以用十进制或科学表示法表示。实数常量可以用十进制或科学表示法表示。 18 12 unsized decimal (zero- extended to 32 bits) h83a unsized hexadecimal (zero- extended to 32 bits) 8b1100 0001 8-bit binary 16hff01 16-bit hexadecimal 32bz01x Z-extended to 32 bits 3b1010 1101 3-bit nu

13、mber, truncated to 3b101 6.3 decimal notation 32e- 4 scientific notation for 0.0032 4.1E3 scientific notation for 4100 整数与实数常量例子整数与实数常量例子 19 整数和实数常量小结整数和实数常量小结 整数的大小可以定义也可以不定义。整数表示为:整数的大小可以定义也可以不定义。整数表示为: 数字中(数字中(_ )忽略,便于查看)忽略,便于查看 没有定义大小没有定义大小(size)整数缺省为整数缺省为32位位 /*特别注意特别注意*/ 缺省数基为十进制缺省数基为十进制 数基数基(

14、base)和数字和数字(16进制进制)中的字母无大小写之分中的字母无大小写之分 当数值当数值value大于指定的大小时,截去高位。如大于指定的大小时,截去高位。如 2b1101表示的是表示的是 2b01 实数常量实数常量 实数可用科学表示法或十进制表示实数可用科学表示法或十进制表示 科学表示法表示方式:科学表示法表示方式: , 表示:表示: 尾数尾数10指数 指数 20 3.2.5 字符串(字符串(string)(了解了解) 字符串要在一行中用双引号括起来,也就是不能跨行。字符串要在一行中用双引号括起来,也就是不能跨行。 字符串中可以使用一些转义字符串中可以使用一些转义(escape)符,如符

15、,如t n 可以使用一些格式符可以使用一些格式符(如如%b)在仿真时产生格式化输出:在仿真时产生格式化输出: ”This is a normal string” ”This string has a t tab and ends with a new linen” ”This string formats a value: val = %b” Verilog中,字符串大多用于显示信息的命令中。中,字符串大多用于显示信息的命令中。(只用在测只用在测 试中!试中!) 21 格式符格式符 %h %o %d %b %c %s %t hex oct dec bin ACSII string time 转

16、义符转义符 t n ” tab 换行换行 反斜杠反斜杠 双引号双引号 ASCII representation of above 格式符格式符%0d表示没有前导表示没有前导0的十进制数的十进制数 22 3.2.6 标识符标识符(identifiers) (重点重点) 标识符是用户在描述时给标识符是用户在描述时给Verilog对象(电路模块、信号等)起的名字对象(电路模块、信号等)起的名字 标识符必须以字母标识符必须以字母(a-z, A-Z)或或( _ )开头,后面可以是字母、数字、开头,后面可以是字母、数字、( $ )或或( _ )。 最长可以是最长可以是1023个字符个字符 标识符区分大小写

17、,标识符区分大小写,sel和和SEL是不同的标识符是不同的标识符 例如:例如: module MUX2_1 (out, a, b, sel); output out; input a, b, sel; wire sel_, a1, b1; not not1 (sel_, sel); and and1 (a1, a, sel_); and and2 (b1, b, sel); or or1 (out, a1, b1); endmodule Verilog标识符标识符 23 有效标识符举例:有效标识符举例: shift_reg_a busa_index _bus3 无效标识符举例无效标识符举例:

18、34net / 开头不是字母或“开头不是字母或“_” a*b_net / 包含了非字母或数字,包含了非字母或数字, “$” “_” n238 /包含了非字母或数字,包含了非字母或数字, “$” “_” Verilog区分大小写,所有区分大小写,所有Verilog关键词如关键词如module、 endmodule等都使用小写字母。等都使用小写字母。 24 3.2.7 系统任务及函数系统任务及函数(了解了解) 使用方式:使用方式:$ $符号指示这是系统任务和函数符号指示这是系统任务和函数 系统函数有很多,如:系统函数有很多,如: 返回当前仿真时间返回当前仿真时间$time 显示显示/监视信号值监视

19、信号值($display, $monitor) 停止仿真停止仿真$stop 结束仿真结束仿真$finish 如:如: $monitor($time, “a = %b, b = %h”, a, b); 当信号当信号a或或b的值发生变化时,系统任务的值发生变化时,系统任务$monitor显显 示当前仿真时间,信号示当前仿真时间,信号a值值(二进制格式二进制格式), 信号信号b值(值(16 进制格式)。进制格式)。 25 3.2.8 编译指导编译指导 (了解了解) ( )符号说明一个编译指导符号说明一个编译指导 这些编译指导使仿真编译器进行一些特殊的操作这些编译指导使仿真编译器进行一些特殊的操作 编

20、译指导一直保持有效直到被覆盖或解除编译指导一直保持有效直到被覆盖或解除 26 3.2.9 文本包含文本包含include (了解了解) 编译指导编译指导include在当前内容中插入一个文件在当前内容中插入一个文件 格式:格式: include “” 如如 include global.v include parts/count. v include ././library/mux. v” include可用于:可用于: include保存在文件中的全局的或经常用到的一些定义,如文本宏保存在文件中的全局的或经常用到的一些定义,如文本宏 在模块内部在模块内部include一些任务(一些任务(ta

21、sks),提高代码的可维护性。,提高代码的可维护性。 可以是相对路可以是相对路 径或绝对路径径或绝对路径 27 3.2.10 文本替换文本替换define (了解了解) 编译指导编译指导define提供了一种简单的文本替换的功能提供了一种简单的文本替换的功能 define 在编译时在编译时替换替换。可提高描述的可读性。可提高描述的可读性。 define not_delay #1 define and_delay #2 define or_delay #1 module MUX2_1 (out, a, b, sel); output out; input a, b, sel; wire sel_

22、, a1, b1; not not_delay not1( sel_, sel); and and_delay and1( a1, a, sel_); and and_delay and2( b1, b, sel); or or_delay or1( out, a1, b1); endmodule 定义定义not_delay 使用使用not_delay 28 文本替换文本替换 (了解了解) 解除定义的宏,使用解除定义的宏,使用 undef macro_name 使用编译指导使用编译指导define,可以,可以 提高描述的可读性提高描述的可读性 定义全局设计参数,如延时和矢量的位数。这些参定义全

23、局设计参数,如延时和矢量的位数。这些参 数可以定义在同一位置。这样,当要修改设计配置数可以定义在同一位置。这样,当要修改设计配置 时,只需要在一个地方修改。时,只需要在一个地方修改。 定义定义Verilog命令的简写形式命令的简写形式 define vectors_ file /usr1/chrisz/library/vectors define results_ file / usr1/chrisz/library/results 可以将可以将define放在一个文件中,与其它文件一起编译。放在一个文件中,与其它文件一起编译。 29 3.3 Verilog HDL 数据类型数据类型 知识点:

24、知识点: 3.3.1 线网类型线网类型 3.3.2 寄存器类型寄存器类型 3.3.3 参数参数 3.3.4 位选择位选择 3.3.5 总结总结 30 3.3 Verilog HDL 数据类型数据类型 Verilog HDL 有两大类数据类型。有两大类数据类型。 1. 线网类型线网类型(net type): 表示表示Verilog结构化元件间的物理结构化元件间的物理 连线。它的值由驱动元件的值决定,例如连续赋值或连线。它的值由驱动元件的值决定,例如连续赋值或 门的输出。如果没有驱动元件连接到线网,线网的缺门的输出。如果没有驱动元件连接到线网,线网的缺 省值为省值为z。 2. 寄存器类型寄存器类型

25、(register type):表示一个抽象的数据存储单表示一个抽象的数据存储单 元,它只能在元,它只能在always语句和语句和initial语句等过程语句中被语句等过程语句中被 赋值,并且它的值从一个赋值到另一个赋值被保存下赋值,并且它的值从一个赋值到另一个赋值被保存下 来。寄存器类型的变量具有来。寄存器类型的变量具有x的缺省值。的缺省值。 31 3.3.1 net(线网)型(线网)型 net需要被持续的驱动,驱动它的可以是门和模块。需要被持续的驱动,驱动它的可以是门和模块。当当net驱动器的值发驱动器的值发 生变化时,生变化时, 新值被传送到新值被传送到net上。上。 在下例中,线网在下

26、例中,线网out由由or门驱动。当门驱动。当or门的输入信号置位时将传输到线门的输入信号置位时将传输到线 网网net上。上。 32 netnet类的类型(线网)类的类型(线网) 有多种有多种net类型用于设计类型用于设计(design-specific)建模和工艺建模和工艺(technology-specific) 建模建模 没有声明的没有声明的net的缺省类型为的缺省类型为 1 位位(标量标量)wire类型。但这个缺省类型可由类型。但这个缺省类型可由 下面的编译指导改变:下面的编译指导改变: default_nettype net类型类型 功功 能能 wire, tri supply1, s

27、upply0 wor, trior wand, triand trireg tri1, tri0 标准内部连接线标准内部连接线(缺省缺省) 电源和地电源和地 多驱动源线或多驱动源线或 多驱动源线与多驱动源线与 能保存电荷的能保存电荷的net 无驱动时上拉无驱动时上拉/下拉下拉 综合编译器综合编译器 不支持的不支持的 net类型类型 33 线网数据类型线网数据类型 可综合的线网数据类型包含下述:可综合的线网数据类型包含下述: wire Wor wand tri supply0 supply1 最常用的是最常用的是wire! 34 简单的线网类型说明语法为:简单的线网类型说明语法为: net_ki

28、nd msb : lsb net1, . . , netN; 解释:解释:1. net_kind 是上述线网类型的一种;是上述线网类型的一种; 2. msb和和lsb 是用于定义线网范围的常量是用于定义线网范围的常量 表达式,如果没有定义,缺省为表达式,如果没有定义,缺省为1位。位。 例例1:wire rst, data; /1位的复位线和数据线。位的复位线和数据线。 例例2: wire 2:0 Addr1 ; /Addr1是是3位地址线位地址线 wire 3:1 Addr2; /Addr2是是3位地址线位地址线 线网数据类型线网数据类型- -使用语法使用语法 35 线网型变量使用举例线网型变

29、量使用举例 module mux2to1 (out, a, b, sel); input a, b, sel; output out; wire out; assign out=(sel)?b:a; /input a, b, sel没声明信号类型,缺省为没声明信号类型,缺省为wire型型 endmodule 例如:两路选择器的例如:两路选择器的RTL级描述级描述 36 3.3.2 寄存器的类型寄存器的类型 寄存器类有四种数据类型寄存器类有四种数据类型 寄存器类型寄存器类型 功能功能 reg 是最常用的寄存器类型是最常用的寄存器类型 ,无符号型。无符号型。 integer 32位位有符号有符号整

30、数变量,算术操作产生二进制补码形式整数变量,算术操作产生二进制补码形式 。 的结果。通常用作不会由硬件实现的的数据处理。的结果。通常用作不会由硬件实现的的数据处理。 real 双精度的带符号浮点变量,用法与双精度的带符号浮点变量,用法与integer相同。相同。 time 64位无符号整数变量,用于位无符号整数变量,用于仿真时间仿真时间的保存与处理。的保存与处理。 realtime 与与real内容一致,但可以内容一致,但可以用作实数仿真时间用作实数仿真时间的保存的保存 与处理。与处理。 37 寄存器类型寄存器类型regreg- -使用语法使用语法 reg是寄存器数据类型最常见的数据类型。是寄

31、存器数据类型最常见的数据类型。 使用语法形式如下:使用语法形式如下: reg msb: lsb reg1,. . . ,regN; msb和和lsb 定义了范围,并且均为常数值表达式;如果没有定义了范围,并且均为常数值表达式;如果没有 定义范围,缺省值为定义范围,缺省值为1位寄存器。位寄存器。 例例1: reg 3:0 counter1 ; /4 位寄存器。位寄存器。 例例2: reg counter2 ; / 1位寄存器。位寄存器。 例例3: reg 31:0 data_buffer1 ; reg 32:1 data_buffer2 ; 38 常见的寄存器类型:常见的寄存器类型: Integ

32、er integer A, B, C ; /三个整数型寄存器。三个整数型寄存器。 说明:说明: 1. 与与reg不同,不同,integer可以表示可以表示有符号数有符号数,并且算术操作符,并且算术操作符 提供提供2的补码运算结果。的补码运算结果。 2. 同时,如上例定义的同时,如上例定义的A,B,C变量它们分别是变量它们分别是32位(位( 32- bit )的寄存器变量。的寄存器变量。 39 寄存器型变量使用举例寄存器型变量使用举例 module mux2to1 (out, a, b, sel); input a, b, sel; output out; reg out; always ( s

33、el or a or b) if (! sel) out = a; else out = b; /input a, b, sel没声明信号类型,缺省为没声明信号类型,缺省为wire型型 endmodule 例如:两路选择器的例如:两路选择器的RTL级描述级描述 40 如何给模块端口信号选择正确的数据类型?如何给模块端口信号选择正确的数据类型? module top(A,B,Y ); input A,B; output Y; reg A1,B1;/wire? wire Y1; /reg? /对于信号对于信号Y,A,B呢?呢? DUT u1 (Y1, A1, B1) ; DUT u2 (Y, A,

34、 B) ; endmodule module DUT (O, in1, in2); output O; input in1, in2; wire in1, in2; reg O; always (in1 or in2) O=in1+in2; endmodule 输入端口(如右图输入端口(如右图 in1、in2信号)只信号)只 能是能是net;但;但输入输入 端口可以由端口可以由 net/register驱动驱动 输出端口输出端口( 如如O )可可 以是以是net/register类类 型,但型,但输出端口只输出端口只 能驱动能驱动net 若若in1、in2说明为说明为 reg则会产生错误。则会

35、产生错误。 in1 in2 O A B Y 或者:或者: wire O; assign O=in1+in2; 41 练习练习- -选择数据类型时常犯的错误选择数据类型时常犯的错误 修改前:修改前: module example(o1, o2, a, b,c,d); input a, b,c,d; output o1, o2; reg c, d; reg o2; and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0; endmodule 修改后:修改后: module example(o1, o2, a, b, c, d); i

36、nput a, b, c, d; output o1, o2; / reg c, d; / reg o2 reg o1; and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0; endmodule example.v 或者换成:或者换成: always (c or d) o2=c 或者换成:或者换成: assign o2=c 42 3.3.3 参数参数 参数是一个常量。参数是一个常量。 参数定义的语法:参数定义的语法: parameter ; 如:如: parameter WIDTH = 8h20; parameter BYT

37、E =4h8; 43 参数(参数(parameters)parameters)- -使用举例使用举例 module mod1( out, in1, in2); . . . . . . parameter WORD_WIDTH = 8; . . . . . . wire WORD_WIDTH-1: 0 in1; / A wire declaration using parameter . . . . . . endmodule 例: 44 参数(参数(parameters)parameters)使用注意事项使用注意事项 1. 推荐:推荐:一般定义参数等常量名称用大写,变量名称用小写!一般定义参数

38、等常量名称用大写,变量名称用小写! 2. 可一次定义多个参数,用逗号隔开。可一次定义多个参数,用逗号隔开。 如:如: parameter WORD_WIDTH = 32, ADDR_WIDTH = 8; 等同于:等同于: parameter WORD_WIDTH = 32; parameter ADDR_WIDTH = 8; 45 (parameters)使用注意事项使用注意事项(cont.) 3. 3. 参数的定义是局部的参数的定义是局部的,只在,只在当前模块当前模块中有效。中有效。 如:在工程如:在工程Multi-CPU中一个中一个文件文件a.v中定义中定义 parameter WORD_

39、WIDTH = = 32; 在同一工程在同一工程另一个另一个文件文件b.v中定义中定义 parameter WORD_WIDTH = 8; 是可以的。是可以的。 /但是如果这样,项目比较复杂时,容易混淆但是如果这样,项目比较复杂时,容易混淆WORD_WIDTHWORD_WIDTH的值,不的值,不 建议这样使用,可以声明成两个不同名称的参数来处理这种情建议这样使用,可以声明成两个不同名称的参数来处理这种情 况。况。 46 参数(参数(parameters)使用注意事项使用注意事项(cont.) !注意与!注意与define 的异同的异同 如在文件如在文件sram_control.v中,定义有:中

40、,定义有: define ADDR_WIDTH 12 define DATA_WIDTH 32 module example2( clk,rst,addr_in,data_in,data_out); input DATA_WIDTH-1: 0 data_in; input ADDR_WIDTH -1: 0 addr_in; output DATA_WIDTH-1: 0 data_out; wire DATA_WIDTH-1: 0 data_in; wire ADDR_WIDTH -1: 0 addr_in; reg DATA_WIDTH-1: 0 data_out; parameter MEM

41、ORY_DEPTH = 1024; . . . endmodule 47 或在文件或在文件cpu_param.v中定义:中定义: define ADDR_WIDTH 12 define DATA_WIDTH 32 然后在文件然后在文件sram_control.v中如下使用:中如下使用: include cpu_param.v module example2( clk,rst,addr_in,data_in,data_out); input DATA_WIDTH-1: 0 data_in; input ADDR_WIDTH -1: 0 addr_in; output DATA_WIDTH-1:

42、0 data_out; wire DATA_WIDTH-1: 0 data_in; wire ADDR_WIDTH -1: 0 addr_in; reg DATA_WIDTH-1: 0 data_out; parameter MEMORY_DEPTH = 1024; . . . endmodule 48 3.3.4 位选择位选择 位选择从向量中抽取特定的位。位选择从向量中抽取特定的位。 reg 31:0 Breg; wire 31:0 Bwire; . . . Breg=Bwire; 或者或者 . . . Breg31:16= Bwire15:0; Breg15:0= Bwire31:16;

43、49 整数不能作为位向量访问。整数不能作为位向量访问。 例如定义了:例如定义了:integer B; 对于上面的整数对于上面的整数B的说明,的说明,B6和和B20:10是非法的。是非法的。 解决办法:解决办法: 一种截取位值的方法是将整数赋值给一般的一种截取位值的方法是将整数赋值给一般的reg类型变量,然后从类型变量,然后从 中选取相应的位,如:中选取相应的位,如: integer Bint; reg 31:0 Breg; / /由于由于Bint6和和Bint20:10是不允许的。是不允许的。 Breg = Bint; / 或或 Breg = Bint; /*现在,现在,Breg6和和Breg

44、20:10是允许的,并且所取具体值,是是允许的,并且所取具体值,是 整数整数Bint 相应的位值。相应的位值。*/ 位选择注意事项位选择注意事项 50 3.3.5 Verilog模块中模块中常见常见信号信号类型类型-总结总结 两种主要的信号类型:两种主要的信号类型: - 寄存器类型:代表寄存器类型:代表 reg 在在always 等过程等过程块中被赋值的信号,往往代表触发器,但不一定块中被赋值的信号,往往代表触发器,但不一定 是触发器。是触发器。 (时序逻辑电路中常常被综合为(时序逻辑电路中常常被综合为D触发器触发器 ; 纯组合逻辑电路中被综合为连线)纯组合逻辑电路中被综合为连线) - 连线类型:代表连线类型:代表 wire 用用 assign 关键词指定连续关键词指定连续/持续持续赋值所描述的组合逻辑的信号或赋

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1