DSP应用课程设计.docx

上传人:b****6 文档编号:3730258 上传时间:2022-11-25 格式:DOCX 页数:23 大小:138.32KB
下载 相关 举报
DSP应用课程设计.docx_第1页
第1页 / 共23页
DSP应用课程设计.docx_第2页
第2页 / 共23页
DSP应用课程设计.docx_第3页
第3页 / 共23页
DSP应用课程设计.docx_第4页
第4页 / 共23页
DSP应用课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

DSP应用课程设计.docx

《DSP应用课程设计.docx》由会员分享,可在线阅读,更多相关《DSP应用课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

DSP应用课程设计.docx

DSP应用课程设计

DSP应用课程设计(论文)

设计(论文)题目DSP技术与应用

学院名称信息科学与技术学院

专业名称通信工程

学生姓名杜立华

学生学号201313070112

任课教师陈金鹰

设计(论文)成绩

 

教务处制

2015年12月9日

 

第一节信号源设计

Z变换与反Z变换运算的实现方法

信号发生器本身是没有输入信号的,其输出是按一定的周期,根据输出波形的函数式计算输出信号的数值,因而能连续的,周期性的产生输出信号。

其基本思路是:

首先,对欲产生的输出波形的函数表达式作Z变换,然后再作反Z变换,求出对应的差分方程的递推公式。

第二步,编写计算递推公式的初始化程序。

第三步,编写中断后的递推程序,利用中断程序周期性的计算新的输出值,从而获得欲求的基于DSP的信号源。

(1)编写计算递推公式的初始化程序

.title"cos(2PI*20000)wave"

.mmregs

.global_c_int00,_tint,vector

INIT_A.set79BAh

INIT_B.set0c000h

INIT_C.set0c323h

.bssy1,1

.bssy2,1

.bssAA,1

.bssBB,1

.bssCC,1

.text

_c_int00:

LD#0,DP

SSBXINTM

LD#vector,A

AND#0FF80h,A

ANDM#007Fh,PMST

ORPMST,A

STLMA,PMST

STM#10h,TCR

STM#2499,PRD

STM#20h,TCR

LDMIMR,A

OR#08h,A

STLMA,IMR

LD#AA,DP

SSBXFRCT

ST#INIT_A,AA

ST#INIT_B,BB

ST#INIT_C,CC

LDAA,A

ADDCC,A

STLA,y2

LDAA,T

MPYy2,A

ADDBB,A

STHA,y1

STM#0h,TCR

RSBXINTM

again:

NOP

Bagain

_tint:

LDBB,T

MPYy2,A

LTDy1

MACAA,A

STHA,1,y1

NOP

int1_end:

NOP

RETE

.end

 

(2)编写中断向量程序

.mmregs

.ref_ret

.ref_c_int00

.ref_tint

.globalvector

.sect".int_table"

;--------------------------------------------------------------------

;interruptevectortable!

;--------------------------------------------------------------------

vector:

rsB_c_int00

NOP

NOP

nmiB__ret

NOP

NOP

sint17B__ret

NOP

NOP

sint18B__ret

NOP

NOP

sint19B__ret

NOP

NOP

sint20B__ret

.word0,0

sint21B__ret

.word0,0

sint22.word01000h

.word0,0,0

sint23.word0ff80h

.word0,0,0

sint24.word01000h

.word0,0,0

sint25.word0ff80h

.word0,0,0

sint26.word01000h

.word0,0,0

sint27.word0ff80h

.word0,0,0

sint28.word01000h

.word0,0,0

sint29.word0ff80h

.word0,0,0

sint30.word01000h

.word0,0,0

int0B__ret

NOP

NOP

int1B__ret

NOP

NOP

int2B__ret

NOP

NOP

tintB_tint

NOP

NOP

brint0B__ret

NOP

NOP

bxint0B__ret

NOP

NOP

trintB__ret

NOP

NOP

dmac1B__ret

NOP

NOP

int3B__ret

NOP

NOP

hpintB__ret

NOP

NOP

q26.word0ff80h

.word0,0,0

q27.word01000h

.word0,0,0

dmac4B__ret

NOP

NOP

dmac5B__ret

NOP

NOP

q30.word0ff80h

.word0,0,0

q31.word01000h

.word0,0,0

;--------------------------------------------------------------------------

;endofinterruptevectortable!

;-------------------------------------------------------------------------

__retrete

 

(3)编写命令文件程序

MEMORY

{

PAGE0:

EXT_P:

ORIGIN=2000h,LENGTH=0200h

PAGE1:

INT_D:

ORIGIN=0060h,LENGTH=0080h

}

SECTIONS{

.text:

>EXT_PEXT_PPAGE0

.int_table:

>(EXT_PALIGN(128)PAGE(0))

.bss:

>INT_DPAGE1

}

运行仿真,数据存储器空间使用情况和仿真输出波形如下,这正是设计所需要的余弦信号发生器的输出波形。

第二节线性时不变系统设计

一线性时不变系统的运算法则

当把图所示的信号系统h(t)看作普通传输函数时,只要该传输函数为一个线性时不变系统,就可用DSP硬件来实现h(t)。

设计时需要先将连续时间系统转变为离散时间系统,即将时间变量t用序列n来替换。

此时输出y(n)与输入信号x(n)和传输函数h(n)之间为卷积关系。

在频域,输出信号Y(z)为输入信号X(z)与系统的传输函数H(z)之积。

(1)编写汇编语言程序

.title"convoluton.asm";计算“y(n)=h(n)*x(n)”

.mmregs;定义存储器映像寄存器

.def_c_int00;定义主程序起始位置_c_int00

.bssindata,1;为输入数据indata保留空间

.bssy,1;为输入数据y保留空间

xn.usect"xn",4;自定义4个单元空间的数据段xn

hn.usect"hn",4;自定义4个单元空间的数据段hn

.data;

table:

.word4,3,2,1;定义系统传输函数值h0=4,h1=3,h2=2,h3=1

.text

_c_int00:

STM#hn,AR1;AR1指向hn

RPT#3;从程序存储器table开始的地址传送

MVPDtable,*AR1+;4个系数至数据空间hn开始的数据段

STM#xn+3,AR3;AR3指向x(n-3)

STM#hn+3,AR4;AR4指向h(n-3)

STM#4,BK;设置循环缓冲区的长度BK=4

STM#-1,AR0;设置下次运算的地址修正量AR0=-1

LD#indata,DP;设置数据存储器页指针的起始页位置

hn3:

RPTZA,#3;A清0,重复执行下条指令4次

MAC*AR3+0%,*AR4+0%,A;对一个输入进行4次乘法累加和的卷积运算

STLA,@y;保存结果的低字节到y(n)

BDhn3;执行下条指令后循环

LDindata,B;输入新的数据indata到B

STLB,*AR3+0%;将B中的数据存到*AR3所指的最老单元

.end

 

(2)编写命令文件程序

pt.obj

-opi.out

-mpi.map

MEMORY

{

PAGE0:

EPROM:

org=0080h,len=0080h

PAGE1:

SPRAM:

org=0060h,len=0010h

DPRAM:

org=0080h,len=0020h

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

xn:

align(8){}>DPRAMPAGE1

hn:

align(8){}>DPRAMPAGE1

}

运行软仿真时,在LDindata,B行设置断点和探针,将输入数据x(n)从convolution。

Dat文件输入到indata单元中。

输出波形如下

第三节信号检测系统设计

当雷达发送一串脉冲后,就开始接收被检测目标反射回来的信号,由于接收信号通常很弱,常被淹没在噪声当中。

为了从噪声中提取回波信号,可利用接收的回波信号与发射信号是同一电波的特点进行相关运算,只有自相关系数大的信号才可被认作为是发射信号的回波,而其它干扰信号的互相关系数会很小,将其忽略。

(1)编写C语言程序

#include

externintRxy1[8];

voidcompxy();

voidmain()

{

inti;

compxy();

for(i=1;i<=3;i++){};

}

voidcompxy()

{

if(Rxy1[0]==Rxy1[6]&&Rxy1[1]

==Rxy1[5]&&Rxy1[2]==Rxy1[4])

if(Rxy1[3]>Rxy1[2]&&Rxy1[2]>Rxy1[1]

&&Rxy1[1]>Rxy1[0])

Rxy1[7]=Rxy1[3];

else

Rxy1[7]=0;

}

 

(2)编写汇编语言程序

.title"correlation.asm"

.mmregs

.def_c_int00

.ref_Rxy1

.ref_compxy

.bssindata,1

.bss_Rxy1,8

xn.usect"xn",4

yn.usect"yn",4

.data

table:

.word4,3,2,1

.text

_c_int00:

STM#xn,AR1

RPT#3

MVPDtable,*AR1+

STM#xn,AR3

STM#yn,AR4

STM#4,BK

STM#1,AR0

LD#indata,DP

rn3:

RPTZA,#3

MAC*AR3+0%,*AR4+0%,A

STLA,_Rxy1

CALL_compxy

DELAY@(_Rxy1+5)

DELAY@(_Rxy1+4)

DELAY@(_Rxy1+3)

DELAY@(_Rxy1+2)

DELAY@(_Rxy1+1)

DELAY@_Rxy1

BDrn3

LDindata,B;设置断点和探针

STLB,*AR4+0%

.end

 

(3)编写命令文件程序

pu.obj

-opu.out

-mpu.map

MEMORY

{

PAGE0:

EPROM:

org=0080h,len=0080h

PAGE1:

SPRAM:

org=0060h,len=0020h

DARAM:

org=0080h,len=0020h

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

xn:

align(8){}>DARAMPAGE1

yn:

align(8){}>DARAMPAGE1

}

现计算{x1}与{x2}=1011={{x1},{x2},{x1},{x1}}={1110010101010111100101110010}相关时,相邻码元间的干扰情况。

(1)编写汇编语言程序

.title"m_code_check.asm"

.mmregs

.def_c_int00

.def_Rxy1

.ref_xy_search_peak

.ref_Rxyout

.bssindata,1

.bss_Rxy1,13

xn.usect"xn",7

yn.usect"yn",7

.data

table:

.word1,1,1,0,0,0,1,0

.text

_c_int00:

STM#xn,AR1

RPT#6

MVPDtable,*AR1+

STL#xn,AR3

STM#yn,AR4

STM#4,BK

STM#1,AR0

LD#indata,DP

rn3:

RPTZA,#6

MAC*AR3+0%,*AR4+0%,A

STLA,_Rxy1

CALL__xy_search_peak

DELAY@(_Rxy1+11)

DELAY@(_Rxy1+10)

DELAY@(_Rxy1+9)

DELAY@(_Rxy1+8)

DELAY@(_Rxy1+7)

DELAY@(_Rxy1+6)

DELAY@(_Rxy1+5)

DELAY@(_Rxy1+4)

DELAY@(_Rxy1+3)

DELAY@(_Rxy1+2)

DELAY@(_Rxy1+1)

DELAY@_Rxy1

BDrn3

LDindata,B;设置断点和探针

STLB,*AR4+0%

.end

 

(2)编写C程序,完成峰值数据的选取。

#include

externintRxy1[13];

externintRxyout;

voidxy_search_peak();

voidmain{

intI;

xy_search_peak();

for(i=0;i<13;i++){}

}

voidxy_search_peak()

{

If(Rxy1[7]==4)

Rxyout=Rxy1[7];

else

Rxyout=0;

}

 

(3)编写存储器分配的命令文件程序

pu.obj

-opu.out

-mpu.map

MEMORY

{

PAGE0:

EPROM:

org=0080h,len=0080h

PAGE1:

SPRAM:

org=0060h,len=0020h

DARAM:

org=0080h,len=0020h

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

.bss:

>SPRAMPAGE1

xn:

align(8){}>DARAMPAGE1

yn:

align(8){}>DARAMPAGE1

}

运行上面的程序得到如下输出波形

第四节信号调制功能设计

二信号调制的设计方法

1、正弦信号的获取

这里采用查表法所获得的sin(k)数据来代替x(n)的高低电平,以此实现数字信号向模拟信号的转换。

设计利用MATLAB工具可方便地获取正弦信号数据。

设计一个产生半波正弦信号的MATLAB程序如下

t=0:

10:

180

y=sin(t*pi/180)

plot(t,y);

所得数据如下:

t=0102030405060708090

100110120130140150160170180

y=00.17360.34200.50000.64280.76600.86600.93970.98481.00000.98480.93970.86600.76600.64280.50000.34200.17360.0000

所得半波正弦信号如图6-12所示。

如果对sin(k)精度要求较高,可多取一些计算点。

(1)编写汇编语言程序

根据正弦波的对称性,要得到0~180的数据输出,只需要利用输入0~90的数据即可,90~180的数据可通过对折0~90的图形得到。

同样,180~360的数据可通过对折0~180的图形获得。

这样只需要输入0~90的10个数据即可。

其程序如下:

.title"half_pulse_modulate.asm"

.mmregs

.def_c_int00

.bssxn,1

.bssyn,1

sin.usect"sin",20

.data

table:

.word0

.word1736*32768/10000

.word3420*32768/10000

.word5000*32768/10000

.word6428*32768/10000

.word7660*32768/10000

.word8660*32768/10000

.word9397*32768/10000

.word9848*32768/10000

.word7FFFh

.text

_c_int00:

LD#xn,DP

STMsin,AR1

SSBXSXM

RPT#10

MVPDtable,*AR1+

STM#sin,AR1

STM#sin+10,AR3

STM#9,AR2

cmplt:

LD*AR1+,A

CMPLA

STLA,*AR3+

BANZcmplt,*AR2-

bgn:

STM#9,AR2

LDxn,A

SUB#1,A

BCsend_0,ANEQ

send_1:

STM#sin,AR1

Bsend_a

send_0:

STM#sin+10,AR1

send_a:

MVDK*AR1+,yn

BANZsend_a,*AR2-

STM#9,AR2

LTD*AR1-

send_b:

MVDK*AR1-,yn;设置断点和探针

BANZsend_b,*AR2-

Bbgn

.end

(2)编写命令文件程序

xinhao.obj

-opi.out

-mpi.map

MEMORY

{

PAGE0:

EPROM:

org=0080h,len=0180h

PAGE1:

SPRAM:

org=0060h,len=0020h

DARAM:

org=0080h,len=0100h

}

SECTIONS

{

.text:

>EPROMPAGE0

.data:

>EPROMPAGE0

xn:

>SPRAMPAGE1

yn:

>SPRAMPAGE1

sin:

>DARAMPAGE1

}

运行仿真,当循环输入信号x(n)={0,0,1,1,0,1}时运作程序,仿真输出波形y(n)=x(n)sin(k)和数据存储器使用情况如下。

根据这里所采用的y(n)=x(n)sin(k

)调制方式,对应的调解方法可利用第三节所述方法,以正,负半波sin(k)为模板,对输入序列y(n)做相关运算,与正半波信号自相关输出“1”,与负半波信号自相关输出“0”,具体设计不再重复。

第5节模拟电路功能设计

数字系统的DSP程序设计方法

由图6-14的电路结构所得到的数字系统结构有两种描述方式。

一种是按式(6-24)所表达的有理分式,用DSP硬件进行IIR滤波器设计所得到的是系统的传输函数。

另一种是按式(6-25)所表达的线性多项式,对该表达式求反Z变换得到差分方程,并利用移位公式Z[x(n-m)]←→

,可得y(k)=a1y[k-1]+b0x[k]+b1x[k-1](6-28)

当对y(k)施加冲激信号时,便得到递推公式

y(0)=b0

y

(1)=a1b0+b1

y(n)=a1y[n-1]=b0

(a1+1)(6-29)

这正是第一节所介绍的利用DSP设计信号发生器的方法,所不同的是,第一节所求的输出信号的波形是某已知函数,而这里所求的输出信号波形是根据某一具体电路求得,具有更广泛的意义。

即只要所求模拟电路信号发生器的输出波形能用式(6-29)的线性多项式表达,就可用数字方式采用DSP来实现功能。

1.用鉴频器电路作为信号发生器

用鉴频器电路作为信号发生器时,网络只加一个冲激信号,便可从输出端获得相关的响应信号。

由于本例不同于本章第一节的余弦信号的传输函数,其传输函数H(z)为一阶函数,不构成振荡条件,故输出只能是一个暂态响应。

(4)编写汇编语言程序

.title"discriminator_oscillator.asm"

.mmregs

.global_c_int00,_tint,vector

.bssy1,1

.bssAA,1

.text

_c_int00:

LD#0,DP

SSBXINTM

LD#vector,A

AND#0FF80h,A

ANDM#007Fh,PMST

ORPMST,A

STLMA,PMST

STM#10h,TCR

STM#2499,PRD

STM#20h,TCR

LDMIMR,A

OR#08h,A

STLMA,IMR

LD#AA,DP

SSBXFRCT

ST#7FAEh,AA

LD#0xF000,A

LDAA,T

MAC#0xF000,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1