Line 41... |
Line 41... |
module xgate_regs #(parameter ARST_LVL = 1'b0, // asynchronous reset level
|
module xgate_regs #(parameter ARST_LVL = 1'b0, // asynchronous reset level
|
parameter MAX_CHANNEL = 127) // Max XGATE Interrupt Channel Number
|
parameter MAX_CHANNEL = 127) // Max XGATE Interrupt Channel Number
|
(
|
(
|
output reg xge, // XGATE Module Enable
|
output reg xge, // XGATE Module Enable
|
output reg xgfrz, // Stop XGATE in Freeze Mode
|
output reg xgfrz, // Stop XGATE in Freeze Mode
|
output reg xgdbg, // XGATE Debug Mode
|
output reg xgdbg_set, // Enter XGATE Debug Mode
|
|
output reg xgdbg_clear, // Leave XGATE Debug Mode
|
output reg xgss, // XGATE Single Step
|
output reg xgss, // XGATE Single Step
|
output reg xgfact, // XGATE Flag Activity
|
output reg xgfact, // XGATE Flag Activity
|
output reg xgsweif_c, // Clear XGATE Software Error Interrupt FLag
|
output reg xgsweif_c, // Clear XGATE Software Error Interrupt FLag
|
output reg xgie, // XGATE Interrupt Enable
|
output reg xgie, // XGATE Interrupt Enable
|
output reg [15:1] xgvbr, // XGATE vector Base Address Register
|
output reg [15:1] xgvbr, // XGATE vector Base Address Register
|
Line 97... |
Line 98... |
//
|
//
|
|
|
|
|
// generate wishbone write registers
|
// generate wishbone write registers
|
// XGMCTL Register
|
// XGMCTL Register
|
// xgdbgm; // XGATE Debug Mode Mask
|
|
always @(posedge bus_clk or negedge async_rst_b)
|
always @(posedge bus_clk or negedge async_rst_b)
|
if (!async_rst_b)
|
if (!async_rst_b)
|
begin
|
begin
|
xge <= 1'b0;
|
xge <= 1'b0;
|
xgfrz <= 1'b0;
|
xgfrz <= 1'b0;
|
xgdbg <= 1'b0;
|
xgdbg_set <= 1'b0;
|
|
xgdbg_clear <= 1'b0;
|
xgss <= 1'b0;
|
xgss <= 1'b0;
|
xgfact <= 1'b0;
|
xgfact <= 1'b0;
|
brk_irq_ena <= 1'b0;
|
brk_irq_ena <= 1'b0;
|
xgsweif_c <= 1'b0;
|
xgsweif_c <= 1'b0;
|
xgie <= 1'b0;
|
xgie <= 1'b0;
|
end
|
end
|
else if (sync_reset)
|
else if (sync_reset)
|
begin
|
begin
|
xge <= 1'b0;
|
xge <= 1'b0;
|
xgfrz <= 1'b0;
|
xgfrz <= 1'b0;
|
xgdbg <= 1'b0;
|
xgdbg_set <= 1'b0;
|
|
xgdbg_clear <= 1'b0;
|
xgss <= 1'b0;
|
xgss <= 1'b0;
|
xgfact <= 1'b0;
|
xgfact <= 1'b0;
|
brk_irq_ena <= 1'b0;
|
brk_irq_ena <= 1'b0;
|
xgsweif_c <= 1'b0;
|
xgsweif_c <= 1'b0;
|
xgie <= 1'b0;
|
xgie <= 1'b0;
|
end
|
end
|
else if (write_xgmctl)
|
else if (write_xgmctl)
|
begin
|
begin
|
xge <= write_bus[15] ? write_bus[7] : xge;
|
xge <= write_bus[15] ? write_bus[7] : xge;
|
xgfrz <= write_bus[14] ? write_bus[6] : xgfrz;
|
xgfrz <= write_bus[14] ? write_bus[6] : xgfrz;
|
xgdbg <= write_bus[13] ? write_bus[5] : xgdbg;
|
xgdbg_set <= write_bus[13] && write_bus[5];
|
|
xgdbg_clear <= write_bus[13] && !write_bus[5];
|
xgss <= write_bus[12] && write_bus[4];
|
xgss <= write_bus[12] && write_bus[4];
|
xgfact <= write_bus[11] ? write_bus[3] : xgfact;
|
xgfact <= write_bus[11] ? write_bus[3] : xgfact;
|
brk_irq_ena <= write_bus[10] ? write_bus[2] : brk_irq_ena;
|
brk_irq_ena <= write_bus[10] ? write_bus[2] : brk_irq_ena;
|
xgsweif_c <= write_bus[ 9] && write_bus[1];
|
xgsweif_c <= write_bus[ 9] && write_bus[1];
|
xgie <= write_bus[ 8] ? write_bus[0] : xgie;
|
xgie <= write_bus[ 8] ? write_bus[0] : xgie;
|
end
|
end
|
else
|
else
|
begin
|
begin
|
xgss <= 1'b0;
|
xgss <= 1'b0;
|
xgsweif_c <= 1'b0;
|
xgsweif_c <= 1'b0;
|
|
xgdbg_set <= 1'b0;
|
|
xgdbg_clear <= 1'b0;
|
end
|
end
|
|
|
// XGVBR Register
|
// XGVBR Register
|
always @(posedge bus_clk or negedge async_rst_b)
|
always @(posedge bus_clk or negedge async_rst_b)
|
if (!async_rst_b)
|
if (!async_rst_b)
|