AccelDSP

http://hsanyi.blog.163.com/blog/static/5502232520111194658521/

AccelDSP其实是一种综合工具,所以也叫AccelDSP综合工具。它可以将特定的Matlab程序进行浮点到定点的转换,生成定点的Matlab程序或者C++程序,并综合成HDL代码和testbench代码。

    在用FPGA实现DSP算法时遇到的一个主要问题就是如何实现算法浮点到定点的转换。当然我们可以使用Matlab的强大功能,进行浮点和定点的仿真。而AccelDSP综合工具是将Matlab和Xilinx的开发环境很好的结合在起来。当你使用AccelDSP进行开发时,你只需要编写Matlab的浮点程序,并进行功能验证。然后就可以利用AccelDSP综合工具将浮点的Matlab算法转换为定点,并综合为硬件可实现的结构,最终生成FPGA的下载文件。

    AccelDSP得到的硬件模块一般都是作为一个大型设计的子模块。

    上面说的这么好,可能大家都觉得以后都不用写HDL代码了,直接用写Matlab代码就行了。当然现在的软件还没有这么智能,AccelDSP虽然能够综合Matlab程序,但是这对Matlab程序也是有要求的。并不是所有的Matlab浮点程序都能够通过AccelDSP验证并转换成硬件。就像并不是所有的HDL语言都是可综合的。它对Matlab程序有以下要求:

(1)、特定的数据类型

(2)、特定的运算符

(3)、特定的函数

(4)、特定的Matlab编码风格

    也就是说AccelDSP所支持的数据类此能够,运算符,函数都是Matlab的一个子集,并且还要求Matlab遵循特定的编码风格,这样才能保证Matlab的浮点程序是可以被AccelDSP综合的。并且综合后的硬件结构与M文件的编写方式有很大的区别。

1、Matlab的程序结构

    一个可综合的Matlab设计至少包括两个M文件:script M文件和function M文件

(1)、Script M文件

    Script M文件分三部分:数据流控制、function函数调用、验证程序。其中数据流控制一般可以用for或者while语句,验证程序一般是完成波形显示和数据统计的功能。

(2)、function M文件

    function M文件最终要映射为硬件模块。function M文件的参数被映射为硬件模块的输入,function M文件的输出被映射为硬件模块的输出。浮点到定点的转换主要就是指的将function M文件的参数和输出由浮点转换为定点。

2、浮点到定点的转换

    虽然AccelDSP能够将Matlab浮点程序转换为定点,但实质上它还是利用了Matlab的浮点到定点的转换功能。所以我们就需要了解一下Matlab中是如何实现浮点到定点的转换的。这对于不使用AccelDSP而是直接使用Matlab进行浮点到定点转换的工程师也是很有帮助的。

    浮点转换为定点的过程在Matlab中称为量化,使用quantizer和quantize两个函数完成。

(1)、quantizer用于定义数据的量化属性

(2)、quantize则按照quantizer定义的量化属性量化浮点数据。

    下面举一个例子:

x = [3.5 1.5 6 20.8 -128.25 127.75];
qpath = quantizer('fixed','round','saturate',[10,2]);
fix_x = quantize(qpath,x);

    运行后fix_x结果为:

fix_x =

    3.5000    1.5000    6.0000   20.7500 -128.0000  127.7500

    其中-128.25溢出了,这里设置溢出后为饱和输出,所以为-128。

    具体关于quantizer和quantize函数的使用说明请参考Matlab的help文件。

    在AccelDSP中也是使用内嵌的quantize函数对浮点程序进行量化。它可以自动统计所有变量的变化范围,并完成对数据的量化。当然也可以人为指定量化属性。推荐先使用AccelDSP的自动量化功能,然后再对其中一些进行人为修改。

    假如一个浮点数为10.765,我们用一个总位宽为8bit,小数位宽为3bit的有符号数进行表示那么对应的最接近的二进制数为01010.110,对应的十进制数为10.75,量化误差为0.015。当然小数位宽越宽,对应的小数部分精度就越高。

    对于一个数据总位宽为10bit,小数位为2bit。则量化的范围为:-128.0 ~ 128.75,量化的最小精度为0.25。

    小数部分位数的选取时通过对比定点仿真与浮点仿真的结果得出的,一般最大设置为12bit即可,精度可以达到0.000244140625。

3、accel_probe的使用

    在Matlab中,一般观察函数内部的信号比较困难。这时可以将accel_probe函数插入到函数体内,它会自动统计和分析数据,并且画出曲线图。具体使用方法可参看AccelDSP相关文档。

4、优化硬件架构

    相同的Matlab浮点程序,可以通过AccelDSP的不同属性设置得到不同的硬件实现形式。AccelDSP中的.add文件描述了硬件结构的实现形式,可以通过手工修改.add文件或者AccelDSP中的GUI界面改变其属性设置,达到优化硬件架构的目的。下面举两个例子说明不同的属性设置对于生成硬件架构的影响。

(1)、循环语句映射

    可以通过修改属性使循环语句利用串行实现(节约资源)、并行实现(增强性能)或者在性能和资源之间进行折中实现。分别对应的属性为:Fully Rolled,Fully unRolled,Partial Unrolled。

(2)、变量的映射

    Matlab程序中的变量在硬件实现时可以采用基本的逻辑单元实现,也可以映射到FPGA内部的RAM或者ROM。

5、AccelWare

    AccelWare是AccelDSP综合工具提供的参考IP设计,包含了大量可配置函数,设计者通过调用这些函数可以省去大量的编程时间。

    AccelWare工具箱分为4大类:高级数学工具箱、通信工具箱、信号处理工具箱以及功能组件工具箱。

(1)、高级数学工具箱中提供了在数学运算中常用的矩阵和多项式操作。

(2)、通信工具箱提供了通信应用中的基本模块,包括数学频率合成器、编解码器、脉冲成形滤波器、加解扰、特定滤波器5类。

(3)、数字信号处理工具箱提供了DSP处理中常见的算法,包括多速率滤波器、FFT变换和一般滤波器三类。

(4)、功能组件工具箱提供了很多基本的功能组件,包括复数操作、三角函数、幂次、开放、除法、统计、矩阵运算等。

    总上所述,AccelDSP为FPGA进行DSP开发,特别是将Matlab浮点算法转换为定点提供了一套解决方案,随着综合器技术的发展,也许不久的将来我们就不用再写HDL语言了,直接用高级语言对硬件结构进行描述。

    另外,即使不使用AccelDSP综合工具,也可以参考这种将Matlab浮点算法转换为定点的方法,应用的我们的设计中。

    注:本文参考了《Xilinx ISE Design Suite 10.X FPGA开发指南——DSP、嵌入式与高速传输篇》,对相关内容进行了总结


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值