1 GAL6002芯片簡介
GAL6002是LATTICE公司研制的電可擦除、可重復編程的高性能PLD器件,圖1所示是其引腳排列。GAL6002具有78×64×36 FPLA結構,可提供78×64的可編程與陣列和64×36的可編程或陣列。它具有10個輸出宏單元、8個隱埋宏單元及20個輸入和I/O宏單元。它的兩個獨立輸入時鐘可分別用于輸入和輸出宏單元的控制。其輸出宏單元和隱埋宏單元的寄存器共用一個高有效復位乘積項。每個寄存器復位為“0”。輸出宏單元和輸出腳之間均有一個反相緩沖器,每個輸出緩沖器的使能可由單獨的乘積項來控制。
2 設計原理
直接訪問方式下的接口電路如圖2所示。以下分別從去抖電路、自動掃描電路和接口電路三方面來描述該自動掃描去抖編碼鍵盤電路的設計原理。
2.1去抖電路
去抖電路用來執(zhí)行兩個功能:其一是當按鍵按下時產生一個“凍結”信號FREZ,以用來停止并“凍結”掃描狀態(tài)機直到按鍵被釋放。它的ABEL方程為:
FREZ:=!(COL3&COL2&COL1&COL0);
其二是當輸出保持低電平達兩個(或更多)相鄰時鐘周期時產生一個中斷INT。其ABEL方程為:
INT:=FREZ&!(COL3&COL2&COL1&COL0);
2.2 自動掃描電路
自動掃描電路的軟件定義如下:
R WREG=[ROW3,ROW2,ROW1,ROW0];
掃描狀態(tài)機在輸入時鐘的上升沿依次向鍵盤行線發(fā)送“0”電平以掃描鍵盤,如果FREZ信號被使能,則“凍結”狀態(tài)機。該操作在ABEL文件中的狀態(tài)圖描述如下:
2.3 接口電路
在該電路的ABEL文件中,可由真值表界定按鍵的行列位置與輸出值D3~D0的對應關系,其中數(shù)值1~16分別對應于16個按鍵,即編碼鍵盤的鍵值。從LATTICE公司的工具軟件ispDesignEXPERT8.2對ABEL文件的編譯結果來看,當有多鍵同時按下時,D3~D0的輸出亦為“0”,因此在51匯編程序中應對“0”號鍵進行適當取舍。
通過輸出緩沖器可使輸出管腳設置成高阻態(tài),因此輸出管腳可以直接和單片機的數(shù)據(jù)總線連接。本設計中,D3~D0輸出緩沖器由CS和RD兩個信號控制。其ABEL方程為:
采用間接控制方式讀取鍵值的接口電路如圖3所示。
3 ABEL文件清單
下面給出KEY44.ABL文件的具體程序清單,其編譯工具為LATTICE公司的ispDesignEXPERT8.2。