FSK调制与解调的TMS320C54X实现Word文档格式.docx

上传人:b****2 文档编号:5785737 上传时间:2023-05-05 格式:DOCX 页数:28 大小:453.47KB
下载 相关 举报
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第1页
第1页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第2页
第2页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第3页
第3页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第4页
第4页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第5页
第5页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第6页
第6页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第7页
第7页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第8页
第8页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第9页
第9页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第10页
第10页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第11页
第11页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第12页
第12页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第13页
第13页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第14页
第14页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第15页
第15页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第16页
第16页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第17页
第17页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第18页
第18页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第19页
第19页 / 共28页
FSK调制与解调的TMS320C54X实现Word文档格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

FSK调制与解调的TMS320C54X实现Word文档格式.docx

《FSK调制与解调的TMS320C54X实现Word文档格式.docx》由会员分享,可在线阅读,更多相关《FSK调制与解调的TMS320C54X实现Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。

FSK调制与解调的TMS320C54X实现Word文档格式.docx

(1)哈佛结构;

(2)流水线操作;

(3)专用的硬件乘法器;

(4)特殊的DSP指令;

(5)快速的指令周期。

2.2、TMS320C54X特点

TMS320C54X是为实现低功耗、高性能而专门设计的定点DSP芯片,其主要应用是无线通信系统等。

该芯片的内部结构与TMS320C5X不同,因而指令系统与TMS320C5X和TMS320C2X等是互不兼容的。

TMS320C54X的主要特点包括:

(1)运算速度快。

指令周期为25/20/15/12.5/10ns,运算能力为40/50/66/80/100MIPS;

(2)优化的CPU结构。

内部有1个40位的算术逻辑单元,2个40位的累加器,2个40位加法器,1个17×

17的乘法器和1个40位的桶形移位器。

有4条内部总线和2个地址产生器。

此外,内部还集成了维特比加速器,用于提高维特比编译码的速度。

先进的DSP结构可高效地实现无线通信系统中的各种功能,如用TMS320C54X实现全速率的GSM需12.7MIPS,实现半速率GSM需26.2MIPS,而实现全速率GSM语音编码器仅需2.3MIPS,实现IS-54/136VSELP语音编码仅需12.8MIPS;

(3)低功耗方式。

TMS320C54X可以在3.3V或2.7V电压下工作,三个低功耗方式(IDLE1、IDLE2和IDLE3)可以节省DSP的功耗,TMS320C54X特别适合于无线移动设备。

用TMS320C54X实现IS54/136VSELP语音编码仅需31.1mW,实现GSM语音编码器仅需5.6mW;

(4)智能外设。

除了标准的串行口和时分复用(TDM)串行口外,TMS320C54X还提供了自动缓冲串行口BSP(auto-BufferedSerialPort)和与外部处理器通信的HPI(HostPortInterface)接口。

BSP可提供2K字数据缓冲的读写能力,从而降低处理器的额外开销,指令周期为20ns时,BSP的最大数据吞吐量为50Mbit/s,即使在IDLE方式下,BSP也可以全速工作。

HPI可以与外部标准的微处理器直接接口。

表2.4是TMS320C54X系列部分DSP芯片比较表。

TMS320C54X

指令周期(ns)

工作电压(V)

片内RAM(字)

片内ROM(字)

串行口

BSP

HPI

C541

20/25

5/3.3/3.0

5K

28K

2个标准口

C542

10K

2K

1个TDM口

1

C543

3.3/3.0

10K

C545

6K

48K

1个标准口

C546

C548

15/20/25

32K

2

LC/VC549

10/12.5/15

3.3/2.5

16K

VC5402

10

3.3/1.8

4K

表1 

TMS320C54X的资源配置

三、FSK调制与解调原理

3.1、FSK概述

FSK是移频键控的简称,故二进制移频键控常简写为2FSK。

数字调频又可称作移频键控(FSK),它是利用载频频率变化来传递数字信息。

这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在中低速数据传输系统中得到了较为广泛的应用。

在实际应用中,应用最为泛的是2FSK,故FSK常泛指为2FSK。

2FSK信号是0符号对应于载频为W1,而1符号对应于载频W2,而且两者之间的改变是瞬间完成的。

容易想到,2FSK信号可利用一个矩形脉冲序列对一个载波进行调频而获得。

这正是频率键控通信方式早期采用的实现方法,也是利用模拟调频法实现数字调频的方法。

2FSK信号的另一产生方法便是采用键控法,即用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通。

3.2、FSK调制原理

2FSK信号是用载波频率的变化来表征被传信息的状态的,被调载波的频率随二进制序列0、1状态而变化,即载频为

时代表传0,载频为

时代表传1。

显然,2FSK信号完全可以看成两个分别以

为载频、以

为被传二进制序列的两种2ASK信号的合成。

2FSK信号的典型时域波形如图1所示,其一般时域数学表达式为:

图12FSK信号的典型时域波形

式中,

的反码,即

因为2FSK属于频率调制,通常可定义其移频键控指数为

显然,h与模拟调频信号的调频指数的性质是一样的,其大小对已调波带宽有很大影响。

2FSK信号与2ASK信号的相似之处是含有载频离散谱分量,也就是说,二者均可以采用非相干方式进行解调。

可以看出,当h<

1时,2FSK信号的功率谱与2ASK的极为相似,呈单峰状;

当h>

>

1时,2FSK信号功率谱呈双峰状,此时的信号带宽近似为:

(Hz)

2FSK信号的产生通常有两种方式:

(1)频率选择法;

(2)载波调频法。

由于频率选择法产生的2FSK信号为两个彼此独立的载波振荡器输出信号之和,在二进制码元状态转换(

)时刻,2FSK信号的相位通常是不连续的,这会不利于已调信号功率谱旁瓣分量的收敛。

载波调频法是在一个直接调频器中产生2FSK信号,这时的已调信号出自同一个振荡器,信号相位在载频变化时始终是连续的,这将有利于已调信号功率谱旁瓣分量的收敛,使信号功率更集中于信号带宽内。

在这里,我们采用的是频率选择法,其调制原理框图如图2所示:

图22FSK调制原理框图

从“FSK基带输入”输入的基带信号分成两路,一路经过电压比较器1(LM339)得到同基带信号极性相同的高/低电平,另一路经过电压比较器2(LM339)得到同基带信号极性相反的高/低电平,分别接至模拟开关电路1、2(74HC4066),因此当基带信号为“1”时,模拟开关1打开,模拟开关2关闭,输出第一路载波(FSK载波输入1);

当基带信号为“0”时,模拟开关1关闭,模拟开关2打开,此时输出第二路载波(FSK载波输入2),再通过叠加就得到FSK调制信号输出。

下面为2FSK硬件实现框图:

图32FSK硬件实现框图

由图3可知,从“FSK-NRZ”输入的基带信号分成两路,1路经U5(LM339)反相后接至U4B(4066)的控制端,另1路直接接至U4A(4066)的控制端。

从“FSK载波A”和“FSK载波B”输入的载波信号分别接至U4A和U4B的输入端。

当基带信号为“1”时,模拟开关U4A打开,U4B关闭,输出第一路载波;

当基带信号为“0”时,U405A关闭,U405B打开,此时输出第二路载波,再通过相加器就可以得到FSK调制信号。

3.3、FSK解调原理

FSK有多种方法解调,如包络检波法、相干解调法、鉴频法、过零检测法及差分检波法等,相应的接收系统的框图如图10-3所示。

(a)非相干方式

(b)相干方式

(c)过零检测法

图42FSK解调原理框图

这里采用的是过零检测法对FSK调制信号进行解调。

2FSK信号的过零点数随不同载频而异,故检出过零点数就可以得到关于频率的差异,这就是过零检测法的基本思想。

用过零检测法对FSK信号进行解调的原理框图如图4(c)所示。

其中整形1和整形2的功能类似于比较器,可在其输入端将输入信号叠加在2.5V上。

2FSK调制信号从“FSKIN”输入。

U6(LM339)的判决电压设置在2.5V,可把输入信号进行硬限幅处理。

这样,整形1将FSK信号变为TTL电平;

整形2和抽样电路共同构成抽样判决器,其判决电压可通过电位器进行调节。

单稳1(74LS123)和单稳2(74LS123)分别被设置为上升沿触发和下降沿触发,它们与相加器U7(74LS32)一起共同对TTL电平的FSK信号进行微分、整流处理。

再通过低通滤波器滤除高次谐波,再依次通过整形2和抽样电路共同构成抽样判决器,便能得到FSK解调信号。

其判决电压可通过标号为“2FSK判决电压调节”的电位器进行调节,抽样判决用的时钟信号就是FSK基带信号的位同步信号。

抽样判决器的时钟信号就是FSK基带信号的位同步信号,该信号应从“FSK-BS”输入,可以从信号源直接引入,也可以从同步信号恢复模块引入。

3.4、本实验采用的方法

本实验是纯数字的调制方法:

先把两种频率的波形数据存储起来,当调制数据为1时选择W1的波形输出;

当调制数据为0时,选择频率为W2(事先已设置成W1=2*W2)的波形输出。

显然这与上述的键控法是一致的。

当然可以采用其它的调制方法,但此方法最简单、运算速度也最快。

本实验采用的是过零检测法进行解调,FSK信号通过整形1(LM339)将信号高电平限幅在5V,这样使FSK信号变为CMOS电平即矩形波序列,然后分两路分别输入单稳1、2(74HC123)及相加器(74HC32),就得到了代表FSK信号过零点的脉冲序列,单稳1和单稳2分别被设置为上升沿触发和下降沿触发,它们与相加器(74HC32)一起共同对TTL电平的FSK信号进行微分、整流处理。

解调程序是基于上述过零点检测法的思想而设计的:

对输入的FSK调制信号(F1的频率是F0的两倍)的样点进行循环检测,若检测到幅值大于amplitude时,再检测下一个间隔为distance(1/F1<

distance<

1/F0)的样点的幅值;

若此值大于amplitude,说明输入信号频率为F1,否则为F0;

示意图如下:

图5零点检测法解调原理

四、FSK调制与解调的DSP软件实现

4.1、FSK调制的数字振荡器设计

频移键控FSK调制是用数字基带信号来控制高频载波频率的变化,调制后的载波信号频率代表了要传送的数字信号。

二进制FSK(2FSK)是用2个高频载波f1和f2来表示2个数字信号“1”或“0”。

2FSK调制的常用方法是将f1和f2的正弦值预先计算出来,制成一个表,DSP工作时仅做查表运算即可实现。

在这里采用数字振荡器方法,用迭代方法产生正弦信号。

其原理如下:

一个传递函数为正弦序列sinkωT的Z变换为:

其中,A=2cosωT,B=-1,C=sinωT。

设初始条件为0,求出上式的反Z变换为:

这是一个二阶差分方程,对其求单位冲击响应便可得到正弦信号sinkXT。

利用单位冲击函数x[k-1]的性质,仅当

k=1时,x[k-1]=1,得到下列递推式:

k=0时 y[0]=Ay[-1]+By[-2]+0=0

k=1时 y[1]=Ay[0]+By[-1]+C=C

k=2时 y[2]=Ay[1]+By[0]+0=Ay[1]

k=3时 y[3]=Ay[2]+By[1]

……

k=n时 y[n]=Ay[n-1]+By[n-2]

在k>

2以后,y[k]能用y[k-1]和y[k-2]计算出来,这样通过迭代就能得到一系列的y[k]值。

所设计的数字振荡器产生16kHz和32kHz的正弦信号,分别代表数据0和1,设置采样频率为96kHz,通过确定上面递归差分方程系数就可求得16kHz和32kHz正弦信号的系数(下标为0的系数是16kHz正弦信号的系数,下标为1的系数是32kHz正弦信号的系数)。

A0=2cosω0T=2cos(2π×

16000/96000)=1

B0=-1

C0=sinω0T=sin(2π×

16000/96000)=0.86602540

A1=2cosω1T=2cos(2π×

32000/96000)=-1

B1=-1

C1=sinω1T=sin(2π×

32000ˆ96000)=0.86602540

图6数字振荡器仿真波形图

DSP程序在初始化时先分别计算出产生16kHz与32kHz信号所需要的y[1]和y[2]值,然后开放定时器中断,以后每次进入定时器中断服务程序时,利用已计算出的y[1]和y[2]值重新计算出新的y[0]值,对其求单位冲击响应就可得到16kHz和32kHz的正弦信号。

4.2、FSK调制的定时与中断设计

为了保证96kHz的采样频率,需要用到TMS320C5420的中断与定时器。

定时器主要由3个寄存器组成,分别是定时器寄存器TIM,每计数一次自动减1;

定时器周期寄存器PRD,当TIM减为0后,CPU自动将PRD的值装入TIM;

定时器控制寄存器TCR。

定时器控制寄存器TCR各个比特位的具体定义如表1所示。

表2 定时器控制寄存器TCR的定义

TMS320C54X的定时器工作原理是:

当CLKOUT信号时钟沿到来时,触发PSC。

PSC是一个减1计数器,CLKOUT信号时钟沿使PSC减1,直到PSC为0,然后用TDDR重新装入PSC,同时将TIM减1,直到TIM减为0,这时CPU发出TINT中断,同时在TOUT引脚输出一个脉冲信号,脉冲宽度与CLKOUT一致,然后用PRD重新装入,重复下去直到系统或定时器复位。

当系统复位或定时器单独复位时,TIM和PRD都置成最大值FFFH,TDDR位清0,定时器控制寄存器的停止状态位TSS被清零,定时器启动,并将定时器扩展周期TDDR中的值加载到定时器预置计数器PSC中,而且将定时器周期寄存器PRD中的值重新加载到定时器寄存器TIM中。

定时器中断的频率由下式决定:

其中,tC表示CLKOUT的周期,即TINT=95kHz。

由上式可确定定时时间常数TDDR=0,PRD=333。

TMS320C54X的中断是通过中断屏蔽寄存器IMR来实现的。

IMR是一个存储器映射寄存器,用于控制中断源的屏蔽和开放。

当ST1寄存器中的INTM位为0时,全局中断允许。

IMR中的某一位为1时,该中断开放。

以下是IMR寄存器各个比特位的定义:

其中,HPINT表示HPI接口中断,INT3~INT0为外部引脚产生的中断;

TXINT和TRINT为TDM串口的发送和接收中断;

BXINT和BRINT为BSP串口的发送和接收中断;

TINT为定时器中断。

图7为2FSK调制主程序流程图,图8为中断程序流程图。

按图7和图8的流程编制程序即可实现2FSK调制功能。

图7FSK调制主程序流程图图8 中断程序流程图

4.3、FSK调制的软件实现步骤

4.3.1、添加源文件

运行CCS软件,新建一个项目,新建一个源文件,在项目中添加源文件:

在新建立了一个源文件以后,要想使用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。

添加方法是在工程管理器中右键单击FSK.pjt,在弹出的菜单中选择AddFiles,然后将刚才建立的FSK.asm文件添加到该项目中去。

图9建立并添加源文件

4.3.2、编写源程序

在工程管理器中双击FSK.asm,将出现文本编辑窗口,在该文本编辑窗口中输入如下内容:

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

*FSK调制程序——F0为64个点,一个周期波形;

F1为64个点,两个周期波形*

.title"

FSK.asm"

.mmregs

.copy"

FSKCOEFF.inc"

.defstart

indata.usect"

buffer"

1

outdata.usect"

32

STACK.usect"

STACK"

10

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

.text

start:

LD#indata,DP

STM#indata,AR1

input:

nop

STM#outdata,AR4

LD*AR1,A;

读入数据

BCA1,AGT;

ifA>

0,thengotoA1

STM#F0,AR3;

A=0

BOUT

A1:

STM#F1,AR3;

A=1

BOUT

OUT:

RPT#63

MVDD*AR3+,*AR4+

nop

Binput

.end

4.3.3、编写链接配置文件

vectors.obj

FSK.obj

-oFSK.out

-mFSK.map

-estart

MEMORY

{

PAGE0:

EPROM:

org=0090H,len=0F70H

VECS:

org=0080H,len=0010H

PAGE1:

DARAM:

org=2000H,len=2000H

}

SECTIONS

.text:

EPROMPAGE0

F0:

F1:

.bss:

DARAMPAGE1

STACK:

buffer:

.vectors:

VECSPAGE0

}

4.3.4、编写中断向量表文件

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

*Resetvectors*

.title"

vectors.asm"

.refstart

.sect"

.vectors"

Bstart

4.3.5、建立波形文件

FSKCOEFF.inc,:

F0:

.word0,3211,6392,9512,12539,15446,18204,20787

.word23170,25330,27245,28898,30273,31357,32138,32610

.word32767,32610,32138,31357,30273,28898,27245,25330

.word23170,20787,18204,15446,12539,9512,6392,3211

.word0,-3211,-6392,-9512,-12539,-15446,-18204,-20787

.word-23170,-25330,-27245,-28898,-30273,-31357,-32138,-32610

.word-32768,-32610,-32138,-31357,-30273,-28898,-27245,-25330

.word-23170,-20787,-18204,-15446,-12539,-9512,-6392,-3211

F1:

.word0,6352,12464,18102,23054,27131,30178,32081

.word32766,32208,30428,27493,23515,18645,13067,6994

.word655,-5708,-11855,-17552,-22584,-26758,-29917,-31941

.word-32753,-32322,-30665,-27844,-23967,-19180,-13665,-7632

4.3.6、编译和链接,并装载可执行文件

把FSK.asm、vectors.asm、FSK.cmd、FSKCOEFF.inc依次添加到项目后,点击Project-CompileFile,在项目编译成功之后点击Project-Build选项对该项目进行链接,生成*.out文件。

要让程序代码在DSP内部运行必需将生成的*.OUT文件装载到DSP内部,装载方法是选择生成的FSK.out文件就可

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2