From 5b3b33213b0c844070d1da3832edeaf029bda191 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sun, 27 Mar 2022 16:59:47 -0700 Subject: Use the DF and IF switches as a selector for which PDP-8 owns the panel. --- hdl/top.sv | 183 +++++++++++++++++++++++++++++++------------------------------ 1 file changed, 93 insertions(+), 90 deletions(-) (limited to 'hdl/top.sv') diff --git a/hdl/top.sv b/hdl/top.sv index dcf04b5..20294ff 100644 --- a/hdl/top.sv +++ b/hdl/top.sv @@ -300,37 +300,40 @@ module top assign led[7] = {2'b0, led_step_counter[4], led_step_counter[3], led_step_counter[2], led_step_counter[1], led_step_counter[0], led_run, led_pause, led_ion, led_break, led_current_address}; assign led[8] = {5'b0, led_link, led_if[0], led_if[1], led_if[2], led_df[0], led_df[1], led_df[2]}; + bit [$clog2(`NUM_PDPS):0] selected_pdp; + assign selected_pdp = {switch_df, switch_if}; + + bit [11:0] local_led_pc [`NUM_PDPS-1:0]; + bit [11:0] local_led_memaddr [`NUM_PDPS-1:0]; + bit [11:0] local_led_memdata [`NUM_PDPS-1:0]; + bit [11:0] local_led_acc [`NUM_PDPS-1:0]; + bit [11:0] local_led_mq [`NUM_PDPS-1:0]; + bit local_led_and [`NUM_PDPS-1:0]; + bit local_led_tad [`NUM_PDPS-1:0]; + bit local_led_isz [`NUM_PDPS-1:0]; + bit local_led_dca [`NUM_PDPS-1:0]; + bit local_led_jms [`NUM_PDPS-1:0]; + bit local_led_jmp [`NUM_PDPS-1:0]; + bit local_led_iot [`NUM_PDPS-1:0]; + bit local_led_opr [`NUM_PDPS-1:0]; + bit local_led_fetch [`NUM_PDPS-1:0]; + bit local_led_execute [`NUM_PDPS-1:0]; + bit local_led_defer [`NUM_PDPS-1:0]; + bit local_led_word_count [`NUM_PDPS-1:0]; + bit local_led_current_address [`NUM_PDPS-1:0]; + bit local_led_break [`NUM_PDPS-1:0]; + bit local_led_ion [`NUM_PDPS-1:0]; + bit local_led_pause [`NUM_PDPS-1:0]; + bit local_led_run [`NUM_PDPS-1:0]; + bit [4:0] local_led_step_counter [`NUM_PDPS-1:0]; + bit [2:0] local_led_df [`NUM_PDPS-1:0]; + bit [2:0] local_led_if [`NUM_PDPS-1:0]; + bit local_led_link [`NUM_PDPS-1:0]; + generate genvar i; for (i = 0; i < `NUM_PDPS; ++i) begin : core - bit [11:0] local_led_pc; - bit [11:0] local_led_memaddr; - bit [11:0] local_led_memdata; - bit [11:0] local_led_acc; - bit [11:0] local_led_mq; - bit local_led_and; - bit local_led_tad; - bit local_led_isz; - bit local_led_dca; - bit local_led_jms; - bit local_led_jmp; - bit local_led_iot; - bit local_led_opr; - bit local_led_fetch; - bit local_led_execute; - bit local_led_defer; - bit local_led_word_count; - bit local_led_current_address; - bit local_led_break; - bit local_led_ion; - bit local_led_pause; - bit local_led_run; - bit [4:0] local_led_step_counter; - bit [2:0] local_led_df; - bit [2:0] local_led_if; - bit local_led_link; - core #( .JTAG_INSTANCE(1+i) ) cpu @@ -345,75 +348,75 @@ module top , .mem_read_valid(pdp_response_valid[i]) , .mem_read(pdp_response_data[i]) - , .switch_df(switch_df) - , .switch_if(switch_if) + , .switch_df(0) + , .switch_if(0) , .switch_sr(switch_sr) - , .switch_start(switch_start) - , .switch_load_add(switch_load_add) - , .switch_dep(switch_dep) - , .switch_exam(switch_exam) - , .switch_cont(switch_cont) - , .switch_stop(switch_stop) - , .switch_sing_step(switch_sing_step) - , .switch_sing_inst(switch_sing_inst) - - , .led_pc(local_led_pc) - , .led_memaddr(local_led_memaddr) - , .led_memdata(local_led_memdata) - , .led_acc(local_led_acc) - , .led_mq(local_led_mq) - , .led_and(local_led_and) - , .led_tad(local_led_tad) - , .led_isz(local_led_isz) - , .led_dca(local_led_dca) - , .led_jms(local_led_jms) - , .led_jmp(local_led_jmp) - , .led_iot(local_led_iot) - , .led_opr(local_led_opr) - , .led_fetch(local_led_fetch) - , .led_execute(local_led_execute) - , .led_defer(local_led_defer) - , .led_word_count(local_led_word_count) - , .led_current_address(local_led_current_address) - , .led_break(local_led_break) - , .led_ion(local_led_ion) - , .led_pause(local_led_pause) - , .led_run(local_led_run) - , .led_step_counter(local_led_step_counter) - , .led_df(local_led_df) - , .led_if(local_led_if) - , .led_link(local_led_link) + , .switch_start(selected_pdp == i ? switch_start : 0) + , .switch_load_add(selected_pdp == i ? switch_load_add : 0) + , .switch_dep(selected_pdp == i ? switch_dep : 0) + , .switch_exam(selected_pdp == i ? switch_exam : 0) + , .switch_cont(selected_pdp == i ? switch_cont : 0) + , .switch_stop(selected_pdp == i ? switch_stop : 0) + , .switch_sing_step(selected_pdp == i ? switch_sing_step : 0) + , .switch_sing_inst(selected_pdp == i ? switch_sing_inst : 0) + + , .led_pc(local_led_pc[i]) + , .led_memaddr(local_led_memaddr[i]) + , .led_memdata(local_led_memdata[i]) + , .led_acc(local_led_acc[i]) + , .led_mq(local_led_mq[i]) + , .led_and(local_led_and[i]) + , .led_tad(local_led_tad[i]) + , .led_isz(local_led_isz[i]) + , .led_dca(local_led_dca[i]) + , .led_jms(local_led_jms[i]) + , .led_jmp(local_led_jmp[i]) + , .led_iot(local_led_iot[i]) + , .led_opr(local_led_opr[i]) + , .led_fetch(local_led_fetch[i]) + , .led_execute(local_led_execute[i]) + , .led_defer(local_led_defer[i]) + , .led_word_count(local_led_word_count[i]) + , .led_current_address(local_led_current_address[i]) + , .led_break(local_led_break[i]) + , .led_ion(local_led_ion[i]) + , .led_pause(local_led_pause[i]) + , .led_run(local_led_run[i]) + , .led_step_counter(local_led_step_counter[i]) + , .led_df(local_led_df[i]) + , .led_if(local_led_if[i]) + , .led_link(local_led_link[i]) ); end endgenerate - assign led_pc = core[0].local_led_pc; - assign led_memaddr = core[0].local_led_memaddr; - assign led_memdata = core[0].local_led_memdata; - assign led_acc = core[0].local_led_acc; - assign led_mq = core[0].local_led_mq; - assign led_and = core[0].local_led_and; - assign led_tad = core[0].local_led_tad; - assign led_isz = core[0].local_led_isz; - assign led_dca = core[0].local_led_dca; - assign led_jms = core[0].local_led_jms; - assign led_jmp = core[0].local_led_jmp; - assign led_iot = core[0].local_led_iot; - assign led_opr = core[0].local_led_opr; - assign led_fetch = core[0].local_led_fetch; - assign led_execute = core[0].local_led_execute; - assign led_defer = core[0].local_led_defer; - assign led_word_count = core[0].local_led_word_count; - assign led_current_address = core[0].local_led_current_address; - assign led_break = core[0].local_led_break; - assign led_ion = core[0].local_led_ion; - assign led_pause = core[0].local_led_pause; - assign led_run = core[0].local_led_run; - assign led_step_counter = core[0].local_led_step_counter; - assign led_df = core[0].local_led_df; - assign led_if = core[0].local_led_if; - assign led_link = core[0].local_led_link; + assign led_pc = local_led_pc[selected_pdp]; + assign led_memaddr = local_led_memaddr[selected_pdp]; + assign led_memdata = local_led_memdata[selected_pdp]; + assign led_acc = local_led_acc[selected_pdp]; + assign led_mq = local_led_mq[selected_pdp]; + assign led_and = local_led_and[selected_pdp]; + assign led_tad = local_led_tad[selected_pdp]; + assign led_isz = local_led_isz[selected_pdp]; + assign led_dca = local_led_dca[selected_pdp]; + assign led_jms = local_led_jms[selected_pdp]; + assign led_jmp = local_led_jmp[selected_pdp]; + assign led_iot = local_led_iot[selected_pdp]; + assign led_opr = local_led_opr[selected_pdp]; + assign led_fetch = local_led_fetch[selected_pdp]; + assign led_execute = local_led_execute[selected_pdp]; + assign led_defer = local_led_defer[selected_pdp]; + assign led_word_count = local_led_word_count[selected_pdp]; + assign led_current_address = local_led_current_address[selected_pdp]; + assign led_break = local_led_break[selected_pdp]; + assign led_ion = local_led_ion[selected_pdp]; + assign led_pause = local_led_pause[selected_pdp]; + assign led_run = local_led_run[selected_pdp]; + assign led_step_counter = local_led_step_counter[selected_pdp]; + assign led_df = local_led_df[selected_pdp]; + assign led_if = local_led_if[selected_pdp]; + assign led_link = local_led_link[selected_pdp]; endmodule -- cgit v1.2.3