Скачиваний:
32
Добавлен:
29.12.2022
Размер:
8.96 Mб
Скачать

Сколько блоков умножения?

 

y <= a * (b * c)

 

 

3 блока

 

 

 

 

 

 

 

 

 

 

 

 

 

Совместное

 

 

z <=

 

 

 

 

(b * c) * d

 

использование общих

 

 

 

 

 

 

 

частей арифметических

 

 

 

 

 

 

 

 

 

 

 

 

 

 

выражений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Некоторые средства

 

 

b

 

 

 

X

 

 

 

 

 

 

 

 

синтеза реализуют это

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

автоматически, а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

некоторые нет.

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

Использование скобок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

помогает компилятору

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

минимизировать число

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блоков

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если (b*c) используется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

многократно, то

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

целесообразно

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

использовать

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

отдельный сигнал

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. (

271

 

 

 

 

 

 

 

 

 

 

 

 

dilab@scideco.ru )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример: Два умножителя с общими операндами

272

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Реализация умножителя

Аппаратные затраты

 

Логических элементов

0

Триггеров

0

DSP модулей (9*9)

6

Быстродействие

Fmax

124 MHz

273

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Два умножителя с общими операндами

274

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Реализация умножителя

Аппаратные затраты

Логических элементов

0

Триггеров

0

DSP модулей (9*9)

5

Быстродействие

Fmax 124 MHz

275

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Триггеры Защелки

(Latch)

276

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Защелки (Latches) vs.Триггеры (Registers)

nВ СБИС Altera реализованы синхронные триггеры, а не триггеры защелки

nТриггеры защелки реализуются с помощью комбинационной логики, что делает временной анализ более сложным

-СБИС с Look-up table (LUT) – FPGA, используют LUT

(таблицы перекодировки)

-СБИС с Product-term – МАХ, используют дополнительные product-terms (программируемые матрицы И и ИЛИ)

nРекомендации

-Использовать в проектах синхронные триггеры

-Следить за появлением триггеров защелок.

 

l Триггеры защелки могут появляться на выходах

 

комбинационных цепей, когда результат не определен для

277

набора входных значений.

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

При использовании оператора IF-ELSE …

nПеребирайте все варианты

-Не перечисленные варианты порождают триггеры защелки

nВ комбинационных процессах инициализируйте переменные (сигналы) до их использования

-Использование не инициализированных переменных (сигналов) может порождать триггеры защелки

nДля создания эффективного кода продумайте

-Назначение начальных значений и явное покрытие вариантов, отличных от начальных значений

278

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Нежелательные триггеры защелки

nКомбинационный процесс, который не покрывает все возможные комбинации входных сигналов, порождает триггер-защелку.

sel(0)

 

LOGIC

 

 

 

 

 

 

 

sel(1)

 

 

LATCH

out

 

 

 

sel(2)

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

279

© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru )

Исправление

n Терминируйте IF-ELSE оператор

sel(0)

 

LOGIC

 

 

 

 

 

sel(1)

 

 

 

 

 

 

 

sel(2)

 

 

 

output

 

 

 

A

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

280