ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:99.48KB ,
资源ID:6444356      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6444356.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告四位数电子密码锁.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验报告四位数电子密码锁.docx

1、实验报告四位数电子密码锁 四位数电子密码锁一, 实验目的1. 学习查找相关资料,并对小型项目开发有一定的认识;2. 掌握能进行模块化设计的能力;3. 学会对各部分电路,进行讨论、说明与仿真验证,最后在整合起来。二, 硬件要求1、拨位开关。2、FPGA主芯片:EP1K30QC208。3、LED显示模块。4、4*4键盘。5、七段数码管三, 实验原理通过对44键盘进行扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。键盘扫描的实现过程如下:对于44键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定

2、输出4行为高电平,然后输出4列为低电平,在读入输出的4行的值,通常高电平会被低电平拉低,如果读入的4行均为高电平,那么肯定没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。获取到行值和列值以后,组合成一个8位的数据,根据实现不同的编码在对每个按键进行匹配。两功能键:在开锁状态时,一个用于清除数字,一个用于激活电锁。在上锁状态,一个用于清除,一个用于解除电锁。四、实验内容及步骤1、编写4*4数字密码

3、锁的VHDL代码。2、用MaxPlusII对其进行编译仿真。3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。4、给芯片进行管脚绑定,在此进行编译。5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。6、给目标板下载代码,在44键盘输入键值,观看实验结果。五、程序代码及说明LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; LIBRARY altera; -这是利用库编译成的去拌电路。

4、USE altera.maxplus2.ALL; entity debouncing isport( D_IN,CLK :IN STD_LOGIC; D_OUT:OUT STD_LOGIC);END DEBOUNCING;ARCHITECTURE A OF debouncing ISSIGNAL VCC,INV_D:STD_LOGIC;SIGNAL D1,D0:STD_LOGIC;signal Q0,Q1: STD_LOGIC;BEGIN VCC=1; INV_DVCC,Q=Q0,CLK=CLK,CLRN=INV_D,PRN=VCC); DFF2: DFF PORT MAP(D=VCC,Q=Q

5、1,CLK=CLK,CLRN=Q0,PRN=VCC);PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN D0=NOT Q1; D1=D0; END IF; END PROCESS; D_OUT=NOT(D1 AND NOT D0);END A;-* -这里密码锁的主程序LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; LIBRARY altera; USE altera.maxplus2.A

6、LL; -* ENTITY elec_lock IS PORT ( CLK_4M : IN STD_LOGIC ; -system original clock 4M CLK_SCAN,outnum : OUT STD_LOGIC_VECTOR (3 downto 0) ; -scan sequence KEY_IN : IN STD_LOGIC_VECTOR (3 downto 0) ; -KEY IN button code FLAG_NUMB : OUT STD_LOGIC ; 判断按下的是数字键FLAG_FUNC : OUT STD_LOGIC ; 判断按下的是功能键ENLOCK :

7、OUT STD_LOGIC ; -1:LOCK, 0:UNLOCK SELOUT: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); -38选择信号SEGOUT : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) - SEG7 Display ); END elec_lock ; -* ARCHITECTURE a OF elec_lock IS component debouncing -调用去抖port( d_in : IN STD_LOGIC ; clk : IN STD_LOGIC ; d_out : OUT STD_LOGIC ) ; end co

8、mponent ; SIGNAL CLK : STD_LOGIC ; SIGNAL CLK_KEYBOARD : STD_LOGIC_VECTOR(1 downto 0) ; SIGNAL CLK_DEBOUNCE : STD_LOGIC ; SIGNAL CLK_DISPLAY : STD_LOGIC_VECTOR(1 downto 0) ; SIGNAL C : STD_LOGIC_VECTOR(3 downto 0) ; SIGNAL N : STD_LOGIC_VECTOR(3 downto 0) ; SIGNAL F : STD_LOGIC_VECTOR(3 downto 0) ;

9、SIGNAL FN : STD_LOGIC ; SIGNAL FF : STD_LOGIC ; SIGNAL SEL : STD_LOGIC_VECTOR (3 downto 0) ; SIGNAL ACC : STD_LOGIC_VECTOR (15 DOWNTO 0) ; SIGNAL REG : STD_LOGIC_VECTOR (15 DOWNTO 0) ; SIGNAL RR2 : STD_LOGIC ; - * RR2 = Clear SIGNAL QA, QB, BB : STD_LOGIC ; SIGNAL NC : STD_LOGIC_VECTOR (2 DOWNTO 0)

10、; SIGNAL DB : STD_LOGIC_VECTOR( 3 DOWNTO 0);- Number TO Display SIGNAL SEG : STD_LOGIC_VECTOR( 6 DOWNTO 0);- SEG7 Display Signal BEGIN -* 连接模块 - CONNECTION FLAG_NUMB = FN ; FLAG_FUNC = FF ; CLK_DEBOUNCE = CLK ; SELOUT = 0&CLK_DISPLAY ;SEGOUT(6 DOWNTO 0) = SEG; - Seven Segment Display -* 时钟模块 - scan

11、signal generator counter : block Signal Q : STD_LOGIC_VECTOR(22 DOWNTO 0); Signal S : STD_LOGIC_VECTOR(1 DOWNTO 0) ; -keyboard scan about 15Hz * SIGNAL SEL : STD_LOGIC_VECTOR (3 downto 0); BEGIN PROCESS (Clk_4M) -各种时钟产生 Begin IF CLK_4MEvent AND CLK_4M = 1 then Q = Q+1; END IF; END PROCESS; CLK = Q(0

12、) ; -CLK = CLK_DEBOUNCE CLK_KEYBOARD = Q(5 DOWNTO 4) ; -产生扫描信号- 32分频 CLK_DISPLAY 1101-1011-0111 对应一,二,三,四行 SEL = 1110 WHEN CLK_KEYBOARD=0 ELSE -行扫描1101 WHEN CLK_KEYBOARD=1 ELSE 1011 WHEN CLK_KEYBOARD=2 ELSE 0111 ; CLK_SCAN key_in(0) , d_out = C(0) , clk = CLK ); U2: debouncing PORT MAP ( d_in = key_

13、in(1), d_out = C(1) , clk = CLK ); U3: debouncing PORT MAP ( d_in = key_in(2) , d_out = C(2) , clk = CLK ); U4: debouncing PORT MAP ( d_in = key_in(3) , d_out = C(3) , clk = CLK ); END block debounuing ; -* -key_decoder key_decoder : block -按键译码 模块 signal Z : std_logic_VECTOR(5 downto 0) ; -KEY POSI

14、TION SIGNAL R1, R0 : STD_LOGIC ; begin PROCESS(clk) begin Z N N N N N N N N N N N F F F = 1000 ; end case ; END IF ; end process ; FN = NOT ( N(3) AND N(2) AND N(1) AND N(0) ) ; FF = ( NOT F(3) AND F(2) AND NOT F(1) AND NOT F(0) OR (NOT F(3)AND NOT F(2)AND NOT F(1) AND F(0) ) ; -To generate clear si

15、gnal for ACC 16位 为输入 PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN R1 = R0 ; R0 = FF ; -R0为开或关锁标志 END IF ; RR2 = R1 AND NOT R0 ; -功能标志为0且R1输出为1,表示功能执行完成 CLEAR = RR2 ; -开放信号由此而得 END PROCESS ; end block key_decoder ; -* -KEYIN / BACK / ALL CLEAR -键盘输入处理模块 KEYIN_PROCESS :BLOCK SIGNAL RST,D0,D1: STD_

16、LOGIC ; BEGIN PROCESS(CLK,FN,RST) BEGIN IF RST = 1 THEN ACC = 0000000000000000 ; -CLEAR INPUT NC = 000 ; -表示显示位数 ELSE IF FNEVENT AND FN = 1 THEN IF NC 4 THEN -表示显示位数 ACC = ACC(11 DOWNTO 0) & N ; -实现左移 NC = NC + 1 ; END IF ; END IF ; END IF ; END PROCESS ; RST = RR2 ; END BLOCK KEYIN_PROCESS ; -* LOC

17、K_PROCESS : BLOCK -控制模块 BEGIN PROCESS(CLK,F) BEGIN IF (CLKEVENT AND CLK = 1) THEN IF NC = 4 THEN IF F(2) = 1 THEN -LOCK REG = ACC ; -密码存储 QA = 1 ; QB = 0; -置关锁标志位 ELSIF F(0) = 1 THEN -UNLOCK IF REG = ACC THEN -CHECK PIN CODE QB = 1 ; QA= 0; -置开锁标志位 END IF ; ELSIF ACC = 0000000100100011 THEN -源始密码开锁

18、-To set 0123 is the Universal. pin number QB = 1 ; QA= 0; END IF ; END IF; END IF ; END PROCESS ; END BLOCK LOCK_PROCESS ; ENLOCK = QA AND NOT QB ; -锁的标志位 1关锁,0打开 -* MULTIPLEXER : BLOCK -多路显示控制处理模块 BEGIN DB = ACC(15 DOWNTO 12) WHEN CLK_DISPLAY = 0 ELSE ACC(11 DOWNTO 8) WHEN CLK_DISPLAY = 1 ELSE ACC(

19、7 DOWNTO 4) WHEN CLK_DISPLAY = 2 ELSE ACC(3 DOWNTO 0) WHEN CLK_DISPLAY = 3 ELSE 1111 ; outnum Segment 7 Code -显示模块 Begin -gfedcba SEG = 0111111 WHEN DB = 0 ELSE 0000110 WHEN DB = 1 ELSE 1011011 WHEN DB = 2 ELSE 1001111 WHEN DB = 3 ELSE 1100110 WHEN DB = 4 ELSE 1101101 WHEN DB = 5 ELSE 1111101 WHEN DB = 6 ELSE 0000111 WHEN DB = 7 ELSE 1111111 WHEN DB = 8 ELSE 1101111 WHEN DB = 9 ELSE 0100010; End Block SEVEN_SEGMENT; END a; 仿真结果: 六、实验心得

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1