www.pudn.com > DSPstudyandexample.rar > C6_4_3.ASM


			.title  	"CVSDdecoder.asm" 
            	.mmregs   
STACK       .usect		"STACK",10h             
            	.global 	nit, Begin 
     
DeltaMax		.set		1280h 
DeltaMin		.set		65h 
Beta    		.set		99h 
Delta0CVSD   .set		10h 
ORD			.set 		6h 
ORD1		.set 		5h  
            	.data 
TBL:        	.word		0,1,0 
 
Coefa:		.word 	-3888933*32768/1000000 		 
			.word 	6640744*32768/1000000 		 
			.word 	-6086001*32768/1000000 		 
			.word 	2986736*32768/1000000 		 
			.word 	-627688*32768/1000000 		 
			 
Coefb:		.word		32850*32768/1000000 		 
			.word 	-57239*32768/1000000 		 
			.word 	36818*32768/1000000		 
			.word 	36818*32768/1000000 		 
			.word 	-57239*32768/1000000 		 
			.word 	32850*32768/1000000 		 
            	.bss		ThreeJudge,3 
            	.bss 		Judge,1 
            	.bss		InData,1 
            	.bss		OutData,1 
            	.bss		DeltaCVSD,1 
            	.bss		ValPreCVSD,1 
            	.bss 		FilterX,6 
            	.bss 		CoefA,5 
            	.bss 		FilterY,5 
            	.bss 		CoefB,6             
             
            	.text 
Init:        	STM		#ThreeJudge,AR5       
             	RPT		#3                    
             	MVPD   TBL,*AR5+             
             	STM		#CoefA,AR5 
             	RPT		#5 
             	MVPD	Coefa,*AR5+ 
             	STM		#CoefB,AR5 
             	RPT		#6 
             	MVPD	Coefb,*AR5+ 
              
             	STM		#ThreeJudge,AR5       
             	ST 		#20,*(DeltaCVSD)      
             	ST 		#0,*(ValPreCVSD)      
             	ST		#1,*(Judge)           
             	ST     	#1,*(InData)          	 
             
Begin:       	LD 		*(InData),A           
			STL		A,*AR5+       
					
			AND		*(Judge),A    
			BC 		ONE,ANEQ 
			 
			 LD 		#0,A		 
			 ADD	*AR5+,A 
			 ADD	*AR5+,A 
			  
			 BC		L1,ANEQ       
			  
			 STM 	#DeltaCVSD,AR6         
			 STM	#Beta,T                
			 MPY	AR6,A                  
			 B 		L2 
			  
L1:			 LD 		#DeltaCVSD,A   
             	 STM	#Delta0CVSD,AR3;      		 
             	ADD 	AR3,A                 		 
             						 
L2:          	STM		#DeltaMax,AR0          
			STL		A,AR4          
             	CMPR	LT,AR4                		 
             	BC		L3,TC                  
             	LD 		AR0,A                  
              
             						 
L3:          	STM		#DeltaMin,AR0         	 
			STL		A,AR4           
             	CMPR	GT,AR4                		 
             	BC		L4,TC                 	 
             	LD 		AR0,A                 	 
 
L4:          	STL 		A,*(DeltaCVSD)        	 
             	STL 		A,AR4                 	 
             	STM 	#ValPreCVSD,AR6       		 
             	LD 		*(AR6),A              	 
             	SUB 	AR4,A                 		 
             	STL		A,*(ValPreCVSD)       	 
ONE:         						 
			 LD 		#1,A 
			 AND	*AR5+,A 
			 AND	*AR5+,A 
			  
			 BC		L5,ANEQ        
			  
			 STM 	#DeltaCVSD,AR6         
			 STM	#Beta,T                
			 MPY	AR6,A                  
			 B 		L6 
			  
L5:			 LD 		#DeltaCVSD,A   
             	 STM	#Delta0CVSD,AR3;      		 
             	 ADD 	AR3,A                 		 
             						 
L6:          	 STM	#DeltaMax,AR0         		 
			 STL		A,AR4          
             	 CMPR	LT,AR4                		 
              
             	 BC		L7,TC                  
               LD 	AR0,A                 	 	 
             						 
L7:          	 STM	#DeltaMin,AR0         		 
			 STL		A,AR4  
             	 CMPR	GT,AR4                	 
             	 BC		L8,TC                  
             	 LD 		AR0,A                  
L8:			 STL 	A,*(DeltaCVSD)   
             	 STM 	#ValPreCVSD,AR4       	 
             	 ADD 	*AR4,A                	 
               STL		A,*(ValPreCVSD)  
									  
IIR:			 STM	#CoefB,AR2 
			 STM	#FilterX,AR3			 			  
			 LD 		*(ValPreCVSD),A 
             	 STL		A,*AR3      		   	 
             	 MPY 	*AR2+,*AR3+,A                      
             	 RPT	#4 
		      MAC	*AR2+,*AR3+,A		 
		     STM		#CoefA,AR2 
		     STM		#FilterY,AR3 
		     RPT		#4 
             	MAS		*AR2+,*AR3+,A		 
             	STM		#FilterX+4,AR3 
             	RPT		#3 
		     DELAY	*AR3-  
		     STM		#FilterY+3,AR3 
             	RPT		#2 
              DELAY	*AR3-             
S:            STL		A,*(FilterY)          	 
             .END