《基于FPGA的数字信号处理》(第2版)试读章节——高层次综合设计方法

采用高级语言如C、C++、Matlab对系统建模是ESL设计理念的特征之一,将其称之为高层次综合。高层次综合跨越硬件领域和软件领域。对硬件工程师而言,它可以使硬件工程师工作在有别于传统RTL的抽象度更高的C语言层面上,加速算法开发;对软件工程师而言,它可以使软件工程师将计算密集型算法采用有别于传统CPU处理器的FPGA上实现。高层次综合可以使工程师在C语言层面上同时进行算法开发和算法验证。

Xilinx提供了另一工具Vivado HLS(Vivado High Level Synthesis),用于将C/C++/SystemC函数转换为HDL代码。其输入为待综合的C文件、C测试文件和综合指令,其中综合指令可在图形界面下设置,目的是指导Vivado HLS对特定对象如数组、for循环等如何处理,例如将数组映射为双端口RAM还是FIFO,将for循环展开还是折叠。其输出为经验证的RTL代码和HDL测试文件。其中HDL测试文件用于C/RTL协同仿真。这里C测试文件是必需的,一方面用于验证C算法功能是否正确;另一方面用于生成HDL测试文件以进行C/RTL的协同仿真。Vivado HLS文件构成如图2.15所示。

图2.15  Vivado HLS文件构成

图2.15 Vivado HLS文件构成

Vivado HLS对C代码的转换过程可分为时序安排(Scheduling)、资源规划(Binding)和控制逻辑提取(Control Logic Extraction)三个阶段[4]。其中时序安排用于决定每个时钟周期所执行的操作;资源规划用于决定这些操作选用FPGA中的何种资源实现;控制逻辑提取用于产生有限状态机(Finite State Machine,FSM),以控制数据路径的操作顺序,如图2.16所示。

图2.16  Vivado HLS工作原理

图2.16 Vivado HLS工作原理

基于Vivado HLS的高层次综合设计流程如图2.17所示。C仿真用于对C语言描述的算法函数进行功能验证,生成的文件存放在csim文件夹中;C综合用于完成C函数到RTL代码的转换,生成的文件存放在syn文件夹中;C/RTL协同仿真用于对生成的RTL代码进行功能验证,生成的文件存放在sim文件夹中;最终导出RTL结果存放在impl文件夹中。

图2.17  基于Vivado HLS的高层次综合设计流程

图2.17 基于Vivado HLS的高层次综合设计流程

Vivado HLS最终导出的RTL结果如图2.18所示,可以是HDL代码或综合后的DCP,便于直接添加到Vivado工程中;可以是封装好的IP,从而可在Vivado IP Integrator中调用或在Vivado工程中直接调用;可以是SysGen模型,从而可在SysGen中调用。

图2.18  Vivado HLS导出结果

图2.18 Vivado HLS导出结果

《基于FPGA的数字信号处理》(第2版)本书围绕Xilinx新一代28nm工艺芯片7系列FPGA,结合Xilinx新一代开发工具Vivado以及针对算法开发的Vivado HLS和System Generator,讲解了数字信号处理中的经典算法在FPGA上的实现方法。第2版保持了第1版的主题――如何将理论算法转化为工程实现,新增了算法的Matlab代码描述;增加了部分算法的System Generator模型。 讲解了FPGA实现时的一些细节问题如复位、跨时钟域设计等。
本书购买地址:
京东: http://item.jd.com/11727638.html
当当: http://product.dangdang.com/23733281.html
亚马逊: http://www.amazon.cn/
互动出版网: http://product.china-pub.com/4715650