AHB APB 简单通讯架构 代码 APB_Bridge

博客围绕 AHB APB 简单架构展开,提及 APB 桥,它如同桥梁嫁接在主和从之间,在该架构中起到关键连接作用,属于信息技术领域的硬件架构相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

桥,嫁接在主和从指间

`define IDLE   2'b00
`define SETUP  2'b01
`define ENABLE 2'b10


module APB_Bridge(
input wire PRESETn,
input wire PCLK,

// AHB
input wire HEN,
input wire HRWN,
input wire [1:0] HBYTEN,
input wire [31:0] HADDR,
input wire [31:0] HWDATA,
output reg [31:0] HRDATA,
output reg HREADY,
output reg HACK,
output reg HKGrant,
output reg HdERROR,

// APB_Slave
output reg PSEL0,
output reg PSEL1,
output reg PSEL2,
output reg PSEL3,
output reg PENABLE,
output reg PWRITE,
output reg [31:0] PADDR,
output reg [31:0] PWDATA,
input wire [31:0] PRDATA,
output reg [3:0]  PMASTER
);


// Read DATA
always @(*) HRDATA = PRDATA;

// Slave select
assign PSEL0i = (HADDR[31:8] == 24'h0000_00);
assign PSEL1i = (HADDR[31:8] == 24'h0000_01);
assign PSEL2i = (HADDR[31:8] == 24'h0000_02);
assign PSEL3i = (HADDR[31:8] == 24'h0000_03);
always @(*) PMASTER = HADDR[11:8];

// Bridge Main FSM
reg [1:0] APB_FSM;
always @(posedge PCLK or negedge PRESETn)
begin
  if(!PRESETn)  
  begin
    // master
    HREADY  <= 1'b1;
    HACK    <= 1'b0;
    HdERROR <= 1'b0;
    HKGrant <= 1'b0;
    
    // slave
    APB_FSM <= `IDLE;
    PSEL0   <= 1'b0;
    PSEL1   <= 1'b0;
    PSEL2   <= 1'b0;
    PSEL3   <= 1'b0;
    PENABLE <= 1'b0;
    PWRITE  <= 1'b0;
    PADDR   <= 32'h0000;
    PWDATA  <= 32'h0000;
  end
  else
  begin
    case(APB_FSM)
      `IDLE:
      begin
        if(HEN)
        begin
          APB_FSM <= `SETUP;
          // master
          HREADY  <= 1'b0;
          HACK    <= 1'b0;
          
          // slave
          PSEL0   <= PSEL0i;
          PSEL1   <= PSEL1i;
          PSEL2   <= PSEL2i;
          PSEL3   <= PSEL3i;
          PWRITE  <= ~HRWN;   //////////////////////
          PADDR   <= HADDR;
          PWDATA  <= HWDATA;
        end      
      end
      
      `SETUP:
      begin
         APB_FSM <= `ENABLE;
         // master
         HREADY  <= 1'b0;
         HACK    <= 1'b1;
         HKGrant <= 1'b1;
          
         // slave
         PENABLE <= 1'b1;
      end
      
      `ENABLE:
      begin
         APB_FSM <= `IDLE;
         // master
         HREADY  <= 1'b1;
         HACK    <= 1'b0;
         HKGrant <= 1'b0;
         HdERROR <= 1'b0;
   
         // slave
         PSEL0   <= 1'b0;
         PSEL1   <= 1'b0;
         PSEL2   <= 1'b0;
         PSEL3   <= 1'b0;
         PENABLE <= 1'b0;               
      end
      default:  APB_FSM <= `IDLE;
    endcase
    
  end
  
  
end



endmodule
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值