📄 apb_transfer.v
字号:
/*传输控制模块,根据地址产生从设备选择信号*/module apb_transfer( hclk, hreset_n, haddr_i,//[31:0], pselx_en_i, psel_slave_o );input hclk, hreset_n, pselx_en_i;//apb选择使能信号input [31:0] haddr_i;output [6:0] psel_slave_o;reg [6:0] psel_slave;reg [31:0] pwdata_h;wire psel_uart0_o,//选择uart0 psel_uart1_o,//选择uart1 psel_i2c_o,//选择i2c psel_ir_o,//选择中断模块(备选) psel_remap_o, psel_timer_o,//选择timer psel_pause_o;//选择中断模块(备选)wire [31:0] haddr_i;wire psel_uart0_en;wire psel_uart1_en;wire psel_i2c_en;wire psel_ir_en;wire psel_remap_en;wire psel_timer_en;wire psel_pause_en;reg psel_uart0, psel_uart1, psel_i2c, psel_ir, psel_remap, psel_timer, psel_pause;wire [6:0] psel_slave_o;parameter DELAY3 = 2'b11;always @( hreset_n or haddr_i ) if (!hreset_n) begin psel_slave = 7'b0000_000; end else // else if (pselx_en_i) case(haddr_i[31:12]) 20'HE000C: begin psel_slave = 7'b000_0001; end 20'HE0010: begin psel_slave = 7'b000_0010; end 20'HE001C: begin psel_slave = 7'b000_0100; end 20'HFFFFF: begin psel_slave = 7'b000_1000; end 20'HE002C: begin psel_slave = 7'b001_0000; end 20'HE003C: begin psel_slave = 7'b010_0000; end 20'HE004C: begin psel_slave = 7'b100_0000; end default: begin psel_slave = 7'b000_0000; end endcaseassign psel_slave_o = psel_slave;assign psel_uart0_o = (haddr_i[31:12]==20'HE000C)? 1'b1 : 1'b0;assign psel_uart1_o = (haddr_i[31:12]==20'HE0010)? 1'b1 : 1'b0;assign psel_i2c_o = (haddr_i[31:12]==20'HE001C)? 1'b1 : 1'b0;assign psel_ir_o = (haddr_i[31:12]==20'HFFFFF)? 1'b1 : 1'b0;assign psel_remap_o = (haddr_i[31:12]==20'HE002C)? 1'b1 : 1'b0;assign psel_timer_o = (haddr_i[31:12]==20'HE003C)? 1'b1 : 1'b0;assign psel_pause_o = (haddr_i[31:12]==20'HE004C)? 1'b1 : 1'b0;endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -