verilog always语法_Verilog几个这样的写法

数字电路设计主要就是,选择器、全加器、比较器,几个常用逻辑门,再加个D触发器,电路基本都能实现了。

组合逻辑+时序逻辑

组合逻辑用assign或always@(*)实现,

时序逻辑用always@(posedge clk or negedge rst_n)

有人说掌握Verilog 20%的语法就可以描述 90%以上的电路,说的对。

casez

always 

这样的case有优先级选择,虽然可综合,但是不推荐使用,有优先用if-else,没有直接用case。

synopsys的EDA工具有关于full case与parallel case可以查看下面博客链接。

https://blog.csdn.net/li_hu/article/details/10336511

generate+for

合理使用generate+for循环可以提高编码效率,同样的赋值语句需要赋值多次。

generate
     

同一个模块需要实例化多次

generate 
     

当然这样写debug会有一些困扰,Verdi会显示每一个generate块,选中对应的块,加进去的波形就会是对应的bit信号。

generate if/case

做一些通用IP的方法,比如要做一个选择器通用IP,支持二选一,三选一,四选一。

generate 

generate case可以写更多的分支

generate
     

调用的时候只需要

mux 

参数化定义

模块化设计,功能模块的划分尽可能细, 差别不大的代码通过参数化达到重复使用的目的。

always 

实例化

mux 

移位操作

对于移位操作直接用位拼接,

assign 

写成

assign 

如果是有符号数,高位要补符号位。也就是算术移位。

always 

shift也可能是有符号数,正数左移,负数右移。右移方法同理。

$clog2系统函数

Verilog-2005引入了$clog2系统函数,为了方便计算数据位宽,避免位浪费。这个其实是来凑数的。

parameter   

最后

欢迎指点,有哪些Verilog的奇技淫巧,留言告诉我吧。

fd7274e8568f91a6c6ad1db518ca4716.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值