summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile19
-rw-r--r--hdl/defs.svh2
-rw-r--r--hdl/top.sv154
3 files changed, 127 insertions, 48 deletions
diff --git a/Makefile b/Makefile
index 0250933..3ba08fd 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,19 @@ fpga: pdp8.sof
7 quartus_pgm -c 1 -m JTAG -o "P;$<@1" 7 quartus_pgm -c 1 -m JTAG -o "P;$<@1"
8.PHONY: fpga 8.PHONY: fpga
9 9
10download-%: mem/%
11 p8bin2uart 1 $< | ./download.tcl 0 1
12 p8bin2uart 1 $< | ./download.tcl 1 1
13 p8bin2uart 1 $< | ./download.tcl 2 1
14 p8bin2uart 1 $< | ./download.tcl 3 1
15 p8bin2uart 1 $< | ./download.tcl 4 1
16 p8bin2uart 1 $< | ./download.tcl 5 1
17 p8bin2uart 1 $< | ./download.tcl 6 1
18 p8bin2uart 1 $< | ./download.tcl 7 1
19
20download-pal-%: build/%.bin
21 p8bin2uart 1 $< | ./download.tcl 0 1
22
10term-mem: 23term-mem:
11 nios2-terminal --instance 0 24 nios2-terminal --instance 0
12.PHONY: term-mem 25.PHONY: term-mem
@@ -15,12 +28,6 @@ term-pdp8:
15 nios2-terminal --instance 1 28 nios2-terminal --instance 1
16.PHONY: term-pdp8 29.PHONY: term-pdp8
17 30
18build/%.hex: build/%.bin
19 p8bin2hex $< > $@
20
21build/%.hex: %.bin
22 p8bin2hex $< > $@
23
24build/%.bin: %.pal 31build/%.bin: %.pal
25 @mkdir -p $(dir $@) 32 @mkdir -p $(dir $@)
26 palbart $< 33 palbart $<
diff --git a/hdl/defs.svh b/hdl/defs.svh
index f8b1032..7c47723 100644
--- a/hdl/defs.svh
+++ b/hdl/defs.svh
@@ -5,7 +5,7 @@
5 5
6`define PDP_ADDRESS_BITS 15 6`define PDP_ADDRESS_BITS 15
7 7
8`define NUM_PDPS 1 8`define NUM_PDPS 8
9 9
10`define UART_BYTE_BITS 8 10`define UART_BYTE_BITS 8
11 11
diff --git a/hdl/top.sv b/hdl/top.sv
index ba6311f..f4a64f9 100644
--- a/hdl/top.sv
+++ b/hdl/top.sv
@@ -297,48 +297,120 @@ module top
297 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}; 297 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};
298 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]}; 298 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]};
299 299
300 core cpu 300 generate
301 ( .clk(internal_clock) 301 genvar i;
302 , .reset(internal_reset) 302 for (i = 0; i < `NUM_PDPS; ++i) begin : core
303 303
304 , .switch_df(switch_df) 304 bit [11:0] local_led_pc;
305 , .switch_if(switch_if) 305 bit [11:0] local_led_memaddr;
306 , .switch_sr(switch_sr) 306 bit [11:0] local_led_memdata;
307 , .switch_start(switch_start) 307 bit [11:0] local_led_acc;
308 , .switch_load_add(switch_load_add) 308 bit [11:0] local_led_mq;
309 , .switch_dep(switch_dep) 309 bit local_led_and;
310 , .switch_exam(switch_exam) 310 bit local_led_tad;
311 , .switch_cont(switch_cont) 311 bit local_led_isz;
312 , .switch_stop(switch_stop) 312 bit local_led_dca;
313 , .switch_sing_step(switch_sing_step) 313 bit local_led_jms;
314 , .switch_sing_inst(switch_sing_inst) 314 bit local_led_jmp;
315 bit local_led_iot;
316 bit local_led_opr;
317 bit local_led_fetch;
318 bit local_led_execute;
319 bit local_led_defer;
320 bit local_led_word_count;
321 bit local_led_current_address;
322 bit local_led_break;
323 bit local_led_ion;
324 bit local_led_pause;
325 bit local_led_run;
326 bit [4:0] local_led_step_counter;
327 bit [2:0] local_led_df;
328 bit [2:0] local_led_if;
329 bit local_led_link;
315 330
316 , .led_pc(led_pc) 331 core
317 , .led_memaddr(led_memaddr) 332 #( .JTAG_INSTANCE(1+i)
318 , .led_memdata(led_memdata) 333 ) cpu
319 , .led_acc(led_acc) 334 ( .clk(internal_clock)
320 , .led_mq(led_mq) 335 , .reset(internal_reset)
321 , .led_and(led_and) 336
322 , .led_tad(led_tad) 337 , .mem_command_ready(pdp_command_ready[i])
323 , .led_isz(led_isz) 338 , .mem_command_valid(pdp_command_valid[i])
324 , .led_dca(led_dca) 339 , .mem_command(pdp_command_data[i])
325 , .led_jms(led_jms) 340
326 , .led_jmp(led_jmp) 341 , .mem_read_ready(pdp_response_ready[i])
327 , .led_iot(led_iot) 342 , .mem_read_valid(pdp_response_valid[i])
328 , .led_opr(led_opr) 343 , .mem_read(pdp_response_data[i])
329 , .led_fetch(led_fetch) 344
330 , .led_execute(led_execute) 345 , .switch_df(switch_df)
331 , .led_defer(led_defer) 346 , .switch_if(switch_if)
332 , .led_word_count(led_word_count) 347 , .switch_sr(switch_sr)
333 , .led_current_address(led_current_address) 348 , .switch_start(switch_start)
334 , .led_break(led_break) 349 , .switch_load_add(switch_load_add)
335 , .led_ion(led_ion) 350 , .switch_dep(switch_dep)
336 , .led_pause(led_pause) 351 , .switch_exam(switch_exam)
337 , .led_run(led_run) 352 , .switch_cont(switch_cont)
338 , .led_step_counter(led_step_counter) 353 , .switch_stop(switch_stop)
339 , .led_df(led_df) 354 , .switch_sing_step(switch_sing_step)
340 , .led_if(led_if) 355 , .switch_sing_inst(switch_sing_inst)
341 , .led_link(led_link) 356
342 ); 357 , .led_pc(local_led_pc)
358 , .led_memaddr(local_led_memaddr)
359 , .led_memdata(local_led_memdata)
360 , .led_acc(local_led_acc)
361 , .led_mq(local_led_mq)
362 , .led_and(local_led_and)
363 , .led_tad(local_led_tad)
364 , .led_isz(local_led_isz)
365 , .led_dca(local_led_dca)
366 , .led_jms(local_led_jms)
367 , .led_jmp(local_led_jmp)
368 , .led_iot(local_led_iot)
369 , .led_opr(local_led_opr)
370 , .led_fetch(local_led_fetch)
371 , .led_execute(local_led_execute)
372 , .led_defer(local_led_defer)
373 , .led_word_count(local_led_word_count)
374 , .led_current_address(local_led_current_address)
375 , .led_break(local_led_break)
376 , .led_ion(local_led_ion)
377 , .led_pause(local_led_pause)
378 , .led_run(local_led_run)
379 , .led_step_counter(local_led_step_counter)
380 , .led_df(local_led_df)
381 , .led_if(local_led_if)
382 , .led_link(local_led_link)
383 );
384
385 end
386
387 endgenerate
388
389 assign led_pc = core[0].local_led_pc;
390 assign led_memaddr = core[0].local_led_memaddr;
391 assign led_memdata = core[0].local_led_memdata;
392 assign led_acc = core[0].local_led_acc;
393 assign led_mq = core[0].local_led_mq;
394 assign led_and = core[0].local_led_and;
395 assign led_tad = core[0].local_led_tad;
396 assign led_isz = core[0].local_led_isz;
397 assign led_dca = core[0].local_led_dca;
398 assign led_jms = core[0].local_led_jms;
399 assign led_jmp = core[0].local_led_jmp;
400 assign led_iot = core[0].local_led_iot;
401 assign led_opr = core[0].local_led_opr;
402 assign led_fetch = core[0].local_led_fetch;
403 assign led_execute = core[0].local_led_execute;
404 assign led_defer = core[0].local_led_defer;
405 assign led_word_count = core[0].local_led_word_count;
406 assign led_current_address = core[0].local_led_current_address;
407 assign led_break = core[0].local_led_break;
408 assign led_ion = core[0].local_led_ion;
409 assign led_pause = core[0].local_led_pause;
410 assign led_run = core[0].local_led_run;
411 assign led_step_counter = core[0].local_led_step_counter;
412 assign led_df = core[0].local_led_df;
413 assign led_if = core[0].local_led_if;
414 assign led_link = core[0].local_led_link;
343 415
344endmodule 416endmodule