Line 70... |
Line 70... |
output write_mem_strb_h, // Strobe for writing high data bye
|
output write_mem_strb_h, // Strobe for writing high data bye
|
output xg_sw_irq, // Xgate Software interrupt
|
output xg_sw_irq, // Xgate Software interrupt
|
output [MAX_CHANNEL:0] xgif, // XGATE Interrupt Flag
|
output [MAX_CHANNEL:0] xgif, // XGATE Interrupt Flag
|
input [MAX_CHANNEL:0] chan_req_i, // XGATE Interrupt request
|
input [MAX_CHANNEL:0] chan_req_i, // XGATE Interrupt request
|
input risc_clk, // Clock for RISC core
|
input risc_clk, // Clock for RISC core
|
|
input debug_mode_i, // Force RISC core into debug mode
|
|
input secure_mode_i, // Limit host asscess to Xgate RISC registers
|
input scantestmode // Chip in in scan test mode
|
input scantestmode // Chip in in scan test mode
|
);
|
);
|
|
|
wire zero_flag;
|
wire zero_flag;
|
wire negative_flag;
|
wire negative_flag;
|
Line 132... |
Line 134... |
wire xgss; // XGATE Single Step
|
wire xgss; // XGATE Single Step
|
wire xgsweif_c; // Clear XGATE Software Error Interrupt FLag
|
wire xgsweif_c; // Clear XGATE Software Error Interrupt FLag
|
wire xgie; // XGATE Interrupt Enable
|
wire xgie; // XGATE Interrupt Enable
|
wire [ 6:0] int_req; // Encoded interrupt request
|
wire [ 6:0] int_req; // Encoded interrupt request
|
wire [ 6:0] xgchid; // Channel actively being processed
|
wire [ 6:0] xgchid; // Channel actively being processed
|
|
wire [127:0] xgif_status; // Status bits of interrupt output flags that have been set
|
wire [15:1] xgvbr; // XGATE vector Base Address Register
|
wire [15:1] xgvbr; // XGATE vector Base Address Register
|
wire brk_irq_ena; // Enable BRK instruction to generate interrupt
|
wire brk_irq_ena; // Enable BRK instruction to generate interrupt
|
|
|
wire [15:0] xgate_address; //
|
wire [15:0] xgate_address; //
|
wire [15:0] write_mem_data; //
|
wire [15:0] write_mem_data; //
|
Line 147... |
Line 150... |
wire [ 7:0] host_semap; // Semaphore status for host
|
wire [ 7:0] host_semap; // Semaphore status for host
|
// wire [15:0] write_mem_data;
|
// wire [15:0] write_mem_data;
|
// wire [15:0] read_mem_data;
|
// wire [15:0] read_mem_data;
|
// wire [15:0] perif_data;
|
// wire [15:0] perif_data;
|
|
|
|
assign xgif = xgif_status[MAX_CHANNEL:0];
|
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
// Wishbone Slave Bus interface
|
// Wishbone Slave Bus interface
|
xgate_wbs_bus #(.ARST_LVL(ARST_LVL),
|
xgate_wbs_bus #(.ARST_LVL(ARST_LVL),
|
.SINGLE_CYCLE(SINGLE_CYCLE))
|
.SINGLE_CYCLE(SINGLE_CYCLE))
|
wishbone_s(
|
wishbone_s(
|
Line 207... |
Line 210... |
xgate_address, // XGPC
|
xgate_address, // XGPC
|
{12'h000, negative_flag, zero_flag, overflow_flag, carry_flag}, // XGCCR
|
{12'h000, negative_flag, zero_flag, overflow_flag, carry_flag}, // XGCCR
|
16'b0, // Reserved
|
16'b0, // Reserved
|
{8'h00, host_semap}, // XGSEM
|
{8'h00, host_semap}, // XGSEM
|
{8'h00, xgswt}, // XGSWT
|
{8'h00, xgswt}, // XGSWT
|
xgif[ 15: 0], // XGIF_0
|
xgif_status[ 15: 0], // XGIF_0
|
xgif[ 31: 16], // XGIF_1
|
xgif_status[ 31: 16], // XGIF_1
|
xgif[ 47: 32], // XGIF_2
|
xgif_status[ 47: 32], // XGIF_2
|
xgif[ 63: 48], // XGIF_3
|
xgif_status[ 63: 48], // XGIF_3
|
xgif[ 79: 64], // XGIF_4
|
xgif_status[ 79: 64], // XGIF_4
|
xgif[ 95: 80], // XGIF_5
|
xgif_status[ 95: 80], // XGIF_5
|
xgif[111: 96], // XGIF_6
|
xgif_status[111: 96], // XGIF_6
|
xgif[127:112], // XGIF_7
|
xgif_status[127:112], // XGIF_7
|
{xgvbr[15:1], 1'b0}, // XGVBR
|
{xgvbr[15:1], 1'b0}, // XGVBR
|
xgisp30, // Reserved
|
xgisp30, // Reserved
|
xgisp74, // Reserved
|
xgisp74, // Reserved
|
{8'b0, 1'b0, xgchid}, // XGCHID
|
{8'b0, 1'b0, xgchid}, // XGCHID
|
{8'b0, xge, xgfrz, debug_active, 1'b0, 1'b0, brk_irq_ena, xg_sw_irq, xgie} // XGMCTL
|
{8'b0, xge, xgfrz, debug_active, 1'b0, 1'b0, brk_irq_ena, xg_sw_irq, xgie} // XGMCTL
|
Line 292... |
Line 295... |
.xgr3( xgr3 ),
|
.xgr3( xgr3 ),
|
.xgr4( xgr4 ),
|
.xgr4( xgr4 ),
|
.xgr5( xgr5 ),
|
.xgr5( xgr5 ),
|
.xgr6( xgr6 ),
|
.xgr6( xgr6 ),
|
.xgr7( xgr7 ),
|
.xgr7( xgr7 ),
|
.xgif( xgif ),
|
.xgif_status( xgif_status ),
|
.debug_active( debug_active ),
|
.debug_active( debug_active ),
|
.xg_sw_irq( xg_sw_irq ),
|
.xg_sw_irq( xg_sw_irq ),
|
|
|
// inputs
|
// inputs
|
.risc_clk( risc_clk ),
|
.risc_clk( risc_clk ),
|
Line 306... |
Line 309... |
.mem_req_ack( mem_req_ack ),
|
.mem_req_ack( mem_req_ack ),
|
.xge( xge ),
|
.xge( xge ),
|
.xgfrz( xgfrz ),
|
.xgfrz( xgfrz ),
|
.xgdbg_set( xgdbg_set ),
|
.xgdbg_set( xgdbg_set ),
|
.xgdbg_clear( xgdbg_clear ),
|
.xgdbg_clear( xgdbg_clear ),
|
|
.debug_mode_i(debug_mode_i),
|
.xgss( xgss ),
|
.xgss( xgss ),
|
.xgvbr( xgvbr ),
|
.xgvbr( xgvbr ),
|
.int_req( int_req ),
|
.int_req( int_req ),
|
.xgie( xgie ),
|
.xgie( xgie ),
|
.brk_irq_ena( brk_irq_ena ),
|
.brk_irq_ena( brk_irq_ena ),
|