DSP实验入门新手上路

合集下载

DSP入门教程(非常经典)

DSP入门教程(非常经典)
2)对于 C3x 系列: 硬件等待信号为/RDY,低电平是不等待。 软件等待由总线控制寄 存器 中的 SWW 和 WTCNY 决定,可以加入最多 7 个等待,但等待是不分段的,除 了片内之外 全空间有效。
3)对于 C5000 系列: 硬件等待信号为 READY,高电平时不等待。 软件等待由 SWWCR 和 SWWSR 寄存器决定,可以加入最多 14 个等待。其中程序存储器、控制程序存储器和 数据 存储器及 I/O 可以分别设置。
4)地址译码、IO 扩展等用 CPLD 或者 FPGA 来做,将 DSP 的地址线、数据线、控制信 号 线如 IS/PS/DS 等都引进去有利于调试
5、如何高效开始 TI DSP 的软件开发 如果你不是纯做算法,而是在一个目标版上进行开发, 需要使用 DSP 的片上外设,需要控 制片外接口电路,那么建议在写程序前先好好将这个目标 版的电路设计搞清楚。最重要的是 程序、数据、I/O 空间的译码。不管是否纯做算法还是软硬结合, DSP 的 CPU,memory,program memory addressing, data mem.ory addressing 的资料都需要看.
1)看 CCS 的使用指南
2)明白 CMD 文件的编写
3)明白中断向量表文件的编写,并定位在正确的地方
4)运行一个纯 simulator 的程序,了解 CCS 的各个操作
5)到 TI 网站下相关的源码,参考源码的结构进行编程
6)不论是 C 编程还是 ASM 编程,模块化是必须的
6、选择 C 还是选择 ASM 进行编程 记住一条原则,TI 的工程师在不断改进 CCS 的 C 程序优化编译器,现在 C 优化的效率可 达 到手工汇编的 90%甚至更高。当然有的时候如果计算能力和内存资源是瓶颈,ASM 还 是有 优势,比如 G.729 编解码。但是针对一般的应用开发,C 是最好的选择。 新手编程则选择 C 和汇编混合编程更有利一些

DSP实验一 CCS入门实验指导-HelloWorld(ZX)

DSP实验一 CCS入门实验指导-HelloWorld(ZX)

实验一 开发一个简单的应用程序本实验使用hello world实例介绍在CCS中创建、调试和测试应用程序的基本步骤;介绍CCS的主要特点,为在CCS中深入开发DSP软件奠定基础。

在使用本实例之前,你应该已经根据安装说明书完成了CCS安装。

1.1 创建工程文件在本章中,将建立一个新的应用程序,它采用标准库函数来显示一条hello world 消息。

1. 如果CCS 安装在c:\ti 中,则可在c:\ti\myprojects 建立文件夹hello1 。

( 若将CCS 安装在其它位置, 则在相应位置创建文件夹hello1。

)2. 将c:\ti\tutorial\sim54xx\hello1 中的所有文件拷贝到上述新文件夹。

3. 从Windows Start 菜单中选择Programs→ Texas Instruments→Code Composer Studio ‘C5000→CCS。

(或者在桌面上双击CCS图标。

)注:CCS 设置在正确打开CCS开发平台前,首先应通过Setup对CCS进行软件设置,通过设置正确的驱动完成CCS集成开发环境与目标板或Simulator之间的通信接口。

有关Emulator设置的具体过程可参考实验箱配套使用说明。

本次实验使用的是Simulator,所以只需执行Edit->Add to System(或直接在Import窗口中进行添加),将C54xSimulator添加到系统中即可使用。

4. 选择菜单项Project→New。

5. 在Save New Project As 窗口中选择你所建立的工作文件夹并点击Open。

键入myhello 作为文件名并点击Save,CCS 就创建了myhello.pjt的工程文件,它存储你的工程设置,并且提供对工程所使用的各种文件的引用。

1.2 向工程添加文件1. 选择Project→Add Files to Project,选择hello.c 并点击Open。

DSP实验手册实验一CCS使用及DSP的运算(精)

DSP实验手册实验一CCS使用及DSP的运算(精)

实验一 CCS使用及DSP 基本数学运算一、实验目的:1、熟悉CCS 集成开发环境,掌握工程的生成方法;2、熟悉SEED-DTK5416实验环境;3、掌握CCS 集成开发环境的调试方法;4、了解数在计算过程中的定标,掌握数的定点、浮点表示方法,定点、浮点基本运算以及定点、浮点间的相互转换。

二、实验内容:1、 DSP源文件的建立;2、 DSP程序工程文件的建立;3、编译与链接的设置,生成可执行的DSP 文件;4、进行DSP 程序的调试与改错;5、学习使用CCS 集成开发工具的调试工具;6、观察实验结果;三、实验知识背景:在DSP 编程过程中,数以二进制、十进制、与十六制表示均可。

在定点DSP 的运算过程中,数一般采用二进制与二进制补码的形式进行运算的。

其中二进制数只能代表正数不能代表负的数,而二进制补码记数系统弥补了这一缺点。

它的构成如下;在二进制的基础上,加一符号位。

符号位位于二进制数的最高位当为正数时,符号位为0,为负数时,符号位为1当采用二进制补码进行数的运算时,具有如下的两个优点:可以将加法与减法统一成加法运算符号位可以进行扩展,而其数值不变,这可以使一个比较小的数存放到比较大的寄存器当中例:1×2 + 0×1 = -2 (11110)2 = 1×(-16)+ 1×8 + …… +当将其符号位扩展三位,放入一8位的寄存器中1×2 + 0×1 = -2 (11111110)2 = 1×(-128)+ 1×64 + …… +这将为运算提供极大的方便,因而在定点的DSP 中,大多数情况采用二进制补码形式。

C5000系列的DSP 硬件只支持定点运算,浮点运算要通过软件来实现。

其运算字长为16位,也就是说,DSP 所能表示的整数的范围也就决定了,其范围为-32768到32767。

而在很多情况下,数学运算过程中不一定是整数,而且动态范围也不是固定不变的。

DSP实验指导书(DSP处理器原理与应用)

DSP实验指导书(DSP处理器原理与应用)

实验一:DSP软件集成开发环境CCS一. 实验目的1.了解DSP 软件开发集成环境Code Composer Studio (CCS) 的安装和配置过程;2.熟悉并掌握CCS 的操作环境和基本功能,了解DSP软件开发的一般流程:(1) 学习创建工程和管理工程的方法;(2) 了解工程文件和映像文件的基本内容;(3) 了解基本的编译和调试功能;(4) 学习使用观察窗口。

二. 实验设备计算机、Code Composer Studio 2.2 或以上版本三. 背景知识1.DSP 应用系统开发一般需要借助以下调试工具:―软件集成开发环境(CCS):完成系统的软件开发,进行软件和硬件仿真调试;―硬件开发及测试平台:实现系统的硬件仿真与调试,包括仿真器和评估模块。

S 集成了适用于所有TI 器件的源码编辑、编译链接、代码性能评估、调试仿真等功能,为设计人员提供了一个完整的嵌入式系统软件开发环境。

3.系统软件部分可以通过CCS 建立的工程文件进行管理,工程文件一般包含以下几种文件:―源程序文件:C 语言或汇编语言文件(*.ASM 或*.C)―头文件(*.H)―命令文件(*.CMD)―库文件(*.LIB, *.OBJ)四. 实验步骤1.创建工程文件双击CCStudio 图标,启动CCS,CCS 的初始界面包括工程管理区和工作区两部分。

在菜单中选择“Project—>New…”,弹出“Project Create”窗口:若标题栏显示xxxx Emulator,则需要先运行Setup CCS,选择合适的软件仿真环境在“Project”编辑框内填入项目名称,例如“hello1”;有必要的话,可以更改项目文件夹位置(Location);“Project”下拉框用以确定输出文件类型;目标硬件类型在“Target”下拉框中指定。

点击“完成”后,CCS 自动在指定目录下生成“hello1.pjt”工程文件。

工程文件中保存了对应工程的设置信息和内部文件的引用情况。

DSP入门教程

DSP入门教程

献给初学者-DSP入门教程helloDSP论坛前言:此资料也是来源于网络,并不是我们原创,但是希望这些资料能够给初学DSP的朋友们一点帮助,也希望你们能够把这里当成是你们学习DSP技术的一个家园,让我们携手共建,为更多的朋友创造学习的条件~1、TI DSP的选型主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、I/O口数量、中断数量、DMA通道数等。

DSP的主要供应商有TI,ADI,Motorola,Lucent和Zilog等,其中TI占有最大的市场份额。

TI公司现在主推四大系列DSP1)C5000系列(定点、低功耗):C54X,C54XX,C55X 相比其它系列的主要特点是低功耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS等应用。

处理速度在80MIPS-- 400MIPS之间。

C54XX和C55XX 一般只具有McBSP同步串口、HPI并行接口、定时器、DMA等外设。

值得注意的是C55XX提供了EMIF外部存储器扩展接口,可以直接使用SDRAM,而C54XX则不能直接使用。

两个系列的数字IO都只有两条。

2)C2000系列(定点、控制器):C20X,F20X,F24X,F24XX ,C28x该系芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),WATCHDOG、CAN总线/PWM发生器、数字IO脚等。

是针对控制应用最佳化的DSP,在TI所有的DSP中,只有C2000有FLASH,也只有该系列有异步串口可以和PC的UART 相连。

3)C6000系列:C62XX,C67XX,C64X 该系列以高性能著称,最适合宽带网络和数字影像应用。

32bit,其中:C62XX和C64X是定点系列,C67XX 是浮点系列。

该系列提供EMIF扩展存储器接口。

该系列只提供BGA封装,只能制作多层PCB。

且功耗较大。

同为浮点系列的C3X中的VC33现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在150MIPS。

DSP汇编

DSP汇编

DSP汇编实验一新手上路]初学者编写的第一个程序通常是控制XF引脚的变化,然后用示波器测量XF脚波形或观察与相接的LED。

这个程序也常常用来测度一下DSP能否正常工作。

实验1.1最简单的程序:控制XF引脚周期性变化实验目的:通过简单的程序了解DSP程序的结构,熟悉CCS开发环境。

**最简单的程序:TestXF1.asm*循环对XF位置1和清0,用示波器可以在XF脚检测到电平高低周期性变化*常用于检测DSP是否工作。

*.mmregs;预定义的寄存器.def CodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBX XF;XF置1 RPT#999;重复执行1000次空指令产生延时NOP RSBX XF;XF清0 RPT#999;重复执行1000次空指令产生延时NOP BCodeStart;跳转到程序开头循环执行.end NOP指令执行时间为一个时钟周期,设DSP工作频率是50MHz,可以估算出XF引脚电平的变化频率约为:50M/2000=25kHz在没有示波器的情况下,就要将程序1.1稍作改进,增加延时,用一个延时子程序将XF脚电平变化频率降到肉眼可分辨的程度,就可以用LED来显示电平的变化,程序如下:实验1.2子程序调用实验目的:学习子程序的调用**TestXF2.asm*对TestXF1.asm稍作改进,用延时子程序设置较长的延时,*可以用试验板上的LED看到XF引脚电平的变化*.mmregs;预定义的寄存器.def CodeStart;定义程序入口标记.text;程序区CodeStart:;程序入口SSBX XF;XF置1 CALL Delay;调用延时程序RSBX XF;XF清0 CALL Delay;调用延时程序B CodeStart;跳转到程序开头循环执行**延时子程序:Delay*用两级减一计数器来延时。

调整AR1和AR2的大小LED闪烁的频率不同*Delay:STM#999,AR1;循环次数1000 LOOP1:STM#4999,AR2;循环次数5000 LOOP2:BANZ LOOP2,*AR2-;如果AR2不等于0,AR2减1,再判断BANZ LOOP1,*AR1-;如果AR1不等于0,AR1减1,跳转到LOOP1 RET.end**注意这种延时方法并不精确,需要精确定时必须用定时器。

DSP入门

DSP入门

一、时钟和电源1.问:DSP的电源设计和时钟设计应该特别注意哪些方面?外接晶振选用有源的好还是无源的好?答:时钟一般使用晶体,电源可用TI的配套电源。

外接晶振用无源的好。

2.问:TMS320LF2407的A/D转换精度保证措施。

答:参考电源和模拟电源要求干净。

3.问:系统调试时发现纹波太大,主要是哪方面的问题?答:如果是电源纹波大,加大电容滤波。

4.问:请问我用5V供电的有源晶振为DSP提供时钟,是否可以将其用两个电阻进行分压后再接到DSP的时钟输入端,这样做的话,时钟工作是否稳定?答:这样做不好,建议使用晶体。

5.问:一个多DSP电路板的时钟,如何选择比较好?DSP电路板的硬件设计和系统调试时的时序问题?答:建议使用时钟芯片,以保证同步。

硬件设计要根据DSP芯片的时序,选择外围芯片,根据时序设定等待和硬件逻辑。

二、干扰与板的布局6.问:器件布局应重点考虑哪些因素?例如在集中抄表系统中?答:可用TMS320VC5402,成本不是很高。

器件布局重点应是存贮器与DSP的接口。

7.问:在设计DSP的PCB板时应注意哪些问题?答:1.电源的布置;2.时钟的布置;3.电容的布置;4.终端电路;5.数字同模拟的布置。

8.问:请问DSP在与前向通道(比如说AD)接口的时候,布线过程中要注意哪些问题,以保证AD采样的稳定性?答:模拟地和数字地分开,但在一点接地。

9.问:DSP主板设计的一般步骤是什么?需要特别注意的问题有哪些?答:1.选择芯片;2.设计时序;3.设计PCB。

最重要的是时序和布线。

10.问:在硬件设计阶段如何消除信号干扰(包括模拟信号及高频信号)?应该从那些方面着手?答:1.模拟和数字分开;2.多层板;3.电容滤波。

11.问:在电路板的设计上,如何很好的解决静电干扰问题。

答:一般情况下,机壳接大地,即能满足要求。

特殊情况下,电源输入、数字量输入串接专用的防静电器件。

12.问:DSP板的电磁兼容(EMC)设计应特别注意哪些问题?答:正确处理电源、地平面,高速的、关键的信号在源端串接端接电阻,避免信号反射。

DSP实验报告

DSP实验报告

DSP第一次上机实验报告班级:学号:姓名:第一部分:实验要求(1) 常用数字信号序列的产生:熟悉Matlab产生数字信号的基本命令,加深对数字信号概念的理解,并能够用Matlab 产生和绘制出一些常用离散信号序列。

请用Matlab画出下列序列的波形(-10<n<10):a) δ(n)b) 单位阶跃序列2 u(n-5)c) 矩形序列R(n)d) y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)(2) 数字信号的基本运算:加、减、尺度(乘除)和移位是数字信号处理中最基本的算术运算,将上述基本序列进行这些基本运算,得到多个序列构成的组合序列。

请用您的计算机声卡采用一段您自己的声音x(n),长度为45秒,单声道,取样频率44.1kHz,16bit/样值,然后与给定的一段背景音乐y(n) 按下式叠加为一个声音信号z(n):z(n) = 0.7x(n) + 0.3y(n)第二部分:代码及结果截图(a)单位冲激函数δ(n)(b)单位阶跃序列2 u(n-5)c) 矩形序列R(n)d) y(n)=2sin(0.3πn)+ 0.5cos2(0.6πn)组合序列-10-8-6-4-20246810音频处理>> [r,fs,bits]=wavread('Recordd.wav');%读取Recordd文件并赋给变量r,作为录音文件[b,fs,bits]=wavread('adele');% 读取adele文件并赋给变量b,作为背景音乐x=r((fs*0+1:fs*45),:);%录音提取1s到45sy=b((fs*45+1:fs*90),:);%背景音乐提取1s到90sz=0.7*x+0.3*y;%叠加一个声音信号wavwrite(z,fs,bits,'music.wav');subplot(3,1,1),plot(x),title('record');subplot(3,1,2),plot(y),title('background');subplot(3,1,3),plot(z),title('music');%作图0.511.52 2.53 3.54x 105-101record0.511.52 2.53 3.54x 105-101background0.511.522.533.54x 105-101music。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

初学者编写的第一个程序通常是控制XF 引脚的变化,然后用示波器测量XF 脚
波形或观察与相接的LED。

这个程序也常常用来测度一下DSP 能否正常
工作。

实验1.1 最简单的程序:控制XF 引脚周期性变化
实验目的:通过简单的程序了解DSP 程序的结构,熟悉CCS 开发环
境。

*************************************************************
*最简单的程序:TestXF1.asm
*循环对XF 位置1 和清0,用示波器可以在XF 脚检测到电平高低周期
性变化
*常用于检测DSP 是否工作。

*************************************************************
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF 置1
RPT #999 ;重复执行1000 次空指令产生延时
NOP
RSBX XF ;XF 清0
RPT #999 ;重复执行1000 次空指令产生延时
NOP
B CodeStart ;跳转到程序开头循环执行
.end
NOP 指令执行时间为一个时钟周期,设DSP 工频率是50MHz,可以估算出
XF 引脚电平的变化频率约为:50M/2000=25kHz
在没有示波器的情况下,就要将程序1.1 稍改进,增加延时,用一个延时子程序将XF 脚电平变化频率降到肉眼可分辨的程度,就可以用LED 来显示电平的变化,程序如下:
实验1.2 子程序调用
实验目的:学习子程序的调用
*************************************************************
*TestXF2.asm
*对TestXF1.asm 稍改进,用延时子程序设置较长的延时,
*可以用试验板上的LED 看到XF 引脚电平的变化
*************************************************************
.mmregs ;预定义的寄存器
.def CodeStart ;定义程序入口标
.text ;程序区
CodeStart: ;程序入口
SSBX XF ;XF 置1
CALL Delay ;调用延时程序
RSBX XF ;XF 清0
CALL Delay ;调用延时程序
B CodeStart ;跳转到程序开头循环执行
**************************************************************
*延时子程序:Delay
*用两级减一计数器来延时。

调整AR1 和AR2 的大小LED 闪烁的频率不同
**************************************************************
Delay:
STM #999,AR1 ;循环次数1000
LOOP1: STM #4999, AR2 ;循环次数5000
LOOP2: BANZ LOOP2,*AR2- ;如果AR2 不等于0,AR2 减1,再判断
BANZ LOOP1,*AR1- ;如果AR1 不等于0,AR1 减1,跳转到LOOP1
RET
.end
**************************************************************
*注意这种延时方法并不精确,需要精确定时必须用定时器。

*按此法延时的近似公式为:4*(AR2+1)*(AR1+1)*时钟周期
*当DSP 工作在50MHz(时钟周期20ns),AR1=999, AR2=4999 时
*延时约为400ms,则LED 闪烁的周期为800ms,频率1.25Hz
**************************************************************
设计指导:
1.源代码书写格式
源代码的书写有一定的格式,初学者往往容易忽视。

简单归纳如下:
1.每一行代码分为三个区:标号区、指令区和注释区。

标号区必须顶格
写,
主要是定义变量、常量、程序标签时的名称。

指令区位于标号区之后,以
空格
或TAB 格开。

如果没有标号,也必须在指令前面加上空格或TAB,不
能顶格。

注释区在标号区、程序区之后,以分号开始。

注释区前面可以没有标号区
或程
序区。

另外还有专门的注释行,以*打头,必须顶格开始。

2.一般区分大小写,除非加编译参数忽略大小写。

3.标点符号有时不注意会打成中文全角字符导致错误。

书写格式的要求在很多DSP 书里都没有提,初学者往往只把书上的代码
输入进
去,编译时得到错误的提示,而不知所措。

其中最容易犯的错误指令顶格
写,
不过一般经提示后不会犯第二次。

有些格式CCS 并没有做要求,但注意养成良好的代码书写风格,增加代
码的可
读性。

以上两个例子的书写风格可参考,但不是硬性规定:
1.标号区占3 个TAB 的间隔,即12 个字符
2.指令中的指令码占两个TAB 间隔,然后是操数。

3.每一行的尾注能对齐的尽量对齐
4.标明一段程序功能的注释以*号打头顶格写,如果功能说明的注释较多,

分格线框起来。

此外其它编程语言的编程风格也可以借用过来,比如标示符命名规则、程
序说
明的要求等。

如果项目有规定,则按规定执行。

本书的代码尽量保持一定的风格,不过读者可以发现前面的代码注释较
多,后
面随着学习的深入,一般不会对每一条指令加注释,只注明程序段的功能。


外代码贴到word 里后,格式有些错位,无法一一纠正。

2.链接配置文件
一个完整的DSP 程序至少包含三个部分:程序代码、中断向量表、链接配置文
件(*.cmd)。

这里介绍一下链接配置文件文件,对本次试验影响不大的中断向
量表将在后文介绍。

连接配置文件的确定了程序链接成最终可执行代码时的选项,其中有很多条
目,实现不同方面的选项,其中最常用的也是必须的有两条:1.存贮器的分配 2.
标明程序入口。

以本次实验为例,下面的简单的链接配置文件就够用了:
/* TestXF.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
MEMORY {
page 0:
PRAM: org=0100h len=0F00h /*定义程序存贮区,起始0100H,长度0F00H*/
}
SECTIONS{
.text:>PRAM page 0 /*将.text 段映射到page0 的param 区*/
}
由于每个程序都需要一个链接配置文件,可以编写一个满足通常需要的链接配
置文件。

为本手册通用的链接配置文件如下,可以满足本书大部分程序的需
要。

在未特别指明的情况下使用这个通用的链接配置文件:
/* 5402.cmd */
-e CodeStart /*程序入口,必须在程序中定义相应的标号*/
-m map.map /*生成存储器映射报告文件*/
MEMORY {
PAGE 0:
VECT: org=0080h len=0080h /*中断向量表*/
PARAM: org=100h len=0F00h /*代码区*/
PAGE 1:
DARAM: org=1000h len=1000h /*数据区*/
}
SECTIONS {
.text :> PARAM PAGE 0 /*代码段*/
.vectors :> VECT PAGE 0 /*中断向量表*/
STACK :> DARAM PAGE 1 /*堆栈*/
.bss :> DARAM PAGE 1 /*未命名段*/
.data :> DARAM PAGE 1 /*数据段*/
}
练习:
1、试一下不按规定格式书写代码会产生什么样的编译错误。

2、试一下将链接配置文件中的MEMORY,SECTIONS 改成小写会出现什么样
的编译错误。

3.修改程序1.2 中AR1,AR2 的值,观察LED 闪烁频率
PDF created with pdfFactory trial version 。

相关文档
最新文档