improve reset logic
diff --git a/verilog/rtl/jacaranda-8/computer.v b/verilog/rtl/jacaranda-8/computer.v
index 9d8b6c6..13dccf4 100644
--- a/verilog/rtl/jacaranda-8/computer.v
+++ b/verilog/rtl/jacaranda-8/computer.v
@@ -83,9 +83,13 @@
reg [7:0] nanaseg_in_data;
- wire reset = la_data_in[0];
- wire instr_mem_data = wbs_dat_i[7:0];
- wire instr_mem_addr = reset ? wbs_adr_i[7:0] : pc;
+ wire reset;
+ wire [7:0] instr_mem_addr;
+ wire [7:0] instr_mem_data;
+
+ assign reset = la_data_in[16];
+ assign instr_mem_addr = reset ? la_data_in[15:8] : pc;
+ assign instr_mem_data = la_data_in[7:0];
instr_mem instr_mem(.addr(instr_mem_addr),
.w_data(instr_mem_data),
@@ -93,7 +97,8 @@
.r_data(instr),
.clock(wb_clk_i));
- cpu cpu(.clock(wb_clk_i),
+ cpu cpu(.raw_clock(wb_clk_i),
+ .reset(reset),
.instr(instr),
.pc(pc),
.rd_data(rd_data),
diff --git a/verilog/rtl/jacaranda-8/cpu.v b/verilog/rtl/jacaranda-8/cpu.v
index 2e7d3f2..f2e128f 100644
--- a/verilog/rtl/jacaranda-8/cpu.v
+++ b/verilog/rtl/jacaranda-8/cpu.v
@@ -1,5 +1,6 @@
-module cpu(clock, instr, pc, rd_data, rs_data, mem_w_en, mem_r_data, int_req, int_en, int_vec, reg_w_en);
- input clock;
+module cpu(raw_clock, reset, instr, pc, rd_data, rs_data, mem_w_en, mem_r_data, int_req, int_en, int_vec, reg_w_en);
+ input raw_clock;
+ input reset;
input [7:0] instr;
//割り込み要求線
input int_req;
@@ -36,6 +37,8 @@
//レジスタに書き込むデータをALUからのデータか選択する(1)でALUから(0)でそれ以外
wire reg_alu_w_sel;
+ wire clock;
+ assign clock = reset ? 1'b0 : raw_clock;
//ALUの制御信号
wire [3:0] alu_ctrl;