• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

第七讲 verilog运算符

开发技术 开发技术 6小时前 2次浏览

+—可以 

乘除不建议用×/ 因为在硬件电路里边有我们的可调用 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]};

 


程序员灯塔
转载请注明原文链接:第七讲 verilog运算符
喜欢 (0)