# 自适应滤波器
#### 介绍
verilog下的可变字长,32阶自适应滤波器
## 内容基础
基于LMS算法和FIR滤波器,进行自适应滤波。详细内容参考,裴师兄研究生毕业论文。
## 基础模块
| 模块名 | 功能 |
| ---------------------- | ------------------------ |
| IS_reg | 输入信号移位寄存 |
| forward_filter | fir滤波器 |
| error_compute | 计算期望值和实际值的误差 |
| backfoward_coe_upgrade | 依据lms算法的权重更新 |
* **IS_reg**
输入信号寄存器由32个相同字长的寄存器连接构成,这些结果将由backforward_coe_upgrade用来更新权重,forward_filter模块用来进行滤波
* **foward_filter**
包含乘法器阵列模块(mult_array)和并行压缩模块(parallel_compressor)。以上两个模块作为近似自适应滤波的处理重点,目前只完成了基本的框架搭建,后续使用近似的方法优化
* error_compute
依据期望值和实际输出计算误差,返回值存在缩减,因为输出值的位宽和期望值不同。
* backforward_coe_upgrade
由coe_upgrade单元构成,基于每一个IS输入,期望误差和上一次权重计算出下一个权重。
* error_compute
**裴哥定标理解**在这个模块里,因为实际输出值是37位,但是之后需要使用乘法器运算,它的位宽需要是16,需要约化。由于信号幅值都是1,它们被扩展到16位时(补码),相当于前两位整数加上后14位小数,表示从-1到+1,而乘法运算的结果也应该再-1到+1之间,因为他是32个值相加,每一位乘法器输出的绝对值小于1,所以它的绝对值小于32位,整数部分需要用6位整数描述。**但是**,因为期望的输出值(归一化为16位)是两个幅值为1的信号叠加,它的幅值为2,也可以表示为2位整数和14位小数,所以实际输出的范围也应该是-2到2,所以也可以是2位整数和14位小数表示。这里14位小数取小数点之后的前14个,整数部分取第0位和之前任意一位。(整数的0位表示大小,前面的都应该是相同的符号位拓展,所以无所谓)
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
adaptive-filter-master.zip (21个子文件)
adaptive-filter-master
signal
signal-generate.py 4KB
excitation_signal.txt 83KB
expect_signal.txt 83KB
response_signal.txt 1.07MB
test.py 86B
RTL
error_compute.v 619B
test.v 5KB
adptive_filter.v 6KB
rtl_generate.py 2KB
mult_array.v 6KB
mult.v 240B
forward_filter.v 7KB
backforward_coe_update.v 7KB
IS_reg.v 5KB
parallel_compressor.v 2KB
coe_upgrade.v 753B
sim
tb_coe_upgrade.v 549B
tb_backforward_coe_upgrade.v 4KB
tb_adptive_filter.v 2KB
tb_forward_filter.v 4KB
README.md 2KB
共 21 条
- 1
资源评论
Older司机渣渣威
- 粉丝: 8
- 资源: 202
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功