一、FPGA信号处理的方法
在数字信号处理方面,FPGA比DSP具有更多的优势,主要表现在速度和性能。FPGA处理的性能取决于处理数据的并行结构,而微处理器与所运行的频率密切相关。
如下图所示,传统的微处理器和DSP在实现256阶FIR滤波器时,采用了顺序的处理结构。这样,就限制了数据的吞吐量。由于这个处理结构采用的是共享时间的乘积累加(Multiply Accumulate,MAC)单元,因此通过高频率驱动这个单元会造成系统的竞争力的降低。在这个结构中,每个数据采样执行256个乘和加操作。每256个时钟周期才能输出一个结果。
当采用FPGA的并行处理结构时,可以得到最大的数据吞吐量。由于这种结构支持任何的并行度,因此可以很好地在性能和成本之间进行权衡。在这个结构中,每个数据采样同时执行256个乘和累加(MAC)操作,可以在每个时钟周期输出一个结果。
以前使用FPGA进行数字信号处理比较困难,是由于使用HDL语言描述数字信号处理模型非常麻烦。但是,随着高级建模工具SysGen的出现,使得在FPGA内构建数字信号处理的模型变的更加简单。所以越来越多的高性能信号处理都采用FPGA实现,而不使用DSP。
通常使用标准的Simulink块集创建一个可执行的规范。该规范可以使用浮点数值精度进行设计,而不需要知道详细的硬件细节。一旦定义了功能和基本的数据流,SysGen可以用来为Xilinx的器件指定硬件的实现细节。SysGen使用了Simulink中的Xilinx DSP块集,并且通过自动调用Xilinx的核生成器为所构建的DSP模块生成经过优化的网表。此外,SysGen可以执行所有的下游的实现工具,为FPGA生成比特流文件。同时可以选择通过使用来自Simulink所提取出来的测试向量创建用于ModelSim的测试平台。
SysGen并不是用来取代基于HDL的设计,但是可以是设计的注意力只集中在关键的部分。类似地,绝大部分的DSP程序员都不会专门在汇编器中编程,他们都使用高级语言编程。只有在必须满足性能要求时才使用汇编。
拇指规则:在设计中必须管理内部硬件时钟的部分,应该使用HDL实现。设计中少量的关键部分使用SysGen实现,然后将HDL和SysGen设计连接起来。通常,除了外部接口以外,一个信号处理系统的绝大部分不需要这个级别的控制。System Generator 提供了机制,用于将HDL代码导入到设计中,这是HDL设计者十分感兴趣的。另一个令设计者感兴趣的方面是,SysGen能自动地生成HDL测试平台,包括测试向量。
通过硬件协同仿真处理接口,我们可以在Simulink的控制下,在硬件上运行设计。这样,可以充分发挥matlab和Simulink用于数据分析和可视化的功能。
二、FPGA设计模块的介绍
Xilinx Blockset,包含了基本的SysGen模块,一些模块是底层的,提供了对器件指定硬件的访问,其他是高层次的,实现信号处理和高级的通信算法。为了方便,具有广泛适用的模块(如Gateway I/O块)是很多库的成员。每个模块包含在Index库中。
Xilinx Reference Blockset 包含了SysGen的复合体,用于实现范围更广的功能
三、信号模型的构建
1、模型的时域表达式
通过 Z 变换 变换到 Z 域
2、打开System Generator,会打开matlab(版本为R2015b),然后在命令窗口输入 simulink,然后simulink 就被打开了。
在Simulink下新建一个空白的设计界面。然后在Simulink主界面的Library Browser窗口下展开Xilinx Blockset,点击击Floarting-Point,出现用于浮点信号处理的IP 核元件。如下图所示。
将Gateway In 和Gateway Out 元件拖入到设计中。
Gateway In元件作用:
Gateway Out 作用:
拖拽3个Delay元件和CMult元件、Addsub元件到设计窗口。
展开Xilinx Blockset,找到Basic Elements,将System Generator 元件拖入设计窗口。
在主界面的Libraries窗口下,找到并展开Simulink,找到Sinks,将Scope元件拖入到设计中。(打开Scope元件符号,将Number of axis 设置为2)
按照如下图所示连接元器件
3、模型参数的设置
(1)Sine Wave
先介绍一下正弦信号的类型(Sine type)
在该模式下有两个可以选择的子模式,即连续模式和离散模式。Sample time 参数的值确定子模式,当该参数为0时,是连续模式,当该参数大于0时,是离散模式。
2.基于采样(Sample-Based)的模式,使用下面的公式:
其中,A是信号的幅度,P是每个正弦周期的采样个数,k是重复的整数值,其范围从0~(p-1), o 是信号的偏置(相位移动);b是信号的直流偏置。
参数按如下图配置
双击Gateway In符号,打开参数设置对话框,参数设置为:Output Type : Float-point;Floating-point Precision:Single其他参数默认。
双击Delay1符号,在Basic标签页,设置Latency为2;Delay2的Latency设置为3。
双击CMult符号,参数设置如下:Constant value:3;Constant Type: Floating-point;Floating-point Precision: Single。
双击CMult1符号,参数设置如下:Constant value:4;Constant Type: Floating-point;Floating-point Precision :Single;
双击CMult2符号,参数设置如下:Constant value: 1.5;Constant Type: Floating-point;Floating-point Precision:Single
双击所有Addsub符号,将Latency设置为0(无延迟)
4、模型的仿真
在设计窗口的工具栏的文本框中输入45.0;然后单击仿真按钮,开始仿真;仿真结束后,在设计中双击Scope符号。显示如下图
5、生成模型子系统
鼠标选中Gateway In 和Gateway Out之间的区域,单击鼠标右键,在弹出的快捷菜单中,选择Create Subsystem From Selection 命令。
6、模型HDL代码的生成
双击System Generator 符号,参数设置如下
然后单击Generate。
7、打开设计文件并仿真
在netlist子目录下打开该工程,然后进行行为级仿真
文章评论(0条评论)
登录后参与讨论