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.

ahb2apb和apb2apb async bridge的更多相关文章

  1. APB总线

    APB(Advance Peripheral Bus)是AMBA总线的一部分,从1998年第一版至今共有3个版本. AMBA 2 APB Specfication:定义最基本的信号interface, ...

  2. PL301 matrix内部模块

    ASIB中的valid信号,有两部分,一部分add产生的地址映射,到main中的default addr.(vect) 一部分由Dmu和Cdas组成,到main中的build. Dmu:interco ...

  3. CDC spyglass

    SoC中会有着几百的clock domains,millions的async data crossing. Glitch等cdc问题是netlist level simulation的主要目的. CD ...

  4. AMAB interconnector PL301(二)

    1)Frequency Conversion Components:包含三种component. AXI-AXI async bridge:拥有两种mode:bypass mode 和 async m ...

  5. X-007 FriendlyARM tiny4412 u-boot移植之内存初始化

    <<<<<<<<<<<<<<<<<<<<<<<<< ...

  6. tiny4412 --Uboot移植(5) DDR3内存

    开发环境:win10 64位 + VMware12 + Ubuntu14.04 32位 工具链:linaro提供的gcc-linaro-6.1.1-2016.08-x86_64_arm-linux-g ...

  7. Mobilize.Net Silverlight bridge to Windows 10 UWP

    Windows UWP 既 Windows 10 Universal Windows platform,这个微软基于Windows NT内核的个运行时(Runtime)平台,此平台横跨所有的 Wind ...

  8. 编程概念--使用async和await的异步编程

    Asynchronous Programming with Async and Await You can avoid performance bottlenecks and enhance the ...

  9. [C#] async 的三大返回类型

    async 的三大返回类型 序 博主简单数了下自己发布过的异步文章,已经断断续续 8 篇了,这次我想以 async 的返回类型为例,单独谈谈. 异步方法具有三个可让开发人员选择的返回类型:Task&l ...

随机推荐

  1. windows2008一键安装环境的配置说明

    windows 2008 一键安装包下载地址为 http://gongdan.oss-cn-hangzhou.aliyuncs.com/market/cmISV/34320/product/cmgj0 ...

  2. 错误提示: An App ID with identifier "*****" is not avaliable. Please enter a different string.

    百度了很多,但大多的解决办法就是 更改BundleID,的确管用,,但是有的情况下,你需要跟同事合作,公用同一个BundleID, 我是这样处理的:工具栏中打开Window—project删除所有工程 ...

  3. JMeter学习-001-JMeter初识

    Apache JMeter是Apache组织开发的基于Java的开源压力测试工具(个人发现也可用于接口测试).用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于 ...

  4. windows10 环境下theano安装

    前言:我用的是 Anaconda2 安装python 1. 在Anaconda prompt中输入 conda install mingw libpython 2. 添加环境变量 C:\Anacond ...

  5. ASIHTTPRequest 记录过去5秒的平均流量字节/秒

    //记录过去5秒的平均流量字节/秒 NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]);

  6. C语言:通过指针对数组元素进行排序

    // //  main.c //  Pointer_array // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 bjsxt. All ...

  7. 微信支付开发(2) 静态链接Native支付

    关键字:微信支付 微信支付v3 native支付 统一支付 Native支付 prepay_id 作者:方倍工作室原文: http://www.cnblogs.com/txw1958/p/wxpayv ...

  8. php 使用 Memcache 例子

    代码写成后不断的往数据库插入数据,可以发现 当set时:理论上速度变慢,但数据同步 当get时:理论上速度变快,但数据不同步,需要缓存失效后重新请求set方法 <?php $mem = new ...

  9. iOS Reachability的基本用法

    #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...

  10. Swagger简介

    前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...