交出你的灵魂

AHB APB 最简 通信

上一篇 / 下一篇  2019-02-28 18:30:08 / 天气: 晴朗 / 心情: 平静

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


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2019-03-12  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 3284
  • 日志数: 25
  • 建立时间: 2018-10-29
  • 更新时间: 2019-02-28

RSS订阅

Open Toolbar
重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 重庆时时彩 秒速赛车官网 重庆时时彩