Множитель со знаком в Verilog - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь реализовать умножение со знаком 8x8. Я уже реализовал умножитель массива без знака, используя полные сумматоры и половину сумматоров. Для этого я следую книге Исраэля Корена «Компьютерная арифметика c Алгоритмы», глава 6. Я знаю, что есть другие алгоритмы, но я хочу реализовать их следующим образом и ищу помощи, чтобы понять схему (5x5 множитель массива со знаком).

enter image description here

На рисунке выше ячейка I состоит из трех положительных входов и, следовательно, подразумевает обычный FA. С другой стороны, ячейки, отмеченные знаком II, имеют один отрицательный вход и два положительных входа. Сумма типа II может варьироваться от -1 до 2. У меня все отрицательные входы, а у II два отрицательных и один положительный.

Арифметическая c операция ячейки типа II описывается следующим уравнением, x + yz = 2 c -s. Принимая во внимание, что нормальным уравнением ФА является x + y + z = 2c + s.

Указанные значения s = (x + yz) mod 2 и c = [(x + yz) + s ] /2.

Согласно книге I & I 'и II & II' идентичны с точки зрения реализации гейта.

Итак, мои вопросы:

  1. Почему перенос имеет вес 2 в x + yz = 2 c -s или x + y + z = 2c + s?
  2. Что означает вход -z для FA? 2-е дополнение к Z? 2 дополнения z остается тем же самым в 1 бите. Что будет в случае двух отрицательных входных данных?
  3. Как должны выглядеть логические выражения для s и c?
  4. Любые советы по конвейерной обработке умножителя массива?

Поскольку я буду реализовывать это в Verilog, объяснение с этой точки зрения будет действительно полезным. Заранее спасибо.

...