Как думать о проектировании цифровых схем

#hardware #logic #circuit #digital-design

#аппаратное обеспечение #Логические #схема #цифровой дизайн

Вопрос:

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

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

Не

И

Или

Xor

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

DMux

16 Бит не

16 бит и

16 бит или

16-битный мультиплексор

8 способ или

Теперь я застрял, пытаясь реализовать 16-битный четырехпозиционный мультиплексор.

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

Редактировать:

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

Ответ №1:

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

Два входа A amp; 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))
  

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

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

Комментарии:

1. Мило! Это именно то, что я искал.

Ответ №2:

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

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

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

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

Комментарии:

1. Спасибо, я закончил SICP не так давно. Глава 5, казалось, замалчивает некоторые из этих деталей нижнего уровня, поэтому я взял другую книгу, чтобы помочь разобраться во всем этом.