Advertisement
jack96013

ex6_44

Jun 7th, 2020
2,466
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module MUX2_1(output reg Y,input I0,I1,Sel);
  2.     always @(I0,I1,Sel)
  3.         if(Sel) Y=I1;
  4.         else Y=I0;
  5. endmodule
  6.  
  7. module FA(output reg carry,sum,input a,b,c_in);
  8.     always @(a,b,c_in)
  9.         {carry,sum}=a+b+c_in;
  10. endmodule
  11.  
  12. module DFF(output reg Q,input D,Clk,Reset);
  13.     always @(posedge Clk,negedge Reset)
  14.         if(Reset==0) Q<=0;
  15.         else Q<=D;
  16.  
  17. endmodule
  18.  
  19. module DFF_Clock(output Q,input D,Shift_Control,Clk,Reset);
  20.    
  21.     MUX2_1 m0(w0,Q,D,Shift_Control);
  22.     DFF m1(Q,w0,Clk,Reset);
  23.    
  24. endmodule
  25.  
  26. module Shift_Register(output SO, output reg[3:0] Y ,input[3:0] data, input SI, Load, Shift_Control,Clk,Reset);
  27.     assign SO=Y[0];
  28.     always @(posedge Clk,negedge Reset)
  29.         if(Reset==0) Y<=0;
  30.         else if (Load) Y<=data;
  31.         else if (Shift_Control) Y<={SI,Y[3:1]};
  32.  
  33. endmodule
  34.  
  35. module ex6_44(output SO,output[3:0] sregA,sregB,
  36.     input[3:0] data_A,data_B,input Load,Shift_Control,Clk,Reset);
  37.     wire SO_A,SO_B;
  38.     wire carry,sum;
  39.     supply0 gnd;
  40.     assign SO=sum;
  41.     wire Q;
  42.  
  43.     Shift_Register MA(SO_A,sregA,data_A,sum,Load,Shift_Control,Clk,Reset);
  44.     Shift_Register MB(SO_B,sregB,data_B,gnd,Load,Shift_Control,Clk,Reset);
  45.  
  46.     FA m0(carry,sum,SO_A,SO_B,Q);
  47.     DFF_Clock m1(Q,carry,Shift_Control,Clk,Reset);
  48. endmodule
  49.  
  50. //sregAB for Debug
  51. module t_ex6_44();
  52.     wire SO;
  53.     wire[3:0] sregA,sregB;
  54.     reg[3:0] data_A,data_B;
  55.     reg Load,Shift_Control,Clk,Reset;
  56.    
  57.     ex6_44 m0(SO,sregA,sregB,data_A,data_B,Load,Shift_Control,Clk,Reset);
  58.  
  59.     initial begin Clk=0;forever #5 Clk=~Clk; end
  60.      
  61.     initial fork
  62.         data_A=4'b1100;
  63.         data_B=4'b0101;
  64.         Load=0;
  65.         Shift_Control=0;
  66.         #2 Reset=0;
  67.         #4 Reset=1;
  68.         #20 Load=1;
  69.         #30 Load=0;
  70.         #50 Shift_Control=1;
  71.         #90 Shift_Control=0;
  72.         #100 $finish;
  73.     join
  74.    
  75.    
  76. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement