当前位置:
文档之家› 231Verilog语言的基本语法规则232变量的数据类型233
231Verilog语言的基本语法规则232变量的数据类型233
十进制记数法 如: 0.1、2.0、5.67 实数型常量
科学记数法 如: 23_5.1e2、5E-4
23510.0、 0.0005
Verilog允许用参数定义语句定义一个标识符来代表一个常量,称
为符号常量。定义的格式为:
parameter 参数名1=常量表达式1,参数名2=常量表达式
2,……;如 parameter BIT=1, BYTE=8, PI=3.14;
4、可以使产品上市快,成本低 VHDL与ASIC器件 结合,大大提高数字系统集成化速度,降低产品 设计前期风险。
14
2.4.1 VHDL模块
a
b
逻辑模块
f(a,b,c)
c
逻辑模块:VHDL语言中的基本单元和最重要的抽 象,它可以代表整个系统.1块电路板.1个芯片.1个单 元或1个门电路
1个逻辑模块由1个实体(Entity)描述和1个结构 ( Architecture )描述组成
作用:用于逻辑图的描述和验证。
15
VHDL模块的定义
定义模块: 实体(Entity)描述:给模块命名,确定输入输出信号线 结构( Architecture )描述:输入和输出的关系。 使用:编译器接收网络描述文件并产生一个包含所有网
络信息的输出文件
VHDL
清单
Entity… Architecture…
逻辑运算符
与AND; 或 OR; 与非 NAND; 或非 NOR; 异或XOR; 异或 非XNOR; 非 NOT
关系运算符
相等=; 不等/=; 小于 <; 大于 >; 小于等于<=; 大于等于>=;
其他符号: 正+、负-、连接 &、结束;、变量赋值:=、信号
赋值<=、注释--、文字说明#、数据对象与类型隔离:
6.字符串:字符串是双撇号内的字符序列
6
2.3.2 变量的数据类型
1线网类型:是指输出始终根据输入的变化而更新其值的 变量,它一般指的是硬件电路中的各种物理连接.
例:网络型变量L的值由与门的驱动信号 a和b所决定,即L=a&b。a、b的值发 生变化,线网L的值会立即跟着变化。
a
&L
b
常用的网络类型由关键词wire定义 wire型变量的定义格式如下: wire [n-1:0] 变量名1,变量名2,…,变量名n;
13
VHDL的优点
1.在希望的层次上可以对设计进行精确而简练的描 述; 在不同的层次上都易于形成用于模拟和验 证的设计描述;
2.语言标准、规范,易于共享和复用,便于修改; 可以作硬件和软件的联合设计,消除了硬件和软 件开发时间上的间隔;
3、移植性强 VHDL是标准语言,设计描述可以被 不同的工具支持;
3
2.3.1 Verilog语言的基本语法规则
为对数字电路进行描述(常称为建模),Verilog语言规定 了一套完整的语法结构。
1.间隔符: Verilog 的间隔符主要起分隔文本的作用,可以使 文本错落有致,便于阅读与修改。
间隔符包括空格符(\b)、TAB 键(\t)、换行符(\n)及 换页符。
关键词:是Verilog语言本身规定的特殊字符串,用来定义 语言的结构。例如,module、endmodule、input、 output、wire、reg、and等都是关键词。关键词都是小 写,关键词不能作为标识符使用 。
4.逻辑值集合
为了表示数字逻辑电路的逻辑状态,Verilog语言规定了
4种基本的逻辑值。 0
End gate_1; -- architecture logic of gate_1 Begin
f <= a or b;
End gate_1
19
2.4.2 并发运算
运算不考虑时间限制,无论何时输出随输入 而变 not优先级最高 or and具有同等优先级 同级时按从左到右顺序运算 括号可增加优先级别
逻辑0、逻辑假
1 x或X z或Z
逻辑1、逻辑真
不确定的值(未知状态)
高阻态
5
5.常量及其表示
整数型
十进制数的形式的表示方法:表示有符号常量 例如:30、-2
带基数的形式的表示方法: 表示常量
常量
格式为:<+/-><位宽>’<基数符号><数 例值如>:3’b101、5’o37、8’he3,8’b1001_0011
电路结构描述
or U4(out, a1, b1);
endmodule
11
2.3.4 逻辑功能的仿真与测试 逻辑电路的设计块完成后,就要测试这个设计块描述的逻辑功能 是否正确。为此必须在输入端口加入测试信号,而从其输出端口 检测其结果是否正确,这一过程常称为搭建测试平台。根据仿真 软件的不同,搭建测试平台的方法也不同。
图2.3.3 例2.3.1的仿真输出波形
12
2.4 VHDL的基本概念
1962年Iverson提出HDL(hardware description language, VHSIC:very high speed integrated circuit,上世纪80年代中期美国防部支持开发, 有:IEEEStd1076-1987; IEEEStd1076-1993Fra bibliotek17标识符
有效字符:英文字母(‘a’~ ‘ z’, ‘ A’~ ‘ Z’).数字(‘0’~ ‘9’)和下划线‘-’;
每个标识符是一个字符串,必须以英文字母打头, 可具有任意长度;
下划线(‘-’)的前后必须有英文字母或数字,一行中 不允许使用多于两个下划线;
标识符不区分大小写. Temporary_read_signal AOI4 b3 _basic_logic_function restart_2_
2.3 硬件描述语言Verilog HDL基础
2.3.1 Verilog语言的基本语法规则 2.3.2 变量的数据类型 2.3.3 Verilog程序的基本结构 2.3.4 逻辑功能的仿真与测试
1
2.3 硬件描述语言
硬件描述语言HDL(Hardware Description Languag ) 类似于高级程序设计语言.它是一种以文本形式来描 述数字系统硬件的结构和行为的语言,用它可以表示 逻辑电路图、逻辑表达式,复杂数字逻辑系统所的逻 辑功能。HDL是高层次自动化设计的起点和基础.
行为描述语句;
endmodule
逻辑功能描 述部分,其 顺序是任意的
10
例 用结构描述方式建立门电路Verloger模型
模块名
a
selnot & a1
sel
1
U2
out
U1
//Gate-level description of simple circuit
& b1 U4
b
module mux2to1(a, b, sel, out);
18
例
a
Entity simple_gate is
port(a,b,c:in bit;
b
逻辑模块
f(a,b,c)
f:out bit);
c
End simple_gate;
a
b
Gate_1
ab f
Entity gate_1 is port(a,b:in bit;
f
00 0
f:out bit);
011 101 111
8
2.3.3 Verilog程序的基本结构
Verilog使用大约100个预定义的关键词定义该语言的结构 1、 VerilogHDL程序由模块构成。每个模块的内容都是嵌在关键词 module和endmodule两个语句之间。每个模块实现特定的功能。
2、每个模块先要进行端口的定义,并说明输入(input)和输出 (output),然后对模块功能进行描述。 3、除了endmodule语句外,每个语句后必须有分号。 4、可以用/* --- */和//…..对VerilogHDL程序的任何部分做注释。
9
模块定义的一般语法结构如下:
module 模块名(端口名1, 端口名2, 端口名3,…);
端口类型说明(input, outout, inout); 参数定义(可选);
说明部分
数据类型定义(wire, reg等);
实例化低层模块和基本门级元件; 连续赋值语句(assign); 过程块结构(initial和always)
变量宽度
例:wire L; //将上述电路的输出信号L声明为网络型变量 wire [7:0] data bus; //声明一个8-bit宽的网络型总线变量
7
2、寄存器型 寄存器型变量对应的是具有状态保持作用的电等路元件,如触 发器寄存器。寄存器型变量只能在initial或always内部被赋值。
4种寄存器类型的变量
VHDL
编译器程序
输出文件
信号模拟
16
表达式与运算符
算术运算符及关键字
加+; 减 -; 乘 * ; 除 / ; 取模 MOD; 取余REM; 逻辑左 移 SLL; 逻辑右移 SRL ; 乘方**; 取绝对值ABS;端 口PORT; begin; end; in; out; entity; architecture; …
2.注释符:注释只是为了改善程序的可读性,在编译时不起作用。 多行注释符(用于写多行注释): /* --- */; 单行注释符 :以//开始到行尾结束为注释文字。
4
3.标识符和关键词
标识符:给对象(如模块名、电路的输入与输出端口、变
量等)取名所用的字符串。以英文字母或下划线开始
如,clk、counter8、_net、bus_A 。
VHDL的能力范围: system ,sub-system, chip level,register-trans-fer,gate level,circuit