VerilogHDL期末复习
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件扩展名为v,大小写敏感;所有关键字必须小写;
标识符(区分大小写)
合法字符:26个大小写英文字母;数字0-9;下划线;$等;
命名规则:以英文字母或下划线开头;不能出现两条(或以上)连续的下划线;不能和关键字重复。
数据对象:
1、常数:整数、实数和字符串。整数可综合,实数和字符串不可综合。
(1)整数:<位宽>’<进制符号><数字>
位宽:数字对应的二进制数的位数;
进制符号包括:b或B(二进制),d或D(十进制),o或O(八进制),h或H(十六进制)。
数字中间可用下划线分隔,提高可读性。
十进制数的位宽和进制符号可省略。
若只标进制,未注明位宽,则位宽为(单个位的该进制数对应二进制位宽*该进制数的位数)。
若指明的位宽比数字需要的位宽小,则从左边(高位)截去多余位。
除十进制外,数字中可用x或X(未知),z或Z(高
阻)。位数由所在数字格式决定。如'hfx等价于'b1111xxxx
整数可在其前面加负号,负数的实际值为其对应的二进制补码。
(2)实数
(3)字符串
2、变量
(1)网络型(net type)
net型变量的输出值始终根据输入变化而变化,一般用来定义硬件电路中的各种连线。
wire型变量是net型变量中最常用的一种,其取值可以是0、1、x或z。
wire、tri:连线类型,功能完全相同;tri名称仅为增加程序可读性,表示综合后电路有三态功能。
wor、trior:具有线或特性的连线,功能相同。
wand、triand:具有线与特性的连线,功能相同。
tri1、tri0:分别为上拉电阻和下拉电阻。
supply1、supply0:分别为电源(逻辑1)和地(逻辑0)。
(2)寄存器型(register type)
reg:常用的寄存器型变量。(可综合)
integer:32位带符号整数型变量。(不同资料中可
综合性表述不同)
real:64位带符号实数型变量。(不可综合,表示实数寄存器)
time:无符号时间型变量。(不可综合,模拟时间的存储与处理)
wire与reg区别:reg需要被明确赋值,且被重新赋值前一直保持原值。wire在assign语句和元件例化语句中赋值;reg放在always和initial等语句中,通过过程中的赋值语句进行赋值。
操作符:
(1)、算术操作符:+(加),-(减),*(乘),/(除),%(求余),**(乘方)。
(2)、逻辑操作符:&&(逻辑与),||(逻辑或),!(逻辑非)。
操作数是位矢量时,无论有多少个位,逻辑操作符运算结果只有1位,为0或1。逻辑操作符先分别对两个操作数中位进行“按位或”操作,再对两操作数的“按位或”结果进行指定的逻辑操作
(3)、位运算操作符:~(按位取反),&(按位与),|(按位或),^(按位异或),^~或~^(按位同或)。
进行位运算时,两个操作数位宽不同时,自动按右端对齐,位数少的在高位用0补齐。
数据均只有一个位时,位运算与逻辑操作符运算结果相同,逻辑操作运算可用位运算替代。
(4)、缩减操作符:&(与),~&(与非),|(或),~|(或非),^(异或),^~或~^(同或)
缩减运算操作数只有一个,运算法则与逻辑运算相同,无论操作数有多少个位,运算结果只有一位,为0或1,相当于一个多输入端的逻辑门。
(5)、关系操作符:<(小于),<=(小于等于),>(大于),>=(大于等于)。
关系操作运算结果是1位逻辑值。关系是真,结果为1;关系是假,结果为0;如果某个操作数的值不确定,则结果不确定,为未知x或X。
(6)、等值操作符:= =(等于),!=(不等于),= = =(全等于),!= =(不全等于)。
等值操作运算结果是1位逻辑值。关系是真,结果为1;关系是假,结果为0。用等于(= =)操作符时,两个操作数的二进制位必须逐位相等,比较结果才为1,否则为0;当两操作数中某些位是未知或高阻时,对应位比较结果为不确定值,最终比较结果为0。用
全等于(= = =)操作符时,将未知和高阻都当成确定的值进行比较,对应位比较结果为确定值。
(7)、转移操作符:>>(右移)、<<(左移)。
操作数>>n //右移n位,左边用0填补;
操作数< (8)、条件操作符:? 操作数=条件表达式?表达式1:表达式2; 条件操作符有3个操作数,当条件表达式为真时,操作数=表达式1;当条件表达式为假时,操作数=表达式2。 (9)、并接操作符:{} 并接操作符可以将多个操作数按二进制位拼接起来,构成一个新的操作数,多个操作数间用逗号分隔。 模块语句: module 模块名(模块端口列表); 模块端口和模块功能描述 end module 模块端口列表须列出所有端口,用逗号分隔。 端口定义:(三种模式) input 输入端口名表(逗号分隔); output 输出端口名表(逗号分隔); inout 双向端口名表(逗号分隔); 总线型端口:如input [msb:lsb] 端口名; 基本逻辑门赋值语句 格式为:基本逻辑门关键字(门输出,门输入1,门输入2,……,门输入n); 基本逻辑门关键字是Verilog HDL预定义的逻辑门,包括and、or、not、xor、nand、nor等。 例:and (y,a,b,c,d);与assign y=a&b&c&d;等效。 连续赋值语句 连续赋值语句用assign引导,赋值符为“=”,“=”两边的变量都是wire型变量,输出跟随输入变化,反映了信号传送的连续性。 格式为:assign 目标变量=表达式; 过程赋值语句(包括阻塞式赋值和非阻塞式赋值) 过程赋值语句出现在initial和always语句中,赋值符为“=”或“<=” 阻塞式赋值:目标变量=表达式;按从上到下的顺序一