2

我发布了这个数字逻辑图作为另一个 stackoverflow 问题答案。它描述了一个逻辑系统,该系统将以 Verilog 或 VHDL 编码并最终在 FPGA 中实现。

替代文字 http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

图中的编号框表示字段中的位。每个字段都有K位,电流掩码的位将由计算机系统提供(使用锁存寄存器或等效物)。接下来的位将被读回同一计算机系统。

只要掩码字段中至少设置了一位,并且当前位字段中恰好设置了一位,我发布的解决方案就可以工作。这个想法是,在计算机系统执行了某些任务(调度操作,在原始问题中)之后,下一个位域将成为当前位域。

所以,我的问题是: 你将如何修改这个系统,以便它正确处理当前位字段全为零(未设置位)的特殊情况?就目前而言,如果current中的所有位都为零,则输出也将为零,无论掩码中的位设置为什么。

理想情况下,如果当前全为零,则掩码中的最低设置位应设置在next中。该系统还应保持可扩展至任意数量的位 (K),而无需添加成倍增加的逻辑门。最初问题的精神是想出一个可以直接实现任意位数的解决方案。

另请参阅:this stackoverflow question

4

1 回答 1

2

对我来说,我会告诉 FPGA 的用户,他们必须在输入时将其中一个位设置为 1。

但是,如果这不是您的首选解决方案,那么最初将所有 Current 输入预先馈送到一个大 NOR 门的想法有什么问题(这样只有当所有输入都为假时输出才为真)。除了 Current[1] 在进入它的 AND 门之前与我们的 NOR 门的输出进行 OR'ed 之外,所有 Current 线也继续通过它们的 AND 门

那样的话,如果所有 Currents 都是假的,那么 Current[1] 将是真的进入 AND 门。

请记住,我了解布尔代数,但我从未在原始硬件上工作过——我猜你需要将所有输入信号缓冲到与门中以确保正确的时序,但我怀疑你会比一世。

保留下图以防 SO 修复其代码/预块 - 最新的 SO 更新似乎已将它们塞满(使它们成比例,而不是固定宽度的字体)。无论如何,eJames的图形图更好。

这是我的图表,比你的稍微不优雅:-):

               +-------------------+
               |                   |
               |     +----         |
Current[1]-----+------\   \        |
                       |NOR|o--+   |
Current[2-k]---+------/   /    |   |
               |     +----     |   |
               |              +\   /+
               |              | \_/ |
             +---+            |  OR |
              \ /Buffer        \   /
               +                ---
               |                 |
             +---+             +---+
             |2-k|             | 1 |    <- These signals feed 
             +---+             +---+       into your AND gates.

于 2009-01-28T06:10:27.517 回答