注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

构建数字通信技术理论与实践之间的桥梁

孤云出岫去留一无所系 朗镜悬空静躁两不相干 菜根谭.明.洪应明

 
 
 

日志

 
 

《数字滤波器》交流-串行结构FIR设计问题  

2013-03-18 19:22:06|  分类: 数字滤波技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

你好!
        1.  这是一个全串行的FIR滤波器设计实例,实例中只使用了一个乘法器和加法器就完成了FIR滤波器的8次乘加操作。根据FPGA的速度与面积互换原则,采用这种串行结构,FPGA的系统时钟是数据速率为8倍(实际工程中,需要根据滤波器长度而确定)。实例中,数据速率为2KHz,FPGA处理时钟为16KHz(第134页倒数第6行的“1.6MHz”应修改为“16KHz”。
         2. 由于FPGA系统时钟是数据速率的8倍,因此程序中设计了一个周期为8 的计数器count,当count计数到7时,将一个输入数据Xin存入到寄存器中Xin_Reg中;当然你可以在count计数到1或者其他数值时存入寄存器,这对程序不会产生任何影响。
         3. 第137页中的pFilter进程是用于对计算出的乘法结果进行累加,最终输出滤波结果,其延时当然需要考虑到前端乘法及加法器延时。如果乘法器及累加器延时大于2或者小于2,则需要调整清零时的计数器值了,正如程序注释中所讲的“更好的方法是通过行为仿真查看”,请你在modelsim仿真界面上查看一下各运算步骤的时延关系。
          4. 第二个问题:wait until rising_edge(count(2)),实际上是将count(2)当做时钟信号,tst中clk是仿真的FPGA系统时钟,则数据速率当然是clk的1/8,count(2)只是clk的8分频信号而已。这和源代码延时计数器2没有什么关系。

祝愉快!
                                     杜勇。


发送日期: 2013年3月16日, 星期六, 4:08 下午
主题: 《数字滤波器的matlab与fpga实现》问题求教

老师你好,我在读《数字滤波器的matlab与fpga实现》遇到一个问题不是很明白,向你请教:
                1.本书137页,讲到--考虑到乘法器及累加器的延时,需要计数器为2----------
                   我在读时发现需要计数器2很精确,如果乘法器及累加器延时大于2或者小于2,当计数器为2时清零,这时可能得到的结果我该例程就可能出现问题,还请老师详细指导下,在计数器为0时送入数据。
                2.我在读“Chapter_4\E4_7_FirSerial\FirFullSerial\FirFullSerial”的tst.vhd 例程中,这是仿真的程序,发现wait until rising_edge(count(2)),这时在计数到4时,输入数据和输出数据,这和源代码的计数为0时送入数据不相符,同时和源代码延时计数器2有什么关系
                 谢谢

  评论这张
 
阅读(148)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017