这个例子展示了如何从FPGA对外部存储器访问进行建模,以旋转ASCII艺术图像。许多应用要求FPGA按照算法要求随机存取存储器。您将学习如何设计内存地址生成以及使用SoC块集读取和写入特定内存区域的其他AXI4主信号。您将在硬件上模拟、实现和验证您的设计。
金宝app支持的硬件平台:
Artix®7 35T Arty现场可编程门阵列评估工具包
赛灵思Kintex®7 KC705开发板
Xilinx Zynq®ZC706评价试剂盒
锡林克斯Zynq超声仪™+MPSoC ZCU102评估工具包
Altera的的Cyclone®V SoC开发套件
Altera公司的Arria®10 SoC开发套件
所述ASCII技术的图像被编码为24 * 64的UINT8字符矩阵。设计任务是通过模拟在FPGA逻辑AXI4主接口用于外部存储器访问来旋转图像。通过模拟与外部存储器模型和AXI4协议的设计,您在验证应用程序设计时的行为。这样可以节省时间,在实施阶段,调试硬件设计,否则花。
总体数据流将在下面图中所描述的。图像被存储在外部存储器中的存储区域从0x00000000地址到0x000017FF。FPGA算法从该区域读取图像,并通过以相反的顺序写入所述存储区域从0x00001800旋转它。最后,数据从内存读取。
该模型是使用模型引用的结构。超模 'soc_image_rotation“包括FPGA模型”soc_图像_旋转_fpga'使用模型块作为模型参考。
顶部模型包括以下方面:
测试台输入:它对刺激进行建模,以建立模拟设计。这个AXI4主源
块初始化外部存储器的输入图像数据。这个算法开始
块通过寄存器通道块向FPGA算法发送启动信号。打开预加载功能soc_image_rotation_init.m怎么看模型参数和输入数据进行初始化。
测试台输出:该AXI4主水槽
块对从外部存储器读取输出图像数据进行建模。输出数据保存在工作区中的变量AXI4MasterSinkContent中。启停功能soc_图像_旋转_post.m查看如何绘制输入数据和输出数据。
记忆:存储器系统使用一个内存控制器和两个存储器通道块建模。输入只读存储器通道
块对存储输入图像的存储器区域1建模,并且输出写入内存通道
块对存储旋转图像的存储器区域2建模。
现场可编程门阵列:此区域实例化对AXI4主接口和数据旋转的逻辑建模的FPGA模型参考。
该算法在三个子系统中实现,Axi4主机
,ReverseDataOrder
和Axi4主机
。图像旋转打开FPGA子系统:
作为正沿开始
检测到信号,AXIMasterRead公司
读取一行图像数据并将其传递给ReverseDataOrder
用于反转数据的顺序。然后,通过AXIMasterWrite公司
子系统。一旦一行的数据被写入,它就会发送一个信号request_next_line
触发下一行的读取AXIMasterRead公司
. 这个循环一直持续到图像的所有行都被处理完毕。
打开AXI4MasterReadController和AXI4MasterWriteController块来检查AXI4主接口的MATLAB®代码。这些块设计用于读取和写入操作的寻址逻辑按照AXI4协议。SoC的模块库支持AXI4金宝app万事达协议和AXI4信号的时序图,请参考AXI4主界面生成模型设计。
运行模型并从FPGA模型打开逻辑分析仪。请注意以下要点:
数据的一行被写入/由主人在一个突发读取。由于每一行是长64个字符;突发长度为64(0×40)。需要注意的信号这个值rd_len
和沃伦
。
每个字符扩展到uint32数据类型时有4个字节,这使得64x4行的长度为256(0x100)字节。因此,地址递增/递减0x100。注意这个地址
和wr_addr
信号。
一个读突发后是一个写突发。如何观察德瓦利德
和瓦利德
交替切换。
request_next_line
每次写入突发后断言,触发下一次读取突发。
在模拟结束时绘制输入和输出图像:
本节要求提供以下产品下载188bet金宝搏:
HDL编码器™
SoC的模块库支持包Xil金宝appinx器件,或
针对英特尔设备的SoC块集金宝app支持包
为了实现在支持的FPGA板型号,使用金宝appSoC的构建应用。执行前请确保您已安装所需的产品和FPGA供应商软件。下载188bet金宝搏
打开SoC的构建通过点击“配置,构建和部署”的工具条按钮,并按照下列步骤操作:
在“设置”屏幕上选择“生成模型”。单击“下一步”。
单击“查看/编辑内存映射”可在“查看内存映射”屏幕上查看内存映射。注意,基址0x00000000被分配给输入只读存储器通道
块,以及基地址0x00001800被分配给输出写入内存通道
封锁。AXI4地址是基址和来自FPGA算法的地址之和。例如,wr_addr
从FPGA开始,算法从0x1700开始。输出数据将从地址0x00001800+0x1700=0x00002800写入外部存储器。参考AXI4主界面生成模型设计约基地址寄存器的计算的详细信息。点击下一步'。
在“选择项目文件夹”屏幕上指定项目文件夹。单击“下一步”。
选择“选择Build行动”屏幕上“建造,负载和运行”。点击下一步'。
点击“验证”检查模式的兼容性“验证模式”屏幕上实现。点击下一步'。
单击“生成”开始在“生成模型”屏幕上生成模型。当FPGA合成开始时,外部外壳将打开。单击“下一步”以“加载位流”屏幕。
该FPGA合成可能需要超过30分钟完成。为了节省时间,您可能希望通过以下步骤来使用所提供的预先生成的比特流:
关闭外壳终止合成。
通过运行下面,然后将命令复制生成的预流到项目文件夹,
单击“加载”按钮加载预生成的比特流。
的CopyFile(完整文件(matlabroot,'工具箱','SOC','socexamples',“比特流”,'soc_image_rotation-zc706.位'),'./soc_prj');
要运行此示例,请将示例测试工作台复制到项目文件夹中。
的CopyFile(完整文件(matlabroot,'工具箱','SOC','socexamples','soc_image_rotation_aximaster.m'),'./soc_prj',“f”);
输入以下命令来运行测试平台:
soc_图像_旋转_aximaster
该试验台执行以下操作:
初始化图像旋转IP
写入输入的图像数据到外部存储器
启动图像旋转操作
从外部存储器读取并显示输出图像数据
如果您的FPGA板不是Xilinx Zynq ZC706评估工具包,在启动SoC生成器之前,您需要在顶级模型的配置参数中进行以下设置。
选择“硬件板”下“硬件实现”面板,以配合您的主板。
取消选中“包括处理系统”下“硬件实现 - >目标硬件资源 - > FPGA设计(顶级)”面板。
在“硬件实现->目标硬件资源->FPGA设计(mem通道)”面板下,将“互连数据宽度(位)”设置为“32”。
可用的预产生的位流:
'soc_image_rotation-zc706.位'
soc_图像旋转-艺术比特'
'soc_image_rotation-kc705.位'
'soc_image_rotation-a10soc.sof'
修改复制文件命令和示例测试工作台,以匹配您的板和选定的项目文件夹(视情况而定)。请注意,如果自定义内存映射,则预生成的位流可能无法工作。
该示例示出了使用的SoC模块库通过旋转ASCII艺术图像以随机方式访问外部存储器的AXI4主接口建模。您可以使用此作为指导来设计自己的算法来直接访问存储器使用AXI4主协议。