第三章 verilog hdl的基本语法(kllast)教学内容
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
reg
常用的寄存器型变量
integer 32位带符号的整数型变量
real 64位带符号的实数型变量,
time 64位无符号的时间变量
integer、real、time的典型应用是高层次的行为建模,不 能进行逻辑综合。
3.memory(存储器型)
memory型是存储器型,是通过建立reg型数组来描述的,可以 描述RAM存储器、ROM存储器和reg文件。
行为描述语句; endmodule
逻辑功能描 述部分,其 顺序是任意的
补充: Verilog语言的基本语法规则
为对数字电路进行描述(常称为建模),Verilog语言规定 了一套完整的语法结构。
1.间隔符: Verilog 的间隔符主要起分隔文本的作用,可以使 文本错落有致,便于阅读与修改。
间隔符包括空格符(\b)、TAB 键(\t)、换行符(\n)及 换页符。
变量宽度
例:wire L; //将上述电路的输出信号L声明为网络型变量 wire [7:0] data bus; //声明一个8-bit宽的网络型总线变量
2.reg(寄存器型)
寄存器型reg变量表示一个抽象的数据存储单元,对应的是具 有状态保持作用的电路元件,如触发器、寄存器。
寄存器型变量只能在initial或always内部被赋值。 定义但未被赋值前,值为x。
二、变量
1.Wire(线网类型):是指输出始终根据输入的变化而 更新其值的变量,它一般指的是硬件电路中的各种物理 连接. 是硬件电路元件之间实际连线的抽象。
例:网络型变量L的值由与门的驱动信号 a和b所决定,即L=a&b。a、b的值发 生变化,线网L的值会立即跟着变化。
a
&L
b
常用的网络类型由关键词wire定义 wire型变量的定义格式如下: wire [msb:lsb] 变量名1,变量名2,…,变量名n;
科学记数法 如: 23_5.1e2、5E-4
23510.0 ,0.0005
用“”括起来,按ASCII码序列存放。
reg message[1:8*12]; initial begin
message=“Hello World!”; end
可以通过转义符包含一些特殊字符。
一、常量
整型常量的带基数表示法
格式:<+/-><位宽>’<基数符号><数值>
reg型变量的定义格式: reg [msb:lsb] 变量名1,变量名2,…,变量名n;
例: reg clock;//定义一个1位寄存器变量 reg [3:0] counter; //定义一个4位寄存器变量
2.reg(寄存器型) 4种寄存器类型的变量
抽象描述, 不对应具 体硬件
寄存器类型 功能说明
memory型变量的定义格式: reg [msb:lsb] 存储器1[n1:m1],存储器2[n2:m2], ……;
例:
reg memory1[1023:0];
//存储器为1024个单元,每个单元为1位
reg [7:0] memory2[15:0]; //存储器为16个单元,每个单元为8位
reg [32:1] memory2[1:512]; //存储器为512个单元,每个单元为32位
3.memory(存储器型)
注意: Verilog中定义的存储器只有字寻址能力,即对存储器 赋值时,只能对存储器中的每个单元进行赋值,不能将存储 器作为一个整体在一条语句中赋值,也不能对存储器一个单 元中的某几位进行操作。
reg [3:0] reg_A; reg datamem [5:1]; reg [3:0] romA[4:1]; initial
第三章 Verilog HDL的基本语法 2011(kllast)
模块定义的一般语法结构如下:
module 模块名(端口名1, 端口名2, 端口名3,…);
端口类型说明 (input, outout, inout); 参数定义(可选);
说明部分
数据类型定义(wire, reg等);
实例化低层模块和基本门级元件; 连续赋值语句(assign); 过程块结构(initial和always)
2.注释符:注释只是为了改善程序的可读性,在编译时不起作用。 多行注释符(用于写多行注释): /* --- */; 单行注释符 :以//开始到行尾结束为注释文字。
3.标识符和关键词 标识符:给对象(如模块名、电路的输入与输出端口、变量等)
取名所用的字符串。以英文字母或下划线开始,包括:字母,
数字,_ , $ 。区分大小写。
例:3’b101、5’o37、8’he3,8’b1001_0011
说明:位宽:十进制数定义常量所对应的二进制的位宽; 可在数字之间使用下划线增加可读性,但不能做首字符; 基数类型:b/B,d/D,o/Q,h/H; x和z的表示:二进制:相应位状态 八进制:一个x/z代表3个二进制位 十/十六进制:一个x/z代表4个二进制位 省略位宽:机器的字长(至少32位) >位宽:高位被舍去 <位宽:填充,最高位为0/1,填0 最高位为x/z,填x/z
4种基本的逻辑值。 0
逻辑0、逻辑假
1 x或X z或Z
逻辑1、逻辑真 不确定的值(未知状态) 高阻态
3.2 Verilog HDL的数据类型
常量 变量
一、常量 整数型
常量
实数型
Biblioteka Baidu字符串
十进制数的形式的表示方法:表示有符号常量 例如:30、-2
带基数的形式的表示方法: 格式为:<+/-><位宽>’<基数符号><数 值> 十进制记数法 如: 0.1、2.0、5.67
一、常量
参数常量
Verilog允许用参数定义语句定义一个标识符来代表一个常量, 称为符号/参数常量。
定义格式:
parameter 参数名1=常量表达式1,参数名2=常量表达式2,……;
例: parameter BIT=1, BYTE=8, PI=3.14;
parameter DELAY=(BYTE+BIT)/2;
如:clk、counter8、_net、bus_A 。
关键词:是Verilog语言本身规定的特殊字符串,用来定义语言 的结构。例如,module、endmodule、input、output、wire、 reg、and等都是关键词。关键词都是小写,关键词不能作为 标识符使用 。
4.逻辑值集合
为了表示数字逻辑电路的逻辑状态,Verilog语言规定了