【问题标题】:How to implement hardware that remembers previous value in digital logic design?如何实现在数字逻辑设计中记住先前值的硬件?
【发布时间】:2018-02-21 17:17:28
【问题描述】:

我正在尝试设计以下内容:

  • 具有 24 位输入寄存器的八进制计算器的数据路径 reg 和一个 24 位累加器 acc。
  • 内容 两个寄存器都显示为八位八进制 (radix-8) 数字。两者都在复位时被清除。
  • 计算器有 C(清除)、数字 0-7 以及功能 +、- 和 x 的按钮。按 C 一次清除 注册
  • 按 C a 第二次没有其他干预键清除 acc。按数字移入 reg 向左三位和 将按下的数字放入低三位。
  • 按一个函数在两个寄存器上执行该函数 并将结果放入 acc。从此计算器的数据路径绘制框图

到目前为止我所拥有的是:

  • reg_in 和 acc 触发器,具有相同的时钟和复位
  • 一个 ALU(执行函数操作)从 in_reg 和 acc 接收输入并输出回 in_reg,由 ALUselect 信号驱动
  • 一个移位寄存器,将输入位移动 3 位并将它们放回 reg_in

但是,我坚持的部分是如何实现“按 C”部分。我可以做出什么样的设计选择,如果 C 被按下一次,我可以清除 reg_in,如果 C 被再次按下,我可以清除 acc?我想找到一种比使用计数器更简单的方法。

感谢任何帮助!

【问题讨论】:

    标签: digital-logic flip-flop


    【解决方案1】:

    额外的一位寄存器应该可以解决这个问题。我们就叫它last_button吧。

    • 如果按下 C 并且 last_button 之前是 0,则将 last_button 设置为 1
    • 如果按下另一个按钮,请将 last_button 设置为 0
    • 如果按下 C 时 last_button0,则清除 reg_in
    • 如果按下 C 时 last_button1,则清除 acc
    • 如果acc 被清除,请将last_button 清除为0

    你可以假设这个逻辑是一个有 2 个状态的 Mealy 机器,那么last_button 就是状态信号。 C 按钮始终切换状态,其他按钮将状态设置为零。机器的输出(清除reg_in/acc)取决于输入(按钮)和当前状态。

    【讨论】:

      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多