[EDA]VHDL实现"电子密码锁"

bt001bt 2007-05-15 09:16:32
小弟是一个学生,学计算机的,学校从来没教过硬件语言就让做这个,而且是一星期之内,我们还要上课...我也看了相关方面的资料,有点头绪,但是做不出来,希望有人能帮帮忙,感激不尽!

题目这样的:

设计一个电子密码锁,在锁开的状态下输入密码,密码共4位,用数据开关K1K10分别代表数字1、2、…、9、0,输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示左移一位。可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示右移一位,并在左边空出的位上补充“0”。用一位输出电平的状态代表锁的开闭状态。为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。

设计4个模块:
密码输入删除控制模块
寄存模块
比较模块
扫描显示模块

希望有人能在百忙中抽点时间,谢谢了!
...全文
2880 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbang 2010-06-11
  • 打赏
  • 举报
回复
同样需求,,希望有完善一点的,,
  • 打赏
  • 举报
回复
是用Verilog语言吧!我学过的,不过用这个也可以写密码锁啊?要很多时间呀!这是一个38译码器,可借鉴实现扫描显示模块:

module decode38u2 (data_in ,EN ,Y) ;
input [2:0] data_in ;
input EN ;
output [7:0] Y ;
reg [7:0] Y ;

always @(data_in or EN )
begin
if (EN == 1)
if (data_in == 3'b000 ) Y = 8'b11111110;
else if (data_in == 3'b001 ) Y = 8'b11111101;
else if (data_in == 3'b010 ) Y = 8'b11111011;
else if (data_in == 3'b011 ) Y = 8'b11110111;
else if (data_in == 3'b100 ) Y = 8'b11101111;
else if (data_in == 3'b101 ) Y = 8'b11011111;
else if (data_in == 3'b110 ) Y = 8'b10111111;
else if (data_in == 3'b111 ) Y = 8'b01111111;
else Y = 8'bxxxxxxxx;
else
Y = 8'b11111111;
end
endmodule
meiZiNick 2008-05-01
  • 打赏
  • 举报
回复
有问题请先GOOGLE,BAIDU
BiBByLin 2007-05-17
  • 打赏
  • 举报
回复
我也是刚学的.
第2个和第3个可以用
library lpm;
use lpm.lpm_components.all;
然后用并发语句
U1: lpm_ff
......
U2: lpm_comp....
第一个模块是很普通的呀.
第4个我也不懂
多交流下啦

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧