SHARE
TWEET

Exemplu colocviu 2

a guest May 25th, 2019 81 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module FSM(input run,
  2.             input clk,
  3.             input rst,
  4.             input fail,
  5.             output [1:0] state,
  6.             output reg count_en
  7.             );
  8.            
  9. localparam stop=0,shift=1,failn=2;
  10. reg [1:0]stare;
  11.  
  12. always@(posedge clk) begin
  13.  
  14. if(~rst) stare<=failn;   //nu are niciun efect
  15.  
  16. if(stare==shift) count_en<=1;
  17.   else count_en<=0;
  18.  
  19. case(stare)
  20. stop: begin
  21.             if(fail) stare<=failn;         
  22.             if(run) stare<=shift;
  23.       end
  24.  
  25. shift: begin  
  26.             if(fail) stare<=failn;
  27.             if(~run) stare<=stop;
  28.        end
  29.      
  30. failn: begin
  31.             if(~fail) stare<=stop; 
  32.        end                
  33.  
  34. endcase
  35. if(stare==shift) count_en<=1;
  36.   else count_en<=0;
  37.  
  38. end
  39. assign state=stare;
  40.  
  41. endmodule
  42.  
  43.  
  44.  
  45.  
  46.  
  47. module inversor(input in,
  48.                 output out
  49.                     );
  50. assign out=~in;
  51. endmodule
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59. module shift_cnt(input clk,
  60.                 input rst,
  61.                 input count_en,
  62.                 output reg shift_en
  63.                     );
  64.                    
  65. reg [12:0] clock_constant=0;
  66.  
  67. always@(posedge clk) begin
  68.  
  69. if(~rst) begin           //rst nu are niciun efect
  70.             clock_constant<=0;
  71.             //shift_en<=0;
  72.          end
  73. if(clock_constant==5000) begin
  74.                             clock_constant<=0;
  75.                             shift_en<=1;
  76.                          end
  77. else        begin
  78.             clock_constant<=clock_constant+1;
  79.             shift_en<=0;
  80.             end
  81. end
  82. endmodule
  83.  
  84.  
  85.  
  86.  
  87.  
  88. module shift_reg(input shift_en,
  89.                 input clk,
  90.                 input rst,
  91.                 output reg[9:0]leds
  92.                     );
  93.  
  94. always@(posedge clk) begin
  95. if(rst==0) leds<=1;
  96. if(shift_en==1) leds<={leds [8:0],leds[9]};
  97. end
  98. endmodule
  99.  
  100.  
  101.  
  102.  
  103.  
  104. module top(input clk,
  105.             input rst,
  106.             input fail,
  107.             input RUN,
  108.             output [9:0] LEDs,
  109.             output [6:0]sevenSegOut);
  110.  
  111. wire[1:0] stare;
  112. wire count_en,out,shift_en;        
  113.            
  114. FSM inst1(.run(RUN),
  115.             .clk(clk),
  116.             .rst(rst),
  117.             .fail(out),
  118.             .state(stare),
  119.             .count_en(count_en)
  120.             );
  121.  
  122. shift_cnt inst2(.clk(clk),
  123.             .rst(rst),
  124.             .count_en(count_en),
  125.             .shift_en(shift_en)
  126.             );
  127.  
  128. shift_reg inst3(.shift_en(shift_en),
  129.                 .clk(clk),
  130.                 .rst(rst),
  131.                 .leds(LEDs)
  132.                 );
  133.                
  134. transcoder inst4(.state(stare),
  135.                 .sevenseg(sevenSegOut)
  136.                 );
  137.  
  138. inversor inst5(.in(fail),
  139.                 .out(out)
  140.                 );
  141.            
  142. endmodule
  143.  
  144.  
  145.  
  146.  
  147.  
  148. module transcoder(input [1:0]state,
  149.                 output reg[6:0] sevenseg
  150.                 );
  151.                        
  152. localparam stop=0,shift=1,failn=2;
  153.  
  154. always@(sevenseg) begin
  155. case(state)
  156. stop: sevenseg=7'b1000000;
  157. shift: sevenseg=7'b1111001;
  158. failn: sevenseg=7'b0001110;
  159. endcase
  160. end
  161. endmodule
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top