当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]介绍了一种利用ALTERA公司的复杂可编程逻辑器件(CPLD)快速卷积法实现数字滤波器的设计

当前,无论在军事还是民用方面,对于数字信号处理的实时性、快速性的要求越来越高。可编程逻辑器件(PLD)由于在速度和集成度的飞速提高,越来越多的电子系统采用可编程逻辑器件来实现数字滤波。
Altera公司的FLEX10K是工业界第一个嵌入式的PLD,具有高密度、低成本、低功率等优点。器件的主要结构特点是除主要的逻辑阵列块(LAB)之外,首次采用了嵌入阵列块(EAB)。每个阵列块包含8个逻辑单元(LE)和一个局部互连。一个LE又由四输入查找表(LUT)、一个可编程寄存器和专用的载运和级联功能的信号通道所组成。
在FLEX10K器件中,把每一组逻辑单元(8个LE)组成一个逻辑阵列块(LAB),所有的逻辑阵列块(LAB)排成行和列。在一行里还包含一个单一的EAB。多个LAB和多个EAB采用快速通道互相连接。
嵌入式阵列块(EAB)是FLEX10K系列器件在结构设计上的一个重要部件。它是一个输入端口和输出端口都带有寄存器的一种灵活的RAM块,嵌入阵列块(EAB)组成的规模和灵活性对比较多的内存是适宜的。功能包括乘法器、向量的标准和误差矫正电路等。在应用中,这些功能又能够联合完成数字滤波器和微控制器的功能。
采用可编程的带有只读平台的嵌入阵列块(EAB)在配置期间可执行逻辑功能并建立一个大的查找表(LUT),在这个查找表里用查找的结果执行组合逻辑函数,而不用计算它们。显然,用这种组合逻辑函数执行比通常在逻辑里应用算法执行要快,而且专用EAB容易应用,并且快速提供可能预测的延迟。
本文介绍了应用Altera 公司的FLEX10K系列CPLD快速完成卷积的方法实现有限冲激响应(FIR)滤波器的设计。


查表法实现卷积运算方法


有限冲激响应(FIR)滤波器的基本结构如是一个分节的延时线,把每一节的输出加权累加,得到滤波器的输出。数学上表示为:


结构如图1所示。它由用一条均匀间隔抽头的延迟线上对抽头信号进行加权求和构成。

根据上式,可以看出FIR数字滤波器涉及到大量的卷积运算,使用常规硬件实现时会占用大量的资源。通过充分利用FLEX10K系列芯片所具有的查表结构,将卷积运算转化为查表移位求和来实现。例如:对于式

y = [ x(1) h(1) ]+[ x(2) h(2) ]+[ x(3) h(3) ] + [ x(4) h(4) ] (1)

假设x和h 都是无符号整型二进制数,宽度两位,取值两位如下:

h(1)= 01,h(2)= 11 ,h (3)= 10, h(4)= 11
x(1)= 11,x(2)= 00, x (3)= 10, x(4)= 01

从图2可以看到式(1)运算的实现。中间数据p1(n)中的4个数据实际上是乘数x(n)的最低位比特与h(n)相乘的结果,并且该值不是0就是h(n)。进一步考虑,中间数据p1和p2的值,既“100”和“011”是由不同的h(n)之和构成,而对h(n)的选择是由乘数x(n)的相同位的比特决定的。例如上图x(n)的最低位为1001,则p1的值为h(1) + h(4);其高位为1010,则p1的值为 h (1) + h(3)。因此利用Altera公司FLEX器件中的查找表(LUT)结构,预先将h(n)的各种组合存入查找表,则上例中的原需4次乘法 和3次加法的卷积运算转化为1次加法。图3显示了用查找表实现该例的结构。
用查表法实现卷积运算时,有并行和串行两种结构。图3中为并行结构,其中两个LUT是完全相同的。在并行结构中,LUT的数量根据x(n)的数据宽度决定。一位对应一个LUT,这样速度达到最大,在FLEX10K的结构中提供了两条专用数据通道,即进位链和级联链,通过级联链相邻的LUT可以用来并行计算函数的各个部分。



利用FLEX10K芯片实现FIR数字滤波器


FELEX10K系列芯片具有查找表结构,利用其实现采用全局并行的FIR数字滤波器,也即将输入x(n) 经过不同的延迟后同时进行处理。
FIR数字滤波器的层次结构图如图4所示:


图4 FIR数字滤波器层次结构图

控制器模块(contr)的作用是产生控制信号对延迟、并串转换、抽头系数、移位相加模块进行控制,以使它们按一定的形式组合在一起实现滤波器功能。控制器模块在接收到A/D转换结束信号后,依次产生移位寄存器使能信号、并行到串行转换的装入信号、移位相加的装入信号、加减控制信号和滤波结果输出信号等各种控制信号,使上述各个模块按照一定的时序进行操作,从而完成滤波功能。时延环节模块(shift-reg)的作用为使A/D转换后的数据通过不同的触发器,进而产生不同的延迟。并/串转换模块(p-s-ff)的作用是将通过时延模块产生的不同延迟分别同时转换为查找表的串行地址,提供给抽头系数模块。抽头系数模块(sub-rom)将抽头系数的各种组合固化在ROM中。它的地址输入端接收并/串转换模块的串行输出,然后查表得到卷积的中间数据.。移位相加模块通过将中间数据移位相加而实现两个数相乘的功能。


参考文献:
1. 刘宝琴. Altera可编程逻辑器件及其应用.北京:清华大学出版社,1995
2. 彭启宗 DSP与实时数字信号处理法. 电子科技大学出版社,1995
3. Data Book 1996. ALTERA(1998)
4. MAX +PLUS II Getting Started ,1997

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

在电子设计和信号处理领域中,信号毛刺是一个常见而又不容忽视的现象。毛刺是指在原本预期的连续或稳定的信号中出现的短暂而异常的电压或电流波动,表现为瞬态尖峰或窄脉冲。它们通常是由于电路设计、制造缺陷、噪声耦合、信号切换速度过...

关键字: 信号毛刺 信号处理

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计

嵌入式开发作为一个融合了计算机软硬件和系统工程的综合性领域,其成功与否往往取决于三个核心要素的有效整合与协调。这三个要素分别是:硬件平台的选择与设计、软件开发及其优化、以及系统级的设计与集成。深入理解并熟练掌握这三个方面...

关键字: 嵌入式开发 ARM

嵌入式开发作为信息技术的关键支柱,在全球数字化转型浪潮中扮演着无可替代的角色。从传统的嵌入式微控制器到如今先进的片上系统(SoC),再到与云计算、人工智能深度融合的智能终端,嵌入式系统的演进与发展始终紧跟时代脉搏。本文将...

关键字: 嵌入式开发 智能应用
关闭
关闭