第一篇:DSP实验学习心得大全
DSP实验学习心得
论DSP发展前景
DSP 即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数 字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换 成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特 点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥 越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成 功应用。DSP 数字信号处理器 DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改 进的哈佛结构,较传统处理器的冯?诺依曼结构具有更高的指令执行速度。其处理速度比最 快的 CPU 快 10-50 倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电 子产品等领域的基础器件,被誉为信息社会革命的“旗手”。
最初的 DSP 器件只是被设计成用以完成复杂数字信号处理的算法。DSP 器件 紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的 DSP 属于第五代产品,它与第四代相比,系统集成度更高,将 DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的 DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透 到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品 都与 DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找 DSP 芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起 来,然后再加以处理。
在短短的十多年 时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)
信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。
(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)
自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)
医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 DSP 的发展前景 DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜,许多家电用第二代 DSP 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对 DSP 芯片的巨大需 求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这 些设备的发展水平取决于 DSP 的发展。新的形势下,DSP 面临的要求是处理速度 更高,功能更多更全,功耗更低,存储器用量更少。
DSP 的技术发展将会有以下 一些走势:(1)系统级集成 DSP 是潮流。小 DSP 芯片尺寸始终是 DSP 的技术发展方向。当前的 DSP 尺寸小、功耗低、性能高。各 DSP 厂商纷纷采用新工艺,改进 DSP 芯核,并将几个 DSP 芯核、MPU 芯核、专用处理单元、外围电路单元、存储单元 统统集成在一个芯片上,成为 DSP 系统级集成电路。(2)追求更高的运算速度和进一步降低功耗和几何尺寸。由于电子设备的 个人化和客户化趋势,DSP 必须追求更高更快的运算速度,才能跟上电子设备的 更新步伐。同时由于 DSP 的应用范围已扩大到人们工作生活的各个领域,特别是 便携式手持产品对于低功耗和尺寸的要求很高,所以
DSP 有待于进一步降低功 耗。按照 CMOS 的发展趋势,依靠新工艺改进芯片结构,DSP 运算速度的提高和 功耗尺寸的降低是完全可能的。
(3)DSP 的内核结构进一步改善。DSP 的结构主要是针对应用,并根据应用 优化 DSP 设计以极大改进产品的性能。多通道结构和单指令多重数据、超长指令 字结构、超标量结构、超流水结构、多处理、多线程及可并行扩展的超级哈佛结 构(SHARC)在新的高性能处理器中将占据主导地位。(4)DSP 嵌入式系统。DSP 嵌入式系统是 DSP 系统嵌入到应用电子系统中 的一种通用系统。这种系统既具有 DSP 器件在数据处理方面的优势,又具有应用 目标所需要的技术特征。在许多嵌入式应用领域,既需要在数据处理方面具有独 特优势的 DSP,也需要在智能控制方面技高一筹的微处理器(MCU)。因此,将 DSP 与 MCU 融合在一起的双核平台,将成为 DSP 技术发展的一种新潮流。DSP 的发展非常迅速,而销售价格逐年降低目前 DSP 的结构、总线、资源和 接口技术都趋于标准化,尤其接口的标准化进展更快。这给从事系统设计的工程 技术人员带来很大机遇,采用先进的 DSP 将会使开发的产品具有更强的市场竞争 力。
近几年来,DSP芯片、应用软件和系统的发展非常迅速,每年增长速度高达40%。其市场驱动力主要是因特网、无线通信、硬盘驱动器、可视电话和会议电视以及其它消费 类电子产品。也就是说,DSP产业的发展依赖于通信技术和通信市场。随着新的通信体 制、传输方式和多媒体智能终端的迅速发展,其算法、标准和规程都需要在实践中不断发 展、改进和优化。DSP编程的灵活性和不断增强的运算能力,同时又将使通信技术向更 高层次迈进。这对通信领域的广大科技人员是一个机遇。抓住这个机遇,我们将大有作为。
通过这几次实验,我初步的对dsp有了一定了解。虽然是在老师们的指导下完成实验要求的,但是我想我还是收获蛮多的。希望在以后的学习生活中能对dsp有更多的学习和研究。
第二篇:DSP实验学习心得
DSP实验学习心得
DSP即为数字信号处理器(Digital Signal Processing),是在模拟信号变换成数字信号以后进行高速实时处理的专用处理器。它的工作原理是将现实世界的模拟信号转换成数字信号,再用数学方法处理此信号,得到相应的结果。自从数字信号处理器(Digital Signal Processor)问世以来,由于它具有高速、灵活、可编程、低功耗和便于接口等特点,已在图形、图像处理,语音、语言处理,通用信号处理,测量分析,通信等领域发挥越来越重要的作用。随着成本的降低,控制界已对此产生浓厚兴趣,已在不少场合得到成功应用。DSP 数字信号处理器DSP 芯片采用了数据总线和程序总线分离的哈佛结构及改进的哈佛结构,较传统处理器的冯诺依曼结构具有更高的指令执行速度。其处理速度比最快的CPU快10-50倍。在当今数字化时代背景下,DSP 已成为通信、计算机、消费类电子产品等领域的基础器件,被誉为信息社会革命的“旗手”。
最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。DSP器件紧随着数字信号理论的发展而不断发展。DSP发展最快,现在的DSP属于第五代产品,它与第四代相比,系统集成度更高,将DSP 芯核及外围组件综合集成在单一芯片上。这种集成度极高的DSP 芯片不仅在通信、计算机领域大显身手,而且逐渐渗透到人们日常消费领域,前景十分可观。近年来,随着通信技术的飞速发展,DSP已经成为信号与信息处理领域里一门十分重要的新兴学科,它代表着当今无线系统的主流发展方向。现在,通信领域中许多产品都与DSP 密切联系,例如,Modem、数据加密、扩频通信、可视电话等。而寻找DSP芯片来实现算法最开始的目标是在可以接受的时间内对算法做仿真,随后是将波形存储起
来,然后再加以处理。在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前, DSP 芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP 芯片的应用主要有:(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5)军事--如保密通信、雷达处理、声纳处理、导航等。(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8)医疗--如助听、超声设备、诊断工具、病人监护等。(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等DSP 的发展前景DSP的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比微控制器做得更好而且价格更便宜,许多家电用第二代DSP 来控制大功率电机就是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对DSP芯片的巨大需求。而手机、PDA、MP3 播放器以及手提电脑等则是设备个性化的典型代表,这些设备的发展水平取决于DSP 的发展。新的形势下,DSP面临的要求是处理速度更高,功能更多更全,功耗更低,存储器用量更少。
这学期我们学习了DSP的理论课程,也进行了相应的实验,实际操作让我们学习的更加深入。我们的主处理芯片: TMS320VC5502PGF300;
低功耗设计,比上一代 C54XX 器件功耗低 30%左右;
处理速度更快,双乘法器结构,处理速度 600MMACS;
软件程序兼容 C54XX DSP;
片内存贮空间 32K× 16Bit(DARAM)(64K Bytes);
最大外部寻址空间 8M× 16Bit; SDRAM: 1M× 16Bit; 2 路 8bit 板上 A/D 接口;
路的 TLC7528 转换,5M/S,8Bit;
片上 UART 接口,符合 RS232 标准;
8Mbit 扩展 FLASH,存储大量固化程序和数据;
设计有用户可以自定义的开关和测试指示灯;
3U 标准的 DSP 扩展总线,包括数据、地址、I/O、控制; 4 组标准扩展连接器,为用户进行二次开发提供条件;
具有 IEEE1149.1 相兼容的逻辑扫描电路,该电路仅用于测试和仿真; +5V 电源输入,内部+3.3V、+1.26V 电源管理;
高保真语音接口设计,双路语音采集,每路 48K/S; 4 层板设计工艺,稳定可靠;
具有自启动功能设计,可以实现脱机工作;
可以选配多种应用接口板,包括图像板,网络板等; 开发环境
开发 TMS320C55xx 应用系统一般需要以下设备和软件调试工具: 1.通用 PC 一台,安装 Windows2000 或 WindowsXP 操作系统及常用软件(如: WinRAR 等)。
2. TMS320C55xx 评估板及相关电源。如: ICETEK– VC5502-A 评估板。
3.通用 DSP 仿真器一台及相关连线。如: ICETEK-5100USB 仿真器。
4.控制对象(选用)。如: ICETEK-CTR 控制板。
5. TI 的 DSP 开发集成环境 Code Composer Studio。如: CCS3.1。
6.仿真器驱动程序。7.实验程序及文档。
ICETEK-DSP 教学实验箱的硬件连接 .连接电源:打开实验箱,取出三相电源连接线(如右图),将电源线的
一端插入实验箱外部左侧箱壁上的电源插孔中。确认实验箱面板上电源总
开关(位于实验箱底板左上角)处于“关”的位置,连接电源线的另一端至
220V 交流供电插座上,保证稳固连接。
2.使用电源连接线(如右图,插头是带孔的)连接各模块电源:确认实验
箱总电源断开。连接 ICETEK-CTR 板上边插座到实验箱底板上+12V 电源
插座; ICETEK-CTR 板下边插座到实验箱底板上+5V 电源插座;如使用
PP(并口)型仿真器,则连接仿真器上插座到实验箱底板上+5V 电源插座;
连接 DSP 评估板模块电源插座到实验箱底板上+5V 电源插座。注意各插
头要插到底,防止虚接或接触不良。
3.连接 DSP 评估板信号线:当需要连接信号源输出到 A/D 输入插座时,使用信号连接线(如右图)分别连接相应插座。
4. 接通电源: 检查实验箱上 220V 电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使 开关位于“开”的位置,电源开关右侧的指示灯亮。构造 DSP 开发软件环境
1.安装 CCS 软件(此文档假定用户将 CCS 安装在默认目录 C:CCStudio_v3.1 中,同时也建议
用户按照默认安装目录安装)⑵将实验箱附带的教学光盘插入计算机光盘驱动器。⑶打开教学光盘的“ CCS3.1”目录。⑷双击其中的“ Setup.exe”,进入安装程序。⑸选择“ Code Composer Studio”
按照安装提示进行安装,并重新启动计算机。⑹安装完毕,桌面上出现两个新的图标 2.安装 DSP 通用仿真器驱动
需要安装两部分:(1)仿真器的 Windows 驱动程序(并口无需,usb 口要安装);(2)根据仿真的 DSP 芯片不同,设置仿真器在 CCS 环境中的对应驱动程序。
⑴双击光盘中的“开发系统驱动USB”目录下的 usbdrv54x.exe 文件,然后再打开的页
面中输入 ccs 的安装路径,例如 C:CCStudio_v3.1 ⑵此时驱动已经被拷贝到 C:CCStudio_v3.1icetek 目录下。⑶然后把 usb 电缆连接到计算机的 usb 接口和 usb 仿真器上,计算机将提示找到新硬件,选择否,然后点下一步。3.安装实验程序
双击光盘中的实验安装文件,自动解压缩后安装到 C:ICETEK 目录下。
例如:实验安装文件为“ Setup5502A.exe” 4.安装初始化仿真器程序
将光盘中“工具”子目录下的“ xdsresetUSB”目录拷贝到硬盘上的任意路径下,建
议和实验程序目录放在一起,便一管理。然后用单击鼠标右键选择“ xdsresetUSB”目
录下 “ xdsrstusb”批处理文件,选择“发送到”->“桌面快捷方式”。注: 如果您的 CCS 系统未安装在默认的 C:CCStudio_v3.1 目录,请用鼠标右键单击桌面上“ xdsrstusb”图标,选择“属性”,将“快捷方式”项和“起始位置”中的路径改成您所安装的路径。
启动 CCS 启动 Emulator 方式:
⑴ 首先将实验箱电源关闭。连接实验箱的外接电源线。⑵ 检查 ICETEK-5100USB 仿真器的黑色 JTAG 插头是否正确连接到 ICETEK– VC5502-A板的 J1 插头上。注:仿真器的插头中有一个孔加入了封针,与 J1 插头上的缺针位置应重合,保证不会插错。
⑶ 检查是否已经用电源连接线连接了 ICETEK– VC5509-A 板上的POW1插座和实验箱底板上+5V 电源插座。⑷ 检查其他连线是否符合实验要求。检查实验箱上三个拨动开关位置是否符合实验要求。
⑸ 打开实验箱上电源开关(位于实验箱底板左上角),注意开关边上红色指示灯点亮。
ICETEK– VC5502-A 板上指示灯 D5 和 D6 点亮。如果打开了 ICETEK-CTR 的电源开关,ICETEK-CTR 板上指示灯 L1、L2 和 L3 点亮。如果打开了信号源电源开关,相应开关边的指示灯点亮。
⑹ 用实验箱附带的 USB 信号线连接 ICETEK-5100USB 仿真器和 PC 机后面的 USB 插座,注意 ICETEK-5100USB 仿真器上指示灯 Power 和 Run 灯点亮。
⑺ 双击桌面上仿真器初始化图标:
(8)如果进入 CCS 提示错误,先选“ Abort”,然后用“初始化 ICETEK-5100 USB2.0 仿真器”初始化仿真器,如提示出错,可多做几次。如仍然出错,拔掉仿真器上 USB 接头(白色方形),按一下 ICETEK– VC5509-A 板上 S1 复位按钮,连接 USB 接头,再做“初始化 ICETEK-5100 USB2.0仿真器”。
(9)如果遇到反复不能连接或复位仿真器、进入 CCS 报错,请打开 Windows 的“任务管理器”,在“进程”卡片上的“映像名称”栏中查找是否有“cc_app.exe”,将它结束再试。
退出 CCS 指示灯实验
了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上指示灯扩展原理。学习在 C 语言中使用扩展的控制寄存器的方法。
TMS320VC5502DSP 的 EMIF 接口:
存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地
址、数据线,可以扩展各类存储器和寄存器映射的外设。-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指
示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器
-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制
主要设备:
608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器
608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 拨码开关控制实验
了解 ICETEK-VC5502-AE 板在 TMS320VC5502DSP 外部扩展存储空间上的扩展。了解 ICETEK-VC5502-AE 板上拨码开关扩展原理。熟悉在 C 语言中使用扩展的控制寄存器的方法。
TMS320VC5502DSP 的 EMIF 接口:
存储器扩展接口(EMIF)是 DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和寄存器映射的外设。
-ICETEK-VC5502-AE 评估板在 EMIF 接口上除了扩展了片外 SDRAM 外,还扩展了指
示灯、DIP 开关和 D/A 设备。具体扩展地址如下: 0x400009,0x40000b: D/A 转换控制寄存器 0x400007: 板上 DIP 开关控制寄存器 0x400005: 板上指示灯控制寄存器
-与 ICETEK-VC5502-AE 评估板连接的 ICETEK-CTR 显示控制模块也使用扩展空间控制
主要设备:
608001h: 读-键盘扫描值,写-液晶控制寄存器 608002h: 液晶辅助控制寄存器
608003h、608004h: 液晶显示数据寄存器 608005h: 发光二极管显示阵列控制寄存器 DSP 的定时器
通过实验熟悉 VC5502A 的定时器;掌握 VC5502A 定时器的控制方法;掌握 VC5502A 的中断结构和对中断的处理流程;学会 C 语言中断程序设计,以及运用中断程序控制程序流程。通用定时器介绍及其:
TMS320VC5502A 内部有两个 64 位通用定时器(GP), 控制方法详见spru618.pdf。中断响应过程(详见 spru371.pdf):
外设事件要引起 CPU 中断,必须保证: IER 中相应使能位被使能,IFR 相应中断也被使能。在软件中,当设置好相应中断标志后,开中断,进入等待中断发生的状态;外设(如定时器)中断发生时,首先跳转到相应中断级高的服务程序中(如:定时器 1 会引起 TINT中断),程序在进行服务操作之后,应将本外设的中断标志位清除以便能继续中断,然后返回。中断程序设计:
-程序中应包含中断向量表,VC5502A 默认向量表从程序区 0xffff00 地址开始存放,根据IPVD 和 IPVH 的值确定向量表的实际地址。
-注意观察程序中 INTR_init()函数的定义部分,其中 IPVD 和 IPVH 的值都为 0x0001;同时
观察配置文件 ICETEK-VC5502-AE.cmd 中的 VECT 段描述中 o=0x0100。
-向量表中每项为 8 个字,存放一个跳转指令,跳转指令中的地址为相应服务程序入口地址。
第一个向量表的首项为复位向量,即 CPU 复位操作完成后自动进入执行的程序入口。
-服务程序在服务操作完成后,清除相应中断标志,返回,完成一次中断服务。单路,多路数模转换(DA)
了解数模转换的基本操作。了解 ICETEK-VC5502-AE 板扩展数模转换方式。掌握数模转换程序设计方法。
1.数模转换操作:数模转换芯片使用 TLC7528C。TLC7528C 是双路、8 位数字-模拟转换器,内部具有各自单独的数据锁存器,其特性包括两 DAC 非常精密的一致性,数据通过公共 8 位输入口转送至两DAC 数据锁存器的任意一个。控制输入端 DACA/DACB 决定哪一个 DAC 被装载。器件的装载周期与随机存取存储器的写周期类似,能方便地与大多数通用微处理器总线或端口相接口。器件的工作电压 5V 至 15V,功耗小于 15mW(典型值)。2 或 4 象限的乘法功能使该器件成为许多微处理器的增益设置和信号控制的良好选择。它可工作于电压模式,与电流输出相比较,更适合于电压输出。TLC7528C 的工作温度范围从 0℃至 70℃。
2. TLC7528C 与 TMS320VC5502A 的连接:由于 TMS320VC5502A DSP 没有数模转换输出设备,采用外扩数模转换芯片的方法。在 ICETEK-VC5502-AE 板上选用的是 TLC7528C。TLC7528C 的转换寄存器被映射到了 DSP的 CE2 空间,两路 DA 转换通道的地址分别是: 0x400009,0x40000b。在 TLC7528C 的输出端,为了增加输出功率,经过一级运放再输出到板上插座上。
实验学习让我们更好的学习到了理论知识,不只是停留在理论上,实践才是真理。
第三篇:dsp学习心得
一.我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是ISA总线的,我从206开始240、2407A都作过产品,对5402、2812、5471在产品方案规划制定和论证时也研究过。由于方向所限对6X、8X系列没有接触。我发现在国内无论在公司或高校许多地方为了加快开发周期往往把一个产品开发分为硬件和软件两个相对独立部分,由不同的人完成。这在具有一定技术和管理基础的公司,由总设计师统一规划协调,分任务并行完成的情况下是可行的,也是符合现代产品开发规律的。但是在高校人员的流动很大,研究生的有效科研时间很短、基础差(许多研究生起步时对电熔、电阻、三极管的分类和选型都很困难,我也是这样过来的)更不用说系统规划设计了,况且许多老板自己也不太懂,师兄有自己的任务,他们搞明白时也毕业了。在许多高校做DSP就是找一个算法加到自己的主程序里,在板子上跑一下,基本达到效果就可以了,至于可靠性是次要的,产业化无从谈起,这已经算不错的了。其实我觉得一个系统的完成,系统的规划是最重要的,在规划时对硬件设计的知识和认识是决定性的,它可以让你知道什么是可行的,什么是不可行的,当你同时具有软件设计能力时,就可以合理的分配系统功能,完成使用VHDL进行系统行为描述-―系统功能划分―― 系统子结构设计这样的自顶向下的设计规划流程,成为系统设计专家、项目经理,否则只是硬件工程师、软件工程师。无论作51、196、还是DSP都是这样。下面分别谈谈我对硬件和软件设计的感受硬件设计是系统设计的关键,国内和国外产品的差距往往是硬件设计水平高低决定的,任何软件设计思想没有可靠的物理载体都是空中楼阁,纸上谈兵。学校的研究生很多都想避开硬件设计,对于一个全新的设计与其说不屑不如说不敢。试想一下烧几个片子的压力要比跑飞几段程序的压力大的多,尤其是功率器件,一旦烧掉,弄不好火光冲天,人的自信都没了。况且改一次板周期长,经费高,还不知行不行。其实在国外实力一般的公司也是尽量避免硬件的更新设计,产品一旦定型往往通过软件升级,这是公司的发展策略,对个人而言物以希为贵,培养一个硬件设计师往往要比软件设计师时间长花费多。在设计dsp硬件时,开始设计最小系统板,系统按功能分板设计调试,注意分板电路的稳定性可能不如整板电路,要多加入抗干扰环节,分板间的引线包括电源线地线要短,尽量在10公分以内,实在不行加入光耦隔离、采用隔离电源。切记电源线、地线的干扰远比信号干扰对系统的危害大得多,又常常被人忽视。电路板工作正常的先决条件就是电源正常!当分板电路正常后再更居情况设计整板电路。在调试时发现的问题一定要找到原因解决,即使是飞线,割线,不要寄希望于下一板改了再看,除非原理性错误。每一个功能环节多准备几套方案。DSP的选型要根据系统功能而定,2000是一个功能比较全的控制器,但运算性能相对低,但目前大部分控制类、家电类包括中低层次的工业总线通信产品足够了,281X不错但太贵,而且开发技术不成熟。54XX更像一个协处理器,其实高端产品5471就很好,功能完*,但BGA封装对产品的开发有一定难度。如果没有从事过嵌入式系统开发的朋友其实可以从51看起,许多思想是共通的,51很经典没有哪一款微处理器像51那样使用持久和普遍。在硬件设计时更多的精力放在外围电路设计上,外围电路设计的灵活性要比DSP本身高得多,难度大得多。建议多考虑CPLD。软件设计上,着眼点不要仅局限于某种算法和控制策略,而是软件系统框架的制定,即操作系统的选择和实现,算法和控制策略只是其中技巧性很强的子程序和子程序间参数相互关系,建议设计软件时能具有操作系统、数据结构和编译原理方面的知识,特别是使用C。对DSP的内部硬件结构一定要掌握,特别是中断结构和流程、流水线操作,不然飞都不知道怎么飞的。在语言选择上我当时是这么给自己规定的先编20个左右的汇编程序,每个代码量超过4K,使用语句范围覆盖全部语句的60%-70%,在此基础上使用C。现在发现用C构建程序的主体框架(操作系统)比较快而其不容易出错,(我现在正在用ASM根据UCOSII的思想重写自己的操作系统)但对系统实时性影响比较大的运算算法一般采用MATLAB――C――ASM的办法仿真调试优化,这里的优化不单单是利用优化器优化,而是根据数据的特点改变运算方法,以除法为例C里的/号其实掩盖了许多技巧,当除数为常数时就可以放大倒数移位相乘移位的办法进行,精度高速度快。这些办法只有掌握了ASM语言并用ASM语言思考才会熟练应用。另外我想告诉一些作算法特别是控制算法的朋友,千万不要随意评判一个算法的优劣,在程序中程序和代码优化的程度往往影响了控制效果好坏,而不是算法本身的思想。其实在实际中往往PID甚至PI、PD就够了,神经元、模糊、小波适用于研究和写论文,模糊在实际中用的多一点,主要是小日本用的比较成熟,我再恨日本人,这点也服气,小日本就是滑,许多物理现象搞不透,就用这法,还管用,题外话。最后我想说的是,当我们面对市场要求时,产品往往考虑的是可靠性、性能、价格而不是你用的什么芯片,在满足性能的基础上结构越简单就越可靠,芯片越通用价格就越低,能用51就不用196,能用2407就不用2812,除非把芯片本身作买点利用高成本赢取高利润。无论2000还是5000、6000系列都有市场前景,关键是要做深做透获取知识的方法、处理项目的能力是相通的,具体的说就是不要把目光盯在做硬件还是做软件上,用ASM还是C,要勤动手打好基础,提高自己对系统总体设计的能力,从系统的眼光看问题。为什么都是做DSP的有的毕业拿3000,有的5000、8000,除了运气和关系外,重要的是你对事物的认识深度和高度。我一直都记住这句话:有前途的人做什么都有前途,没前途的人做什么都没前途。二.与其说是钻在里面,毕业设计是搞240,在老师的压力做出了一点东西,这期间主要是对DSP的各种基础知识的熟悉与理解,对DSP的真正深入是在公司工作以后。当初进公司,因为正有一个项目需要用5410要我接手。说实话,在学校期间我5000的书都没有看过一眼,可没办法,只能靠自己了。不过好的是我2000DSP的基础很好。接过项目后,我第一个星期就全部看的是5000的指令,DSP的结构倒没怎么看,因为项目硬件已成型,主要是算法。这样,花了一个星期熟悉指令与项目相关的程序,第二个星期也就开始编程了。半个月以后我对5410也就用很熟了的,当然主要还是讲在算法方面。这个项目太概做了四个月吧,系统程序是我编写的,主要有如64位加减乘除乘方开方、及时域方面的一些算法。现在又做一个控制系统,用2407开发的,硬件主要有直交变频,并把2407的所有外设资源全部用到了。现在我可以这样自夸一句吧:TI的2000系列与5000系列的我都熟悉,要我去以此做个系统,没问题。上面是把我搞DSP的经历简单说了一下的吧,在这里我想对正在学及想学DSP的难兄们说一句的是,DSP并不是很难。当然,这个前提是你的基础要好,我单片机,接口都还行,当初就是从单片机改成DSP的。有了单片机的基础再去学2000第列的DSP(下面的DSP单指2000系列,另有说明为止),你就可以把DSP看成一个super microcontroller了。相比之下,DSP除了比单片机多了更丰的外设接口(SPI,SCI、CAN、PWM、CAP、QEP等等),他就是一块单片机,只不过在单片机来说你要另加芯片的工作,DSP全部把它做在一块芯片去了,我现在看DSP也真就这么简单。前面有人提到DSP主要是做算法,这句话有一定的片面性: TI有很多系列的DSP,现在主流的DSP主要为2000系列、3000系列、4000系列、5000系列、6000系列。除了2000与5000系列是定点DSP外,其余的均为浮点系列。TI的2000系列主要长处是在用于控制系统,因为它的资源非常丰富,前面提到,在控制系统中用到的一些外设2000系列均在片内集成了。TI的5000系列主要长处是用于数字信号的算法处理,这里所讲算法处理主要是指在数字信号处理时的一些算法,如FIR、IIR、FFT等等。5000系列的DSP的速度比2000快,2407最快只能到40M,2800系列除外,5410的DSP可以达到160M,如现在我们主要用来做数字信号方面的处理以及简单的静态图像处理等这样一些在资源需要处于中等的一些算法。TI的6000系列主要是用在实时图像处理,这个就更则重于算法处理。一般的硬件很少自制,我们是用TI的DSK板再加上自主板相结合。三.使用C/C++语言编写基于DSP程序的注意事项
1、不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师”优化处理,例如:进行绝对值运算,可以调用fabs()或abs()函数,也可以使用if...else...判断语句来替代。
2、要非常谨慎地使用局部变量,根据自己项目开发的需要,应尽可能多地使用全局变量和静态变量。
3、一定要非常重视中断向量表的问题,很多朋友对中断向量表的调用方式不清楚。其实中断向量表中的中断名是任意取定的,dsp是不认名字的,它只认地址!中断向量表要重新定位。这一点很重要。
4、要明确dsp软件开发的第一步是对可用存储空间的分析,存储空间分配好坏关系到一个dsp程序员的水平。对于dsp,我们有两种名称的存储空间,一种是物理空间,另一种是映射空间。物理空间是dsp上可以存放数据和程序的实际空间(包括外部存储器),我们的数据和程序最终放到物理空间上,但我们并不能直接访问它们。我们要访问物理空间,必须借助于映射空间才行!但是映射空间本身是个“虚”空间,是个不存在的空间。所以,往往是映射空间远远大于实际的物理空间,有些映射空间,如io映射空间,它本身还代表了一种接口。只有那些物理空间映射到的映射空间才是我们真正可访问(读或写)的存储空间。
5、尽可能地减少除法运算,而尽可能多地使用乘法和加法运算代替。
6、如果ti公司或第三方软件合作商提供了dsplib或其他的合法子程序库供调用,应尽可能地调用使用。这些子程序均使用用汇编写成,更为重要之处是通过了tms320算法标准测试。而且,常用的数字信号处理算法均有包括!
7、尽可能地采用内联函数!而不用一般的函数!可以提高代码的集成度。
8、编程风格力求简炼!尽可能用c语言而不用c++语言。我个人感到虽然c++终代码长了一些,好象对执行速度没有影响。
9、因为在c5000中double型和float型均占有2个字,所以都可以使用,而且,可以直接将int型赋给float型或double型,但,尽可能地多使用int数据类型代替!这一点需要注意!
10、程序最后至少要加上一个空行,编译器当这个空行为结尾提示符。
11、大胆使用位运算符,非常好用!
12、2003年6月份从ti的网站上下到了关于tms320c67x系列dsp的快速算法库,于是,tms320c5000和c6000全系列的快速算法库都问世了,这些算法库均可供c/c++语言直接调用,优化程度100%,实际编程时尽可能地使用
第四篇:DSP学习心得
数字信号处理—DSP课程学习的认识
今年学习了DSP这门课程后,有了一些自己的认识和见解,并且体会到了它强大的功能和作用,它不但在高端的技术领域有很重要的地位,如通信、雷达、声纳、语音合成和识别、图像处理、高速控制等;而且在生活中有它不小的作用,如,影视、仪器仪表、医疗设备、家用电器等众多领域。
但是,由于DSP技术发展很快,生产DSP芯片的厂家又多,这既是它的优点同时又是缺点,因为这样会导致产品更新换代的周期越来越短,还有,每一种芯片,都有其独特的硬件结构和一套专门的指令系统与开发工具,这更加的带来了学习DSP技术的困难。在我自己的学习体系里,有自己的一点经验可以用来辅助的学习这门课程。古时候的一个习语说的是“窥一斑而知全豹”这个同时可以用来指导学习DSP,尽管它的更新换代很快,但也只是为了完善它而更好用和借助其它的技术为它添加一些别的功能而使其更强大,其实质的理论还没有变话,所以,我们可以就其某一个芯片的知识来指导其它的芯片的学习和利用。这里,以TMS320系列DSP芯片为例来进行知识的梳理。
x(t)→抗混叠滤波器→A/D→数字信号处理器→D/A→低通滤波器→y(t)
数字信号处理系统简化框图
这个作为基本的理论模型,然后开始主要内容:1.1,TMS320系列DSP芯片的概述﹑分类及应用、平台;1.2,主要特性有①CPU,②存储器,③指令系统,④在片外围电路,⑤电源,⑥在片仿真接口,⑦速度、组成框图;1.3,总线结构;
1.4,存储器空间分配、存储器(程序存储器、数据存储器);1.5,中央处理单元中,算术逻辑运算单元①ALU的输入,②ALU的输出,③溢出处理,④进位位,⑤双16位算术运算,累加器A和B(保存累加器的内容、累加器移位和循环移位、专用指令),桶形移位器乘法器/加法器单元,比较、选择和存储单元,指数编码器,CPU状态和控制寄存器;1.6,数据寻址方式①立即寻址,②绝对寻址,③累加器寻址,④直接寻址,⑤间接寻址;⑥存储器映像寄存器寻址,⑦堆栈寻址;1.7程序存储器地址生成方式,程序计数器,分支转移,调用与返回,条件操作,重复操作(重复执行单条指令、程序块重复操作),复位操作,中断(中断类型、中断标志寄存器和中断屏蔽寄存器、中断处理过程),省电方式;
1.8,流水线①流水线操作,②延迟分支转移,③条件执行,④双寻址存储器与流水线,⑤单寻址存储器与流水线,⑥流水线冲突和插入等待周期(流水线冲突、等待周期表);1.9,在片围电路①并行I/O口及通用I/O引脚,②定时器,③时钟发生器(硬件配置的PLL软件可编程PLL),④主机接口;1.10,串行口;串行口概述(标准串行口、缓冲串行口、时分多路串行口、多通道缓冲串行口);
1.11,DMA控制器①DMA控制器的基本特征,②子地址寻址方式,③DMA通道优先级和使能控制寄存器,④DMA通道现场寄存器,⑤DMA编程举例;1.12,外部总线①外部总线接口,②外部总线操作的优先级别,③等待状态发生器,④分区切换逻辑,⑤外部总线接口定时器(存储器寻址定时图、I/O寻址定时图);⑥复位和IDLE3省电工作方式(外部总线复位定时图、“唤醒”IDLE3省电方式的定时图);1.13,TMS320C54x引脚信号说明。
第五篇:DSP实验5
实验五 FIR数字滤波器的设计(设计性实验)
实验名称:FIR数字滤波器的设计 实验项目性质:编程设计 所属课程名称:数字信号处理 计划学时:4
一、实验目的
1.掌握用窗函数法、频率采样法设计FIR滤波器的原理及方法,熟悉响应的计算机编程;
2.熟悉线性相位FIR滤波器的幅频特性和相频特性; 3.了解各种不同窗函数对滤波器性能的影响。
二、预习与参考
2.1窗口法
窗函数法设计线性相位FIR滤波器步骤
确定数字滤波器的性能要求:临界频率{ωk},滤波器单位脉冲响应长度N; 根据性能要求,合理选择单位脉冲响应h(n)的奇偶对称性,从而确定理想频率响应Hd(ejω)的幅频特性和相频特性;
求理想单位脉冲响应hd(n),在实际计算中,可对Hd(ejω)按M(M远大于N)点等距离采样,并对其求IDFT得hM(n),用hM(n)代替hd(n);
选择适当的窗函数w(n),根据h(n)= hd(n)w(n)求所需设计的FIR滤波器单位脉冲响应;
求H(e),分析其幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。jω窗函数的傅式变换W(ejω)的主瓣决定了H(ejω)过渡带宽。W(ejω)的旁瓣大小和多少决定了H(ejω)在通带和阻带范围内波动幅度,常用的几种窗函数有:
矩形窗 w(n)=RN(n); Hanning窗
;
Hamming窗 ;
Blackmen窗 ;
Kaiser窗。
式中Io(x)为零阶贝塞尔函数。2.2频率采样法
频率采样法是从频域出发,将给定的理想频率响应Hd(ejω)加以等间隔采样
然后以此Hd(k)作为实际FIR数字滤波器的频率特性的采样值H(k),即令
由H(k)通过IDFT可得有限长序列h(n)
将上式代入到Z变换中去可得
其中Φ(ω)是内插函数
三、设计指标
(1)矩形窗设计线性相位低通滤波器(参数自主设定)(2)改用Hanning 窗,设计(1)中的低通滤波器。
四、实验要求(设计要求)
(1)编写窗函数法FIR滤波器设计代码,观察幅频和相位特性的变化,注意长度N变化的影响; 观察并记录窗函数对滤波器幅频特性的影响,比较两种窗的特点;(2)要求所编的程序能正确运行;画出波形,完成并提交实验报告。
五、调试及结果测试 提交带注释的(或给出每个操作所涉及的算法)且运行正确的源程序,说明调试过程中所遇到的问题、解决方法及经验与体会。
六、考核形式
理论课程闭卷考试,实验部分提交实验报告。
七、实验报告要求
1.实验报告必须独立完成,抄袭、复制他人作无效处理: 2.实验报告要求:
(1)要按规定从教学网站下载样板文件格式书写。
(2)实验报告要注明姓名,学号,实验名称,完成日期,联系电话。(3)内容不真实、不认真、不能按时完成的,不记成绩。(4)简要说明设计题目、内容、原理。
3.附滤波器设计代码及要求的图形。对实验结果和实验中的现象进行简练明确的分析并作出结论或评价,对本人在实验全过程中的经验、教训、体会、收获等进行必要的小结。4.报告要求独立完成,篇幅为A4纸不超过5页,突出自己的设计。5.对改进实验内容、安排、方法、设备等的建议和设想,(此部分可选作)。6.不能完成实验报告者,不能参加课程考试。
八、思考题
1.不同窗函数对滤波器性能的影响如何?
2.线性相位FIR滤波器的幅频特性和相频特性如何?
附:实验内容
%N=45,计算并画出矩形框、汉明窗、布莱克曼窗的归一化的幅度谱,并比较各自的主要特点 %(1)矩形窗(Rectangle Window)调用格式:w=boxcar(n),根据长度 n 产生一个矩形窗 w。
%(2)三角窗(Triangular Window)调用格式:w=triang(n),根据长度 n 产生一个三角窗 w。
%(3)汉宁窗(Hanning Window)调用格式:w=hanning(n),根据长度 n 产生一个汉宁窗 w。
%(4)海明窗(Hamming Window)调用格式:w=hamming(n),根据长度 n 产生一个海明窗 w。
%(5)布拉克曼窗(Blackman Window)调用格式:w=blackman(n),根据长度 n 产生一个布拉克曼窗 w。
%(6)恺撒窗(Kaiser Window)调用格式:w=kaiser(n,beta),根据长度 n 和影响窗函数旁瓣的β参数产生一个恺撒窗w 1 clear all %清零
close all %关闭其他程序 N=45;w1=boxcar(N);%矩形窗的调用 w2=hamming(N);%汉明窗的调用
w3=blackman(N);%布莱克曼窗的调用 [h,w]=freqz(w1,N);%矩形窗的幅频特性
figure(1)%第一张图
plot(w/pi,20*log10(abs(h)));%绘制图形
axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 grid on%画格
xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 title('矩形窗');%标题 figure(2)[h,w]=freqz(w2,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-80,10]);grid on xlabel('归一化频率/π');ylabel('幅度/dB');title('汉明窗');figure(3)[h,w]=freqz(w3,N);plot(w/pi,20*log10(abs(h)));axis([0,1,-150,10]);grid on xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗');2 %N=15,带通滤波器的两个通带边界分别是w1=0.3π,w2=0.5π。用汉宁窗设计此线性相位滤波器,观察
%它的实际3dB和20dB带宽。N=45,重复这一设计,观察幅频和相位特性的变化,注意N变化的影响。
close all %关闭其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;w=hanning(N);%汉宁窗的调用 n=0:N-1;alfa=(N-1)/2;%对称轴
h=fir1(N-1,[w1 w2],w);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗
[h1,w3]=freqz(h,1);% %汉宁窗的幅频特性 figure(1)%第一张图
subplot(2,1,1);%两张图的第一张图
plot(w3/pi,20*log10(abs(h1)));%绘制图形
grid on;%画格
axis([0,1,-80,10]);;%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签
subplot(2,1,2);%两张图的第二张图 plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');N=45;w=hanning(N);n=0:N-1;alfa=(N-1)/2;h=fir1(N-1,[w1 w2],w);[h1,w3]=freqz(h,1);figure(2)subplot(2,1,1);plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');subplot(2,1,2);plot(w3/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');3 close all%关闭其他程序 clear all%清零 N=15;w1=0.3;w2=0.5;wn1=boxcar(N);%矩形窗的调用
wn2=blackman(N);%布莱克曼窗的调用
hn1=fir1(N-1,[w1 w2],wn1);%设计加窗函数的有效滤波器,w1,w2通带的两个范围,w指汉宁窗
hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);%矩形窗的幅频特性 figure(1)%第一张图%绘制图形
plot(w3/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格
axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 title('矩形窗,N=15');%标题 [h1,w3]=freqz(hn2,1);figure(2)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗,N=15');N=45;wn1=boxcar(N);wn2=blackman(N);hn1=fir1(N-1,[w1 w2],wn1);hn2=fir1(N-1,[w1 w2],wn2);[h1,w3]=freqz(hn1,1);figure(3)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-80,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('矩形窗,N=45');[h1,w3]=freqz(hn2,1);figure(4)plot(w3/pi,20*log10(abs(h1)));grid on;axis([0,1,-110,10]);xlabel('归一化频率/π');ylabel('幅度/dB');title('布莱克曼窗,N=45');4:
close all%关闭其他程序 clear all%清零 N=40;%beta=4 for n=1:3 %or循环 if n==1 %if语句 beta=4;elseif n==2 beta=6;else beta=10;end;w=kaiser(N,beta);%凯塞窗的调用
h=fir1(N-1,[0.2 0.4 0.6 0.8],w);%设计加窗函数的有效滤波器,w指汉宁窗 [h1,w1]=freqz(h,1);%凯塞窗的幅频特性 figure(n)%第n张图
subplot(2,1,1);%两张图的第一张图 plot(w1/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格
axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签 if n==1 %if语句
title('beta=4');elseif n==2 title('beta=6');else title('beta=10');end;subplot(2,1,2);plot(w1/pi,angle(h1));grid on;axis([0,1,-4,4]);xlabel('归一化频率/π');ylabel('角度/rad');end 5 clear all%清零
close all%关闭其他程序 N=45;k=0:N-1;for k=0:N-1 %for循环 w=2*pi/N*k;%取样 hk(1,k+1)=0;if((w>=0.2*pi)&&(w<=0.4*pi))||(w>=0.6*pi && w<=0.8*pi)||(w>=1.2*pi && w<=1.4*pi)||(w>=1.6*pi && w<=1.8*pi)hk(1,k+1)=1;end end k=0:N-1;hk(1,5)=0.5;hk(1,11)=0.5;hk(1,14)=0.5;hk(1,20)=0.5;hk(1,27)=0.5;hk(1,33)=0.5;hk(1,36)=0.5;hk(1,42)=0.5;thetak=-k*2*pi/N*((N-1)/2);%表示相位 hk1=hk.*exp(j*thetak);%定义式子 hn=ifft(hk1);%快速傅立叶逆变换 [h1,w1]=freqz(hn,1);%幅频特性
plot(w1/pi,20*log10(abs(h1)));%绘制图形 grid on;%画格
axis([0,1,-80,10]);%横轴0到1,纵轴是-80到10 xlabel('归一化频率/π');%x轴标签 ylabel('幅度/dB');%y轴标签
六、实验分析及心得体会