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

Subversion Repositories amber

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /amber/trunk/hw/vlog/system
    from Rev 10 to Rev 11
    Reverse comparison

Rev 10 → Rev 11

/register_addresses.v
53,6 → 53,7
localparam AMBER_TEST_UART_STATUS = 16'h0014;
localparam AMBER_TEST_UART_TXD = 16'h0018;
localparam AMBER_TEST_SIM_CTRL = 16'h001c;
localparam AMBER_TEST_MEM_CTRL = 16'h0020;
 
localparam AMBER_TEST_RANDOM_NUM = 16'h0100;
localparam AMBER_TEST_RANDOM_NUM00 = 16'h0100;
/main_mem.v
46,7 → 46,7
module main_mem
(
input i_clk,
 
input i_mem_ctrl, // 0=128MB, 1=32MB
// Wishbone Bus
input [31:0] i_wb_adr,
input [3:0] i_wb_sel,
96,7 → 96,9
i_wb_adr[3:2] == 2'd2 ? { 4'hf, ~i_wb_sel, 8'hff } :
{ ~i_wb_sel, 12'hfff } ;
wr_data <= {4{i_wb_dat}};
addr_d1 <= i_wb_adr[29:2];
 
// Wrap the address at 32 MB, or full width
addr_d1 <= i_mem_ctrl ? {5'd0, i_wb_adr[24:2]} : i_wb_adr[29:2];
if ( wr_en )
ram [addr_d1[27:2]] <= masked_wdata;
/system.v
121,6 → 121,7
`endif
 
wire phy_init_done;
wire test_mem_ctrl;
 
// ======================================
// Xilinx Virtex-6 DDR3 Controller connections
382,6 → 383,7
.o_irq ( test_reg_irq ),
.o_firq ( test_reg_firq ),
.o_mem_ctrl ( test_mem_ctrl ),
.i_wb_adr ( s_wb_adr [5] ),
.i_wb_sel ( s_wb_sel [5] ),
.i_wb_we ( s_wb_we [5] ),
458,6 → 460,7
main_mem u_main_mem (
.i_clk ( sys_clk ),
.i_mem_ctrl ( test_mem_ctrl ),
.i_wb_adr ( s_wb_adr [2] ),
.i_wb_sel ( s_wb_sel [2] ),
.i_wb_we ( s_wb_we [2] ),
491,6 → 494,7
.i_rd_data ( c3_p0_rd_data ),
.i_rd_empty ( c3_p0_rd_empty ),
.i_mem_ctrl ( test_mem_ctrl ),
.i_wb_adr ( s_wb_adr [2] ),
.i_wb_sel ( s_wb_sel [2] ),
.i_wb_we ( s_wb_we [2] ),
594,6 → 598,7
.i_phy_init_done ( phy_init_done1 ),
.o_phy_init_done ( phy_init_done ), // delayed version
.i_mem_ctrl ( test_mem_ctrl ),
.i_wb_adr ( s_wb_adr [2] ),
.i_wb_sel ( s_wb_sel [2] ),
.i_wb_we ( s_wb_we [2] ),
/test_module.v
46,7 → 46,7
 
output o_irq,
output o_firq,
 
output o_mem_ctrl, // 0=128MB, 1=32MB
input [31:0] i_wb_adr,
input [3:0] i_wb_sel,
input i_wb_we,
74,7 → 74,8
reg [7:0] tb_uart_txd_reg = 'd0;
//synopsys translate_on
 
reg [1:0] sim_ctrl_reg = 'd0; // 1,2 = simulation, 0 = fpga
reg [2:0] sim_ctrl_reg = 'd0; // 0 = fpga, other values for simulations
reg mem_ctrl_reg = 'd0; // 0 = 128MB, 1 = 32MB main memory
reg [31:0] test_status_reg = 'd0;
reg test_status_set = 'd0; // used to terminate tests
91,11 → 92,11
always @( posedge i_clk )
wb_start_read_d1 <= wb_start_read;
 
assign o_wb_ack = i_wb_stb && ( wb_start_write || wb_start_read_d1 );
assign o_wb_err = 1'd0;
assign o_wb_dat = wb_rdata;
assign o_wb_ack = i_wb_stb && ( wb_start_write || wb_start_read_d1 );
assign o_wb_err = 1'd0;
assign o_wb_dat = wb_rdata;
assign o_mem_ctrl = mem_ctrl_reg;
 
 
// ========================================================
// Register Reads
// ========================================================
103,7 → 104,7
if ( wb_start_read )
case ( i_wb_adr[15:0] )
AMBER_TEST_STATUS: wb_rdata <= test_status_reg;
AMBER_TEST_FIRQ_TIMER: wb_rdata <= {24'd0, firq_timer};
AMBER_TEST_FIRQ_TIMER: wb_rdata <= {24'd0, firq_timer};
AMBER_TEST_IRQ_TIMER: wb_rdata <= {24'd0, irq_timer};
AMBER_TEST_RANDOM_NUM: wb_rdata <= {24'd0, random_num};
133,7 → 134,8
AMBER_TEST_UART_TXD: wb_rdata <= {24'd0, tb_uart_txd_reg};
//synopsys translate_on
AMBER_TEST_SIM_CTRL: wb_rdata <= {30'd0, sim_ctrl_reg};
AMBER_TEST_SIM_CTRL: wb_rdata <= {29'd0, sim_ctrl_reg};
AMBER_TEST_MEM_CTRL: wb_rdata <= {31'd0, mem_ctrl_reg};
default: wb_rdata <= 32'haabbccdd;
endcase
154,7 → 156,7
always @( posedge i_clk )
begin
// Value reads as 1 in simulation, and zero in the FPGA
sim_ctrl_reg <= 2'd `AMBER_SIM_CTRL ;
sim_ctrl_reg <= 3'd `AMBER_SIM_CTRL ;
end
//synopsys translate_on
 
231,6 → 233,14
 
 
// ======================================
// Memory Configuration Register Write
// ======================================
always @( posedge i_clk )
if ( wb_start_write && i_wb_adr[15:0] == AMBER_TEST_MEM_CTRL )
mem_ctrl_reg <= i_wb_dat[0];
 
 
// ======================================
// Test UART registers
// ======================================
// These control the testbench UART, not the real
/wb_xs6_ddr3_bridge.v
47,6 → 47,8
(
input i_clk,
 
input i_mem_ctrl, // 0=128MB, 1=32MB
 
// Wishbone Bus
input [31:0] i_wb_adr,
input [3:0] i_wb_sel,
77,7 → 79,7
reg start_write_d1;
reg start_read_d1;
reg start_read_hold = 'd0;
reg [31:0] wb_adr_d1;
reg [29:0] wb_adr_d1;
wire ddr3_busy;
reg read_ack = 'd0;
reg read_ready = 1'd1;
130,7 → 132,7
start_write_d1 <= start_write;
start_read_d1 <= start_read;
wb_adr_d1 <= i_wb_adr;
wb_adr_d1 <= i_mem_ctrl ? {5'd0, i_wb_adr[24:0]} : i_wb_adr[29:0];
if ( start_read )
start_read_hold <= 1'd1;
/wb_xv6_ddr3_bridge.v
48,7 → 48,9
input i_sys_clk,
input i_ddr_clk,
 
// MBus Ports
input i_mem_ctrl, // 0=128MB, 1=32MB
 
// Wishbone Ports
input [31:0] i_wb_adr,
input [3:0] i_wb_sel,
input i_wb_we,
125,7 → 127,7
 
assign cmd_en = start_write || start_read;
assign cmd_instr = start_write ? 3'd0 : 3'd1;
assign cmd_addr = i_wb_adr[26:0];
assign cmd_addr = i_mem_ctrl ? {2'd0, i_wb_adr[24:0]} : i_wb_adr[26:0];
 
assign ddr_rd_valid = i_ddr_rd_valid && !ddr_rd_valid_r;
assign ddr_rd_data = ddr_addr2_r ? i_ddr_rd_data[63:32] : i_ddr_rd_data[31:00];

powered by: WebSVN 2.1.0

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