Verilog的赋值

assign

1. assign 目标变量名 = 驱动表达式
这是一种数据流描述方式,当等号右侧的驱动表达式中的任一信号变量发生变化时,此表达式即被计算一遍,并将获得的数据赋值给目标变量。
属于并行赋值语句
assign和always中的 “=” 从综合角度的结果通常是相同的,assign不能使用块语句,故只允许引导一条含 “=” 的赋值语句。
assign赋值语句中,目标信号类型必须是网线型wire,端口信号恰好默认为wire类型。

2. assign #6 R1 = A & B
其中 #6 表示延时6个时间单位,时间单位在用 `timescale 10ns/100ps 表示。

阻塞式赋值 =

一旦执行完当前的赋值语句,赋值目标变量即刻获得来自等号右侧表达式的计算值。
如果在一个语句块中有多条阻塞式赋值语句,而当执行到其中某条赋值语句时,其他语句则被禁止执行。属于顺序执行语句

非阻塞式赋值 <=

必须在块语句执行结束时才整体完成赋值操作。

用testbench仿真一下就能发现明显区别

在电路结构上

always @(posedge clk)
    begin 
        b <= a;
        z <= b;
    end 
always @(posedge clk)
    begin 
        b = a;
        z = b;
    end 

以上 b 为寄存器变量,但是不一定添加了寄存器变量,就一定会添加寄存器。
always过程语句中,被赋值的变量必须是reg型。
对于阻塞赋值,b为寄存器变量,可没有输出为b的寄存器。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,481评论 0 5
  • 致谢:本笔记基于龚黎明的系列讲解视频。 1 Verilog简介(Verilog语法学习者可跳过该节) Verilo...
    shawn233阅读 95,830评论 1 55
  • 重点掌握 3 类对象和方法 对象就是一个物体 类的独特存在就是一个实例,对实例进行操作叫做方法。方法可以应用于类或...
    Coder大雄阅读 1,285评论 0 2
  • 除了充分利用计算机处理器的能力外,一个服务端同时对多个客户端提供服务则是另一个更具体的并发应用场景。衡量一个服务性...
    胡二囧阅读 1,390评论 0 12
  • 今天中午孩子一回来,说要看一下手机,地理老师在手机上发地理听写答对了几道题了。今天表现也不错哦,听写国庆节背诵的地...
    刘志红123阅读 246评论 0 0