新闻中心

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;



评论


相关推荐

技术专区

关闭