您将如何处理此数字逻辑系统中的特殊情况?

时间:2009-01-28 04:25:39

标签: hardware boolean-logic digital-logic

我将此数字逻辑图作为answer发布到another stackoverflow question。它描述了一个逻辑系统,它将用Verilog或VHDL编码,最终在FPGA中实现。

alt text http://img145.imageshack.us/img145/5125/bitshifterlogicdiagramkn7.jpg

图中的编号框表示字段中的位。每个字段具有 K 位,并且 current mask 的位将由计算机系统提供(使用锁存寄存器或等效物)。 next 中的位将被读回到同一计算机系统中。

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

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

理想情况下,如果 current 全为零,则 mask 中的最低设置位应设置在 next 中。系统还应保持可扩展到任意数量的位(K),而不必增加指数级的逻辑门。原始问题的精神是提出一种解决方案,可以直接实现任意数量的位。

另请参阅:this stackoverflow question

1 个答案:

答案 0 :(得分:2)

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

但是,如果这不是您首选的解决方案,那么将所有电流输入预先馈入大NOR门的想法有什么不对(这样只有当所有输入都为假时输出才为真)。所有当前线路也继续到其AND门,除了在进入AND门之前,Current [1]与NOR门的输出进行“或”运算

这样,如果所有电流都是假的,则Current [1]将进入AND门。

请记住,我理解布尔代数,但我从未在原始硬件上工作 - 我猜你需要将所有输入信号缓冲到AND门以确保正确的时序,但我怀疑你会知道比我好。

如果SO修复了它的代码/预阻塞,则保留下面的图表 - 最新的SO更新似乎已经填满了它们(让它们成比例,而不是固定宽度,字体)。无论如何,eJames的图形图表更好。

这是我的图表,略逊于你的图: - ):

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