Advertisement
Guest User

Untitled

a guest
Dec 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Rafael da Silva Pereira. 16/12/18
  2. * Classificador de nota.
  3. */
  4. // DESCRIPTION: Verilator: Systemverilog example module
  5. // with interface to switch buttons, LEDs, LCD and register display
  6.  
  7. parameter NINSTR_BITS = 32;
  8. parameter NBITS_TOP = 8, NREGS_TOP = 32;
  9. module top(input  logic clk_2,
  10.            input  logic [NBITS_TOP-1:0] SWI,
  11.            output logic [NBITS_TOP-1:0] LED,
  12.            output logic [NBITS_TOP-1:0] SEG,
  13.            output logic [NINSTR_BITS-1:0] lcd_instruction,
  14.            output logic [NBITS_TOP-1:0] lcd_registrador [0:NREGS_TOP-1],
  15.            output logic [NBITS_TOP-1:0] lcd_pc, lcd_SrcA, lcd_SrcB,
  16.              lcd_ALUResult, lcd_Result, lcd_WriteData, lcd_ReadData,
  17.            output logic lcd_MemWrite, lcd_Branch, lcd_MemtoReg, lcd_RegWrite);
  18.  
  19.     logic opcaoDeExibicao; // uma variavel booleana representando em 1: a situacao do aluno, e em 0: sua nota.
  20.     logic [3:0] nota;// representa a nota do aluno
  21.     logic [6:0] resultado;
  22.  
  23.     always_comb begin // Aqui inicia-se um circuito combinacional responsavel de receber a entrada.
  24.         opcaoDeExibicao <= SWI[7];
  25.         nota <= SWI[3:0];
  26.     end
  27.  
  28.     always_comb begin // Aqui inicia-se um circuito combinacional responsavel pela logica do negocio
  29.         if(opcaoDeExibicao) begin
  30.             if(nota < 4) begin
  31.                 resultado <= 'b1110011;
  32.             end
  33.             else if(nota >= 7) begin
  34.                 resultado <= 'b1110111;
  35.          
  36.             end
  37.             else begin // always_comb nos obriga a coloca else em qualquer if
  38.                 resultado <= 'b1110001;
  39.             end
  40.        
  41.         end else begin
  42.  
  43.             /*Esta parte do codigo verica se o valor em binario de notas, quando convertido para binario é uma das opcoes abaixo */
  44.             case(nota)  
  45.                 1: resultado <= 'b0000110;
  46.                 2: resultado <= 'b1011011;
  47.                 3: resultado <= 'b1001111;
  48.                 4: resultado <= 'b1100110;
  49.                 5: resultado <= 'b1101101;
  50.                 6: resultado <= 'b1111101;
  51.                 7: resultado <= 'b0000111;
  52.                 8: resultado <= 'b1111111;
  53.                 9: resultado <= 'b1100111;
  54.                 default: resultado <= 'b0111111; // default é zero
  55.             endcase
  56.         end
  57.     end
  58.  
  59.   /*Neste always_comb tratamos de mostrar a saida*/
  60.   always_comb SEG[6:0] <= resultado;
  61.    
  62. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement