我为串行CRC编写了一个程序,但我不确定最终输出(波形)是对还是错。
电路:
计划:
module Vcrc(D, Clk, Rst, Q);
input D;
input Clk;
input Rst;
output [3:0] Q;
reg [3:0]Q;
initial
begin
Q[0] = 0;
Q[1] = 0;
Q[2] = 0;
Q[3] = 0;
end
always@(posedge Clk)
begin
Q[0] <= D ^ Q[3];
Q[1] <= Q[0] ^ Q[3];
Q[2] <= Q[1];
Q[3] <= Q[2];
end
endmodule
使用Tb:
module Vcrc_tb_v;
// Inputs
reg D;
reg Clk;
reg Rst;
// Outputs
wire [3:0] Q;
// Instantiate the Unit Under Test (UUT)
Vcrc uut (
.D(D),
.Clk(Clk),
.Rst(Rst),
.Q(Q)
);
initial begin
// Initialize Inputs
D = 0;
Clk = 0;
Rst = 0;
// Wait 100 ns for global reset to finish
#100;
#5 D = 1;
#5 D = 0;
end
always #5 Clk = ~Clk;
endmodule
这是我的最终输出: