基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx

上传人:b****6 文档编号:18803002 上传时间:2023-01-01 格式:DOCX 页数:7 大小:110.47KB
下载 相关 举报
基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx_第1页
第1页 / 共7页
基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx_第2页
第2页 / 共7页
基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx_第3页
第3页 / 共7页
基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx_第4页
第4页 / 共7页
基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx

《基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。

基于FPGA与VHDL语言实现音频处理芯片设计与仿真分析Word文档格式.docx

简单的实现这个算法,需要N+1次的乘法和N次的加法。

所以至少需要一个硬件乘法器和一个定点或者浮点加法器来实现这个功能。

由于音频处理芯片只需要做线性卷积,所以我们不需要采用乘法器的结构。

一般来说,由于乘法器庞大的结构,占用了芯片上的大部分面积,消耗用了大部分功率。

而不使用乘法器的结构将会节约可观的芯片面积和功耗。

为了实现这种结构,我们需要改良FIR滤波算法。

2.2改良滤波算法

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

例如:

h(k)=0.1172=2-3-2-7-2-16

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

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);

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表示移位操作

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

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

PhysicalAddress=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端口描述

3.4模块设计

3.4.1EEPROM[5]

·

EEPROM用来存储系统参数

EEPROM是32*6bit的存储阵列

EEPROM的输入是Enable,Address(4downto0)

EEPROM的输出是CoeffData(5downto0)

EEPROM的首单元存放了操作的个数;

例如,首单元存放"

011100"

表示一共有28个操作。

3.4.2ProgramRAM[6]

ProgramRAM接收EEPROM中的系统参数

ProgramRAM是32*6bit的存储阵列

ProgramRAM的输入是Write,Read,DataIn(5downto0),Address(4downto0)

ProgramRAM的输出是Zero,Sign,Shift,DataAddr(2downto0)

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

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

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

Serial2Parallel的输入是DataClk,DataIn,FrameSync

Serial2Parallel的输出是DataOut(15downto0),DataOutSync

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

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

•Parallel2Serial的输入是DataIn(15downto0),DataClk,FrameSync

•Parallel2Serial的输出是DataOut

3.4.5主控制器模块(MainController)

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

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

3.4.6地址生成模块(AddressGen)

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

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

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

4音频处理芯片的仿真

4.1仿真波形

4.2仿真结果

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

表1:

仿真结果比较

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

可以看到,期望值和仿真结果在最后一位会有±

1的误差,这是由于我们采用的移位算法将最后一位移出时不进行四舍五入造成的。

经过计算,这种误差不会影响FIR的精度。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1