diff --git a/CPU9bits_tb_behav.wcfg b/CPU9bits_tb_behav.wcfg
index 07f6cfd..96973fa 100644
--- a/CPU9bits_tb_behav.wcfg
+++ b/CPU9bits_tb_behav.wcfg
@@ -12,14 +12,14 @@
-
-
+
+
-
-
+
+
-
+
clk
clk
@@ -35,39 +35,10 @@
instr[8:0]
instr[8:0]
-
-
- enable
- enable
-
-
- write_index[1:0]
- write_index[1:0]
-
-
- op0_idx[1:0]
- op0_idx[1:0]
-
-
- op1_idx[1:0]
- op1_idx[1:0]
-
-
- write_data[8:0]
- write_data[8:0]
-
-
- op0[8:0]
- op0[8:0]
-
-
- op1[8:0]
- op1[8:0]
-
-
- decOut[3:0]
- decOut[3:0]
+
+ AddrOut[8:0]
+ AddrOut[8:0]
r0_out[8:0]
@@ -85,6 +56,54 @@
r3_out[8:0]
r3_out[8:0]
+
+ r0_out[8:0]
+ r0_out[8:0]
+
+
+ r1_out[8:0]
+ r1_out[8:0]
+
+
+ r2_out[8:0]
+ r2_out[8:0]
+
+
+ r3_out[8:0]
+ r3_out[8:0]
+
+
+ switch
+ switch
+
+
+ writeEnable
+ writeEnable
+
+
+ address[8:0]
+ address[8:0]
+
+
+ writeData[8:0]
+ writeData[8:0]
+
+
+ memory[15:0][8:0]
+ memory[15:0][8:0]
+
+
+ readData[8:0]
+ readData[8:0]
+
+
+ operand0[8:0]
+ operand0[8:0]
+
+
+ result_K[8:0]
+ result_K[8:0]
+
op_idx
op_idx
@@ -93,10 +112,6 @@
AddrIn[8:0]
AddrIn[8:0]
-
- AddrOut[8:0]
- AddrOut[8:0]
-
progC_out[8:0]
progC_out[8:0]
@@ -109,6 +124,22 @@
cout
cout
+
+ result[8:0]
+ result[8:0]
+
+
+ switch[3:0]
+ switch[3:0]
+
+
+ K[8:0]
+ K[8:0]
+
+
+ out[8:0]
+ out[8:0]
+
FU[2:0]
FU[2:0]
diff --git a/lab2CA.runs/impl_1/gen_run.xml b/lab2CA.runs/impl_1/gen_run.xml
index 063b89e..2c0c43a 100644
--- a/lab2CA.runs/impl_1/gen_run.xml
+++ b/lab2CA.runs/impl_1/gen_run.xml
@@ -1,14 +1,14 @@
-
-
+
+
-
+
@@ -18,12 +18,12 @@
-
-
+
-
+
+
@@ -31,8 +31,8 @@
-
+
diff --git a/lab2CA.sim/sim_1/behav/xsim/xelab.pb b/lab2CA.sim/sim_1/behav/xsim/xelab.pb
index 9f16df3..175ab93 100644
Binary files a/lab2CA.sim/sim_1/behav/xsim/xelab.pb and b/lab2CA.sim/sim_1/behav/xsim/xelab.pb differ
diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c
index 2e51652..96ac0ee 100644
--- a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c
+++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/obj/xsim_1.c
@@ -46,83 +46,85 @@ typedef void (*funcp)(char *, char *);
extern int main(int, char**);
extern void execute_2(char*, char *);
extern void execute_3(char*, char *);
-extern void execute_163(char*, char *);
-extern void execute_375(char*, char *);
-extern void execute_376(char*, char *);
-extern void execute_354(char*, char *);
+extern void execute_176(char*, char *);
+extern void execute_412(char*, char *);
+extern void execute_413(char*, char *);
+extern void execute_387(char*, char *);
extern void vlog_const_rhs_process_execute_0_fast_no_reg_no_agg(char*, char*, char*);
-extern void execute_356(char*, char *);
-extern void execute_358(char*, char *);
-extern void execute_359(char*, char *);
-extern void execute_360(char*, char *);
-extern void execute_361(char*, char *);
-extern void execute_362(char*, char *);
-extern void execute_363(char*, char *);
-extern void execute_364(char*, char *);
-extern void execute_365(char*, char *);
-extern void execute_366(char*, char *);
-extern void execute_367(char*, char *);
-extern void execute_368(char*, char *);
-extern void execute_369(char*, char *);
-extern void execute_370(char*, char *);
-extern void execute_371(char*, char *);
-extern void execute_372(char*, char *);
-extern void execute_373(char*, char *);
-extern void execute_374(char*, char *);
+extern void execute_389(char*, char *);
+extern void execute_390(char*, char *);
+extern void execute_392(char*, char *);
+extern void execute_393(char*, char *);
+extern void execute_394(char*, char *);
+extern void execute_395(char*, char *);
+extern void execute_396(char*, char *);
+extern void execute_397(char*, char *);
+extern void execute_398(char*, char *);
+extern void execute_399(char*, char *);
+extern void execute_400(char*, char *);
+extern void execute_401(char*, char *);
+extern void execute_402(char*, char *);
+extern void execute_403(char*, char *);
+extern void execute_404(char*, char *);
+extern void execute_405(char*, char *);
+extern void execute_406(char*, char *);
+extern void execute_407(char*, char *);
+extern void execute_408(char*, char *);
+extern void execute_409(char*, char *);
+extern void execute_410(char*, char *);
+extern void execute_411(char*, char *);
extern void execute_6(char*, char *);
extern void execute_7(char*, char *);
extern void execute_9(char*, char *);
extern void execute_10(char*, char *);
-extern void execute_168(char*, char *);
-extern void execute_169(char*, char *);
-extern void execute_170(char*, char *);
-extern void execute_171(char*, char *);
-extern void execute_172(char*, char *);
-extern void execute_173(char*, char *);
-extern void execute_174(char*, char *);
+extern void execute_181(char*, char *);
+extern void execute_182(char*, char *);
+extern void execute_183(char*, char *);
+extern void execute_184(char*, char *);
+extern void execute_185(char*, char *);
+extern void execute_186(char*, char *);
+extern void execute_187(char*, char *);
extern void execute_13(char*, char *);
extern void execute_15(char*, char *);
extern void execute_23(char*, char *);
-extern void execute_201(char*, char *);
-extern void execute_203(char*, char *);
-extern void execute_204(char*, char *);
-extern void execute_182(char*, char *);
-extern void execute_183(char*, char *);
+extern void execute_214(char*, char *);
+extern void execute_216(char*, char *);
+extern void execute_217(char*, char *);
+extern void execute_195(char*, char *);
+extern void execute_196(char*, char *);
extern void execute_55(char*, char *);
-extern void execute_313(char*, char *);
-extern void execute_314(char*, char *);
-extern void execute_242(char*, char *);
-extern void execute_223(char*, char *);
-extern void execute_263(char*, char *);
-extern void execute_264(char*, char *);
-extern void execute_265(char*, char *);
-extern void execute_266(char*, char *);
-extern void execute_267(char*, char *);
-extern void execute_268(char*, char *);
-extern void execute_310(char*, char *);
-extern void execute_311(char*, char *);
+extern void execute_326(char*, char *);
+extern void execute_327(char*, char *);
+extern void execute_255(char*, char *);
+extern void execute_236(char*, char *);
+extern void execute_276(char*, char *);
+extern void execute_277(char*, char *);
+extern void execute_278(char*, char *);
+extern void execute_279(char*, char *);
+extern void execute_280(char*, char *);
+extern void execute_281(char*, char *);
+extern void execute_323(char*, char *);
+extern void execute_324(char*, char *);
extern void execute_123(char*, char *);
extern void execute_125(char*, char *);
-extern void execute_333(char*, char *);
-extern void execute_334(char*, char *);
-extern void execute_143(char*, char *);
-extern void execute_353(char*, char *);
-extern void execute_165(char*, char *);
-extern void execute_166(char*, char *);
-extern void execute_167(char*, char *);
-extern void execute_377(char*, char *);
-extern void execute_378(char*, char *);
-extern void execute_379(char*, char *);
-extern void execute_380(char*, char *);
-extern void execute_381(char*, char *);
+extern void execute_367(char*, char *);
+extern void execute_156(char*, char *);
+extern void execute_178(char*, char *);
+extern void execute_179(char*, char *);
+extern void execute_180(char*, char *);
+extern void execute_414(char*, char *);
+extern void execute_415(char*, char *);
+extern void execute_416(char*, char *);
+extern void execute_417(char*, char *);
+extern void execute_418(char*, char *);
extern void vlog_transfunc_eventcallback(char*, char*, unsigned, unsigned, unsigned, char *);
-extern void transaction_56(char*, char*, unsigned, unsigned, unsigned);
-funcp funcTab[73] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_163, (funcp)execute_375, (funcp)execute_376, (funcp)execute_354, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_356, (funcp)execute_358, (funcp)execute_359, (funcp)execute_360, (funcp)execute_361, (funcp)execute_362, (funcp)execute_363, (funcp)execute_364, (funcp)execute_365, (funcp)execute_366, (funcp)execute_367, (funcp)execute_368, (funcp)execute_369, (funcp)execute_370, (funcp)execute_371, (funcp)execute_372, (funcp)execute_373, (funcp)execute_374, (funcp)execute_6, (funcp)execute_7, (funcp)execute_9, (funcp)execute_10, (funcp)execute_168, (funcp)execute_169, (funcp)execute_170, (funcp)execute_171, (funcp)execute_172, (funcp)execute_173, (funcp)execute_174, (funcp)execute_13, (funcp)execute_15, (funcp)execute_23, (funcp)execute_201, (funcp)execute_203, (funcp)execute_204, (funcp)execute_182, (funcp)execute_183, (funcp)execute_55, (funcp)execute_313, (funcp)execute_314, (funcp)execute_242, (funcp)execute_223, (funcp)execute_263, (funcp)execute_264, (funcp)execute_265, (funcp)execute_266, (funcp)execute_267, (funcp)execute_268, (funcp)execute_310, (funcp)execute_311, (funcp)execute_123, (funcp)execute_125, (funcp)execute_333, (funcp)execute_334, (funcp)execute_143, (funcp)execute_353, (funcp)execute_165, (funcp)execute_166, (funcp)execute_167, (funcp)execute_377, (funcp)execute_378, (funcp)execute_379, (funcp)execute_380, (funcp)execute_381, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_56};
-const int NumRelocateId= 73;
+extern void transaction_60(char*, char*, unsigned, unsigned, unsigned);
+funcp funcTab[75] = {(funcp)execute_2, (funcp)execute_3, (funcp)execute_176, (funcp)execute_412, (funcp)execute_413, (funcp)execute_387, (funcp)vlog_const_rhs_process_execute_0_fast_no_reg_no_agg, (funcp)execute_389, (funcp)execute_390, (funcp)execute_392, (funcp)execute_393, (funcp)execute_394, (funcp)execute_395, (funcp)execute_396, (funcp)execute_397, (funcp)execute_398, (funcp)execute_399, (funcp)execute_400, (funcp)execute_401, (funcp)execute_402, (funcp)execute_403, (funcp)execute_404, (funcp)execute_405, (funcp)execute_406, (funcp)execute_407, (funcp)execute_408, (funcp)execute_409, (funcp)execute_410, (funcp)execute_411, (funcp)execute_6, (funcp)execute_7, (funcp)execute_9, (funcp)execute_10, (funcp)execute_181, (funcp)execute_182, (funcp)execute_183, (funcp)execute_184, (funcp)execute_185, (funcp)execute_186, (funcp)execute_187, (funcp)execute_13, (funcp)execute_15, (funcp)execute_23, (funcp)execute_214, (funcp)execute_216, (funcp)execute_217, (funcp)execute_195, (funcp)execute_196, (funcp)execute_55, (funcp)execute_326, (funcp)execute_327, (funcp)execute_255, (funcp)execute_236, (funcp)execute_276, (funcp)execute_277, (funcp)execute_278, (funcp)execute_279, (funcp)execute_280, (funcp)execute_281, (funcp)execute_323, (funcp)execute_324, (funcp)execute_123, (funcp)execute_125, (funcp)execute_367, (funcp)execute_156, (funcp)execute_178, (funcp)execute_179, (funcp)execute_180, (funcp)execute_414, (funcp)execute_415, (funcp)execute_416, (funcp)execute_417, (funcp)execute_418, (funcp)vlog_transfunc_eventcallback, (funcp)transaction_60};
+const int NumRelocateId= 75;
void relocate(char *dp)
{
- iki_relocate(dp, "xsim.dir/CPU9bits_tb_behav/xsim.reloc", (void **)funcTab, 73);
+ iki_relocate(dp, "xsim.dir/CPU9bits_tb_behav/xsim.reloc", (void **)funcTab, 75);
/*Populate the transaction function pointer field in the whole net structure */
}
diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl
index 2c7f553..7dcebad 100644
--- a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl
+++ b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/xsim_webtalk.tcl
@@ -1,6 +1,6 @@
webtalk_init -webtalk_dir C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/
webtalk_register_client -client project
-webtalk_add_data -client project -key date_generated -value "Sun Mar 24 14:11:52 2019" -context "software_version_and_target_device"
+webtalk_add_data -client project -key date_generated -value "Sun Mar 24 16:01:00 2019" -context "software_version_and_target_device"
webtalk_add_data -client project -key product_version -value "XSIM v2018.3 (64-bit)" -context "software_version_and_target_device"
webtalk_add_data -client project -key build_version -value "2405991" -context "software_version_and_target_device"
webtalk_add_data -client project -key os_platform -value "WIN64" -context "software_version_and_target_device"
@@ -14,7 +14,7 @@ webtalk_add_data -client project -key target_package -value "not_applicable" -co
webtalk_add_data -client project -key target_speed -value "not_applicable" -context "software_version_and_target_device"
webtalk_add_data -client project -key random_id -value "4e917e26-7591-4435-9135-15bd446b0238" -context "software_version_and_target_device"
webtalk_add_data -client project -key project_id -value "0a5803efda44405bb28bbf43ba22e808" -context "software_version_and_target_device"
-webtalk_add_data -client project -key project_iteration -value "60" -context "software_version_and_target_device"
+webtalk_add_data -client project -key project_iteration -value "96" -context "software_version_and_target_device"
webtalk_add_data -client project -key os_name -value "Microsoft Windows 8 or later , 64-bit" -context "user_environment"
webtalk_add_data -client project -key os_release -value "major release (build 9200)" -context "user_environment"
webtalk_add_data -client project -key cpu_name -value "Intel(R) Xeon(R) CPU E5-1620 v3 @ 3.50GHz" -context "user_environment"
@@ -22,11 +22,21 @@ webtalk_add_data -client project -key cpu_speed -value "3492 MHz" -context "user
webtalk_add_data -client project -key total_processors -value "1" -context "user_environment"
webtalk_add_data -client project -key system_ram -value "34.000 GB" -context "user_environment"
webtalk_register_client -client xsim
-webtalk_add_data -client xsim -key Command -value "xsim" -context "xsim\\command_line_options"
-webtalk_add_data -client xsim -key trace_waveform -value "true" -context "xsim\\usage"
-webtalk_add_data -client xsim -key runtime -value "515 ns" -context "xsim\\usage"
-webtalk_add_data -client xsim -key iteration -value "0" -context "xsim\\usage"
-webtalk_add_data -client xsim -key Simulation_Time -value "0.08_sec" -context "xsim\\usage"
-webtalk_add_data -client xsim -key Simulation_Memory -value "6364_KB" -context "xsim\\usage"
-webtalk_transmit -clientid 346626644 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "XSIM Usage Report
"
+webtalk_add_data -client xsim -key File_Counter -value "9" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key Command -value "xelab" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key Vhdl2008 -value "false" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key GenDLL -value "false" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key SDFModeling -value "false" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key HWCosim -value "false" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key DPI_Used -value "false" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key Debug -value "typical" -context "xsim\\command_line_options"
+webtalk_add_data -client xsim -key Simulation_Image_Code -value "106 KB" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Simulation_Image_Data -value "19 KB" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Total_Nets -value "0" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Total_Processes -value "281" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Total_Instances -value "144" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Xilinx_HDL_Libraries_Used -value "secureip unimacro_ver unisims_ver " -context "xsim\\usage"
+webtalk_add_data -client xsim -key Compiler_Time -value "0.90_sec" -context "xsim\\usage"
+webtalk_add_data -client xsim -key Compiler_Memory -value "47248_KB" -context "xsim\\usage"
+webtalk_transmit -clientid 2879076635 -regid "174150793_174150794_210688225_140" -xml C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.xml -html C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.html -wdm C:/Users/ecelab/ECE3570-Lab/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/webtalk/usage_statistics_ext_xsim.wdm -intro "XSIM Usage Report
"
webtalk_terminate
diff --git a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem
index e083293..32c1368 100644
Binary files a/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem and b/lab2CA.sim/sim_1/behav/xsim/xsim.dir/CPU9bits_tb_behav/xsim.mem differ
diff --git a/lab2CA.sim/sim_1/behav/xsim/xvlog.pb b/lab2CA.sim/sim_1/behav/xsim/xvlog.pb
index 8eae0ad..e201557 100644
Binary files a/lab2CA.sim/sim_1/behav/xsim/xvlog.pb and b/lab2CA.sim/sim_1/behav/xsim/xvlog.pb differ
diff --git a/lab2CA.srcs/sources_1/new/CPU9bits.v b/lab2CA.srcs/sources_1/new/CPU9bits.v
index 3e04539..21a04ec 100644
--- a/lab2CA.srcs/sources_1/new/CPU9bits.v
+++ b/lab2CA.srcs/sources_1/new/CPU9bits.v
@@ -9,7 +9,7 @@ module CPU9bits(
wire [2:0] FU;
wire [3:0] aluOp;
wire [1:0] bankS;
- wire addiS, RegEn, loadS, fetchBranch, halt, cout0, cout1, link, js;
+ wire addiS, RegEn, loadS, fetchBranch, halt, cout0, cout1, link, js, dataMemEn;
instructionMemory iM(
.clk(clk),
@@ -19,7 +19,7 @@ module CPU9bits(
dataMemory dM(
.clk(clk),
- .writeEnable(loadS),
+ .writeEnable(dataMemEn),
.writeData(op0),
.address(op1),
.readData(dataMemOut)
@@ -71,6 +71,7 @@ module CPU9bits(
.FU(FU),
.addi(addiS),
.mem(loadS),
+ .dataMemEn(dataMemEn),
.RegEn(RegEn),
.halt(done),
.link(link),
@@ -117,7 +118,7 @@ module CPU9bits(
bit1_mux_2_1 BranMux( // BEQ MUX
.A(FU[0]),
- .B(op0[0]),
+ .B(AluOut[0]),
.out(fetchBranch),
.switch(FU[2])); // FU[2] only goes high when BEQ
@@ -185,8 +186,9 @@ module CPU9bits_tb();
.done(done));
initial begin
+ #10
reset = 1'b1;
- #15
+ #10
reset = 1'b0;
#500
diff --git a/lab2CA.srcs/sources_1/new/ControlUnit.v b/lab2CA.srcs/sources_1/new/ControlUnit.v
index c9c3f7b..0c9bec5 100644
--- a/lab2CA.srcs/sources_1/new/ControlUnit.v
+++ b/lab2CA.srcs/sources_1/new/ControlUnit.v
@@ -6,7 +6,7 @@ module ControlUnit(
output reg [3:0] aluOut,
output reg [2:0] FU,
output reg addi,
- output reg mem,
+ output reg mem, dataMemEn,
output reg RegEn,
output reg halt,
output reg link,
@@ -23,6 +23,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -34,6 +35,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -45,6 +47,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -56,6 +59,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -68,6 +72,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -79,6 +84,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -91,6 +97,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -102,6 +109,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -113,6 +121,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -124,6 +133,7 @@ module ControlUnit(
FU <= 3'b001; // Disable Branching
halt <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -135,6 +145,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -146,6 +157,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b1;
@@ -157,17 +169,19 @@ module ControlUnit(
addi <= 1'b0;
aluOut <= 4'b0000;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b1;
bank <= 2'b10;
js <= 1'b0;
end
4'b1100: begin
- aluOut <= 4'b0000;
+ aluOut <= 4'b1010;
FU <= 3'b110; // branch
RegEn <= 1'b1;
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -179,6 +193,7 @@ module ControlUnit(
halt <= 1'b0;
addi <= 1'b0;
mem <= 1'b0;
+ dataMemEn <= 1'b0;
link <= 1'b0;
bank <= 2'b10;
js <= 1'b0;
@@ -186,6 +201,7 @@ module ControlUnit(
4'b0001: begin
aluOut <= 4'b0000;
mem <= 1'b1; // load
+ dataMemEn <= 1'b0;
RegEn <= 1'b0;
FU <= 3'b001; // Disable Branching
addi <= 1'b0;
@@ -197,6 +213,7 @@ module ControlUnit(
4'b0010: begin
aluOut <= 4'b0000;
mem <= 1'b0; // store
+ dataMemEn <= 1'b1;
RegEn <= 1'b1;
FU <= 3'b001; // Disable Branching
halt <= 1'b0;
diff --git a/lab2CA.srcs/sources_1/new/dataMemory.v b/lab2CA.srcs/sources_1/new/dataMemory.v
index bfc0d48..b9c116e 100644
--- a/lab2CA.srcs/sources_1/new/dataMemory.v
+++ b/lab2CA.srcs/sources_1/new/dataMemory.v
@@ -31,7 +31,7 @@ module dataMemory(
always@(address, clk, memory)begin
if(clk == 1'b1)begin
readData <= memory[address];
- if(writeEnable == 1'b0)begin
+ if(writeEnable == 1'b1)begin
memory[address] <= writeData;
end
else begin
diff --git a/lab2CA.srcs/sources_1/new/instructionMemory.v b/lab2CA.srcs/sources_1/new/instructionMemory.v
index 9bac97a..7347372 100644
--- a/lab2CA.srcs/sources_1/new/instructionMemory.v
+++ b/lab2CA.srcs/sources_1/new/instructionMemory.v
@@ -28,7 +28,7 @@ module instructionMemory(
// memory[13] <= 9'b111111001; //srl
// // memory[14] <= 9'b100100010; //j
// memory[14] <= 9'b010001000; //zero
-// memory[15] <= 9'b110001101; //beq
+// memory[15] <= 9'b110001001; //beq
// memory[16] <= 9'b100001000; //jr
// memory[17] <= 9'b100111100; //j
@@ -48,7 +48,7 @@ module instructionMemory(
memory[11] <= 9'b000111110;
memory[12] <= 9'b101010000;
memory[13] <= 9'b101000010;
- memory[14] <= 9'b101010100;
+ memory[14] <= 9'b101001100;
memory[15] <= 9'b101011110; //ends initialization
memory[16] <= 9'b101000011;
memory[17] <= 9'b101001101;
diff --git a/lab2CA.xpr b/lab2CA.xpr
index f93b4dc..d15e3f5 100644
--- a/lab2CA.xpr
+++ b/lab2CA.xpr
@@ -3,7 +3,7 @@
-
+
@@ -31,7 +31,7 @@
-
+
@@ -136,7 +136,7 @@
-
+