一種基于音頻解嵌的異步FIFO設(shè)計(jì)及FPGA實(shí)現(xiàn)
摘 要: 介紹了一種針對(duì)音頻解嵌中的音頻幀輸出而采用的特定異步FIFO的設(shè)計(jì)。重點(diǎn)闡述了針對(duì)這一特定情況需要考慮到的FIFO深度及讀寫(xiě)指針復(fù)位控制以及利用讀寫(xiě)地址格雷碼對(duì)FIFO的空、滿標(biāo)志信號(hào)的產(chǎn)生電路進(jìn)行邏輯設(shè)計(jì),用Verilog HDL硬件描述語(yǔ)言對(duì)電路進(jìn)行RTL級(jí)設(shè)計(jì),并使用Modelsim進(jìn)行功能仿真,最后通過(guò)FPGA進(jìn)行驗(yàn)證。
關(guān)鍵詞: 異步FIFO;音頻解嵌;格雷碼;仿真
在視音頻嵌入解嵌系統(tǒng)中,嵌入音頻、音頻解嵌與音頻轉(zhuǎn)換成音頻幀標(biāo)準(zhǔn)格式輸出都是工作在不同的時(shí)鐘頻率下的。多時(shí)鐘帶來(lái)的問(wèn)題就是如何設(shè)計(jì)異步時(shí)鐘之間的接口電路。
異步FIFO存儲(chǔ)器是一種在數(shù)據(jù)交互系統(tǒng)中得到廣泛應(yīng)用的先進(jìn)先出邏輯器件,具有容納異步信號(hào)的頻率(或相位差異)的特點(diǎn)。使用異步FIFO可以在兩個(gè)不同時(shí)鐘系統(tǒng)之間快速而方便地傳輸實(shí)時(shí)數(shù)據(jù)。因此,異步FIFO被廣泛應(yīng)用于實(shí)時(shí)數(shù)據(jù)傳輸、網(wǎng)絡(luò)接口、圖像處理等方面。
雖然目前也出現(xiàn)了一些通用的異步FIFO內(nèi)核,但在一些具體環(huán)境下其工作效率并不是最理想的。針對(duì)這個(gè)問(wèn)題,本文介紹了一種適合音頻解嵌的高效異步FIFO,對(duì)通用異步FIFO進(jìn)行了一些改進(jìn),最后利用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)并仿真實(shí)現(xiàn)。
1 SDI音頻嵌入基本格式
在模擬視頻中存在著行、場(chǎng)消隱期,而行、場(chǎng)消隱期內(nèi)并不存在有效圖像信號(hào)。對(duì)于數(shù)字視頻信號(hào),同樣地也存在沒(méi)有有效視頻信號(hào)的區(qū)間。
模擬視頻中的行消隱期間,在數(shù)字視頻中被稱為行輔助數(shù)據(jù)區(qū)HANC(Horizontal Ancillary Data)。分量數(shù)字視頻格式的每一個(gè)有效行中,625/50制共有1 728個(gè)取樣字(525/60制為1 716個(gè)取樣字),其中對(duì)Y、Cb和Cr取樣有1 440個(gè)取樣字(0~1 439)。而對(duì)行消隱期間的取樣可以有288個(gè)取樣字(525/60制為276個(gè)取樣字)。
目前輔助數(shù)據(jù)區(qū)也即行消隱區(qū)最大的用途是放置數(shù)字音頻,被放置的數(shù)字音頻稱為嵌入音頻。圖1是AES/EBU音頻數(shù)據(jù)塊結(jié)構(gòu)[1]。
一個(gè)音頻塊由192個(gè)連續(xù)幀組成,每個(gè)幀包含相關(guān)的兩個(gè)子幀,使得一個(gè)數(shù)字音頻碼流可以作為立體聲、雙聲道模式使用。這兩個(gè)子幀(32 bit)分別表示一個(gè)音頻通道中的一個(gè)音頻樣本,每個(gè)子幀的32 bit中包含24 bit的音頻數(shù)據(jù)和一些輔助數(shù)據(jù)。
音頻嵌入就是將每個(gè)子幀的32 bit信息按照SMPTE-292[2]標(biāo)準(zhǔn)分別嵌入到3個(gè)數(shù)據(jù)字和一個(gè)輔助數(shù)據(jù)字中,并將這些數(shù)據(jù)字嵌入到HANC中。解嵌的目的就是把每個(gè)音頻子幀對(duì)應(yīng)的這4個(gè)字找到,按照順序把這些子幀組合成AES/EBU音頻塊格式,使輸出為直接可識(shí)別的音頻碼流。
2 通用異步FIFO設(shè)計(jì)
2.1 通用異步FIFO結(jié)構(gòu)
圖2所示為通用異步FIFO結(jié)構(gòu),一般由四個(gè)模塊構(gòu)成:數(shù)據(jù)存儲(chǔ)模塊、寫(xiě)地址產(chǎn)生模塊、讀地址產(chǎn)生模塊和標(biāo)志位產(chǎn)生模塊。