← 2022 · NV 笔试

推荐答案 测试一下

There is a counter can downcounttom 60to0. When the count reaches 0, the count will alarm. There are 4 buttonson the co…

There is a counter can downcounttom 60to0. When the count reaches 0, the count will alarm. There are 4 buttonson the counter (they can all be treated as pulse signals). Users are allowed topress merely 1 button each time. When the counter is alarming, press ‘add’ or ‘clear’buttons will stop alarming.
编程题 中等 笔试真题

参考答案

设计一个倒计时计数器,初始值为60,每个时钟周期递减1,计数到0时产生报警信号。有4个按键(脉冲信号):add、clear、start、stop(假设,因为题目只提及add和clear,但要求4个按钮,通常需要start/stop控制计数启停)。用户每次只能按一个按钮,需要互斥处理。按键输入需经同步和边沿检测得到单周期脉冲。状态机设计:IDLE(空闲),COUNTING(计数中),ALARM(报警)。在IDLE状态,按下start进入COUNTING,计数递减;COUNTING中,按下stop返回IDLE,按下add将计数值加1(上限60),按下clear清零并返回IDLE;当计数到0进入ALARM,按下add将计数值加1并停止报警进入COUNTING,按下clear清零并停止报警进入IDLE。注意:在ALARM时,add和clear均可停止报警,但add会设置计数值为1(因为加1后从0变成1,然后继续递减)?或者add直接将计数值设为某个值?常见设计:add增加时间,clear清零。由于题目未明确,可假设add使计数值加1(不超过60),clear使计数值清零。需考虑按键互斥:按优先级或同时按下只处理一个。计数器需同步复位。报警信号为组合逻辑,计数为0时输出。易错点:没有处理按键消抖和边沿检测导致误触发;状态转换条件遗漏;计数器范围约束;同时按下多个按键的仲裁。

涉及知识点

  • 有限状态机设计
  • 脉冲边沿检测与同步
  • 计数器建模与边界处理
  • 按键互斥与优先级
  • 报警信号产生逻辑
← 上一题
登录后反馈错题
下一题 →