上海哪家公司可以做网站,阿里云 wordpress主机,赣州章贡区景点,上海外贸网站制作系列文章
数值#xff08;整数#xff0c;实数#xff0c;字符串#xff09;与数据类型#xff08;wire、reg、mem、parameter#xff09; 系列文章算术运算符关系运算符相等关系运算符逻辑运算符按位运算符归约运算符移位运算符条件运算符连接和复制运算符 算术运算符 …系列文章
数值整数实数字符串与数据类型wire、reg、mem、parameter 系列文章算术运算符关系运算符相等关系运算符逻辑运算符按位运算符归约运算符移位运算符条件运算符连接和复制运算符 算术运算符
Verilog HDL中常用的算术运算符主要有五种分别是加法()、减法(-)、乘法(*)、除法(/)和取模(%)。
算术操作结果的位宽。 算术表达式结果的长度由最长的操作数决定。 在赋值语句下算术操作结果的长度由操作左端的目标长度决定。 关系运算符
关系运算符也是双目运算符是对两个操作数的大小进行比较。关系运算符有大于()、小于()、大于等于()和小于等于()几种。
在进行关系比较时如果成立则结果为“1”否则返回的结果为“0”若不确定则返回结果为不定值(x)。例如1015的结果为假(0)2018的结果为真(1)而4’b11014’hx的结果为不定值(x)。 相等关系运算符
相等关系运算符是对两个操作数进行比较比较的结果有三种真(1)、假(0)和不定值(x)。Verilog HDL语言中有四种相等关系运算符等于( )、不等于( ! )、全等()、非全等(! )。
“”和“!”称为逻辑等式运算符其结果由两个操作数的值决定。
“ ”和“ ! ”运算符则不同它是对操作数进行按位比较两个操作数必须完全一致其结果才是1否则为0。但是若两个操作数对应位出现不定值x和高阻值z则可认为是相同的。“ ”和“!”运算符常用于case表达式的判别所以又称为“case等式运算符”。 逻辑运算符
逻辑运算符有三种分别是逻辑与运算符()、逻辑或运算符(||)、逻辑非运算符(!)。其中逻辑与和逻辑或是双目运算符逻辑非为单目运算符。
逻辑运算符的操作数只能是逻辑0或者逻辑1。
三种逻辑运算符的真值表如下所示 在逻辑运算符的操作过程中如果操作数是1位的那么1就代表逻辑真0就代表逻辑假如果操作数是由多位组成的则当操作数每一位都是0时才是逻辑0值只要有某一位为1这个操作数就是逻辑1值。例如寄存器变量a、b的初值分别为4’b1110和4’b0000则 !a0!b1ab0a||b1。
需注意的是若操作数中存在不定态x则逻辑运算的结果也是不定态例如a的初值为4’b1100b的初值为4’b01x0则 !a0!bxabxa||bx。 按位运算符
数字逻辑电路中信号与信号之间的运算称为位运算。Verilog HDL提供了以下五种类型的位运算符按位取反(**)、按位与()、按位或(**|**)、按位异或(**^**)、按位同或(**^)。
按位运算举例
module bit_tb;reg[2:0]a;reg[4:0]b;initialbegina5b101;//运算的时候a自动变为5b00101b5b11101;$display(%b,~a);//结果为3b010$display(%b,~b);//结果为5b00010$display(%b,ab); //结果为5b00101 $display(%b,a|b); //结果为5b11101$display(%b,a^b); //结果为5b11000 end
endmodule 归约运算符
归约运算符按位进行逻辑运算属于单目运算符。由于这一类运算符操作的结果是产生1位逻辑值因而被形象地称为缩位运算符。
Verilog HDL中缩位运算符包括(与)、| (或)、^ (异或)以及相应的非操作、|、^、^。归约运算符的操作数只有一个。
归约运算符的运算过程是设a是一个4位的寄存器型变量它的四位分别是a[0]、a[1]、a[2]和a[3]。当对a进行缩位运算时先对a[0]和a[1]进行缩位运算产生1位的结果再将这个结果与a[2]进行缩位运算再接着是a[3]最后产生1位的操作结果。
归约操作举例
module cut_tb;reg[5:0]a;initialbegina6b101011;$display(%b,a); //结果为1b0$display(%b,|a); //结果为1b1$display(%b,^a); //结果为1b0end
endmodule移位运算符
移位运算符有两种左移位运算符()、右移位运算符()。运算过程是将左边(右边)的操作数向左(右)移所移动的位数由右边的操作数来决定然后用0来填补移出的空位。 条件运算符
条件运算符是Verilog HDL里唯一的三目运算符它根据条件表达式的值来选择执行表达式其表达形式为条件表达式?表达式1:表达式2。其中条件表达式的计算结果有真(1)、假(0)和不定态(x)三种。当条件表达式的结果为真时执行表达式1当条件表达式的结果为假时执行表达式2。 连接和复制运算符
Verilog HDL语言中还有两个特殊的运算符连接运算符({})和复制运算符({{}})。
连接运算符是把位于大括号({})中的两个或两个以上信号或数值用逗号(,)分隔的小表达式按位连接在一起最后用大括号括起来表示一个整体信号形成一个大的表达式。其格式为{信号1的某几位信号2的某几位…信号n的某几位}。
重复运算符({{}}) 将一个表达式放入双重花括号中复制因子放在第一层括号中。它为复制一个常量或变量提供了一种简便方法。
连接和复制操作举例
module con_rep_tb;reg [2:0]a;reg [3:0]b;reg [7:0]c;reg [4:0]d;reg [5:0]e;initialbegina3b101;b5b1110;c{a,b};d{a[2:1],b[2:0]};e{2{a}};$display(%b,c); //结果为8b01011110 $display(%b,d); //结果为5b10110$display(%b,e); //结果为6b101101end
endmodule