1、 PORT ( CLK,B_IN : IN STD_LOGIC; B_OUT : OUT STD_LOGIC );END ; ARCHITECTURE a OF xiaodou IS signal Vcc, INV_B : std_logic ;signal A0, A1 :signal B0, B1 : BEGIN Vcc = 1 ; INV_B Vcc , q = A0 , clk = CLK, prn = Vcc, clrn = INV_B ); dff2 : A1 , clk = process (CLK) begin if CLKEVENT and CLK= then B0 = no
2、t A1; B1 = B0; end if ;end process ;B_OUT = not (B1 and not B0);消抖电路的仿真波形图:2.2 键盘扫描模块我们在键盘的四列输入口中输入一个低电平时钟扫描,当有按键被打下时,对应的行被键接通也呈现低电平状态,然后将此输入输出信号输出到键盘编码就可以进行键盘按键识别了。键盘扫描封装图如下:该模块程序如下:LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY SAOMI
3、AO IS PORT ( CLK : IN STD_LOGIC ; CLK_SAOMIAO : OUT STD_LOGIC_VECTOR (4 downto 1) ); ARCHITECTURE a OF SAOMIAO IS Signal M : STD_LOGIC_VECTOR(2 DOWNTO 1); SIGNAL N: STD_LOGIC_VECTOR(4 DOWNTO 1);Begin PROCESS (CLK) IF CLKEvent AND CLK= THEN N = N+1; M =N(4 DOWNTO 3); END IF; END PROCESS;CLK_SAOMIAO B
4、T=01E NULL; END CASE;END PROCESS;PROCESS(CLK)EVENT AND CLK=THEN N=N+1;END;七段数码显示电路仿真图:2.4 译码电路模块本模块上接键盘扫描模块,下接七段数码显示电路模块。主要功能是实现键盘的译码。该模块封装图如下:具体程序如下: LIBRARY IEEE;ENTITY keycode ISPORT(X:IN STD_LOGIC_VECTOR(2 DOWNTO 0); Y:IN STD_LOGIC_VECTOR(3 DOWNTO 0); XT:IN STD_LOGIC; C,D:OUT STD_LOGIC_VECTOR(6
5、DOWNTO 0):0111111 CO:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END keycode;ARCHITECTURE yima OF keycode IS SIGNAL E: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL F: SIGNAL S,EN,EN1: STD_LOGIC; PROCESS(X,Y) VARIABLE xy: STD_LOGIC_VECTOR(6 DOWNTO 0); xy:=(X&Y); IF XT= CASE xy IS WHEN11011100000C(6 downto 0)1101101000
6、10000110110101100101011011110011100111001111101111001001100110101110101010110111110010101110000111011111010001111111011110110010111011CO10100110111 ELSIF XT=0FD(6 downto 0)键盘译码电路仿真波形图:2.5 密码控制电路模块密码控制电路是本次课题设计的核心部分,我们通过密码控制来断定数字锁的开或关。当密码输入时,按下确定键,输入数字和所存的密码进行比较,若相同则进入开锁状态。若输入密码不正确则立刻进入报警状态,然后按下清零键,重
7、新输入密码。密码控制封装图如下:ENTITY kongzhi IS PORT(E_IN: F_IN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CO_IN: K,M:OUT STD_LOGIC);ARCHITECTURE luoji OF kongzhi IS SIGNAL G,H:STD_LOGIC_VECTOR(3 DOWNTO 0):0; SIGNAL COUNT1,COUNT2: STD_LOGIC:= SIGNAL CO: PROCESS(CO_IN) begin IF CO_IN=THEN EN1 ELSIF CO_IN= ENEN1if(S=)and(en=
8、)and(count1=) then G(3 downto 0)=E_IN(3 downto 0); H(3 downto 0)=F_IN(3 downto 0); count1=not(count1); end if;if(en1=)and(count2= if(E_IN(3 downto 0)= G(3 downto 0) and F_IN(3 downto 0)=H(3 downto 0) then kENs elsem count2=not(count2);ELSif(en=)and(en1=count2kEND PROCESS ;三、调试下载1、引脚锁定:这个过程中特别要注意的是,在
9、锁定引脚后必须再通过MAX+plus的编译器“Compiler”,对文件重新进行编译一次,以便将引脚信息编入下载文件中。2、连接线路:选择主菜单“MAX+plus”中的“Programmer”选项,改变为适合实验箱的模式,按照引脚锁定连接好线路,打开电源。3、正式下载:单击“Configure”按钮,向EP1K30下载配置文件,如果连接无误,将出现报告配置完成的信息提示“Configuration Complete”。 总框图如下:四、心得体会为期一周的课程设计结束了,刚开始由于对嵌入式系统不熟悉,拿到这个课题时毫无头绪,根本不知道从何处入手,并且在设计过程中遇到了很多的问题,但老师和同学的帮
10、助下,加上自己的努力,终于逐个解决了每一个难题。 在这两周中的学习使我对EDA这门课程有了进一步的了解,使我加强了动手、思考和解决实际问题的能力。并让我深刻的体会到,嵌入式系统的应用十分广泛,运行硬件描述语言,能很容易地设计出具有严格要求的数字锁。在做完每一个单元模块后,都要验证它是否能够满足此单元的功能。有时候就是按照了原理来连接,但就是不能实现预期的功能。这就需要细心地找问题,是不是哪根线坏了,还是哪块芯片坏了或接触不好,但有时也存在原理上的错误。在设计过程中,同时也暴露出了自身的许多不足,如自己自主解决问题的能力有所欠缺,这在以后需要更好的加强。同时在此设计过程中还用到了MAX+PLUS等软件,我更熟悉了此软件的使用,这对以后的工作和解决实际问题都有了很好的帮助。 我感觉本次课程设计我的收获还是颇多的!五、参考文献1. 康华光主编.电子技术基础(数字部分),高等教育出版社。2. 彭介华主编,电子技术课程设计指导,高等教育出版社。3. 张 原编著,可编程逻辑器件设计及应用,机械工业出版社。4. MAX+PLUS入门5.刘洪喜,陆颖编著. VHDL电路设计实用教程,清华大学出版社 河南机电高等专科学校EDA课程设计报告设计题目:基于CPLD的数字锁 系 部: 电子通信工程系 专 业:医用电子仪器与维护班 级: 091 学生姓名: 郭呈芬 学 号: 090411102 成 绩:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1