Advertisement
Guest User

LOAC-PAINEIS-REDE

a guest
Nov 18th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // DESCRIPTION: Verilator: Systemverilog example module
  2. // with interface to switch buttons, LEDs, LCD and register display
  3.  
  4. parameter NINSTR_BITS = 32;
  5. parameter NBITS_TOP = 8, NREGS_TOP = 32;
  6. module top(input  logic clk_2,
  7.            input  logic [NBITS_TOP-1:0] SWI,
  8.            output logic [NBITS_TOP-1:0] LED,
  9.            output logic [NBITS_TOP-1:0] SEG,
  10.            output logic [NINSTR_BITS-1:0] lcd_instruction,
  11.            output logic [NBITS_TOP-1:0] lcd_registrador [0:NREGS_TOP-1],
  12.            output logic [NBITS_TOP-1:0] lcd_pc, lcd_SrcA, lcd_SrcB,
  13.              lcd_ALUResult, lcd_Result, lcd_WriteData, lcd_ReadData,
  14.            output logic lcd_MemWrite, lcd_Branch, lcd_MemtoReg, lcd_RegWrite);
  15.  
  16. logic [1:0] clock;
  17. logic resett;
  18. logic incideSol;
  19. logic painel;
  20. logic rede;
  21. logic [1:0] tempo_desligado;
  22.  
  23. typedef enum [2:0] {d, s21, s20, s31, s30, r} State;
  24. State current_state, next_state;
  25.  
  26. always_comb begin
  27.     resett <= SWI[0];
  28.     incideSol <= SWI[1];
  29.     LED[0] <= painel;
  30.     LED[1] <= rede;
  31.     LED[7] <= clock[1];
  32.     case(tempo_desligado)
  33.         0: SEG[7:0] <= 'b00111111;
  34.         1: SEG[7:0] <= 'b00000110;
  35.         2: SEG[7:0] <= 'b01011011;
  36.         3: SEG[7:0] <= 'b01001111;
  37.         4: SEG[7:0] <= 'b00000000;
  38.     endcase
  39.    
  40.     if(resett) begin
  41.         current_state <= d;
  42.     end
  43.     else begin
  44.         current_state <= next_state;
  45.     end
  46.  
  47. end
  48.  
  49. always_ff @(posedge clk_2) begin
  50.     clock = clock + 1;
  51. end
  52.  
  53. always_ff @(posedge clock[1]) begin
  54.     if(resett) tempo_desligado = 0;
  55.     else tempo_desligado = tempo_desligado;
  56.  
  57.     case(current_state)
  58.         d: begin
  59.         rede <= 0;
  60.         painel <= 0;
  61.         case(tempo_desligado)
  62.             0: begin
  63.                 tempo_desligado = 1;
  64.                 next_state <= d;
  65.             end
  66.             1: begin
  67.                 tempo_desligado = 2;
  68.                 next_state <= d;
  69.             end
  70.             2: begin
  71.                 if(incideSol) begin
  72.                     tempo_desligado = 0;
  73.                     next_state <= s21;
  74.                 end
  75.                 else begin
  76.                     tempo_desligado = 3;
  77.                     next_state <= d;
  78.                 end
  79.             end
  80.             3: begin
  81.                 if(incideSol) begin
  82.                     tempo_desligado = 0;
  83.                     next_state <= s30;
  84.                 end
  85.                 else begin
  86.                     tempo_desligado = 0;
  87.                     next_state <= r;
  88.                 end
  89.             end
  90.         endcase
  91.         end
  92.         s21: begin
  93.             painel <= 1;
  94.             rede <= 0;
  95.             tempo_desligado = 0;
  96.             next_state <= s20;
  97.         end
  98.         s20: begin
  99.             painel <= 0;
  100.             rede <= 0;
  101.             tempo_desligado = 0;
  102.             if(incideSol) next_state <= s21;
  103.             else next_state <= d;
  104.         end
  105.         s30: begin
  106.             painel <= 0;
  107.             rede <= 0;
  108.             tempo_desligado = 0;
  109.             if(incideSol) next_state <= s31;
  110.             else next_state <= d;
  111.         end
  112.         s31: begin
  113.             painel <= 1;
  114.             rede <= 0;
  115.             tempo_desligado = 0;
  116.             next_state <= s30;
  117.         end
  118.         r: begin
  119.             rede <= 1;
  120.             painel <= 0;
  121.             tempo_desligado = 0;
  122.             if(incideSol) next_state <= s21;
  123.             else next_state <= r;
  124.         end
  125.     endcase
  126. end
  127. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement