限制密码输错次数的流程控制

1,线定义两个变量来存储正确的账号、密码,以及输入的次数
2,使用死循环,不断提示用户输入用户名和密码
3,在判断账号密码是否正确前先判断输入次数<3?
                 如果True,则进行账号、密码的判断
                 如果False,  则提示超过3次watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQ2lDaSoq,size_20,color_FFFFFF,t_70,g_se,x_16

 

### 六位密码锁数字电路设计 #### 1. 总体架构 为了实现一个带有次数限制的六位密码锁,整个系统可以分为几个主要部分:矩阵键盘用于密码、存储模块保存设定密码、比较逻辑判断入是否正确以及计数器记录错误尝试次数。当错误尝试达到预设上限时触发锁定机制。 #### 2. 密码入与验证 使用4×4矩阵键盘来接收用户的密码入操作[^1]。每次按下键都会产生对应的扫描信号,通过行列线读取具体按下的位置并转换成相应的字符或数值表示。对于六位密码而言,在用户完成全部六个字符的录入之后启动一次完整的匹配过程: ```verilog module password_input( input wire clk, input wire rst_n, // active low reset output reg [7:0] key_value, output reg valid_key ); // ...省略内部实现... endmodule ``` 一旦接收到有效的六位序列,则将其传递给后续处理单元进行校验工作。 #### 3. 错误尝试计数 每当检测到不正确的密码提交时,增加一个由D型触发器构成的二进制加法计算器中的值直到达到最大允许失败次数为止。如果超出此范围则激活定时封锁状态防止进一步的操作请求被接受。 ```verilog module attempt_counter( input wire clk, input wire rst_n, input wire increment, output reg [3:0] attempts_left ); always @(posedge clk or negedge rst_n) begin if (!rst_n) attempts_left <= 4'b1111; // 假设有四位用来表示剩余尝试次数 else if (increment && attempts_left != 0) attempts_left <= attempts_left - 1; end endmodule ``` #### 4. 定时封锁功能 在连续几次错误入后,利用定时器阻止任何新的解锁动作一段时间。这可以通过设置一个较长周期的分频器配合门控信号共同作用于主流程控制上来达成目的。 ```verilog module lock_timer( input wire clk, input wire start_locking, output reg locked_state ); reg [31:0] counter; always @(posedge clk) begin if (start_locking || counter >= 'd60_000_000 /*假设为一秒*/) begin locked_state <= !locked_state; counter <= 0; end else if (!locked_state) counter <= counter + 1; end endmodule ``` #### 5. EEPROM 存储固定密码 考虑到实际应用中可能需要经常更新默认密码的情况,因此建议采用EEPROM这样的非易失性内存器件来进行持久化管理。这样即使设备断电重启也能保持之前所配置好的安全参数不变。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值