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

📄 fir滤波器设计程序.txt

📁 此文件是基于MATLAB环境下的关于FIR滤波器设计程序 其中包括了MATLAB的源程序和采用循环缓冲区实现的汇编源程序和连接程序。
💻 TXT
字号:
 设计一个FIR低通滤波器,其设计参数:滤波器阶数问40,截止频率为W=0.35π,W2=0.4π。
 其MATLAB函数为:  
 f=[0  0.35  0.4  1]
    m=[1  1  0  0]
    b=fir2(39,f,m) 

        
汇编源程序为:
 .title   "fir.asm"
                 .mmregs
                 .bss   y,1
K_FIR_BFFR       .set   40
PA0              .set   0
PA1              .set   1
FIR_COFF_TABLE   .usect  "FIR_COFF",40     ;定义数据存储空间
D_DATA_BUFFER    .usect  "FIR_BFR",40      ; 定义数据存储空间
                 .data
COFF_FIR_START:  .word   -7*32768/10000,     3*32768/10000       ;b0,b1
                 .word   14*32768/10000,     10*32768/10000      ;b2,b3
                 .word   -16*32768/10000,    -38*32768/10000     ;b4,b5
                 .word   -8*32768/10000,     64*32768/10000      ;b6,b7
                 .word   81*32768/10000,     -30*32768/10000     ;b8,b9
                 .word   -169*32768/10000,   -118*32768/10000    ;b10,b11
                 .word   162*32768/10000,    323*32768/10000     ;b12,b13
                 .word   83*32768/10000,     515*32768/10000     ;b14,b15
                 .word   -689*32768/10000,   247*32768/10000     ;b16,b17
                 .word   2051*32768/10000,   3523*32768/10000    ;b18,b19
                 .word   3523*32768/10000,   2051*32768/10000    ;b20,b21
                 .word   247*32768/10000,    -689*32768/10000    ;b22,b23
                 .word   -515*32768/10000,   83*32768/10000      ;b24,b25
                 .word   353*32768/10000,    162*32768/10000     ;b26,b27
                 .word   -118*32768/10000,   -169*32768/10000    ;b28,b29
                 .word   -30*32768/10000,    81*32768/10000      ;b30,b31
                 .word   64*32768/10000,     -8*32768/10000      ;b32,b33
                 .word   -38*32768/10000,    -16*32768/10000     ;b34,b35
                 .word   10*32768/10000,     14*32768/10000      ;b36,b37
                 .word   3*32768/10000,      -7*32768/10000      ;b38,b39
                 .text
                 .def    FIR_INIT
                 .def    FIR_TASK
FIR_INIT:        SSBX    FRCT              ;设置小数乘法
                 STM     #FIR_COFF,ARS     ;AR1指向B0单元
                 RPT     #K_FIR_BFFR-1     ;设置传输次数
                 MVPD    #COFF_FIR_START,*AR5+        ;系数BI传输至数据区
                 STM     #D_DATA_BUFFER,  AR4         ;D_DATA_BUFFER缓冲区清0
                 RPTZ    A,#K_FIR_BFFR-1              
                 STL     A,*AR4+
                 STM     #(D_DATA_BUFFER+K_FIR_BFFR-1),AR4
                 STM     #(FIR_COFF_TABLE+K_FIR_BFFR-1),AR5
                 STM     #-1,AR0                       ;设置双操作数减量
                 LD      #D_DATA_BUFFER,DP             ;设置页指针
                 PORTR   PA1,@D_DATA_BUFFER            ;输入X(N)
FIR_TASK:        STM     #K_FIR_BFFR,BK
                 RPTZ    A,#K_FIR_BFFR-1               ;重复操作
                 MAC     *AR4+0%,*AR5+0%,A             ;双操作数乘法-累加
                 STH     A,@y                          ;暂存Y(N)
                 PORTW   @y,PA0                        ;输出Y(N)
                 BD      FIR_TASK                      ;循环
                 PORTR   PA1,*AR4+0%                   ;输入最新样本,并修正AR3
                 .end



汇编源文件的链接文件:
/*SOLUTION   FILE   FOR   FIR.CMD*/
vectors.obj
fir.obj
-o fir.out
-m fir.map
-e fir_init
MEMORY
{        
            PAGE0: EPROM:        org=0E000H     len=1000H
                   VECS :        org=0FF60H     len=0080H
            PAGE1: SPRAM:        org=0060H      len=0020H
                   DARAM:        org=0080H      len=1380H
}
SECTIONS
{
            .text     : > EPROM            PAGE0
            .vcetors  : > VECS             PAGE0
            .data     : > EPRAM            PAGE0
            .bss      : > SPRAM            PAGE1
            FIR_BFR  : align(128){}> DARAM    PAGE1
            FIR_COFF :align(128){} > DARAM    PAGE1
}

⌨️ 快捷键说明

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