新聞中心

        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;



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 克拉玛依市| 遂昌县| 绵阳市| 自治县| 昭觉县| 赣榆县| 化州市| 天全县| 林周县| 巫山县| 谢通门县| 清河县| 阿坝| 德清县| 海门市| 社旗县| 长丰县| 宁河县| 阿坝县| 信丰县| 新泰市| 彭水| 十堰市| 阿拉善左旗| 抚州市| 巴彦淖尔市| 刚察县| 济源市| 镇原县| 芦溪县| 绥阳县| 阿克陶县| 永城市| 九寨沟县| 麦盖提县| 吴江市| 长宁区| 文成县| 邯郸县| 长武县| 新干县|