verilog学习笔记周总结2(2022/5/23-2022/5/28)

一.数据流建模

1.连续赋值语句

-连续赋值的目标类型主要是标量线网和向量线网

(1)标量线网,如:wire a,b;

(2)向量线网,如:wire【3:0】a,b;

显式连续赋值语句;

隐式连续赋值语句。

注意事项:

-赋值目标只能是线网类型(wire);

-在连续赋值中,只要赋值语句右边表达式没有任何一个变量有变化,表达式立即被计算,计算的结果立即赋给左边信号(若没有定义延迟量);

-多个连续赋值语句之间是并行语句,因此与位置顺序无关。

-多个连续赋值语句中的延时具有硬件电路中惯性延时的特征,任何小于其延时的信号变化脉冲都将被滤除掉,不会体现在输出端口上。

2.行为级建模

二.过程语句

1.initial过程语句

格式为

initial
       begin
             语句1;
             语句2;
              ...
             语句n;
end

例:用initial过程语句对变量A,B,C进行赋值

module initial_tb1;
reg A;B,C;
initial
begin
         A=0;B=1;C=0;
         #100  A=1;B=0;
         #100  A=0;C=1;
         #100  B=1;
         #100  B=0;C=0;
    end
endmodule

2.always语句块

相对于initial过程块,always语句块的触发状态是一直存在的,只要满足always后面的敏感事件列表,就执行过程块。

格式为:

always@(<敏感事件列表>)
      语句块;

例:用always语句描述同步置数,同步清零计算器

module counter1(out,data,load,reset,clk);
output[7:0] out;
input[7:0] data;
input load,clk,reset;
reg[7:0] out;


always@(posedge clk)                    //clk上升沿触发
begin
         if(lrest) out = 8'h00;         //同步清零,低电平有效
         else if(load) out = data;      //同步置数
         else out = out + 1;
end
endmodule

例:用always过程语句描述异步清零计数器

module counter2(clear,clk,out);
output[7:0] out;
intput clk,clear;
reg[7:0] out;


always @(posedge clk or negedge clear)        //clk上升沿和clear低电平清零有效
begin
      if(lclear)
      out=0;
      else  out = out + 1;
end 
endmodule

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值