Сдвиговый регистр не работает в Verilog HDL - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать 64-битный регистр сдвига в Verilog HDL, но когда я тестирую код с помощью тестового стенда, все биты равны нулю. Я не знаю, где я иду не так. Вот мой код и результат теста:

module ShiftRegister (shift_out, clk, shift_in, rst); //module ports
 parameter n = 64; //Parameter n declared to store 64
 input rst;
 input [n-1:0] shift_in; //64-bit input shift_in
 input clk; //Input clock
 output [n-1:0] shift_out; //64-bit output shift_out
 reg [n-1:0] ff; //64-bit flipflop
  assign shift_out = ff [n-1:0]; //give the output of the 64th bit
  //The operation of verilog: 
   always @ (posedge clk or posedge rst) //Always at the rising edge of the clock
   begin
     if (rst) begin
     ff <= 0;
   end else begin
     ff <= ff << 1;  //Shift bits to the left by 1
     ff[0] <= shift_in; //Take the input bits and give it to the first flipflop
   end
   end
 endmodule


 module ShiftRegister_tb; //Module shiftRegister_tb
  parameter n = 64; //Parameter n declared to store 64
  reg [n-1:0] shift_in; //64-bit register input shift_in
  reg clk, rst; //register clock
  wire [n-1:0] shift_out; //64-bit wire output shift_out
  ShiftRegister DUT(shift_out, clk, shift_in,rst); //Calling the module
   initial
   begin
     clk = 0; //clock = 0 initally
     rst = 1;
     shift_in = 64'd34645767785344; //Random decimal number to test the code 
     #100;
     rst = 0;
     #50_000 $finish;
   end   
  always #50 clk =~clk; //invert the clock input after 50ps
 endmodule //ShiftRegister testbench 

Testbench Result

1 Ответ

1 голос
/ 24 апреля 2020

Здесь ff[0] <= shift_in;, вы пытаетесь присвоить 64-битную переменную 1-битной переменной. Поскольку вы используете четное число (64'd34645767785344) для shift_in в своем тестовом стенде, его LSB равен 0. Таким образом, вы продолжаете вставлять от 0 до ff.

Сделайте ваш shift_in вход 1-битным и измените ваш испытательный стенд таким образом, чтобы вы давали 1-бит за раз в качестве ввода.

...