ug871 Lab1

实验平台

        Vitis HLS 2021.2

        Windows 10

实验内容

        本实验展示了如何创建高级综合项目、验证 C 代码、将设计综合到 RTL 以及验证 RTL。

实验步骤

Step 1:创建一个新的工程

  1. 点击Vitis HLS的图标
  2. 在HLS界面上点击Create Project
    1. 输入项目名字为fir_prj
    2. 将项目目录修改为E:\FPGA\UG871\Lab1
    3. 点击Next
  3. 指定C设计文件
    1. 点击New Files
    2. 在Lab1文件夹下添加src文件夹
    3. 然后将fir.cpp文件添加到src文件下
    4. 同样的方式添加fir.hpp头文件
    5. 点击Next
  4. 添加测试文件
    1. 点击New Files
    2. 然后将fir_test.cpp文件添加到src文件下
    3. 点击Next
  5. 解决方案配置
    1. 点击Part Selection
    2. 将Family选中zynq,Sub-Family选中Zynq-7000
    3. 然后选中xc7z020clg400-2
    4. 点击OK
    5. 点击Finish

Step 2:验证C源代码

  1. 从官网上下载对应源码,然后将其复制到文件中。需要注意的是HLS 2021版本只支持C++,而下载的源码是C源码,需要自己手动调整部分内容。
    1. 需要在源码的基础上添加#include ,system函数定义在了该头文件中。
  2. 将out.gold.dat添加到out.gold.dat文件中。
  3. 添加Top函数
    1. 点击Project
    2. 点击Project Settings
    3. 点击Synthesis
    4. 点击Browse,选中fir.cpp
    5. 点击OK
  4. 点击Run C Simulation

Step 3:高级综述

  1. 点击Run C Synthesis,结果如下图所示:ug871 Lab1_第1张图片
    1. Vivado HLS的时钟周期为时钟目标减去时钟不确定性,应是图片中的10.00 - 2.70 = 7.30ns
    2. 时钟不确定性有利于留出时序用于布局或布线导致的未知网络延迟。
    3. 最坏的延迟为7.050ns,小于HLS的时钟周期7.30ns,因此满足时序要求。
    4. fir函数的具有26个周期延迟,也就是说函数26个时钟周期后才能输出结果。
    5. fir函数读取下一组数据需要27个时钟周期。
    6. fir函数的Shift_Accoum_Loop部分一共执行11次,每一次的延迟是5个时钟周期,累计55个时钟周期,而实际只有24个时钟周期的延迟,说明启动了流水线。
    7. fir相较于Shift_Accoum_Loop部分多了两个时钟周期,而ug871中讲到一个时钟用于进入循环,而另一个时钟周期不知道怎么来的?
    8. 该设计使用了3个DSP,247个FF和223个LUT,这些资源只是估算值。
      1. 进行RTL合成时可能进行一些优化,因此估计并不准确。

Step 4:RTL验证

  1. 点击Run CoSimulation
  2. 点击OK
  3. Status为Pass才是通过RTL验证。

Step 5:生成IP核

  1. 点击Export RTL
  2. 点击OK
  3. 生成的IP核在对应solution1\impl\ip文件夹下。

你可能感兴趣的:(#,FPGA,fpga)