总结Verilog中always语句的使用

行为级建模,结构化过程语句;

always语句包括的所有行为语句构成了一个always语句块。该always语句块从仿真0时刻开始执行其中的行为语句;最后一条执行完成后,再开始执行其中的第一条语句,如此往复循环,直到整个仿真结束。因此,always语句块常用于对数字电路中一组反复执行的活动进行建模。比如大家熟知的时间信号发生,每半个时钟周期时钟信号翻转一次。

module clock(output reg clock)
//在零时刻把clock变量初始化
initial
    clock = 1'b0;
//每半个周期把clock信号翻转一次
always
     #10 clock=~clock;
initial 
     #1000 $finish;//1000个时间单位后,停止仿真

endmodule

warning:在这个例子中,clock是在initial语句中被初始化的,如果放在always语句中,always每次执行都将初始化clock!(而不是只执行一次)所以,从C语言的角度看,always像一个无限循环语句

看下面一个例子;

always @(posedge clock)
begin
  ......
end

这就是条件循环语句了。

下面是今天做个一个小栗子,4-2线编码器:

module enc4to2 (
 
  input [3:0] a,
   output [1:0] y
);
   assign y[1] = ~a[1] & ~a[0];
   assign y[0] = ~a[2] & ~a[0];

endmodule


给出激励文件:

`timescale 100ns/1ns
module testbench  ; 
 
  wire  [1:0]  y   ; 
  reg  [3:0]  a   ; 
  enc4to2  
   DUT  ( 
       .y (y ) ,
      .a (a ) ); 

     initial
     begin
        a[0]=0;
        a[1]=0;
        a[2]=0;
        a[3]=1;   
      end
        always #2  
          begin
        a[0]=~a[0];
      end
        always #4 
          begin
        a[1]=~a[1];
        end
          always #6  
          begin
        a[2]=~a[2];
        end
          always #8 
          begin
        a[3]=~a[3]; 
      end

endmodule

激励文件是用modesim自动生成的,自己写个initial之类就好



Verilog的always语句是一种用于描述行为模型的关键语句。它指示在模块的任何一个输入信号或电平发生变化时,该语句下方的模块将被执行。always语句有两种触发方式,一种是电平触发,例如always @(a or b or c),其a、b、c为变量,当其一个发生变化时,下方的语句将被执行。 在always语句,可以使用顺序语句块来描述模块的行为。顺序语句的每条语句按照顺序执行,时延值与前面的语句执行的模拟时间相关。一旦顺序语句块执行结束,下一条语句将继续执行。顺序语句块的语法如下:begin [ :block_id {declarations} ] procedural_statement(s) ...<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [在Verilog里边 always@(*)语句是什么意思](https://blog.csdn.net/weixin_45878159/article/details/117672961)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Verilog HDL行为建模--- 顺序语句块](https://download.csdn.net/download/weixin_38732252/13608218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值