Как думать о дизайне цифровых схем - PullRequest
4 голосов
/ 17 октября 2011

Как можно подумать о проектировании цифровых логических микросхем абстрактным способом?

В настоящее время я работаю с «Элементами вычислительных систем». Я в первой главе и реализовал следующие элементы, начиная с Nand.

Не

И

Или

Xor

Мультиплексор

DMUX

16 бит Не

16бит А

16 бит или

16 бит Mux

8 способов или

Я застрял, пытаясь реализовать 16-битный четырехполосный Mux.

Я пытался преобразовать таблицу истинности в каноническую запись, но в итоге получился гигантский беспорядок. Использование канонического представления работало хорошо для «меньших» фишек, но теперь очень сложно. Как я могу подумать о том, чтобы собрать «сложный» чип таким образом, чтобы он не сводился к смешиванию случайных чипов?

Edit:

Меня не смущает 16-битная часть четырехполосного Mux. Я планировал использовать кучу четырехполосных Mux в массиве. Четырехстороннее мультиплексирование - это та часть, на которой я застрял.

Ответы [ 2 ]

4 голосов
/ 17 октября 2011

Давайте начнем с двухканального мультиплексора.

Два входа A и B и строка выбора S. Выход будет равен '1', когда A или B равен '1', а строка выбора выбирает, чтовход, иначе это «0».Так что либо:

A=1 and S=0
B=1 and S=1

Запись в виде ворот:

(A and (not S)) or (B and S)

Расширьте это до 4-х сторон (S теперь 2 бита):

A = 1 and S=0
B = 1 and S=1
C = 1 and S=2
D = 1 and S=3

(A and (not S1) and (not S0)) or
(B and (not S1) and (    S0)) or
(C and (    S1) and (not S0)) or
(D and (    S1) and (    S0))

Мы можем видеть появление паттерна, который заключается в том, что каждый вход имеет И с некоторым «разрешающим термином», который включает или выключает этот вход.Поскольку разрешающие условия являются исключительными (в каждый момент времени может быть только один), эффект заключается в переключении выхода на желаемый вход.

Это может быть расширено до любого размера MUX.

2 голосов
/ 17 октября 2011

Я приветствую ваш подход «начинай с самого начала и работай», он поможет вам оценить, что со временем становится все более и более сложным.

Также стоит отметить, что, как только вы достигнете designing digital logic chips в более широком масштабе, в наши дни это обычно делается на гораздо более высоком уровне. Часто используется язык описания аппаратного обеспечения (обычно Verilog или VHDL) или даже используется C для частей чипа в некоторых доменах.

Как только вы работаете на этом уровне, вы очень редко пишете код для MUX, но очень полезно знать, когда вы пишете текстовое описание, что вы просите инструмент синтеза для его создания, и что вы иметь представление о том, насколько «большим» (в воротах) он может быть.

Еще один момент, на который следует обратить внимание: если вы переходите к проектированию с использованием ПЛИС, ваш фундаментальный строительный блок - это не шлюзы NAND, а 4 или 6 входных справочных таблиц (с другими вспомогательными блоками). Это меняет вашу точку зрения, так как любая функция 4 (или 6) входов стоит столько же ...

...