Последовательная циклическая проверка избыточности с использованием verilog - PullRequest
0 голосов
/ 24 апреля 2018

Я кодировал программу для Serial CRC, но я не уверен, является ли окончательный вывод (форма сигнала) правильным или неправильным.

Цепь:

enter image description here

Программа:

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

И это мой последний вывод:

enter image description here

...