新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > CPLD在無功補償控制儀鍵盤設計中的應用

        CPLD在無功補償控制儀鍵盤設計中的應用

        作者: 時間:2012-08-23 來源:網絡 收藏

        對復雜可編程邏輯器件()內部邏輯功能的描述方式有多種,本系統采用了原理圖輸入與VHDL語言描述相結合的方式,這樣可以發揮兩者的優勢,加快開發進程。設計時采用層次化設計,描述系統總體功能的最上層使用原理圖輸入,而原理圖中的某些功能模塊采用VHDL編寫。實際原理圖如圖2:


        圖2 鍵盤邏輯實際原理圖

        上圖中Module 1模塊實現分頻功能,CLK來自單片機80C196KC的CLKOUT腳,其周期為3個時鐘振蕩周期,占空比為33%。若單片機用16M晶振,其頻率約為:16M/3=5.33M。Module 1 把頻率降至約1K,Module 2模塊以一秒的間隔使O3~O0依次循環輸出低電平進行鍵盤掃描 。當有鍵按下時,I3~I0中有一個為低電平,異或門輸出1個高電平脈沖,鎖存鍵盤狀態并向單片機申請中斷。系統為鍵盤分配的地址空間為0xf100~0xf1ff,在此范圍內可讀取鍵盤的掃描碼。

        由于篇幅有限,以下只給出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根據sum輸出相應的值

        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;



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 凯里市| 肃南| 大连市| 宁武县| 平南县| 靖江市| 桦南县| 太湖县| 苏尼特右旗| 永城市| 余干县| 兰西县| 库伦旗| 宜兰市| 石首市| 阿荣旗| 广安市| 农安县| 美姑县| 通榆县| 攀枝花市| 霍邱县| 镇安县| 化德县| 南漳县| 象州县| 徐水县| 法库县| 社旗县| 灵宝市| 陇南市| 共和县| 伊吾县| 纳雍县| 青铜峡市| 铜川市| 英山县| 信宜市| 霍林郭勒市| 许昌县| 济阳县|