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