网易博客日志:LMS算法时序分析及截位分析

说明:

由于网易已停止博客服务,读者无法查阅我的网易博客日志,近期将逐步将网易博客中的典型问题交流情况在CSDN博客中发布出来,敬请关注!

杜老师您好,我买了《数字滤波器的MATLAB与FPGA实现 Altera/Verilog版》一书,一些问题恳请杜老师解答一下。
在第七章第三节   自适应均衡器的FPGA实现这一部分中:
1、在7.4.3节    1.确定运算字长及数据截位方法中
      由e3(n)到W3(n),为什么中间变量小数点关系没有变化,不是需要乘步长因子u吗?
2、同样在该节  2.计算时钟频率并分配各步骤所需的时钟周期中
     为什么要进行时钟周期分配, 并且如何在Verilog程序中实现出的
3、在自适应均衡器的设计中,杜老师有分模块化的程序吗?  只有一个Equalizer.v文件看着有些吃力,程序中截位也没有看懂,似乎和前面分析的不太一样。

 

 

回复:

1) 符号LMS算法有两种形式,见书中式(7-14)\(7-15),两种形式都能够正常工作;
2)  式(7-23)中表示校正算法用的符号算法,与FPGA程序实现时的算法没有对应起来,这是书中的失误,在新版中将进行更正为以实例实现为准;
3)  图7-19中的e3(n)到w3(n)没有变化,是指在计算e3(n)时没有计算u的乘法运算,在计算w3(n)时才计算u的算法;
4) p251是,Error=E_out[20:5]只是取高16比特,符号算法只取其符号,实际上只与最高位(符号位)相关;后续计算DW时采取对Xin_Reg右移7位的方法,实现乘以1/128的运算。由于Xin_Reg的符号位在bit15与bit14之间,DW的符号位在bit14与bit13之间,因此将
Xin_Reg赋值给DW时本身需要右移1位。这样,相当于对赋值后的Xin_Reg再右移6位。由于式(7-23)中,计算dw时是乘以2u,因此程序中的u值实际上是1/128。

5)  为什么要进行时钟周期分配,因为lms算法决定要求在一个数据采样周期内完成权值更新。Verilog中的触发器串联级数就是运算周期数,请参考verilog语法方面的教程。
6) 在改版中,我会考虑将这个文件用多个模块来写,便于理解。
7) 请先理解算法原理,理解书中第3章关于数字运算处理的内容,便于理解算法的实现。
8)感谢您的问题,让我发现书中几处勘误。
祝愉快

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜勇老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值