Advertisement
Andrei_M

SIG_4 ( LSFR_4 + GR10 + SISR_4)

Nov 26th, 2019
1,820
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module d_ff // D flip flop
  2.   (
  3.   input d, rst_b, set_b, clk,
  4.   output reg q
  5.  
  6.   );
  7.  
  8. always @ (posedge clk, negedge rst_b, negedge set_b)
  9.   begin
  10.     if(rst_b == 0)
  11.       q <= 1'd0;
  12.     else if(set_b == 0)
  13.      q <= 1'd1;
  14.     else
  15.      q <= d;
  16.   end
  17.  
  18. endmodule
  19. //-----------------------------------------------------------
  20. module lsfr_4
  21.   (
  22.   input clk, rst_b,
  23.   output  [3:0] q  
  24.   );
  25.  
  26.  
  27.  
  28.   d_ff a
  29.   (
  30.   .d(q[3]),
  31.   .rst_b(1'd1), //rst_b este legat la 1
  32.   .set_b(rst_b), //set_b este legat la rst_b
  33.   .clk(clk),
  34.   .q(q[0])
  35.   );
  36.  
  37.   d_ff b
  38.   (
  39.   .d(q[3]^q[0]),
  40.   .rst_b(1'd1),
  41.   .set_b(rst_b),
  42.   .clk(clk),
  43.   .q(q[1])
  44.   );
  45.  
  46.   d_ff c
  47.   (
  48.   .d(q[1]),
  49.   .rst_b(1'd1),
  50.   .set_b(rst_b),
  51.   .clk(clk),
  52.   .q(q[2])
  53.   );
  54.  
  55.   d_ff d
  56.   (
  57.   .d(q[2]),
  58.   .rst_b(1'd1),
  59.   .set_b(rst_b),
  60.   .clk(clk),
  61.   .q(q[3])
  62.   );
  63.  
  64. endmodule
  65.  
  66. //----------------------------------------------------------------
  67.  
  68. module sisr_4 //week 10 pag 9
  69.   (
  70.   input i,
  71.   input clk, rst_b,
  72.   output  [3:0] q  
  73.   );
  74.  
  75.  
  76.  
  77.   d_ff e
  78.   (
  79.   .d(q[3] ^ i),
  80.   .rst_b(rst_b), //rst_b este legat la 1
  81.   .set_b(1'd1), //set_b este legat la rst_b
  82.   .clk(clk),
  83.   .q(q[0])
  84.   );
  85.  
  86.   d_ff f
  87.   (
  88.   .d(q[3]^q[0]),
  89.   .rst_b(rst_b),
  90.   .set_b(1'd1),
  91.   .clk(clk),
  92.   .q(q[1])
  93.   );
  94.  
  95.   d_ff g
  96.   (
  97.   .d(q[1]),
  98.   .rst_b(rst_b),
  99.   .set_b(1'd1),
  100.   .clk(clk),
  101.   .q(q[2])
  102.   );
  103.  
  104.   d_ff h
  105.   (
  106.   .d(q[2]),
  107.   .rst_b(rst_b),
  108.   .set_b(1'd1),
  109.   .clk(clk),
  110.   .q(q[3])
  111.   );
  112.  
  113. endmodule
  114. //------------------------------------------------------------
  115.  
  116. module gr10
  117.   (
  118.   input [3:0] i,
  119.   output reg o
  120.   );
  121.   always @(*) begin
  122.   if((i[3] && i[2]) || (i[3] && i[2]))
  123.     assign o = 1'd1;
  124.   else
  125.     assign o = 1'd0;
  126.   end
  127. endmodule
  128. //----------------------------------------------------------
  129.  
  130. module sig_4
  131. (
  132. input clk, rst_b,
  133. output [3:0] sig
  134. );      
  135. wire [3:0] f;
  136. wire g;
  137. lsfr_4 component1
  138. (
  139. .clk(clk),
  140. .rst_b(rst_b),
  141. .q(f)
  142. );
  143.  
  144. gr10 component2
  145. (
  146. .i(f),
  147. .o(g)
  148. );
  149.  
  150. sisr_4 component3
  151. (
  152. .i(g),
  153. .clk(clk),
  154. .rst_b(rst_b),
  155. .q(sig)
  156. );
  157.  
  158. endmodule
  159.  
  160. module sig_4_tb
  161.   (
  162.   output reg clk, rst_b,
  163.   output [3:0] sig
  164.   );
  165.  
  166.   sig_4 test
  167.   (
  168.   .clk(clk),
  169.   .rst_b(rst_b),
  170.   .sig(sig)
  171.   );
  172.  
  173.   initial begin
  174.     clk = 1'd0;
  175.     repeat (32)
  176.       #25 clk = ~clk;
  177.   end
  178.  
  179.   initial begin
  180.     rst_b = 1'd0;
  181.     #5 rst_b = 1'd1;
  182.   end
  183. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement