Guest User

Untitled

a guest
Jun 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.47 KB | None | 0 0
  1. module processador(input [17:0] SW,
  2. input[3:0]KEY, output logic [8:0]LEDG, output logic[17:0]LEDR,
  3. output logic HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7,HEX8,
  4. input CLOCK_50,
  5. output logic R0,R1,R2,R3,R4,R5,R6,R7);
  6.  
  7. logic inte, RESET,M_CLOCK,SALVA,loadEn,MBSel,MDSel ;
  8. logic [6:0] PC;
  9. logic [1:0] modo,destinationSel,bSel,aSel;
  10. logic [15:0] DOUT,dado,ConstantIn,Datain,DataIn,saidaULA,saidaShifter;
  11. logic [15:0] BUSA,BUSB,BUSD;
  12. logic [3:0] FsSel;
  13. logic [15:0] display0,display1;
  14. logic [15:0] ROM, REG, ramadd, ram_data;
  15. logic [3:0] DA,AA,BA;
  16. logic MD,RW,MW,PL,JB,BC,MB,MR,ramMW,ready;
  17.  
  18. always_comb
  19. inte <= SW[3];
  20.  
  21. clockAutomatico(CLOCK_50, KEY[1], LEDG[8]);
  22.  
  23. always_comb
  24. M_CLOCK <= LEDG[8];
  25.  
  26. rom(.address(PC),.clock(CLOCK_50),.q(ROM));
  27. decodificador(ROM,DA,AA,BA,MB,MD,RW,MW,PL,FS0,BC,JB,MR);
  28.  
  29.  
  30. datapath(RW,MB,FsSel[3]*FsSel[2],MD,M_CLOCK,RESET,DA,BA,AA,FsSel[1:0],ConstantIn,
  31. DataIn,FsSel,BUSD,saidaULA,saidaShifter,R0,R1,R2,R3,R4,R5,R6,R7,BUSA,
  32. BUSB,LEDG[7],LEDG[6],LEDG[5],LEDG[4]);
  33.  
  34. num2seg(display0, HEX3, HEX2, HEX1, HEX0);
  35. num2seg(display1, HEX7, HEX6, HEX5, HEX4);
  36.  
  37. always_comb
  38. case(modo)
  39. 0: begin
  40. display0 <= BUSA;
  41. display1 <= BUSB;
  42. end
  43. 1: begin
  44. display0 <= saidaShifter;
  45. display1 <= saidaULA;
  46. end
  47. 2: begin
  48. display0 <= 1'd0;
  49. display1 <= BUSD;
  50. end
  51. default: begin
  52. display0 <= PC;
  53. display1 <= ROM;
  54. end
  55. endcase
  56.  
  57.  
  58.  
  59. always_comb begin
  60. if ( BUSA[10] == 0 )
  61. DataIn <= Datain;
  62. else
  63. DataIn <= SW[2:0];
  64. end
  65.  
  66. always_ff @(posedge M_CLOCK ) begin
  67. if ( (MW == 1) & (BUSA[10] == 1) )
  68. REG <= BUSB;
  69. end
  70.  
  71. always_ff @(posedge M_CLOCK or posedge RESET) begin
  72. if (RESET)
  73. PC<=0;
  74. else begin
  75. if(~PL)
  76. PC <= PC + 1;
  77. else if
  78. ( JB == 1) PC <= DA;
  79. end
  80. end
  81.  
  82. always_comb begin
  83. LEDG[3]<= REG[3];
  84. LEDG[2]<= REG[2];
  85. LEDG[1]<= REG[1];
  86. LEDG[0]<= REG[0];
  87. ConstantIn <= {13'b0000000000000,BA};
  88. FsSel[3] <= ROM[12];
  89. FsSel[2] <= ROM[11];
  90. FsSel[1] <= ROM[10];
  91. FsSel[0] <= FS0;
  92. end
  93.  
  94. always_comb begin
  95. RESET <= ~KEY[0];
  96. SALVA <= KEY[2];
  97. modo <= SW[17:16];
  98.  
  99. case (modo)
  100. 0: LEDR[16:0] <= ConstantIn;
  101. 1: LEDR[16:0] <= DataIn;
  102. 2: LEDR[16:0] <= 0;
  103. default: begin
  104. LEDR[16:14] <= AA;
  105. LEDR[13:11] <= BA;
  106. LEDR[10] <= MB;
  107. LEDR[9:6]<= FsSel;
  108. LEDR[5] <= MD;
  109. LEDR[4] <= RW;
  110. LEDR[3] <= MW;
  111. LEDR[2] <= PL;
  112. LEDR[1] <= JB;
  113. LEDR[0] <= BC;
  114. end
  115. endcase
  116. end
  117.  
  118.  
  119. endmodule
Add Comment
Please, Sign In to add comment