hanjingyu2008的个人空间 https://blog.eetop.cn/219089 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

AHBAPB TOP

已有 450 次阅读| 2019-2-28 19:23 |系统分类:芯片设计


// TOP module
// define  BRIDGE ARBITOR DECODER SLAVE


module TOP( 
input wire RESETn,
input wire CLK,

// TEST
input wire TStart,
input wire [3:0] TENx,
input wire TWRITEn,

input wire [1:0]  HBYTEN0, 
input wire [1:0]  HBYTEN1, 
input wire [1:0]  HBYTEN2, 
input wire [1:0]  HBYTEN3,

input wire [31:0] HADDR0, 
input wire [31:0] HADDR1, 
input wire [31:0] HADDR2, 
input wire [31:0] HADDR3,

input wire [31:0] HWDATA0, 
input wire [31:0] HWDATA1, 
input wire [31:0] HWDATA2, 
input wire [31:0] HWDATA3
);



// master
wire [3:0]  HBUSREQx;
wire [3:0]  HENx;
wire [3:0]  HRWNx;


wire [3:0]  HGRANTx;
wire [1:0]  HBYTEN;
wire [31:0] HADDR;
wire [31:0] HWDATA;
wire [31:0] HRDATA;
wire HREADY;
wire HACK;
wire HKGrant;
wire HdERROR;
wire [3:0] HMASTER;
assign HEN = HENx[0] | HENx[1] | HENx[2] | HENx[3];
assign HRWN = HRWNx[0] & HRWNx[1] & HRWNx[2] & HRWNx[3];

// slave
wire PSEL0,PSEL1,PSEL2,PSEL3;
wire PENABLE;
wire PWRITE;
wire [31:0] PADDR;
wire [31:0] PWDATA;
wire [31:0] PRDATA, PRDATA0, PRDATA1, PRDATA2, PRDATA3;
wire [3:0]  PMASTER;



/////////////////////////
/* define relationship */
/////////////////////////
  AHB_Master TEST_Master0(
      .HRESETn    (RESETn),
      .HCLK       (CLK),
      .TStart     (TStart),
      .TEN        (TENx[0]),        //
      .TWRITEn    (TWRITEn),
      
      .HBUSREQ   (HBUSREQx[0]),    //
      .HGRANT    (HGRANTx[0]),     //   
      .HKGrant    (HKGrant),

      .HEN        (HENx[0]),          //
      .HRWN       (HRWNx[0]),        //
      .HREADY     (HREADY),
      .HACK       (HACK)
      );

  AHB_Master TEST_Master1(
      .HRESETn    (RESETn),
      .HCLK       (CLK),
      .TStart     (TStart),
      .TEN        (TENx[1]),        //
      .TWRITEn    (TWRITEn),
      
      .HBUSREQ   (HBUSREQx[1]),    //
      .HGRANT    (HGRANTx[1]),     //   
      .HKGrant    (HKGrant),

      .HEN        (HENx[1]),         //
      .HRWN       (HRWNx[1]),        //
      .HREADY     (HREADY),
      .HACK       (HACK)
      );

  AHB_Master TEST_Master2(
      .HRESETn    (RESETn),
      .HCLK       (CLK),
      .TStart     (TStart),
      .TEN        (TENx[2]),        //
      .TWRITEn    (TWRITEn),
      
      .HBUSREQ   (HBUSREQx[2]),    //
      .HGRANT    (HGRANTx[2]),     //   
      .HKGrant    (HKGrant),

      .HEN        (HENx[2]),         //
      .HRWN       (HRWNx[2]),        //
      .HREADY     (HREADY),
      .HACK       (HACK)
      );

  AHB_Master TEST_Master3(
      .HRESETn    (RESETn),
      .HCLK       (CLK),
      .TStart     (TStart),
      .TEN        (TENx[3]),        //
      .TWRITEn    (TWRITEn),
      
      .HBUSREQ   (HBUSREQx[3]),    //
      .HGRANT    (HGRANTx[3]),     //   
      .HKGrant    (HKGrant),

      .HEN        (HENx[3]),         //
      .HRWN       (HRWNx[3]),        //
      .HREADY     (HREADY),
      .HACK       (HACK)
      );



  AHB_Arbiter DUT_Arbiter(
      .HRESETn    (RESETn),
      .HCLK       (CLK),
  
      .HBUSREQx (HBUSREQx[3:0]),
      .HGRANTx   (HGRANTx[3:0]),
  
      .HADDR     (HADDR[31:0]),
      .HREADY    (HREADY),
      .HKGrant    (HKGrant),
      .HMASTER    (HMASTER[3:0])
);
  
  Decoder #(.width(2)) DUT_Decoder_BYTEN(
      .DAT0       (HBYTEN0[1:0]),
      .DAT1       (HBYTEN1[1:0]),
      .DAT2      (HBYTEN2[1:0]),
      .DAT3      (HBYTEN3[1:0]),
      .DATo      (HBYTEN[1:0]),
      .MASTER     (HMASTER[3:0])
);
  
  Decoder DUT_Decoder_HADDR(
      .DAT0       (HADDR0[31:0]),
      .DAT1       (HADDR1[31:0]),
      .DAT2      (HADDR2[31:0]),
      .DAT3      (HADDR3[31:0]),
      .DATo      (HADDR[31:0]),
      .MASTER     (HMASTER[3:0])
);
  Decoder DUT_Decoder_HWDATA(
      .DAT0      (HWDATA0[31:0]),
.DAT1      (HWDATA1[31:0]),
.DAT2      (HWDATA2[31:0]),
.DAT3      (HWDATA3[31:0]),
.DATo      (HWDATA[31:0]),
.MASTER     (HMASTER[3:0])
);
  APB_Bridge DUT_Bridge(
.PRESETn     (RESETn),
.PCLK       (CLK),
      // AHB
.HEN        (HEN),
.HRWN       (HRWN),
.HBYTEN     (HBYTEN[1:0]),
.HADDR      (HADDR[31:0]),
.HWDATA     (HWDATA[31:0]),
.HRDATA     (HRDATA[31:0]),
.HREADY     (HREADY),
.HACK       (HACK),
.HKGrant     (HKGrant),
.HdERROR    (HdERROR),
      
      // APB_Slave
.PSEL0      (PSEL0),
.PSEL1      (PSEL1),
.PSEL2      (PSEL2),
.PSEL3      (PSEL3),
.PENABLE     (PENABLE),
.PWRITE     (PWRITE),
.PADDR      (PADDR[31:0]),
.PWDATA     (PWDATA[31:0]),
.PRDATA     (PRDATA[31:0]),
.PMASTER     (PMASTER[3:0])
);
  Decoder DUT_Decoder_PRDAT(
  .DAT0       (PRDATA0[31:0]),
.DAT1       (PRDATA1[31:0]),
.DAT2       (PRDATA2[31:0]),
.DAT3       (PRDATA3[31:0]),
.DATo       (PRDATA[31:0]),
.MASTER      (PMASTER[3:0])
); 
    
  APB_Slave DUT_APB_0(
  .PRESETn     (RESETn),
  .PCLK        (CLK),

      .PSELx      (PSEL0),
      .PENABLE    (PENABLE),

      .PWRITE     (PWRITE),
      .PADDR      (PADDR[31:0]),
      .PWDATA     (PWDATA[31:0]),
      .PRDATA     (PRDATA0[31:0])
      );
      
   APB_Slave DUT_APB_1(
  .PRESETn     (RESETn),
  .PCLK        (CLK),

      .PSELx      (PSEL1),
      .PENABLE    (PENABLE),

      .PWRITE     (PWRITE),
      .PADDR      (PADDR[31:0]),
      .PWDATA     (PWDATA[31:0]),
      .PRDATA     (PRDATA1[31:0])
      );     
       
   APB_Slave DUT_APB_2(
  .PRESETn     (RESETn),
  .PCLK        (CLK),

      .PSELx      (PSEL2),
      .PENABLE    (PENABLE),

      .PWRITE     (PWRITE),
      .PADDR      (PADDR[31:0]),
      .PWDATA     (PWDATA[31:0]),
      .PRDATA     (PRDATA2[31:0])
      );     
      
   APB_Slave DUT_APB_3(
  .PRESETn     (RESETn),
  .PCLK        (CLK),

      .PSELx      (PSEL3),
      .PENABLE    (PENABLE),

      .PWRITE     (PWRITE),
      .PADDR      (PADDR[31:0]),
      .PWDATA     (PWDATA[31:0]),
      .PRDATA     (PRDATA3[31:0])
      );     

  
endmodule


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 6

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3128

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-23 01:40 , Processed in 0.030741 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部