如何使用.mem文件初始化ROM并从PS-APU读取内容

描述

本篇博文旨在演示如何使用 .mem 文件来初始化 ROM 并从 PS-APU 读取内容。

AMD 参数化宏存储器:

AMD 参数化宏 (XPM) 是一种根据用户指定的要求创建 RAM 和 ROM 结构的工具。在 XPM 代码中,您可以指定多个泛型参数,包括存储器大小、时钟模式、存储器初始化文件、存储器原语等。

然后,AMD Vivado 综合工具会将这些要求转换为适当大小和样式的存储器阵列。

存储器初始化文件:

MEM 文件可以定义每个独立存储器位置的初始内容。文件格式必须为 ASCII,并且仅包含十六进制值,这些值按存储器最窄数据宽度泛型值指定的深度来进行组织。

仅当参数 MEMORY_INIT_PARAM 值等于 "" 时,才通过指定的文件名进行存储器初始化。在工程中使用 XPM_MEMORY 时,将指定文件作为设计源文件添加到 Vivado 工程中。

示例设计是使用 Vivado 2023.1 版本创建的,设计目标是 VCK190 评估板。在本篇博文中以附件形式提供了适用于此块设计的 Tcl 脚本和应用代码。

模块框图:

存储器

注释:此 Tcl 脚本 (design_1.tcl) 所创建的设计会包含以下模块引用:

xpm_sprom

rom_initialization_file

请在使用 source 命令运行此 Tcl 脚本之前,添加这些模块的源文件(xpm_sprom.v 和 rom_initialization_file.mem)。

AMD Vivado 步骤:

步骤 1:创建工程,目标为 VCK190 评估板。

步骤 2:在 IP integrator 中创建块设计。

步骤 3:将 versal_cips_0 IP 添加到块设计中。

步骤 4:运行块自动化设置,将 PL 时钟设置为 1,PL 复位设置为 1,并将存储器控制器类型设置为 DDR4。

存储器

存储器

步骤 5:打开 NoC Re-customize IP,在“Board”(开发板)选项卡中输入以下设置:

CH0_DDR4_0 = ddr4 dimm1

Sys_clk0 = ddr4 dimm1 sma clk

存储器

步骤 6:在“General”(常规)选项卡中输入以下设置:

Number of AXI Master Interfaces(AXI 主接口数)= 1

Number of AXI Clocks(AXI 时钟数)= 7

Number of Memory controller Ports(存储器控制器端口数)= 1

存储器

步骤 7:转至“Connectivity”(连接)选项卡,检查 S0xAXI 与 M00_AXI 之间的连接,然后单击“OK”(确定)。

存储器

步骤 8:将 AXI BRAM 添加到块设计中,然后单击“Run Connection Automation”(运行自动连接)。

存储器

步骤 9:再次单击“Run Connection Automation”,以连接到 ext_reset_in。

存储器

步骤 10:打开 AXI BRAM Controller Re-customize IP 块,输入以下设置:

Data width(数据宽度)=32

Read latency(读取时延)=1

启用“Read command Optimization”(读取命令优化)选项。

存储器

步骤 11:在 Flow Navigator 中的“Project Manager”(工程管理器)下,单击“Language Templates”(语言模板)。这样会打开“Language Template”对话框。在“Search”(搜索)字段中输入 xpm,然后选择相应的 HDL 代码 (VHDL/Verilog) 模板,如下图所示。复制并粘贴单端口 ROM 存储器的模板,然后将例化模板添加到 HDL 文件中。按照随附的 xpm_sprom.v 文件执行配置。

存储器

步骤 12:将 XPM 存储器块与设计的其余部分集成。您可以使用 IP integrator 工具将 XPM 存储器作为 RTL 模块进行集成。

存储器

步骤 13:生成要放入 ROM 中的 MEM 文件:

存储器

步骤 14:完成模块框图:

存储器

步骤 15:在“Address Editor”(地址编辑器)中为例化的存储器设置适当的深度。运行确认步骤,确认成功后,检查“Address Editor”(地址编辑器)选项卡。

存储器

步骤 16:为 BD 创建 HDL 封装文件,运行综合与实现,然后生成器件镜像。

步骤 17:导出硬件设计以获取 XSA 文件。

存储器

步骤 18:在 AMD Vitis 中创建新的应用工程,然后切换至“Create a new platform from hardware”(基于硬件创建新平台)选项卡。单击“+”,浏览找到从 Vivado 导出的 XSA 文件。

存储器

存储器

步骤 19:提供应用工程名称,输入 versal_cips_0_pspmc_0_psv_cortexa72_0,然后单击“Next”(下一步)。

存储器

步骤 20:选择“Hello World”,然后单击“Finish”(完成)。

存储器

代码快照:

创建完应用工程后,转至 main.c 并更新代码以读取 ROM 中的数据。

存储器

运行设计:

连接到 VCK190 评估板,并设置启动模式为 JTAG 启动模式,然后运行应用。

控制台输出示例:

存储器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分