资源描述:
《基于vhdl语言的键盘控制电路的设计说明书》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、长沙理工大学EDA技术与应用课程设计报告课题:基于VHDL语言的键盘控制电路的设计(24)学院:计算机与通信工程学院组员姓名及学号:段强强(200954080326)雷淑英(200954080301)胡超(200954080325)指导老师:单树民2011年10月16目录1、前言(写在前面)…………………………………22、项目工作的分类…………………………………23、基于VHDL语言的键盘控制电路的设计思路……34、设计的实现………………………………………45、项目设计的总结及评价…………………………9一、
2、写在前面此次项目的计划、设计、以及实现的整个过程均由我组人员段强强、雷淑英、胡超三人通力合作,在此过程中虽然每个人的分工不同,耗时长短不同,但一切设计与实现均是在三人的共同参与下进行,三人齐心协力,努力为将项目做的更好的目标而努力。同时,在项目的进行过程中,得到了老师和各位同学的热心帮助,在此对他们表示衷心的感谢。二、项目工作的分类1、项目预备资料的收集与整理。2、项目设计方案的斟酌与确定。3、项目程序的设计与更改。4、项目程序的仿真5、项目设计报告的书写与更改。16三、基于VHDL语言的键盘控制电路的设计
3、思路1、此键盘为5*5的矩阵键盘,每个键的按下与否由这个键的行电平和列电平联合决定,当按下时为低电平“0”,没有按下时为高电平“1”。行向量为y,列向量为x,长度都为5。当有键按下时,检测x,y的值以确定哪个键按下。将输入x,y并置作为判决条件,并对每一个键进行编码,送入输出变量s。2、5*5键盘的25个键位分别为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,+,-,*,/,←,=,>,<,&。x,y的值都为0000~11111,其中,x与y每次最多只能有一位为零方有效。然后对25个键分别
4、编码,以确定x,y的值变化时s相应的值。3、此键盘前十个数字键不止有数字键的功能,同时在shift键的作用下还可以依次为以下10个键:!,^,(,),_,[,],#,{,}。这相当于实现了组合键的功能。但是shift键不能作为25个键中的一个,因为每次只能有一个键按下,所以,我们可以变通的将shift键作为一个独立的小键盘,用一个变量a来控制shift键有无按下。当a=0时shift按下,当a=1时,shift没有按下。现在的键盘相当于为5*5键盘和小独立键盘shift的组合键盘。现在的键扩展到了35个。s
5、的值为000000~100010。所以现在是以x,y,a三个输入共同决定s这个输出,以决定到底是哪一个键按下。4、键盘的实物模拟图及电路原理示意图16以上图形为手画的实物键盘模拟图。以上图形为键盘电路原理示意图四、基于VHDL语言的键盘控制电路的设计实现1、变量的设计:用x,y,a三个变量分别表示键盘行向量的值、键盘列向量的值以及shift键的值,以确定输出s。2、程序的书写:16LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYkeyboardISPORT(x,y:
6、INSTD_LOGIC_VECTOR(4DOWNTO0);a:INSTD_LOGIC;s:OUTSTD_LOGIC_VECTOR(5DOWNTO0));ENDkeyboard;ARCHITECTUREstrucOFkeyboardISBEGINPROCESS(x,y,a)VARIABLExya:STD_LOGIC_VECTOR(10DOWNTO0);BEGINxya:=(x&y&a);--将x,y,a三者并置来作为case语句的判别条件CASExyaISWHENB"11110111101"=>s<="000
7、000";WHENB"11110111011"=>s<="000001";WHENB"11110110111"=>s<="000010";WHENB"11110101111"=>s<="000011";WHENB"11110011111"=>s<="000100";WHENB"11101111101"=>s<="000101";WHENB"11101111011"=>s<="000110";16WHENB"11101110111"=>s<="000111";WHENB"11101101111"=>s<="0
8、01000";WHENB"11101011111"=>s<="001001";WHENB"11011111101"=>s<="001010";WHENB"11011111011"=>s<="001011";WHENB"11011110111"=>s<="001100";WHENB"11011101111"=>s<="001101";WHENB"11011011111"=>s<="001110";WHENB"101