1 / 22
文档名称:

密码锁verilog课程设计.doc

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

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

分享

预览

密码锁verilog课程设计.doc

上传人:beny00001 2022/2/8 文件大小:210 KB

下载得到文件列表

密码锁verilog课程设计.doc

文档介绍

文档介绍:word
word
1 / 22
word
课程设计报告
课程设计题目:4位串行数字密码锁
学 号:6
学生:渊良
专业:通信工程
班 级:14213时,a的值是1,而不是0。每次按了reset或set,a,b,c,d都是要重新赋值的,这才符合实际情况。
word
word
5 / 22
word

因为这个密码锁是循环使用的,就一定有不同的状态。这里采用有限状态机的方法进行设计。所以把***过程分为三个部分:



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