第七讲 verilog运算符

+—可以 

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

 

posted @   涛大林  阅读(608)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示