当前位置:文档之家› DSP硬件实验报告北邮

DSP硬件实验报告北邮

DSP硬件实验报告北邮
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时转移,指针地址减一

banz loop1,*ar3- ; 若不为0,ar3减1,共进行10000*250次跳转

ret (可选择延迟的返回 pc=sp++) ;return,返回

nop

nop

;stm 2 cycles

;banz when TRUE 4 cycles

; FALSE 2 cycles

;0f9h=>249d

;270fh=>9999d

.end

实验现象

XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;

(二)资料存储实验

源程序:

*File Name:exp02.asm

;get some knowledge of the cmd file

;the program is compiled at no autoinitialization mode

.mmregs

.global _main

_main:

;store data

stm 1000h,ar1 ;ar1映射到内存1000h位

; stm 5000h,ar1 ;address of exterior memory

rpt(循环执行下一条指令,计数为短立即数) #07h ;循环执行下一条指令8次

st(存储T寄存器的值) 0aaaah,*ar1+ ;data 存储寄存器的值

;read data then re-store

stm 7h,ar3 ;设置ar3

; stm 5000h,ar1 ;address of exterior memory

; stm 5008h,ar2 ;address of exterior memory

stm 1000h,ar1 ;设置ar1为1000h

stm 1008h,ar2 ;设置ar2为1008h

loop:

ld *ar1+,t ;把单数据存储操作数装入T寄存器中

st t,*ar2+ ;存储T寄存器的值

banz loop,*ar3- ;循环7次

here:

b here ;可选择延迟的无条件转移,循环执行

.end

实验目的:

;本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。在CCS 中可以观察DATA内存空间地址0X1000~0X100F值的变化。

实验现象:

在CCS的“View”下拉菜单中的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H;查看0x1000H~0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;单击“Halt”暂停程序运行。

(三):I/O实验

源程序:

;File Name :exp03.asm

;learn how to operate the I/O ports

;get some knowledge of the rts.lib file

;in the I/O space 0x0000=>8 switches

; 0x0001=>8 LEDs

.mmregs

.global _main

.text

_main:

stm 3100h,sp ;堆栈指针的首地址设为#3100h

stm 1000h,ar1 ;define the address,定义ar1的地址

;define the address

portr 00h,*ar1 ;从端口00h读出开关状态,存入ar1中。*ar1=port(00h)

nop

nop

portw *ar1,01h ;将ar1的内容(开关状态)写入到led灯上(输入到

01h),控制灯的亮灭

nop

nop

b _main ;寻循环执行

nop

nop

.end

;实验现象

;任意调整K0—K7开关,可以观察到对应LP0—LP7灯“亮”或“灭”(四):定时器实验

源程序

【初始化程序】

.mmregs

.global _initial

_initial:

stm 300h,ar1 ;初始化300h 数据地址,设置ar1的地址

st #00h,*ar1 ;辅助寄存器ar1指向#00h

stm 302h,ar1 ;初始化 302h 数据地址,设置ar2的地址

st #00h,*ar1 ;辅助寄存器ar1指向#00h

stm 200h,ar1

st #5555h,*ar1

stm 201h,ar1

st #0aaaah,*ar1

stm 202h,ar1

st #400h,*ar1

ssbx 1,11 ;将ST1.INTM置为1,停止所有中断

stm 0ffffh,ifr ;清除所有中断标识 ifr:中断标志寄存器

stm 00h,imr ;将立即数寄存器(imr)置为0,停止所有中断

stm 410h,tcr ;停止计时器tcr:发送控制寄存器

stm 4e1fh,prd ;将初始时间设为4e1fh

stm 420h,tcr ;开始计时器

stm 08h,imr ;允许计时器中断

rsbx 1,11 ;将ST1.INTM置为0,开始所有中断

ret

【端口程序】(定义管脚)

.mmregs

.global _porta

.global _portb

_porta:

stm 304h,ar1 ;设置ar1地址

st 5555h,*ar1 ;辅助寄存器ar1指向5555h

portw *ar1,01h ;ar1的值做输出控制小灯亮灭

ret

_portb:

stm 304h,ar1 ;设置ar1地址

st 0aaaah,*ar1 ;辅助寄存器ar1指向0aaaah

portw *ar1,01h ;ar1的值控制亮灭

ret

【向量程序】

.sect ".vectors"

.ref _c_int00 ;C程序入口

.ref _timer ;时间中断点

.align 0x80 ; 必须被连结到页边界

RESET: ; 重设向量

BD _c_int00 ;到C入口点的分支

STM #200,SP ;堆栈大小为200 SP:堆栈寄存器

nmi: RETE ;启动中断并从一个返回

NOP

NOP

NOP

; 软件中断

sint17 .space 4*16

sint18 .space 4*16

sint19 .space 4*16

sint20 .space 4*16

sint21 .space 4*16

sint22 .space 4*16

sint23 .space 4*16

sint24 .space 4*16

sint25 .space 4*16

sint26 .space 4*16

sint27 .space 4*16

sint28 .space 4*16

sint29 .space 4*16

sint30 .space 4*16

int0: RETE

NOP

NOP

NOP

int1: RETE

NOP

NOP

NOP

int2: RETE

NOP

NOP

NOP

tint: b _timer ;设置实用time中断 NOP

NOP

rint0: RETE

NOP

NOP

NOP

xint0: RETE

NOP

NOP

NOP

rint1: RETE

NOP

NOP

NOP

xint1: RETE

NOP

NOP

NOP

int3: RETE

NOP

NOP

NOP

.end

实验现象

单击“Run”运行,可观察到LED灯(LP0—LP7)以一定的间隔时间不停摆动;单击“Halt”,暂停程序运行,LED灯停止闪烁;.单击“Halt”,暂停程序运行,LED灯停止闪烁。

(五):INT2中断实验

源程序

【初始化程序】

.mmregs

.global _initial

.text

_initial:

stm 300h,ar3 ;初始化数据 300h ar3:辅助寄存器

st #00h,*ar3 ;辅助寄存器ar3指向#00h

stm 302h,ar4 ;初始化数据 300h ar4:辅助寄存器

st #00h,*ar4

ssbx 1,11 ;将st1.intm置为1,停止所有中断

stm 00h,imr ;将立即数置0,停止所有中断 imr:立即数寄存器

stm 0ffffh,ifr ;清除所有中断标志 ifr:中断标志寄存器

stm 04h,imr ;允许int2 中断

rsbx 1,11 ;允许所有中断

ret

.end

【端口程序】与【向量程序】参见实验四。

.实验现象

单击“Run”运行程序,反复拨动开关K0,观察LP1—LP7 LED灯亮灭变化;单击“Halt”暂停程序运行,反复拨动开关K0,LP1—LP7 LED灯亮灭不发生变化。

实验二:A/D采样实验

实验目的

1.掌握利用TLV320AD50实现A/D转换的技术基本原理和常用方法。

2.学会DSP的多信道缓冲串口的应用方法。

3.掌握并熟练使用DSP和AD50的接口及其操作。

4.通过实验加深对DSP系统频谱混叠认识.

源程序:

【C程序】

extern void InitC5402(void); /*创建初始化C5402的函数,返回值为空*/

extern void OpenMcBSP(void); /*创建打开McBSP端口的函数,返回值为空;*/

extern void CloseMcBSP(void); /*创建关闭McBSP端口函数*/

extern void READAD50(void); /*创建从AD50的数据流中读取数据的函数;AD50:硬件端口*/

void main(void) /*主函数开始*/

{

InitC5402(); /* 初始化 C5402 DSP */

OpenMcBSP(); /*调用函数,打开McBSP端口*/

while (1)

{

READAD50(); /*从AD50的数据流中读取数据,完成AD转换 */

}

}

【汇编程序】

.global _InitC5402 ;全局符号定义_InitC5402(初始化C5402)

.global _OpenMcBSP ;全局符号定义_OpenMcBSP(打开McBSP)

.global _CloseMcBSP ;全局符号定义_CLoseMcBSP(关闭McBSP)

.global _READAD50 ;全局符号定义_READAD50(读取AD50数据流)

.global _WRITEAD50 ;全局符号定义_WRITEAD50(向AD50写入数据流)

.include MMRegs.h ;引入头文件MMRegs.h _InitC5402:

NOP

LD #0, DP ; 重置数据存储器页指针

STM #0, CLKMD ; 对DSP时钟进行软件设置

STM #0, CLKMD ; (在设置之前转到分线规模

式)

STM #0x4007, CLKMD ; 将C5402 DSP时钟设置到40Hz

******* Configure C5402 System Registers *******;配置C5402系统寄存器

STM #0x2000, SWWSR ; 为IO空间设置两个等待周期;SWWSR:外部总线S/W等待状态寄存器

;为数据和监督空间设置0个等待周期

STM #0x0000,BSCR ; 为堆栈转换寄存器设置等待状态; BSCR:外部总线块转换控制寄存器

; 堆栈空间为64k,之间没有多余的循环

; 连续的监督/数据读取

STM #0x1800,ST0 ; 为状态寄存器0进行预设值

STM #0x2900,ST1 ; 为状态寄存器1进行预设值(note:INTX=1)

STM #0x00A0,PMST ; PMST:处理器方式状态寄存器

;OVLY=1,向量指向0080h

******* Set up Timer Control Registers *******;(设置时钟控制寄存器)

STM #0x0010, TCR ; 停止on–chip计时T C R定时器控制寄存器

; 计时器0用作主循环的计时器

******* Initialize McBSP2 Registers *******;(初始化 McBSP2 (用来创建设备配置)寄存器)

STM SPCR1, McBSP2_SPSA ; 设置SPCR1的寄存器地址

STM #0000h, McBSP2_SPSD ; McBSP2 recv = left–justify ; 通过框架同步产生接受中断

STM SPCR2, McBSP2_SPSA ; 设置SPCR2的寄存器地址; 通过框架同步产生传输中断

STM #0000h, McBSP2_SPSD ; McBSP2 Tx(异步传输); 在SW断点之后运行

STM RCR1, McBSP2_SPSA ; 设置RCR1的寄存器地址 ;RCR1:接收控制寄存器STM #0040h, McBSP2_SPSD ; 接收框架1长度=16 bits

STM RCR2, McBSP2_SPSA ; 设置RCR2的寄存器地址

STM #0040h, McBSP2_SPSD ; 接收相位=1

; 设置框架2长度为16bits

STM XCR1, McBSP2_SPSA ; 设置XCR1的寄存器地址

STM #0040h, McBSP2_SPSD ; 设置与接收(recv)相同

STM XCR2, McBSP2_SPSA ; 设置XCR2的寄存器地址

STM #0040h, McBSP2_SPSD ; 设置与接收(recv)相同

STM PCR, McBSP2_SPSA ; 设置PCR的寄存器地址

STM #000eh, McBSP2_SPSD ; 时钟和框架从外部产生(slave) ******* Finish DSP Initialization *******;(结束DSP初始化)STM #0x0000, IMR ; 关闭外围中断

STM #0xFFFF, IFR ; 清除中断的标志

RET ; 返回主程序

NOP

NOP

******* Waiting for McBSP0 RX Finished *******;(等待McBSP0异步接收结束)

IfRxRDY1:

NOP

STM SPCR1, McBSP2_SPSA ; 启动 McBSP2 Rx

LDM McBSP2_SPSD, A

AND #0002h, A ; 隐藏已经接受到的bit(可以用来代替系列端口中断)

BC IfRxRDY1, AEQ ; 继续寄存(checking)

NOP

NOP

RET ; 返回

NOP

NOP

******* Waiting for McBSP0 TX Finished *******;(等待McBSP0异步传输结束)

IfTxRDY1:

NOP

STM SPCR2, McBSP2_SPSA ; 启动 McBSP2 Tx

LDM McBSP2_SPSD, A

AND #0002h, A ; 隐藏已经传输的bit

BC IfTxRDY1, AEQ ; 继续寄存

NOP

NOP

RET ; 返回

NOP

NOP

******************************************

_OpenMcBSP:

rsbx xf ;寄存器xf复位为0

call wait ;非条件调用等待状态

NOP

STM SPCR1, McBSP2_SPSA ; 启动 McBSP0 RX 以读入 AD 数据

LDM McBSP2_SPSD,A

OR #0x0001, A

STLM A, McBSP2_SPSD ;隐藏已经接受到的bit

STM SPCR2, McBSP2_SPSA ; 启动 McBSP0 TX 以 DTMF 输出

LDM McBSP2_SPSD,A

OR #0x0001, A

STLM A, McBSP2_SPSD ;隐藏已经输出的bit

LD #0h, DP ; 装载数据页0

rpt #23 ;循环执行

NOP

ssbx xf ;寄存器xf置位为1

NOP

NOP

CALL IfTxRDY1 ;非条件调用 IfTxRDY1 STM #0x0001, McBSP2_DXR1 ;请求二级传送

NOP

CALL IfTxRDY1 ; 非条件调用 IfTxRDY1

STM #0100h, McBSP2_DXR1 ;将00h写入到寄存器1

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0000h, McBSP2_DXR1;

NOP

NOP

rpt #20h

nop

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0200h, McBSP2_DXR1 ;将00h写入到寄存器2

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

CALL IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1

STM #0300h, McBSP2_DXR1 ;将00h写入到寄存器3

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

CALL IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1

STM #0490h, McBSP2_DXR1 ;将00h写入到寄存器4

;通过内部DPLL bypass internal DPLL

;并且选择抽样频率and select the Sample Frequency

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

RET

NOP

NOP

*********************

_CloseMcBSP:

STM SPCR1, McBSP2_SPSA ; 关闭 McBSP0 RX

LDM McBSP2_SPSD,A

AND #0xFFFE, A

STLM A, McBSP2_SPSD

STM SPCR2, McBSP2_SPSA ; 关闭 McBSP0 TX

LDM McBSP2_SPSD,A

AND #0xFFFE, A

STLM A, McBSP2_SPSD

RPT #5

RET

NOP

NOP

_READAD50:

stm 0x00ff,ar3

stm 0x1000,ar2

loopa:

CALL IfRxRDY1

ldm McBSP2_DRR1,b

stl b,*ar2+

banz loopa,*ar3-

nop

nop

ret

nop

nop

_WRITEAD50:

stm 0x037b,ar3

stm 0x38a3,ar2

loopb:

CALL IfTxRDY1

ldu *ar2+,B

and #0fffeh,b ;mask the LSB

stlm B, McBSP2_DXR1

banz loopb,*ar3-

nop

nop

ret

nop

nop

wait:

stm 20h,ar3

loop1:

stm 020h,ar4

loop2:

banz loop2,*ar4-

banz loop1,*ar3-

ret

nop

nop

nop

nop

.end

************************************************************* ***********

** End of File –– InitC5402.asm

************************************************************* **

在图形编辑窗口观察到的A/D转化后的采样波形

实验分析:

频谱混叠产生的原因:根据抽样定理,当取样频率fs大于等于两倍的频谱最高频率分量fm的两倍时,就可以从离散序列中准确的回复出信号,但当取样频率fs小于于频谱最高频率分量fm的两倍时,就会发生频谱混叠现象。

实验三D/A转换实验

实验目的

1、掌握利用TLV320AD50实现D/A转换的技术基本原理和常用方法。

2、进一步学习DSP的多信道缓冲串口的应用方法。

3、掌握并熟练使用DSP和AD50的输出接口及其操作。

源程序:

【C程序】

extern void InitC5402(void); /*创建初始化C5402的函数,返回值为空*/

extern void OpenMcBSP(void); /*创建打开McBSP端口的函数,返回值为空;

McBSP ;Multichannel Buffered Serial Port 多通道缓冲连续端口基本处理模块,调用open函数来处理一个操作*/ extern void CloseMcBSP(void) ;/*创建关闭McBSP端口函数*/

extern void WRITEAD50(void);/*创建将数据写入AD50的数据流的函

数;AD50:硬件端口*/

void main(void) /*主函数开始*/

{

InitC5402(); /* 初始化C5402 DSP */

OpenMcBSP(); /*调用函数,打开McBSP端口*/

while (1)

{

WRITEAD50(); /*将数据写入AD50的数据流,完成AD 转换 */

}

}

【汇编程序】

.global _InitC5402

.global _OpenMcBSP

.global _CloseMcBSP

.global _READAD50

.global _WRITEAD50

.include MMRegs.h

_InitC5402:

NOP

LD #0, DP ;重置数据存储器页指针

STM #0, CLKMD ; 对DSP时钟进行软件设置

STM #0, CLKMD ; (在设置之前转到分线规模式)

STM #0x4007, CLKMD ; 将C5402 DSP时钟设置到40Hz * STM #0x4007, CLKMD ; set C5402 DSP clock to 100MHz

; (based on DSK crystal at 20MHz)

******* Configure C5402 System Registers *******;配置C5402系统寄存器

STM #0x2000, SWWSR ; 为IO空间设置两个等待周期,

;SWWSR:外部总线S/W等待状态寄存器

;为数据和监督空间设置0个等待周期

STM #0x0000,BSCR ; 为堆栈转换寄存器设置等待状态

; BSCR:外部总线块转换控制寄存器

; 堆栈空间为64k,之间没有多余的循环

; 连续的监督/数据读取

STM #0x1800,ST0 ; 为状态寄存器0进行预设值

STM #0x2900,ST1 ; 为状态寄存器1进行预设值

(note:INTX=1)

STM #0x00A0,PMST ; PMST:处理器方式状态寄存器

;OVLY=1,向量指向0080h

******* Set up Timer Control Registers *******;(设置时钟控制寄存器)

STM #0x0010, TCR ; 停止on–chip计时T C R定时器控制寄存器

; 计时器0用作主循环的计时器

* STM #6249, PRD ; if CPU at 100M/6250=16KHz

******* Initialize McBSP2 Registers *******;(初始化 McBSP2 (用来创建设备配置)寄存器)

STM SPCR1, McBSP2_SPSA ; 设置SPCR1的寄存器地址

STM #0000h, McBSP2_SPSD ; McBSP2 recv = left–justify

; 通过框架同步产生接受中断

STM SPCR2, McBSP2_SPSA ; 设置SPCR2的寄存器地址

; 通过框架同步产生传输中断

STM #0000h, McBSP2_SPSD ; McBSP2 Tx(异步传输)

; 在SW断点之后运行

STM RCR1, McBSP2_SPSA ; 设置RCR1的寄存器地址

;RCR1:接收控制寄存器

STM #0040h, McBSP2_SPSD ; 接收框架1长度=16 bits

STM RCR2, McBSP2_SPSA ; 设置RCR2的寄存器地址

STM #0040h, McBSP2_SPSD ; 接收相位=1

; 设置框架2长度为16bits

STM XCR1, McBSP2_SPSA ; 设置XCR1的寄存器地址

STM #0040h, McBSP2_SPSD ; 设置与接收(recv)相同

STM XCR2, McBSP2_SPSA ; 设置XCR2的寄存器地址

STM #0040h, McBSP2_SPSD ; 设置与接收(recv)相同

STM PCR, McBSP2_SPSA ; 设置PCR的寄存器地址

STM #000eh, McBSP2_SPSD ; 时钟和框架从外部产生(slave)

******* Finish DSP Initialization *******;(结束DSP初始化)STM #0x0000, IMR ; 关闭外围中断

STM #0xFFFF, IFR ; 清除中断的标志

RET ; 返回主程序

NOP

NOP

******* Waiting for McBSP0 RX Finished *******;(等待McBSP0异步接收结束)

IfRxRDY1:

NOP

STM SPCR1, McBSP2_SPSA ; 启动 McBSP2 Rx

LDM McBSP2_SPSD, A

AND #0002h, A ; 隐藏已经接受到的bit(可用来代替系列端口中断)

BC IfRxRDY1, AEQ ; 继续寄存(checking)

NOP

NOP

RET ; 返回

NOP

NOP

******* Waiting for McBSP0 TX Finished *******;(等待McBSP0异步传输结束)

IfTxRDY1:

NOP

STM SPCR2, McBSP2_SPSA ; 启动 McBSP2 Tx

LDM McBSP2_SPSD, A

AND #0002h, A ; 隐藏已经传输的bit

BC IfTxRDY1, AEQ ; 继续寄存

NOP

NOP

RET ; 返回

NOP

NOP

******************************************

******************************************

_OpenMcBSP:

rsbx xf ;寄存器xf复位为0

call wait ;非条件调用等待状态

NOP

STM SPCR1, McBSP2_SPSA ; 启动 McBSP0 RX 以读入 AD 数据LDM McBSP2_SPSD,A

OR #0x0001, A

STLM A, McBSP2_SPSD ;隐藏已经接受到的bit

STM SPCR2, McBSP2_SPSA ; 启动 McBSP0 TX 以 DTMF 输出LDM McBSP2_SPSD,A

OR #0x0001, A

STLM A, McBSP2_SPSD ;隐藏已经输出的bit

LD #0h, DP ; 装载数据页0

rpt #23 ;循环执行

NOP

ssbx xf ;寄存器xf置位为1

NOP

NOP

; CALL IfTxRDY1

; STM #0x0101, McBSP2_DXR1

; CALL IfTxRDY1

; STM #0x0208, McBSP2_DXR1

;; rsbx xf

;; NOP

;;NOP

CALL IfTxRDY1 ;非条件调用 IfTxRDY1 STM #0x0001, McBSP2_DXR1 ;请求二级传送

NOP

CALL IfTxRDY1 ; 非条件调用 IfTxRDY1 STM #0100h, McBSP2_DXR1 ;将00h写入到寄存器1

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0000h, McBSP2_DXR1

NOP

NOP

rpt #20h

nop

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1 ;非条件调用 IfTxRDY1

STM #0200h, McBSP2_DXR1 ;将00h写入到寄存器2

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

CALL IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1

STM #0300h, McBSP2_DXR1 ;将00h写入到寄存器3

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

CALL IfTxRDY1

STM #0x0001, McBSP2_DXR1 ;请求二级传送

CALL IfTxRDY1

STM #0490h, McBSP2_DXR1 ;将00h写入到寄存器4

;通过内部DPLL bypass internal DPLL

;并且选择抽样频率and select the Sample Frequency

CALL IfTxRDY1

STM #0000h, McBSP2_DXR1

; CALL IfTxRDY1

; STM #0x0001, McBSP2_DXR1

; CALL IfTxRDY1

; STM #0102h, McBSP2_DXR1 ;enable digital loopback

; CALL IfTxRDY1

; STM #0x0001, McBSP2_DXR1

; CALL IfTxRDY1

; STM #0208h, McBSP2_DXR1 ;enable analog loopback

RET

NOP

NOP

*********************

_CloseMcBSP:

STM SPCR1, McBSP2_SPSA ; 关闭 McBSP0 RX

LDM McBSP2_SPSD,A

AND #0xFFFE, A

STLM A, McBSP2_SPSD

STM SPCR2, McBSP2_SPSA ; 关闭 McBSP0 TX

LDM McBSP2_SPSD,A

AND #0xFFFE, A

STLM A, McBSP2_SPSD

RPT #5

RET

NOP

NOP

【含源代码】北邮dsp-MATLAB实验三梳状滤波器的应用

Dsp-matlab实验 实验三:梳状滤波器的应用 设 计 报 告 课题名称:梳状滤波器的应用 学生姓名: 班级: 班内序号: 学号: 日期:2015/06/15

目录 一、实验内容········································· 二、Matlab运行结果(含分析)································· 三、Matlab源代码···························· 四、遇到的难题与解决方法···························· 参考文献·························································

一、实验内容 录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。试验报告要求: 1、对试验原理的说明; 回声往往是原始声音衰减后的多个延迟叠加而组成的,因此回声可以用延迟单元来生成。X(n)表示原始声音信号,α为衰减系数,N为延迟周期,回声信号Y(n)=X(n)α*x(n-T)+α^2*x(n-2T)+……+α^N*x(n-NT). Z变换后的系统函数H(Z)可由梳状滤波器实现。MATLAB filter函数可用来仿真差分方程,本次实验用的就是这个函数。 2、在同一张图上,绘制原声音序列() x n、加入一次反射后的声音序列 1() x n、加入三次反射后的声音序列 3() x n和加入无穷多次反射后的声音序列() I x n;

其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列 x1(n),绿色为加入三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列x ∞(n)。 二、Matlab 运行结果(含分析)· 结合上述各序列,分析延时、衰减系数对回声效果的影响(提示:定量考察序列()x n 、1()x n 、3()x n 和()I x n 之间的区别) 延时不变时,衰减系数a 从零增大到1的过程中,回声效果由差变好再变差。a 很小时几乎听不到回声,a 在0.5±0.1时回声效果最明显,a 接近1时声音变得很不清晰,几乎不可识别。衰减系数不变时延时T 从零增大的过程中回声效果由差变好再变差。T 接近0时可以听到回声,但多次回声的层次感不清晰。0.1s1s 三、Matlab 源代码· >> [x,fs]=audioread('a.wav');sound(x,fs);a=0.6;T=0.2; y1=filter([1,zeros(1,T*fs-1),a],1,x);sound(y1,fs);wavwrite(y1,fs,'echo1.wav'); y2=filter([1,zeros(1,T*fs-1),a,zeros(1,T*fs-1),a^2,zeros(1,T*fs-1),a^3],1,x); sound(y2,fs);wavwrite(y2,fs,'echo2.wav');y3=filter(1,[1,zeros(1,T*fs-1),a],x);sound(y3,fs);wavwri te(y3,fs,'echo3.wav');plot(y3,'m'); hold on;plot(y2,'r'); hold on;plot(y1,'g');hold on;plot(x,'b'); 四、遇到的难题与解决办法 最开始遇到的问题是matlab 软件安装问题,因为电脑环境的特殊性尝试了多次才成功; 在建模过程中发现对实验原理因为学习时间过长有些不熟悉,于是翻书查阅复习,熟悉实验原理; 在实验过程中因为粗心,忘记保存,没有打符号等等之类问题使系统开始报错,细心调试之后成功建模

DSP实验报告

一、综合实验内容和目的 1、实验目的 (1) 通过实验学习掌握TMS320F28335的浮点处理; (2) 学习并掌握A/D模块的使用方法; (3) 学习并掌握中断方式和查询方式的相关知识及其相互之间的转换; (4) 学习信号时域分析的方法,了解相关电量参数的计算方法; (5) 了解数字滤波的一些基本方法。 2、实验内容 要求1:对给定的波形信号,采用TMS320F28335的浮点功能计算该信号的以下时域参数:信号的周期T,信号的均方根大小V rms、平均值V avg、峰-峰值V pp。 其中,均方根V rms的计算公式如下: V= rms 式中N为采样点数,()u i为采样序列中的第i个采样点。 要求2:所设计软件需要计算采样的波形周期个数,并控制采样点数大于1个波形周期,且小于3个波形周期大小。 要求3:对采集的数据需要加一定的数字滤波。 二、硬件电路 相关硬件:TMS320F28335DSP实验箱,仿真器。

硬件结构图 三、程序流程图 1、主程序流程图 程序的主流程图2、子程序流程图

参数计算的流程图 四、实验结果和分析 1、实验过程分析 (1) 使用的函数原型声明 对ADC模件相关参数进行定义:ADC时钟预定标,使外设时钟HSPCLK 为25MHz,ADC模块时钟为12.5MHz,采样保持周期为16个ADC时钟。 (2) 定义全局变量 根据程序需要,定义相关变量。主要有:ConversionCount、Voltage[1024]、Voltage1[1024]、Voltage2[1024]、filter_buf[N]、filter_i、Max、Min、T、temp、temp1、temp2、temp3、Num、V、Vav、Vpp、Vrm、fre。这些变量的声明请见报告后所附的源程序。 (3) 编写主函数 完成系统寄存器及GPIO初始化;清除所有中断,初始化PIE向量表,将程

北邮通原硬件实验报告(DOC)

2013年通信原理硬件实验报告 学院:信息与通信工程学院 班级:2011211104 姓名: 学号: 班内序号: 组号: 同组人:

目录 实验一:双边带抑制载波调幅(DSB-SC AM) (3) 实验二:具有离散大载波的双边带调幅波(AM) (14) 实验三:调频(FM) (21) 实验六:眼图 (28) 实验七:采样,判决 (31) 实验八:二进制通断键控(OOK) (34) 实验十一:信号星座(选作) (41) 实验十二:低通信号的采样与重建 (45)

实验一双边带抑制载波调幅(DSB-SC AM) 一.实验目的 (1)了解DSB-SC AM信号的产生及相干解调的原理和实现方法。 (2)了解DSB-SC AM的信号波形及振幅频谱的特点,并掌握其测量方法。 (3)了解在发送DSB-SC AM信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。 (4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的测试方法。 二.实验器材 PC机一台、TIMS实验平台、示波器、导线等。 三.实验原理 1.双边带抑制载波调幅(DSB-SC AM)信号的产生和表达式 图1.1 2.双边带抑制载波调幅信号的解调 基本思路:利用恢复的载波与信号相乘,将频谱搬移到基带,还原出原基带信号。 图1.2 3.DSB-SC AM信号的产生及相干解调原理框图 ()()()()() cos c c c s t m t c t m t A t ω? ==+

图1.3 四.实验内容及结果 1.DSB-SC AM信号的产生 (1)实验步骤: 图1.4 1.按照上图,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模

DSP实验报告

实验0 实验设备安装才CCS调试环境 实验目的: 按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。 实验步骤: 以演示实验一为例: 1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源; 2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out; 3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示; 4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框 5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1; DSP Data Type设置成16-bit signed integer,如下图所示; 6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察 7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果: 心得体会: 通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

DSP实验报告

东南大学自动化学院 实验报告 课程名称: DSP技术及课程设计 实验名称:直流无刷电机控制综合实验 院(系):自动化专业:自动化 姓名:ssb 学号:08011 实验室:304 实验组别: 同组人员:ssb1 ssb2 实验时间:2014年 6 月 5 日评定成绩:审阅教师:

目录 1.实验目的和要求 (3) 1.1 实验目的 (3) 1.2 实验要求 (3) 1.2.1 基本功能 (3) 1.2.2 提高功能 (3) 2.实验设备与器材配置 (3) 3.实验原理 (3) 3.1 直流无刷电动机 (3) 3.2 电机驱动与控制 (5) 3.3 中断模块 (7) 3.3.1 通用定时器介绍及其控制方法 (7) 3.3.2 中断响应过程 (7) 3.4 AD模块 (8) 3.4.1 TMS320F28335A 芯片自带模数转换模块特性 (8) 3.4.2 模数模块介绍 (8) 3.4.3 模数转换的程序控制 (8) 4.实验方案与实验步骤 (8) 4.1 准备实验1:霍尔传感器捕获 (8) 4.1.1 实验目的 (8) 4.1.2 实验内容 (9) 4.1.2.1 准备 (9) 4.1.2.2 霍尔传感器捕获 (9) 4.2 准备实验2:直流无刷电机(BLDC)控制 (10) 4.2.1 程序框架原理 (10) 4.2.1.1 理解程序框架 (10) 4.2.1.2 基于drvlib281x库的PWM波形产生 (11) 4.2.2 根据捕获状态驱动电机运转 (12) 4.2.2.1 目的 (12) 4.2.2.2 分析 (12) 4.3 考核实验:直流无刷电机调速控制系统 (13) 4.3.1 初始化工作 (13) 4.3.2 初始化定时器0.... . (13) 4.3.3初始化IO口 (13) 4.3.4中断模块.... (13) 4.3.5 AD模块 (14) 4.3.6在液晶屏显示 (15) 4.3.7电机控制 (17) 4.3.7.1 控制速度方式选择 (17) 4.3.7.2 控制速度和转向 (18) 4.3.8延时子函数 (19) 4.3.9闭环PID调速 (19)

DSP硬件实验报告

北京邮电大学DSP硬件课程实验报告 姓名: 学号: 班级: 院系: 报告提交日期:

目录 一、实验环境——————————————————————3 二、实验一:常用指令实验 (1)简单指令程序运行实验———————————————3 (2)资料存储实验———————————————————5 (3)I/O实验—————————————————————7 (4)定时器实验————————————————————9 (5)I NT2中断实验——————————————————11 三、实验二:A/D采样实验———————————————13 四、实验三:D/A转换实验———————————————14 五、实验四:有限冲击响应滤波器(FIR)算法实验————15 六、实验总结—————————————————————17 七、参考文献—————————————————————17

一、实验环境 实验采用的是理工达盛开发的EL-DSP-II实验教学系统。在实验室电脑上首先进行DSP实验环境的设置。 环境设置的步骤: 1、在计算机BIOS中将驱动方式设为EPP模式; 2、安装开发器epp驱动; 3、安装CCS软件; 具体的环境设置步骤参照实验教材。 二、实验一:常用指令实验 (一)实验目的 1、熟悉DSP开发系统的连接; 2、了解DSP开发系统的组成和结构和应用系统构成; 3、熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。 (二)实验设备 计算机,CCS 2.0版软件,DSP仿真器,实验箱。 (三)实验操作方法 1、系统连接; 进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示: 在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。 2、运行CCS程序; 先实验箱上电,然后启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。成功运行程序后,首先应熟悉CCS的用户接口。学会CCS环境下程序编写、调试、编译、装载,学习如何使用观察窗口等。 3、修改样例程序,尝试DSP其他的指令; 4、填写实验报告; 5、样例程序实验操作说明。 (四)实验步骤与内容 1、简单指令程序运行实验 (1)实验使用资源 实验通过实验箱上的XF指示灯观察程序运行结果。 (2)实验过程

北邮dsp软件实验报告

Matlab仿真实验 实验报告 学院:电子工程学院 专业:电子信息科学与技术 班级: 学号: 姓名:

时间:2015年12月23日 实验一:数字信号的FFT分析 1.实验目的 通过本次试验,应该掌握: (a)用傅里叶变换进行信号分析时基本参数的选择 (b)经过离散时间傅里叶变换和有限长度离散傅里叶变换后信号频谱上的区别,前者DTFT时间域是离散信号,频率域还是连续的,而DFT在两个域中都是离散的。(c)离散傅里叶变化的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d)获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。(e)建立DFT从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用时数字音频压缩中的分析滤波器,例如DVD AC3和MPEG Audio。 2.实验容、要求及结果。 (1)离散信号的频谱分析: 设信号x(n)=0.001*cos(0.45n)+sin(0.3n)-cos(0.302n-) 此信号的0.3谱线相距很近,谱线0.45的幅度很小,请选择合适的序列长度N和窗函数,用DFT分析其频谱,要求得到清楚的三根谱线。 【实验代码】:

k=2000; n=[1:1:k]; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); subplot(2,1,1); stem(n,x,'.'); title(‘时域序列'); xlabel('n'); ylabel('x(n)'); xk=fft(x,k); w=2*pi/k*[0:1:k-1]; subplot(2,1,2); stem(w/pi,abs(xk)); axis([0 0.5 0 2]); title('1000点DFT'); xlabel('数字频率'); ylabel('|xk(k)|'); 【实验结果图】:

北邮DSP实验报告

北京邮电大学 数字信号处理硬件实验 实验名称:dsp硬件操作实验姓名:刘梦颉班级: 2011211203 学号:2011210960 班内序号:11 日期:2012年12月20日 实验一常用指令实验 一、实验目的 了解dsp开发系统的组成和结构,熟悉dsp开发系统的连接,熟悉dsp的开发界面,熟 悉c54x系列的寻址系统,熟悉常用c54x系列指令的用法。 二、实验设备 计算机,ccs 2.0版软件,dsp仿真器,实验箱。 三、实验操作方法 1、系统连接 进行dsp实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示: 1)上电复位 在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应 点亮,否则dsp开发系统与计算机连接有问题。 2)运行ccs程序 先实验箱上电,然后启动ccs,此时仿真器上的“绿色小灯”应点亮,并且ccs正常启 动,表明系统连接正常;否则仿真器的连接、jtag接口或ccs相关设置存在问题,掉电,检 查仿真器的连接、jtag接口连接,或检查ccs相关设置是否正确。 四、实验步骤与内容 1、实验使用资源 实验通过实验箱上的xf指示灯观察程序运行结果 2、实验过程 启动ccs 2.0,并加载“exp01.out”;加载完毕后,单击“run”运行程序; 五、实验结果 可见xf灯以一定频率闪烁;单击“halt”暂停程序运行,则xf灯停止闪烁,如再单击 “run”,则“xf”灯又开始闪烁; 关闭所有窗口,本实验完毕。 六、源程序代码及注释流程图: 实验二资料存储实验 一、实验目的 掌握tms320c54的程序空间的分配;掌握tms320c54的数据空间的分配;熟悉操作 tms320c54数据空间的指令。 二、实验设备 计算机,ccs3.3版软件,dsp仿真器,实验箱。 三、实验系统相关资源介绍 本实验指导书是以tms32ovc5410为例,介绍相关的内部和外部内存资源。对于其它类型 的cpu请参考查阅相关的资料手册。下面给出tms32ovc5410的内存分配表: 对于存储空间而言,映像表相对固定。值得注意的是内部寄存器与存储空间的映像关系。 因此在编程应用时这些特定的空间不能作其它用途。对于篇二:31北邮dsp软件实验报告北京邮电大学 dsp软件

dsp实验报告

DSP 实验课大作业实验报告 题目:在DSP 上实现线性调频信号的脉冲压缩,动目标显示和动目标检测 (一)实验目的: (1)了解线性调频信号的脉冲压缩、动目标显示和动目标检测的原理,及其DSP 实现的整个流程; (2)掌握C 语言与汇编语言混合编程的基本方法。 (3)使用MATLAB 进行性能仿真,并将DSP 的处理结果与MATLAB 的仿真结果进行比较。 (二)实验内容: 1. MATLAB 仿真 设定信号带宽为B= 62*10,脉宽-6=42.0*10τ,采样频率为62*10Fs =,脉冲重复周期为-4T=2.4*10,用MATLAB 产生16个脉冲的线性调频信号,每个脉冲包含三个目标,速度和距离如下表: 对回波信号进行脉冲压缩,MTI ,MTD 。并且将回波数据和频域脉压系数保存供DSP 使用。 2.DSP 实现 在Visual Dsp 中,经MATLAB 保存的回波数据和脉压系数进行脉压,MTI 和MTD 。 (三)实验原理 1.脉冲压缩原理 在雷达系统中,人们一直希望提高雷达的距离分辨力,而距离分辨力定义为:22c c R B τ?==。其中,τ表示脉冲时宽,B 表示脉冲带宽。从上式中我们可以看

出高的雷达分辨率要求时宽τ小,而要求带宽B大。但是时宽τ越小雷达的平均发射功率就会很小,这样就大大降低了雷达的作用距离。因此雷达作用距离和雷达分辨力这两个重要的指标变得矛盾起来。然而通过脉冲压缩技术就可以解决这个矛盾。脉冲压缩技术能够保持雷达拥有较高平均发射功率的同时获得良好的距离分辨力。 在本实验中,雷达发射波形采用线性调频脉冲信号(LFM),其中频率与时延成正比关系,因此我们就可以将信号通过一个滤波器,该滤波器满足频率与时延成反比关系。那么输入信号的低频分量就会得到一个较大的时延,而输入信号的高频分量就会得到一个较小的时延,中频分量就会按比例获得相应的时延,信号就被压缩成脉冲宽度为1/B的窄脉冲。 从以上原理我们可以看出,通过使用一个与输入信号时延频率特性规律相反的滤波器我们可以实现脉冲压缩,即该滤波器的相频特性与发射信号时共轭匹配的。所以说脉冲压缩滤波器就是一个匹配滤波器。从而我们可以在时域和频域两个方向进行脉冲压缩。 滤波器的输出() h n= y n为输入信号() x n与匹配滤波器的系统函数() *(1) y n x n s N n =--。转换到频域就是--卷积的结果:* ()()*(1) s N n =。因此我们可以将输入信号和系统函数分别转化到频域:Y k X k H k ()()( Y k,然后将结果再转化到时域, h n H k →,进行频域相乘得() ()() x t X k →,()() 就可以得到滤波器输出:()() →。我们可用FFT和IFFT来实现作用域的 Y k y n 转换。原理图如下: 图1.脉冲压缩原理框图 2.MTI原理 动目标显示(MTI)技术是用来抑制各种杂波,来实现检测或者显示运动目标的技术。利用它可以抑制固定目标的信号,显示运动目标的信号。以线性调频

2015年北邮数字信号处理软件实验报告

数字信号处理软件实验 MATLAB 仿真 2015年12月16日

实验一:数字信号的 FFT 分析 ● 实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT )后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 ● 实验内容及要求 ? 离散信号的频谱分析 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 ? DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

●MATLAB代码及结果 ?离散信号的频谱分析 clf; close all; N=1000; n=1:1:N; x=0.001*cos(0.45*n*pi)+sin(0.3*n*pi)-cos(0.302*n*pi-pi/4); y=fft(x,N); mag=abs(y); w=2*pi/N*[0:1:N-1]; stem(w/pi,mag); axis([0.25 0.5 0 2]); xlabel('频率'); ylabel('X(k)'); grid on;

北邮dsp软件matlab仿真实验报告

题目: 数字信号处理MATLAB仿真实验 姓名 学院 专业 班级 学号 班内序号

实验一:数字信号的 FFT 分析 1、实验内容及要求 (1) 离散信号的频谱分析: 设信号 此信号的0.3pi 和 0.302pi 两根谱线相距很近,谱线 0.45pi 的幅度很小,请选择合适的序列长度 N 和窗函数,用 DFT 分析其频谱,要求得到清楚的三根谱线。 (2) DTMF 信号频谱分析 用计算机声卡采用一段通信系统中电话双音多频(DTMF )拨号数字 0~9的数据,采用快速傅立叶变换(FFT )分析这10个号码DTMF 拨号时的频谱。 2、实验目的 通过本次实验,应该掌握: (a) 用傅立叶变换进行信号分析时基本参数的选择。 (b) 经过离散时间傅立叶变换(DTFT )和有限长度离散傅立叶变换(DFT ) 后信号频谱上的区别,前者 DTFT 时间域是离散信号,频率域还是连续的,而 DFT 在两个域中都是离散的。 (c) 离散傅立叶变换的基本原理、特性,以及经典的快速算法(基2时间抽选法),体会快速算法的效率。 (d) 获得一个高密度频谱和高分辨率频谱的概念和方法,建立频率分辨率和时间分辨率的概念,为将来进一步进行时频分析(例如小波)的学习和研究打下基础。 (e) 建立 DFT 从整体上可看成是由窄带相邻滤波器组成的滤波器组的概念,此概念的一个典型应用是数字音频压缩中的分析滤波器,例如 DVD AC3 和MPEG Audio 。 3、程序代码 (1) N=5000; n=1:1:N; x=0.001*cos(0.45*pi*n)+sin(0.3*pi*n)-cos(0.302*pi*n-pi/4); y=fft(x,N); magy=abs(y(1:1:N/2+1)); k=0:1:N/2; w=2*pi/N*k; stem(w/pi,magy) axis([0.25,0.5,0,50]) (2) column=[1209,1336,1477,1633]; line=[697,770,852,941]; fs=10000; N=1024; 00010450303024().*cos(.)sin(.)cos(.)x n n n n ππππ=+--

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处理器原理与应用)

实验一:DSP软件集成开发环境CCS 一. 实验目的 1.了解DSP 软件开发集成环境Code Composer Studio (CCS) 的安装和配置过程; 2.熟悉并掌握CCS 的操作环境和基本功能,了解DSP软件开发的一般流程: (1) 学习创建工程和管理工程的方法; (2) 了解工程文件和映像文件的基本内容; (3) 了解基本的编译和调试功能; (4) 学习使用观察窗口。 二. 实验设备 计算机、Code Composer Studio 2.2 或以上版本 三. 背景知识 1.DSP 应用系统开发一般需要借助以下调试工具: ―软件集成开发环境(CCS):完成系统的软件开发,进行软件和硬件仿真调试; ―硬件开发及测试平台:实现系统的硬件仿真与调试,包括仿真器和评估模块。 https://www.doczj.com/doc/325254571.html,S 集成了适用于所有TI 器件的源码编辑、编译链接、代码性能评估、调试仿真等功能,为 设计人员提供了一个完整的嵌入式系统软件开发环境。 3.系统软件部分可以通过CCS 建立的工程文件进行管理,工程文件一般包含以下几种文件: ―源程序文件:C 语言或汇编语言文件(*.ASM 或*.C) ―头文件(*.H) ―命令文件(*.CMD) ―库文件(*.LIB, *.OBJ)

四. 实验步骤 1. 创建工程文件 双击 CCStudio 图标,启动 CCS ,CCS 的初始界面包括工程管理区和工作区两部分。 在菜单中选择“Project —>New…”,弹出“Project Create ”窗口: 在“Project ”编辑框内填入项目名称,例如“hello1”;有必要的话,可以更改项目文件夹位置 (Location);“Project ”下拉框用以确定输出文件类型;目标硬件类型在“Target ”下拉框中指定。 点击“完成”后,CCS 自动在指定目录下生成“hello1.pjt ”工程文件。工程文件中保存了对应工程的设置信息和内部文件的引用情况。展开工程管理窗口“Projects ”下的“hello1.pjt ”,可以看到所有项目均为空。 任务 1:在 notepad 中打开“hello1.pjt ”,了解并记录工程文件提供的设置信息 若标题栏显示xxxx Emulator, 则需要先运行 Setup CCS, 选择合适的软件仿真环境

北邮dsp硬件实验报告

北京邮电大学 数字信号处理 硬件实验 学院: 班级: 学号: 姓名: 班内序号

实验一:常用指令实验 一、实验目的 1.熟悉DSP开发系统的连接 2.了解DSP开发系统的组成和结构和应用系统构成 3.熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口, 定时器,中断控制)。 二、实验设备 计算机,CCS 2.0版软件,DSP仿真器,实验箱。 三、实验操作方法 1、系统连接 进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示: 在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。 2、运行CCS程序 先实验箱上电,然后启动CCS,此时仿真器上的“绿色小灯” 应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连

接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。 四、实验步骤与内容 (一)简单指令程序运行实验 1、实验使用资源 实验通过实验箱上的XF指示灯观察程序运行结果 2、实验过程 启动CCS 2.0,并加载“exp01.out”;加载完毕后,单击“Run” 运行程序; 实验结果:可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;关闭所有窗口,本实验完毕。 源程序查看:用下拉菜单中Project/Open,打开“Exp01.pjt” 双击“Source”,双击“exp01.asm”可查看源程序。 源程序注释如下: .mmregs .global _main _main: stm #3000h,sp ssbx xf ;将XF置1 call delay ;调用延时子程序,延时

DSP实验二

信号与信息处理综合实验(DSP部分) 学院:信息与通信工程学院 班级:2013211125 姓名:商晴庆 学号: 班内序号: 组号: 2016年4月

实验二 FFT的实现 一、实验目的 (1)进一步熟悉DSK6416开发平台,掌握调试功能; (2)充分理解FFT过程,并编码实现功能。 二、程序功能 (1)基础:将FFT结果写入SDRAM中,并读取出来。 (2)提高:其他点数的FFT 三、模块描述 (1)GBLCTL寄存器配置部分: static EMIFA_Config MyEmifaConfig = { EMIFA_GBLCTL_RMK ( EMIFA_GBLCTL_EK2RATE_FULLCLK, //1 X EMIF input clock EMIFA_GBLCTL_EK2HZ_CLK, //eclkout2 continue output during hold EMIFA_GBLCTL_EK2EN_ENABLE, //eclkout2 enable output EMIFA_GBLCTL_BRMODE_MRSTATUS, //bus request is memory access or refresh pending/in progress EMIFA_GBLCTL_NOHOLD_DISABLE, EMIFA_GBLCTL_EK1HZ_CLK, //eclkout1 continue output during hold EMIFA_GBLCTL_EK1EN_ENABLE, //eclkout1 enable output EMIFA_GBLCTL_CLK4EN_ENABLE, //clkout4 output enable EMIFA_GBLCTL_CLK6EN_ENABLE //clkout6 output enable ), (2)CECTL0-3寄存器配置部分 0xffffffd3, //64BIT SDRAM 0xffffffe3, 0x22a28a22, 0x22a28a22, (3)SDCTL寄存器配置部分

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

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硬件课程实验报告 学院:电子工程学院 班级: 2011211203 学号: 2011210876 姓名:孙月鹏 班内序号: 04

实验一:常规指令实验 一、 实验目的 1.熟悉DSP 开发系统的连接 2.了解DSP 开发系统的组成和结构和应用系统构成 3.熟悉常用C54X 系列指令的用法(程序寻址,寄存器,I/O 口,定时器,中断控制)。 二、 实验设备 计算机,CCS 2.0版软件,DSP 仿真器,实验箱。 三、 实验操作方法 1、系统连接 进行DSP 实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示: 在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小 灯”应点亮,否则DSP 开发系统与计算机连接有问题。 2、运行CCS 程序 先实验箱上电,然后启动CCS ,此时仿真器上的“绿色小灯”应点亮,并且CCS 正常启动,表明系统连接正常;否则仿真器的连接、JTAG 接口或CCS 相关设置存在问题,掉电,检查仿真器的连接、JTAG 接口连接,或检查CCS 相关设置是否正确。 四、代码注释与实验结果 1)简单指令程序运行实验 ①代码及注释 .mmregs ;定义储存器映像寄存器 .global _main ;全局符号 _main: stm #3000h,sp ;3000h 放入堆栈指针寄存器的首地址中 ssbx xf ;将对外接口XF 置1,此时灯亮 call delay ;调用延时子程序,延时 rsbx xf ;将XF 置0, call delay ;调用延时子程序, b _main ;程序跳转到"_MAIN" nop ;无任何操作 nop ;延时子程序 delay: PCI/USB/EPP 接口 JTAG 接口 计 算 机 仿 真 器 用户 开发板

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实验三剖析

信号与信息综合处理实验报告 学院:信息与通信工程学院班级:2013211124 姓名:王丹頔 学号:2013210659

实验三FIR滤波器实现 1.实验目的 进一步熟悉CCS v5的开发环境,掌握调试的要素,并理解FIR的过程。 2.实验原理 2.1AIC23 (1)AIC23相关介绍 图1 AIC23结构图 图2 AIC23编码器控制寄存器

图3 AIC23寄存器集合 图4 采样速率设置 图5 采样率可配参数 (2)void DSK6416_init() -设置所有的CPLD寄存器到上电状态,初始化内部BSL数据结构; -在使用任何BSL函数之前都必须调用。 (3)DSK6416_AIC23_openCodec函数 -DSK6416_AIC23_CodecHandle DSK6416_AIC23_openCodec (int id, DSK6416_ AIC23_Config *Config); -id:指定使用哪个编码器,DSK6416上为id=0; -Config:指向包含编码器寄存器值的结构,以该结构中的值初始化寄存器; -调用成功:返回编码器句柄;失败:返回INV常数(-1)。 (4)DSK6416_AIC23_write函数 -Int16 DSK6416_AIC23_write(DSK6416_AIC23_CodecHandle hCodec, Int32 val); -hCodec, Val:编码器句柄,写入编码器的值;

- 返回TRUE :数据成功写入; - 返回FALSE :数据端口忙。 (5) DSK6416_AIC23_closeCodec 函数 - DSK6416_AIC23_closeCodec(DSK6416_AIC23_CodecHandle hCodec); - 关闭编码器。 2.2 FIR 滤波器实现 (1) FIR 滤波器介绍 滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使其能够从信号中提取有用的信号,抑制并衰减不需要的信号。 FIR 滤波器滤波过程: 1 0()()()()()N m y n x n h n h m x n m -==*=?-∑,0n 3 如果输入信号长度为M ,滤波器系数长度为N ,线性卷积后输出数据长度为L=M+N-1。即为: 1 0()()()N k y n h k x n k -==-∑,0,1,2, ,n L = 2.3 DSP 程序优化 (1) 优化原理 DSP 的C6000系列CPU 中的8个功能单元可以并行操作,并且其中两个功能 单元为硬件乘法运算单元,大大地提高了乘法速度; DSP 采用了具有独立程序总线和数据总线的哈佛总线结构,仅片内程序总线宽 度就可达到256 位,即每周期可并行执行8 条32位指令; 片内两套数据总线的宽度分别为32 位; 除了多功能单元外,流水技术是提高DSP 程序执行效率的另一主要手段。 (2) 优化入门 通过选定C 编译器的选项来实现优化。在这个阶段可实现程序级优化,从而部 分消除多余代码; 针对C 源程序,进行优化。在运算中,循环经常占用大量的时钟周期, 对循环 的优化成为代码优化的重点; 对重点段直接线性汇编。 (3) 编译选项: mv6400:使所产生的代码能利用C64x 增加的硬件资源和指令集。此选项编译 器默认执行; on :其中n 可以取值为0、1、2和3,编译器将根据n 的不同,执行不同等级 的优化; k :生成编译器输出的.asm 汇编文件; mw :生成详细的软件流水报告。使用-mw 后,系统会默认使用-k 选项,生成.asm 汇编文件并且在其中加入软件流水报告。

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