用FPGA實現(xiàn)DSP與液晶顯示器的快速接口
考慮到實際應(yīng)用方便,可把一些常用的操作按指令的方式編碼。所得到的DSP控制指令如下:
控制顯示器開關(guān):0010 0000 1111 111x
指定顯示起始行:0100 0000 11xx xxxx
指定列地址和頁地址: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í)行都被看作一系列單步時序操作的集合。如果從ROM的某一地址開始依次讀出ROM里的數(shù)據(jù),那么在每一個數(shù)據(jù)位上就會出現(xiàn)隨時間變化的電平跳變。這樣就可以用它作為控制信號進行控制操作。由于ROM是并行輸出的,如果用不同的數(shù)據(jù)位代表不同的控制信號線,就能很容量地實現(xiàn)各個信號線之間的同步操作。這樣就能很容易形成時序圖中的時序邏輯,而且擴展方便。在上述的指令表示中,通過對高3位進行譯碼,可以得到ROM尋址時的起始地址。ROM各個數(shù)據(jù)位的含義如下:
其中,低七位是控制LCD的接口線,FREE是微程序執(zhí)行完標志,每條指令所對應(yīng)的微程序分為招待狀態(tài)(有多條微指令,FREE位為0)和閑置狀態(tài)(一條指令,FREE位為1)。當指令執(zhí)行狀態(tài)機檢測到FREE位的上跳沿時,加載下一條指令。LD是數(shù)字寄存器從DSP獲得數(shù)據(jù)時的加載信號,微程序執(zhí)行過程中,在某些指令執(zhí)行時需要加載數(shù)據(jù),可由該信號完成。RD是數(shù)據(jù)寄存器從LCD讀入數(shù)據(jù)的加載信號,主要完成從LCD讀入數(shù)據(jù)。
取指控制邏輯主要功能是根據(jù)FIFO的狀態(tài)決定是否寫入新的指令以及根據(jù)執(zhí)行狀態(tài)機的狀態(tài)讀入新的指令,填寫狀態(tài)寄存器,給出中斷信號。
根據(jù)上述硬件設(shè)計,DSP的軟件設(shè)計就大大簡化了。以寫入數(shù)據(jù)為例,在寫入數(shù)據(jù)前先查詢一下接口模塊的狀態(tài),如果可以寫入就寫入數(shù)據(jù);否則保持現(xiàn)有數(shù)據(jù)指針,等待下次寫入。一讀一寫兩次外部I/O操作,如果按7個等待周期、主頻100MHz計算,只有140ns,加上判斷所需時間,200ns內(nèi)就可以完成寫入數(shù)據(jù)。這里,7個等待周期是考慮到系統(tǒng)內(nèi)還其它器件。如果只是對該接口模塊操作,兩三個等待周期是沒有問題的。這樣,100ns內(nèi)就可完成寫入數(shù)據(jù)。
在實際應(yīng)用中,采用上述接口控制模塊來完成LCD控制大大減輕了DSP的壓力。推而廣泛,這種方法還可以應(yīng)用在其它慢速設(shè)備上,如打印機等,對于提高系統(tǒng)效率是比較有效的。需要指出的是,盡管這種方法能夠建立雙向快速通道,卻是以占用可編程器件有限的資源為代價的。但是隨著目前可編程器件容量的日益擴大,這個問題已不是很突出的了。
評論