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 @@ - +