主要的程序进程如下:
if glrn=0'then
f_din<=0'.
f_dout<=0'.
elsif clk' event and clk=1'then
f_din<=din;
shifter(8 downto 1)<=shifter(7 downto 0);----寄存器数据依次向高位移动一位
shifter(0)<=f_din;----寄存器最低位赋值为输入信号当前状态值
if shifter(0)=1'then-----将寄存器内的n个值分别赋给n个变量
shift0:=1;
else
shift0:=0;
end if;
...........
if shifter(8)=1'then
shift8:=1;
else
shift8:=0;
end if;
if (shift0+shift1+shift2+shift3+shift4+shift5+shift6+shift7+shift8)>=5then----判决n个值的和
f_dout<=0'.
end if;
dout<=f_dout;------输出滤波后的信号