2735|2

32

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

安路SF1系列FPGA(二)片上逻辑分析仪与AHB总线的一点点细节 [复制链接]

 
本帖最后由 瓜弟 于 2023-3-3 08:24 编辑

本文中主要研究安路SF1系列FPGA的硬核RISCV的AHB接口的细节。

 

1、片上逻辑分析仪

        片上逻辑分析仪是指,在硬件代码中加入一个IP,配置该IP时钟、触发、观察对象等信号,在调试过程中,经过过触发信号触发后,将采集到的结果通过JTAG上传至电脑进行观察。以下介绍如何配置片商逻辑分析仪。

        A、先依据需求建立完整的项目,并编译、综合通过;

        B、在TD软件菜单栏,点击Tools->Debug Tools->ChipWatcher

      C、在弹出的对话框中选中“Create a new ChipWatcher”

       D、在ChipWatcher界面下,在Chip Configuration 中点击Clock栏的三个点按钮

     E、选择采样时钟信号,采样结果将以时钟信号作为驱动,所以选择时钟信号时,需要依据待测信号频率、时钟域进行考虑。在下图中,先选择时钟信号,点击小箭头添加至右侧,在点击OK即可。

     F、在D步骤中,Chip Configuration栏中,选择采样深度,该采样深度依据FPGA剩余的RAM、待测信号数量进行评估,过多将会导致综合不通过。

    G、如下图所示,在空白处右键,点击 Add Nodes

     H、在弹出的对话框中,选择需要观测的信号名称,如同步骤E一样添加即可

     I、配置触发信号,如下图所示,触发信号跟需求,图中所示为当U3/HADDR[31:0]的值等于“01000000000000000000000000000000b”时,触发采样开始,当采集深度到达设定的深度后,将自动通过JTAG将数据传输至电脑进行显示

    J、点击File-> Save,回到TD软件,重新综合、生成bit流文件,然后再ChipWatcher界面点击下载。

    H、观察、对比、分析

 

2、AHB的细节

    提出问题:以下不同位宽的数据,在AHB上将会如何传输?

unsigned long * ADD32_0 = (unsigned long *)0x40000000;	//32位对齐
unsigned long * ADD32_1 = (unsigned long *)0x40000001;
unsigned long * ADD32_2 = (unsigned long *)0x40000002;
unsigned long * ADD32_3 = (unsigned long *)0x40000003;

unsigned short * ADD16_0 = (unsigned short *)0x40000100;	//16位对齐
unsigned short * ADD16_1 = (unsigned short *)0x40000101;

unsigned long long * ADD64_0 = (unsigned long long*)0x40000300; //64位对齐
unsigned long long * ADD64_1 = (unsigned long long*)0x40000301;
unsigned long long * ADD64_2 = (unsigned long long*)0x40000302;
unsigned long long * ADD64_3 = (unsigned long long*)0x40000303;
unsigned long long * ADD64_4 = (unsigned long long*)0x40000304;
unsigned long long * ADD64_5 = (unsigned long long*)0x40000305;

unsigned char * ADD8_0 = (unsigned char *)0x40000400;
unsigned char * ADD8_1 = (unsigned char *)0x40000401;
unsigned char * ADD8_2 = (unsigned char *)0x40000402;
unsigned char * ADD8_3 = (unsigned char *)0x40000403;

int main(void)
{
	while(1)
	{
		* ADD32_0 = 0x12345678;
		* ADD32_1 = 0x12345678;
		* ADD32_2 = 0x12345678;
		* ADD32_3 = 0x12345678;

		* ADD16_0 = 0x1234;
		* ADD16_1 = 0x1234;

		* ADD64_0 = 0x123456789ABCDEF0;
		* ADD64_1 = 0x123456789ABCDEF0;
		* ADD64_2 = 0x123456789ABCDEF0;
		* ADD64_3 = 0x123456789ABCDEF0;
		* ADD64_4 = 0x123456789ABCDEF0;
		* ADD64_5 = 0x123456789ABCDEF0;

		* ADD8_0 = 0x12;
		* ADD8_1 = 0x12;
		* ADD8_2 = 0x12;
		* ADD8_3 = 0x12;
	}
}

        参考上一篇文章构建RISCV硬核运行环境,依据上述代码,编译hex文件,将所有代码下载至FPGA后,在ChipWatcher上观察各个信号。

        A、32位数据对齐传输:数据传输在一个操作周期内完成,如下图所示,可见在地址(H3/HADDR[31:0])0x40000000上,写入了0x12345678,HSIZE为2,代表数据总线上传输的时32位数据,HTRANS为2,代表当前时单笔传输或者第一帧传输。

     B、32位数据非对齐传输:如下图所示,分别是在32位对齐的地址基础上偏移1、2、3个地址后的传输方式。可见一个32位数据被分成了四次传输,每次只传输一个字节,且在32位数据总线上,各字节位置均相同。可见,如果32位数据传输,地址不对齐的情况下,将会极其浪费总线资源。

         

    C、64位数据对齐传输:由于数据总线是32位的,所以64位数据的传输必定会分两次进行,如下图所示

     D、64位数据非对齐传输:分为两种情况,非64位对齐但是32位对齐、非32位对齐。当非64位对齐但32位对齐时,数据传输与64位数据对齐传输一致,因为数据总线是32位的,64位对齐无意义,如下第一图。当地址非32位对齐时,数据传输将会分为8次进行,每次一个字节,如下第二图,第三图为局部放大。

         E、16位对齐传输:对齐情况下,16位数据一次性就传输完成,注意HSIZE的值

     F、16位非对齐传输:此时,数据将拆分为两次传输,每次一个字节

     

    综上所述,在编写软件代码时,应注意数据对齐,否则数据传输效率非常低

 

P2_AHB_hardware.zip

1.78 MB, 下载次数: 9

硬件工程

P2_AHB_software.zip

360.53 KB, 下载次数: 5

软件工程

最新回复

  详情 回复 发表于 2023-3-5 19:59
点赞 关注
 
 

回复
举报

710

帖子

5

TA的资源

一粒金砂(高级)

沙发
 
 
 
 

回复

32

帖子

1

TA的资源

一粒金砂(中级)

板凳
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
PCB设计中格点的设置

PCB设计中格点的设置合理的使用格点系统,能是我们在PCB设计中起到事半功倍的作用。但何谓合理呢? 很多人认为格点设置的越小越好 ...

STN-LCD彩屏模块

摘要:本文介绍了彩色STN-LCD模块的内部结构、主要器件,以及设计选用要求。 关键词:彩色STN-LCD模块 LCM LED 电荷泵 升压 ...

寻迹小车设计

一. 起因、目标及车体设计 一、 概述以自制方式为主制作一辆低成本的寻迹小车,用于学习嵌入式应用(单片机),这个项目有两 ...

Stellaris资料整理贴

//--------------------------------------2010.3.25---------------------------------------- 1. Stellaris大全(不断更新) ...

0-5V转换-20mA V/I电路分析

60110

使用MSP430G2 LaunchPad开发板连接步进电机

如何使用MSP430 LaunchPad开发板连接一个步进电机。 MSP-EXP430G2是德州仪器(TI)提供的开发工具,又名LaunchPad,用于学习和练 ...

#AI挑战营终点站# rv1106数字识别模型部署

本帖最后由 打破传统 于 2024-5-29 10:39 编辑 参考https://wiki.luckfox.com/zh/Luckfox-Pico/Luckfox-Pico-SDK 进行了SD ...

测评汇总:拥抱AIGC 应用ChatGPT和OpenAI API

活动详情:【拥抱AIGC 应用ChatGPT和OpenAI API】更新至 2024-10-10测评报告汇总:@皓月光兮非自明 《拥抱AIGC》四、OpenAI与GPT ...

【Follow me第二季第4期】任务一:搭建环境并开启第一步Blink三色LED / 串口打印He...

本帖最后由 mingzhe123 于 2024-12-1 12:14 编辑 2024年得捷电子和eeworld论坛联合举办的Follow me活动第二季已经进行到第4期 ...

如何用FPGA平台编写一个信号的2048点DFT,不使用fft的ip核

不使用fft的ip核实现信号2048点DFT

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表