分析内存带宽使用流量发电机
这个案例展示了如何分析内存带宽的SoC的应用程序。在内存密集型硬件设计,你可能有多个主人访问常见的DDR内存。在这种情况下,重要的是要分析的动态要求所有记忆大师指导算法设计和硬件板要求部署。你可以模拟内存交通使用内存交通发电机,分析带宽使用情况并验证硬件。
金宝app支持的硬件平台
Xilinx®Zynq®ZC706评估工具
Xilinx®Kintex®7 KC705发展局
设计任务
考虑一个应用程序执行高清视频处理FPGA实时输入和输出。这个应用程序需要四个内存消费者争夺DDR同时访问。记忆大师1将输入视频帧写入内存和内存大师4读取视频帧的记忆和连接到输出显示。记忆大师2从内存中读取数据进行处理在FPGA和记忆大师3写数据到内存中。
每个主操作高清视频具有以下特征:
外框尺寸:1920 x1080p
像素大小:2字节(YCbCr格式)
帧时间:1/60 = 16.67 (60 FPS)女士
帧数据:1920 x1080x2 = 4.1472 mb
每个主人都需要遵循最小内存带宽得到60 FPS的帧速率。
内存带宽:帧数据/帧周期= 4.1472 e6/16.67e-3 = 248.8 mbps
假设内存控制器特点如下:
时钟频率:200 MHz
数据宽度:32位
交易破裂长度:128
设计采用SoC Blockset
创建一个模型使用内存控制器和内存流量发生器块模型四个记忆大师。
内存控制器:设置内存控制器参数配置参数>硬件实现>目标硬件资源。下FPGA设计(mem控制器)选项卡,设置时钟频率为200 MHz和数据宽度为32。下FPGA设计(调试)选项卡上,选择包括AXI互连监控。
内存交通发电机1 & 4:记忆的交通特征主1和4一样代表了流媒体的视频帧与记忆。设置记忆大师1和4的交通特点如下:
破裂的大小(以字节为单位):破裂事务长度*宽度(数据/ 8)= 128 * 32/8 = 512
总爆发的请求:模拟= 4 * 4帧数据流量数据/破裂大小= 4 * 8100 = 32400
破裂国米访问时间:帧内/破裂的请求数量= 16.67 e-3/8100 = 20.58 e -秒。作为一个持续的数据流量,不断收到以恒定速率的数据。设置爆炸时间如下:
第一次爆发的时间= 20.58 e -
随机脉冲之间的时间= (20.58 e - 20.58 e)
更新内存交通Generator1和记忆交通Generator4块面具与价值观之上。设置请求类型记忆交通与作家和记忆Generator1交通Generator4与读者。清除等待爆发了选择两块面具与连续的流量,这些大师们代表了主人HDMI相机和显示器等。
内存交通发电机2 & 3:内存交通Generator2代表读者FPGA算法和记忆交通Generator3代表作家从FPGA的算法。设置记忆大师2和3的交通特点如下:
破裂的大小(以字节为单位):破裂事务长度*宽度(数据/ 8)= 128 * 32/8 = 512
总爆发的请求:4 *流量数据/裂解大小= 4 * 8100 = 32400(4帧数据模拟)
破裂国米访问时间:(突发长度+ 10)/时钟周期= 6.9 e(0.69人)。允许一些随机性破裂时间读和写请求的数据,由于变异算法的要求,设置破裂时间如下:
第一次爆发的时间:7.2 e -
随机脉冲之间的时间(7.2 e - 7.4 e):
模拟
运行模型。仿真完成后,打开内存控制器块和点击查看性能的情节下性能选项卡。选择所有的大师带宽选项卡并单击创建图。你可以注意到,所有大师约达到190 MBps的带宽和不符合所需的248 MBps。也观察到诊断查看器的警告。
满足所需的带宽、修改控制器的数据宽度从32到64年在配置参数设置目标硬件资源。这需要相应更改内存流量发生器设置如下:
破裂的大小(以字节为单位):破裂事务长度*宽度(数据/ 8)= 128 * 64/8 = 1024
总爆发的请求:4 *流量数据/裂解大小= 4 * 4050 = 16200(4帧数据模拟)
破裂国米访问时间记忆交通发电机1 & 4:帧内/破裂的请求数量= 16.67 e-3/4050 = 41.16 e -秒。设置破裂时间如下:
第一次爆发的时间:41.16 e -
随机脉冲之间的时间(41.16 e - 41.16 e):
没有变化首先爆发脉冲之间的时间和随机时间记忆交通发电机2和3,因为它们是基于算法的需求决定的。
模拟模型和开放带宽正如前面所提到的情节从内存控制器。注意,内存带宽通过内存流量发生器1和4是248 MBps。发电机2和3的内存带宽约500 MBps。这符合设计要求的所有大师能够满足248 MHz的实时要求。观察到没有警告在诊断观众突然请求不下降。
实现和硬件上运行
SoC Blockset为金宝appXilinx设备支持包这一部分需要。
实现模型支持的FPGA板上,使用金宝appSoC建设者应用程序。默认情况下,模型将实现Xilinx®Zynq®ZC706评估工具因为它是配置了董事会。
AXI流量发生器(ATG),交通发生器硬件IP核心内存块不支持随机破裂国米访问时间和它区分读者和作家硕士仲裁政策为模拟与流量发生器的内存块。金宝app因此,在硬件实现之前,修改内存块的设置如下:
让所有的记忆交通发电机为“作家”
记忆流量发生器2和3,设置(7.2 e - 7.2 e)随机时间间隔破裂使它固定国米破裂时间7.2 e
打开SoC建设者,选择系统芯片仿真软件将来发布选项卡金宝app,并单击配置、构建和部署按钮。一旦SoC构建器打开时,遵循这些步骤:
选择构建模型在设置屏幕上。点击下一个。
点击查看/编辑内存映射查看内存映射检查内存映射屏幕上。点击下一个。
指定项目文件夹选择项目文件夹屏幕上。点击下一个。
选择构建、加载并运行在选择构建操作屏幕上。点击下一个。
点击验证检查模型实现的兼容性验证模型屏幕上。点击下一个。
点击构建开始构建的模型构建模型屏幕上。外部壳FPGA合成开始时将打开。点击下一个来负载比特流屏幕上。
FPGA合成可能需要超过30分钟才能完成。为了节省时间,你可能想要使用提供的预生成的比特流按照步骤:
关闭外部shell终止合成。
将预生成的比特流复制到您的项目文件夹,运行以下命令重命名。
拷贝文件(fullfile (matlabshared.sup金宝appportpkg.getSupportPackageRoot,“工具箱”,“soc”,…“金宝appsupportpackages”,“xilinxsoc”,“xilinxsocexamples”,“比特流”,…“soc_memory_traffic_generator-zc706.bit”),”。/ soc_prj ');
点击负载按钮加载预生成的比特流。
运行这个例子,试验台的示例复制到项目文件夹中。
拷贝文件(fullfile (matlabroot,“工具箱”,“soc”,“socexamples”,…“soc_memory_traffic_generator_aximaster.m”),”。/ soc_prj ',“f”);
testbench配置生成的硬件ATG IP内核内存交通生成器。硬件上运行,突然请求的数量增加100倍,因为它的用途MATLAB®作为阿喜的主人IP样品回去给MATLAB®,其中包括大幅推迟访问硬件。负载soc_memory_traffic_generator_zc706_aximaster.mat文件和增加破裂的数量要求的所有硕士ATG配置100倍。保存.mat文件请求ATG配置。
输入以下命令运行试验台soc_memory_traffic_generator_aximaster。
soc_memory_traffic_generator_aximaster
试验台运行后,生成以下输出显示内存交通。所有大师通过带宽需求。
实现在Xilinx®Kintex®7 KC705发展局:KC705开发板上实现该模型,首先必须配置模型Xilinx®Kintex®7 KC705开发板和设置以下参数的例子。开放模型配置参数,导航到硬件实现选项卡并执行以下:
选择Xilinx®Kintex®7 KC705发展局从下拉列表中硬件板。
导航到目标硬件资源>FPGA设计(顶级)选项卡并启用包括MATLAB作为基于主机的交互AXI主IP。
导航到目标硬件资源>FPGA设计(mem控制器)选项卡并设置控制器的数据宽度(比特)来64年。
导航到目标硬件资源>FPGA设计(调试)选项卡并启用包括AXI互连监控。
接下来,打开SoC Builder和遵循的步骤如前所述Xilinx®Zynq®ZC706以上。修改拷贝文件命令匹配Kintex®7 KC705发展局比特流如下。
拷贝文件(fullfile (matlabshared.sup金宝appportpkg.getSupportPackageRoot,“工具箱”,“soc”,…“金宝appsupportpackages”,“xilinxsoc”,“xilinxsocexamples”,“比特流”,…“soc_memory_traffic_generator-kc705.bit”),”。/ soc_prj ');
总之,你模拟内存交通勘察设计在设计算法。你分析内存带宽和修改内存参数满足设计要求。你在硬件验证结果。