在计算比如y1=a;y2=y1这样的计算的时候如果使用组合逻辑的阻塞赋值就可以实现,但是在有时钟的时序逻辑里面要完成这个的话就需要一些技巧。因为在时序逻辑里面都是使用非阻塞赋值。
module clk_model(
input wire clk,
input wire rst,
input wire [7:0] a1,
output reg [7:0] y1,
output reg [7:0] y2
);
reg [2:0]cnt;
always@(posedge clk) begin
if(!rst) begin
cnt <= 0;
y1 <= 0;
y2 <= 0;
end
else begin
if(cnt == 2'b11)
cnt <= 2'b00;
else
cnt <= cnt + 1'b1;
case(cnt)
2'b00: begin
y1 <= y1 + 1;
y2 <= y2;
end
2'b01: begin
y1 <= y1;
y2 <= y1 + 1;
end
default: begin
y1 <= y1;
y2 <= y2;
end
endcase
end
end
endmodule