1 引言
目前, 在軍事,、工業(yè)和醫(yī)學(xué)領(lǐng)域存在著大量的非標(biāo)準(zhǔn)視頻系統(tǒng), 其視頻信號(hào)只能在專業(yè)的設(shè)備上才能播放和錄制。而實(shí)際中廣泛采用的是標(biāo)準(zhǔn)電視信號(hào)(PAL ,NTSC, SECAM) 或VGA 視頻, 這就給這些領(lǐng)域內(nèi)的觀測(cè)監(jiān)督和學(xué)術(shù)交流造成了許多困難,。以醫(yī)學(xué)信號(hào)為例, 目前, 國(guó)內(nèi)醫(yī)院很多科室的手術(shù)監(jiān)控設(shè)備都是國(guó)外進(jìn)口的一體式設(shè)備, 手術(shù)影像資料只能供室內(nèi)的幾名醫(yī)生觀看, 無(wú)法通過(guò)電視系統(tǒng)傳送到外部監(jiān)測(cè),。如能將非標(biāo)準(zhǔn)視頻流轉(zhuǎn)換為標(biāo)準(zhǔn)視頻流, 無(wú)疑會(huì)給這些領(lǐng)域帶來(lái)很大的便利。時(shí)下的視頻轉(zhuǎn)換系統(tǒng)大多存在轉(zhuǎn)換速度慢,、功能單一,、圖像質(zhì)量不高的缺點(diǎn), 且一般是一機(jī)一用。本文介紹了基于單片機(jī)+ FPGA 的視頻制式的轉(zhuǎn)換系統(tǒng), 利用單片機(jī)方便的嵌入性及靈活的可編程性, 再結(jié)合FPGA 強(qiáng)大的邏輯控制功能很好地克服了這些弊端, 實(shí)現(xiàn)了實(shí)時(shí),、高質(zhì)量的視頻圖像轉(zhuǎn)換, 同時(shí), 可以方便地改變系統(tǒng)參數(shù), 實(shí)現(xiàn)一機(jī)多用,。
2 系統(tǒng)設(shè)計(jì)原理簡(jiǎn)介
不同制式視頻信號(hào)間的根本區(qū)別在于掃描方式和行場(chǎng)頻率不同。標(biāo)準(zhǔn)VGA 采用逐行掃描, 在一幀內(nèi)實(shí)現(xiàn)對(duì)圖像的完全掃描; 標(biāo)準(zhǔn)電視信號(hào)(以PAL制為例)采用隔行掃描, 利用視覺(jué)暫留, 將奇偶場(chǎng)恢復(fù)成一幀完整圖像,。而非標(biāo)準(zhǔn)視頻流則無(wú)一定規(guī)律,。因此, 視頻轉(zhuǎn)換的基本思路是將非標(biāo)準(zhǔn)視頻信號(hào)經(jīng)模數(shù)轉(zhuǎn)換成數(shù)字信號(hào), 在存儲(chǔ)器中緩存, 變頻讀出或經(jīng)過(guò)數(shù)字信號(hào)處理, 再通過(guò)數(shù)模轉(zhuǎn)換恢復(fù)成標(biāo)準(zhǔn)視頻流。本系統(tǒng)設(shè)計(jì)思
路框圖如圖1 所示,。
從原理可以看出, 只要數(shù)據(jù)讀出速度高于寫入速度, 就不會(huì)使圖像產(chǎn)生突變現(xiàn)象, 從而達(dá)到實(shí)時(shí)處理的目的,。設(shè)計(jì)中, 存儲(chǔ)器采用2片512K×8 bit 的FIFOAL440, 它采用DRAM 工藝, 最高時(shí)鐘可達(dá)80MHz,是專用的視頻存儲(chǔ)器,。邏輯主控單元選用Altera 公司出品的FLEX10K50E 實(shí)現(xiàn), 其門數(shù)達(dá)到5 萬(wàn)個(gè), 處理速度最高可達(dá)220MHz, 很適合高速數(shù)據(jù)流處理。同步恢復(fù)采用74ACT715, 它可按編程數(shù)據(jù)產(chǎn)生隔行或逐行的電視行場(chǎng)同步信號(hào), 非常適合于多制式輸出系統(tǒng),。而視頻恢復(fù)編碼部分采用的是專用數(shù)字圖像處理芯片DSP AL128, 其內(nèi)置的高集成化數(shù)字處理器, 可以將逐行掃描數(shù)字信號(hào)直接恢復(fù)成標(biāo)準(zhǔn)電視信號(hào)和S-VIDEO 輸出,。
3 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
整個(gè)系統(tǒng)大體框架如圖2 所示, 圖中虛線部分均由FPGA 實(shí)現(xiàn)。
3. 1 單片機(jī)接口模塊
系統(tǒng)中有FIFO ,AL128 的I2C 參數(shù)和74ACT715的初始化參數(shù)及數(shù)模,、模數(shù)時(shí)鐘分頻參數(shù)共計(jì)90 個(gè),為避免出現(xiàn)繁瑣的判斷語(yǔ)句, 設(shè)計(jì)中采用FPGA 內(nèi)置ROM 結(jié)構(gòu),。其原理圖如圖3 所示。
圖3 單片機(jī)譯碼原理圖
FPGA 將單片機(jī)送來(lái)的機(jī)器地址(00H~5AH )譯碼成芯片地址, 芯片地址總共10位, 高2位用來(lái)判斷配置何種芯片, 低8位用來(lái)判斷配置該芯片中第N個(gè)寄存器,。再結(jié)合單片機(jī)送來(lái)的數(shù)據(jù)線和讀寫控制線來(lái)決定對(duì)該寄存器進(jìn)行讀或?qū)懖僮饕约皩懭氲臄?shù)據(jù),。
74ACT715 的配置參數(shù)為12位, 配置中用兩個(gè)連續(xù)的地址分別記錄其高4位和低8位數(shù)據(jù)。其中, 57H~5AH為只讀地址, 相應(yīng)數(shù)據(jù)將控制數(shù)模,、模數(shù)時(shí)鐘的頻率,。
3. 2 I2C 配置及時(shí)鐘控制模塊
本系統(tǒng)FPGA 的一個(gè)重要功能就是對(duì)芯片初始化和I2C 參數(shù)配置,。I2C 總線是一種由飛利浦公司開(kāi)發(fā)的接口總線, 利用一條數(shù)據(jù)線sdata 和一條時(shí)鐘線sclk 在主從器件間進(jìn)行串行通信,。飛利浦公司制定了標(biāo)準(zhǔn)I2C協(xié)議, 但是, 工業(yè)上依然使用很多非標(biāo)準(zhǔn)I2C器件, 本系統(tǒng)的FIFO、AL128 均為非標(biāo)準(zhǔn)I2C 器件, 故要對(duì)它們分別進(jìn)行配置, 利用FPGA 的邏輯控制及內(nèi)置MUX 可以在不同讀寫時(shí)序間靈活切換, 達(dá)到對(duì)多個(gè)芯片的全雙工同步數(shù)據(jù)傳輸,。實(shí)現(xiàn)原理圖如圖4 所示,。
圖4 總線切換控制原理圖
同時(shí), 由系統(tǒng)實(shí)現(xiàn)原理分析可知, 視頻制式變換的關(guān)鍵在于掃描頻率變化, 即,AD采樣時(shí)鐘頻率和DA圖像恢復(fù)時(shí)鐘頻率。這部分?jǐn)?shù)字頻率在系統(tǒng)中是由外部鎖相環(huán)(PLL) 和FPGA 中的可變分頻計(jì)數(shù)器實(shí)現(xiàn)的,。其原理圖如圖5 所示,。
圖5 數(shù)字鎖相環(huán)原理圖
與普通鎖相環(huán)不同的是, 利用FPGA 的可編程性, PLL的參考頻率可以由單片機(jī)配置的分頻數(shù)隨意更改, 使數(shù)字頻率合成電路有較高的穩(wěn)定性、靈活性和靈敏度,。
3. 3 FIFO 控制模塊
考慮到非標(biāo)準(zhǔn)視頻信號(hào)一幀圖像數(shù)據(jù)量太大, 一塊FIFO 放不下, 同時(shí), 電視信號(hào)都采用隔行掃描, 數(shù)據(jù)流將按奇偶場(chǎng)交替輸出, 故設(shè)計(jì)中用兩塊FIFO A,、B 分別存放圖像的奇偶幀, 但在圖像恢復(fù)時(shí)為逐行掃描方式, 這就涉及到在兩塊FIFO 間交替讀出數(shù)據(jù)的問(wèn)題。設(shè)計(jì)中, 用兩個(gè)場(chǎng)同步信號(hào)Vsync 間的行同步信號(hào)Hsync 做判斷, 決定兩塊F IFO 的讀寫, 使數(shù)據(jù)按ABAB..... 逐行讀出,。該部分代碼段如下, 仿真時(shí)序圖見(jiàn)圖6,。
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ctrl IS
PORT (
vsync, hsync : IN STD_LOGIC;
fifoa_en, fifob_en:OUT STD_LOGIC
);
END ctrl;
ARCHITECTURE behav OF ctrl IS
SIGNAL fifo_en: STD_LOGIC;
BEGIN
PROCESS (hsync, vsync)
BEGIN
IF vsync=''0'' THEN
fifo_en<= ''1'
ELSIF hsync''event AND hsync=''0'' THEN
fifo_en<= not (fifo_en);
END IF;
END PROCESS;
fifoa_en<= fifo_en WHEN vsync=''1'' ELSE ''1'
fifob_en<= not (fifo_en) WHEN vsync=''1'' ELSE ''1'
END behav;
圖6 仿真時(shí)序圖
在時(shí)鐘方面, FIFO 寫入時(shí)鐘與AD 采樣時(shí)鐘相等,FIFO 讀出時(shí)鐘與DA 恢復(fù)像素時(shí)鐘相等。實(shí)時(shí)處理運(yùn)動(dòng)幀時(shí), 為不在兩場(chǎng)之間出現(xiàn)跳動(dòng)現(xiàn)象, 讀出時(shí)鐘要高于寫入時(shí)鐘,。在實(shí)際應(yīng)用中, 為了產(chǎn)生分頻率1024×768, 刷新頻率為60 Hz 的VGA 圖像, 讀出時(shí)鐘高達(dá)46MHz,這樣的高速數(shù)據(jù)處理就必須滿足一定的時(shí)延要求,。以50MHz 時(shí)鐘為例, 數(shù)據(jù)與時(shí)鐘間的最大時(shí)延不能超過(guò)10ns (像素時(shí)鐘20ns, 半周期為10ns)。經(jīng)過(guò)FGPA 的Quartus 綜合分析, 時(shí)鐘與數(shù)據(jù)間的最大延時(shí)為3.7ns, 滿足系統(tǒng)時(shí)延要求,。一般地, 這一數(shù)據(jù)是系統(tǒng)最壞情況下的延時(shí), 實(shí)際系統(tǒng)延時(shí)將小于仿真數(shù)據(jù),。
4 結(jié)束語(yǔ)
在數(shù)字電路設(shè)計(jì)中, FPGA 發(fā)揮了越來(lái)越重要的作用, 隨著FPGA 向高密度、低成本方向發(fā)展, 目前的一個(gè)趨勢(shì)是把系統(tǒng)級(jí)功能放到FPGA 器件中,。本文介紹的視頻轉(zhuǎn)換系統(tǒng)以FPGA 作為系統(tǒng)主控元件, 不但大大減少了電路版尺寸, 而且增強(qiáng)了系統(tǒng)可靠性和靈活性,。在實(shí)際測(cè)試中, 將非標(biāo)準(zhǔn)隔行視頻信號(hào)(1024行, 50Hz 場(chǎng)頻) 成功地轉(zhuǎn)換成了高清晰度的VGA 圖像和標(biāo)準(zhǔn)PAL 電視圖像。目前, 該系統(tǒng)已應(yīng)用于某醫(yī)院監(jiān)視系統(tǒng),。