2018年7月19日
一、关键词:initial和always
1.initial:为初始化语句,仅需要执行一次。
作用1.测试模块对激励信号描述。
2.给寄存器赋初值,面向仿真的过程语句,逻辑综合工具不支持。
2.always:无限循环语句,知道仿真结束,通常紧跟着循环的控制条件。
-----仿真时,initial和always语句同时并行执行
always @(事件控制表达式) //敏感事件:电平敏感和边沿触发
begin
块内部局部变量的定义;
过程赋值语句;//等式左边必须为reg
end
```begin和end将多条过程语句包围起来,组成顺序语句块,块内语句按顺序依次执行
电平敏感:
always @(D,S)
边沿敏感:
always @(posedge CP or negedge CR)
```敏感事件列表中不能同时包含电平敏感事件和边沿敏感事件
always内部赋值语句有两种:
阻塞型赋值语句:"=" 顺序执行
非阻塞赋值语句:"<=" 并行执行
//对D锁存器进行描述:
module D_latch(
input D,E,
output reg Q,
output QN
);
assign QN = ~Q;
always @(E or D)
if(E) Q <= D;
endmodule
//下降沿触发的JK触发器
module JK_FF(
input J,K,CP,
output reg Q,
output QN
);
assign QN = ~Q;
always @(negedge CP)
case({J,K})
2'b00: Q <= Q;
2'b01: Q <= 0;
2'b10: Q <= 1;
2'b11: Q <= ~Q;
endcase
endmodule