Q:
主题: 关于数字滤波器的书上的疑问
杜先生,您好,在数字滤波器书上的FIR滤波器的章节,我有一些疑问,希望能够得到您的回复
1、在利用MATLAB仿真的时候,我经常看到类似这样的命令:20*log(abs(fft(h_ham,N)))/log(10),我的疑问是为什么要取对数log,20*log()/log(10)是不是一条公式,我在百度查不到相关的公式,请问可不可以解释说明一下这条公式?
还有一些关于VHDL语言的基本语法问题:
1、在滤波器书本的135页的第21行(不算空白行),写着type XinReg is array(15 downto 0)of STD_LOGIC_VECTOR(11 downto 0);,前面是(15 downto 0),而后面是(11 downto 0),前后位数不对应,请问这样定义可以吗?
2、在滤波器书本的136页的第12行,写着Xin_Reg(0)<=Xin,Xin是12位,Xin_Reg(0)是1位,请问这里如何理解?
3、process里面的语句是顺序执行,但是,如果process里面的if语句的内容是一个复合句,那么if语句的复合句是不是并行执行?比如说滤波器书本的136页最上面的那个process部分里面的第二个if语句。
问题可能比较多,希望能够得到您的回复,谢谢!
祝节日快乐!
Q:
你好!
1. abs(fft(h_ham,N))是求傅立叶变换后的幅度,单位是V,20*log(abs(fft(h_ham,N)))/log(10)是将其转换为功率dBW。因为频谱图通常都是以dB为单位的。
2. array(15 downto 0) 是指定义具有16个元素的数组,STD_LOGIC_VECTOR(11 downto 0)表示每个元素为长度12比特的信号。
3.Xin_Reg(0) 表示第1个数组元素,元素为长度12比特的信号。
3. 我近段较长时期内在外出差,手上没有书的程序资料,你所说的process的问题,请查阅《FPGA/VHDL设计入门与进阶》的相关内容。
4. 《数字滤波器的MATLAB与FPGA实现》需要有一定的VHDL编程基础,建议先阅读《FPGA/VHDL设计入门与进阶》,切实掌握VHDL语言,这样理解数字滤波器的程序会容易些。滤波器书中涉及到的VHDL知识,在入门与进阶一书中都有详细讨论。
5. 无论如何,基础是最重要的,相信通过你的努力学习,一定可以取得更大的收获。
祝愉快!
杜勇