AHB 3.0目前不支持security world.

AHB到APB的async bridge主要包括三个部分:

1)AHB domain

1)产生信号hactive = HSEL & HTRANS[1];新的传输地址有效

HTRANS的第一位表示一个新的seq或者连续的transfer

HTARNS的第零位表示一个idle或busy的transfer

用ahb的clock,寄存一拍

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else if(HREADYin)

ahb_active = hactive

2)产生信号haccess = HREADYin & hactive;可以接受数据传输

HREADYin信号表示slave已经ready。

用ahb的clock,寄存一拍

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else            ahb_access = haccess

3)用ahb的clock,寄存write和addr

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else if(haccess)

ahb_write = HWRITE

ahb_addr = HADDR

4)用ahb的clock,寄存wdata

产生信号ahb_wdata_ld = ahb_access & ahb_write

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else if(ahb_wdata_ld)

ahb_wdata = HWDATA

5)产生信号HREADYout = ~ahb_active|apb_ack_pls

产生信号HRDATA = apb_rdata

2)AHB clock domain和APB clock domain的handshake

根据ahb_access信号,产生ahb_req信号,同时在apb_clk domain中进行sync

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else if(ahb_access)

ahb_req = ~ahb_req

always @(posedge PCLK or negedge PRESETn)

if(!RESETn)

else

ahb_req_sync1 = ahb_req

ahb_req_sync2 = ahb_req_sync1

ahb_req_sync3 = ahb_req_sync2

ahb_req_pls = ahb_req_sync2^ahb_req_sync3

根据ahb_reg_pls_d信号,产生ahb_ack信号,同时在ahb_clk domain中进行sync

always @(posedge PCLK or negedge PRESETn)

if(!RESETn)

else if(ahb_reg_pls_d)

ahb_ack = ~ahb_ack

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else

ahb_ack_sync1 = ahb_ack

ahb_ack_sync2 = ahb_ack_sync1

ahb_ack_sync3 = ahb_ack_sync2

ahb_ack_pls = ahb_ack_sync2^ahb_ack_sync3

3)APB domain

寄存ahb_req_pls一拍

always @(posedge PCLK or negedge PRESETn)

if(!RESETn)

else            ahb_req_pls_d = ~ahb_req_pls

PWRITE/PADDR/PWDATA 直接连接到AHB的reg中,

PSEL = ahb_req_pls | ahb_req_pls_d

PENABLE = ahb_req_pls_d

apb_rdata的赋值

apb_rdata_ld = ahb_req_pls_d & ~ahb_write

always @(posedge HCLK or negedge HRESETn)

if(!RESETn)

else if(apb_rdata_ld)

apb_rdata = PRDATA

apb2apb的async bridge:

1)req由master端产生,在enable阶段有效,传递到slave端,有效一个cycle,用来锁存master端的addr/strb/data信号到slave的寄存器中。

2)ack信号由slave端产生,在sready有效且enable有效情况下产生。有效一个cycle,锁存rdata和resp。

3)Latch表示只含有if()的always模块,被综合为带clock gate的FF.

最新文章

  1. css样式之background详解
  2. win8 vs2010 openni2 配置
  3. android打电话的小程序
  4. c/c++ 数据结构 链表插入数据代码(一)
  5. kernel source reading notepad
  6. 8 Hbase get方式获取数据
  7. 简单的socket方法
  8. jsp之session对象
  9. fuel一键部署openstack
  10. 2019最新WEB前端开发小白必看的学习路线(附学习视频教程)
  11. token登录验证机制图解
  12. .NetCore发布到Centos docker
  13. 二、Adapter 适配器
  14. Android学习 -- Activity 以及Activity之间值传递
  15. WebService系列二:使用JDK和CXF框架开发WebService
  16. php iconv() : Detected an illegal character in input string
  17. Java8简明学习之新时间日期API
  18. Delphi的打开文件对话框-TOpenDialog
  19. PHPCMS V9 模块开发 二次开发实例 留言本
  20. Fibsieve`s Fantabulous Birthday LightOJ - 1008(找规律。。)

热门文章

  1. C++简单单例模式
  2. 在Android Studio 中正确使用adil ”绝对经典“
  3. [LeetCode]题解(python):036-Valid Sudoku
  4. Selenium2学习-028-WebUI自动化实战实例-026-获取页面元素值或者元素属性值
  5. debian linux下配置lnmp环境
  6. Interview Return Products of All Other Elements in Array
  7. php文件和目录操作函数
  8. MvvmLight 绑定
  9. WW多线程和锁
  10. XiaoShi657的留言板