西电verilog课件03

上传人:E**** 文档编号:104283482 上传时间:2019-10-08 格式:PDF 页数:34 大小:305.16KB
返回 下载 相关 举报
西电verilog课件03_第1页
第1页 / 共34页
西电verilog课件03_第2页
第2页 / 共34页
西电verilog课件03_第3页
第3页 / 共34页
西电verilog课件03_第4页
第4页 / 共34页
西电verilog课件03_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《西电verilog课件03》由会员分享,可在线阅读,更多相关《西电verilog课件03(34页珍藏版)》请在金锄头文库上搜索。

1、1 第三章 Verilog HDL基础知识第三章 Verilog HDL基础知识 2 Outline ? 词法 ? 数据类型 ? 运算符 ? 系统任务与系统函数 ? 编译指令 3 3.1 基本词法3.1 基本词法 一. 间隔符与注释符一. 间隔符与注释符 1. 间隔符间隔符 包括空格(b)、tab(t)、换行符(n)及换页符 module addbit (a, b, ci, sum, co); input a; input b; input ci; output sum; output co; 4 3.1 2. 注释符注释符 两种形式: /* */与 / module addbit (a, b

2、, ci, sum, co); / input ports input a; input b; input ci; / output ports output sum; output co; 5 3.1 二. 数值二. 数值 高阻态不定态1、真、高电 平 零、非、 低电平 逻辑状态 z、Z或?x或X10表示符号 1. 逻辑状态逻辑状态 6 3.1 2. 整数的表示2. 整数的表示 +/- 缺省值 7 3.1 说明:说明: ? 在二进制表示中,x、z只表示相应位的逻辑状态;在八进 制/十六进制表示中,一位的x、z表示的是三个/四个二进制 位都处于x或z态 ? 位宽是用十进制数表示的二进制位宽,缺

3、省值=机器字 长,至少32位。位宽d且数值的最高位是0或1,高位部分由0填充, 若最高位是x或z时,高位部分填充x或z。 ?下划线常用来分隔整数以提高程序的可读性,但其两边必 须都是具体的数字,如8b_0011_1010为非法 8 3.1 3. 实数的表示3. 实数的表示 十进制表示:如12.34 -34.5; 指数表示:如 3e-2 / 0.03 -6.2e6 /6200000.0 说明:说明: ?小数点两边都必须有数字,如.2或2.都是非法的 ?当实数被转换为整数时,是按四舍五入的方式进行的。 ?应用在延时、负载等物理参数。 9 3.1 三. 字符串与字符变量三. 字符串与字符变量 定义同

4、C语言,为两个双引号“ ”之间的字符。 一个字符对应8位的ASCII值。 双引号之间的字符,不允许跨行,可由前导控制键引入一些特 殊字符(转意符): 10 3.1 ? 每个字符实际上是由8个二进制位表示的,定义字符变量时,应注意留有 足够的空间。 实例 module test_string; reg8*14:1 str_var; /定义可存放14个字符的寄存器变量 initial begin str_var=“Hello world”;/赋初值(11个字符,高位多余的3个字符填0) $display(“s is is stored as %h”, str_var, str_var);/将str

5、_var依次按字符串、16 /进制方式显示 str_var=str_var, “!”;/将字符串连接到str_var后面 $display(“s is is stored as %h”, str_var, str_var); end endmodule 执行结果:Hello world is stored as 00000048656c6c6f20776f726c64 (前3个字符为空白,因赋值为0) Hello world! is stored as 48656c6c6f20776f726c64212121 字符串变量定义字符串变量定义 字符串赋值字符串赋值 11 3.1 四. 关键字四.

6、关键字 指Verilog HDL 语言内部的专用词 具体见表3.2 12 3.2 数据类型3.2 数据类型 ? 物理类型 连线型数据 寄存器型数据 存储器 ? 抽象类型 integer整型 time时间型 real实型 parameter参数型 13 3.2 一一. 物理数据类型物理数据类型 在新的赋值前保持原值 不变 没有电荷保持作用(trireg除外)。 当没有驱动,处于高阻 保持方式 过程赋值语句initial、 always ?连续赋值语句assign(逻辑驱动) ?结构描述中门或模块的输出 驱动方式 (赋值方式 ) 具有状态保持作用的硬 件电路(触发器、锁存 器等) 物理信号连线硬件

7、实现 寄存器(存储器)连线 14 3.2 1. 连线型数据连线型数据 电源线,逻辑 1/地线,逻 辑0 上拉电阻 (接电源 )/下拉 电阻(接 地) 具有电 荷保持 特性的 连线 多重驱动时,具 有线或/线与功能 的连线 标准 连线 功能 Supply1/ Supply0 tri1/ tri0 triregwor,trior/ wand, triand Wire tri 类型 15 3.2 ? 说明 ? 对应于硬件电路中的物理信号连接,主要出现在模块的结 构描述中,其逻辑值无符号位 ? 必须用连线类型定义语句进行说明,说明缺省时为1bit的 wire型连线 ? 标准连线被多重驱动时会出现不定态

8、。 如图,若定义y为wire型,则当a=b (0、1或z)时,y=a=b;当ab时,y=x。 若定义y为wor或wand型,则y=a wire 7:0 address; wire #(2.4,1.8) carry; wire (strong1, pull0) sum; trireg (small) store; 20 3.2 2. 寄存器类型2. 寄存器类型 regn-1:0 变量名变量名1,变量名,变量名2,变量名,变量名n; 或 ; 或regn:1 变量名变量名1,变量名,变量名2,变量名,变量名n; 说明 ?寄存器变量必须给出类型说明,无缺省说明状态。 ?必须用过程赋值语句赋值,只能出现

9、在过程语句后面的过程 块语句中 ?可正可负,但reg变量作为表达式中的操作数时,只能作为 无符号值 例:reg 7:0 m,n; 21 3.2 ?标量与矢量标量与矢量 1标量:线宽只有一条的连线,位数只有一位的寄存器。 2矢量:线宽大于一条的连线(总线),位数多于一位的寄存器 3标量类矢量:可以按位或部分位赋值的矢量。加入关键词scalared reg scalared 7:0 reg_a;/reg_a被定义成标量类矢量 4. 矢量类矢量:不能按位或部分位赋值、只能作为一个整体操作的矢 量。加入关键词vectored wire vectored 31:0 bus32;/bus32被定义成矢量类

10、矢量 22 3. 存储器类型3. 存储器类型 存储器可看成一组寄存器阵列,寄存器的 个数就是存储器的存储单元数目(字节 数),每个寄存器的位数就是每个存储单 元的位数(字长) 与寄存器差别是对寄存器可按位操作, 对存储单元只能进行整体操作。 3.2 23 3.2 ? 存储器类型说明 reg n-1:0 存储器名存储器名m-1:0; m是存储器的字节数,n是存储器的位数(缺省值为1bit) 例:reg 15:0 mem_ram1023:0 ;/定义了一个容量为 1k的16位存储器 24 例子例子 reg mem_b7:0; /定义一个8个字节的1位存 储器 mem_b0=1b0; /对mem_b

11、的第0个字节赋值 mem_b=0; /非法,必须指定字节位置( 存储地址) mem_b=8b0101 1101; /非法,不能一次性地整体赋 值 reg7:0 reg_a; /定义一个8位寄存器 reg_a0=1b0; /对reg_a的第0位赋值 reg_a=0; /对reg_a清零 reg_a=8b11101010; /对reg_a的整体赋值 3.2 25 3.2 二二. 抽象数据类型抽象数据类型 1. 寄存器类型寄存器类型 类 型 IntegerRealTime 说 明 32位带符 号整型变 量 64位浮点、 双精度、带 符号实型变 量 64位无符 号时间变 量 用 途 循环控制 变量的说

12、 明 延时时间 的计算 模拟时间 的存储与 计算 26 3.2 ? 举例 integer count; time start, stop; real time; 27 3.2 2. 参数类型参数类型 parameter 例: parameter msb=7, lsb=0, delay=1;/delay为延时 参数,msb、lsb分别为最高有效位和最低有效位 reg msb : lsb reg_a;reg7:0 reg_a; and #delay (x, y, z);and #1 (x,y,z); 28 3.2 ? 说明说明 ?用文字参数代替数字量,增加描述的可读性,便于修 改,有助于可重用IP

13、设计,常用于定义延时、线宽、寄 存器位数等物理量。表达式只能包含数字或先前已定义 过的参数 ?参数定义是局部化的,只在本模块中有效 29 3.3 运 算 符3.3 运 算 符 一一. 分类分类 r=s?t:u 三目 C=a|b 双目 clock=clock单目 实例格式运算符分类 30 3.3 ?说明说明 ?所有操作符都是从左向右结合的,只有条件操作符是从右向左 ?在双目运算中,若两个操作数不等长,原则上总是将短的操作数的 高位不足部分用0补足,运算结果的长度与长操作数的长度一致。但 若短操作数的最高位是x,则扩展得到的高位部分也是x ?允许实型量参与的运算符:算术,关系,逻辑,相等,条件 ?

14、不允许实型量参与的运算符:连接,取模,位运算,全等,缩位, 移位 31 3.3 返回值只有0或1返回值只有0或1 32 3.3 33 3.3 34 3.4 系统任务与系统函数3.4 系统任务与系统函数 35 3.4 一. 标准输出任务一. 标准输出任务 调用形式: $display (“格式控制字符串”,输出变量名1,输出变 量名2,); /输出结束后自动换行 $write (“格式控制字符串”,输出变量名1,输出变量 名2,); /输出结束后不自动换行,需在格式控 制字符串后加n才换一次行 例:例: $display(“this is a demo for output”); $write

15、(“this is a demo for output n”); 36 3.4 ? 说明: ?若没有输出变量名表项,则只显示格式控制字符串中的字 符;若园括号内什么都没有,则$disply输出一个空行, $write什么都不输出 ?格式控制字符串=与输出变量一起显示的普通字符输出 格式说明符(以开头,见下表) 37 3.4 $display(“the drive strongth of tmp_wire is %v”,tmp_var); /显示:the drive strongth of tmp_wire is Stx 输出连续型数据的驱 动强度 %v或V reg16:1 var; var=h

16、4241; $display(“var=%s(S)”, var); /显示:var=BA(S) 以字符串方式输出%s或S 以ASCII字符形式输出%c或C 以二进制格式输出%b或B 以八进制格式输出%o或O 以十进制格式输出%d或D reg16:1 var; var=h41; wire tmp_wire $display(“var=%d(D)=%h(H)=%o(O)=%b(B)= %c(C)”, var,var,var,var,var); /显示:var=65(D)=0041(H)=000101(O) =0000000001000001(B) A(C) 以十六进制格式输出%h或H 实例输出格式格式说明符 输出格式说明符输出格式说明符 38 3.4 指数与浮点方 式中较短方式 的实数显示 %g或G 将实型数以浮 点方式显示 %f或F

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号