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

📄 iir_bwt.asm

📁 此源代码用于电力电子逆变器的同步锁相实现
💻 ASM
字号:
 ;===========================================================================
; File Name:	IIR_BWT.asm
;
; Module Name: 	IIR_BWT4					      
;
; Initialization Routine: IIR_BWT4_INIT
;
;
; Description:This is a four_order digital filter	
;
; Target dependency:	C2xx core only
;
;
;=====================================================================================
;		.ref		IIR_BWT4, IIR_BWT4_INIT		;function call
;		.ref		Xin_IIR										;Inputs
;		.ref		Yout_IIR									;Outputs 
;===========================================================================
;Module definitions for external reference.
		.def		IIR_BWT4, IIR_BWT4_INIT		;function call
		.def		Xin_IIR						;Inputs
		.def		Yout_IIR						;Outputs 
;===========================================================================
;Global vars

Xin_IIR				.usect	"IIR_BWT4"	,1
Yout_IIR			.usect	"IIR_BWT4"	,1
H0					.usect	"IIR_BWT4"	,1
H1					.usect	"IIR_BWT4"	,1
H2					.usect	"IIR_BWT4"	,1
H3					.usect	"IIR_BWT4"	,1
H4					.usect	"IIR_BWT4"	,1
H5					.usect	"IIR_BWT4"	,1
H6					.usect	"IIR_BWT4"	,1
H7					.usect	"IIR_BWT4"	,1
X0					.usect	"IIR_BWT4"	,1
X1					.usect	"IIR_BWT4"	,1
X2					.usect	"IIR_BWT4"	,1
X3					.usect	"IIR_BWT4"	,1
X4					.usect	"IIR_BWT4"	,1
X5					.usect	"IIR_BWT4"	,1
X6  				.usect	"IIR_BWT4"	,1
X7					.usect	"IIR_BWT4"	,1
X8					.usect	"IIR_BWT4"	,1
X9					.usect	"IIR_BWT4"	,1
X10					.usect	"IIR_BWT4"	,1
X11					.usect	"IIR_BWT4"	,1
X12					.usect	"IIR_BWT4"	,1
X13					.usect	"IIR_BWT4"	,1
X14					.usect	"IIR_BWT4"	,1
X15					.usect	"IIR_BWT4"	,1
X16					.usect	"IIR_BWT4"	,1
WAY					.usect	"IIR_BWT4"	,1
Y0					.usect	"IIR_BWT4"	,1
Y1					.usect	"IIR_BWT4"	,1
Y2					.usect	"IIR_BWT4"	,1
Y3					.usect	"IIR_BWT4"	,1
Y4					.usect	"IIR_BWT4"	,1
Y5					.usect	"IIR_BWT4"	,1
Y6					.usect	"IIR_BWT4"	,1
Y7					.usect	"IIR_BWT4"	,1
Y8					.usect	"IIR_BWT4"	,1
Y9					.usect	"IIR_BWT4"	,1
Y10					.usect	"IIR_BWT4"	,1
Y11					.usect	"IIR_BWT4"	,1
Y12					.usect	"IIR_BWT4"	,1
Y13					.usect	"IIR_BWT4"	,1
Y14					.usect	"IIR_BWT4"	,1
Y15					.usect	"IIR_BWT4"	,1
Y16					.usect	"IIR_BWT4"	,1
COUNTERD			.usect	"IIR_BWT4"  ,1
COUNTERQ			.usect	"IIR_BWT4"	,1
SUMD				.usect	"IIR_BWT4"	,1
SUMQ				.usect	"IIR_BWT4"	,1
;===============
IIR_BWT4_INIT:
;===============

 		LDP			#Xin_IIR
 		SPLK		#0,Xin_IIR
 		SPLK		#0,Yout_IIR   
        SPLK		#0,X0
        SPLK		#0,X1
        SPLK		#0,X2
        SPLK		#0,X3
        SPLK		#0,X4
        SPLK		#0,X5
        SPLK		#0,X6
        SPLK		#0,X7
        SPLK		#0,X8
        SPLK		#0,X10
        SPLK		#0,X11
        SPLK		#0,X12
        SPLK		#0,X13
        SPLK		#0,X14
        SPLK		#0,X9
        SPLK		#0,X15
        SPLK		#0,X16  
        SPLK		#0,Y0
        SPLK		#0,Y1
        SPLK		#0,Y2
        SPLK		#0,Y3
        SPLK		#0,Y4
        SPLK		#0,Y5
        SPLK		#0,Y6
        SPLK		#0,Y7
        SPLK		#0,Y8
        SPLK		#0,Y10
        SPLK		#0,Y11
        SPLK		#0,Y12
        SPLK		#0,Y13
        SPLK		#0,Y14
        SPLK		#0,Y9
        SPLK		#0,Y15
        SPLK		#0,Y16 
    
        SPLK		#321,H0
        SPLK		#478,H1
        SPLK		#931,H2
        SPLK		#1593,H3
        SPLK		#2356,H4
        SPLK		#3083,H5
        SPLK		#3654,H6
        SPLK		#3968,H7
        SPLK		#0,WAY    
        SPLK		#0,COUNTERD
        SPLK		#0,COUNTERQ
        SPLK		#0,SUMD
        SPLK		#0,SUMQ
	     RET

;===========================================================================
; Routine Name:  IIR_BWT4 
;===========================================================================
IIR_BWT4:
 		SETC			SXM           	; Sign extension mode
       SETC		OVM             ; Overflow mode
     	SPM			1                	; SPM set for Q15 multiplication 	   
		;		SPM			0
		LDP		#Xin_IIR
		LACC	WAY
		BCND	FIR,EQ
		SUB		#1
		SACL	WAY										;no product shift, acc = Q30
        LACC	COUNTERD
        SUB		#7
        BCND	DD1,LT
        SPLK	#0,COUNTERD
        LACC	Xin_IIR
        SACL	X0
        LACC	#0
        LT		X15
        MPY		H0
        LTD		X14
        MPY		H1
        LTD		X13
        MPY		H2
        LTD		X12
        MPY		H3
        LTD		X11
        MPY		H4
        LTD		X10
        MPY		H5
        LTD		X9
        MPY		H6
        LTD		X8
        MPY		H7
        LTD		X7
        MPY		H7
        LTD		X6
        MPY		H6
        LTD		X5
        MPY		H5
        LTD		X4
        MPY		H4
        LTD		X3
        MPY		H3
        LTD		X2
        MPY		H2
        LTD		X1
        MPY		H1
        LTD		X0
        MPY		H0
        APAC
        SACH	Yout_IIR  
        SACH	SUMD
        RET            


DD1		LACC	COUNTERD
		ADD		#1
		SACL	COUNTERD
		LACC	SUMD
		SACL	Yout_IIR
		RET        
        
        
FIR     ADD		#1
		SACL	WAY										;no product shift, acc = Q30
        LACC	COUNTERQ
        SUB		#7
        BCND	QQ1,LT
        SPLK	#0,COUNTERQ
        LACC	Xin_IIR
        SACL	Y0
        LACC	#0
        LT		Y15
        MPY		H0
        LTD		Y14
        MPY		H1
        LTD		Y13
        MPY		H2
        LTD		Y12
        MPY		H3
        LTD		Y11
        MPY		H4
        LTD		Y10
        MPY		H5
        LTD		Y9
        MPY		H6
        LTD		Y8
        MPY		H7
        LTD		Y7
        MPY		H7
        LTD		Y6
        MPY		H6
        LTD		Y5
        MPY		H5
        LTD		Y4
        MPY		H4
        LTD		Y3
        MPY		H3
        LTD		Y2
        MPY		H2
        LTD		Y1
        MPY		H1
        LTD		Y0
        MPY		H0
        APAC
        SACH	Yout_IIR
        SACH	SUMQ
        RET                

QQ1		LACC	COUNTERQ	
		ADD		#1
		SACL	COUNTERQ
		LACC	SUMQ
		SACL	Yout_IIR
		RET

⌨️ 快捷键说明

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