Advertisement
ptrawt

CPE212-[Lab8.1] q4

Sep 6th, 2013
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module upperwg(g,q,x,clk,reset);
  2.     input x,reset,clk;
  3.     output [1:0]q;
  4.     output g;
  5.     wire nq0;
  6.    
  7.     uppernog ung(q,x,clk,reset);
  8.    
  9.     not not1(nq0,q[1]);
  10.     and and1(g,x,q[0],nq0);
  11. endmodule
  12.  
  13. module uppernog(q,x,clk,reset);
  14.     input x,reset,clk;
  15.     output [1:0]q;
  16.     wire xorq,xorf,nq1;
  17.    
  18.     xor xor1(xorq,q[0],q[1]);
  19.     xor xor2(xorf,x,xorq);
  20.    
  21.     not not1(nq1,q[0]);
  22.    
  23.     D_FF d0(q[1],xorf,clk,reset);
  24.     D_FF d1(q[0],nq1,clk,reset);
  25.    
  26. endmodule
  27.  
  28. module D_FF(q,d,clk,reset);
  29.     output q;
  30.     input d,clk,reset;
  31.     reg q;
  32.     always @(posedge reset or negedge clk)
  33.     if(reset)
  34.         q <= 1'b0;
  35.     else
  36.         q <= d;
  37. endmodule
  38.  
  39. module stimulus;
  40.     wire [1:0]q;
  41.     wire g;
  42.     reg x,clk,reset;
  43.    
  44.     upperwg up1(g,q,x,clk,reset);
  45.    
  46.     initial
  47.         begin
  48.             x = 1'b0;
  49.             clk = 1'b1;
  50.             reset = 1'b1;
  51.         end
  52.    
  53.     always #1 clk = ~clk;
  54.     always #16 x = ~x;
  55.     initial
  56.         begin
  57.             #10 reset = ~reset;
  58.             #40 reset = ~reset;
  59.         end
  60.     initial #50 $finish;
  61.    
  62.     initial
  63.         $monitor($time,"\treset = %d\tclk = %d\t\tx = %d\tq = %b\tg = %d",reset,clk,x,q,g);
  64. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement