用FPGA實(shí)現(xiàn)DSP與液晶顯示器的快速接口
考慮到實(shí)際應(yīng)用方便,可把一些常用的操作按指令的方式編碼。所得到的DSP控制指令如下:
控制顯示器開關(guān):0010 0000 1111 111x
指定顯示起始行:0100 0000 11xx xxxx
指定列地址和頁(yè)地址:0110 0yyy yyyy yxxxy:
列地址(0~191)x:
行地址寫入數(shù)據(jù):1000 0000 xxxx xxxx
讀顯示器狀態(tài):1010 0000 0000 0000
讀顯示數(shù)據(jù):1100 0000 0000 0000
框圖中微指令ROM在接口控制中起著決定性的作用,每條指令的執(zhí)行都被看作一系列單步時(shí)序操作的集合。如果從ROM的某一地址開始依次讀出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)決定是否寫入新的指令以及根據(jù)執(zhí)行狀態(tài)機(jī)的狀態(tài)讀入新的指令,填寫狀態(tài)寄存器,給出中斷信號(hào)。
根據(jù)上述硬件設(shè)計(jì),DSP的軟件設(shè)計(jì)就大大簡(jiǎn)化了。以寫入數(shù)據(jù)為例,在寫入數(shù)據(jù)前先查詢一下接口模塊的狀態(tài),如果可以寫入就寫入數(shù)據(jù);否則保持現(xiàn)有數(shù)據(jù)指針,等待下次寫入。一讀一寫兩次外部I/O操作,如果按7個(gè)等待周期、主頻100MHz計(jì)算,只有140ns,加上判斷所需時(shí)間,200ns內(nèi)就可以完成寫入數(shù)據(jù)。這里,7個(gè)等待周期是考慮到系統(tǒng)內(nèi)還其它器件。如果只是對(duì)該接口模塊操作,兩三個(gè)等待周期是沒(méi)有問(wèn)題的。這樣,100ns內(nèi)就可完成寫入數(shù)據(jù)。
在實(shí)際應(yīng)用中,采用上述接口控制模塊來(lái)完成LCD控制大大減輕了DSP的壓力。推而廣泛,這種方法還可以應(yīng)用在其它慢速設(shè)備上,如打印機(jī)等,對(duì)于提高系統(tǒng)效率是比較有效的。需要指出的是,盡管這種方法能夠建立雙向快速通道,卻是以占用可編程器件有限的資源為代價(jià)的。但是隨著目前可編程器件容量的日益擴(kuò)大,這個(gè)問(wèn)題已不是很突出的了。
評(píng)論