System Generator学习——将代码导入System Generator(三)

简介: System Generator学习——将代码导入System Generator

System Generator学习——将代码导入System Generator(二)https://developer.aliyun.com/article/1472313


三、用 C/C++ 代码建模块

1、引言

Vivado 设计环境的系统版包括 Vivado HLS 功能,它具有将 C/C++ 设计源转换为 RTL 的能力。System Generator 在 Xilinx Blockset/Control Logic 和 Xilinx Blockset/Index 库中有一个 Vivado HLS 块,使你能够将 C/C++ 源文件引入到 System Generator模型中。

2、目标

完成本实验后,您将能够使用 Vivado HLS 将 C,C++ 或 SystemC 合成的设计作为块合并到你的 MATLAB 设计中

3、步骤

在这一步中,将首先使用 Vivado HLS 合成一个 C 文件。你将在 Vivado DSP 设计项目中操作,使用 MATLAB 中的设计文件以及相关的 HDL 包装器和约束文件。在第 2 部分中,你将把 Vivado HLS 的输出合并到 MATLAB 中,并使用 MATLAB 丰富的仿真功能来验证 C 算法是否正确地过滤了图像。

4、第 1 部分:从 Vivado HLS 创建一个系统生成器包

①、打开 Vivado HLS 2017.4

②、在欢迎界面中选择 Open Project,然后导航到 Vivado HLS 项目目录 D:\Work\system_generator学习资料\ug948-design-files\SysGen_Tutorial\Lab2\C_code\hls_project,如下图所示

③、展开 Explorer 窗格中的 Source 文件夹(左侧)并双击文件 MedianFilter.cpp,以查看 C++ 文件的内容,如下图所示

这个文件在 3x3 窗口大小上实现了一个二维中值过滤器

④、通过右键单击 solution1 并选择 C Synthesis > Active Solution,如下图所示

当合成完成时,Vivado HLS 显示这个消息:完成 C 合成。现在将源代码打包,以便在 System Generator 中使用

⑤、右键单击 solution1 并选择 Export RTL,如下图所示,选择 “Format Selection” 为 “System Generator for DSP”,单击 “OK”

当导出 RTL 过程完成时,Vivado HLS 显示此消息:Finished export RTL.

5、第 2 部分:在 System Generator 设计中包含一个 Vivado HLS 包

①、启动 System Generator,打开 Lab2_3。Lab2/C_code 文件夹下的 Lab2_3.slx 文件。这将打开模型,如下图所示:

②、通过右键单击画布工作区上的任何位置来添加一个 Vivado HLS 块

  • 选择 Xilinx BlockAdd
  • 在 “添加块” 对话框中输入 Vivado HLS
  • 选择 Vivado HLS,如下图所示

③、双击 Vivado HLS 块打开属性编辑器,使用 Browse 按钮选择 Vivado HLS 在第 1 部分 中创建的解决方案,位于D:\Work\system_generator学习资料\ug948-design-files\SysGen_Tutorial\Lab2\C_code\hls_project\solution1,如图所示:导入 Vivado HLS IP,单击 “确定”,导入 Vivado HLS IP

④、连接模块的输入输出端口,如下图所示:

⑤、导航到噪声图像子系统,双击来自文件的图像块 xilinx_logo.png,打开源块参数对话框,使用 Browse 按钮确保文件名正确指向文件 xilinx_logo.jpg,如下所示

单击 “确定”,退出 “源块参数” 对话框。

⑥、使用 “向上至父级” 工具栏按钮可返回到顶层,仿真设计并验证图像被过滤,如下图所示


总结

在这个实验室里你学到了

  • 如何使用 M-Code 创建控制逻辑。最终的设计可用于创建 HDL 网络列表,与使用 Xilinx Blocksets 创建的设计相同
  • 如何通过结合现有的 VHDL RTL 设计来使用 HDL 在 System Generator 中建模块,以及将 System Generator 模型的数据类型与 RTL 设计的数据类型匹配的重要性,以及如何在 System Generator 中模拟 RTL 设计
  • 如何将用 C++ 编写的滤波器,用 Vivado HLS 进行合成,并将设计融入到 MATLAB 中。这个过程允许您使用任何 C,C++ 或 SystemC 设计,并创建一个自定义块用于您的设计。本练习向您展示了如何导入由 Vivado HLS 生成的 RTL 设计并在 MATLAB 中使用该设计
目录
相关文章
|
PHP 异构计算
Matlab Simulink支持system generator插件
Matlab Simulink支持system generator插件
453 0
雷达波形之一——LFM线性调频波形
雷达波形之一——LFM线性调频波形
1956 1
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
开发工具 异构计算 Perl
|
移动开发 算法 数据安全/隐私保护
基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的QPSK调制解调系统,通过Vivado 2019.2进行仿真,展示了在不同信噪比(SNR=1dB, 5dB, 10dB)下的仿真效果。与普通QPSK系统相比,该系统的软解调技术显著降低了误码率。文章还详细阐述了QPSK调制的基本原理、信号采样、判决、解调及软解调的实现过程,并提供了Verilog核心程序代码。
653 26
|
Ubuntu 安全 网络协议
|
编译器 异构计算
System Generator初体验FIR滤波器(一)
System Generator初体验FIR滤波器
441 1
|
存储 芯片 SoC
ZYNQ程序固化
ZYNQ程序固化
System Generator学习——将代码导入System Generator(二)
System Generator学习——将代码导入System Generator
307 1
|
C++
System Generator学习——将代码导入System Generator(一)
System Generator学习——将代码导入System Generator
243 1