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

📄 sendfuncs.asm

📁 5509的代码程序
💻 ASM
字号:
;Function:
	.def WalshModem,PNModem,PhaseMap,WaveForm,CarrierModem
	.ref Walsh_array,PN_array,Tcl_Pre,Ascend_coe
	.ref SinW_array,CosW_array,Cos_array,Sin_array
	.ref temp,Inte_data,Walshed,Cos_part,Sin_part,Psk_I
	
	.text
******************************
*Walsh_modem:according to the 4 bit data,select walsh array
*walsh调制:根据4位信息位所对应的walsh序列,进行映射,数据分组长度变为原来的16倍
*数据保存在Walshed中
******************************
WalshModem:
	amov	#Inte_data,xar0		;
	amov	#Walshed,xar1		;xar0 point to Walshed
	rpt		#(832-1)
	mov		#0,*ar1+
	mov		#Walshed,ar1
	amov	#Walsh_array,xar3
	mov		#(13-1),brc0
	rptb	walsh-1
	mov		#Walsh_array,ar3
	mpymk	*ar0+,#8,ac0		;Inte_data(i*4-3)*8->ac0
	macmk	*ar0+,#4,ac0,ac0	;Inte_data(i*4-2)*4+ac0->ac0
	macmk	*ar0+,#2,ac0,ac0	;Inte_data(i*4-1)*2+ac0->ac0
	add		*ar0+,ac0			;Inte_data(i*4)+ac0->ac0
	sfts	ac0,#6	
	add		ac0,ar3
	nop
	nop
	rpt		#(64-1)
	mov		*ar3+,*ar1+
walsh:
	nop
	ret
*****************************
*PN序列和walsh调制以后的序列模8加
*相加以后的值放在Walshed序列中
*****************************
PNModem:
	amov	#Walshed,xar1
	amov	#temp,xar2
	mov		#8,*ar2
	mov		#(3-1),brc0			;PN序列重复三次
	mov		#(256-1),brc1		;PN序列长256
	rptb	PNloop1-1
	amov	#PN_array,xar0
	rptb	PNloop2-1
	mov		*ar0+,ac0
	add		*ar1,ac0
	mov     ac0,ac1
	sub     #8,ac1
	bcc     aa,ac1<0
	mov     ac1,*ar1+
	b       bb
aa: 
    mov     ac0,*ar1+
bb:
    nop
    nop    	
	
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																													
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																				
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																				
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																			
			       																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																												
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																				
																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																				
										        
PNloop2:
PNloop1:
	amov	#PN_array,xar0		;还有64个数据与PN序列的前两段再模加
	mov		#(64-1),brc0
	rptb	PNloop3-1
	mov		*ar0+,ac0
	add		*ar1,ac0
	rpt		#(16-1)
	subc	*ar2,ac0,ac0
	mov		hi(ac0),*ar1+
PNloop3:
	nop
	ret
*********************************
*Phase_map:相位映射
*形成Cos_part部分量和Sin_part部分量
*********************************
PhaseMap:                       
                                
	amov	#Cos_part,xar1		;这里Cos_part多定义了44个字的数据空间
	rpt		#(5*16+44-1)		;(在其前后各加22个0)是为了后面的波形成型时候比较方便
	mov		#0,*ar1+
	mov		#Cos_part+24,ar1	;Cos_part从第23个地址处开始存相位映射后的数据
	amov	#Sin_part,xar2		;Sin_part同Cos_part 
	rpt		#(5*16+44-1)
	mov		#0,*ar2+
	mov		#Sin_part+24,ar2
	amov	#Cos_array,xar3
	amov	#Sin_array,xar4
							;每隔5个点写入一个数据,即相当于给每个相位映射
							;以后的值两边内插了两个0值	
	mov		#(16-1),brc0		;对640位报头进行相位映射
	rptblocal Phaseloop1-1      ;从前导640中每次取16数进行映射做为一次循环
	mov		*ar7+,t1	
	mov		*ar3(t1),ac0
	mov		ac0,*ar1
	mov		*ar4(t1),ac1
	mov		ac1,*ar2
	add		#5,ar1
	add		#5,ar2
Phaseloop1:
	
	ret
*********************************
*Wave_form:波形成型
*波形成型滤波器,消除码间干扰
*相位映射以后的序列与波形成型滤波器的系数相卷积
*********************************
WaveForm:
	bset 	cdplc			;设置cdp循环寻址  ;ST2_55
	amov	#Ascend_coe,xcdp	;xcdp指向波形成型滤波器的系数表
	mov		#Ascend_coe,bsac	;循环寻址的首地址
	mov		#45,bkc			;循环寻址的长度
	mov		#0,cdp			;存储器的初始偏移值
;I路信号的波形成型
	amov	#Cos_part+44,xar0
	amov	#Cos_part+44,xar1
	amov	#Psk_I,xar3
	
	mov		#(80-1),brc0	

	rptblocal	AscendloopI-1
	mov		#0,ac0
	mov		ar0,ar1
	add		#1,ar0
	rpt		#(45-1)
	macm	*ar1-,*cdp+,ac0
	mov		hi(ac0),*ar3+     ;高位得到的是卷积的结果???
AscendloopI:
;Q路信号的波形成型
	amov	#Sin_part+44,xar0
	amov	#Sin_part+44,xar1
	amov	#Cos_part,xar4

	mov		#(80-1),brc0
	rptblocal	AscendloopQ-1
	mov		#0,ac0
	mov		ar0,ar1
	add		#1,ar0
	rpt		#(45-1)
	macm	*ar1-,*cdp+,ac0
	mov		hi(ac0),*ar4+
AscendloopQ:
	nop
	ret
****************************
*副载波的调制
*
****************************
CarrierModem:
	amov	#Psk_I,xar0     ;I 路信号  80个
	amov	#Cos_part,xar1  ;Q 路信号  80个
	bset 	cdplc			;设置cdp循环寻址
;I路乘载波
	amov	#CosW_array,xcdp	;主数据页
	mov		#CosW_array,bsac	;循环寻址的首地址
	mov		#20,bkc			;循环寻址的长度
	mov		#0,cdp			;存储器的初始偏移值	
	mov		#(80-1),brc0
	rptblocal	zaiboIloop1-1

	mpym	*ar0,*cdp+,ac0
	mov		hi(ac0),*ar0+

zaiboIloop1:
;Q路乘载波
	bset 	cdplc
	amov	#SinW_array,xcdp	;
	mov		#SinW_array,bsac	;循环寻址的首地址
	mov		#20,bkc			;循环寻址的长度
	mov		#0,cdp			;存储器的初始偏移值	
	mov		#(80-1),brc0
	rptblocal	zaiboQloop1-1
	mpym	*ar1,*cdp+,ac0
	mov		hi(ac0),*ar1+
	nop
zaiboQloop1:
;I路信号和Q路信号相加,得到调制后的信号
;存放于Psk_I中
	amov	#Psk_I,xar0
	amov	#Cos_part,xar1
	amov	#Psk_I,xar3
	mov		#(80-1),brc0
	rptblocal	addloop1-1
	mov		*ar0+,ac0
	add		*ar1+,ac0
	mov		ac0,*ar3+
addloop1:
	nop
	ret

⌨️ 快捷键说明

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