06 verilog基础语法-赋值语句和块语句

虚拟机:VMware-workstation-full-14.0.0.24051
环 境:ubuntu 18.04.1



一、学习内容

  这节主要是学习了赋值语句和块语句两部分。
在这里插入图片描述


二、赋值语句

  表中只有4种语句不可综合(fork_join ,initial ,’include ,’timescale )。
在这里插入图片描述

(1)两类

  • 连续赋值语句——assign语句,用于对wire型变量赋值,是描述组合逻辑最常用的方法之一
    【例1】 assign c = a&b; //a、b、c均为wire型变量
  • 过程赋值语句——用于对reg型变量赋值,有两种方式:
     非阻塞(non-blocking)赋值方式:赋值符号为<=,如 b <= a ;
     阻塞(blocking)赋值方式:赋值符号为=,如 b = a ;

(2)非阻塞赋值和阻塞赋值的区别

  • 非阻塞赋值
always @(posedge clk)begin
	b <= a;
	c <= b;
end

在这里插入图片描述
  非阻塞赋值在块结束时才完成赋值操作,c的值比b落后一个时钟周期。

  • 阻塞赋值
always @(posedge clk)begin
	b = a;
	c = b;
end

在这里插入图片描述
  阻塞赋值在每一条语句结束时即完成赋值操作。在一个语句块中,如果有多条阻塞赋值语句,在前面的赋值语句还没有完成之前,后面的语句就不能被执行,就像被阻塞一样,因此称为阻塞赋值方式,这里的b和c的值一样。


三、块语句

  用来将两条或多条语句组合在一起,使其在格式上更像一条语句,以增加程序的可读性。块语句有两种:begin_end语句——标识顺序执行的语句;fork_join语句——标识并行执行的语句

(1)顺序块

  块内的语句是顺序执行的;每条语句的延迟时间是相对于前一条语句的仿真时间而言的;直到最后一条语句执行完,程序流程控制才跳出该顺序块。

begin						begin
	语句1;						块内声明语句;
	语句2;		或			语句1;
	...							...
	语句n;						语句n;
end							end

:块内声明语句可以是参数声明、reg型变量声明、integer型变量声明、real型变量声明语句。

begin
	b = a;
	c = b;//实际上是a的值给了c
end

begin
	b = a;
	#10 c = b;//在两条赋值语句间延时10个时间单位
end

:这里的标识符“#”表示延时,在模块调用中“#”表示参数传递。
【例2】用顺序块和延时控制组合产生一个时序波形

parameter d =50;
reg [7:0] r;
begin
	#d r = 'h35;
	#d r = 'hE2;
	#d r = 'h00;
	#d r = 'hF7;
	#d r -> end_wave;//触发事件end——wave
end

:每条语句的延时时间d是相对前一条语句的仿真时间而言的,按顺序执行

(2)并行块

  块内的语句是同时执行的;块内每条语句的延迟时间是相对于程序流程控制进入到块内时的仿真时间而言的;延迟时间用于给赋值语句提供时序;当按时间排序在最后的语句执行完或一个disable语句执行时,程序流程控制跳出该并行块。

fork						fork
	语句1;						块内声明语句;
	语句2;		或			语句1;
	...							...
	语句n;						语句n;
join						join

:块内声明语句可以是参数声明、reg型变量声明、integer型变量声明、real型变量声明语句、time型变量声明语句和事件(event)说明语句。
【例 3】

reg [7:0] r;
fork
	#50 r = 'h35;
	#100 r = 'hE2;
	#150 r = 'h00;
	#200 r = 'hF7;
	#250 r -> end_wave;//触发事件end——wave
join

:在fork-join块内,各条语句可不按照顺序给出,因为块内语句是同时执行的,不分先后。


四、思考和小结

(1)思考

  • 逻辑运算符与按位逻辑运算符有什么不同?
  • 阻塞赋值与非阻塞赋值的区别
  • 哪些块语句是不可综合的?

(2)小结

在这里插入图片描述


作者:xlinxdu
版权:本文版权归作者所有
转载:未经作者允许,禁止转载,转载必须保留此段声明,必须在文章中给出原文连接。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xlinxdu

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值