您的位置 首页 芯闻

一种根据FPGA内部存储器的合适音频解嵌的高效异步FIFO规划

一种基于FPGA内部存储器的适合音频解嵌的高效异步FIFO设计-异步FIFO存储器是一种在数据交互系统中得到广泛应用的先进先出逻辑器件,具有容纳异步信号的频率(或相位差异)的特点。使用异步FIFO可以在两个不同时钟系统之间快速而方便地传输实时数据。因此,异步FIFO被广泛应用于实时数据传输、网络接口、图像处理等方面。

在视音频嵌入解嵌体系中,嵌入音频、音频解嵌与音频转换成音频帧规范格局输出都是作业在不同的时钟频率下的。多时钟带来的问题便是怎么规划异步时钟之间的接口电路

异步FIFO存储器是一种在数据交互体系中得到广泛应用的先进先出逻辑器材,具有包容异步信号的频率(或相位差异)的特色。运用异步FIFO能够在两个不一起钟体系之间快速而方便地传输实时数据。因而,异步FIFO被广泛应用于实时数据传输、网络接口、图画处理等方面。

尽管现在也呈现了一些通用的异步FIFO内核,但在一些详细环境下其作业功率并不是最理想的。针对这个问题,本文介绍了一种合适音频解嵌的高效异步FIFO,对通用异步FIFO进行了一些改善,终究运用Verilog HDL硬件描绘言语规划并仿真完结。

1 SDI音频嵌入根本格局

在模仿视频中存在着行、场消隐期,而行、场消隐期内并不存在有用图画信号。关于数字视频信号,同样地也存在没有有用视频信号的区间。

模仿视频中的行消隐期间,在数字视频中被称为行辅佐数据区HANC(Horizontal Ancillary Data)。重量数字视频格局的每一个有用行中,625/50制共有1 728个取样字(525/60制为1 716个取样字),其间对Y、Cb和Cr取样有1 440个取样字(0~1 439)。而对行消隐期间的取样能够有288个取样字(525/60制为276个取样字)。

现在辅佐数据区也即行消隐区最大的用处是放置数字音频,被放置的数字音频称为嵌入音频。图1是AES/EBU音频数据块结构[1]。

一种依据FPGA内部存储器的合适音频解嵌的高效异步FIFO规划

一个音频块由192个接连帧组成,每个帧包括相关的两个子帧,使得一个数字音频码流能够作为立体声、双声道形式运用。这两个子帧(32 bit)别离表明一个音频通道中的一个音频样本,每个子帧的32 bit中包括24 bit的音频数据和一些辅佐数据。

音频嵌入便是将每个子帧的32 bit信息依照SMPTE-292[2]规范别离嵌入到3个数据字和一个辅佐数据字中,并将这些数据字嵌入到HANC中。解嵌的目的便是把每个音频子帧对应的这4个字找到,依照次序把这些子帧组组成AES/EBU音频块格局,使输出为直接可辨认的音频码流。

2 通用异步FIFO规划

2.1 通用异步FIFO结构

图2所示为通用异步FIFO结构,一般由四个模块构成:数据存储模块、写地址发生模块、读地址发生模块和标志位发生模块。

一种依据FPGA内部存储器的合适音频解嵌的高效异步FIFO规划

体系分为读时钟和写时两个彻底独立的时钟域。读写两头的使能和时钟信号作为读写指针操控的根底操控输入信号。更新的读写指针既作为存储器的写入读出地址又作为标志信号模块的输入。标志发生模块经过对读写地址的比较来得到存储器的空、满标志信号。将写满信号和读空信号别离反应到写指针和读指针操控模块,操控指针值的更新。

2.2 亚稳态消除办法

因为读写标志操控别离作业于不同的时钟域,在其发生电路中,假如比较触发器树立时刻和坚持时刻的要求没有得到满意,触发器就会进入一个介于逻辑1和逻辑0的中间状况,称之为亚稳态。为了下降亚稳态发生的概率,可采用格雷码地址计数[3]。二进制计数器在计数值添加时,或许一起会有多位数值发生变化,而格雷码计数器每次加1只要一位数值发生变化。所以将二进制读写指针转换为格雷码,送到另一个时钟域进行比较,能够下降亚稳态发生的概率。

2.3 空、满标志发生

经过对读写格雷码地址高两位的比较,得到存储器作业的满空趋势[4],再比较地址值是否持平终究判别空、满标志。把这两个2 bit数组组成4 bit数的16种组合,能够得到:当写地址格雷码最高两位和读地址格雷码最高两位别离组合为:0001、0111、1110、1000时,存储器趋向满状况;为0100、1101、1011、0010时,存储器趋向空状况。

空、满趋势经过事情触发,随时依据读写地址的更新值进行判别。再结合读写地址的比较成果来终究判别存储器的空、满状况。

3 改善型异步FIFO规划

3.1 改善计划

依据AES/EBU音频格局可知,每192帧(384子帧)音频构成一个AES/EBU音频块,作为一个接连输出单位,并用一个Z标志来指示这一音频块的开端。依据这一规范,本文规划了一种专用于该音频格局输出的异步FIFO。该异步FIFO具有单端复位,并依据写地址复位存放值作为读地址更新的参阅,使读数据更牢靠。FIFO深度规划为384子帧,位宽为24 bit。当用每个存储单元(24 bit)存储一个子帧中的音频数据码来指示地址时,因为规划深度为384子帧,运用9 bit格雷码来指示地址时,最高两位不会到达10的状况下,那么在满、空标志判别中的趋势判别就能够少考虑一种状况,即写、读地址格雷码最高两位组合为0001、0111、1100时,趋向满;为0100、1101、0011时,趋向空。这种改善,既减小了存储器的巨细,又减小了程序的复杂度。

考虑到解嵌的音频信号或许存在丢帧、错帧,有的时分或许一块数据中并没有192帧的数据,而仅仅一部分数据,因而,在实践作业中需求运用块开端标志Z复位写地址指针。为了保证输出端也能在读地址复位的当地进行复位,保证输出的音频块与输入端对应,本规划提出了运用一个地址存放器存放写地址复位时的写地址,并运用该地址作为读地址指针更新参阅,这样就添加了读取数据的牢靠性。

图3是改善的(读写独立复位)异步FIFO结构。

一种依据FPGA内部存储器的合适音频解嵌的高效异步FIFO规划

3.2 规划仿真

体系设计时,运用Quartus II进行RTL级的逻辑规划并归纳处理,然后规划仿真渠道[5],运用Modelsim仿真东西对整个体系进行门级仿真。依据规划的异步FIFO 的作业特性,仿真渠道对FIFO作业到满状况、空状况,以及写指针复位后的读操作进行了较全面的掩盖。

下面是测验渠道的鼓励生成代码:

always #40 wr_clk=~wr_clk;

always #10 rd_clk=~rd_clk;

always @(posedge wr_clk) begin

if(!rstn) begin

wr_data《=0;

cntw《=0;

rd_en《=0;

wr_en《=0;

end

else if(cntw==400) begin

rd_en《=1;

cntw《=cntw+1;

end

else if(cntw==500) wr_rstn=0;

else begin

wr_en《=1;

wr_rstn《=1;

wr_data《=wr_data+1;

cntw《=cntw+1;

end

end

代码的功用是在较低的时钟速率下,先进行写操作,比及保证写满后(即计数到达400时),以高速的读操作来读取数据,并持续写数据。当计数到500时,对写操作复位,此刻的复位地址是98。

依据上述的改善办法,规划、仿真完结后,用Altera公司的Cyclone Ⅲ系列EP3C10E144C8芯片完结电路程序规划。仿真成果如图4所示。在图中能够看到,wr_addr_rst的值一开端默以为383,但写入端有写复位时,即为写复位时的地址值98,该值也即作为读操作的地址复位参阅值传递到读操作模块。比及读操作进行第二轮读取并读到第98个地址时,再复位到0地址时,仿真完结。

一种依据FPGA内部存储器的合适音频解嵌的高效异步FIFO规划

本文依据FPGA内部存储器,提出了一种针对视音频解嵌体系更具功率的异步FIFO,对通用的FIFO进行改善,并运用硬件描绘言语及相应的仿真东西完结了功用仿真。仿真成果表明,本规划能很好地依照规划的目的作业。此外,还针对视音频解嵌体系中,音频块输出端异步FIFO提出了写复位地址存放,读地址依据此存放值来进行更新及复位的改善,提高了异步FIFO的作业功率和牢靠性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/news/xinwen/98308.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部