Archived
1
0
This repository has been archived on 2026-02-06. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
iceberg/cpu/cpu.sv
T
2022-04-07 17:15:16 +02:00

35 lines
670 B
Systemverilog

import alu::*;
import pc::*;
import reg16::*
'include "gates/mux16.v"
package cpu (
input [15:0]inM,
input [15:0]instr,
input reset,
input clk,
output [15:0]outM,
output [2:0]flagM
output wrtM,
output [15:0]addrM,
output [15:0]pc
);
assign wrtM = inM[11:5];
wire [11:6] [5:0] addrM = sel;
not(wrtM, notWrtM); //TODO: verify if this is needed
mux16 instrMux(outInstrMux, outM, instr, wrtM);
reg16 AReg(outInstrMux, wrtM, clk, addrM, notOutAReg);
mux16 inputMux(InAlu1, addrM, inM, wrtM);
reg16 DReg(outM, notWrtM, clk, InAlu0, notOut);
alu alu(InAlu0, InAlu1, sel, outM, flagM);
pc pc(addrM, wrtM, reset, clk, pc);
endpackage