近年来,在数字通信、网络、视频和图像处理领域,fpga已经成为高性能数字信号处理系统的关键元件.fpga的逻辑结构不仅包括查找表、寄存器、多路复用器、存储器,而且还有快速加法器、乘法器和i/o处理专用电路.fpga具有实现高性能并行算法的能力,是构成高性能可定制数据通路处理器(数字滤波、fft)的理想器件.如virtex-ii pro fpga包含高性能的可编程架构、嵌入式powerpc处理器和3.125gbps收发器等.
但是,fpga在数字信号处理领域的广泛应用受限于几个因素.首先,dsp开发人员不熟悉硬件设计,尤其是fpga.他们使用matlab验证算法,运用c语言或汇编语言编程,通常不会使用硬件描述语言(vhdl或verilog)实现数字设计.其次,虽然vhdl语言也提供了许多高层次的语言抽象,但是基于并行硬件系统的vhdl程序设计与基于微处理器的串行程序设计有很大的不同.
基于以上原因,xilinx公司开发了基于matlab的system generator for dsp工具.system generator for dsp是simulink中一个基于fpga的信号处理建模和设计工具.该工具可以将一个dsp系统表示为一个高度抽象的模块,并自动将系统映射为一个基于fpga的硬件方案.重要的是,该system generator for dsp实现这些功能并没有降低硬件性能.
1 system generator for dsp的特点
simulink为dsp系统提供了强有力的高层次建模环境,可大量应用于算法开发和验证.system generator for dsp作为simulink的一个工具箱很好地体现了这些特性,同时又可以自动将设计转换为可综合的高效硬件实现方案.该硬件实现方案忠实于原始设计,因此设计模型与硬件实现在采样点(在simulink中定义)是一一对应的.通过使用xilinx精心设计的ip(intellectual property)核可以使硬件方案具有较小的延迟和体积.虽然system generator中的ip模块是经过功能抽象的,但是对于熟悉fpga的设计者来说,该模块也具有直接访问底层硬件细节的能力.例如,可以指定system generator乘法器模块使用virtex-ii系列fpga中的专用高速乘法器元件,用户定义的ip模块也能够作为黑盒子插入系统之中,等等.
使用system generator for dsp实现系统设计的主要特点有:
●在simulink中实现fpga电路的系统级建模,并自动生成硬件描述语言.
●自动生成modelsim测试程序,支持软硬件仿真.
●支持用户创建的simulink模块.
●使用xilinx fpga自动实现硬件系统.支持的xilinx fpga系列包括spartan-ii、spartan-iie、spar-tan-3、virtex、virtex-e、virtex-ii、virtex-ii pro.
2 使用system generator for dsp实现系统级建模
传统的dsp系统开发人员在设计一个dsp系统时,一般先研究算法,再使用matlab或c语言验证算法,最后由硬件工程师在fpga或dsp上实现并验证.典型的dsp系统设计流程如下:
(1) 用数学语言描述算法.
(2) 设计环境中使用双精度数实现算法.
(3) 将双精度运算变为定点运算.
(4) 将设计转换为有效的硬件实现.
使用system generator for dsp可以简化这一过程.设计人员先在matlab中对系统进行建模和算法验证,经过仿真后便可以直接将系统映射为基于fpga的底层硬件实现方案.可用simulink提供的图形化环境对系统进行建模.system generator for dsp包括被称为xilinx blockset的simulink库和模型到硬件实现的转换软件,可以将simulink中定义的系统参数映射为硬件实现中的实体、结构、端口、信号和属性.另外,system generator可自动生成fpga综合、仿真和实现工具所需的命令文件,因此用户可以在图形化环境中完成系统模型的硬件开发.图1为使用system generator for dsp设计系统的流程图.
在matlab中,我们可以通过simulink的库浏览器使用xilinx blockset库中的模块,xilinx blockset库中的模块可以与simulink其它库中的模块自由组合.xilinx blockset库中最重要的模块是system gen-erator,利用该模块可完成系统级设计到基于fpga的底层硬件设计的转换工作.可以在system generator模块的属性对话框中选择目标fpga器件、目标系统时钟周期等选项.system generator将xilinx blockset中的模块映射为ip库中的模块,接着从系统参数(例如采样周期)推断出控制信号和电路,再将simulink的分层设计转换为vhdl的分层网表,之后,system generator即可调用xilinx core generator和vhdl模拟、综合、实现工具来完成硬件设计.
由于一般的fpga综合工具不支持浮点数,因此system generator模块使用的数据类型为任意精度的定点数,这样可以实现准确的硬件模拟.由于simulink中的信号类型是双精度浮点数,因此在xil-inx模块和非xilinx模块之间必须插入gateway in block和gateway out block模块.通常simulink中的连续时间信号在gateway in block模块中进行采样,同时该模块也可将双精度浮点信号转换为定点信号,而gateway out block模块则可将定点信号转换为双精度浮点信号.大部分xilinx模块能够根据输入信号类型推断输出信号的类型.如果模块的精度参数定义为全精度,则模块将自动选择输出信号类型以保证不损失输入信号精度,并自动进行符号位扩展和补零操作.用户也可以自定义输出信号类型来进行精度控制.
3 使用中需注意的问题
在fpga系统设计中,时钟的设计十分重要.因此必须正确理解system generator中的时钟和fpga硬件时钟之间的关系.simulink中没有明确的时钟源信号,模块在系统参数中定义的采样周期点进行采样.硬件设计中的外部时钟源对时序逻辑电路十分重要.在system generator模块中,通过定义simulink system period和fpga system clock period参数可以建立simulink采样周期和硬件时钟间的关系,也可通过设置这些参数来改变simulink中模拟时间和实际硬件系统中时间的比例关系.simulink的系统周期一般是各模块采样周期的最大公约数.fpga的硬件时钟是单位为ns的硬件时钟周期.例如,若simulink中有两个模块,采样周期分别为2s和3s,而fpga系统时钟周期为10ns,则simulink系统周期应该为两个模块采样周期的最大公约数即为1s.这意味着simulink中的1s对应实际硬件系统的10ns.在生成硬件系统前,system generator将自动检查用户定义的simulink系统周期参数是否与系统中模块的采样周期相冲突,如果冲突,则提示用修改simulink系统周期参数.
有些情况会导致system generator模块产生不确定数(nan-not a number).如在双端口ram模块中,两个端口同时对模块中的某一地址进行写操作时,该地址中的数据将被标记为nan.如果模块中有不确定数出现,则表明该模块的最终硬件实现将会有不可预测的行为,当simulink进行仿真时,system generator将会捕捉该错误.
4 应用实例
图2是一个图像处理应用实例的系统实现框图.该应用实例使用5×5的二维fir滤波器完成图像增强预处理.该系统将输入图像分别延迟0×n(n为输入图像宽度)、1×n、2×n、3×n、4×n个采样点后输入5个line buffer,数据在line buffer中缓存后并行输入5个5抽头的mac fir滤波器.滤波器系统存储于fpga的块ram中,图像数据经滤波器处理后输出.图3为line buffer实现框图,图4为5×5滤波器框图.
选择合适的汽车连接器能够帮助ADAS系统避免误判
新荣耀的机遇和挑战何在?
chatgpt爆火导致芯片需求暴涨
电动机绕组布线接线圆图
红米Note 5拆机步骤
基于System Generator for DSP工具实现FPGA系统的设计方案
TWS耳机将在2019年见证其历史上最强劲的一年
机器翻译中细粒度领域自适应的数据集和基准实验
魅族官方已经确认魅族16s Pro梦幻独角兽配色并没有停产
谷歌苹果华为阿里谁将问鼎IoT OS战场
高通终止与苹果合作,苹果2018新机基带订单究竟花落谁家?
T10A250v保险丝的作用
探索外骨骼机器人的创新之旅
一分钟就能了解农业物联网
特斯拉电动卡车再接订单 联合包裹预订125辆
华为智选 力博得智能冲牙器Pro全网开售,冰山家族又添新成员
什么是摄影测量 摄影测量法的分类及原理
保证排针排母连接器质量因素的五个方法
三星Z Flip被爆出现了质量问题折叠一次中间区域就破碎了
双摄新机一加5、小米6、华为荣耀9等手机对比,看谁效果最好