当前位置:首页 > 电源 > 数字电源
[导读]提出一种采用现场可编程门阵列器件FPGA实现音频处理芯片的方案。首先对FIR滤波器的算法进行了改良,然后采用VHDL语言对音频处理芯片的每个模块分别设计。最后通过计算机软件对该芯片进行仿真,给出仿真波形和仿真结果,证明本芯片的设计达到了预期要求。

1 引言

随着数字技术日益广泛的应用,以现场可编程门阵列FPGA(Field Programmable Gate Array)[1]为代表的ASIC[2]器件得到了迅速的普及和发展,器件的集成度和速度都在高速增长。FPGA既具有门阵列的高逻辑密度和高可靠性,又具有可编程逻辑器件的用户可编程性,可以减少系统的设计和维护的风险,降低产品成本,缩短设计周期。

目前,信号处理技术、通信技术和多媒体技术的迅猛发展都得益于DSP[3]技术的广泛应用。但是对于便携式和家用的语音系统而言,基于一般的DSP芯片的设计方案并不理想。首先DSP的芯片成本以及开发成本在现阶段仍然是比较高的,尤其是芯片成本,远远不及大批量ASIC芯片成本之低。其次便携式的设备对体积要求十分苛刻,限制了一部分DSP芯片的使用,而体积正是ASIC芯片的优点之一。

本文提出了一种基于FPGA音频处理芯片的硬件电路实现方案。由于对FIR滤波器的算法进行了改良,所以很大程度上减小了芯片的体积和降低了芯片的功耗。

2 算法研究与改良

2.1 普通FIR滤波算法

   N阶FIR滤波器可以用下面的线性卷积表示:[4]

 

x(n)是输入的音频序列,而y(n)是经过滤波后输出的音频序列,h(k)是N阶滤波器的系数。

简单的实现这个算法,需要N+1次的乘法和N次的加法。所以至少需要一个硬件乘法器和一个定点或者浮点加法器来实现这个功能。由于音频处理芯片只需要做线性卷积,所以我们不需要采用乘法器的结构。一般来说,由于乘法器庞大的结构,占用了芯片上的大部分面积,消耗用了大部分功率。而不使用乘法器的结构将会节约可观的芯片面积和功耗。为了实现这种结构,我们需要改良FIR滤波算法。

2.2 改良滤波算法

首先,将滤波的系数h(k)用二进制表示法(POT,Power of Two)表示:

例如:h(k)=0.1172=2-3-2-7-2-16

我们给出7阶滤波器的一组系数,使用POT表示(精度小于104):

h(0) = 0.3761 = 2-1-2-3+2-10+2-13-2-15

h(1) = 0.3083 = 2-2+2-4-2-8-2-12

h(2) = -0.9424*10-1 = -2-3+2-5-2-11

h(3) = 0.6439*10-1 = 2-4+2-9-2-14

h(4) = -0.3308*10-1 = -2-5-2-9+2-13

h(5) = 0.1663*10-1 = 2-6+2-10+2-15

h(6) = -0.4135*10-2 = -2-8-2-12+2-16

h(7) = 0.1877*10-2 = 2-9-2-14-2-16

n=7时滤波器的输出值y如下:

y = (2-1-2-3+2-10+2-13-2-15) * x(7)

+(2-2+2-4-2-8-2-12) * x(6)

+(-2-3+2-5-2-11) * x(5)

+(2-4+2-9-2-14) * x(4)

+(-2-5-2-9+2-13) * x(3)

+(2-6+2-10+2-15) * x(2)

+(-2-8-2-12+2-16) * x(1)

+(2-9-2-14-2-16) * x(0)

很明显,x(n)的系数全部都是2的负k次幂,所以我们可以把具有相同系数的x(n)合并起来。

y(n)=2-1(...2-1(2-1(2-1u1+u2)+u3)+...)+u16)

uj=xj(1)+ xj(2)+……+ xj(rj)

其中1≤j≤16, xj(i)∈{x(n-k)}, 1≤i≤rj

由前面的系数,可以得到:

U1 = x(n-6)-x(n-7); U2 = -x(n)+x(n-5);

U3 = -x(n-3)-x(n-7); U4 = x(n)+x(n-4);

U5 = -x(n-1)-x(n-6); U6 = -x(n-2);

U7 = x(n)+x(n-5); U8 = x(n-3)-x(n-4)+x(n-7);

U5 = -x(n-1)-x(n-6); U10 = 0;

U11 = x(n-5); U12 = x(n-2)-x(n-4);

U13 = x(n-1)+x(n-3); U14 = -x(n)-x(n-2);

U15 = x(n-1); U16 = x(n);

按照这个算法,先求U1的值,然后将结果右移一位,再将结果与U2的值相加,依此类推,即可得到y(n)。我们使用若干次加法和16次移位操作即可完成FIR滤波,算法的复杂度和功耗都大大地降低。

3 音频处理芯片的设计

3.1 结构概述

在整个音频处理芯片的结构中,我们没有采用任何乘法器,取而代之的是一个加法器和移位器。加法器的结果输出到移位器,移位器的输出再反馈到加法器的输入端,循环运算实现滤波器的功能。

考虑7阶的FIR滤波器,需要对x进行8次采样,所以输入的数据都应该保存在一个8*16的DataRAM之中(16bit的采样精度)。系数RAM(ProgramRAM)的大小取决于操作的个数,在上面提到的算法中,一共有28个操作,所以ProgramRAM的大小不能小于28,在这里我们使用了一个32*6的ProgramRAM,以满足算法需要。

考虑到音频处理芯片的可扩展性,我们在音频处理芯片外设置一个EEPROM用来存放系数,当芯片启动的时候,从EEPROM中将数据转存到ProgramRAM中,以适应不同FIR滤波器的系数,极大地增强了音频处理芯片的可编程性。

音频处理芯片的模块主要包括EEPROM, ProgramRAM, DataRAM,串并转换模块,并串转换模块,地址生成模块,主控制器模块。

3.2 寻址方式描述

在系统启动时,附加的EEPROM储存的系统参数值,包括输入信号在DataRAM中的地址值和相应的标志位(32*6bit) ,依次读入ProgramRAM中去。

其中,Zero,Sign,Shift分别为操作控制

Zero表示不加任何操作数

Sign表示加上负的操作数

Shift表示移位操作

而Virtual Address表示操作数的虚拟地址。

NO

 

Zero

Sign

Shift

Virtual Address

1

x(n-6)

0

0

0

001

2

-x(n-7)

0

1

1

000

3

-x(n)

0

1

0

111

4

x(n-5)

0

0

1

010

5

-x(n-3)

0

1

0

100

6

-x(n-7)

0

1

1

000

7

x(n)

0

0

0

111

8

x(n-4)

0

0

1

011

9

-x(n-1)

0

1

0

110

10

-x(n-6)

0

1

1

001

11

-x(n-2)

0

1

1

101

12

x(n)

0

0

0

111

13

x(n-5)

0

0

1

010

14

x(n-3)

0

0

0

100

15

-x(n-4)

0

1

0

011

16

x(n-7)

0

0

1

000

17

-x(n-1)

0

1

0

110

18

-x(n-6)

0

1

1

001

19

0

1

0

1

000

20

x(n-5)

0

0

1

010

21

x(n-2)

0

0

0

101

22

-x(n-4)

0

1

1

011

23

x(n-1)

0

0

0

110

24

x(n-3)

0

0

1

100

25

-x(n)

0

1

0

111

26

-x(n-2)

0

1

1

101

27

x(n-1)

0

0

1

110

28

x(n)

0

0

1

111

 

Base Address总是指向DataRAM中最早写入的值所在的地址,也就是x(n-7)的地址,而Virtual Address其他值相对于x(n-7)的地址,所以可以得出操作数在DataRAM中实际的地址:

Physical Address=BaseAddress+VirtualAddress

y(n)=2-1(...2-1(2-1(2-1u1+u2)+u3)+...)+u16)中的u1为例

U1 = x(n-6) - x(n-7);

参数设置:C1= x(n-6)=000001

C2=-x(n-7)=011000

※最低的三位表示存储地址

※第4位表示移位标志,C2(4)为1表示计算出U1以后要右移得到2-1* U1

※第5位表示符号位,控制加减运算。C1(5)为0表示加, C2(5)为1表示减

※最高位,也就是第6位在Un=0时为1,这里只有C19(6)1

3.3 端口描述

信号/端口

类型

宽度

功能

Clk

输入

1

系统时钟,16MHz

Reset

输入

1

系统重置,异步低有效。

Load

输入

1

系统启动时,将数据从EPROM中转存到ProgramRam

Data_Clk

输入

1

数据时钟, ADC送入

Data_in

输入

1

采样信号的串行输入

FrameSync

输入

1

Date_in信号的帧控制信号

Data_out

输出

1

数据串行输出

CoeffData

输入

6

来自EEPROM的并行数据

CoeffAddress

输出

5

EEPROM地址信号

CoeffEnable

输出

1

EEPROM使能信号

3.4 模块设计

3.4.1 EEPROM [5]

·EEPROM用来存储系统参数

·EEPROM是32*6bit的存储阵列

·EEPROM的输入是Enable,Address(4 downto 0)

·EEPROM的输出是CoeffData(5 downto 0)

·EEPROM的首单元存放了操作的个数;例如,首单元存放"011100"表示一共有28个操作。

3.4.2 ProgramRAM [6]

·ProgramRAM接收EEPROM中的系统参数

·ProgramRAM是32*6bit的存储阵列

·ProgramRAM的输入是Write,Read,DataIn(5 downto 0),Address(4 downto 0)

·ProgramRAM的输出是Zero,Sign,Shift,DataAddr(2 downto 0)

3.4.3串并转换模块[7] (Serial2Parallel)

·Serial2Parallel接收来自ADC的串行数据、数据时钟和帧同步信号

·Serial2Parallel将串行输入信号转化为16bit的并行信号

·Serial2Parallel的输入是DataClk,DataIn,FrameSync

·Serial2Parallel的输出是DataOut(15 downto 0),DataOutSync

3.4.4并串转换输出模块[7] (Parallel2Serial)

Parallel2Serial将并行信号转化为串行信号

Parallel2Serial的输入是DataIn(15 downto 0),DataClk,FrameSync

Parallel2Serial的输出是DataOut

3.4.5主控制器模块(Main Controller)

·主控制器模块是整个设计的核心,它协调控制着其他各个模块的工作

·主控制器模块是根据操作流程图设计的一个状态机

3.4.6 地址生成模块(AddressGen)

·PhysicalAddress实际上是一个加法器,将VirtualAddress与BaseAddress相加产生读地址

·BaseAddress实际上是一个计数器,IncreaseBase信号控制加1,产生写地址

·MUX选择读地址或者是写地址到DataRAM

4 音频处理芯片的仿真

4.1 仿真波形

4.2 仿真结果

通过程序,对一组输入序列进行了仿真结果比较,所获得的结果如表1所示。

1:仿真结果比较

输入

期望值

仿真结果

01d7

00b1

00B1

01ef

014B

014B

02AF

016e

016E

024f

01a1

01A1

0093

00bc

00BD

00e7

0070

0070

0029

005e

005E

ff55

ffb6

FFB6

fe99

ff52

FF52

fec9

ff28

FF28

0025

ffc7

FFC7

00f7

0074

0074

通过表1可以看出音频处理芯片达到了预期的设计目标,效果良好。

可以看到,期望值和仿真结果在最后一位会有±1的误差,这是由于我们采用的移位算法将最后一位移出时不进行四舍五入造成的。经过计算,这种误差不会影响FIR的精度。

5 结束语

本文设计的音频处理芯片主要实现FIR滤波器功能,可以满足较为简单的语音信号处理的需要。用POT系数表示方法来表示系统参数,用一个加法器和一个移位寄存器实现乘法器的功能,这样在面积功耗上就有相当大的优势。设计过程是采用自顶向下的设计方法。最终的仿真结果符合预期的要求

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

TWSC 2985系列SD6.0存储芯片 国内首颗支持4K LDPC纠错技术 增强纠错、耐久可靠、性能升级

关键字: 德明利 半导体 存储 芯片 国产存储企业

2024年4月11日,中国——意法半导体的ST25R100近距离通信(NFC)读取器芯片独步业界,集先进的技术功能、稳定可靠的通信连接和低廉的成本价格于一身,在大规模制造的消费电子和工控设备内,可以提高非接触式互动功能的...

关键字: 嵌入式 数据读取器 芯片

其最新一代开创性系统集成芯片及配套软件将为4600万辆汽车提供更多安全和便利功能 上海2024年4月17日 /美通社/ -- Mobileye今日宣布,其已向客户交付其最新的EyeQ™6 Lite (EyeQ...

关键字: 芯片 MOBILEYE ADAS 自动驾驶

随着2024年的到来,北斗系统建设已走过栉风沐雨、接续奋斗的30年,几代北斗人也走过了北斗系统建设从无到有,从有源定位到无源定位,从服务中国到服务亚太,再到全球组网的“三步走”发展历程。

关键字: 华大北斗 芯片

微控制单元(Microcontroller Unit;MCU) ,又称单片微型计算机(Single Chip Microcomputer )或者单片机,是一种针对特定应用的控制处理而设计的微处理器芯片,其工作频率(在1M...

关键字: MCU 芯片 半导体

今日凌晨,中国台湾东部的花莲县连续发生地震,最高强度为6.3级,震源深度10公里,据中国地震台网分析,本次地震均为4月3日台湾花莲县海域发生的7.3级地震的余震。中国台湾地区在全球半导体供应链中扮演者重要角色,其10nm...

关键字: 固态硬盘 芯片 存储

在科技飞速发展的今天,电子设备已经成为了我们日常生活中不可或缺的一部分。而在这些电子设备的内部,一个不可或缺的组成部分便是开关电源芯片。作为电源管理集成电路的核心,开关电源芯片在电子设备中发挥着至关重要的作用。本文将深入...

关键字: 开关电源 芯片

开关电源芯片作为电子设备中的重要组成部分,是实现电源转换和管理的核心器件。随着科技的不断进步,开关电源芯片的种类也在不断增加,各具特色,满足了不同设备和应用场景的需求。本文将深入探讨开关电源芯片的种类及其科技应用,带领读...

关键字: 开关电源 芯片

4月17日消息,Intel官方宣布,工程师内部研发了一种新的AI增强工具,可以让系统级芯片设计师原本需要耗费6个星期才能完成的热敏传感器设计,缩短到区区几分钟。

关键字: Intel 芯片 1.8nm

业内消息,昨天美国芯片设计公司 AMD 推出了锐龙PRO 8040/8000系列AI处理器芯片,为支持人工智能的PC提供动力,试图在与英伟达和英特尔等竞争对手的AI PC 竞争中获得领先地位。

关键字: AMD 锐龙 AI处理器 芯片
关闭
关闭