资源描述
DSP系统课程设计
---------调制解调器系统设计
目 录
引言 - 1 -
一、设计目标和任务 - 2 -
二、设计内容和要求 - 2 -
三、设计方案 - 3 -
3.1、系统整体结构图 - 3 -
3.2、工作原理 - 3 -
3.2.1.调制 - 4 -
3.2.2.解调 - 4 -
3.3、硬件原理图 - 6 -
四、系统实现 - 13 -
4.1、硬件部分 - 13 -
4.2、软件部分 - 13 -
4.2.1、调制程序 - 13 -
4.2.2、解调程序 - 16 -
4.3、结语 - 22 -
五、心得体会 - 23 -
引言
FSK(Frequency-shift keying):频移键控
频移键控是利用载波频率改变来传输数字信息。它是利用基带数字信号离散取值特点去键控载波频率以传输信息一个数字调制技术。是信息传输中使用得较早一个调制方法,它关键优点是: 实现起来较轻易,抗噪声和抗衰减性能很好。在中低速数据传输中得到了广泛应用。
最常见是用两个频率承载二进制1和0双频FSK系统,即2FSK系统。二进制频移键控(2-FSK) 频移键控是利用两个不一样频率f1和f2振荡源来代表信号1和0,用数字信号1和0去控制两个独立振荡源交替输出。
技术上FSK有两个分类,非相干和相干FSK。在非相干FSK,瞬时频率之间转移是两个分立频率。 在其次,在相干频移键控或二进制FSK ,是没有间断期在输出信号。
在数字化时代,电脑通信在数据线路(电话线、网络电缆、光纤或无线媒介)上进行传输,就是用FSK调制信号进行,即把二进制数据转换成FSK信号传输,反过来又将接收到FSK信号解调成二进制数据,并将其转换为用高,低电平所表示二进制语言,这是计算机能够直接识别语言。
伴随现代通信技术发展,软件化通信思想趋于成熟。用DSP芯片或通用CPU芯片作为无线通信硬件平台,而尽可能多用软件来实现通信功效,是现代通信领域广泛使用方法。伴随DSP芯片性价比提升,其在通信、自动控制、仪器仪表等很多领域应用也越来越广泛。
一、设计目标和任务
目标:经过本课程实践,能深入掌握高级语言程序设计基础概念,掌握基础程序设计方法;经过设计一个完整小型程序,初步掌握开发软件所需需求定义能力、功效分解能力和程序设计能力、代码调试技能;学习编写软件设计文档;为未来软件设计打下良好基础。
《DSP系统课程设计》是一项实践性和综合性全部比较强课程。经过本课程学习,能够掌握经典DSP芯片结构、原理和经典应用,既能巩固《数字信号处理基础》、《DSP原理及应用》、《通信原理》中相关基础理论知识,又为以后从事相关系统开发设计奠定一定基础。
任务:利用所学知识,设计一个基于DSP二进制频移键控(2FSK)调制解调系统。了解掌握2FSK调制和解调原理,熟悉Protel99、CCS2.2等软件开发环境,完成对2FSK调制和解调电路设计和仿真,分析仿真结果。
二、设计内容和要求
绘制含有AD功效DSP最小系统电路图,设计基于DSP2FSK调制解调程序。设计2FSK调制解调DSP程序,并给出对应仿真结果。
1.了解和熟悉DSP综合试验箱结构原理和设置;存放器、逻辑控制等模块原 理和配置。
2.开发工具
熟悉DSP开发系统连接;深入熟悉CCS2.2开发环境使用方法。
3.DSP结构
深入熟悉DSP硬件结构,尤其是DSP外围存放单元及接口电路设计。
4.DSP最小系统设计
绘制DSP最小系统电路图:外围存放器及ADC电路设计。
5.2FSK调制及解调
了解2FSK调制及解调原理,设计2FSK调制及解调方案,给出具体实现思绪。
6.FIR滤波器
计算FIR实现所需参数。
7.FIR滤波器实现
编写FIR滤波器实现DSP程序。
8.2FSK调制及解调实现
给出2FSK调制及解调实现步骤图,编写相关DSP实现程序。
9.仿真
验证2FSK调制及解调DSP程序,给出对应仿真结果。
10.完成课程设计汇报。
三、设计方案
3.1、系统整体结构图
图.1系统整体结构图
3.2、2FSK工作原理
二进制频移键控基础原理:用数字基带信号来控制高频载波频率改变,使载波频率在和之间改变。二进制频移信号能够看成两个不一样载波二进制振幅键控信号叠加。若二进制基带信号符号1对应于载波频率,符号0对应于载波频率,则二进制频移键控信号时域表示式:
(1)
(1)式中, ,,,,是反码,为码元连续时间,通常情况下,为单个矩形脉冲。
二进制频移键控(2FSK)是数字通信中常见一个调制方法,其调制和解调方法有很多个。采取数字信号处理来实现二进制频移键控信号数字调制和非相干数字解调,大大地降低了硬件电路复杂程度,提升了系统灵活性,能够满足二进制频移键控多种传输协议要求。
一个简易2FSK工作原理图2所表示。在发送方,输入基带数据信号经过调制和发送带通滤波器产生信道可传输频带信号,送人信道;在接收端,接收带通滤波器除去带外所附加噪声,将信号送入解调器(由延迟单元、乘法器和低,通滤波器组成),经过低通滤波器除去产生高频信号,经取样判决得到输出数字序列,完成信号传输。
图2. 2FSK系统工作原理图
3.2.1、2FSK调制
2FSK调制就是把输人数字序列变成适合于信道传输变频正弦波,所以2FSKDSP实现关键就是产生正弦或余弦波形。产生正弦波方法有差分迭代法、泰勒级数展开法、查表法等多个方法。本文中调制采取查表法产生正弦波。
☞ 调制算法
2FSK调制采取查表法,能够实现很好实时性,尤其适适用于通信载波生成。在DSP 程序存放空间,使用Q15 定点数格式在[0,2π]上以2π/N相位间隔固化N 点正弦值,以供查表(这些值可由MATLAB软件首先计算好),在此取N=12。这么对于F0和F1取样间隔分别为:
(2)
使用DSP定时器T0,用来实现对数据解调DAC输出速率控制。这么,如要实现12Kbps数传输速率,需要将DSP定时器T0溢出率设置为192KHz。
❖调制主程序步骤图
本文使用查表法提供2FSK调制所需要两路正弦波,即sin0_table和sin1_table,当发送数据为"0"时是发送sin0数据,当发送数据为"1"是发送sin1数据。初始化完后,接收数据,判定“0”或“1”,打开中止,则定时器每隔一个周期产生一次中止,中止服务程序则完成一个采样点输出。一个码元周期结束后,关中止,判定下一个发送数据,继续循环。
主程序步骤如右图3所表示
图 图3. 调制主程序步骤
3.2.2、2FSK解调
采取软件化设计思想,解调器也能够采取DSP编程来实现。FSK解调有相干解调和非相干解调,即使相干解凋抗干扰性能好,但她要求设置和发送设备中高频载波同频同相当地参考载波,使设备复杂,所以通常数字调频系统全部采取非相干解调。常见非相干解调算法有过零检测法和包络检测法以一个新可用DSP软件实现FSK非相干解调算法,即正交自延时FSK解调算法。
☞ 解调算法
针对小型通信系统,能够采取一个算法简单、占用存放空间小2FSK信号差分检波解调算法,本文即采取这种实时性较高2FSK信号差分检波解调算法,它是模拟信号解调电路用到差分检波原理在2FSK信号数字解调中具体实现。
算法基础思想是已调信号和它延时信号相乘,然后经过低通滤波,依据滤波结果符号判定发送信号值,从而实现信号解调。算法原理图以下图4所表示。
图4.2FSK解调算法原理图
在接收端,接收带通滤波器输出信号采样值经延时器延迟个采样点得到。要小于每个二进制码元周期内采样点数,使得和是属于同一个二进制码元采样值。和相乘后输出样值:
(3)
前面一部分是仅和k相关常数。后面一部分是和n相关高频分量,可经过对称系数低通滤波器h(n)来滤除。低通滤波器h(n)截止频率设为12KHz,对称系数经Matlab计算求得:h0=0.00018497,h1=0.26316,h2=0.19272,h3= 0.22079,经过该低通滤波器后得到:
————————(4)
k选择是设计解调器关键,应使差值:
———————(5)
最大,以利于正确区分两种频率,降低判决误码率。依据实际测试得到,当k=2时,能够得到很好区分度。经过低通滤波后数据U(n)经过判决算法后,能够得到最终所要解调数据Y(n)。
系统12个采样数据表示一个码元,当判决算法连续判决12个采样数据(一个码元包含采样点)满足预设阈值以后,确定一个码元状态。假设以下判决算法中用全部得变量:LPFOUT→滤波器输出,DATA_THD→幅度判决阈值,DEC_DATA_CURR→目前采样点判决值,DEC_DATA_BE→前一次采样点判决值,DEC_NUM→判决用计数器,DEC_NUM_X→周期计数器。判决算法步骤图以下图所表示:
图
图5.判决算法步骤图
3.3、硬件原理图
♣音频接口原理图
图6.音频接口图
此部分为整个系统提供音频信号采集输入。由TLV320AIC23单片机进行模拟信号采集处理,提供三个采集接口和一个输出接口。
♣电源原理图
图7.电源
此部分为系统电源结构原理图。为此系统提供了所需要电源,如、5V、3.3V、1.8V电源,并设置了地线。
♣寄存器原理图
图8.寄存器原理图
外部存放器,用于接收存放数据。
♣DSP原理图
图9.DSP原理图
本系统采取TMS320VC5402PGE100 DSP芯片,该芯片有142个管脚。芯片电源电压有3.3V和1.8V两种,其中3.3V电压供I/O接口用,2.5V电源关键供器件内部,包含CPU和其它全部外设逻辑。该系统将芯片片内部分模块单元引出方便做外部扩展。这些扩展模块包含串行口、定时计数器、数据地址总线接口和通用I/O等。此芯片一是实现FIR滤波,其次是2FSK调制和解调。
♣EPM
图10.EPM原理图
♣AD和DA转换原理图
图11.数模—模数转换原理图
DA和AD,即数字和模拟信号转换系统。可将系统音频接口所采集模拟信号转换为数字信号,送入DSP中进行调制解调处理,然后再把处理后信号转换为模拟信号发射出去。
♣顶层文件原理图
图12.顶层文件连接图
该版面为系统硬件原理图部分生成顶层文件连接示意图,从中能够反应出系统大约组成部分。经过各个分板块网络标号,将各分散部分信号线和各总线联络在一起,方便于进行统一电器检验和生成网络表,为后面生成PCB板奠定基础。加载网络表后,利用手动布局,在手动布线基础上实现了该系统PCB板完整布线。一般信号线10mil,电源线及地线为15mil。
四、系统实现
4.1、硬件部分
利于protel软件,画出各部分硬件电路图。生成顶层文件,画出PCB板,并实现手动布线,如前面各图所表示。
4.2、软件部分
4.2.1、2FSK调制程序
❖ 本文2FSK调制采取查表法,使用Q15 定点数格式在[0,2π]上以2π/N相位间隔固化N 点正弦值,N=12:
x = 0:2*pi/12:2*pi;
y = 32768*sin(x)
结果图:
❖ 调制主程序以下:
*****************************************
c54init.asm
*****************************************
.mmregs
.include c54.inc
.def c54init
.sect "progsys"
c54init:
*SWWSR :SoftWare Wait-State Register Address 0028h
* -----------------------------------------------------
* | 15 | 14 12 | 11 9 | 8 6 | 5 3 | 2 0 |
*-----------------------------------------------------
* | XPA | I/O | Data | Data | Program | Program |
*----------------------------------------------------
STM #0x7208,SWWSR ;0 111 001 000 001 000
*I/O空间为7个等候周期
*数据空间8000h-FFFFh为1个等候周期
*数据空间0000h-7FFFh为0个等候周期
*程序空间8000h-FFFFh为1个等候周期
*程序空间0000h-7FFFh为0个等候周期
*SWCR :SoftWare Wait-State Conctrol Register Address 002Bh
*-----------------------------------------------------
* | | 0 |
* -----------------------------------------------------
* | | SWSM |
* -----------------------------------------------------
STM #0,SWCR
*等候周期不变
*(STM #1,SWCR 等候周期加倍)
*BSCR :Programabel bank-switching wait states Address 0029h
* -----------------------------------------------------
* | 15 12 | 11 | 10 3 | 2 | 1 | 0 |
* -----------------------------------------------------
* | BNKCMP | PS–DS | Reserved | HBH | BH | EXIO |
* -----------------------------------------------------
STM #0xF800,BSCR ;1111 1000 0000 0000
*许可修改PMST中值
*在连续读程序或数据空间时插入1个额外等候周期
*外部存放器空白区间为4k
*ST0
* -----------------------------------------------------
* | 15 13 | 12 | 11 | 10 | 9 | 8 0 |
* -----------------------------------------------------
* | ARP | TC | C | OVA | OVB | DP |
* -----------------------------------------------------
STM #0,ST0
*数据页指针指向0
*ST1
* -----------------------------------------------------
* | 15 | 14 | 13 | 12 | 11 |10 | 9 | 8 | 7 | 6 | 5 |4 0 |
* -----------------------------------------------------
* |BRAF| CPL | XF | HM | INTM | 0 | OVM | SXM | C16 | FRCT | CMPT | ASM |
*-----------------------------------------------------
STM #0x2b00,ST1 ;0010 1011 0000 0000
*INTM=1 将全局中止严禁
*SXM=1 数据进入ALU之前进行符号位扩展
*OVM=1 益处控制位(参考ST1资料)
*PMST
* ------------------------------------------------------
* | 15 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
*-------------------------------------------------------
* | IPTR | MP/MC | OVLY | AVIS | DROM | CLKOFF | SMUL|SST |
*-------------------------------------------------------
* |0020 1111 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
*-------------------------------------------------------
* 0011 11111 1 1 0 0 1 0 0
STM #0x2fe4,PMST ;0010 1111 1110 0100
*将中止向量表映射到 2f80
*MP/MC=0 芯片工作在微计算机方法,能够寻址片内程序存放器
*IFR or IMR
*-------------------------------------------------------
* |15 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
*-------------------------------------------------------
* |RES |DMAC5|DMAC4|BXINT1|BRINT1|HPINT|INT3|TINT1|DMAC0|BXINT0|BRINT0|TINT0|INT2|INT1|INT0|
* | | | |DMAC3 |DMAC2 | | |DMAC1| | | | | | | |
*-------------------------------------------------------
* 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0
STM #0xFFFF,IFR
*清除挂起中止
STM #0x0000,IMR ;关闭全部中止
*打开定时器0中止。
*CLKMD
*-------------------------------------------------------
* | 15 12 | 11 | 10 3 | 2 | 1 | 0 |
*-------------------------------------------------------
* | PLLMUL | PLLDIV | PLLCOUNT | PLLON/OFF | PLLNDIV | PLLSTATUS |
* ------------------------------------------------------
STM #0,CLKMD
clkcon: LDM CLKMD,A
AND #0x01,A
BC clkcon,ANEQ
STM #0x43ff,CLKMD ;0100 0011 1111 1111
*利用软件对CLKMD进行加载(参考教材:P250)
*PLL=4 MUL=5 100Mhz; PLL=3 MUL=4 80Mhz
*TCR
*-------------------------------------------------------
* | 15 12 | 11 | 10 | 9 6 | 5 | 4 | 3 0 |
*-------------------------------------------------------
* | Revd | soft | free | PSC | TRB | TSS | TDDR |
* ------------------------------------------------------
STM #0x0010,TCR1 ;timer1 stop
STM #0x0010,TCR ;TSS=1 Timer stop
STM #1000,TIM
STM #1000,PRD
STM #1000,TIM1
STM #1000,PRD1
*定时中止周期=CLKOUT*(TDDR+1)*(PRD+1)
RSBX INTM
STM #0x0088,IMR
*将全局中止使能
NOP
NOP
RET
.end
*********************************************
* Vectors.asm
*********************************************
.include c54.inc
.sect ".vectors"
.ref _c_int00 ; main progrom
.ref TINT0_ISR
;.ref timer0 ,hpisys,usb_read
.align 0x80 ; must be aligned on page boundary
RESET: ; reset vector
B _c_int00 ; branch to main progrom
NOP
NOP
nmi: RETE ; enable interrupts and return from one
NOP
NOP
NOP ;NMI~
; software interrupts
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 TINT0_ISR ;Timer0中止
NOP
NOP
rint0: RETE
NOP
NOP
NOP
xint0: RETE
NOP
NOP
NOP
DMAC0: RETE
NOP
NOP
NOP
DMAC1: RETE ;tint1
NOP
NOP
NOP
int3: RETE
NOP
NOP
NOP
HPINT: RETE
NOP
NOP
NOP
DMAC2: RETE ;rint1
NOP
NOP
NOP
NOP
xint1: RETE
NOP
NOP
NOP
DMAC4: RETE
NOP
NOP
NOP
DMAC5: RETE
NOP
NOP
NOP
.end
**********************************************
* FSK_MOD.CMD *
**********************************************
MEMORY
{
PAGE 0: PROG: origin = 0x, len = 0x0f80 /*8k-128 word*/
VECT: origin = 0x2f80, len = 0x80 /*128word*/
PAGE 1: DRAM: origin = 0x3000, len = 0xf80
/*4k word*/}
SECTIONS
{ progsys: load = PROG PAGE 0
.vectors: load = VECT PAGE 0
.data : load = DRAM PAGE 1 align 16
.bss : load = DRAM PAGE 1}
❖调制仿真波形图:
图14.信号调制仿真波形
4.2.2、2FSK解调程序
本文采取是实时性较高2FSK信号差分检波解调算法,是已调信号和它延时信号相乘,然后经过低通滤波,依据滤波结果符号判定发送信号值,从而实现信号解调。算法原理图可如前所述,信号放大以后,经k个单位时间延时,再和原信号相乘,经过LPF判决结果。
❖FIR滤波器
在数字信号处理中,滤波占有极其关键地位。数字滤波是语音和图像处理、模式识别、谱分析等应用中一个基础处理算法。和模拟滤波相比,数字滤波含有很多突出优点,比如它能够满足滤波器对幅度和相位特征严格要求,能够避免模拟滤波器所无法克服电压漂移、温度漂移和噪声等问题。用DSP芯片实现数字滤波除了含有稳定性好、正确度高、不受环境影响等优点外,还含有灵活性好特点。在延时相乘以后滤波器设计,用可编程DSP芯片实现数字滤波可经过修改滤波器参数十分方便地改变滤波器特征。
在延时相乘以后滤波器设计,用可编程DSP芯片实现数字滤器,其步骤可如右图所表示:
图15.FIR滤波器软件步骤图
本文采取系数对称用循环缓冲区和双操作数寻址方法实现FIR滤波器设计,参数:滤波器阶数为8,截止频率为0.8。利用Matlab软件中freqz指令能够观察到滤波器特征,为便于说明,下图提供了一个截止频率0.8,阶数为90低通滤波器频率特征图。
图16.低通滤波器频率特征
本试验所设计滤波器经由Matlab计算出系数,以下:
f = [0 0.8 0.8 1];
m = [1 1 0 0];
b = fir2(7,f,m);
b = b*32768;
freqz(b,512,1000)
图17.滤波器系数
❖滤波器程序以下:
********************************************
* my_fir.asm *
********************************************
.title "my_fir.asm"
.mmregs
.def _c_int00
.bss y,1 ;y
xn .usect "xn",8 ;xn
h .usect "h",8 ;h
;PA0 .set 0002H ;数据输出端口
;PA1 .set 0008H ;数据输入端口
.bss indata,1
.bss outdata,1
.bss Dis_buff,1
.data
table:
.word 137,6,-2635,18941,18941,-2635,6,137
_c_int00:
SSBX FRCT ;小数乘法
STM #xn,AR1
RPT #7
ST #0,*AR1+ ;把x(n)-x(n-7)赋始值0
STM #h,AR1
RPT #7
MVPD #table,*AR1+;把参数表复制到数据存放区
STM #xn+7,AR3 ;AR3-->x(n-7)
STM #h+7,AR4 ;AR4-->h(n-7)
STM #8,BK ;循环缓冲区大小8
STM #-1,AR0 ;指针调整值-1
;LD #xn,DP ;DP指向xn所在页
;PORTR PA1,@xn ;输入数据
LD #y,DP ;DP指向y所在页
FIR:
NOP
MVKD indata,*AR3+0%
RPTZ A,#7
MAC *AR3+0%,*AR4+0%,A ;A=(AR3)*(AR4)+A, AR3=AR3+AR0,AR4=AR4+AR0
;;STH A,@outdata
;MVDP *(outdata), Dis_buff
NOP
STH A,@y ;保留计算结果
NOP
;PORTW @y,PA0 ;输出结果
B FIR ;延时跳转
;PORTR PA1,*AR3+0% ;新数据覆盖了最旧数据
.end
*******************************************
* my_fir.cmd *
*******************************************
vectors.obj
my_fir.obj
-o my_fir.out
-m my_fir.map
-estart
MEMORY
{ PAGE 0:
EPROM: org=0090H,len=0F70H
VECS: org=0080H,len=0010H
PAGE 1:
SPRAM: org=1000H,len=1000H
DARAM: org=H,len=H }
/*因为在源程TWLO序中使用了BK寄存器,所以必需使用"align"命令 */
SECTIONS
{ .text :> EPROM PAGE 0
.data :> EPROM PAGE 0
.bss :> SPRAM PAGE 1
xn : align(128){}> DARAM PAGE 1
h : align(128){}> DARAM PAGE 1
.vectors:> VECS PAGE 0}
**********************************************
*vectors.asm*
**********************************************
.title "vectors.asm"
.ref _c_int00
.sect ".vectors"
B _c_int00
.end
❖滤波器仿真波形以下图所表示:
▷滤波器输入数据以下:
输入数据经滤波器处理后为方波信号,以下:
图18.滤波器仿真
此滤波器参数:八阶FIR低通滤波器,截止频率0.8,采取循环缓冲区法设计,经CCS仿真后得方波信号。
❖2FSK解调主程序
2FSK延时相乘非相干解调测试程序,相关参数以下:
▷Fc=24kHz,F0=16KHz,F1=32KHz,Fs=192Khz
▷八阶系数对
展开阅读全文