第一范文网 - 专业文章范例文档资料分享平台

夏宇闻教材3

来源:用户分享 时间:2025/5/29 8:28:58 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

其运算规则见下表: ^ 0 1 x 0 0 1 x 1 1 0 x x x x x

5) \按位同或\运算符^~

按位同或运算就是将两个操作数的相应位先进行异或运算再进行非运算. 其运算规则见下表: ^~ 0 1 x 0 1 0 x 1 0 1 x x x x x

6) 不同长度的数据进行位运算

两个长度不同的数据进行位运算时,系统会自动的将两者按右端对齐.位数少的操作数会在相应的高位用0填满,以使两个操作数按位进行操作.

3.3.3 逻辑运算符

在Verilog HDL语言中存在三种逻辑运算符: 1) && 逻辑与 2) || 逻辑或 3) ! 逻辑非

\和\是二目运算符,它要求有两个操作数,如(a>b)&&(b>c),(ab)。下表为逻辑运算的真值表。它表示当a和b的值为不同的组合时,各种逻辑运算所得到的值。

a b !a !b a&&b a||b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假

逻辑运算符中\和\的优先级别低于关系运算符,\高于算术运算符。见下例: (a>b)&&(x>y) 可写成: a>b && x>y (a==b)||(x==y) 可写成:a==b || x==y (!a)||(a>b) 可写成: !a || a>b

为了提高程序的可读性,明确表达各运算符间的优先关系,建议使用括号.

3.3.4.关系运算符

关系运算符共有以下四种:

a < b a小于b a > b a大于b

a <= b a小于或等于b a >= b a大于或等于b

在进行关系运算时,如果声明的关系是假的(flase),则返回值是0,如果声明的关系是真的(true),则返回值是1,如果某个操作数的值不定,则关系是模糊的,返回值是不定值。

所有的关系运算符有着相同的优先级别。关系运算符的优先级别低于算术运算符的优先级别。见下例:

a < size-1 //这种表达方式等同于下面 a < (size-1) //这种表达方式。

size - ( 1 < a ) //这种表达方式不等同于下面 size - 1 < a //这种表达方式。

从上面的例子可以看出这两种不同运算符的优先级别。当表达式size-(1

3.3.5.等式运算符

在Verilog HDL语言中存在四种等式运算符:

1) == (等于) 2) != (不等于) 3) === (等于) 4) !== (不等于)

这四个运算符都是二目运算符,它要求有两个操作数。\和\又称为逻辑等式运算符。其结果由两个操作数的值决定。由于操作数中某些位可能是不定值x和高阻值z,结果可能为不定值x。而\和\运算符则不同,它在对操作数进行比较时对某些位的不定值x和高阻值z也进行比较,两个操作数必需完全一致,其结果才是1,否则为0。\和\运算符常用于case表达式的判别,所以又称为\等式运算符\。这四个等式运算符的优先级别是相同的。下面画出==与===的真值表,帮助理解两者间的区别。

下面举一个例子说明“==”和“===”的区别。 例:

if(A==1’bx) $display(“AisX”); (当A等于X时,这个语句不执行) if(A===1’bx) $display(“AisX”); (当A等于X时,这个语句执行)

3.3.6.移位运算符

在Verilog HDL中有两种移位运算符:

<< (左移位运算符) 和 >>(右移位运算符)。 其使用方法如下: a >> n 或 a << n

a代表要进行移位的操作数,n代表要移几位。这两种移位运算都用0来填补移出的空位。下面举例说明:

module shift;

reg [3:0] start, result; initial begin

start = 1; //start在初始时刻设为值0001 result = (start<<2);

//移位后,start的值0100,然后赋给result。 end

endmodule

从上面的例子可以看出,start在移过两位以后,用0来填补空出的位。

进行移位运算时应注意移位前后变量的位数,下面将给出一例。

例:4’b1001<<1 = 5’b10010; 4’b1001<<2 = 6’b100100;

1<<6 = 32’b1000000; 4’b1001>>1 = 4’b0100; 4’b1001>>4 = 4’b0000;

3.3.7.位拼接运算符(Concatation)

在Verilog HDL语言有一个特殊的运算符:位拼接运算符{}。用这个运算符可以把两个或多个信号的某些位拼接起来进行运算操作。其使用方法如下:

{信号1的某几位,信号2的某几位,..,..,信号n的某几位}

即把某些信号的某些位详细地列出来,中间用逗号分开,最后用大括号括起来表示一个整体信号。见下例:

{a,b[3:0],w,3’b101} 也可以写成为

{a,b[3],b[2],b[1],b[0],w,1’b1,1’b0,1’b1}

在位拼接表达式中不允许存在没有指明位数的信号。这是因为在计算拼接信号的位宽的大小时必需知道其中每个信号的位宽。

位拼接还可以用重复法来简化表达式。见下例: {4{w}} //这等同于{w,w,w,w} 位拼接还可以用嵌套的方式来表达。见下例:

{b,{3{a,b}}} //这等同于{b,a,b,a,b,a,b}

用于表示重复的表达式如上例中的4和3,必须是常数表达式。

3.3.8.缩减运算符(reduction operator) 缩减运算符是单目运算符,也有与或非运算。其与或非运算规则类似于位运算符的与或非运算规则,但其运算过程不同。位运算是对操作数的相应位进行与或非运算,操作数是几位数则运算结果也是几位数。而缩减运算则不同,缩减运算是对单个操作数进行或与非递推运算,最后的运算结果是一位的二进制数。缩减运算的具体运算过程是这样的:第一步先将操作数的第一位与第二位进行或与非运算,第二步将运算结果与第三位进行或与非运算,依次类推,直至最后一位。

例如:reg [3:0] B; reg C; C = &B; 相当于:

C =( (B[0]&B[1]) & B[2] ) & B[3];

由于缩减运算的与、或、非运算规则类似于位运算符与、或、非运算规则,这里不再详细讲述,请参照位运算符的运算规则介绍。

3.3.9.优先级别

下面对各种运算符的优先级别关系作一总结。见下表:

3.3.10.关键词 在Verilog HDL中,所有的关键词是事先定义好的确认符,用来组织语言结构。关键词是用小写字母定义的,因此在编写原程序时要注意关键词的书写,以避免出错。下面是Verilog HDL中使用的关键词(请参阅附录:Verilog语言参考手册):

always, and, assign,begin,buf,bufif0,bufif1,case,casex,casez,cmos,deassign,default,defparam,disable,edge,else,end,endcase,endmodule,endfunction,endprimitive, endspecify, endtable, endtask, event, for, force, forever, fork, function,highz0, highz1, if,initial, inout, input,integer,join,large,macromodule,medium,module,nand,negedge,nmos,nor,not,notif0,notifl, or, output, parameter, pmos, posedge, primitive, pull0, pull1, pullup, pulldown, rcmos, reg, releses, repeat, mmos, rpmos, rtran, rtranif0,rtranif1,scalared,small,specify,specparam,strength,strong0, strong1, supply0, supply1, table, task, time, tran, tranif0, tranif1, tri, tri0, tri1, triand, trior, trireg,vectored,wait,wand,weak0,weak1,while, wire,wor, xnor, xor

注意在编写Verilog HDL程序时,变量的定义不要与这些关键词冲突.

3.4 赋值语句和块语句

搜索更多关于: 夏宇闻教材3 的文档
夏宇闻教材3.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8l9au8aftu0088t3wptg_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top