语法回顾-《Verilog编程艺术》之表达式

目录

表达式

操作符

操作符优先级

整数

算数操作符

比较操作符

逻辑操作符

位运算操作符

归约操作符

移位操作符

条件操作符

连接操作符

操作数

向量的抽取

数组的访问

字符串

表达式位长

符号表达式

赋值和截断

与x/z比较


参考《Verilog 编程艺术》魏家明著

表达式

表达式是用操作符(operator)把操作数(operand)组合起来,并按照操作符的语义计算出结果。

操作符

操作符优先级

单目操作符优先级最高;

表格中行间的操作符优先级按降序排列

表格中行内的操作符具有相同的优先级

可以用括号调整操作符的顺序。

整数

整数可以在表达式中使用:

An unsized, unbased integer (12)

An unsized, based integer ('d12, 'sd12)

A sized, based integer  (16'd12, 16'sd12)

在表达式中,对于用不同方式表达的整数有不同的解释

1。An unsized, unbased integer 被当作符号数

2。An unsized, based integer 被当作符号数

3。A sized,signed,based integer 被当作符号数

4。An unsized,unsigned,based integer 被当作无符号数

5。A sized,unsigned,based,integer 被当作无符号数

例如:有两种方式执行“minus 12 divided by 3”注意-12和-'d12具有同样的2的补码位。但是-'d12在表达式中失去了作为符号负数的特性。

integer intA;

intA = -12 / 3;          // result is -4

intA = -'d12 / 3;        // result is 1431655761

intA = -'sd12 / 3;       // result is -4

intA = -4'sd12 / 3;      // result is 1;-4'sd12 is the negative of the 4-bit quantity 1100,

 // which is -4, -(-4) = 4。

 // 属于上边第3种情况,属于符号数,1100第一位被当作负号解释,故其值表示(-4)

算数操作符

+,-,*,/,%,**

1.“/”是除法运算,在做整数除时向零方向舍去小数部分

2.“**”是指数运算

3.“%”取模运算,只可用于整数运算,而其他操作符既可用于整数也可用于实数

例如:在生成时钟的时候,必须选择合适的timescale和precision。当时用 PERIOD/2 计算延时时,必须保证小数不会被舍弃,实际上应该使用 PERIOD/2.0

prameter PERIOD = 15;

initial begin clk <= 0; forever #(PERIOD/2) clk = ~clk; end     // Not correct

initial begin clk <= 0; forever #(PERIOD/2.0) clk = ~clk; end   // Correct

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值