⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deqpsk.asm

📁 QPSK解码算法的TI平台实现 包括: 1、QPSK 解码源码。 2、TI平台硬件环境设置等等。
💻 ASM
字号:
********************************************
*					   					   *
* 	    QPSK解调程序					   *
* 	    fc=1800Hz,RB=2400B(分a,b两路)      *
*					  					   *
********************************************
	.mmregs
	.def	m1,e1,m2,e2,mp,ep,temp,out
	.copy	"sin_cos.inc"
	.def	start
	.bss	m1,1				;定义浮点乘法中间变量空间
	.bss	e1,1
	.bss	m2,1
	.bss	e2,1
	.bss	mp,1
	.bss	ep,1
	.bss	temp,1
	.bss	out,1				;定义判决输出的空间
input	.usect	"data",32		;QPSK数据输入空间
sinWt	.usect	"data",32		;相干载波
cosWt	.usect	"data",32		;
outa	.usect	"data",32		;相乘后的a路数据
outb	.usect	"data",32		;相乘后的b路数据
STACK	.usect	"STACK",100

	
start:	.asg	AR5,x1
	.asg	AR6,x2
	.asg	AR7,product
	STM	#STACK+100,SP			;设置堆栈指针
	LD	#m1,DP
*********************************************************
	STM	#sinWt,AR1
	RPT	#31
	MVPD	#sin,*AR1+
	
	STM	#cosWt,AR1
	RPT	#31
	MVPD	#cos,*AR1+
*********************************************************
loop:	nop
	STM	#input,AR5
	STM	#cosWt,AR6
	STM	#outa,AR7
	STM	#31,BRC					;块循环重复执行32篇
	RPTB	next1-1				;实现相乘器的功能
	CALL	MULT
	MAR	*AR5+
	MAR	*AR6+
	MAR	*AR7+
*********************************************************
next1:	STM	#outa,AR7			;累加求和并判决输出
	STM	#31,BRC
	LD	#0,B
	RPTB	J1-1
	LD	*AR7+,A
	XC	2,AGT
	NOP
	ADD	#1,B
J1:	STL	B,-4,@out
*********************************************************
	STM	#input,AR5
	STM	#sinWt,AR6
	STM	#outb,AR7
	STM	#31,BRC					;块循环重复执行32篇
	RPTB	next2-1				;实现相乘器的功能
	CALL	MULT
	MAR	*AR5+
	MAR	*AR6+
	MAR	*AR7+  
*********************************************************
next2:	STM	#outb,AR7			;累加求和并判决输出
	STM	#31,BRC
	LD	#0,B
	RPTB	J2-1
	LD	*AR7+,A
	XC	2,AGT
	NOP
	ADD	#1,B
J2:	STL	B,-4,@out
*********************************************************
	nop
	B 	loop	
*********************************************************
MULT:	LD	*x1,16,A			;将x1规格化为浮点数
	EXP	A
	ST	T,@e1					;保存x1的指数
	NORM	A		
	STH	A,@m1					;保存x1的尾数
	LD	*x2,16,A				;将x2规格化为浮点数
	EXP	A
	ST	T,@e2					;保存x2的指数
	NORM	A
	STH	A,@m2					;保存x2的尾数
*********************************************************
	SSBX	FRCT
	SSBX	SXM
	LD	@e1,A					;指数相加
	ADD	@e2,A
	STL	A,@ep					;乘积指数->ep
	LD	@m1,T					;尾数相乘
	MPY	@m2,A					;乘积尾数在累加器A中
	EXP	A						;对尾数乘积规格化
	ST	T,@temp					;规格化时产生的指数->temp
	NORM	A
	STH	A,@mp					;保存乘积尾数在mp中
	LD	@temp,A					;修正乘积指数
	ADD	@ep,A					;(ep)+(temp)->ep
	STL	A,@ep					;保存乘积指数在ep中
	NEG	A						;将浮点乘积转换成定点数
	STL	A,@temp					;乘积指数反号,并且加载到T寄存器
	LD	@temp,T					;再将尾数按T移位
	LD	@mp,16,A
	NORM	A
	STH	A,*product				;保存定点乘积
	RET
	.end
*********************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -