1 / 15
文档名称:

密码锁verilog课程设计.docx

格式:docx   大小:56KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

密码锁verilog课程设计.docx

上传人:大于振 2022/4/28 文件大小:56 KB

下载得到文件列表

密码锁verilog课程设计.docx

相关文档

文档介绍

文档介绍:课程设计报告
课程设计题目: 4 位串行数字密码锁
学 号
学生姓名 :谢渊良
专 业:通信工程
班 级: 1421302
指导教师 :钟凯
2017年 1月 5日
键,再按一下 1 键时, a 的值是 1,而不是 0。每
次按了 reset 或 set, a,b,c,d 都是要重新赋值的,这才符合实际情况。
控制模块:
因为这个密码锁是循环使用的,就一定有不同的状态。这里采用有限状态机的方法进行设计。所以把***过程分为三个部分:



状态转换图如下所示:
控制模块接口图:
flag2
ena
a
控制模块
b
c_led
c
等待输入状态
Set=1
d
d_led
set
rese
clkt
设计原理:通过各种状态的转变,实现密码锁的***,报错,重设密码功能。当密码错误是 ena=1;当重
设密码成功时 c_led 置为 1;当输入密码成功***时 d_led 为 1。
控制模块仿真如下:
Reset=1
输因出为结初果设状密态码是 0000,所以在第一个 flag2 的矩形波到来后, d_led 出现一个矩形波,实际上不应该出现重设密码状态
矩形,一直亮直到 reset 重置才行。或者设计一个计数器都行,虽然只是一些小错误,但如果在实际验证中可能
现象就不易观察了。然后就是按下 set 键的模拟了,波形都达到了课设的要求。这是令人欣喜的,虽然经过了很
重设完密码
多次的修改,实在是很不容易。
标志
实验心得
我从第二个星期的星期一开始做,本来只是随便做一下,但是看到周围同学都热情高昂,我也深受感染,
然后开始查资料,后面看到这个状态机的方法很不错,很方便的解决了状态的转换问题,然后我就尝试这个方法。同时在写程序的时候我也遇到了很多了困难,其中最难找的错误就是逻辑错误,但是最终还是一一被我解
决了。心中的成就感还是有一些的。通过此次的课设,使我对数字电路的设计有更深层次的了解 (各种时序),
对 verilog 语言的运用也更加熟练。由于时间和心力有限的原因,使我只能止步各个模块的设计了。本来还想联
合仿真的,但是电脑里只装了 modersim ,其中又有一个键盘开关的硬件,还是比较难实现的。我想,如果我的程序下载到 fpga 芯片里,那是一定会出现不少错误的,实际的情况往往更加复杂,这也是我的一大遗憾!最后
我要感谢我的室友,感谢他们对我的关爱,在我将要放弃的时候鼓励我,使我积极向前。在此,我还要特别感谢英明兄的无私帮助,减少了我找编译错误的时间。还依稀记得上次的数电感觉也是如此,很不错啊。
附:
Verilog 程序代码
Key_board_input:
module key_board_input(clk,a,b,keyvalue,flag ,q,j);
input clk;
input[1:0] b;
output reg[1:0] a;
output reg[1:0] keyvalue;
output reg flag;
output reg q=1;
output reg[1:0] j=0;
always @(posedge clk)
begin
q=q+1;
case(q)
0:a=2'b01;
1:a=2'b10;
endcase
case({a,b})
4'b10_01:begin
keyvalue=2'b00;flag=1;j=3;end
4'b10_10:begin
keyvalue=2'b01;flag=1;j=3;end
4'b01_01:begin
keyvalue=2'b10;flag=1;j=3;end
4'b01_10:begin
keyvalue=2'b11;flag=1;j=3;end
default:keyvalue=keyvalue;
endcase
begin
j=j+1;
if(j==3) flag=0;
end
end
endmodule
key_board_test:
`timescale 1s/1