бинарный к NAND gate - булева алгебра - PullRequest
0 голосов
/ 15 октября 2010

Я беру урок цифровой логики и пытаюсь умножить это двоичное число. Я не уверен, что такое перенос и вывоз. слайды учителей ужасны. Похоже, он использовал для этого таблицу правды, но это сбивает с толку.

   X1X0 
 + Y1Y0
   ----
 Z2Z1Z0

Я думаю, вот как это настроено! Теперь для умножения

    1  carry in?
110101 
X 1101
------
101011001  thats what i ended up with. Probobly, not right!

Я думаю, что моя таблица истинности должна выглядеть примерно так: имейте в виду, что это не соответствует моему ответу выше

       X1X0 
     + Y1Y0
       ----
     Z2Z1Z0

       X0 Y0   Carry     Z0
       0   0     0        0
       1   0     0        1
       0   1     0        1
       1   1     1        0



  X1  Y1   Carryin            Carryout Z1 
  0   0     0                       0   0
  1   0     0                       0   1
  0   1     0                       0   1
  1   1     0                       1   0
  0   0     1                       0   1
  1   0     1                       1   0

Я запутался в части x1 и y1 Было бы легче, если бы я мог видеть это в действии и пометить, что такое «переносить» и «выполнять», пока его умножают.

будет ли "перенос" результатом 1 + 1, а "перенос" будет результатом следующего переноса?

Я думаю, что после того, как мы составим таблицу истинности с выполнением и выполнением мы должны использовать булеву алгебру, например:

Z1 = X1• Y1' • Carryin' + X1' • Y1• Carryin' + X1' • Y1' • Carryin + X1• Y1• Carryin 
Carryout = X1• Y1• Carryin' + X1 • Y1' • Carryin + X1' • Y1• Carryin + X1 • Y1• Carryin
Z2 = Carryout

Мы должны «разработать уравнения для функций AND, OR и NOT, используя только оператор NAND». не уверен как это сделать!

1 Ответ

1 голос
/ 15 октября 2010

NAND - это просто операция AND, за которой следует NOT.

С точки зрения реализации других логических операций с помощью NAND:

  NOT a = a NAND a

a | (a NAND a) | result
--+------------+-------
0 |     1      |  OKAY
1 |     0      |  OKAY

a AND b = NOT (NOT (a AND b))
        = NOT (a NAND b)
        = (a NAND b) NAND (a NAND b)

a | b | x=(a NAND b) | (x NAND x) | result
--+---+--------------+------------+-------
0 | 0 |      1       |     0      |  OKAY
0 | 1 |      1       |     0      |  OKAY
1 | 0 |      1       |     0      |  OKAY
1 | 1 |      0       |     1      |  OKAY

a OR  b = NOT((NOT a) AND (NOT b))               # DeMorgans Law
        = NOT((a NAND a) AND (b NAND b))
        = NOT(NOT ((a NAND a) NAND (b NAND b)))
        = (a NAND a) NAND (b NAND b)

a | b | x=(a NAND a) | y = (b NAND b) | (x NAND y) | result
--+---+--------------+----------------+------------+-------
0 | 0 |       1      |        1       |      0     |  OKAY
0 | 1 |       1      |        0       |      1     |  OKAY
1 | 0 |       0      |        1       |      1     |  OKAY
1 | 1 |       0      |        0       |      1     |  OKAY
...