来源:网络素材
1.always@后面内容是敏感变量,always@(*)里面的敏感变量为*,意思是说敏感变量由综合器根据always里面的输入变量自动添加,也就是所有变量都是敏感列表,不用自己考虑。2.如果没有@,那就是不会满足特定条件才执行,而是执行完一次后立马执行下一次,一直重复执行,比如testbench里面产生50Mhz的时钟就(假设时间尺度是1ns)可以写成
always #25 CLK_50Mhz = ~CLK_50Mhz;
一般always@(*)是指里面的语句是组合逻辑的。*代替了敏感变量。
而一般时序逻辑要写成
always@(posedge clk or negedge rst)
时钟信号clk上升沿或者复位信号rst下降沿的时候执行always块内的代码。
always@ *
always@ (posedge clk1,negedge clk2)
always@ (a or b)
`timescale 100ns/100ns //定义仿真基本周期为100ns
always #1 clk=~clk //#1代表一个仿真周期即100ns
fork
//语句并行执行
join
begin
//语句顺序执行
end
wire a;
reg b;
assign a = 1'b0;
always@(*)
b = 1'b0;
FPGA_IC设计课程推广
对数字IC/FPGA设计更加感兴趣的同学,可以关注由15年前端经验的工程师SKY带来的数字IC设计入门课程。已有数家IC公司用该课程做新人培训。
详情请点击下面的链接了解:数字IC/FPGA设计_从入门到精通
或点击阅读原文链接直通设计课程。
更多精彩推荐,请关注我们