隨著器件集成工藝的發(fā)展和Soc器件的出現(xiàn),現(xiàn)在的數(shù)字系統(tǒng)正在越來(lái)越多地采用可編程器件設(shè)計(jì)。這樣,不僅開(kāi)發(fā)周期短,而且在價(jià)格和使用難易度上也顯示了很大的優(yōu)勢(shì)。更為重要的是,還能利用器件的現(xiàn)場(chǎng)可編程特性,根據(jù)應(yīng)用的要求對(duì)器件進(jìn)行動(dòng)態(tài)配置,簡(jiǎn)便易行地完成功能的添加或變化。
在高速的數(shù)字信號(hào)處理系統(tǒng)中,要涉及到大量的計(jì)算,為了提高運(yùn)算速度,正大量使用DSP器件。目前的可編程器件,其時(shí)鐘頻率可以很高,在高速數(shù)字信號(hào)處理系統(tǒng)中將發(fā)揮越來(lái)越大的作用。因此,DSP+FPGA的方案正越來(lái)越多地被電子工程師們采用。
在很多的實(shí)際數(shù)字系統(tǒng)中,往往需要良好的用戶(hù)界面,其中LCD是被大量采用的顯示器件。由于LCD是典型的慢速設(shè)備(相對(duì)于DSP來(lái)講),在與高速微處理器接口時(shí),會(huì)耗費(fèi)大量時(shí)間,這在高速系統(tǒng)設(shè)計(jì)中是不允許的。如果DSP有不太富裕的處理余量,如何利用它對(duì)LCD完成控制呢??jī)H僅在兩者之間加入鎖存器之類(lèi)的簡(jiǎn)單接口電路,往往不能對(duì)LCD完成控制。不過(guò),有了FPGA,就可以在不增加成本的情況下,在DSP和LCD之間設(shè)計(jì)一條雙向的快速通道。
1 DSP和LCD的時(shí)序
TI公司是DSP在全球的主要供應(yīng)商,其低價(jià)位的TMS320VC54x系列DSP深受廣大電子工程師的青睞。下面以TMS320VC5416為例介紹DSP的時(shí)序。TMS320VC5416將尋址范圍分為存儲(chǔ)器空間、程序空間和I/O空間。其中,對(duì)I/O空間的操作由地址線、數(shù)據(jù)線和三根信號(hào)線IOSTRB、R/W和IS來(lái)完成,其時(shí)序圖如圖1所示。
讀操作和寫(xiě)操作由R/W信號(hào)線上的高低電平?jīng)Q定。如果不采用外部插入等待周期的方法,僅靠?jī)?nèi)部的等待周期設(shè)置寄存器,訪問(wèn)外部I/O空間時(shí)最多可以插入14個(gè)等待周期。如果DSP運(yùn)行在100MHz的主頻上(實(shí)際上TMS320VC16可以運(yùn)行在最高160MHz的主頻上),也只有0.14μs。這對(duì)于LCD來(lái)說(shuō)來(lái)遠(yuǎn)遠(yuǎn)不夠的。
常見(jiàn)的192×64點(diǎn)陣的LCD(FM19264)實(shí)際上是由3塊獨(dú)立的64×64點(diǎn)陣LCD構(gòu)成的,共享地址線和數(shù)據(jù)線,可由CS1、CS2和CS3分別選中。每小塊LCD都有各自獨(dú)立的指令寄存器和數(shù)據(jù)寄存器,由控制線D/I上的高低電平選擇。數(shù)據(jù)的鎖存或出現(xiàn)在數(shù)據(jù)線上由E信號(hào)決定。LCD主要控制管腳的功能如表1所示。對(duì)LCD寫(xiě)操作的時(shí)序圖如圖2所示。LCD的每次讀寫(xiě)操作最少要1μs。如果能使DSP對(duì)LCD的訪問(wèn)象對(duì)高速設(shè)備訪問(wèn)一樣,就能夠最大限度地減小DSP資源的浪費(fèi),并且能夠減少系統(tǒng)的復(fù)雜性,這就需要在FPGA中添加一個(gè)DSP與LCD之間的高速雙向通道。
表1 LCD主要控制管腳功能
對(duì)每塊LCD的控制,是通過(guò)操作指令寄存器和數(shù)據(jù)寄存器實(shí)現(xiàn)的。在屏幕指定位置寫(xiě)入數(shù)據(jù),要分三步(①寫(xiě)入行地址,②寫(xiě)入列地址,③寫(xiě)入數(shù)據(jù))才能完成,不但耗時(shí)而且增加了軟件編程的復(fù)雜程度。如果能夠?qū)⒅噶詈蛿?shù)據(jù)合在一起作為一條指令,那么設(shè)計(jì)一套簡(jiǎn)單的指令譯碼電路執(zhí)行電路就可完成這項(xiàng)任務(wù)。
2 硬件電路設(shè)計(jì)
硬件框圖如圖3所示。LCD的原始控制指令如表2所示。
表2 LCD原始控制指令
LCD的顯示畫(huà)面按8行為一頁(yè)的方式進(jìn)行劃分,共64行分成8頁(yè)。LCD具有列循環(huán)尋址功能,如果第一步設(shè)定了頁(yè)地址和列地址,那么以后每次向LCD寫(xiě)入顯示數(shù)據(jù),列地址計(jì)數(shù)器就自動(dòng)加一。除非再設(shè)定列地址,否則列地址就一直累加下去,直到63。這樣就簡(jiǎn)化了寫(xiě)入工作。
考慮到實(shí)際應(yīng)用方便,可把一些常用的操作按指令的方式編碼。所得到的DSP控制指令如下:
控制顯示器開(kāi)關(guān):0010 0000 1111 111x
指定顯示起始行:0100 0000 11xx xxxx
指定列地址和頁(yè)地址:0110 0yyy yyyy yxxxy:
列地址(0~191)x:
行地址寫(xiě)入數(shù)據(jù):1000 0000 xxxx xxxx
讀顯示器狀態(tài):1010 0000 0000 0000
讀顯示數(shù)據(jù):1100 0000 0000 0000
框圖中微指令ROM在接口控制中起著決定性的作用,每條指令的執(zhí)行都被看作一系列單步時(shí)序操作的集合。如果從ROM的某一地址開(kāi)始依次讀出ROM里的數(shù)據(jù),那么在每一個(gè)數(shù)據(jù)位上就會(huì)出現(xiàn)隨時(shí)間變化的電平跳變。這樣就可以用它作為控制信號(hào)進(jìn)行控制操作。由于ROM是并行輸出的,如果用不同的數(shù)據(jù)位代表不同的控制信號(hào)線,就能很容量地實(shí)現(xiàn)各個(gè)信號(hào)線之間的同步操作。這樣就能很容易形成時(shí)序圖中的時(shí)序邏輯,而且擴(kuò)展方便。在上述的指令表示中,通過(guò)對(duì)高3位進(jìn)行譯碼,可以得到ROM尋址時(shí)的起始地址。ROM各個(gè)數(shù)據(jù)位的含義如下:
其中,低七位是控制LCD的接口線,FREE是微程序執(zhí)行完標(biāo)志,每條指令所對(duì)應(yīng)的微程序分為招待狀態(tài)(有多條微指令,FREE位為0)和閑置狀態(tài)(一條指令,FREE位為1)。當(dāng)指令執(zhí)行狀態(tài)機(jī)檢測(cè)到FREE位的上跳沿時(shí),加載下一條指令。LD是數(shù)字寄存器從DSP獲得數(shù)據(jù)時(shí)的加載信號(hào),微程序執(zhí)行過(guò)程中,在某些指令執(zhí)行時(shí)需要加載數(shù)據(jù),可由該信號(hào)完成。RD是數(shù)據(jù)寄存器從LCD讀入數(shù)據(jù)的加載信號(hào),主要完成從LCD讀入數(shù)據(jù)。
取指控制邏輯主要功能是根據(jù)FIFO的狀態(tài)決定是否寫(xiě)入新的指令以及根據(jù)執(zhí)行狀態(tài)機(jī)的狀態(tài)讀入新的指令,填寫(xiě)狀態(tài)寄存器,給出中斷信號(hào)。
根據(jù)上述硬件設(shè)計(jì),DSP的軟件設(shè)計(jì)就大大簡(jiǎn)化了。以寫(xiě)入數(shù)據(jù)為例,在寫(xiě)入數(shù)據(jù)前先查詢(xún)一下接口模塊的狀態(tài),如果可以寫(xiě)入就寫(xiě)入數(shù)據(jù);否則保持現(xiàn)有數(shù)據(jù)指針,等待下次寫(xiě)入。一讀一寫(xiě)兩次外部I/O操作,如果按7個(gè)等待周期、主頻100MHz計(jì)算,只有140ns,加上判斷所需時(shí)間,200ns內(nèi)就可以完成寫(xiě)入數(shù)據(jù)。這里,7個(gè)等待周期是考慮到系統(tǒng)內(nèi)還其它器件。如果只是對(duì)該接口模塊操作,兩三個(gè)等待周期是沒(méi)有問(wèn)題的。這樣,100ns內(nèi)就可完成寫(xiě)入數(shù)據(jù)。
在實(shí)際應(yīng)用中,采用上述接口控制模塊來(lái)完成LCD控制大大減輕了DSP的壓力。推而廣泛,這種方法還可以應(yīng)用在其它慢速設(shè)備上,如打印機(jī)等,對(duì)于提高系統(tǒng)效率是比較有效的。需要指出的是,盡管這種方法能夠建立雙向快速通道,卻是以占用可編程器件有限的資源為代價(jià)的。但是隨著目前可編程器件容量的日益擴(kuò)大,這個(gè)問(wèn)題已不是很突出的了。