最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

高层次综合器(Vivado HLS)的设计流程[原创www.cnblogs.com/helesheng]

来源:博客园

最近在写一本Xilinx的FPGA方面的书,现将HLS部分内容在这里分享给大家,希望大家喜欢,也欢迎批评指正。以下原创内容欢迎网友转载,但请注明出处:https://www.cnblogs.com/helesheng

下面用一个简单实例来演示使用高层次综合器进行硬件设计的流程,带领读者以点带面的掌握Vivado HLS的设计方法。

有限冲击响应滤波器,简称FIR(Finite Impulse Response)滤波器,是数字信号处理系统中最常见的算法之一。相比无限冲激响应滤波器(IIR)滤波器而言,FIR滤波器虽然计算效能较低,但它具有以下两个明显优势:


(资料图片仅供参考)

(1)严格线性相位;

(2)冲击响应长度有限,永远稳定。

可编程逻辑器件的高并行性、计算速度快的优势,正好克服了FIR滤波器计算量大的劣势。下面以FIR滤波器的实现为例,介绍HLS的开发和优化流程。实验内容及步骤如下:

1、打开Vivado HLS(Vivado HLS是一个单独的应用程序,可以不依赖于Vivado打开),如图8.2.1所示,单击开始界面的Create New Project。

图8.2.1 新建Vivado HLS工程界面

2、如图8.2.2所示,输入新建的工程名称,指定路径,单击Next。

图8.2.2 在指定目录创建工程

3、在如图8.2.3和8.2.4所示的界面,分别添加已有的设计文件和测试脚本。(初次创建工程,可以不添加任何文件或脚本,单击Next跳过)

图8.2.3 添加已有的设计文件

图8.2.4 添加已有的测试脚本

4、在图8.2.5所示的方案配置界面中,设置默认的时钟周期为10ns,单击Part Select区域右侧的选择按钮,并在弹出的图8.2.6所示界面中筛选工程中使用的器件。返回方案配置界面,单击Finish完成新建工程。

图8.2.5 配置方案界面

图8.2.6 选择工程中使用的器件

5、右键单击工程主界面左侧的Explorer栏的Source,选择New File,新建一个fir.h文件和一个fir.c文件。

头文件内容:

1 #ifndef FIR_H_ 2 #define FIR_H_ 3 #define N    11 4 typedef int    coef_t; 5 typedef int    data_t; 6 typedef int    acc_t; 7 void fir ( 8   data_t *y, 9   coef_t c[N+1],10   data_t x11   );12 #endif
代码8.3

C语言源码:

1 #include "fir.h" 2 void fir(data_t *y,data_t x) 3 { 4       coef_t C[N] = {    53,0,-91,0,313,500,313,0,-91,0,53}; 5       data_t shift_reg[N]; 6       acc_t acc; 7 int i; 8   acc=0; 9   Shift_Accum_Loop: 10 for (i=N-1;i>=0;i--) {11         if (i==0) {12             shift_reg[0]=x;13             data = x;14       } 15          else {16             shift_reg[i]=shift_reg[i-1];17             data = shift_reg[i];18       }19     acc+=data*c[i];;       20   }21   *y=acc;22 }
代码8.4

此时Vivado HLS的界面如图8.2.7所示。

图8.2.7 Vivado HLS工作界面

6、单击上图界面中的Project菜单,选择Project Setting…,在弹出的图8.2.8界面左侧选择Synthesis,并在右侧的Synthesis Setting界面中配置本工程的顶层函数为fir.c文件中的fir函数,随后单击右下角的OK按钮,确认选择。

图8.2.8 配置工程的顶层函数

7、单击工程界面上方的运行C语言综合按钮(图8.2.7所示界面上方的绿色三角形按钮),Vivado HLS将对C语言源文件进行分析和综合,产生硬件描述语言的文件输出。

8、等待Vivado HLS完成综合,综合完成后会弹出图8.2.9所示的综合报告,其中显示了未做任何优化配置情况下,图8.2.7所示的C语言源码描述的有限冲击响应滤波器所占用的可编程逻辑器件资源、时钟、设计延迟、吞吐量等详细信息。

图8.2.9 综合报告

9、右键单击Explore栏的Test Bench,新建一个测脚本文件,命名为fir_test.c(该文件是图8.1.2所示的“C测试集文件”)。其源码如下。

1 #include  2 #include  3 #include "fir.h" 4 int main () { 5   const int    SAMPLES=600; 6   FILE         *fp; 7   data_t signal, output; 8   coef_t taps[N] = {0,-10,-9,23,56,63,56,23,-9,-10,0,}; 9   int i, ramp_up;10   signal = 0;11   ramp_up = 1;  12   fp=fopen("out.dat","w");13   for (i=0;i<=SAMPLES;i++) {14       if (ramp_up == 1) 15           signal = signal + 1;16       else 17           signal = signal - 1;18     // Execute the function with latest input19     fir(&output,taps,signal);    20     if ((ramp_up == 1) && (signal >= 75))21         ramp_up = 0;22     else if ((ramp_up == 0) && (signal <= -75))23         ramp_up = 1;        24         // Save the results.25     fprintf(fp,"%i %d %d\n",i,signal,output);26   }27   fclose(fp);  28   printf ("Comparing against output data \n");29   if (system("diff -w out.dat out.gold.dat")) {30          fprintf(stdout, "*******************************************\n");31          fprintf(stdout, "FAIL: Output DOES NOT match the golden output\n");32          fprintf(stdout, "*******************************************\n");33      return 1;34   } else {35          fprintf(stdout, "*******************************************\n");36          fprintf(stdout, "PASS: The output matches the golden output!\n");37          fprintf(stdout, "*******************************************\n");38      return 0;39   }40 }
代码8.5

10、将图8.1.3中所示的“黄金参考”(即算法计算产生的标准答案)out.gold.dat文件拷贝到工程文件中。并用单击Explore栏的Test Bench,将黄金参考添加到工程中。

11、单击工程界面上方的Run C Simulation按钮,进行代码测试。根据上面的fir_test.c测试代码,若代码的运行结果与黄金参考一致,界面下方的Console窗口中将打印出PASS: The output matches the golden output! 的字样。

图8.2.10 C语言测试

12、至此为止,编写的代码所实现的算法如果功能正确,且在占用资源、设计延迟、吞吐量等方面都已经达到了设计目标,则可以导出高层次高层次综合器产生的硬件描述语言代码,以供Vivado在工程中调用该算法。

在Solution菜单中选择Export RTL,在弹出的界面如图8.2.11所示,选择最常用的生成IP方式导出,单击OK,Vivado HLS将产生可供Vivado调用的IP。界面下方的Console窗口中输出Finished export RTL时,就可以在…\solution1\impl\ip文件夹下看到生成的IP.zip文件。

图8.2.11 输出硬件描述语言RTL配置界面

[原创www.cnblogs.com/helesheng]

关键词: 硬件描述语言 右键单击 可编程逻辑器件