注册 登录
ET创芯网论坛(EETOP) 返回北京赛车

hanjingyu2008的个人空间 http://blog.whqcsi.com/219089 [收藏] [复制] [分享] [RSS]

日志

AHB APB 最简 通信

已有 300 次阅读2019-2-28 18:30 |系统分类:芯片设计

天气: 晴朗
心情: 平静

AHBAPB工程说明

目录

AHBAPB工程说明。。。 1

2.      文件说明... 1

3.      工作框图... 2

4.      工作说明... 2

5.      端口说明。。。 3

6.      测试流程。。。 4

7.      仿真说明。。。 4

8.      仿真结果... 5

1)      波形举例---测试1。 5

2)      Transcript。 5

 

1.       实现目标

4个主设备M0~M3访问接口根据轮转仲裁器仲裁出的结果经过APB桥占用APB总线进行访问

APB上挂接4个从设备S0~S3,每个从设备的地址空间如下

S0:  0x0000_0000 ~ 0x0000_00ff;

S1:  0x0000_0100 ~ 0x0000_01ff;

S2:  0x0000_0200 ~ 0x0000_02ff;

S3:  0x0000_0300 ~ 0x0000_03ff;

令从设备地址空间的下边界为其地址的基址

假设每个从设备中有可访问APB寄存器16个,位宽均为32比特,16个寄存器的访问地址计算方式为 基址 + 寄存器编号左移2位(byte 偏移

 

主设备接口的数据读写采用请求/应答方式,遵循如下时序规范

 

从设备读写遵循APB时序规范

 

APB桥的作用是将主设备的访问信号转化成APB总线信号访问从设备

要求:

1.利用verilog代码完成蓝色部分系统搭建

2.搭建testbench进行仿真验证,4个主设备可以同时正确的对任意一个从设备寄存器进行读写


2.   文件说明



4.   工作说明

ModelSim SE 10.1a

 

每次配置好要启动的主机、读写、地址、数据,然后启动主机。主机按仲裁结果依次启动,进行读写分机

 

仲裁模块内采用可变优先级仲裁器,2位状态机作为仲裁核心,每次主机通信完成后,状态机+1。内置主机译码器,用于选择被允许仲裁的主机的地址和数据。

 

从机读写时,末位地址在0~3内均读取末位以0开始的同一个寄存器的32位,即从机读取时忽略地址后2位。


5.   端口说明


 

 

6.   测试流程




 

7.   仿真说明

在仿真前Transcript中命令:do wave.do加载预设波形

输出结果在Transcript中查看

 

8.   仿真结果

1)    波形举例---测试1


2)    Transcript

do wave.do

run -all

# Test Init

# Test Start

#

# 1 TEST Normal (Write) : Master 0          Write 0     (Arbiter now primary-0)

# TOP_TB.DUT_TOP.TEST_Master0 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master0 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master0 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_0    Write Addr:00000008, Reg: 2, Data:55555555

#

# 2 TEST Normal (Read ) : Master 1          Read  0     (Arbiter now primary-1)

# TOP_TB.DUT_TOP.TEST_Master1 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master1 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master1 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_0    Read  Addr:00000008, Reg: 2, Data:55555555

#

# 3 TEST All    (Write) : Master 2->3->0->1 Write 2301  (Arbiter now primary-2)

# TOP_TB.DUT_TOP.TEST_Master0 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master1 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master3 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master2 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_2    Write Addr:00000210, Reg: 4, Data:2c2c2c2c

# TOP_TB.DUT_TOP.TEST_Master3 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master3 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_3    Write Addr:00000310, Reg: 4, Data:3d3d3d3d

# TOP_TB.DUT_TOP.TEST_Master0 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master0 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_0    Write Addr:00000010, Reg: 4, Data:0a0a0a0a

# TOP_TB.DUT_TOP.TEST_Master1 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master1 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_1    Write Addr:00000110, Reg: 4, Data:1b1b1b1b

#

# 4 TEST All    (Read ) : Master 2->3->0->1 Read  1032  (Arbiter now primary-2) 

# TOP_TB.DUT_TOP.TEST_Master0 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master1 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master3 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master2 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_1    Read  Addr:00000110, Reg: 4, Data:1b1b1b1b

# TOP_TB.DUT_TOP.TEST_Master3 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master3 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_0    Read  Addr:00000010, Reg: 4, Data:0a0a0a0a

# TOP_TB.DUT_TOP.TEST_Master0 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master0 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_3    Read  Addr:00000310, Reg: 4, Data:3d3d3d3d

# TOP_TB.DUT_TOP.TEST_Master1 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master1 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_2    Read  Addr:00000210, Reg: 4, Data:2c2c2c2c

#

# 5 TEST Normal (Write) : Master 3          Write 1     (Arbiter now primary-1)

# TOP_TB.DUT_TOP.TEST_Master3 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master3 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master3 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_1    Write Addr:00000120, Reg: 8, Data:11111111

#

# 6 TEST Normal (Write) : Master 2          Write 2     (Arbiter now primary-2)

# TOP_TB.DUT_TOP.TEST_Master2 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master2 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_2    Write Addr:00000220, Reg: 8, Data:22222222

#

# 7 TEST Normal (Write) : Master 1          Write 3     (Arbiter now primary-3)

# TOP_TB.DUT_TOP.TEST_Master1 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master1 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master1 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_3    Write Addr:00000320, Reg: 8, Data:33333333

#

# 8 TEST Normal (Read ) : Master 2          Read  1     (Arbiter now primary-1) 

# TOP_TB.DUT_TOP.TEST_Master2 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master2 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master2 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_1    Read  Addr:00000120, Reg: 8, Data:11111111

#

# 9 TEST Normal (Read ) : Master 1          Read  2     (Arbiter now primary-2)

# TOP_TB.DUT_TOP.TEST_Master1 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master1 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master1 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_2    Read  Addr:00000220, Reg: 8, Data:22222222

#

# 10TEST Normal (Read ) : Master 3          Read  3     (Arbiter now primary-3)

# TOP_TB.DUT_TOP.TEST_Master3 Grant Waiting...

# TOP_TB.DUT_TOP.TEST_Master3 Grant Get!

# TOP_TB.DUT_TOP.TEST_Master3 Grant Kill

# TOP_TB.DUT_TOP.DUT_APB_3    Read  Addr:00000320, Reg: 8, Data:33333333

#

# Test Stop

评论 (0 个评论)

facelist

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

关闭

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

关闭
关闭
X

小黑屋|手机版|Archiver|关于我们|联系我们|ET创芯网 ( )

GMT+8, 2019-5-26 05:25 , Processed in 0。029085 second(s), 8 queries , Redis On。

Powered by X3.4

© 2001-2017

返回顶部
鼎盛彩票 广发彩票 苹果彩票 北京赛车平台 一品彩票 苹果彩票 广发彩票 北京赛车平台 苹果彩票 幸运彩票