CPLD在無功補償控制儀鍵盤設(shè)計中的應(yīng)用
對復(fù)雜可編程邏輯器件(CPLD)內(nèi)部邏輯功能的描述方式有多種,本系統(tǒng)采用了原理圖輸入與VHDL語言描述相結(jié)合的方式,這樣可以發(fā)揮兩者的優(yōu)勢,加快開發(fā)進(jìn)程。設(shè)計時采用層次化設(shè)計,描述系統(tǒng)總體功能的最上層使用原理圖輸入,而原理圖中的某些功能模塊采用VHDL編寫。實際原理圖如圖2:
圖2 鍵盤邏輯實際原理圖
上圖中Module 1模塊實現(xiàn)分頻功能,CLK來自單片機80C196KC的CLKOUT腳,其周期為3個時鐘振蕩周期,占空比為33%。若單片機用16M晶振,其頻率約為:16M/3=5.33M。Module 1 把頻率降至約1K,Module 2模塊以一秒的間隔使O3~O0依次循環(huán)輸出低電平進(jìn)行鍵盤掃描 。當(dāng)有鍵按下時,I3~I(xiàn)0中有一個為低電平,異或門輸出1個高電平脈沖,鎖存鍵盤狀態(tài)并向單片機申請中斷。系統(tǒng)為鍵盤分配的地址空間為0xf100~0xf1ff,在此范圍內(nèi)可讀取鍵盤的掃描碼。
由于篇幅有限,以下只給出Module 2的VHDL語句,具體如下:
LIBRARY ieee;
USE ieee.STd_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY Module2 IS
PORT DD定義端口
( clk :IN std_logic;
q :OUT std_logic_vector(3 DOWNTO 0)
);
END Module2;
ARCHITECTURE Module2 of Module2 IS
BEGIN
PROCESS(clk)
VARIBLE sum:integer:=0; DD定義變量sum,初值為0
BEGIN
IF(clk’event AND clk=’1’)THEN
sum:=sum+1; DDclk為上升沿時,sum加1
IF(sum>=5)THEN
sum:=1;
END IF;
END IF;
CASE sum IS DD根據(jù)sum輸出相應(yīng)的值
WHEN 1 => q=“1110”;
WHEN 2 => q=“1101”;
WHEN 3 => q=“1011”;
WHEN 4 => q=“0111”;
WHEN THERS => q=“1111”;
END CASE;
END PROCESS;
END Module2;
評論