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

📄 example 4-5.asm

📁 《基于TI DSP的通用算法实现》程序代码
💻 ASM
字号:

;Example 4 - 5. Modified Direct-I IIR Filter ASM Listing for the TMS320C54x DSP

;***************************************************************
; New IIR Low pass filter design
; Language : C54x
; Filter type : Elliptic Filter
; Filter order : 4 order (cascade: 1 order + 2nd order + 1 order)
; canonical direct from I
; cut freq. of pass band : 200 Hz
; cut freq. of stop band : 500 Hz
; Designer : Mandy Tsai
; Date : Feb,20,1996
; ***************************************************************

	.mmregs
	.def begin, N
N 	.set 2 		; length of IIR filter
Q_FACT 	.set 32768
	.bss d,3*2
	.bss X,1
	.bss Y,1
	.data

* Q31 format

table
;*
;* SECOND–ORDER SECTION # 01
;*
	.word 19381 	;B2
	.word –23184 	;B1
	.word 19381 	;B0
	.word –26778 	;A2
	.word 29529 	;A1/2
;*
;* SECOND-ORDER SECTION # 02
;*
	.word 11363 	;B2
	.word –20735 	;B1
	.word 11363 	;B0
	.word –30497 	;A2
	.word 31131 	;A1/2

	.sect ”vectors” ;define a reset vector

	B begin

begin .text ;the start of the program
	STM #1111111110100000b,PMST ;initial PMST
	STM #0010001100000000b,ST1 ;initial ST1
	STM #0,SWWSR ;zero wait state
	SSBX OVM
	SSBX FRCT ;FRCT=1 : output of multiply will left shift 1 bit automatically

	SSBX	SXM
	STM 	#d,AR3 			;AR3:d(n),d(n–1),d(n–2)
	RPTZ 	A,#7 				;initial d(n),d(n–1),d(n–2)=0
	STL 	A,*AR3+
	STM 	#2,AR0
INLOOP:
	STM 	#d+7,AR3 			;AR1:d(n),d(n–1),d(n–2)
	STM 	#table,AR4 		;AR2:coeff of IIR filter –a2,–a1,b2,b1,b0
	MPY 	*AR4+,*AR3–,A 	;A=d(n–2)*b2
	MAC 	*AR4+,*AR3,A 		;A=A+d(n–1)*b1
	DELAY 	*AR3–
	MAC 	*AR4+,*AR3,A 		;A=A+d(n)*b0
	DELAY 	*AR3
	PORTR	100H,*AR3
	LD 		*AR3,B
	STH 	B,11,*AR3– 		;left shift by 5 to scale the input
	STM 	#N–2,BRC
	RPTB 	ELOOP–1
LOOP:
; feedback_path
	MAC 	*AR4+,*AR3–,A 	;A = A+d(n–2)*(–a2)
	MAC 	*AR4,*AR3,A 		;A = A+d(n–1)*(–a1)
	MAC 	*AR4+,*AR3–,A
	STH 	A,*AR3+0 			;save d(n)
; forward_path
	MPY 	*AR4+,*AR3–,A 	;A=d(n–2)*b2
	MAC 	*AR4+,*AR3,A 		;A=A+d(n–1)*b1
	DELAY 	*AR3–
	MAC 	*AR4+,*AR3,A 		;A=A+d(n)*b0
	DELAY 	*AR3–
ELOOP:
	MAC 	*AR4+,*AR3–,A
	MAC 	*AR4,*AR3,A
	MAC 	*AR4+,*AR3,A
	DELAY 	*AR3
	STH 	A, *AR3
	PORTW 	*AR3, 200h 		;write the result to a file
	B 	INLOOP

⌨️ 快捷键说明

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