【FPGA-DSP】第一期:DSP基础

这篇具有很好参考价值的文章主要介绍了【FPGA-DSP】第一期:DSP基础。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. DSP基础 

1.1 DSP基本概念

1.2 FPGA实现DSP的特点

2. DSP硬核的结构与使用

3. FPGA设计DSP技术

3.1. 浮点数与定点数的表示与转换

3.1.1. 双精度浮点数表示

3.1.2. 双精度浮点数与定点数的转换


本章作为FPGA数字信号处理的入门介绍课程,将介绍DSP的基本原理                                           

通常的数字信号处理器只包含一个或几个乘法器,需要进行多次迭代完成运算。不同的是从平台级 FPGA 开始,器件中集成了大量数字信号处理(DSP)的硬件模块,成为对信号进行并行处理的引擎,利用 FPGA 实现数字信号处理算法可以满足信号处理系统所提出的高性能要求,因此得到越来越广泛的应用。本章讨论采用 FPGA 硬件实现 DSP 系统的设计方法。

1. DSP基础 

1.1 DSP基本概念

DSP 与其他通用计算技术相互区别的两个重要特性是实时流量要求数据驱动特性。DSP 的硬件实现应该以满足实时处理的流量约束来设计,新的输入采样从信号源周期地按收时就需要立即处理,这与先在缓冲器存储,然后按批作业处理不同。如果系统的流量比要求的采样率低,必须停止或缓冲新的输人采样,并需要无限长的缓冲器。但是,一旦硬件达到要求的采样率和实时流量处理的能力,就没必要提高计算的执行速度。

因为FPGA有着强大的实时计算能力,一旦输入数据有效,FPGA就会进行数据处理,这种系统是由数据流同步的,而不是系统时钟同步。DSP程序可以实现对一个无限长时间信号进行重复的数据处理。DSP系统的时钟速率一般和采样率是不同的。

在进行DSP处理前,首先要对模拟信号进行采样的处理,将模拟信号转换成数字信号。若不在最佳采样点采样,可能会引入混迭和其他不期望的频率分量。同时采样尽量使信号的有效动态范围达到满量程,实现最大信噪比,减小量化误差。

【FPGA-DSP】第一期:DSP基础

最小的采样率称为 Nyquist 频率。在 Nyquist-Shannon定理中定义了这个最小频率来确地表示一个连续的频带受限模拟信号,采样频率至少是信号最大频率的两倍以上,这里不做过多赘述。

在A/D转换时会引入量化误差和噪声,量化误差由量化间隔决定,量化噪声与DAC位数有关,DAC位数越高,在满量程时采样出来的信号越逼近原始模拟信号,此时量化噪声最小,可以发现量化噪声和量化误差都是在采样时引入的。下面介绍一些常用相关术语

  • 最大信噪比:采样达到有效信号的满量程动态范围即可输出最大信噪比
  • 迭代:执行一次全部DSP算法的过程称为一次迭代
  • 关键通道:计算的组合逻辑电路中,输入到输出最长的一条数据通道称为关键通道,因此关键通道的计算时间决定了一个DSP系统的最小可处理时钟周期或最大时钟频率
  • 等待时间:系统接收到输入到计算输出的时间差

DSP输入输出关系公式:

【FPGA-DSP】第一期:DSP基础

从上述公式可以看出,实现一个基本的DSP 算法需要三种运算单元,包括加法运算、延时单元以及乘法运算。加法和乘法运算在电路中有专门的器件,单位延时可采用D触发器来实现。如果需要产生多个单位延时,可采用多个D触发器的级联或者对存储器先写入然后延时读出数据的方式。其实,D 触发器属于存储器的一种,所以,实现一个基本的数字信号处理系统,需要加法器、乘法器和存储器。FPGA 内部包括上述所有器件,因而成为实现DSP的理想选择。

要采用 FPGA实现 DSP算法,必须经过量化。在公式中,系数和通常都是通过理论计算或者 MATLAB工具计算得到的。前者采用无限精度,后者采用双精度浮点数。无论是无限精度还是双精度浮点数,FPGA 芯片都是无法直接处理的,所以必须将系数和进行量化,以有限长的二进制码的形式表示。量化采用的二进制位数越多,精度越高,但耗费的 FPGA资源就越多,设计中根据系统的指标对精度与资源进行折中。此外,由于量化会引入量化误差,在设计中要引起重视。例如,设计一个有极点的滤波器,若其极点太靠近单位圆,量化误差有可能会使该极点跑到单位圆外,造成系统不稳定。具体的量化分析读老可以参阅与数字信号处理相关的书籍,这里不再详述。 

量化之后还需要选取运算结构。不同的算法结构所需的存储器和乘法器资源是不同的,前者影响复杂度,后者影响运算速度。

经过量化和确定好运算结构之后,便可以使用FPGA来设计一个DSP系统。但是DSP系统设计不再是用硬件描述语言直接描述,而是从算法角度着手的系统级综合,再通过高级综合实现RTL级的描述。进行DSP算法综合需要用到除了vivado以外的电子系统及设计软件。

利用 FPGA实现DSP嵌人式系统时,可以利用 Altera 和 Xilinx 公司在MATLAB-Simulink 中预先提供的模块集(Blockset),按照基于模型的设计方法建立DSP系统的算法模型在仿真、优化的基础上由 DSP Builder 和 System Generator 自动转换成硬件实现的网表文件,再进行布局和布线的实现。     

System Generator是 Xilinx公司推出的一个面向 DSP 开发的基于模型的设计工具它是作为 MTALAB中的一个Smulink 工具箱出现的工具,广泛应用于科学计算和工程计算,可以进行复杂的 DSP 系统的建模与仿真。Simulink 是MATLAB的一个组成部分,用于图形化建模仿真。System Generator 作为Simulink 的一个工具箱,使得利用 FPGA 设计嵌入式 DSP 系统时,设计者完全可以通过Simulink 的图形化界面来进行系统建模,只要简单地进行 System Generator 工具箱中的模块调用即可。值得注意的是,System Generator 中的 DSP 基本模块是以算法级的描述出现的,便于设计者从系统级或者算法级进行理解,甚至不需要了解 FPGA本身和硬件描述语言。    

1.2 FPGA实现DSP的特点

FPGA是具有极高并行速度的信号处理引擎,通过并行方式提供高性能的信号处理能力。传统的DSP设备是顺序执行所需要处理的任务,分时共享乘法累加单元,从而限制了数据流量,是的系统时钟频率就算很高也无法提供高速的处理速度。但是FPGA内部有大量的乘法器,大量处理可以并行实现,能够保持高速可靠的数据率。传统的通用DSP器件和FPGA器件的顺序与并行处理比较。 

【FPGA-DSP】第一期:DSP基础

FPGA的系统时钟频率一般低于通用DSP器件,也能够保证比DSP器件更快的计算速度。就通用DSP器件而言,运算速度随着抽头数(算法复杂度)增加成指数下降。一般情况下FPGA可以与DSP处理器配合使用,一起构成了数字信号处理系统。

【FPGA-DSP】第一期:DSP基础

(1)利用 FPGA 的并行处理的特性实现预处理器,对系统前端的高速数据流进行预先处理,得到低速的数据流,在将低速数据流由 DSP 处理器完成后续的处理。例如将多路并行数据进行预处理得到单路数据,再交给通用 DSP 做相应的处理。

(2)利用 FPGA 硬件高速处理的能力实现协处理器,将软件无法完成的高速处理交由FPGA处理。所以作为协处理器,FPGA 受到起系统主机作用的 DSP 处理器控制,在不同的工作模式下协助主机完成高速处理的任务。

其实,通用 DSP处理器的功能也可以采用 FPGA 完成,构成可编程片上系统(SOPC)。七系列Zynq芯片就提供了大量的DSP硬核在PL中,在ARM处理器控制下实现信号的高速处理。总之,FPGA能够实现高性能的数字信号处理,主要基于一下三个因素

  • 高度的并行性
  • 重构的灵活性
  • 最佳性价比

 文章来源地址https://www.toymoban.com/news/detail-450496.html

2. DSP硬核的结构与使用

fpga对于数字信号处理(DSP)应用是有效的,因为它们可以实现定制的、完全并行的算法。DSP应用程序使用很多二进制最好在专用DSP片中实现的乘数器和累加器。所有7系列fpga有许多专用的、全定制的、低功耗的DSP片,组合起来高速度快,体积小,同时保持系统设计的灵活性。DSP片增强了许多应用的速度和效率超出了数字信号处理的范围动态总线移位器,内存地址生成器,宽总线多路复用器,和内存映射的I/O寄存器。七系列FPGA中的DSP硬核DSP48E1参考官方文档。

【FPGA-DSP】第一期:DSP基础

DSP功能的一些亮点包括:

  • 25 × 18位二补乘法器:
    • 动态旁路
  • 48位累加器:
    • 可作为同步上/下计数器使用
  • 省电预加法器:
    • 优化对称滤波器应用,降低DSP片的要求
  • 单指令多数据(SIMD)算术单元:
    • 双24位或四12位加/减/累加
  • 可选逻辑单元:
    • 可以生成两个操作数的十个不同逻辑函数中的任何一个
  • 模式检测器:
    • 收敛或对称四舍五入
    • 与逻辑单元一起使用时,96位宽的逻辑功能
  • 高级功能:
    • 可选的流水线和专用总线级联

DSP48E1片提供了提高的灵活性和利用率,提高了效率应用程序,降低了整体功耗,并提高了最大频率。高性能允许设计人员在一个程序中实现多个较慢的操作,单DSP48E1片采用时间多路复用方法。DSP48E1片支持许多独立的功能。这些函数包括multiply, multiply累加(MACC), multiply add, three-input add, barrel shift, wide(广义)总线复用,幅度比较器,位逻辑函数,模式检测,以及wide计数器。该架构还支持级联多个DSP48E1片以形成宽数学函数,DSP滤波器和复杂的算术,而不使用通用的FPGA逻辑。 

3. FPGA设计DSP技术

在第二期我们会使用matlab中的Simulink与vivado中的System Generator套件联合开发,下面简要介绍一些FPGA中需要具备的数字信号处理必备知识。

3.1. 浮点数与定点数的表示与转换

3.1.1. 双精度浮点数表示

在设计仿真中,Simulink 是利用双精度数(double)表示数值,它是 64 位 2的补码浮点数,而双精度数对 FPGA 是无效或不实际的。

当利用有限位数来表示二进制数时,进制点的位置确定了所表示数的范围和精度。二者的关系是,二进制点前面的位数多表示的数值的有效范围大,精度就低;相反,二进制点后面的位数多,数值精度提高,数值有效范围减小。

  • 首先介绍一下单双精度浮点数的区别

单精度是这样的格式,一共32位,其中1位符号,8位指数,23位小数。

【FPGA-DSP】第一期:DSP基础

双精度一共64位,其中1位符号,11位指数,52位小数。 

【FPGA-DSP】第一期:DSP基础

要先理解3大要点:

  1. 小数的二进制表示法,即浮点数
  2. 浮点数如何在计算机中储存,即符号位(0正、1负),指数位,小数位(通常翻译做尾数)
  3. 取值范围取决于指数位,计算精度取决于小数位(尾数)。小数位越多(比如双精度是52位),则能表示的数越大,那么计算精度则越高。

单精度的小数位在计算机中只有23位(二进制),换算到十进制只能百分百保证6位十进制数字的精确度。不能百分百保证7位的精度运算。超过该精度(二进制23位,十进制6位)的小数运算将会被截取,造成精度损失和计算结果的不准确。同理,双精度,小数位是52位(二进制),换算为十进制则只能百分百能保证15位,16位及其之后的数据同样会被截取。

注意:浮点数中小数点的位置是不固定的,用阶码和尾数来表示。通常尾数为纯小数,阶码为整数,尾数和阶码均带符号数。同时通过移动小数点的位置,可以实现纯整数或者纯小数的表示方法:

# 纯整数表示法

最高位是符号位,小数点默认隐含在数值位末尾的后一位,数值位是整数部分的二进制

# 纯小数表示法

最高位是符号位,小数点默认隐含在符号位和数值位之间,数值位是小数部分的二进制

3.1.2. 双精度浮点数与定点数的转换

由于硬件无法按照双精度的要求进行实现,所以要转换成N位的定点数。在Simulink中Xilinx的模块集有3种数据类型:
(1)不带符号的N位定点数,表示为 UFix_N_m,其中N为二进制位数,m 为二进制点距离最低位的位置,最大精度为

(2)带符号的 N位定点数,表示为 Fix_N_m,其中N为二进制位数,m 为二进制点距离最低位的位置,最大精度为

(3) 布尔类型数,总是定义为0或1,作为控制口的使能(CE)或复位(reset),所以不可以设为无效

例:将数值-2.261 108表示为Fix_16_13的格式

【FPGA-DSP】第一期:DSP基础

在基于模型的系统设计流程中,当Xilinx 模块集中的带符号的定点数模块需要与Simulink 的双精度数模块通信时,必须要进行数据类型的变换,这是基于模型的系统设计流程中的重要概念之一。
为了完成这个数据类型变换,要选择 Xilinx模块集中的Gateway In实现双精度数到定点数的转换,或者选择Xilinx 模块集中的 Gateway Out 实现定点数到双精度数的转换 。

Gateway In/Out 两个模块可以通过选择参数来控制如何实现双精度数与定点数之间的相互转换。一般来说,主要由 Gateway In 模块的参数选择来进行控制,除了选择带符号或不带符号定点数的位数和二进制点位置之外,还需要选择以下两个参数:
(1)量化方式:截断(Trancate)或舍人(Round)
(2)溢出方式:饱和(Saturate)或交迭(Wrap)。
当小数部分的位数不足以表示一个数值的小数部分时,将出现量化的情况,截断是放弃最低有效位右边的所有位,当有两个等距离最接近表示的数值,舍入将取最接近表示的数值,或去偏离0最远的数值。

双精度浮点和定点的转换见下图:

【FPGA-DSP】第一期:DSP基础

【FPGA-DSP】第一期:DSP基础 

当一个数值超出了表示范围,将出现溢出,在仿真过程中出现溢出将有溢出标志位作为Simulink的错误产生。同时溢出时有两种数据表示方式:

(1)饱和

        去最大的正值或最大的负值

(2)交迭

         直接放弃超出最大有效位的任何有效位

【FPGA-DSP】第一期:DSP基础

在满足设计要求的情况下,尽量选择截断的量化方式(不增加硬件资源)。溢出方式选着饱和可以防止输出的震荡,输出数据不再改变,但是会增加硬件资源。

 

到了这里,关于【FPGA-DSP】第一期:DSP基础的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 001_区分单片机、arm、DSP、FPGA(零基础也能区分)

    单片机是指一个集成在一个芯片上的完整计算机系统,最早的单片机由微处理器核心、存储器、输入输出端口和计时电路等基本部分组成。例如,Intel公司推出的第一款单片机是Intel 8048,它于1976年发布,包括一个8位的中央处理器、ROM、RAM、输入输出端口和计时电路等基本模

    2024年02月08日
    浏览(44)
  • FPGA中一些基本概念原理的区分

    在 Verilog 中,wire 和 reg 是两种不同类型的变量,它们有着不同的特性和用途 wire 变量用于连接模块中的输入、输出以及内部信号线。 它主要用于表示连续赋值的逻辑连接,类似于硬件电路中的导线。 wire 变量不能在 always 块或 initial 块中赋值,它们只能通过连续赋值“assig

    2024年02月21日
    浏览(39)
  • 基于DSP+FPGA+AD9238的冲击波超压测试系统设计与实现

    对冲击波关键特征参数进行可靠、精确地评估是进行军事行动规划的前提和依据, 测试结果可以为战斗部设计提供参考,也可以为武器弹体材料的研发制造提供有效依据。 近年来,随着集成电子技术与软件系统取得突破性成果,冲击波测试技术获得了稳定的 发展。 2.2 测试

    2023年04月12日
    浏览(47)
  • FPGA时序约束(一)基本概念入门及简单语法

    文章目前大部分参考明德扬时序约束,只是一个学习总结,侵权删 原文链接:FPGA时序约束分享04_output delay 约束 时序逻辑电路的基础是触发器FF: 建立时间:Setup Time,缩写是 Tsu,即在时钟上升沿之前数据必须稳定的最短时间 保持时间:Hold Time,缩写是 Th,即在时钟上升沿之

    2024年02月03日
    浏览(38)
  • FPGA基础概念_Verilog

     一、文件尾缀含义等常识 sof文件时编译(分析、综合、布线、生成、时序)过程中生成的一个文件,可通过Jtag下载到FPGA的SRAM中去执行. pof文件生成过程同上,但不同之处在于不能直接下载到FPGA的SRAM中,需要通过ASP端口直接下载到FPGA的配置芯片中,配置芯片一般时串行F

    2024年02月03日
    浏览(47)
  • FPGA基础知识-层次建模的概念

    目录 学习目标 学习内容 1.设计方法学  2.设计实例 3.逻辑仿真实例 学习时间 总结 提示:这里可以添加学习目标 理解数字电路设计中自底向上和自顶向下的设计方法; 解释verilog中模块和模块实例之间的区别; 学习从4中不同的抽象角度来描述同一个模块; 解释仿真中的各个

    2024年02月08日
    浏览(58)
  • FPGA与DSP:区别与应用

    FPGA与DSP:区别与应用 在数字信号处理领域,FPGA和DSP是两个经常被提到的概念。虽然它们具有一些相似之处,但是它们在设计方式、应用范围、计算能力等方面却有着明显的不同。 FPGA(Field-Programmable Gate Array)即现场可编程门阵列,它是一种可编程的硬件平台。FPGA可以被程

    2024年02月07日
    浏览(43)
  • ARM,DSP,FPGA三者比较

    这三款不同类型的芯片,笔者在不同项目中都有不同的使用。本科做电赛的时候做个cortex-mo arm芯片的开发。毕业设计做过基于zynq7000 soc核的NVDLA软硬件系统移植。研究生阶段实习公司的算法一般开发在DSP平台上。三个嵌入式芯片可以说是各有千秋,分别能在不同场合下有所应

    2024年01月20日
    浏览(47)
  • USB的基本概念和基础知识 01

    本文主要介绍USB的基本概念和基础知识 USB USB 中文网 有很多资料, 很实用哦. USB 是通用串行总线 (Universal Serial Bus) 的缩写. 版本 理论最高速度 USB 1.0 Low Speed 1.5Mb/s 或 0.1875MB/s USB 1.0 Full Speed 12Mb/s 或 1.5MB/s USB 1.1 (即 USB 1.0 Full Speed) 12Mb/s 或 1.5MB/s USB 2.0 Full Speed(即USB 1.1) 12Mb/s 或

    2024年02月11日
    浏览(43)
  • 02_kafka_基本概念_基础架构

    至多一次:消息被确认消费后,删除消息;一般只允许被一个消费者消费,且队列中的数据不允许被重复消费。activeMQ 就是这种。 没有限制:消息可以被多个消费者同时消费,并且同一个消费者可以多次消费同一个记录;大数据场景。 集群中的一则消息也称为 Record ; Topi

    2024年02月13日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包