当前位置:文档之家› 基于FPGA的数字滤波器的设计与实现

基于FPGA的数字滤波器的设计与实现


分积 p1( n) 和 p2( n) 可分别先垂直相加后再水平相加, 最后的结果是一致的, 得 1010。后一种对部分积先进 行水平相加的方法就是查找表法。由于 FIR 滤波器的 h( n) 均为常数, x( n) 的最低位为 1001, 则 p1( n) 的值为 h( 0) +h( 3) , 其高位为 1010, 则 p2( n) 的值为 h( 1) +h( 3) 。 因此可利用 FLEX10K系列的查找表结构, 先将 h( n) 的 各种组合存入查找表, 这样卷积运算可用加法来代替。 将 p2( n) 左移一位与 p1( n) 相加即可。对于笔者所要实 现的 16 阶线性相位 FIR 滤波器来说, 需要 2 个查找表 来实现, 这是由 FLEX10K 系列器件的四输入查找表结 构来决定的。
LU Yu- peng, QIU Hong- an, TIAN Duo- hua, SHAO Li- qun
( College of Marine, Northwest Polytechnical University, Xi′an 710072, China)
【Abstr act】The design scheme of FIR linearity phasic digital filter based on FPGA is introduced. The FPGA four
笔者设计的低通滤波器截止频率为 100 Hz, 采用 窗函数设计法得到 h( n) , 利用 MATLAB 强大的计算功
能 先 求 得 理 想 脉 冲 响 应 hd( n) , 然 后 在 MATLAB 中 调 用窗函数 w( n) , 从而计算出 h( n) 的具体数值。
4 FIR 滤波器的 VHDL 描述及仿真
0110
h( 1) +h( 2)
h( 5) +h( 6)
0111 1000 1001
h( 0) +h( 1) +h( 2) h( 3)
h( 0) +h( 3)
h( 4) +h( 5) +h( 6) h( 7)
h( 4) +h( 7)
1010 1011 1100
h( 1) +h( 3) h( 2) +h( 3) h( 0) +h( 1) +h( 3)
电声器件与电路
T E le c t r o a c o u s t ic P a r t s a n d Cir c u i
文章编号: 1002- 8684( 2008) 05- 0023- 03

基于 FPGA 的数字滤波器的设计与实现 ·实用设计·
陆宇鹏, 邱宏安, 田多华, 邵立群 ( 西北工业大学 航海学院, 陕西 西安 710072)
该文设计的 16 阶 FIR 滤波器 由 上 述 模 块 逻 辑 组 成, 其原理如图 2 所示。设计系统工作过程为: 由于累 加器频率和采样频率不同, 故用一个计数器作为分频 器。每 8 个“clk”时钟产生 1 个有效的时钟周期。即每 一 个 clk 时 钟 使 “cout10”加 1, “cout10”由 “0000”到 “1000”, 从而输出 1 个时钟周期。此时, 一组 8 bit 二进 制数并行输入, 在第 1 个有效时钟周期的上跳沿, 8 bit 二 进 制 数 的 最 低 位 xin18 经 时 延 器 Y7[3…0]输 出 , 由 “sel8”的 输 出 “sel8[3… 0]”决 定 存 储 器 中 对 应 的 事 先 算 好存入的数值, 此数值经“nomout[13…0]”输出, 并进入 累加器中; 在第 2 个有效时钟周期的上跳沿, 8 bit 二进 制 数 的 第 2 位 xin17 经 时 延 器 Y6[3… 0]输 出 , 同 样 由 “sel8”的 输 出 “sel8[3…0]”决 定 的 乘 积 值 , 送 入 累 加 器 中……直到第 8 个有效时钟 周期的上跳沿后, 8 bit 二
2 系数的量化
Matlab 模拟得到的脉冲成形滤波器的系数都是浮 点数, 转换成定点系数需要进行量化。理论上使量化误 差最小的定点系数在数轴上是均匀分布的, 而 CSD 编 码的系数在数轴上是非均匀分布的。存在空隙, 即使无 限增加字长也不能减小这个空隙, 要减小这个空隙只 有增加非零位个数。而非零位个数 L 非常重要, 直接关 系到硬件规模, L 每加 1, 每个抽头就需要增加一个加
( 2) 存储器模块通过编程实现, 利用 VHDL 硬 件 描述语言将事先算好的各模块系数存于逻辑单元中, 以供选择器选择输出送到累加器中进行加法运算。
( 3) 累加器模块采用文本编辑实现, 利用计数器 的输出状态控制选择加数, 与前一次和的输出反馈值 相加, 共加 8 次, 第 9 个时钟周期送出结果并使输出保 持不变, 第 10 个时钟周期累加器清零。这一模块集中 了前四阶的 8 位信号的全部系数, 每采样一次就会有 8 个数据( 每位信号一个数据) 在时钟控制下输出到累 加器中进行累加。
于查找表的 FIR 滤波器具有速度快、占用资源少的特点。采用流水线技术对加法运算进行处理, 速度进一步提高。
【关键词】FPGA; FIR 滤波器; VHDL; 四输入查找表
【中 图 分 类 号 】 T N713
【文 献 标 识 码 】 A
Design of FIR Filter Based on FPGA
h( 5) +h( 7) h( 4) +h( 5) +h( 7)
h( 6) +h( 7)
1101
h( 0) +h( 2) +h( 3)
h( 4) +h( 6) +h( 7)
1110 1111
h( 1) +h( 2) +h( 3) h( 0) +h( 1) +h( 2) +h( 3)
h( 5) +h( 6) +h( 7) h( 4) +h( 5) +h( 6) +h( 7)
import LUT configuration is used to make up of vector multiplication, and the VHDL source program and
simulating results are given. The design error cause and improving measure are discussed. Compared with common
被乘数 h( n)
01 11 10 11
乘数 s( n)
× 11 00 10 01
部分乘积 p1( n)
01 00 00 11 = 100
部分乘积 p2( n)
+ 01 00 10 00 = 011
011 000 100 011 = 1010 图 1 无符号并行矢量乘法器的实现
其中, h( n) 为 FIR 滤波器的冲击响应, s( n) 为 FIR 滤波器对称的输入项之和。对应乘数低位和高位的部
【Key wor ds】FPGA; FIR filter; VHDL; LUT
1 指标的确定和滤波器系数的提取
根据工程实际需要, 选定 FIR 的性能指标如下: 采 样频率 fs=1 000 Hz; 截止频率 fc=100 Hz; 类型: 低通; 阶 数: 16 阶; 8 bit 输入和输出数据宽度。
FIR 滤 波 器 的 系 数 可 用 窗 函 数 的 方 法 来 获 得 , 窗 函数法的基本思想是使其具有最窄主瓣宽度和尽可能 小的旁瓣[1]。笔者选择利用矩形窗进行设计, 因为在编 制 LUT 表的过程中运算量较小。若不选择矩形窗而选 择其他窗函数进行设计也是可行的, 因为 ROM 的容量 很大, 在编制查找表时, 常常只用到它的一小部分空 间, 只是在编制查找表时计算量会变得很大。
该文的 16 阶线性相位的查找表如表 1 所示。
表 1 16 阶线性相位的查找表
s( n) 0000 0001 0010
LUT1 0
h( 0) h( 1)
LUT2 0
h( 4) h( 5)
0011
h( 0) +h( 1)
h( 4) +h( 5)
0100 0101
h( 2) h( 0) +h( 2)
h( 6) h( 4) +h( 6)
【摘 要 】 提 出 了 一 种 基 于 FPGA 的 FIR 线 性 相 位 滤 波 器 设 计 方 案 , 充 分 利 用 FPGA 四 输 入 查 找 表 LUT 结 构 构 成
向量乘法器, 给出了对应的 VHDL 源 程序 及 仿 真结 果 , 并 讨论 了 设 计误 差 原 因及 改 进 措施 。与 普 通滤 波 器 相比 , 基
法运算。 h( n) 是通过窗函数求得的, 在实际编写查找表时,
由于数据全部采用二进制的补码形式, 因此若不改变 表中 h( n) 的形式直接编制, 则得到的结果会因为个别 数据产生溢出而发生错误, 如当有 2 个同符号数相加 时就可能产生溢出, 溢出现象是由于得到运算结果超 出了 8 bit 补码所能表示的数据范围。
filter, the filter based LUT has the advantages of quick speed and less resource. The production line technology is
employed to carry out treatment on addition arithmetic, and to improve speed.
( 4) 控制器模块的作用是产生控制信号对延迟、 数据存储以及累加器模块进行控制, 以使它们按一 定 的 形 式 组 合 在 一 起 实 现 滤 波 器 的 功 能 。控 制 器 模 块 在 接 收 到 A/D 转 换 结 束 信 号 后 , 依 此 产 生 延 迟 控 制 信 号 、存 储 控 制 信 号 、累 加 控 制 信 号 和 滤 波 结 果 输 出 信号等各种控制信号, 使上述模块按照一定的时序 进行操作。
进制数与 h( 0) , h( 1) , h( 2) , h( 3) 的 各 种 可 能 乘 积, 而 第 2 个存储器中存储的是 h( 4) , h( 5) , h( 6) , h( 7) 分别 与每个 8 bit 二进制数所有可能的乘积。将 2 个存储器 的输出进行移位相加, 其输出即为最后数值。
相关主题