Advertisement
Guest User

Untitled

a guest
Apr 4th, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. `default_nettype none
  2.  
  3.  
  4. module MagComp
  5. #(parameter w = 3)
  6. (input logic [w-1:0] A, B,
  7. output logic AltB, AeqB, AgtB);
  8.     assign AltB = (A < B) ? 1 : 0;
  9.     assign AeqB = (A == B) ? 1 : 0;
  10.     assign AgtB = (A > B) ? 1 : 0;
  11. endmodule: MagComp
  12.  
  13. module Adder
  14. #(parameter w = 3)
  15. (input logic [w-1:0] A, B,
  16. input logic Cin,
  17. output logic [w-1:0] S,
  18. output logic Cout);
  19.  
  20.     assign {Cout, S} = A + B + Cin;
  21.  
  22. endmodule: Adder
  23.  
  24. module multiplexer
  25. #(parameter w = 3)
  26. (input logic [w-1:0] I,
  27. input logic [$clog2(w)-1:0] S,
  28. output logic Y);
  29.  
  30.     assign Y = I[S];
  31.  
  32. endmodule: multiplexer
  33.  
  34. module mux2to1
  35. #(parameter w = 3)
  36. (input logic [w-1:0] I0,I1,
  37. input logic S,
  38. output logic [w-1:0] Y);
  39.  
  40. assign Y = (S==0)?I0:I1;
  41.  
  42. endmodule: mux2to1
  43.  
  44. module decoder
  45. #(parameter w = 6)
  46. (input logic [$clog2(w)-1:0] I, input logic en,
  47. output logic [w - 1:0] D);
  48.     always_comb begin
  49.         D = 2'b0;
  50.         if(en) begin
  51.             D = 1'b1 << I;
  52.         end
  53.     end
  54. endmodule: decoder
  55.  
  56.  
  57. module ShiftReg_PISO_Right
  58. #(parameter w = 8)
  59. (output logic lowBit,
  60. input logic [w-1:0] d,
  61. input logic ld_L, sh_L,
  62. input logic clock);
  63. logic [w-1:0] q;
  64.     assign lowBit = q[0];
  65.     always_ff @(posedge clock)
  66.         if (~ld_L)
  67.             q <= d;
  68.         else if (~sh_L)
  69.         q <= q >> 1;
  70. // SV shift operator fills
  71. // with zeros
  72. endmodule: ShiftReg_PISO_Right
  73.  
  74. module ShiftReg_SIPO_Left
  75. #(parameter w = 8)
  76. (input logic lowBit,
  77. output logic [w-1:0] out,
  78. input logic clock,en,clear);
  79.  
  80.     logic [w-1:0] q;
  81.     assign q = {out[w-2:0],lowBit};
  82.     register #(8) r(q,clock,en,clear,out);
  83. endmodule: ShiftReg_SIPO_Left
  84.  
  85.  
  86. module register
  87. #(parameter w = 6)
  88. (input logic [w-1:0] D,
  89. input logic clock, en, clear,
  90. output logic [w-1:0] Q);
  91.  
  92.     always_ff @(posedge clock) begin
  93.         if (clear) Q <= 0;
  94.         else if (en) Q <= D;
  95.     end
  96.  
  97. endmodule: register
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement