lauren.gao 的blog

锁存器(Latch)是电平触发的存储单元,数据存储的动作取决于锁存信号的电平值。不完备的if语句和case语句均可被综合工具推断为锁存器,如VHDL代码8-2、VHDL代码8-3所示。

VHDL代码8-2 不完备的if语句被推断为锁存器

VHDL代码8-3 不完备的case语句被推断为锁存器

根据图7.32 所示SDF 的原理[7],以16 点基4 DIF FFT 为例,可得R4SDF 硬件架构,如图7.50 所示。图中BF4 表示基4 蝶形运算单元,执行的功能可表示为


图7.50 16 点R4SDF FFT 处理器运算单元架构

图7.50 16 点R4SDF FFT 处理器运算单元架构

采用硬件实现时,以12抽头FIR滤波器4插值为例,其硬件架构如图6.61所示,相应的时序如图6.62所示。采用SysGen设计时,如SysGen模型6-4所示。

图6.61  多相插值滤波器硬件架构

图6.61 多相插值滤波器硬件架构

图6.62  多相插值滤波器时序图

图6.62 多相插值滤波器时序图


函数sin(x) 和cos(x)根据式(5.16)展开并只取前两项可得

由此可得相应的硬件架构如图5.19 所示。与图5.12 相比,多了相位转换模块和Taylor 级数计算模块。相位转换模块的功能是完成相位累加器的输出到相位值的转换。事实上,相位累加器的输出是相位的索引。以 p 表示相位累加器的输出, pˆ 表示相位量化的输出,phase表示相位转换的结果,则三者的关系可表示为

在某些场合,系统的采样率较高或者滤波器阶数较高,在这种情况下,采用分布式逻辑资源的移位寄存器实现数据缓冲并不是最好的方法。此时,考虑采用Block RAM 模拟抽头延时链的行为实现数据缓冲则是十分可取的。为便于说明,本节以8 抽头FIR滤波器为例。

在讨论Non-Restoring 算法之前,我们先介绍一下传统的手工计算平方根的方法。为便于说明,以十进制数61458 为例,其平方根为247,余数为449,即。求解过程如图3.53 所示。这里以D 表示被开方数,Q 表示平方根, R 表示余数。

图3.53  手工计算平方根的过程

由图3.53 不难看出,求解过程可分为如下几步。

在四个基本运算中,除法运算最为复杂。这里,我们从传统的手工计算除法的方式说起。以两个无符号数相除为例,5621/3,如图3.42所示,图中5621为被除数(Dividend),3为除数(Divisor),最终的商(Quotient)为1873,余数(Remainder)为2。计算的第一步是获得商的最高位1,同时用被除数的最高位5减去3,如该图左半部分所示。事实上,这里的3表示的数值为3000,得到部分余数2621。同样地,第二步得到的部分余数为221。将部分余数的真实值还原如该图的右半部分所示,图中 表示部分余数。

图3.42  手工计算除法

图3.42 手工计算除法

采用高级语言如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所示。

本书围绕Xilinx新一代28nm工艺芯片7系列FPGA,结合Xilinx新一代开发工具Vivado以及针对算法开发的Vivado HLS和System Generator,讲解了数字信号处理中的经典算法在FPGA上的实现方法。第2版保持了第1版的主题――如何将理论算法转化为工程实现,新增了算法的Matlab代码描述;增加了部分算法的System Generator模型。 讲解了FPGA实现时的一些细节问题如复位、跨时钟域设计等。以下是部分节选章节:

《设计者的思想--基于FPGA的数字信号处理》连载八:重点分析Xilinx的Virtex-6的底层重要单元

同步内容