視頻字符疊加技術(shù)的發(fā)展及四種實(shí)現(xiàn)方案
摘要:分析了視頻字符疊加的作用和發(fā)展現(xiàn)狀,介紹基于中小規(guī)模集成電路、FPGA、單片機(jī)和專用芯片的四種實(shí)現(xiàn)方案,并對(duì)它們各自的特點(diǎn)簡(jiǎn)要地作了分析和比較。
本文引用地址:http://www.ex-cimer.com/article/242278.htm關(guān)鍵詞:視頻字符疊加 單片機(jī) 現(xiàn)場(chǎng)可編程門陣列FPGA
視頻字符及時(shí)間疊加器是在視頻信號(hào)中混入字符或時(shí)間信號(hào),從而在屏幕的特定位置上與圖像信號(hào)同時(shí)進(jìn)行顯示的設(shè)備。這項(xiàng)技術(shù)是應(yīng)用電視技術(shù)中的一個(gè)重要領(lǐng)域,在應(yīng)用電視系統(tǒng)中發(fā)揮著重要的作用。從視頻字符及時(shí)間疊加器的工作方式及本身電路的構(gòu)成來(lái)看,已經(jīng)歷了三個(gè)不同的發(fā)展階段[1][2]。
第一階段是“圖解顯示控制”即GDC階段。它是利用中小規(guī)模數(shù)字集成電路來(lái)實(shí)現(xiàn)各部分所要求的嚴(yán)格的時(shí)序關(guān)系,并將形成的字符信號(hào)與視頻信號(hào)在預(yù)定的時(shí)間關(guān)系上混合并顯示在屏幕上。在這種方式中,字符的產(chǎn)生有兩種辦法:
·專用字符發(fā)生器:它是一種專用的ROM,常用的有MK36000、MCM6670P、8678、MN1217A等。它們將字符或數(shù)字以點(diǎn)陣的方式存入存儲(chǔ)器中,在外加恰當(dāng)?shù)刂泛蟊隳茌敵鱿鄳?yīng)的數(shù)據(jù)信號(hào)。這種方式中一旦選定了某種器件,所顯示的字符也就確定了,缺乏靈活性,且不能顯示圖形,通常稱此為“文本方式”。
·“圖形方式”:在這種方式中,是用EPROM來(lái)存儲(chǔ)字符或圖形的點(diǎn)陣數(shù)據(jù),其點(diǎn)陣形式由設(shè)計(jì)者自己決定,具有更大的靈活性。
第二階段是用CRT控制器這類專用集成電路的階段。常用的有8350、8275、MC6845等。它將“圖解顯示控制方式”中的中小規(guī)模集成器件構(gòu)成的電路集成化。字符(或圖形)等以點(diǎn)陣方式存儲(chǔ)在外圍的ROM或RAM中。它使電路大為簡(jiǎn)化,因而使用較為方便。
第三階段是單片“屏幕顯示”器件階段:因?yàn)樵谂c電視有關(guān)的產(chǎn)品上,并不需要顯示很多的字符或圖形,因此將以上CRT控制器中的外部存儲(chǔ)器與其集成在一起而形成所謂單片屏幕顯示器件。這類器件主要是為家用電視這類產(chǎn)品而設(shè)計(jì)的,并得到了廣泛的應(yīng)用。
考慮到實(shí)際使用中用戶所需的功能和指標(biāo)的多樣性,我們先后開(kāi)發(fā)了四種典型的實(shí)現(xiàn)方案,每種方案各有特點(diǎn)。本文將其分別作簡(jiǎn)要介紹,以供大家參考。
1 通用中小規(guī)模集成電路實(shí)現(xiàn)方案
本方案屬上面的“圖解顯示控制”型,全部采用邏輯門、計(jì)數(shù)器、移位寄存器等通用中小規(guī)模集成電路實(shí)現(xiàn)單路視頻字符及時(shí)間疊加。其基本工作原理如下:CPU從ROM字庫(kù)中取出要顯示字符的點(diǎn)陣數(shù)據(jù),根據(jù)所設(shè)定的在屏幕上的顯示位置,送到顯示RAM的對(duì)應(yīng)位置中去;然后由計(jì)數(shù)電路對(duì)顯示RAM進(jìn)行掃描,將字符點(diǎn)陣信號(hào)并行讀出;最后經(jīng)過(guò)并串變換電路轉(zhuǎn)化為串行碼輸出;再與視頻圖象信號(hào)疊加后送監(jiān)視器屏幕顯示。限于篇幅,這里對(duì)整體電路結(jié)構(gòu)不作過(guò)多描述,只對(duì)其中我們?cè)O(shè)計(jì)中的幾點(diǎn)考慮作一介紹。
一是視頻同步信號(hào)提取電路?,F(xiàn)在市場(chǎng)上已有不少可實(shí)現(xiàn)行、場(chǎng)同步信號(hào)分離的專用集成電路,如LM1881等,但成本較高。我們使用分立模擬元件設(shè)計(jì)了該電路,性能十分穩(wěn)定可靠,同時(shí)大大降低了成本。原理圖如圖1所示。
關(guān)于字符點(diǎn)陣數(shù)據(jù)在顯示RAM中的存放,一般的作法是一種稱之為“屏幕存儲(chǔ)映像”的方式,其特點(diǎn)是屏幕上每一個(gè)象素點(diǎn)都與一位RAM存儲(chǔ)單元對(duì)應(yīng),要對(duì)屏幕上字符的顯示進(jìn)行編輯十分簡(jiǎn)單。但這種方式占用RAM單元較多,需要大容量RAM。我們考慮到一般情況下要在屏幕上顯示的字符較少(大多為一行標(biāo)題、一行時(shí)間),屏幕上的大部分地方都是空白的。所以我們只在顯示RAM中生成屏幕上兩行字符的映像,字符在屏幕上顯示的行位置取決于其在RAM區(qū)的存儲(chǔ)位置,而列位置則由單片機(jī)單獨(dú)發(fā)出控制脈沖來(lái)控制,這樣就大大節(jié)省了顯示RAM的存儲(chǔ)單元。我們稱之為“行存儲(chǔ)映像”。以上兩點(diǎn)可供大家借鑒。
2 基于FPGA的多路實(shí)現(xiàn)方案
上面介紹的方案要實(shí)現(xiàn)單路字符疊加需用中小規(guī)模集成電路十余片,顯然要實(shí)現(xiàn)多路顯示過(guò)于復(fù)雜,可靠性差。現(xiàn)在隨著大規(guī)??删幊踢壿嬈骷钠占?,其價(jià)格也在不斷降低。我們就有可能在共用一片CPU、字庫(kù)ROM和實(shí)時(shí)時(shí)鐘的前提下,利用FPGA集成若干路獨(dú)立的顯示RAM計(jì)數(shù)掃描電路,實(shí)現(xiàn)多路時(shí)間字符疊加。
多路顯示中要求每一路有獨(dú)立的顯示RAM區(qū),最簡(jiǎn)單的辦法是設(shè)置多片RAM,但是這樣大大增加了電路的復(fù)雜性,成本也比較高。我們也可以采用一片大容量的RAM,在其中分別劃出四個(gè)區(qū)域作為四個(gè)屏幕的顯示RAM。但一片RAM不可能同時(shí)輸出四路的字符點(diǎn)陣數(shù)據(jù),也就是說(shuō)必須解決RAM的時(shí)分復(fù)用問(wèn)題,才能做到多路的同時(shí)顯示。這里簡(jiǎn)要介紹一下我們的實(shí)現(xiàn)方案(以四路為例)。設(shè)字符數(shù)據(jù)串行輸出移位時(shí)鐘為5MHz,則移位寄存器的置數(shù)時(shí)鐘應(yīng)為5MHz的8分頻,即625kHz。要實(shí)現(xiàn)四路連續(xù)顯示,就應(yīng)以625kHz的4倍頻——2.5MHz的頻率分別從顯示RAM中的各個(gè)存儲(chǔ)區(qū)域中取出字符點(diǎn)陣數(shù)據(jù),經(jīng)過(guò)鎖存置入四個(gè)輸出移位寄存器。這種方法必須使RAM的地址具有各路計(jì)數(shù)掃描控制下的快速跳轉(zhuǎn)能力,這就要求采用一個(gè)大規(guī)模的多路開(kāi)關(guān)(如果RAM用62256的話就需15路四選一開(kāi)關(guān))來(lái)實(shí)現(xiàn)RAM地址線的切換。以上方案的原理框圖如圖2。我們采用ALTERA公司的FLEX10K10(1萬(wàn)門FPGA)實(shí)現(xiàn)了四路時(shí)間字符疊加,性能十分穩(wěn)定。
3 基于AT90S1200單片機(jī)的實(shí)現(xiàn)方案
以上兩種方案都是用硬件電路實(shí)現(xiàn)對(duì)顯示RAM的計(jì)數(shù)掃描和點(diǎn)陣數(shù)據(jù)的移位輸出,實(shí)際上,我們完全可以利用軟件實(shí)現(xiàn)這樣的功能。如果要用軟件實(shí)現(xiàn)字符點(diǎn)陣數(shù)據(jù)的輸出,其速度必須滿足以下兩個(gè)條件:一是能夠以5MHz的頻率將數(shù)據(jù)串行輸出;二是在視頻信號(hào)行場(chǎng)消隱期內(nèi)要完成字符數(shù)據(jù)的讀取和與主控CPU的通訊等操作。常用的51系列單片機(jī)外接12MHz時(shí)鐘時(shí)一條單周期指令的執(zhí)行時(shí)間為1μs,顯然無(wú)法滿足上面的要求。因此我們選用ATMEL公司新推出的AT90S1200型單片機(jī)。其內(nèi)部有1K的FLASH程序存儲(chǔ)器和64字節(jié)E2PROM數(shù)據(jù)存儲(chǔ)器,內(nèi)置有模擬比較器和看門狗,通過(guò)SPI口可以串行下載程序而不必通過(guò)專用的編程器。更重要的是,它是一種RISC精簡(jiǎn)指令集單片機(jī),其大部分指令為單周期指令。外接16MHz時(shí)鐘時(shí)每條指令僅需0.06~0.12μs,完全可以滿足視頻字符疊加數(shù)據(jù)串行輸出的要求。
當(dāng)然,采用單片機(jī)軟件實(shí)現(xiàn)字符疊加時(shí)也有許多具體的問(wèn)題要考慮。AT90S1200單片機(jī)的指令執(zhí)行速度完全能夠滿足要求,但是它內(nèi)部沒(méi)有大容量的RAM存儲(chǔ)器,無(wú)法實(shí)現(xiàn)前面提到的“屏幕存儲(chǔ)映像”或“行存儲(chǔ)映像”的內(nèi)置化,也不易外接存儲(chǔ)器,只能以串行通訊的方式由外部主控機(jī)發(fā)給。為了保證顯示的連續(xù)性,通訊只能在視頻信號(hào)消隱期內(nèi)完成(當(dāng)然還要完成其他必要的操作)。要在消隱期內(nèi)完成大量字符點(diǎn)陣數(shù)據(jù)的傳輸顯然是不可能的。幸運(yùn)的是,實(shí)際使用中監(jiān)視器上顯示的漢字標(biāo)題信息一般是不變的,只有以數(shù)字表示的時(shí)間信息是每秒鐘變化。針對(duì)這種情況,我們利用AT90S1200單片機(jī)內(nèi)部的可以按字節(jié)尋址的64字節(jié)E2PROM來(lái)存儲(chǔ)0~9十個(gè)數(shù)字以及“:”、“—”等用于時(shí)間顯示的字符點(diǎn)陣,還有其它的諸如顯示位置等不經(jīng)常修改的變量。片內(nèi)1K字節(jié)FLASH不能按字節(jié)尋址,用作程序存儲(chǔ)器,要顯示的漢字點(diǎn)陣數(shù)據(jù)包含在程序中。這樣在使用時(shí)主控CPU只需將當(dāng)前時(shí)間值傳給AT90S1200,大大減少了通訊的數(shù)據(jù)量,使之可以在場(chǎng)消隱期內(nèi)完成,保證時(shí)間的連續(xù)顯示。當(dāng)顯示的漢字標(biāo)題要更改時(shí),由主控CPU從外部字庫(kù)ROM中取出新的點(diǎn)陣數(shù)據(jù),將其拼接在AT90S1200程序代碼的對(duì)應(yīng)位置,再通過(guò)SPI口對(duì)AT90S1200進(jìn)行串行編程,編程完畢后恢復(fù)正常顯示。我們采用ATMEL 89C51單片機(jī)作主控機(jī),6片AT90S1200單片機(jī)作顯示執(zhí)行機(jī),行場(chǎng)同步信號(hào)分別利用AT90S1200模擬比較器和I/O口輸入。由于AT90S1200沒(méi)有標(biāo)準(zhǔn)的UART串口,我們利用其I/O管腳自定義了一種串行通訊協(xié)議,從而實(shí)現(xiàn)了六路時(shí)間字符疊加。這種方案電路非常簡(jiǎn)單,并且多路實(shí)現(xiàn)時(shí)成本很低,是一種值得推廣的方法。
4 基于μPD6453字符疊加專用芯片的實(shí)現(xiàn)方案
μPD6453是NEC公司推出的專用視頻字符疊加芯片,它最多可以同時(shí)顯示12行24列12×18點(diǎn)陣的字符。芯片內(nèi)部固化了240個(gè)日文、英文字母和數(shù)字等字符的字模,還有16個(gè)字符的空RAM區(qū)供用戶添入自定義字符。μPD6453的顯示編輯功能非常強(qiáng)大,它的控制方式也非常靈活簡(jiǎn)單。它共有5條單字節(jié)指令、6條雙字節(jié)指令和1條三字節(jié)指令,所有的指令均串行輸入μPD6453,使用非常方便。限于篇幅,有關(guān)μPD6453的性能不再贅述,這里只簡(jiǎn)要介紹一些我們?cè)O(shè)計(jì)過(guò)程中的經(jīng)驗(yàn)。
首先,對(duì)于我國(guó)的用戶來(lái)說(shuō),大量的漢字都沒(méi)有固化在μPD6453芯片內(nèi)部,需要將其先寫(xiě)入片內(nèi)16個(gè)字符的空RAM區(qū),再發(fā)出指令讓其顯示出來(lái)。μPD6453內(nèi)部的字模(包括16個(gè)字符的空RAM區(qū))均為12×18點(diǎn)陣,而12×18點(diǎn)陣的漢字字庫(kù)很難找到。我們考慮了兩種方案:一是利用12×12點(diǎn)陣字庫(kù)數(shù)據(jù)直接寫(xiě)入片內(nèi)RAM區(qū),這樣兩行漢字之間會(huì)有一些間隔,但多數(shù)情況下只需顯示一行漢字,在顯示精度要求不高的情況下可以采用這種方法。二是利用16×16點(diǎn)陣或更高的點(diǎn)陣字庫(kù)寫(xiě)入,使幾個(gè)字符拼成一個(gè)漢字,這樣顯示精度很高,但軟件處理較為復(fù)雜。在實(shí)際使用中我們提取出UCDOS中的12×12點(diǎn)陣一級(jí)字庫(kù),將其固化在128K ROM 27010中,利用鍵盤(pán)控制可以將任意字符送到屏幕上顯示。第二,μPD6453顯示字符的大小有單倍、雙倍、三倍和四倍模式,但有時(shí)單倍顯示的字符仍然嫌大。我們注意到μPD6453外接的電感電容振蕩電路對(duì)顯示字符的橫向長(zhǎng)度影響很大,但芯片手冊(cè)上并未給出具體的參數(shù)值。經(jīng)過(guò)反復(fù)試驗(yàn),我們認(rèn)為電感?。保郸蹋?,電容取56pF比較合適。若稍微調(diào)整電感值,則可改變顯示字符橫向尺寸,使用時(shí)可根據(jù)自己的需要選用。
以上介紹了四種視頻時(shí)間字符疊加的方案和我們?cè)谠O(shè)計(jì)中的一些經(jīng)驗(yàn)。相比較而言,第一種中小規(guī)模集成電路的方案電路較為復(fù)雜,只適用于單路設(shè)計(jì)。隨著專用芯片和單片機(jī)技術(shù)的發(fā)展,這種實(shí)現(xiàn)方案應(yīng)逐漸被淘汰。第二種基于FPGA的實(shí)現(xiàn)方案在原理上與第一種類似,只是利用可編程邏輯器件集成了大量中小規(guī)模集成電路,電路規(guī)模簡(jiǎn)化了不少,實(shí)現(xiàn)也較為方便,但還受到價(jià)格的制約。第三種基于單片機(jī)的實(shí)現(xiàn)方案利用軟件實(shí)現(xiàn)了硬件掃描電路的功能,并且十分靈活,成本也很低。它的缺點(diǎn)是只適用于顯示字符相對(duì)較少的場(chǎng)合,若顯示字符很多軟件就過(guò)于復(fù)雜,很難保證連續(xù)顯示。第四種基于專用字符疊加芯片的方案功能很強(qiáng),適用于顯示字符較多的場(chǎng)合,并且價(jià)格適中。我們認(rèn)為在要求顯示字符較少的情況下(例如僅顯示一行標(biāo)題、一行時(shí)間),可以選用第三種基于單片機(jī)的實(shí)現(xiàn)方案;若顯示的字符較多且位置復(fù)雜,第四種方案較為合適。這四種方案我們都實(shí)現(xiàn)了產(chǎn)品化的批量生產(chǎn),技術(shù)上是成熟的,性能也都十分穩(wěn)定可靠,讀者可以根據(jù)具體情況選用。
評(píng)論