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

📄 iir.asm

📁 DSP原理实验源代码付详细实验指导书
💻 ASM
字号:
           		.mmregs
           		.def _c_int00
           		.ref     filter_start
K_DATA_SIZE 	.set     256           ; input data size
K_BUFFER_SIZE	.set     8             ; processing buffer size,must be greater than the number of a and b, and must be power of 2
K_STACK_SIZE 	.set     256		   ; stack size
K_A             .set     3             ; the number of a
K_B             .set     4             ; the number of b
K_CIR           .set    K_BUFFER_SIZE

STACK		.usect	"stack",K_STACK_SIZE
SYSTEM_STACK 	.set 	K_STACK_SIZE+STACK

DATA_DP     .usect "filter_vars",0
filterdata  .usect "filter_vars",K_DATA_SIZE
bufferdatay .usect "filter_vars",K_BUFFER_SIZE*2
bufferdatax .usect "filter_vars",K_BUFFER_SIZE*2

          
           .data
           .global   inputdata
inputdata
	.WORD	75,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16305
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16304
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16304
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16304
	.WORD	21315,	4595,	-2444,	11368,	15066,	-2014,	-8408,	6957
	.WORD	12879,	-1643,	-5536,	11893,	19128,	4966,	428,	16304

          
           .text
           .asg AR2,ORIGIN
           .asg AR3,INPUT
           .asg AR4,FILTER
           .asg AR5,OUTPUT
 
_c_int00
           SSBX   FRCT
           SSBX   INTM
           LD     #DATA_DP,DP
           STM    #STACK,SP
           CALL   filter_start
           NOP
           NOP
           NOP
LOOP 
           B LOOP
                       
***************************************************************
*   Y(z)    0.1589 + 0.4768*z-1 + 0.4768*z-2 + 0.1589*z-3
*  ------=----------------------------------------------------
*   X(z)      1 - (-0.1268*z-1 + 0.5239*z-2 - 0.1257*z-3)
***************************************************************

          .def    b1,b2,b3,a1,a2
          .def    filter_start

b1        .set    1456H        ; b1=0.1589 
b2        .set    3D07H        ; b2=0.4768  
b3        .set    3D07H        ; b3=0.4768
b4        .set    1456H        ; b4=0.1589 
a1        .set    -103AH       ; a1=-0.1268
a2        .set    430FH        ; a2=0.5239
a3        .set    -1016H       ; a3=-0.1257
          
          .text
filter_start:
          STM    #inputdata,ORIGIN
          STM    #bufferdatax,INPUT
          STM    #bufferdatay,FILTER
          STM    #filterdata,OUTPUT
          STM    #bufferdatay,FILTER
          STM    #bufferdatax,INPUT
          ;filtering
          STM    #K_DATA_SIZE-3-1,BRC   			  ;let go the first 3 values as initial y
          STM    #K_CIR,BK
          STM    #1,AR0                   ;set the circular buffer size and the step size
          RPTB   filter_end-1
          ;waiting for input                ;wainting for interrupt when in hardware processing
          MVDD   *ORIGIN+,*INPUT         
     	  RPT    #K_B-1-1                       ; the number of b (b1,b2,b3 b4 here)
     	  MAR    *INPUT-0%                  ;adjust input to its proper place
          MPY    *INPUT+0%,#b4,B            ;B=b4*x(i) 
          LD     B,A
          MPY    *INPUT+0%,#b3,B            ;B=b3*x(i+1) 
          ADD     B,A
          MPY    *INPUT+0%,#b2,B            ;B=b2*x(i+2) 
          ADD     B,A
          MPY    *INPUT+0%,#b1,B            ;B=b1*x(i+3)
          ADD    B,A                      ;y(x+3)=A
          MPY    *FILTER+0%,#a3,B           ;B=y(i)*a3
          ADD    B,A                      ;A=A+B  
          MPY    *FILTER+0%,#a2,B           ;B=y(i+1)*a2
          ADD    B,A                      ;A=A+B  
          MPY    *FILTER+0%,#a1,B           ;B=y(i+2)*a1
          ADD    B,A                      ;y(x+3)=A+B
          STH    A,*FILTER-0%               ;FILTER++  
          STH    A,*OUTPUT+
          MAR    *FILTER-0%                 ;adjust FILTER to its proper place

filter_end:
          NOP     
          RET

          .end
          
          
          
          
          
                
           
      

⌨️ 快捷键说明

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