+—可以
乘除不建议用×/ 因为在硬件电路里边有我们的可调用 ip核 实际使用手动来调用ip核来实现乘除法才是最优的。
求模运算%也是不建议在代码中大量的用 因为它会占用我们的逻辑资源
想得到一个0~9的随机数 如何实现:{$random}%10
,为什么等于0到9?其实质为求模运算取余数 random返回的是一个32位的随机数 经过模运算之后 就得到了模10是余数 也就是0到9
fpga里求模运算用的很少
关系运算符
(<, >, >=, <=, ==, !=)
错误代码
if(5<a<9) b<=1; else b<=0;
因为当a=2时,5<a为假(0) a<9的为真(1)
所以此时b=1; 同理可知无论a取何值 b都等于1;相当于逻辑或 ||
我们真正想表达5<a同时a<9
正确代码
if(5<a&&a<9) &&逻辑运算符 b<=1; else b<=0;
逻辑运算符(&& || !)运算的结果只有真(1)或假(0)
assign c = ! a; 只有当 a=0时结果才为真 当a=2 or3 or... 其结果都为0;
位运算符(& | ~)按照运行数据的位来运算的
按位取反就是把每一位都取反
条件运算符
assign a=(b>6) ? 1‘b1 : 1‘b0 ;
assign a=(b>6) ? 1‘b1 : (b<5) ? 1‘b1 : 1‘b0 ; 可以套多个
移位运算符(<<左移运算符 >>右移运算符)
每次右移一位,数据高位补0, 每左移一位 数据低位补0
位拼接运算符{} 可将不同位的数据拼接在一起
c <={ a[1] , b[1:0] , b[3] , b[1]};