Advertisement
Al3X044

reg_shr & reg_shr_tb

Oct 19th, 2017
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module reg_shr(
  2.    input [3:0] d,
  3.    input shr, clk, rst_b,
  4.    output reg [15:0] q);
  5. always @ (posedge clk, negedge rst_b)
  6. begin
  7.     if (!rst_b) q <= 16'd0;
  8.     else if (shr) q <= {d, q[15:4]};
  9. end
  10. endmodule
  11.  
  12. //************************************************************************************
  13.  
  14. module reg_shr_tb(
  15.    output reg [3:0] d,
  16.    output reg clk, rst_b, shr,
  17.    output [15:0] q
  18. );
  19.  
  20. reg_shr cut(.d(d), .clk(clk), .rst_b(rst_b), .shr(shr), .q(q) );
  21.  
  22. initial begin
  23.    clk = 1'd0;
  24.    repeat (9) #25 clk = ~clk;
  25. end
  26.  
  27. initial begin
  28.     rst_b = 1'd0;
  29.     #5 rst_b = 1'd1;
  30.     #145 rst_b = 1'd0;
  31.     #5 rst_b = 1'd1;
  32. end
  33.  
  34. initial begin
  35.     shr = 1'd1;
  36.     #100 shr = 1'd0;
  37.     #50 shr = 1'd1;
  38. end
  39.  
  40. initial begin
  41.     d = 4'h0;
  42.     #50 d = 4'ha;
  43.     #50 d = 4'hf;
  44.     #50 d = 4'h5;
  45.     #50 d = 4'h8;
  46. end
  47. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement