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