Advertisement
Sayaf_ahmed

4-bit Register in VeriLog

Apr 19th, 2021
526
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module FourBitReg(a0, a1, a2, a3, clk, nreset, q0, q1, q2, q3);
  2.   input a0, a1, a2,a3;
  3.   input nreset, clk;
  4.   output q0, q1, q2, q3;
  5.  
  6.  
  7.   Dflipflop Q0(a0, clk, nreset, q0);
  8.   Dflipflop Q1(a1, clk, nreset, q1);
  9.   Dflipflop Q2(a2, clk, nreset, q2);
  10.   Dflipflop Q3(a3, clk, nreset, q3);
  11.  
  12. endmodule
  13.  
  14.  
  15.  
  16. module FourBitReg_tb;
  17.   reg a0, a1, a2, a3;
  18.   reg clk, nreset;
  19.   wire q0, q1, q2, q3;
  20.  
  21.   reg[3:0] counter;
  22.   reg[3:0] in;
  23.   FourBitReg Register(a0, a1, a2, a3,clk, nreset, q0, q1, q2, q3);
  24.  
  25.   initial begin
  26.   a0 = 1'b0; a1 = 1'b0; a2=1'b0; a3 = 1'b0;
  27.   clk = 1'b0; nreset = 1'b1;
  28.  
  29.   $monitor("a0a1a2a3 = %b%b%b%b, clk=%b, nreset=%b, q0q1q2q3=%b%b%b%b",
  30.             a0, a1, a2, a3, clk, nreset, q0, q1, q2, q3);
  31.   end  
  32.   initial begin
  33.   for(counter =0; counter < 4'b1000; counter = counter + 1'b1) begin
  34.     in = $random%8;
  35.     a0 = in[0];
  36.     a1 = in[1];
  37.     a2 = in[2];
  38.     a3 = in[3];
  39.     #10;
  40.     if(counter == 3'b011)begin
  41.       nreset = 0;
  42.     end
  43.    
  44.   end
  45.  
  46.   $finish;
  47.  
  48.   end
  49.   always begin
  50.   #10
  51.   clk = ~clk;
  52.   end
  53. endmodule
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement