初始目的:将S域的传输函数用verilog实现
步骤:
1、拿到的传输函数是,numerator coefficents和Denominator coefficient。前者为[b1,b0],后者为[a2 ,a1,a0]。那么其对应的数学公式是H(S)=(b1S+b0)/(a2S^2+a1S+a0)。
2、将S域的传输函数转换为Z域,在matlab中将S域的传输函数表达出来。HS=tf([b1,b0],[a2,a1,a0])。使用c2d函数将S域转换到Z域,HZ=c2d(HS,Ts,‘method’)。其中Ts是采样周期,method是变换方法。因为S到Z无法实现完全等价的转换,所以只能采取逼近的方式,matlab提供了五种方法。细节可以通过help c2d来查看。得到HZ后可以看到对应的HZ数学公式,HZ=(c2Z^2+c1Z+C0)/(d2Z^2+d1Z+d0)
3、HZ到verilog的转换。将HZ转换一下,最高次幂取0。HZ=(c2+c1Z^-1+c0z-2)/(d2+d1Z-1+d0Z-2)。在时域Z^-n,代表n个演示单元。所以转换为输入输出的关系就是。1=c2x(n)+c1x(n-1)+c0x(n-2)/d2y(n)+d1y(n-1)+d2*y(n-2)。依据此公式就可以得出verilog代码了。
4、知道了HZ的系数,如何在matlab中直接获得Z域的传输函数。HZ=tf(N,D,Ts)。可以看出,依旧使用的是tf函数,只是和S域相比增加了采样周期Ts。因为S是连续的,而Z是离散的。
5、如何快速得到波特图。bode(H),H是Z域或者S域的传输函数。
6、知道Z域的系数,如何滤波。filter(N,D,SRCDAT)。详细可查看help filter。
7、自己手写一个滤波器,如何得到其波特图。将[1,zeros(1,m)])作为数据源给滤波器。滤波后的频域功率谱可以简单的看到幅频特性。