1. камеры
  2. Аудио & Электроника автомобиля
  3. Главная Аудио
  4. Личная Аудио
  5. телевизоры
  6. Умный дом
  >> Россия Электронный Технологии >  >> Личная Аудио >> Цифровые диктофоны

Как писать код Verilog для модифицированного энкодера будки?

`` verilog

MODULE MODIFIT_BOOTH_ENCODER (

Ввод [3:0] Multiplickand, // 4-битный множитель

Ввод [3:0] множитель, // 4-битный множитель

Вывод [7:0] Продукт // 8-битный продукт

);

// внутренние регистры для частичных продуктов

reg [7:0] partial_product [0:3];

// Инициализация частичных продуктов до 0

начальное начало

partial_product [0] <=0;

partial_product [1] <=0;

partial_product [2] <=0;

partial_product [3] <=0;

конец

// логика кодирования стенда

Всегда @(*) начинать

// переворачивается через каждый бит множителя

для (целое число i =0; i <4; i =i + 1) начать

// Проверка на шаблоны кодирования стенда

case ({multiplier [i], multiplier [i-1]})

2'b00:начинать

partial_product [i] <=partial_product [i];

конец

2'b01:начинать

partial_product [i] <=partial_product [i] + multipluckand;

конец

2'b10:начинать

partial_product [i] <=partial_product [i] - multipliclAnd;

конец

2'b11:начинать

partial_product [i] <=partial_product [i];

конец

по умолчанию:начинать

partial_product [i] <=partial_product [i];

конец

Конец

конец

конец

// Рассчитайте конечный продукт

Назначить продукт =partial_product [0] + (partial_product [1] <<1) + (partial_product [2] <<2) + (partial_product [3] <<3);

EndModule

`` `

Объяснение:

1. Входы и выходы:

- `multiplickand`:4-битный вход, представляющий множитель.

- `Multiplier ':4-битный вход, представляющий множитель.

- `Product`:8-битный выход, представляющий продукт множителя и множителя.

2. Внутренние регистры:

- `partial_product`:массив из 4 регистров, каждый из которых хранит частичный продукт. Эти регистры будут обновлены на основе кодирования стенда.

3. Инициализация:

- Начальный блок устанавливает все частичные регистры продукта на 0 в начале.

4. логика кодирования стенда:

- Блок `always @(*)` реализует алгоритм кодирования стенда.

- Он итерации через каждый бит множителя (от MSB до LSB).

- Для каждого бита он проверяет текущий бит и предыдущий бит, чтобы определить шаблон кодирования стенда.

- На основании шаблона, он выполняет соответствующую работу на частичном продукте:

- 00: Нет операции (частичный продукт остается неизменным).

- 01: Добавьте множитель в частичный продукт.

- 10: Вычтите множитель из частичного продукта.

- 11: Нет операции (частичный продукт остается неизменным).

5. Окончательный расчет продукта:

- Оператор `назначить` вычисляет конечный продукт, добавляя смещенные частичные продукты.

- Каждый частичный продукт смещается влево на соответствующее битовое положение.

Как работает код:

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

Пример:

Предположим, что `multipliclAnd =5` (Binary:` 0101`) и `Multiplier =3` (Binary:` 0011`).

1. Итерация 1: `Многочисленчик [3:2] =00` - без работы.

2. Итерация 2: `Multiplier [2:1] =01` - Добавить` ulliplickand` в `partial_product [1]`.

3. Итерация 3: `Multiplier [1:0] =11` - без работы.

После петли у нас будет:

- `partial_product [0] =0`

- `partial_product [1] =5`

- `partial_product [2] =0`

- `partial_product [3] =0`

Наконец, `product =0 + (5 <<1) + (0 <<2) + (0 <<3) =10` (двоичный:` 1010`), который является правильным продуктом 5 и 3.

  1. Как создать список воспроизведения на Вашем Creative Zen MP3-плеер
  2. Как получить iSlsk на Ipod Touch
  3. Наушники, которые блокируют другие из слуха
  4. Как установить повязки
  5. IPod Symbol Смыслы