OpenCores
URL https://opencores.org/ocsvn/i650/i650/trunk

Subversion Repositories i650

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /i650/trunk
    from Rev 12 to Rev 13
    Reverse comparison

Rev 12 → Rev 13

/rtl/operator_ctl.v
121,11 → 121,17
`define state_read_gs_4 6'd33
`define state_read_gs_5 6'd34
`define state_read_gs_6 6'd35
`define state_write_gs_1 6'd36
`define state_write_gs_2 6'd37
`define state_write_gs_3 6'd38
`define state_write_gs_4 6'd39
`define state_write_gs_5 6'd40
`define state_clear_drum_1 6'd41
`define state_clear_drum_2 6'd42
`define state_clear_drum_3 6'd43
`define state_load_gs_1 6'd44
`define state_load_gs_1 6'd45
`define state_clear_drum_1 6'd50
`define state_clear_drum_2 6'd51
`define state_clear_drum_3 6'd52
always @(posedge clk) begin
if (rst) begin
console_to_addr <= 0;
199,7 → 205,6
state <= `state_reset_console_1;
end else if (do_clear_drum) begin
do_clear_drum <= 0;
gs_ram_addr <= 15'd0;
state <= `state_clear_drum_1;
end else if (do_pgm_reset) begin
do_pgm_reset <= 0;
429,11 → 434,28
end
end
 
// Write word to general storage:
// --> 4 digits address, little-endian
// <-- dx digit, sign digit, d1-d10
// 0: Ignore if not in manual
// 1: Readin low-order addr digit
// 2: Readin remaining addr digits
// 3: Synchronize with d10
// digit_ready <- 1
// 4: Readin first digit
// 5: Write digit
// Readin next digit
// 6: Cleanup
`cmd_write_gs: begin
if (ctl_sw_manual) begin
busy <= 1;
state <= `state_write_gs_1;
end
end
end
`cmd_read_acc: begin
end
`cmd_read_dist: begin
459,6 → 481,11
end
`cmd_load_gs: begin
if (ctl_sw_manual) begin
busy <= 1;
state <= `state_load_gs_1;
digit_ready <= 1;
end
end
`cmd_dump_gs: begin
465,9 → 492,13
end
`cmd_power_on_reset: begin
busy <= 1;
do_power_on_reset <= 1;
end
`cmd_reset_console: begin
busy <= 1;
do_reset_console <= 1;
end
`cmd_hard_reset: begin
690,6 → 721,60
state <= `state_idle;
end
// Write word to general storage:
// --> 4 digits address, little-endian
// <-- dx digit, sign digit, d1-d10
// 0: Ignore if not in manual
// 1: Readin low-order addr digit
// 2: Readin remaining addr digits
// 3: Synchronize with d10
// digit_ready <- 1
// 4: Readin and write digit
// 5: Write digit
// Readin next digit
// 6: Cleanup
`state_write_gs_1: begin
if (dx) begin
state <= `state_write_gs_2;
digit_ready <= 1;
gs_addr_u <= cmd_digit_in;
end
end
`state_write_gs_2: begin
if (d0) gs_addr_t <= cmd_digit_in;
else if (d1) gs_addr_h <= cmd_digit_in;
else if (d2) begin
gs_addr_th <= cmd_digit_in;
state <= `state_write_gs_3;
digit_ready <= 0;
end
end
`state_write_gs_3: begin
if (d10) begin
gs_ram_addr <= gs_word_addr;
digit_ready <= 1;
state <= `state_write_gs_4;
end
end
`state_write_gs_4: begin
write_gs <= 1;
console_out <= cmd_digit_in;
gs_ram_addr <= gs_ram_addr + 1;
if (d10) begin
digit_ready <= 0;
state <= `state_write_gs_5;
end
end
`state_write_gs_5: begin
write_gs <= 0;
state <= `state_idle;
end
// 0 : Ignore if not in manual
// Clear gs_ram_addr
// 1 : Synchronize with d10
701,17 → 786,18
// gs_ram_addr++
`state_clear_drum_1: begin
if (d10) begin
console_out <= `biq_blank;
gs_ram_addr <= 15'd0;
write_gs <= 1;
state <= `state_clear_drum_2;
end
end
`state_clear_drum_2: begin
write_gs <= 1;
console_out <= dx? `biq_blank
: d0? `biq_minus
: `biq_0;
if (write_gs)
gs_ram_addr <= gs_ram_addr + 1;
gs_ram_addr <= gs_ram_addr + 1;
if (gs_ram_addr == 15'd23999) begin
write_gs <= 0;
state <= `state_idle;
718,6 → 804,23
end
end
`state_load_gs_1: begin
gs_ram_addr <= 15'd0;
write_gs <= 1;
console_out <= cmd_digit_in;
state <= `state_load_gs_2;
end
`state_load_gs_2: begin
gs_ram_addr <= gs_ram_addr + 1;
console_out <= cmd_digit_in;
if (gs_ram_addr == 15d'23999) begin
write_gs <= 0;
digit_ready <= 0;
state <= `state_idle;
end
end
endcase;
end
end;
/rtl/toplev.v
34,27 → 34,27
input clk,
input rst,
 
input [0:6] cmd_digit_in, io_buffer_in,
input [0:5] command,
input [0:6] cmd_digit_in, io_buffer_in,
input [0:5] command,
 
output [0:6] cmd_digit_out,
output busy, digit_ready, punch_card, read_card, card_digit_ready,
output [0:6] cmd_digit_out,
output busy, digit_ready, punch_card, read_card, card_digit_ready,
output synch
);
wire ap, bp, cp, dp;
wire dx, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10,
d1_d5, d5_dx, d5_d10, d1_dx, d5_d9, d10_d1_d5,
dxl, dxu, d0l, d0u, d1l, d1u, d2l, d10u;
wire w0, w1, w2, w3, w4, w5, w6, w7, w8, w9,
wl, wu, ewl;
wire s0, s1, s2, s3, s4, hp;
wire [0:9] digit_idx;
wire [0:3] early_idx, ontime_idx;
wire ap, bp, cp, dp;
wire dx, d0, d1, d2, d3, d4, d5, d6, d7, d8, d9, d10,
d1_d5, d5_dx, d5_d10, d1_dx, d5_d9, d10_d1_d5,
dxl, dxu, d0l, d0u, d1l, d1u, d2l, d10u;
wire w0, w1, w2, w3, w4, w5, w6, w7, w8, w9,
wl, wu, ewl;
wire s0, s1, s2, s3, s4, hp;
wire [0:9] digit_idx;
wire [0:3] early_idx, ontime_idx;
assign synch = bp;
timing tm (
timing tm (
.clk(clk),
.rst(rst),
.ap(ap),
110,34 → 110,34
.early_idx(early_idx),
.ontime_idx(ontime_idx)
);
//-----------------------------------------------------------------------------
// General storage
//-----------------------------------------------------------------------------
wire [0:4] gs_out;
wire gs_double_write, gs_no_write;
wire [0:4] gs_out;
wire gs_double_write, gs_no_write;
//-----------------------------------------------------------------------------
// Operator controls
//-----------------------------------------------------------------------------
wire [0:6] oc_data_out, oc_addr_out, oc_console_out;
wire oc_console_to_addr;
wire [0:14] oc_gs_ram_addr;
wire oc_read_gs, oc_write_gs;
wire oc_pgm_start, oc_pgm_stop, oc_err_reset, oc_err_sense_reset;
wire oc_run_control, oc_half_or_pgm_stop, oc_ri_storage, oc_ro_storage,
oc_storage_control;
wire oc_man_pgm_reset, oc_man_acc_reset, oc_set_8000, oc_reset_8000,
wire [0:6] oc_data_out, oc_addr_out, oc_console_out;
wire oc_console_to_addr;
wire [0:14] oc_gs_ram_addr;
wire oc_read_gs, oc_write_gs;
wire oc_pgm_start, oc_pgm_stop, oc_err_reset, oc_err_sense_reset;
wire oc_run_control, oc_half_or_pgm_stop, oc_ri_storage, oc_ro_storage,
oc_storage_control;
wire oc_man_pgm_reset, oc_man_acc_reset, oc_set_8000, oc_reset_8000,
oc_hard_reset;
//-----------------------------------------------------------------------------
// Translators
//-----------------------------------------------------------------------------
wire tr_gs_write;
wire [0:4] tr_gs_in;
wire [0:6] tr_select_out;
wire tr_gs_write;
wire [0:4] tr_gs_in;
wire [0:6] tr_select_out;
 
gen_store gs (
gen_store gs (
.rst(oc_hard_reset),
.ap(ap),
.dp(dp),
149,13 → 149,13
.gs_in(tr_gs_in),
.console_ram_addr(oc_gs_ram_addr),
.console_read_gs(oc_read_gs),
.console_write_gs(oc_write_gs),
.console_write_gs(oc_write_gs),
.gs_out(gs_out),
.double_write(gs_double_write),
.no_write(gs_no_write)
);
 
operator_ctl oc (
operator_ctl oc (
.rst(rst),
.clk(clk),
.ap(ap),
182,8 → 182,8
.console_out(oc_console_out),
.console_to_addr(oc_console_to_addr),
.gs_ram_addr(oc_gs_ram_addr),
.read_gs(oc_read_gs),
.write_gs(oc_write_gs),
.read_gs(oc_read_gs),
.write_gs(oc_write_gs),
.pgm_start(oc_pgm_start),
.pgm_stop(oc_pgm_stop),
.err_reset(oc_err_reset),
206,7 → 206,7
.card_digit_ready(card_digit_ready)
);
 
translators tr (
translators tr (
.dist_early_out(`biq_blank),
.bs_out(`biq_blank),
.console_out(oc_console_out),

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.