安徽工业大学—IS-95移动通信系统—正向业务信道的设计与开发(程序改+质疑问题)

上传人:bei****lei 文档编号:135165118 上传时间:2022-08-14 格式:DOC 页数:29 大小:124KB
返回 下载 相关 举报
安徽工业大学—IS-95移动通信系统—正向业务信道的设计与开发(程序改+质疑问题)_第1页
第1页 / 共29页
安徽工业大学—IS-95移动通信系统—正向业务信道的设计与开发(程序改+质疑问题)_第2页
第2页 / 共29页
安徽工业大学—IS-95移动通信系统—正向业务信道的设计与开发(程序改+质疑问题)_第3页
第3页 / 共29页
点击查看更多>>
资源描述
IS95.ASM*定时20ms循环处理话音数据包*.titleIS95前向信道设计.global_c_int00.mmregs;定义MMR的符号名.copywalsh.inc;从walsh.inc 文件中复制walsh表STACK.usectstack,10H;堆栈的设置,未初始化.bsspn1,2048;引导序列I.bsspn2,2048;引导序列Q.bssw,1536;输入,输出.bsswa,1536;384*4=1536,扩频结果.bssiq,32;依次存储4组8个样点波形;SIN0+COS0;SIN0+COS180;SIN180+COS0;SIN180+COS180.bssp,4;P用于42级缓存三个,用于Wlash地址是4个.bssq,4;P用于42级掩码三个,用于Wlash地址是4个.bssv,1;用于记录pn码循环的位置0-2047.bss k,1;k为偏置系数,V=K*4.bssx,1;十次定时计数.bssy,1;速率标志.bssz,1;walsh中64位地址号.datacos:.word07fffH,05a82H,00000H,0a57fH,08002H,0a57fH,00000H,05A82Hsin:.word00000H,05A82H,07fffH,05a82H,00000H,0a57fH,08002H,0a57fHPA0.set0;定义偏置系数PA1.set1;速率标志1,2,4,8PA2.set2;PA2-7,扰乱移存器、掩码42位分三段14PA3.set3PA4.set4PA5.set5PA6.set6PA7.set7PA8.set8;walsh地址号PA9.set9;输出调制波形.sect.vectors;中断向量表rst:B_c_int00;复位中断RSNOPNOP.space15*4*16int0:Bclock;GPS偶数秒外部中断INT0NOPNOP.space2*4*16tint:Btimeout;定时中断向量TINT0NOPNOP.space12*4*16.text ;主程序_c_int00STM#STACK+10,SP;置堆栈指针*初始化,产生四种SIN与COS相加的波形*cos+sin;cos-sin;sin-cos;-cos-sin*SSBXSXM;=1符号扩展, 进行算数运算 数据进入ALU中符号位扩展STM#w,AR2;w AR2 存放cos的样点STM#wa,AR3;wa AR3 存放sin的样点LD#cos,ARPT#7READA*AR2+;cos 8个cos样点存入 AR2中LD#sin,ARPT#7READA*AR3+;sin 8个sin样点存入 AR3STM#iq,AR4 ;iq数据单元存放 四种波形 cos+sin cos-sin sin-cos -sin-cos的样点STM#w,AR2;指向sin cos起始位置STM#wa,AR3STM#7,BRCRPTBttt-1LD*AR2+,AADD*AR3+,ASTLA,*AR4+;AR4 *(iq)=cos+sinttt:STM#w,AR2STM#wa,AR3STM#7,BRCRPTBttt1-1LD*AR2+,ASUB*AR3+,ASTLA,*AR4+;AR4 *(iq)=cos-sinttt1:STM#w,AR2STM#wa,AR3STM#7,BRCRPTBttt2-1LD*AR3+,ASUB*AR2+,A;AR4 *(iq)=sin-cosSTLA,*AR4+ttt2:STM#w,AR2STM#wa,AR3STM#7,BRCRPTBttt3-1LD*AR2+,ANEGA;计算累加器反值SUB*AR3+,ASTLA,*AR4+;AR4 *(iq)=-sin-cos*初始化PN1和PN2,准正交15级M序列*先产生好引导序列,最后15个零,初始状态14个零一个一*序列周期215-1=32768-1=32767,*每两秒75个PN序列周期,1.2288M*2S=75*32768|16=2048个字*I(x)=x15+x13+x9+x8+x7+x5+1*Q(x)=x15+x12+x11+x10+x6+x5+x4+x3+1*chushipn1: STM #32766,BRC;PN1 LD #0x0001,A;初始状态14个零一个一,移存器初态,1为X位 STM #15,AR4;计数器,一个字16位 STM #pn1,AR3;放置序列地址 ST #0x0001,*AR3;先输出1 RPTB PP1-1 LD #0,B;B为M序列反馈位 XOR A,-4,B;x5与B异或 XOR A,-6,B XOR A,-7,B XOR A,-8,B XOR A,-12,B XOR A,-14,B AND #0x0001,B SFTL A,1;左移一位 OR B,A;反馈位或到最低位 BANZ PPP1,*AR4-;未积满一个字后转移 STL B,*+AR3;更新输出地址 STM #15,AR4 B PPP2PPP1: ADD *AR3,1,B STL B,*AR3PPP2: NOPPP1: LD *AR3,A AND #0XFFFE,A;提前输出的1强制变为0 STL A,*AR3chushipn2: STM #32766,BRC ;PN2 LD #0x0001,A ;初始状态14个零一个一 STM #15,AR4 ;计数器,一个字16位 STM #pn2,AR3 ;放置序列地址 ST #0x0001,*AR3 ;先输出1 RPTB PP2-1 LD #0,B ;B为M序列反馈位 XOR A,-2,B;x3与B异或 XOR A,-3,B XOR A,-4,B XOR A,-5,B XOR A,-9,B XOR A,-10,B XOR A,-11,B XOR A,-14,B AND #0x0001,B SFTL A,1 ;左移一位 OR B,A ;反馈位或到最低位 BANZ PPP3,*AR4- ;未积满一个字后转移 STL B,*+AR3;更新输出地址 STM #15,AR4 B PPP4 PPP3: ADD *AR3,1,B STL B,*AR3 PPP4: NOP PP2: LD *AR3,A ;提前输出的1强制变为0 AND #0XFFFE,A STL A,*AR3 *中断向量,定时器,时钟初始化*ttt3:SSBXINTM;=1,关闭所有可屏蔽中断RSBXSXM ;=0禁止符号位扩展ST#0,*(x);初始化x=0,x为十次定时记数STM#0,SWWSR;插入0等待周期STM#0xffa8,PMST;改变中断向量映射到0xff80,IPTR取 PMST高九位 9个1STM#9007h,CLKMD;CLKMD倍频设置 PLLMUL=9,CLKIN=10M 时钟工作方式寄存器;CLKOUT=CLKIN X (PLLMUL+1)=100MSTM#19999,PRD;该为PRD=20000-1;TDDR=10-1 主频100M 则定时2ms;T=t*(TDDR+1)*(PRD+1)STM #0039h,TCR;TDDR=9,TSS=1停止*主程序和码元重复*速率标志1,2,4,8*测试标志的0123位*suspSTM#y,AR4;添加帧质量指示PORTRPA1,*AR4;速率标志1,2,4,8BIT*AR4,15-0;速率1,检测第0位BCbbb1,NTC;TC=0转移CALLcrc12;8.6*20=172+12=184LD#183,A;卷积输入184码元CALLjuanji;卷积和加尾比特 184+8=192*2=384STM#wa,AR5;wa输出w输入 STM#w,AR3 RPT#383;卷积输出384个码元 作为码元重复的输入MVDD*AR3+,*AR5+;每个码元重复1次CALLjiaozhiCALLraoluanCALLkuopinCALLpianzhi1CALLpianzhi2CALLqpskB bbbbbb1:BIT*AR4,15-1;速率1/2,BCbbb2,NTC;TC=0转移CALLcrc8;4.0*20=80+8=88LD#87,A;卷积输入88码元CALLjuanji;卷积和加尾比特 88+8=96*2=192STM#wa,AR5;wa输出w输入 STM#w,AR3STM#191,BRC;卷积输出192个码元 作为码元重复的输入RPTBccb1-1MVDD*AR3,*AR5+;每个码元重复2次MVDD*AR3+,*AR5+ccb1CALLjiaozhiCALLraoluanCALLkuopinCALLpianzhi1CALLpianzhi2CALLqpskBbbbbbb2:BIT*AR4,15-2;速率1/4,检测第2位BCbbb3,NTC;TC=0转移STM#w,AR3 STM#wa,AR4 RPT#39;2.0*20=40 MVDD*AR3+,*AR4+;统一接口 等效于CRC校验 wa AR3-w AR4 LD#39,A;卷积输入40码元 CALLjuanji;卷积和加尾比特 40+8=48*2=96 STM#wa,AR5;wa输出w输入 STM#w,AR3 STM#95,BRC;卷积输出96个码元 作为码元重复的输入RPTBccb2-1MVDD*AR3,*AR5+;每个码元重复4次MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3+,*AR5+ccb2CALLjiaozhiCALLraoluanCALLkuopinCALLpianzhi1CALL pianzhi2CALLqpskBbbbbbb3STM#w,AR3;速率1/8,检测第3位 STM#wa,AR4 RPT#15;0.8*20=16 MVDD*AR3+,*AR4+ LD#15,A CALLjuanji;卷积和加尾比特;16+8=24*2=48 STM#wa,AR5;码元重复8次,wa输出w输入 STM#w,AR3 STM#47,BRCRPTBccc-1MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3,*AR5+MVDD*AR3+,*AR5+cccCALLjiaozhiCALLraoluanCALLkuopinCALLpianzhi1CALLpianzhi2CALLqpsknopbbb nop*判断是否到20ms,取第二个数据包处理*susp1LD*(x),A;保证程序每次间隔20msSUB#10,ABCsusp,AEQ;x=10时 说明20ms完成 跳到susp 即 上面的码元重复开始从头开始执行B susp1;否则x=10跳 说明10次记满,x清零 ,否则直接退出中断 B exitsecoutST #0,*(x)exitNOP RETE*外部GPS时钟2秒钟复位一次*根据偏置系数K确定引导序列的起始位置v*K,0-511*clock:PORTRPA0,*(k);读偏置系数LD*(k),2,A;四个字,64位AND#0x7fc,ASTLA,*(v);V=K*4,周期序列起始位置STM#0FFFFh,IFR ;所有中断标志置1STM #0008h,IMR;TINT0=1定时中断开放RSBX INTM;=0,开放所有可屏蔽中断LDMTCR,AAND #0FFEFH,ASTLMA,TCR;TSS=0,定时器启动工作RETE*CRC效验子程序*12位帧质量指示码产生器*w存储172位要效验的信息*wa存储184位输出信息*f(x)=x12+x11+x10+x9+x8+x4+x+1*crc12STM#w,AR3;输入 STM#wa,AR4;输出 LD#0XFFF,B;B为12位移存器初始化,右为刚入,左为最早入 STM#171,BRC;计算172位CRC效验 RPTBnext-1SFTLB,-11,A;取最高延迟位MVDD*AR3,*AR4+;数据由w-waXOR*AR3+,A;最高延迟位与输入模2加产生反馈输入AND#0X0001,ASFTLB,1;移存器移位AND#0X0FFE,BXORA,11,B;产生移存器的X12XORA,10,B;产生移存器的X11XORA,9,B;产生移存器的X10XORA,8,B;产生移存器的X9XORA,7,B;产生移存器的X8XORA,3,B;产生移存器的X4XORA,B;产生移存器的Xnext:NOP ;将存在累加器A中的校验12位码传递到信息位的最后12个字SFTLB,-11,AAND#0X0001,ASTLA,*AR4+SFTLB,-10,AAND#0X0001,ASTLA,*AR4+SFTLB,-9,AAND#0X0001,ASTLA,*AR4+SFTLB,-8,AAND#0X0001,ASTLA,*AR4+SFTLB,-7,AAND#0X0001,ASTLA,*AR4+SFTLB,-6,AAND#0X0001,ASTLA,*AR4+SFTLB,-5,AAND#0X0001,ASTLA,*AR4+SFTLB,-4,AAND#0X0001,ASTLA,*AR4+SFTLB,-3,AAND#0X0001,ASTLA,*AR4+SFTLB,-2,AAND#0X0001,ASTLA,*AR4+SFTLB,-1,AAND#0X0001,ASTLA,*AR4+AND#0X0001,BSTLB,*AR4+RET*crc效验:F(X)=X8+X7+X4+X3+X+1*8位帧质量指示码产生器*w存储80位要效验的信息*wa存储88位输出信息*crc8STM#w,AR3;输入 STM#wa,AR4;输出 LD#0XFF,B;B为8位移存器初始化,右为刚入,左为最早入 STM#79,BRC;计算80位CRC效验 RPTBnex-1SFTLB,-7,A;取最高延迟位MVDD*AR3,*AR4+;数据由w-waXOR*AR3+,A;最高延迟位与输入模2加产生反馈输入AND#0X0001,ASFTLB,1;移存器移位AND#0X0FE,BXORA,7,B;产生移存器的X8XORA,6,B;产生移存器的X7XORA,3,B;产生移存器的X4XORA,2,B;产生移存器的X3XORA,B;产生移存器的Xnex:NOP;将存在累加器A中的校验8位码传递到信息位的最后8个字SFTLB,-7,AAND#0X0001,ASTLA,*AR4+SFTLB,-6,AAND#0X0001,ASTLA,*AR4+SFTLB,-5,AAND#0X0001,ASTLA,*AR4+SFTLB,-4,AAND#0X0001,ASTLA,*AR4+SFTLB,-3,AAND#0X0001,ASTLA,*AR4+SFTLB,-2,AAND#0X0001,ASTLA,*AR4+SFTLB,-1,AAND#0X0001,ASTLA,*AR4+AND#0X0001,BSTLB,*AR4+RET*卷积编码*g0=111101011*g1=101110001*wa为输入数据,w为编码输出*包括8位尾比特处理*juanji:STLMA,BRC;BRC值与速率有关,A=183,87,39,15STM#wa,AR2;输入STM#w,AR3;输出LD#0,B;B中存储8位移存器,初始化0RPTBddd-1LD*AR2,AXORB,A;g0=111101011XORB,-1,A;B移存器有抽头位异或存于A中XORB,-2,AXORB,-4,AXORB,-6,AXORB,-7,AAND#0X0001,ASTLA,*AR3+;编码后输出LD*AR2,A;g1=101110001XORB,-1,A;B移存器有抽头位异或存于A中XORB,-2,AXORB,-3,AXORB,-7,AAND#0X0001,ASTLA,*AR3+;编码后输出SFTLB,1AND#0XFE,BOR*AR2+,Bddd:NOPSTM#7,BRC;加尾比特8个0RPTBeee-1LD#0,A;无输入信息XORB,AXORB,-1,AXORB,-2,AXORB,-4,AXORB,-6,AXORB,-7,AAND#0X0001,ASTLA,*AR3+LD#0,AXORB,-1,AXORB,-2,AXORB,-3,AXORB,-7,AAND#0X0001,ASTLA,*AR3+SFTLB,1eee:NOPRET*交织器*将384码元分成6个64码元组,先对每个64分组进行64位码倒序寻址,再进行6X64矩阵交织*输入数据在wa中,中间倒序寻址数据在w中,最后数据仍在wa中*jiaozhi:STM#wa,AR2;输入,输出STM#w,AR3;中间倒序寻址数据STM#32,AR0;64/2=32STM#64-1,BRCRPTB#jj1-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第一行64比特反转寻址交织jj1:STM#wa+64,AR2RPTB#jj2-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第二行64比特反转寻址交织jj2:STM#wa+2*64,AR2RPTB#jj3-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第三行64比特反转寻址交织jj3:STM#wa+3*64,AR2RPTB#jj4-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第四行64比特反转寻址交织jj4:STM#wa+4*64,AR2RPTB#jj5-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第五行64比特反转寻址交织jj5: STM#wa+5*64,AR2RPTB#jj6-1MVDD *AR2,*AR3+MAR*AR2+0B;完成第六行64比特反转寻址交织jj6:STM#wa,AR2STM#w,AR3STM#64-1,BRCSTM#64,AR0;按列输出,上下相隔64RPTBjjj1-1MVDD*AR3,*AR2+MAR*AR3+0MVDD*AR3,*AR2+MAR*AR3+0MVDD*AR3,*AR2+MAR*AR3+0MVDD*AR3,*AR2+MAR*AR3+0MVDD*AR3,*AR2+MAR*AR3+0MVDD*AR3,*AR2+LDMAR3,ASUB#5*64-1,A;输出下一列,更新地址,相差-(5*64+1)STLMA,AR3jjj1:RET*扰乱加密*P(x)=x42+x35+x33+x31+x27+x26+x25+x22+x21+x19+x18+x17+x16* +x10+x7+x6+x5+x3+x2+x+1 * *加扰之前的数据在wa中,加扰后数据在w中,*p,p+1与p+2中分别放移存器低14位中14位和高14位*q,q+1与q+2中分别放掩码标志码低14位中14位和高14位*raoluan: STM#wa,AR4 STM#w,AR5 STM#383,AR3 PORTRPA2,*(p);获得移存器初态低14位 LD*(p),A AND#0X3fff,A STLA,*(p) PORTRPA3,*(p+1);获得移存器初态中14位 LD*(p+1),A AND#0X3fff,A STLA,*(p+1) PORTRPA4,*(p+2);获得移存器初态高14位 LD*(p+2),A AND#0X3fff,A STLA,*(p+2) PORTRPA5,*(q);获得掩码标志码低14位 LD*(q),A AND#0X3fff,A STLA,*(q) PORTRPA6,*(q+1);获得掩码标志码中14位 LD*(q+1),A AND#0X3fff,A STLA,*(q+1) PORTRPA7,*(q+2);获得掩码标志码高14位 LD*(q+2),A AND#0X3fff,A STLA,*(q+2)bbc:STM#63,BRC;64分频器RPTBbbc1-1LD#0,B LD*(p),A;X14-X1 XORA,-6,B;X7 XORA,-8,B;X9 XORA,-10,B;X11AND#0X0001,B LD*(p+1),A;X28-X15 XORA,B;X15 XORA,-1,B;X16 XORA,-2,B;X17 XORA,-5,B;X20 XORA,-6,B;X21 XORA,-8,B;X23 XORA,-9,B;X24 XORA,-10,B;X25 XORA,-11,B;X26 AND#0X0001,BLD*(p+2),A;X42-X29XORA,-3,B;X32XORA,-6,B;X35XORA,-7,B;X36XORA,-8,B;X37XORA,-10,B;X39XORA,-11,B;X40XORA,-12,B;X41XORA,-13,B;X42AND#0X0001,B;新产生的1BIT将存入B中LD*(p+1),-13,A;42级移位AND#0X0001,AADD*(p+2),1,AAND#0X03FF,ASTLA,*(p+2)LD*(p),-13,AAND#0X0001,AADD*(p+1),1,AAND#0X03FF,ASTLA,*(p+1)LD*(p),1,AXORB,AAND#0X03FF,ASTLA,*(p)bbc1:NOPLD#0,B;掩码与移存器状态相与模二加产生1BIT输出LD*(p),AAND*(q),ASTM#13,BRCRPTBbbc2-1XORA,BSFTLA,-1bbc2:LD*(p+1),AAND*(q+1),ASTM#13,BRCRPTBbbc3-1XORA,BSFTLA,-1bbc3:LD*(p+2),AAND*(q+2),ASTM#13,BRCRPTBbbc4-1XORA,BSFTLA,-1bbc4:AND#0X0001,B XOR*AR4+,B STLB,*AR5+ bbc6:BANZbbc,*AR3-;循环384RET*扩频*输入是加扰后的19.2b/s的数据存在W中384比特*WALSH码表存在文件table.inc中,4个字一个64位W码,存在程序区*PA8口输入W地址号*扩频后数据存在wa中,384*4=1536个字*kuopin:STM#p,AR4;*(p)中是4个64位W地址码 PORTRPA8,*(z);获得W地址号,Z为地址编号 LD*(z),2,A;地址号*4 (4个字一个地址) 形成偏移地址 AND#0xfc,A; 1111 1100 保证偏移地址不超过64*4 STLA,*(z); ADD#table_a,A;table在程序区 基址+偏移地址 形成 地址号对应的地址 RPT #3 ;将4个字 的walsh码读进来 存在AR4中READA*AR4+ STM#p,AR4;p中是64位正码 STM#q,AR5;q中是64位反码 LD*AR4+,A;取反码 CMPLA;取反 STLA,*AR5+LD*AR4+,A CMPLA STLA,*AR5+LD*AR4+,A CMPLA STLA,*AR5+ LD*AR4+,A CMPLA STLA,*AR5+;执行4次 完成walsh码 4个字的 取反工作 STM#wa,AR3;wa输出 STM#w,AR7;w 输入 STM#383,BRC;1个码元对应4个字的walsh码 384个码元 重复384次 RPTBLOOP-1 LD*AR7+,A STM#p,AR4;定位到正码、反码起始位置 STM#q,AR5 BCLOOP1,ANEQ;=0,输出正码 MVDD*AR4+,*AR3+;输出正码 MVDD*AR4+,*AR3+ MVDD*AR4+,*AR3+ MVDD*AR4+,*AR3+ B LOOP-1LOOP1:MVDD*AR5+,*AR3+;=1,输出反码 MVDD*AR5+,*AR3+;输出反码MVDD*AR5+,*AR3+ MVDD*AR5+,*AR3+ NOPLOOP:NOPRET*I信道引导序列*P1(x)=x15+x13+x9+x8+x7+x5+1*v中记录上一个数据包结束PN1所在周期中的比特位置*输入数据在wa中1536个字,输出在w中1536个字,周期为2048个字*pianzhi1: STM#wa,AR3;输入数据 STM#w,AR5;输出数据 LD#pn1,A;引导序列起始地址 ADD*(v),A;引导序列地址 绝对寻址 STLMA,AR4;AR4-引导序列地址 LD*(v),A SUB#512,A;PN序列 周期2048字 数据长1536字 BCppp,AGEQ;若V大于等于512,数据需分两段序列(跨PN周期)模2加 V512跳到ppp STM#1535,BRC;若起点V小于512,直接序列模2加 RPTBppp1-1 LD*AR3+,A;AR3输入 XOR*AR4+,A;AR4 PN序列 STLA,*AR5+ppp1: Bppp2ppp: LD#2047,A;V512时 前半部分 SUB*(v),A STLMA,BRC;循环次数为2048-V BRC=2048-V-1 RPTBppp3-1 LD*AR3+,A XOR*AR4+,A;PN序列 AR4开始时 指向 V STLA,*AR5+ppp3: LD*(v),A;后半部分 SUB#513,A;循环次数为 1536-(2048-V)=V-512BRC=V-512-1 STLMA,BRC STM#pn1,AR4;第二段数据与 PN序列的 起始相亦或 因为PN序列是周期的 RPTBppp2-1 LD*AR3+,A XOR*AR4+,A STLA,*AR5+ppp2: RET*Q信道引导序列*PQ(x)=x15+x12+x11+x10+x6+x5+x4+x3+1*v中记录上一个数据包结束PN1所在周期中的比特位置*输入数据在wa中1536个字,输出在wa中1536个字,周期为2048个字*对V地址进行更新*pianzhi2:STM#wa,AR3;输入数据 STM#wa,AR5 ;输入数据 LD#pn2,A ;引导序列地址 ADD*(v),A ;引导序列起始地址 STLMA,AR4 ;引导序列 LD*(v),A SUB#512,A BCqqq,AGEQ;若V
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!