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 9 to Rev 10
    Reverse comparison

Rev 9 → Rev 10

/rtl/xlate5to7.v
34,20 → 34,20
output reg[0:6] out_7
);
 
always @(*) begin
case (in_5)
`drum2of5_0 : out_7 = `biq_0;
`drum2of5_1 : out_7 = `biq_1;
`drum2of5_2 : out_7 = `biq_2;
`drum2of5_3 : out_7 = `biq_3;
`drum2of5_4 : out_7 = `biq_4;
`drum2of5_5 : out_7 = `biq_5;
`drum2of5_6 : out_7 = `biq_6;
`drum2of5_7 : out_7 = `biq_7;
`drum2of5_8 : out_7 = `biq_8;
`drum2of5_9 : out_7 = `biq_9;
default : out_7 = `biq_blank; // invalid codes become all zeroes
endcase;
end;
always @(*) begin
case (in_5)
`drum2of5_0 : out_7 = `biq_0;
`drum2of5_1 : out_7 = `biq_1;
`drum2of5_2 : out_7 = `biq_2;
`drum2of5_3 : out_7 = `biq_3;
`drum2of5_4 : out_7 = `biq_4;
`drum2of5_5 : out_7 = `biq_5;
`drum2of5_6 : out_7 = `biq_6;
`drum2of5_7 : out_7 = `biq_7;
`drum2of5_8 : out_7 = `biq_8;
`drum2of5_9 : out_7 = `biq_9;
default : out_7 = `biq_blank; // invalid codes become all zeroes
endcase;
end;
 
endmodule
/rtl/xlate7to5.v
34,19 → 34,19
output reg[0:4] out_5
);
 
always @(*) begin
case (in_7)
`biq_0 : out_5 = `drum2of5_0;
`biq_1 : out_5 = `drum2of5_1;
`biq_2 : out_5 = `drum2of5_2;
`biq_3 : out_5 = `drum2of5_3;
`biq_4 : out_5 = `drum2of5_4;
`biq_5 : out_5 = `drum2of5_5;
`biq_6 : out_5 = `drum2of5_6;
`biq_7 : out_5 = `drum2of5_7;
`biq_8 : out_5 = `drum2of5_8;
`biq_9 : out_5 = `drum2of5_9;
default : out_5 = `drum2of5_blank; // invalid codes become zeroes
endcase;
end;
always @(*) begin
case (in_7)
`biq_0 : out_5 = `drum2of5_0;
`biq_1 : out_5 = `drum2of5_1;
`biq_2 : out_5 = `drum2of5_2;
`biq_3 : out_5 = `drum2of5_3;
`biq_4 : out_5 = `drum2of5_4;
`biq_5 : out_5 = `drum2of5_5;
`biq_6 : out_5 = `drum2of5_6;
`biq_7 : out_5 = `drum2of5_7;
`biq_8 : out_5 = `drum2of5_8;
`biq_9 : out_5 = `drum2of5_9;
default : out_5 = `drum2of5_blank; // invalid codes become zeroes
endcase;
end;
endmodule
/rtl/operator_ctl.v
43,7 → 43,7
output reg[0:6] data_out, addr_out,
output reg console_to_addr,
output reg[0:14] gs_ram_addr,
output reg read_gs, write_gs,
output reg read_gs, write_gs,
output reg pgm_start, pgm_stop, err_reset, err_sense_reset,
output run_control, half_or_pgm_stop, ri_storage, ro_storage,
storage_control,
77,7 → 77,7
reg [0:6] gs_addr_th, gs_addr_h, gs_addr_t, gs_addr_u;
wire [0:14] gs_band_addr;
wire [0:9] gs_word_offset;
wire [0:9] gs_word_offset;
ram_band_addr rba(gs_addr_th, gs_addr_h, gs_addr_t, gs_band_addr);
ram_word_offset rwo(gs_addr_t, gs_addr_u, gs_word_offset);
wire [0:14] gs_word_addr = gs_band_addr + gs_word_offset;
111,7 → 111,7
`define state_read_gs_2 6'd32
`define state_read_gs_3 6'd33
`define state_read_gs_4 6'd34
`define state_read_gs_5 6'd35
`define state_read_gs_5 6'd35
//-----------------------------------------------------------------------------
// Operator console state machine
159,7 → 159,7
gs_ram_addr <= 15'd0;
read_gs <= 0;
write_gs <= 0;
write_gs <= 0;
end else begin
case (state)
`state_idle: begin
397,44 → 397,44
state <= `state_read_gs_1;
end
end
 
`cmd_write_gs: begin
end
end
`cmd_read_acc: begin
end
end
`cmd_read_dist: begin
end
end
`cmd_read_prog: begin
end
// 0 : Ignore if not in manual
// Clear gs_ram_addr
// 1 : Synchronize with d10
// Turn on console_write_gs
// 2 : Put a digit:
// dx: blank
// d0: minus
// d1-d10: zero
// gs_ram_addr++
end
// 0 : Ignore if not in manual
// Clear gs_ram_addr
// 1 : Synchronize with d10
// Turn on console_write_gs
// 2 : Put a digit:
// dx: blank
// d0: minus
// d1-d10: zero
// gs_ram_addr++
`cmd_clear_gs: begin
end
end
`cmd_load_gs: begin
end
end
`cmd_dump_gs: begin
end
end
`cmd_power_on_reset: begin
end
end
`cmd_reset_console: begin
end
end
endcase;
end
620,12 → 620,12
gs_ram_addr <= gs_word_addr;
state <= `state_read_gs_4;
end
`state_read_gs_4: begin
state <= `state_read_gs_5;
end
`state_read_gs_4: begin
state <= `state_read_gs_5;
end
endcase;
end
end;
/rtl/gen_store.v
8,9 → 8,9
// Description: General storage.
//
// Additional Comments: Drum storage is implemented as an array of 24000 5-bit
// digits. An array address is formed by decoding the static portion of the
// bi-quinary address into an origin (a multiple of 600), then adding the
// dynamic portion of the address (range 0..599).
// digits. An array address is formed by decoding the static portion of the
// bi-quinary address into an origin (a multiple of 600), then adding the
// dynamic portion of the address (range 0..599).
//
// Copyright (c) 2015 Robert Abeles
//
33,43 → 33,43
`include "defines.v"
 
module gen_store (
input rst,
input ap, dp,
input rst,
input ap, dp,
input write_gate,
input [0:6] addr_th, addr_h, addr_t,
input [0:9] dynamic_addr,
input [0:6] addr_th, addr_h, addr_t,
input [0:9] dynamic_addr,
input [0:4] gs_in,
input [0:14] console_ram_addr,
input console_read_gs, console_write_gs,
input [0:14] console_ram_addr,
input console_read_gs, console_write_gs,
output reg[0:4] gs_out,
output double_write, no_write
);
 
reg [0:4] gs_mem [0:32767]; // Rounded size up from 24000 to next 2^n.
reg [0:4] gs_mem [0:32767]; // Rounded size up from 24000 to next 2^n.
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
wire [0:14] band_addr, gs_addr, gs_addr_early;
ram_band_addr rba(addr_th, addr_h, addr_t, band_addr);
wire console_access = console_read_gs | console_write_gs;
assign gs_addr = console_access? console_ram_addr : (band_addr + dynamic_addr);
assign gs_addr_early = (band_addr + ((dynamic_addr + 1) % 600)) % 32768;
assign double_write = 0;
assign no_write = 0;
always @(posedge ap) begin
if (rst) begin
gs_out <= `biq_blank;
end else begin
gs_out <= gs_mem[gs_addr];
end
end;
always @(posedge dp) begin
if (write_gate)
gs_mem[gs_addr_early] <= gs_in;
end;
wire [0:14] band_addr, gs_addr, gs_addr_early;
ram_band_addr rba(addr_th, addr_h, addr_t, band_addr);
wire console_access = console_read_gs | console_write_gs;
assign gs_addr = console_access? console_ram_addr : (band_addr + dynamic_addr);
assign gs_addr_early = (band_addr + ((dynamic_addr + 1) % 600)) % 32768;
assign double_write = 0;
assign no_write = 0;
always @(posedge ap) begin
if (rst) begin
gs_out <= `biq_blank;
end else begin
gs_out <= gs_mem[gs_addr];
end
end;
always @(posedge dp) begin
if (write_gate)
gs_mem[gs_addr_early] <= gs_in;
end;
endmodule

powered by: WebSVN 2.1.0

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