Verilog数字设计基础(3)

本文介绍了Verilog数字设计的基础知识,重点讲解了条件语句(if_else, case, casez, casex)及其在设计中避免产生锁存器的注意事项,循环语句(forever, repeat, while, for)的应用,以及顺序块和并行块的执行特点。还涉及了生成块的使用,展示了如何动态生成Verilog代码,并给出了四选一多路选择器和四位计数器的例子。" 24967917,1392975,Java中不同类型数据的四则运算与类型转换,"['Java编程', '类型系统', '运算符', '数据类型转换']
摘要由CSDN通过智能技术生成


《Verilog数字系统设计教程》第4版——夏宇闻


一、条件语句

- if_else语句
条件语句必须在过程块语句中使用,所谓过程块语句是指由initial和always语句引导的执行语句集合,除这两种块语句引导的begin end块中可以编写条件语句外,模块中的其他地方都不能编写。

- case语句
case语句是一种多分支选择语句,Verilog HDL针对电路的特性提供了case语句的其他两种形式,即casez和casex,这可用来处理比较过程中的不必多虑的情况。其中casez用来处理不考虑高阻值z的比较过程,casex语句则将高阻值z和不定值都视为不必关心的情况。

使用条件语句不当在设计中会生成原本没想到有的锁存器,为避免这一现象发生,如果用到if语句,最好写上else项,如果用case语句,最好写上default项,遵循上面两条原则,就可以避免发生这种错误,使设计者更加明确设计目标,同时增加了verilog程序的可读性。

使用case语句实现四选一多路选择器:

module mux4_to_1(out,i0,i1,i2,i3,s1,s0);
output out;
input i0,i1,i2,i3;
input s1,s0;
reg out;
always @(s1 or s0 or i0 or i1 or i2 or i3)
begin
	case({
   s1,s0})
		2'b00:out = i0;
		2'b01:out = i1;
		2'b10:out = i2;
		2'b11:out = i3;
	default:out = 1'bx;
end
endmodule

二、循环语句

- forever语句
连续的执行语句,forever循环语句常用于产生周期性的波形,用来作为仿真测试信号,它与always语句不同之处在于不能独立写在程序块中,而必须写在initial块中。

- repeat语句
连续执行一条语句n次,使用repeat循环语句及加法和移位操作来实现一个乘法器代码如下:

parameter size = 8
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值