当前位置:文档之家› dsp报告

dsp报告

dsp报告
dsp报告

目录

第一章、基本算术运算 (1)

1.1、实验目的和要求 (1)

1.2、实验原理 (1)

1.3、实验内容 (2)

第二章、C54X的汇编语言程序设计 (7)

2.1、实验目的和要求 (7)

2.2、实验原理 (7)

2.3、实验内容 (8)

第三章、FFT算法的实现 (13)

3.1、实验目的和要求 (13)

3.2、实验原理 (13)

3.3、实验内容 (14)

第四章、ASK、PSK、FSK调制的实现 (16)

4.1、实验目的 (16)

4.2、实验原理 (16)

4.3、实验内容 (16)

心得体会 (20)

第一章、基本算术运算

1.1、实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP 中提供了大量的指令来 实现这些功能。本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法 和编程技巧。

1.2、实验原理

(1)、定点 DSP 中的数据表示方法

54X 是16 位的定点DSP 。一个16 位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示02,D1 位表示1

2,次高位(D14) 表示14

2。如果表示一个有符号数时,最高位(D15)为符号位,0 表示正数,1 表示负 数。例如,07FFFH 表示最大的正数32767(十进制),而0FFFFH 表示最大的负数-1(负

数用 2 的补码方式显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位D15)表示符号位。这样次高位(D14)表示12- ,然后是22-,最低位(D0)表示15

2

-。

所以 04000H 表示小数 0.5,01000H 表示小数3

2- = 0.125 ,而0001H 表示16 位定点(DSP 能表示的最小的小数(有符号)15

2

- =0.000030517578125。在后面的实验中,除非

有特别说明,我们指的都是有符号数。在C54X 中,将一个小数用16 位定点格式来表示的方法是用15

2乘以该小数,然后取整。

从上面的分析可以看出,在DSP 中一个16 进制的数可以表示不同的十进制数,或 者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘 除时,系统对它们的处理才是有所区别的,而在加减运算时,系统都当成整数来处理。 (2)实现 16 位定点加法

C54X 中提供了多条用于加法的指令,如ADD ,ADDC ,ADDM 和ADDS 。其中

ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加 法),而ADDM 专用于立即数的加法。 (3)实现 16 位定点减法

C54X 中提供了多条用于减法的指令,如SUB ,SUBB ,SUBC 和SUBS 。其中SUBS 用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法), 而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。SUB 指令与ADD 指令一样, 有许多的寻址方式。

(4)实现 16 位定点整数乘法

在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器

中。乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B

寄存器的高16 位。有关乘法指令的详细使用说明请参考《TMS320C54X 实用教程》。

在C54X 中,一般对数据的处理都当做有符号数,如果是无符号数乘时,要使用MPYU

指令。这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。

5) 实现 16位定点小数乘法

在 C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,

其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54X 中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。但注意

整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。两个小数(16 位)相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可得到16 位的结果。

(6) 实现 16 位定点整数除法

在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法

来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于

除以常数特别适用。另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。下

面我们以temp1/temp2 为例,说明如何使用SUBC 指令实现整数除法。其中变量temp1为被除数,temp2 为除数,结果即商存放在变量temp3 中。在完成整数除法时,先判断

结果的符号。方法是将两数相乘,保存A 或B 的高16 位以便判断结果的符号。然后只

做两个正数的除法,最后修正结果的符号。为了实现两个数相除,先将被除数装入A 或

B 的低16 位,接着重复执行SUB

C 指令,用除数重复减16 次后,除法运算的商在累加

器的低16 位,余数在高16 位。

(7) 实现16 位定点小数除法

在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的SUBC 指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),

所以被除数一定小于除数。这与整数除法正好相反。所以在执行SUBC 指令前,应将被

除数装入A 或B 寄存器的高16 位,而不是低16 位。其结果的格式与整数除法一样,A

或B 寄存器的高16 位为余数,低16 位为商。第二,与小数乘法一样,应考虑符号位对

结果小数点的影响。所以应对商右移一位,得到正确的有符号数。

1.3、实验内容

本实验需要使用C54X汇编语言实现加、减、乘、除的基本运算,并通过DES的存

贮器显示窗口观察结果。实验分两步完成:

(1)编写实验程序代码

本实验的汇编源程序代码主要分为六个部分:加法、减法、整数乘法、小数乘法

整数除法和小数除法。每个部分后面都有一条需要加断点的标志语句:nop

当执行到这条加了断点的语句时,程序将自动暂停。这时你可以通过“存贮器窗口”检

查计算结果。当然你看到的结果都是十六进制的数。实验源程序请参见附录。

(2)用ccs simulator调试运行并观察结果

在完成实验程序代码的输入,并使用ccs进行编译并连接,得到out文件后,就可

以在simulator 上调试运行。

调试步骤如下:

a. 启动ccs simulator。

b. 点击file ->load program,找到exer1.out(在产品光盘的code\base_operation\debug下)并装入。这时可在反汇编窗口看到程序代码。

c. 打开“Memory”窗口,并在其中选择要查看的存贮器地址段:0x080-0x08e。

d. 在反汇编窗口中在每个“nop”指令处都设一个断点,方法有两种:1.用鼠标双击该指令将其点亮即可。2.在菜单栏中选择debug?breakpoint,然后在弹出的对话框中

键入欲加断点的地址即可(注意地址的格式)。

e. 单击Run快捷键(或者F5按钮),启动执行基本算术运算程序,程序在执行完加法运算后自动暂停。通过register window窗口可以看到寄存器A的内容为0x46,这正是加法运算的结果。(注意,若在硬件仿真器环境下调试,受DSP指令流水线的影响,断点处可能看不到A寄存器的变化。)同样,在Memory窗口中,可以看到0x81,0x82,0x88的内容为分别为0012,0034,0x46。执行加法运算后,将0x81和0x82的内容相加结果放在0x88单元。实验结果如下:

f. 在Memory窗口中用鼠标左键双击0x81单元,这时可以修改该内存单元的内容。输入新的数据0x0ffee(十进制的-18),编辑内容时请直接输入FFEE(十六进制),然

后回车确认,便完成对0x81单元的修改。

g. 在register window窗口中修改PC值,方法也是鼠标左键双击PC寄存器的内容,输入新的PC值0x1085(编辑内容时直接输入1805),并用回车键确认。

h. 单击Run快捷键(或者F5按钮),程序从当前PC继续运行,重新计算0x81和0x82 的和,结果在0x88中。当程序再次暂停时,可以看到A寄存器和0x88的内容为0x22

(十进制的34),这正是我们希望的结果:-18+52=34。

实验结果如下:

i. 单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成减法运算。当程序再次暂停时(断点位于0x1093),可以看到0x83和0x84单元的内容分别为FFEE

和0012,B寄存器的内容为ffdc0000,而0x89的内容为0xffdc(十进制-36),这正

是我们希望的结果: -18-18=-36。注意,该减法操作使用了辅助寄存器寻址,所以计算结果在B寄存器的高16位。

是实验结果如下:

j. 单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成整数乘法运算。当程序再次暂时(断点位于0x109d),可以看到0x81和0x82单元的内容分别为0012和0034,A寄存器的内容为000003A8,这正是我们希望的结果:18*52=936(0x3a8)。这时我们可以用1个16位的内容单元来保存结果,如将A寄存器的低16位存入0x8b单元。

实验结果如下:

但如果将0x81的内容修改为0x2000(十进制的8192),在register window中将PC修改为1098,然后继续运行,重新计算乘法。当程序完成乘法暂停时,可以看到A寄存器的内容为00068000,这也是一个正确的结果:8192*52=425984(0x68000)。此时将无法用一个16位的存贮单元来保存A寄存器中的结果。

实验结果如下:

k. 单击Run快捷键或者(F5按钮),程序从当前PC继续运行,完成小数乘法运算。当程序再次暂停时(断点位于0x10A6),可以看到0x83和0x84单元的内容分别为4000和b548,A寄存器的内容为40000000,乘法的结果在B寄存器中为daa40000,这正是我们希望的结果:0.5*(-0.58374)=-0.29187(0x0daa4)。对于小数乘法,一般情况都可以用1个16位的内容单元将B寄存器的高16保存(如存入0x8c单元)。

实验结果如下:

l. 单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成整数除法运算。当程序再次暂时(断点位于0x10bb),可以看到0x81,0x82,0x8d和0x8e单元的内容分别为0034,0012,FFFE 和0010,这正是我们希望的结果:52 除以-18,商为-2(0xfffe) ,余数为16(0x10)。

m. 单击Run快捷键(或者F5按钮),程序从当前PC继续运行,完成小数除法运算。当程序再次暂停时(断点位于0x10d2),可以看到0x81,0x82和0x8f单元的内容分别为4000,4ab8和6da3,这正是我们希望的结果:0.5/0.58374=0.8565457(0x6da3)。

实验结果如下:

n. 如果以上程序运行不正确,请检查代码是否输入正确,还可以在源代码中插入断点调试,注意对中间结果的观察。

思考题:

(1)在减法操作中使用了辅助寄存器ar2,ar3,请说明在执行完减法计算后辅助寄存器ar2和ar3的值为多少?

结果如下:

(2)在小数乘法中使用了置FRCT标志为1的指令。如果将该语句取消,那么B寄存器的结果是多少?想想什么时候应该设置FRCT标志?

结果如下:

取消之前:取消之后:

(3)如何实现无符号数的乘法?

答:输入指令MPYU Smem,dst,输出结果为uns(T)*uns(Smem)

(4)请利用本实验程序计算以下算式的结果

①、0.25*0.58374

②、0.25/0.5

③、4653/345

④、0.789687/0.876

第二章、C54X的汇编语言程序设计

2.1、实验目的和要求

汇编语言程序设计是应用软件的基础,主要任务是利用汇编指令和伪指令编写源程序以完成指定的功能。本届实训我们将采用汇编语言指令、汇编伪指令、宏伪指令和规定的数字与字符来完成实验。通过实验帮助我们对汇编语言的理解和运用。

2.2、实验原理

1、汇编语言源程序由.asm为扩展名,可以用任意的编辑器编写源代码。源文件格式中助记符指令源语句的每行通常包含4个部分:标记区、助记符区、操作数区和注释区。

2、汇编语言中的常数与字符串

汇编器支持8种类型的常数:①二进制整数;②八进制整数;③十进制整数;④十六进制整数;⑤浮点数;⑥汇编时间常数;⑦字符常数;⑧字符串

3、汇编源程序中的符号用于标号、常数和替代字符。符号名最多可长达200个字符,由字母、数字以及下划线和美元符号等组成。

4、堆栈的使用方法

当程序调用中断服务程序或子程序时,需要将程序计数器PC的值和一些重要的寄存器值进行压栈保护,以便程序返回时能从间断处继续执行。

5、控制程序

TMS320C54x具有丰富的程序控制指令利用这些指令可以执行分支转移、子程序调用子程序返回、条件操作及循环操作等控制操作。控制程序包括:分支操作程序、循环操作程序。

6、算术运算程序

基本算术运算包括:加减法运算、乘法运算、除法运算、长字和并行运算。

7、实验中所需的“.cmd”文件如下:

MEMORY

{

PAGE 0:

EPROM: org=01000H len=01F80H

VECS: org=0FF80H len=0004H

PAGE 1:

SPRAM: org=0060H len=0030H

DARAM: org=0090H len=0200H

}

SECTIONS

{

.text :>EPROM PAGE 0

.data :>EPROM PAGE 0

.bss :>SPRAM PAGE 1

}

2.3、实验内容

1、计算w y x z -+=8*)( 程序如下:

.title "mjj.asm" .mmregs

STACK .usect "STACK",10h .bss x,1 .bss y,1 .bss w,1 .bss z,1

.def _c_int00 .data

table: .word 6,7,9 _c_int00: start: STM #0,SWWSR

STM #STACK+10h,SP STM #x,AR1

MVPD table,*AR1+ LD @x,A ADD @y,A LD A,3 SUB @w,A STL A,@z .end

结果图如下:

2、计算∑==

4

1

i i i x a y 。

程序如下:

.title "jj.asm" .mmregs

STACK .usect "STACK",10h .bss a,4 .bss x,4 .bss y,1

.def _c_int00 .data

table: .word 1,2,3,4 .word 8,6,4,2 .text _c_int00:

start: STM #0,SWWSR STM #STACK+10h,SP STM #a,AR1 RPT #7

MVPD table,*AR1+ CALL SUM end: B end

SUM: STM #a,AR2 STM #x,AR3 RPTZ A,#3

MAC *AR2+,*AR3+,A STL A,@y RET .end

结果图如下:

3、计算∑==

4

1

i i i x a y

程序如下:

.title "2xh.asm" .mmregs

STACK .usect "STACK",10H

;a1=0.3 a2=0.2 a3=-0.4 a4=0.1 ;x1=0.6 x2=0.5 x3=-0.1 x4=-0.2 .bss x,4 .bss a,4 .bss y,1

.def _c_int00 .data

table: .word 3*32768/10 .word 2*32768/10 .word -4*32768/10 .word 1*32768/10 .word 6*32768/10 .word 5*32768/10 .word -1*32768/10 .word -2*32768/10 .text _c_int00:

start: SSBX FRCT STM #x,AR3 RPT #7

MVPD table,*AR3+ STM #x,AR4 STM #a,AR5 RPTZ A,#3

MAC *AR4+,*AR5+,A STH A,@y end: B end .end

结果图如下:

4、计算2*21*1a x a x y += 程序如下:

.title "cc.asm" .mmregs

STACK .usect "STACK",10h .bss x1,1 .bss a1,1 .bss x2,1 .bss a2,1 .bss y,1

.def _c_int00 .data

table: .word 1,2,3,4 _c_int00: start: STM #0,SWWSR

STM #STACK+10h,SP STM #x1,AR1 MVPD table,*AR1+ LD @x1,T MPY @a1,B LD @x2,T MAC @a2,B STL B,@y STH B,@y+1 .end

结果图如下:

5、计算∑==

10

1

i i i x a y

.title " cj.asm" .mmregs

STACK .usect "STACK",10h .bss a,10 .bss x,10 .bss y,1

.def _c_int00 .data table:

.word 1,2,3,4,5,6,7,8,9,2 .word 8,6,4,2,3,1,5,2,1,3 .text _c_int00:

start: STM #0,SWWSR STM #STACK+10h,SP STM #a,AR1 RPT #19

MVPD table,*AR1+ CALL SUM end: B end

SUM: STM #a,AR2 STM #x,AR3 RPTZ A,#9

MAC *AR2+,*AR3+,A STL A,@y RET .end

结果图如下:

6、求一个数的绝对值 程序如下:

.title "jj.asm" .mmregs

STACK .usect "STACK",10h .bss x,1

.def _c_int00 .data

table: .word -9 .text _c_int00:

start: STM #0,SWWSR STM #STACK+10h,SP STM #x,AR1 MVPD table,*AR1 LD *AR1,A BC end,AGT ABS A STL A,@x end: B end .end

结果图如下:

7、i i x a (i=1,2,3,4)找出最大值 程序如下:

.title "mm.asm" .mmregs

STACK .usect "STACK",10h .bss a,4 .bss x,4 .bss y,1

.def _c_int00 .data

table: .word 1,2,3,4 .word 6,4,5,3 .text _c_int00:

start: STM #0,SWWSR

STM #STACK+10h,SP STM #2,AR4 STM #a,AR1 RPT #7

MVPD table,*AR1+ STM #a,AR2 STM #x,AR3 LD *AR2+,T MPY *AR3+,A LOOP1: LD *AR2+,T MPY *AR3+,B MAX A STL A,@y

BANZ LOOP1,*AR4- end: B end .end

结果图如下:

8、对一个数组进行初始化:x[8]={0,0,0,0,0,0,0,0}. 程序如下:

.title "hh.asm" .mmregs STACK .usect "STACK",10h .bss x,8 .def _c_int00 .data table: .word 1,2,3,4,5,6,7,8 .text _c_int00: start: STM #0,SWWSR STM #STACK+10h,SP STM #x,AR1 LD #0,A RPTZ A,#7 STL A,*AR1+ end: B end .end 结果图如下:

9、对数组X[8]中的每个元素加1. 程序如下:

.title "hh.asm"

.mmregs

STACK .usect "STACK",10h .bss x,8

.def _c_int00

.data

table: .word 1,2,3,4,5,6,7,8 .text

_c_int00:

start: STM #0,SWWSR

STM #STACK+10h,SP STM #x,AR1 RPT #7

MVPD table, *AR1+ LD #1,16,B

STM #7,BRC

STM #x,AR4

RPTB next-1

ADD *AR4,16,B,A STH A,*AR4+ next: LD #0,B end: B end

.end

结果图如下:

10、编写16348/512的程序段程序如下:

.title "mm.asm"

.mmregs

STACK .usect "STACK",10h .bss num,1

.bss den,1

.bss quot,1

.def _c_int00

.def start

.data

table: .word 16384

.word 512

.text

_c_int00:

start: STM #0,SWWSR

STM #STACK+10h,SP STM #num,AR1

RPT #1

MVPD table,*AR1+

LD @den,16,A

MPYA @num

ABS A

STH A,@den

LD @num,A

ABS A

RPT #15

SUBC @den,A

XC 1,BLT

NEG A

STL A,@quot .end

结果图如下:

第三章、FFT 算法的实现

3.1、实验目的和要求

在数字信号处理系统中,FFT 作为一个非常重要的工具经常使用,甚至成为DSP 运 算能力的一个考核因素。FFT 是一种高效实现离散付氏变换的算法。离散付氏变换的目 的是把信号由时域变换到频域,从而可以在频域分析处理信息,得到的结果再由付氏逆 变换到时域。

本实验的目的在于学习 FFT 算法,及其在TMS320C54X 上的实现,并通过编程掌握C54X 的存储器管理、辅助寄存器的使用、位倒序寻址方式等技巧,同时练习使用CCS 的探针和图形工具。另外在BIOS 子目录下是一个使用DSP/BIOS 工具实现FFT 的程序。通过该程序,你可以使用DSP/BIOS 提供的分析工具评估FFT 代码执行情况。

3.2、实验原理

1、 基 2 按时间抽取FFT 算法

对于有限长离散数字信号{x[n]},0 ≤ n ≤ N-1,其离散谱{x[k]}可以由离散付氏变换 (DFT )求得。DFT 的定义为:∑-=-=

1

0)2(

][)(N n nk N

j e

n x K X π K=0,1,.....N-1可以方便的

把它改写为如下形式:nk N

N n W

n x K X ∑-==

10

][)( k=0,1,....,N-1不难看出,WN 是周期性

的,且周期为N ,即nk

N

LN k m N n N W W =++))(( m ,l=0,2,1±±....N W 的周期性是DFT 的关键性质之一。为了强调起见,常用表达式N W 取代W 以便明确其周期是N 。

由 DFT 的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N 点DFT 需要

2)1(-N 次复数乘法和N (N-1)次加法。因此,对于一些相当大的N 值(如1024)来说,

直接计算它的DFT 所作的计算量是很大的。FFT 的基本思想在于,将原有的N 点序列分成两个较短的序列,这些序列的DFT 可以很简单的组合起来得到原序列的DFT 。例如,若N 为偶数,将原有的N 点序列分成两个(N/2)点序列,那么计算N 点DFT 将只需要约

[2)2/(N ·2]=2/2

N 次复数乘法。即比直接计算少作一半乘法。因子2)2/(N 表示直接计算(N/2)点DFT 所需要的乘法次数,而乘数2 代表必须完成两个DFT 。

上述处理方法可以反复使用,即(N/2)点的DFT 计算也可以化成两个(N/4)点的DFT (假定N/2 为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT 运算的情况。 2、实数 FFT 运算

对于离散傅立叶变换(DFT )的数字计算,FFT 是一种有效的方法。一般假定输入序列是复数。当实际输入是实数时,利用对称性质可以使计算DFT 非常有效。一个优化的实数FFT 算法是一个组合以后的算法。原始的2N 个点的实输入序列组合成一个N 点的复序列,之后对复序列进行N 点的FFT 运算,最后再由N 点的复数输出拆散成2N 点的复数序列,这2N 点的复数序列与原始的2N 点的实数输入序列的DFT 输出一致。使用这种方法,在组合输入和拆散输出的操作中,FFT 运算量减半。这样利用实数FFT 算法来计算实输入序列的DFT 的速度几乎是一般复FFT 算法的两倍。本实验就用这种方法实现了一个256 点实数FFT (2N = 256)运算。

a. 实数 FFT 运算序列的存储分配

如何利用有限的 DSP 系统资源,合理的安排好算法使用的存储器是一个比较重要的问题。 b. 基二实数 FFT 运算的算法

该算法主要分为四步:第一步,输入数据的组合和位倒序;第二步,N 点复数FFT ;第三步,分离复数 FFT 的输出为奇部分和偶部分;第四步,产生最后的 N = 256 点的复数FFT 结果。 3、计算所求信号的功率

由于最后所得的 FFT 数据是一个复数,为了能够方便的在虚拟频谱仪上观察该信号的特征,我们通常对所得的FFT 数据进行处理取其实部和虚部的平方和,即求得该信号的功率。

3.3、实验内容

本实验在CCS 下完成256 点的实数FFT ,并通过CCS 的图形显示工具观察结果。

其主程序为初始化,并通过探针工具读入256 点方波数据(在文件fft.dat 中,该数据文 件可以通过程序fft_data.c 修改,但注意数据的绝对值不要超过0x23ff )。FFT 的实现由 四个子程序代码bit_rev 、fft 、unpack 和power 代码完成。实验可以分为以下几步: (1) 启动 CCS ,在Project 菜单选项中打开FFT 目录下的fft.pjt 文件。 (2) 用鼠标展开左面项目栏,打开 fft.asm 源程序。

(3) 使用 Bulid 命令完成编译、连接,并使用Load Program 将生成的fft.out 装入5410 片内存储器。

(4) 将光标移动到“call get_input ”行,并设置一个探针点。将光标移动到下一行“nop ”语句,使用工具设置一个断点。

(5) 在 File 菜单中打开选项“File I/O ”,使用“Add File ”在FFT 目录下打开数据文件 fft.dat ,然后修改“Address ”参数为0x2300,修改“Length ”参数为256。这表示程序执行到探针点时,将从fft.dat 文件中读出256 个数据,并将数据放入0x2300开始的存储器中。你可以选择“Wrap Around ”,循环使用该数据文件。 (6)选择“Add Probe Point ”,将探针点与数据文件连接起来。选择探针点,然后在“Connect ”选项中选择需要使用的数据文件名,再选择“Replace ”,按确定键完成。可以看到“Probe ”项被自动修改为“Connected ”,表示探针已经与数据文件成功相连。

(7)完成探针设置后,可以使用F5 或“Run ”命令启动程序运行。程序执行到探针点时

自动从数据文件读出256 个点的数据放入输入缓冲0x2300。 (8)在“View ”菜单项下选择“Graph -> Time/Frequency ”,打开一个图形工具以便显示 输入数据波形。将“Start Address ”改为0x2300,将“Acquisition Buffer Size ”改为128,将“DSP Data Type ”改为“16-bit signed integer ”,这样即可显示128 个输入点波形。 实验结果图如下:

(9)调整窗口显示大小,将光标移动到源程序的“b _c_int00”这行,使用Debug 中的 “Run to Cursor ”项,程序将执行到这行并停下。这时FFT 程序已经计算完成。

再打开一个波形显示窗口,这次仅仅将“Start Address ”改为0x2200,便可以显示计算 完成后的谱波形。

(10)选择“Debug ”下的“Animate ”运行程序,这时程序将循环运行,不断从数据文件 fft.dat 中读出数据,并计算其频谱。这时你可以看到连续的输入/输出波形。

(11)选择原始数据波形窗口,单击鼠标右键,进入“Properties ”属性对话框。你可以将 “Display Type ”改为“FFT Magnitude ”,这时输入数据将显示其频谱。

思考题:

(1) ST B,*AR3+

||LD *AR2,A

答:SACDD B,*AR3+,#1 LD *AR2,16,A

(2) ST B,*AR2 ||SUB *AR2+0%,B

答:SACDD B,*AR2,#1 DST B,*AR1,

LD *AR2+0%,16,B SUB AR1,B

(3) ST B,*PX+

||MPY *QX+,A

答:SACCD B,*PX+,BNEQ MPY *QX+,A

第四章、ASK、PSK、FSK调制的实现

4.1、实验目的

数字调制信号又称为键控信号,其调制过程是用键控的方法由基带信号对载频信号的振幅、频率及相位进行调制。这种调制的最基本方法有三种:振幅键控(ASK)、相移键控(PSK)、频移键控(FSK)。本节实训将通过CCS软件来实现对ASK、PSK、FSK的调制,并掌握它们之间的联系与不同。

4.2、实验原理

1、FSK频移键控的基本原理:用数字基带信号来控制高频载波频率的变化,使载波的频率在f1和f2之间变化。二进制频移信号可以看成两个不同载波的二进制振幅键控信号的叠加。

2、PSK相移键控的基本原理:用数字调制信号的正负控制载波相位。当数字信号的振幅为正时载波起始相位取0;当数字信号的振幅为负时,载波起始相位取180度。相移键控抗干扰能力强,但在解调是需要有一个正确的参考相位,即需要相干解调。

3、ASK振幅键控的基本原理:是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程。

4.3、实验内容

1、FSK的实现

汇编语言程序:

.title"fsk_asm.asm"

.global _fsk ;定义为全局变量,提供给C调用

.global _y1 ;C程序变量

.global _y2 ;C程序变量

.global _Pulse ;C程序变量

.global _FskSignal ;C程序变量

.mmregs

.text

_fsk: rsbx CPL

stm #8-1,AR1 ;循环变量 256/32=8

stm #_y1, AR4

stm #_y2, AR2 stm #_Pulse, AR3 stm #_FskSignal, AR5 loop: ld *AR3, A

bc freq500, AEQ ;若原始数字信号为0,则调频信号为频率为500Hz 的正弦

波 sub #1, A bc freq1000, AEQ ;若原始数字信号为1,则调频信号为频率为1000Hz 的正弦波 fskend: addm #32, AR3

banz loop, *AR1- ret

freq500: rpt #32-1 mvdd *AR4+, *AR5+ addm #-32,AR4 b fskend freq1000: rpt #32-1 mvdd *AR2+, *AR5+ addm #-32,AR2 b fskend .end C 语言程序:

extern void fsk(); #include "C54MATH.H" DATA x[256]; DATA y1[256]; //正弦信号1 DATA y2[256]; //正弦信号2 DATA Pulse[256]; //被调信号 DATA FskSignal[256]; //2FSK 调制信号 #define N 256 void main() { int i,j; //产生一个500Hz 的正弦信号作为调制信号 for(i=0;iGraph->Time/Frequency Graph , //按照当前文件夹内给出的图形属性设置,即可显示2FSK 信号 for(;;){}; } 结果图如下:

2、PSK 的实现 程序如下:

extern void fsk();

#include "C54MATH.H" DA TA x[256];

DA TA y1[256]; //正弦信号1 DA TA y2[256]; //正弦信号2 DA TA Pulse[256]; //被调信号

DA TA FskSignal[256]; //2FSK 调制信号 #define N 256 void main() {

int i,j;

//产生一个500Hz 的正弦信号作为调制信号 for(i=0;i

x[i]=i*0x1000;

// fc=(0x1000/0x10000)*fs=500Hz, fs 固定在8000 } sine( x, y1, N );

//产生一个1000Hz 的正弦信号作为调制信号 for(i=0;i

x[i]=-i*0x1000;

// fc=(0x2000/0x10000)*fs=1000Hz, fs 固定在8000 } sine( x, y2, N ); //原始信号

for(i=0;i

j=i/32;

switch (j%2) {

case 0: Pulse[i]=0; break;

case 1: Pulse[i]=1; break; } } fsk(); //运行到此处后,打开View->Graph->Time/Frequency Graph , //按照当前文件夹内给出的图形属性设置,即可显示2FSK 信号 for(;;){}; }

实验结果图如下:

3、ASK的实现

extern void fsk();

#include "C54MATH.H"

DATA x[256];

DATA y1[256]; //正弦信号1

DATA y2[256]; //正弦信号2

DATA Pulse[256]; //被调信号

DATA FskSignal[256]; //2FSK调制信号#define N 256

void main()

{

int i,j;

//产生一个500Hz的正弦信号作为调制信号for(i=0;i

{

j=i/32;

switch (j%2)

{

case 0:

y1[i]=0;

break;

}

}

//产生一个1000Hz的正弦信号作为调制信号

for(i=0;i

{

x[i]=i*0x1000; // fc=(0x2000/0x10000)*fs=1000Hz, fs 固定在8000

}

sine( x, y2, N );

//原始信号

for(i=0;i

{

j=i/32;

switch (j%2)

{

case 0:

Pulse[i]=0;

break;

case 1:

Pulse[i]=1;

break;

}

}

fsk(); //运行到此处后,打开View->Graph->Time/Frequency Graph, //按照当前文件夹内给出的图形属性设置,即可显示2FSK信号

for(;;){};

}

实验结果图如下:

DSP实验报告-深圳大学-自动化

深圳大学实验报告课程名称:DSP系统设计 实验项目名称:DSP系统设计实验 学院:机电与控制工程学院 专业:自动化 指导教师:杜建铭 报告人1:. 学号:。班级:3 报告人2:. 学号:。班级:3 报告人3:. 学号:。班级:3 实验时间: 实验报告提交时间: 教务处制

实验一、CCS入门试验 一、实验目的 1. 熟悉CCS集成开发环境,掌握工程的生成方法; 2. 熟悉SEED-DEC2812实验环境; 3. 掌握CCS集成开发环境的调试方法。 二、实验仪器 1.TMS320系列SEED-DTK教学试验箱24套 2. 台式PC机24台 三、实验内容 1.仿真器驱动的安装和配置 2. DSP 源文件的建立; 3. DSP程序工程文件的建立; 4. 学习使用CCS集成开发工具的调试工具。 四、实验准备: 1.将DSP仿真器与计算机连接好; 2.将DSP仿真器的JTAG插头与SEED-DEC2812单元的J1相连接; 3.启动计算机,当计算机启动后,打开SEED-DTK2812的电 源。SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯及SEED-DEC2812的电源指示灯D2是否均亮;若有不亮,请断开电源,检查电源。 五、实验步骤 (一)创建源文件 1.进入CCS环境。

2.打开CCS选择File →New →Source File命令 3.编写源代码并保存 4.保存源程序名为math.c,选择File →Save 5.创建其他源程序(如.cmd)可重复上述步骤。 (二)创建工程文件 1.打开CCS,点击Project-->New,创建一个新工程,其中工程名及路径可任意指定弹 出对话框: 2.在Project中填入工程名,Location中输入工程路径;其余按照默认选项,点击完成 即可完成工程创建; 3.点击Project选择add files to project,添加工程所需文件;

DSP技术与算法实现学习报告

DSP技术与算法实现学习报告 一.课程认识 作为一个通信专业的学生,在本科阶段学习了数字信号处理的一些基本理论知识,带着进一步学习DSP技术以及将其理论转化为实际工程实现的学习目的,选择了《DSP技术与算法实现》这门课程。通过对本课程的学习,我在原有的一些DSP基础理论上,进一步学习到了其一些实现方法,系统地了解到各自DSP芯片的硬件结构和指令系统,受益匪浅。 本门课程将数字信号处理的理论与实现方法有机的结合起来,在简明扼要地介绍数字信号处理理论和方法的基本要点的基础上,概述DSP的最新进展,并以目前国际国内都使用得最为广泛的德克萨斯仪器公式(TI,Texas Instruments)的TMS320、C54xx系列DSP为代表,围绕“DSP实现”这个重点,着重从硬件结构特点,软件指令应用和开发工具掌握出发,讲解DSP应用的基础知识,讨论各种数字信号处理算法的实现方法及实践中可能遇到的主要问题,在此基础上实现诸如FIR、IIR、FFT等基本数字信号处理算法等等。 1.TI的DSP体系 TI公司主要推出三大DSP系列芯片,即TMS320VC2000,TMS320VC5000,TMS320VC6000系列。 TMS320VC200系列主要应用于控制领域。它集成了Flash存储器、高速A/D转换器、可靠的CAN模块及数字马达控制等外围模块,适用于三相电动机、变频器等高速实时的工控产品等数字化控制化领域。 TMS320VC5000系列主要适用于通信领域,它是16为定点DSP芯片,主要应用在IP 电话机和IP电话网、数字式助听器、便携式音频/视频产品、手机和移动电话基站、调制调解器、数字无线电等领域。它主要分为C54和C55系列DSP。课程着重讲述了C54系列的主要特性,它采用改进哈弗结构,具有一个程序存储器总线和三个数据存储器总线,17×17-bit乘法器、一个供非流水的MAC(乘法/累加)使用的专用加法器,一个比较、选择、存储单元(Viterbi加速器),配备了双操作码指令集。 TMS320VC6000系列主要应用于数字通信和音频/视频领域。它是采用超长指令字结构设计的高性能芯片,其速度可以达到几十亿MIPS浮点运算,属于高端产品应用范围。

DSP实验报告

DSP实验报告 软件实验 1无限冲激响应滤波器(IIR) 算法 一.实验目的 1 .掌握设计IIR 数字滤波器的原理和方法。 2 .熟悉IIR 数字滤波器特性。 3 .了解IIR 数字滤波器的设计方法。 二.实验设备 PC 兼容机一台,操作系统为Windows2000( 或Windows98 ,WindowsXP ,以下默认为Windows2000) ,安装Code Composer Studio 2.21 软件。 三.实验原理 1 .无限冲激响应数字滤波器的基础理论。 2 .模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。 3 .数字滤波器系数的确定方法。 4 .根据要求设计低通IIR 滤波器: 要求:低通巴特沃斯滤波器在其通带边缘1kHz 处的增益为-3dB ,12kHz 处的阻带衰减为30dB ,采样频率25kHz 。设计: - 确定待求通带边缘频率fp1Hz 、待求阻带边缘频率fs1Hz 和待求阻带衰减-20log δsdB 。 模拟边缘频率为:fp1=1000Hz ,fs1=12000Hz 阻带边缘衰减为:-20log δs=30dB - 用Ω= 2πf/fs 把由Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和Ωs1 。 Ωp1=2 πfp1/fs=2 π1000/25000=0.08 π弧度 Ωs1=2 πfs1/fs=2 π12000/25000=0.96 π弧度 - 计算预扭曲模拟频率以避免双线性变换带来的失真。 由w=2fs tan( Ω/2) 求得wp1 和ws1 ,单位为弧度/ 秒。 wp1=2fs tan( Ωp1/2)=6316.5 弧度/ 秒 ws1=2fs tan( Ωs1/2)=794727.2 弧度/ 秒 - 由已给定的阻带衰减-20log δs 确定阻带边缘增益δs 。

DSP报告(内含仿真图)

FIR滤波实验 一、实验目的: 1、了解FIR滤波器的原理及使用方法; 2、了解使用Matlab语言设计FIR滤波器的方法; 3、了解用DSP来实现FIR滤波器的设计及编程方法; 4、熟悉在CCS环境下对FIR滤波器的调试方法。 二、实验内容: 数字滤波器的作用是滤掉信号中某一频率分量。信号经过滤波处理,就相当于信号频谱与滤波器的传递函数相乘的结果。数字滤波器在各领域有广泛的应用,例如数字音响、音乐和语音合成、噪声消除、数据压缩、频率合成、谐波消除、过载检测、相关检测等。 本实验要求设计采样频率为600Hz,输入信号频率为50Hz、150Hz和300Hz 的合成信号,设计截止频率为100Hz的低通滤波器,目的是通过所设计的79阶通带截止频率为75Hz,阻带开始频率为125Hz的低通滤波器将信号源中频率位100Hz以上的信号滤掉。本设计采用低通凯撒窗的数字FIR滤波器将信号源中频率为150Hz和300Hz的信号滤掉,留下频率为50Hz的信号。由于本设计前两个过程稍复杂,所以最好在MATLAB中验证设计思路,将得到的滤波器参数调用到DSP程序中,这样使得编译汇编连接的过程大为简化。然后通过图形仿真查看滤波前后的波形和频谱图。 三、实验步骤: 1、滤波器的MTLAB语言设计 2、从Matlab语言转换成通用语言 3、滤波器的汇编语言设计 4、在CCS环境下调试程序,并比较滤波后的效果、观测滤波后的波形 四、实验程序及结果 1.Matlab程序: fp=75;%窗函数的通带截止频率fc=125;%窗函数的阻带起始频率as=100;%阻带衰减fs=600;

wp=2*fp/fs; wc=2*fc/fs; M=ceil((as-7.95)/(14.36*(wc-wp)/2))+1 %M=35; beta=0.1102*(as-8.7);%窗函数的形状参数 %beta=0.5; window=Kaiser(M+1,beta); b=fir1(M,wp,window); figure(1); freqz(b,1,512,fs);%显示该滤波器的幅频响应 %产生一个带有混叠频率的数字信号 N=256;%数据点数 fs=650; dt=1/fs; f1=150; f2=50; k=1:1:N y(k)=sin(2*pi*f1*k*dt)+sin(2*pi*f2*k*dt)+sin(2*pi* (f1+150)*k*dt) figure(2); plot(y(k)); y=ceil(y*10000); %通过快速傅立叶变换得到原信号的频谱图yfft=fft(y,N); pyy=yfft.*conj(yfft); f=(0:(N/2-1)); for i=1:N/2-1 f(i)=f(i)*fs/N end figure(3); plot(f,pyy(1:N/2));%显示原信号频谱 %滤波处理 yy=filter2(b,y); figure(4); plot(yy); yfft=fft(yy,N); pyy=yfft.*conj(yfft); f=(0:(N/2-1)); for i=1:N/2-1 f(i)=f(i)*fs/N end figure(5); plot(f,pyy(1:N/2));%显示处理后信号频谱 图1 Matlab环境下的滤波前后的频谱图形

DSP运行实验报告

DSP运行实验报告 一、实验目的 熟悉CCS软件仿真下,DSP程序的下载和运行;熟悉借助单片机的DSP程序下载和运行; 熟悉借助仿真器的DSP程序下载和运行;熟悉与DSP程序下载运行相关的CCS编程环境。 二、实验原理 CCS软件仿真下,借用计算机的资源仿真DSP的内部结构,可以模拟DSP程序的下载和运行。 如果要让程序在实验板的DSP中运行、调试和仿真,可以用仿真器进行DSP程序下载和运行。初学者也可以不用仿真器来使用这款实验板,只是不能进行程序调试和仿真。 在本实验板的作用中,单片机既是串口下载程序的载体,又是充当DSP 的片外存储器(相对于FLASH),用于固化程序。 三、实验设备、仪器及材料 安装有WINDOWS XP操作系统和CCS3.3的计算机。 四、实验步骤(按照实际操作过程) 1、CCS软件仿真下,DSP程序的下载和运行。 第一步:安装CCS,如果不使用仿真器,CCS 的运行环境要设置成一个模拟仿真器(软仿真)。

第二步:运行CCS,进入CCS 开发环境。 第三步:打开一个工程。 将实验目录下的EXP01目录拷到D:\shiyan下(目录路径不能有中文),用[Project]\[Open]菜单打开工程,在“Project Open”对话框中选 EXP01\CPUtimer\CpuTimer.pjt,选“打开”, 第四步:编译工程。 在[Project]菜单中选“Rebuild All”,生成CpuTimer.out文件。 第五步:装载程序。 用[File]\[Load Program]菜单装载第四步生成CpuTimer.out文件,在当前工程目录中的Debug 文件夹中找到CpuTimer.out文件,选中,鼠标左键单击“打开”。

dsp课程设计报告总结报告

课程设计总结报告 课程名称DSP控制器及其应用 设计题目万年历设计 专业电子信息工程 班级 姓名 学号 指导教师 报告成绩 信息工程学院 二〇一四年六月十三日

目录 前言错误!未定义书签。 第一章设计要求错误!未定义书签。 1.1 基本要求错误!未定义书签。 1.2 提高要求错误!未定义书签。 第二章系统的组成和工作原理错误!未定义书签。 2.1 DSP TMS320 VC5509APGE芯片的工作原理错误!未定义书签。 2.2 LCD1602液晶显示器的工作原理6 第三章主电路图及程序流程图7 3.1主电路图7 3.2程序总流程图7 3.3程序分块流程图8 第四章软件程序设计9 4.1 程序9 4.2 调试与处理出现问题9 第五章设计总结错误!未定义书签。

附录1:参考文献错误!未定义书签。 前言 随着科技的不断发展,诞生了越来越多的电子产品。比如手表,时钟等等,现在的钟表在功能设计上不断地完善,不仅仅可以显示时间(时分秒),而且可以显示年月日,星期几等等。 科技的发展离不开人类的不断努力,培养高科技人才是21世纪必做的事。作为祖国的接班人更要努力学习好电子信息这门科技专业。因此我们要不断的接触各种电子产品,加强对电子技术技术理论的掌握和实际的应用。在本次的实验中,我们就以DSP芯片为核心控制电子钟,具有多项显示,用2812上的LCD液晶显示屏显示当前年、月、日、时、分、秒。

第一章设计要求 本次课程设计要求设计一个万年历,利用DSPTMS320 VC5509APGE芯片控制,使用程序来控制时间的实时更新,当秒加到60时,分自动加1,当分加到60时,小时自动加1,当小时加到24,天加1,天加到30时,月加1,月加到12时,年加1,使用I602上的LCD液晶显示屏显示当前年、月、日、时、分、秒。对现有器件进行简单地编程,实现各种简单地显示控制。 1.1设计目的 1. 学习软件的安装,熟悉运用CCS v3.3软件,加强软件编程能力; 2. 学习DSP芯片的I/O端口的控制方法; 3. 了解1602字符液晶的使用功能 4. 能够对现有器件进行简单地编程,实现各种简单地显示控制。 1.2 基本要求 ⑴此系统先显示设定的当前时间(年月日时分秒),并进行计数 ⑵设计硬件外扩电路,同时设计软件程序进行软硬件联系调试

DSP实验报告

DSP实验报告

软件实验 1无限冲激响应滤波器(IIR) 算法 一.实验目的 1 .掌握设计IIR 数字滤波器的原理和方法。 2 .熟悉IIR 数字滤波器特性。 3 .了解IIR 数字滤波器的设计方法。 二.实验设备 PC 兼容机一台,操作系统为Windows2000( 或Windows98 ,WindowsXP ,以下默认为Windows2000) ,安装Code Composer Studio 2.21 软件。 三.实验原理 1 .无限冲激响应数字滤波器的基础理论。 2 .模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。 3 .数字滤波器系数的确定方法。 4 .根据要求设计低通IIR 滤波器: 要求:低通巴特沃斯滤波器在其通带边缘1kHz 处的增益为-3dB ,12kHz 处的阻带衰减为30dB ,采样频率25kHz 。设计: - 确定待求通带边缘频率fp1Hz 、待求阻带边缘频率fs1Hz 和待求阻带衰减-20log δsdB 。 模拟边缘频率为:fp1=1000Hz ,fs1=12000Hz 阻带边缘衰减为:-20log δs=30dB - 用Ω= 2πf/fs 把由Hz 表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1 和Ωs1 。 Ωp1=2 πfp1/fs=2 π1000/25000=0.08 π弧度 Ωs1=2 πfs1/fs=2 π12000/25000=0.96 π弧度 - 计算预扭曲模拟频率以避免双线性变换带来的失真。 由w=2fs tan( Ω/2) 求得wp1 和ws1 ,单位为弧度/ 秒。 wp1=2fs tan( Ωp1/2)=6316.5 弧度/ 秒 ws1=2fs tan( Ωs1/2)=794727.2 弧度/ 秒 - 由已给定的阻带衰减-20log δs 确定阻带边缘增益δs 。 因为-20log δs=30 ,所以log δs=-30/20 ,δs=0.03162

DSP课程设计报告讲解

JIU JIANG UNIVERSITY DSP应用课程设计报告 题目利用按键任意输入一个数值控制的转动角度 院系电子工程学院 专业电子信息工程 姓名 班级 1211 学号 35 日期 2015.5.22 - I -

内容提要 步进电机作为一种电脉冲—角位移的转换元件,由于具有价格低廉、易于控制、无积累误差和计算机接口方便等优点,在机械、仪表、工业控制等领域中获得了广泛的应用。通过DSP 对步进电机的控制可以实现系统实时、精确、高效、安全的设计要求,从而实现了自动化生产过程。作为重要部件的DSP是否实现控制要求是应用系统能否可靠工作的关键。 许多研究机构和电机生产厂家对于用单片机和用功率器件来设计步进电机驱动系统作了大量的研究,如把MCS-51系列的8031单片机、美国Microchip公司的PIC系列的PIC16C5X、各类PLC和VMOS管等功率器件作为控制系统都是比较成熟的。这些方面的资料和经验对于将更高速的DSP器件用在驱动系统上都是很有帮助的。现在流行的方法是将一系列外围设备如数模转换器(A/D)、脉宽调制发生器(PWM)和数字信号处理器(DSP)内核集成在一起,就获得一个强大又非常经济的电机控制专用的的DSP。许多厂家开发出了电机专用的DSP器件和支持各种通用算法的模拟软件。不仅芯片的运算速度越来越快,且软件中集成和固化在硬件中的算法模块越来越多,使得实现各种功能和进行电机性能研究变得现实和容易,能够实现更加理想的控制要求,随着对步进电机的研究更加深入与芯片价格的降低和功能的增加以及随着半导体工艺,尤其是高密度CMOS工艺的发展和进步,芯片的价格日益下降,而性能却不断提高,软件和开发工具越来越多,越来越好,应用范围日益广泛。DSP作为一种高速处理器件在驱动系统中的应用也会更加广泛和普及,研究DSP在控制领域中的应用也有着重大现实意义。

dsp实验报告5

一、实验原理: 1、无限冲击响数字滤波器的基础理论; 2、模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器); 3、双线性变换的设计原理。 二、实验内容: 1、复习有关巴特沃斯滤波器设计和用双线性变换法设计IIR数字滤波器的知识; 2、阅读本实验所提供的样例子程序; 3、运行CCS软件,对样例程序进行跟踪,分析结果; 4、填写实验报告。 5、样例程序实验操作说明 1)正确完成计算机、DSP仿真器和实验箱连接后,开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2; 2)“A/D转换单元”的拨码开关设置: JP3 3)检查:计算机、DSP仿真器、实验箱是否正确连接,系统上电; 4)置拨码开关S23的1、2拨到OFF,用示波器分别观测模拟信号源单元的2号孔“信号源1”和“信号源2”输出的模拟信号,分别调节信号波形选择、信号频率、信号输出幅值等旋钮,直至满意,置拨码开关S23的1到ON,两信号混频输出; 三、程序分析: cpu_init(); //CPU初始化 fs = 25000; //设置采样频率为2500HZ nlpass = 0.18; //设置通带上限频率归一化参数为0.18 nlstop = 0.29; //设置阻带下限截止频率归一化参数为0.29 biir2lpdes(fs,nlpass,nlstop,a,b); 根据双线性变换法求滤波器的系数a和b set_int(); //调用低通滤波器子程序对信号进行滤波 中断程序注释: interrupt void int1()

{ in_x[m] = port8002; //读取port8002端口的数值 in_x[m] &= 0x00FF; //取后八位送入X[m] m++; //每取一个数字m加1 intnum = m; if (intnum == Len) //当取到128个字节时,重新读取port8002端口的数值 { intnum = 0; xmean = 0.0; for (i=0; i

DSP大作业报告

选课时间:___周二晚10、11、12 实验报告 课程名称: DSP与智能系统 实验名称: _____DSP大作业 指导老师: _______张珣 姓名:_____ 学号:____ 班级:____ 专业:__ 实验日期:___

一、实验要求 以DSP芯片TMS320C54为例,设计一个完整的硬件电路,要求包括: 1.电源电路; 2.复位电路; 3.振荡电路; 4.JTAG电路; 5.4X4矩阵按键; 6.一个LED指示灯; 7.外部8K RAM(地址:2000H – 3FFFH); 8.外部8K RAM(地址:4000H – 5FFFH);9.8位ADC(6000H – 6003H)。 二、实验原理 1.原理介绍 1.1 中断概念 中断响应过程:a.接受中断请求。必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行;b.响应中断。必须能够响应中断请求。如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。而对于非可屏蔽中断和软件中断,会立即作出响应;c.准备执行中断服务程序并保存寄存器的值;d.执行中断服务子程序。调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。 中断类别:可屏蔽中断:这些中断可以用软件加以屏蔽或解除屏蔽;不可屏蔽中断:这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。所有软件调用的中断都属于该类中断。 中断的优先级:如果多个中断被同时激发,将按照他们的中断优先级来提供服务。中断优先级是芯片内部已定义好的,不可修改。 1.2模数控制 模数模块介绍:ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和 B服务。两个独立的8通道模块可以级连组成16通道模块。虽然有多个输入通道和两个序列器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。 模数转换的程序控制:模数转换相对于计算机来说是一个较为缓慢的过程。一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。关于TMS320F28335A DSP芯片内的A/D转换器的详细结构和控制方法。 1.3 电源设计 C55x数字信号处理器电源包括内核电源和外部接口电源,其外部接口电源为3.3V,内核则根据型号不同而采用了不同电压。由于C55x处理器大多应用于低功耗场合,因此,电源电路的设计应注意电源的转换效率和电路的复杂程度,而高效率的DC-DC转换电路则十分适合这种应用。 1.4 振荡电路概念 振荡电路分为自激振荡电路,RC振荡电路,LC振荡电路,而振荡电路在整个设计过程中起着至关重要的作用,为电路提供所需波形。

DSP硬件实验报告北邮

北京邮电大学DSP硬件实验报告 学院: 电子工程学院 专业: 姓名: 学号: 班级:

实验一常用指令实验 一、实验目的 熟悉DSP开发系统的连接 了解DSP开发系统的组成和结构和应用系统构成 熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。 二、实验步骤与内容 (一)简单指令程序运行实验 源程序: ;File Name:exp01.asm ;the program is compiled at no autoinitialization mode --程序在非自动初始化模式下编译 .mmregs --(enter memory-mapped registers into the symbol table) --进入记忆映射注册进入符号表 .global _main --(identify one or more global(external)symbols)--定义一个或多个全局变量 _main: stm(累加器的低端存放到存储器映射寄存器中) #3000h,sp(堆栈指针寄存器);堆栈指针的首地址设为#3000h ssbx(状态寄存器位置位)xf ;状态寄存器位置位,灯亮 call (非条件调用,可选择延迟)delay(存储器延时) ;调用delay函数延时 rsbx(状态寄存器复位)xf ;状态寄存器位复位,灯灭 call delay ;调用delay函数延时 b (累加器)_main ;可选择延迟的无条件转移,循环执行 nop(无操作) nop ;delay .5 second delay: ;延迟0.5秒 stm 270fh,ar3 (辅助寄存器3) ;把地址存放到存储器映射寄存器中 loop1: stm 0f9h,ar4 (辅助寄存器4);把地址存放到存储器映射寄存器中 loop2: banz loop2,*ar4- ;AR4不为0时转移,指针地址减一

西电DSP大作业报告

DSP实验课程序设计报告 学院:电子工程学院 学号:1202121013 :海霞 指导教师:苏涛

DSP 实验课大作业设计 一 实验目的 在DSP 上实现线性调频信号的脉冲压缩、动目标显示(MTI )和动目标检测(MTD),并将结果与MATLAB 上的结果进行误差仿真。 二 实验容 2.1 MATLAB 仿真 设定带宽、脉宽、采样率、脉冲重复频率,用MATLAB 产生16个脉冲的LFM ,每个脉冲有4个目标(静止,低速,高速),依次做 2.1.1 脉压 2.1.2 相邻2脉冲做MTI ,产生15个脉冲 2.1.3 16个脉冲到齐后,做MTD ,输出16个多普勒通道 2.2 DSP 实现 将MATLAB 产生的信号,在visual dsp 中做脉压,MTI 、MTD ,并将结果与MATLAB 作比较。 三 实验原理 3.1 线性调频 线性调频脉冲压缩体制的发射信号其载频在脉冲宽度按线性规律变化即用对载频进行调制(线性调频)的方法展宽发射信号的频谱,在大时宽的前提下扩展了信号的带宽。 若线性调频信号中心频率为0f ,脉宽为τ,带宽为B ,幅度为A ,μ为调频斜率,则其表达式如下: ]2 12cos[)()(20t t f t rect A t x μπτ+??=;)(为矩形函数rect 在相参雷达中,线性调频信号可以用复数形式表示,即 )]2 12(exp[)()(20t t f j t rect A t x μπτ+??= 在脉冲宽度,信号的角频率由220μτπ- f 变化到220μτπ+f 。 3.2 脉冲压缩原理 脉冲雷达信号发射时,脉冲宽度τ决定着雷达的发射能量,发射能量越大, 作用距离越远;在传统的脉冲雷达信号中,脉冲宽度同时还决定着信号的频率宽度B ,即带宽与时宽是一种近似倒数的关系。脉冲越宽,频域带宽越窄,距离分辨率越低。 脉冲压缩的主要目的是为了解决信号的作用距离和信号的距离分辨率之间的矛盾。为了提高信号的作用距离,我们就需要提高信号的发射功率,因此,必须提高发射信号的脉冲宽度,而为了提高信号的距离分辨率,又要求降低信号的脉冲宽度。

DSP技术及课程设计实验报告二(精)

东南大学自动化学院 实验报告 课程名称: D SP 原理及C 程序开发 第二次实验 实验名称:基于DSP 系统的实验——指示灯、拨码开关和定时器院(系):自动化专业:自动化 姓名:学号: 实验室:实验组别: 同组人员:实验时间:2012 年 4 月 18日 评定成绩:审阅教师: 第一部分实验:基于DSP 系统的实验——指示灯和拨码开关 一.实验目的 1. 了解ICETEK –F28335-A 评估板在TMS320F28335DSP 外部扩展存储空间上的扩展。 2. 了解ICETEK –F28335-A 评估板上指示灯和拨码开关扩展原理。 3. 学习在C 语言中使用扩展的控制寄存器的方法。 二.实验设备 计算机,ICETEK –F28335-A 实验箱(或ICETEK 仿真器+ICETEK–F28335-A 评估板+相关连线及电源)。 三.实验原理

1.TMS320F28335DSP 的存储器扩展接口 存储器扩展接口是DSP 扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。 -ICETEK –F28335-A 评估板在扩展接口上除了扩展了片外SRAM 外,还扩展了指示灯、DIP 开关和D/A 设备。具体扩展地址如下: 0x180004- 0x180005:D/A 转换控制寄存器 0x180001:板上DIP 开关控制寄存器 0x180000:板上指示灯控制寄存器 -与ICETEK –F28335-A 评估板连接的ICETEK-CTR 显示控制模块也使用扩展空间控制主要设备: 208000-208004h :读-键盘扫描值,写-液晶控制寄存器 208002-208002h :液晶辅助控制寄存器 208003-208004h :液晶显示数据寄存器 2.指示灯与拨码开关扩展原理

DSP报告

摘要 用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。 数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容。 关键词:MATLAB;语音信号;加入噪声;滤波器;滤波

目录 摘要 (1) 一、设计目的: (3) 二、设计原理 (4) 2.1采样位数和采样频率 (4) 2.2时域信号FFT分析 (4) 2.3数字滤波器设计原理 (5) 三、设计方法 (5) 3.1、MATLAB中语音信号读取与输出 (5) 3.2、语音信号分析 (6) 3.3构造受干扰信号并对其FFT频谱分析 (6) 3.4 数字滤波器设计 (6) 3.5 信号处理 (7) 四、设计内容 (7) 4.1、对信号采集及其谱分析 (7) 4.2、噪声设计及谱分析 (7) 4.3、滤波器设计 (7) 4.4、对信号进行滤波及分析 (8) 4.5、绘图 (8) 五、设计结果及分析 (9) 六、设计体会 (9) 七、参考文献 (10)

一、设计目的: 《数字信号处理》是信息的数字化处理、存储和应用的基础。通过该课程的课程设计实践,使学生对信号与信息的采集、处理、传输、显示、存储、分析和应用等有一个系统的掌握和理解;巩固和运用在《数字信号处理》课程中所学的理论知识和实验技能,掌握数字信号处理的基础理论和处理方法,提高分析和解决信号与信息处理相关问题的能力,为以后的工作和学习打下基础。 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解。

DSP实验报告word版

实验一 离散系统的时域分析 一、实验目的 1、掌握离散时间信号的MATLAB 表示; 2、信号运算; 3、差分方程的求解; 4、离散时间信号的卷积运算。 二、实验原理 1、离散时间信号 离散时间信号只在某些离散的瞬时给出函数值,而在其他时刻无定义。它是时间上不连续按一定先后次序排列的一组数的集合,称为时间序列,用x(n)表示,n 取整数代表时间的离散时刻。 在matlab 中用向量来表示一个有限长度的序列。 2、序列的类型 为了分析的方便,在数字信号处理中规定了一些基本的序列。 a) 单位采样序列 function [x,n]=impseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)==0]; 调用该函数 [x,n]=impseq(-2,8,2); stem(n,x) 00 10 ()00 1()0n n n n n n n n n δδ =?= ? ≠? =?-? ≠?

单位采样序列的另一种生成方法 n0=-2; n=[-10:10]; nc=length(n); x=zeros(1,nc); for i=1:nc if n(i)==n0 x(i)=1 end end stem(n,x) b) 单位阶跃序列 function [x,n]=stepseq(n1,n2,n0) n=[n1:n2]; x=[(n-n0)>=0]; 调用该函数 [x,n]=stepseq(-2,8,2); stem(n,x) 000 10()001() 0n n n n n n n n n εε >=?=? =?-?

c) 实数指数序列 x(n)=an (运算符“.^”) n=[0:10]; x=0.9.^n; stem(n,x) d) 复数指数序列 n=[-10:10]; alpha=-0.1+0.3*j; x=exp(alpha*n); real_x=real(x); image_x=imag(x); mag_x=abs(x); phase_x=angle(x); subplot(2,2,1); stem(n,real_x) subplot(2,2,2); stem(n,image_x) subplot(2,2,3); stem(n,mag_x) subplot(2,2,4); stem(n,phase_x) ()()j n x n e αω+=(0.1j0.3)n x(n)e (10n 10) -+= -<<

dsp 实验报告

实验一编写一个汇编和C混合的DSP程序 一.实验目的 1.在了解纯C语言程序工程和汇编语言程序工程结构的基础上,学习在C工程中加入汇编编程的混合编程方法。 2.了解混合编程的注意事项。 3.理解混合编程的必要性和在什么情况下要采用混合编程。 二.实验设备 计算机,ICETEK-VC5416AE-S61实验箱(或ICETEK仿真器+ICETEK-VC5416-AE系统板+相关连线及电源)。 三.实验原理 1.使用C语言开发应用程序的优缺点 优点: 易于开发和维护。由于用C语言书写接近自然语言,其可读性强、利于理解,在编制、修改、实现算法方面比用汇编语言开发容易。 可移植性强。 不容易发生流水线冲突。编译器能提供完善的解决流水线冲突的结果。 有大量现存的算法可利用。 适用于人机界面的开发。 缺点: 代码量大。 程序效率较低。 优化代码存在一定困难。 综上所述,我们一般用C语言设计应用程序的总体框架、解决人机接口和对速度效率要求不太高的复杂算法。 2.使用汇编语言开发应用程序的优缺点 优点: 更能发挥系统特点。由于汇编语言掌控系统硬件的能力强于C语言,设计出来的程序更加贴近硬件特性,往往能将硬件效能发挥到极致。 代码精练,效率高。用汇编语言设计的程序,代码短、不容易产生冗余。 代码量小。 缺点: 可读性差。不利于复杂算法的开发和实现。 可移植性差。 容易产生流水线冲突。由于排除冲突需要靠人来辅助完成,这要求编程人员有较为丰富的开发经验和对硬件工作机制的深刻理解。 3.如何混合编程 (1)混合工程:在工程中可以同时包含C语言程序和汇编语言程序,无需更改编译选项。一般地,我们使用C程序为主,加入汇编语言程序模块。 (2)使用模块技术:在应用程序中划分出比较清晰的模块,不同模块可采用不同语言设计。

DSP实验报告模版

我们做的dsp实验是实验一,实验二,实验三!模板上只有1 3 !2要自己仿照实验一写! 不要弄错了!实验题目在另外一个共享表格里! 实验一数据存储实验 一、实验目的 1. 掌握ccs的使用 2. 掌握 tms320c54x 程序空间的分配; 3. 掌握 tms320c54x 数据空间的分配; 4. 能够熟练运用tms320c54x 数据空间的指令。 二、实验设备 计算机,ccs 3.1版软件,dsp仿真器,e300实验箱,dsp-54xp cpu板。 三、实验步骤与内容 1. 在进行 dsp实验之前,需先连接好仿真器、实验箱及计算机,连接方法如下所示: 2. e300 底板的开关sw4 的第1位置on,其余位置off。其余开关设置为off。 sw5全部置on;其余开关不做设置要求 3. 上电复位 在硬件安装完成后,确认安装正确、各实验部件及电源连接无误后,启动计算机,接通仿真器电源,此时,仿真器上的“红色指示灯”应点亮,否则dsp开发系统与计算机连接存在问题。 4. 运行ccs程序 1) 待计算机启动成功后,实验箱220v电源置“on”,实验箱上电 2) 启动ccs3.1,进入ccs界面后,点击“debug—connect” 3) 此时仿真器上的“绿色指示灯”应点亮,ccs正常启动,表明系统连接正常;否则仿真器的连接、jtag 接口或ccs 相关设置存在问题,这时需掉电检查仿真器的连接、jtag 接口连接是否正确,或检查ccs相关设置是否存在问题。 5. 成功运行ccs 程序后,首先应熟悉ccs的用户界面; 6. 学会在ccs环境下创建工程文件、添加程序文件、编写程序、编译、装载、调试,学习如何使用观察窗口等。 7. 用“project\open”打开“c:\ti5000\myprojects\01_mem\ mem.pjt”. 编译并装载“\ 01_mem\debug\mem.out” 8.用“edit”下拉菜单中的“memory/fill”编辑内存单元,参数设置如下图: 单击“ok”此时以0x1000 为起始地址的16个内存单元被修改成:0x0009 9.用“view”下拉菜单“memory”观察内存单元变化,输入要查看的内存单元地址,本实验要查看0x1000h~0x100fh 单元的数值变化,输入地址0x1000h; 单击“ok”如下图所示: 10. 点击“debug\go main”进入主程序,在程序中“加软件断点1”和“加软件断点2”处 施加软件断点。 11. 单击“debug\run”运行程序,也可以“单步”运行程序;当程序运行到“软件断点1” 处时,查看0x1000h~0x1007h单元的值变化, 12. 再单击“debug\run”,当程序运行到“软件断点2”处时,查看0x1008~0x100f

DSP报告

沈阳工程学院 课程设计设计题目:直流电机PWM控制程序设计 系别自动控制工程系班级测控本081 学生姓名石覆嘉学号 2008310127 指导教师吕勇军职称教授 起止日期:2011年7月4日起——至2011年7月8日止

沈阳工程学院 课程设计任务书 课程设计题目: 系别班级 学生姓名学号 指导教师职称 课程设计进行地点: 任务下达时间: 2011年 7月4日起止日期: 2011年7月4日起——至2011年7月8日止 教研室主任年月日批准 直流电机PWM控制程序设计 1.设计主要内容及要求;

编写直流电机PWM控制程序。 要求:1)研究直流电机PWM控制及利用DSP实现的方法。 2)编写直流电机控制程序。 3)调试程序,观察结果。 2.对设计论文撰写内容、格式、字数的要求; (1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。 (2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照《沈阳工程学院毕业设计(论文)撰写规范》执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。 (3).论文要求打印,打印时按《沈阳工程学院毕业设计(论文)撰写规范》的要求进行打印。 (4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。 3.时间进度安排; 顺序阶段日期计划完成内容备注 1 7月4日教师讲解题目,学生查阅相关资料 2 7月5日确定直流电机PWM程序流程 3 7月6日编写程序 4 7月7日调试程序 5 7月8日撰写论文,程序验收 沈阳工程学院 直流电机PWM控制课程设计成绩评定表

DSP实验报告一

电子信息工程系实验报告 课程名称:现代DSP技术 成绩: 实验项目名称:I/O实验实验时间: 2011-10-18 指导教师(签名): 班级:电信082 姓名:李江水学号:810706210 实验目的 1、了解I/O口的扩展;掌握I/O口的操作方法; 2、熟悉在C语言中访问IO口的方法 3、了解数字量与模拟量的区别和联系。 实验设备 计算机,CCS 2.0版软件,DSP仿真器,实验箱。 实验原理 1、开关量输入输出单元 采用8位的数字量输入即由八拨码开关来控制LED灯的显示,当拨码开关都是低电平即都为0时,LED 灯全亮,反之则不亮。。 2、CPU初始化 第一步:时钟模式寄存器的初始化clkmd; 第二步:状态寄存器st0、st1的初始化,复位值为0x1800、0x6900; 第三步:处理器工作模式状态寄存器(PMST)的初始化; 第四步:软件等待状态寄存器、软件等待状态控制寄存器的初始化; 第五步:分区转换控制寄存器(BSCR)初始化。 第六步: *(unsigned int*)IMR=0x0;屏蔽所以中断,IMR为中断屏蔽寄存器。 *(unsigned int*)IFR=0xffff;IFR为中断标志寄存器,中断标志清0 实验步骤与结果分析 开关K9拨到右边,即仿真器选择连接右边的CPU:CPU2;启动CCS 2.0,在Project→Open菜单打开exp03_cpu2目录下面的工程文件“exp03.pjt”。用下拉菜单中Project-->Open,打开“exp03_cpu2\ exp03.pjt”,双击“Source”,可查看源程序。 在File→Load Program菜单下加载exp03_cpu2\debug目录下的exp03.out文件。 运行程序,分别调整开关量输入单元的开关K1~K8,观察LED指示灯LED1~LED8亮灭的变化,以及开关量输入和输出状态是否一致。关闭所有窗口,本实验完毕。 分别调整K1到K8的开关,当开关为低电平即为零时,LED灯亮,当开关为高电平即为1时,LED灯不亮。当K1、K3、K5、K7为0时,LED灯的显示如下图1。

DSP设计报告大作业(10313226)

JIANGSU UNIVERSITY OF TECHNOLOGY D S P技术及应用 综合训练 大作业 班级 10通信2W 姓名王超 学号 10313226 指导老师倪福银吴全玉 2013年12月

目录 序言---------------------------------------------------------------2 第一章 DSP理论技术概述----------------------------------------3 1.1 课程设计目的与意义 --------------------------------------------3 1.2 DSP芯片的选择与封装 ------------------------------------------4 1.3 DSP系统设计的方法和步骤---------------------------------------4 1.4 DSP前沿技术与应用---------------------------------------------6 第二章 DSP硬件部分设计---------------------------------------10 2.1 硬件设计任务概述----------------------------------------------10 2.2 总体方案设计--------------------------------------------------11 2.3 模块电路原理图设计--------------------------------------------13 2.4 硬件设计小结--------------------------------------------------18 第三章 DSP软件部分设计----------------------------------------18 3.1 液晶屏幕字块控制设计------------------------------------------18 3.1.1 软件设计任务概述---------------------------------------------19 3.1.2 程序设计思路与算法原理---------------------------------------19 3.1.3 软件设计流程-------------------------------------------------21 3.1.4 设计程序编写-------------------------------------------------21 3.1.5软件设计结果与小结-------------------------------------------37 第四章小结-----------------------------------------------------38 参考文献--------------------------------------------------------错误!未定义书签。

相关主题
文本预览
相关文档 最新文档