Verilog HDL**阻塞赋值和非阻塞赋值

  1. 阻塞赋值
    符号“=”用于阻塞的赋值,凡是在组合逻辑(如在assign语句中)赋值的需要使用用阻塞赋值。阻塞赋值“=”在begin和end之间的语句是顺序执行,属于串行语句。always语句的敏感变量如果不含有时钟,即always(*)这样描述,那么也属于组合逻辑,需要使用阻塞赋值。
    一个组合逻辑的例子:
always @(*) begin
	case (led_ctrl_cnt)
		2'd0 : led = 4'b0001;
		2'd1 : led = 4'b0010;
		2'd2 : led = 4'b0100;
		2'd3 : led = 4'b1000;
		default : led = 4'b0000;
	endcase
end
  1. 非阻塞赋值
    “<=”用于阻塞赋值,凡是在时序逻辑(如在always语句中)赋值的需要使用非阻塞赋值,非阻塞赋值“<=”在begin和end之间的语句是并行执行,属于并行执行语句。这个是和C语言最大的一个差异点,要逐步理解并行执行的概念。时序逻辑指的是带有时钟的always块逻辑,只有always带有时钟,那么这个逻辑才能是时序逻辑。
    一个时序逻辑的例子:
 //用于产生0.5秒使能信号的计数器
always @(posedge sys_clk or negedge sys_rst_n) begin
	if (sys_rst_n == 1'b0)
		counter <= 1'b0;
		else if (counter_en)
		counter <= 1'b0;
	else
		counter <= counter + 1'b1;
end
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值