Verilog_radar1
.pdfRTL Viewer
281 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Взаимоисключающие IF-ELSE порождающие триггеры защелки
n
взаимозависимости условий
282 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Исправление (1)
nИспользуйте независимые операторы IF и терминируйте их
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
X |
|
|
|
|
||
sel(2) |
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
||
|
|
|
Y |
|
sel(2) |
|
|
|
|
|
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
||
|
|
|
Z |
|
sel(2) |
|
|
|
|
|
|
|
|
|
C |
|
|
|
|
|
|
|
|
283 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Исправление (2)
nИспользуйте независимые операторы IF и терминируйте их
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
X |
|
|
|
|
||
sel(2) |
|
|
|
|
|
|
|
|
|
A |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
||
|
|
|
Y |
|
sel(2) |
|
|
|
|
|
|
|
|
|
B |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
||
|
|
|
Z |
|
sel(2) |
|
|
|
|
|
|
|
|
|
C |
|
|
|
|
|
|
|
|
284 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
RTL Viewer
285 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Вложенные IF, порождающие защелки
n Используйте вложенные операторы IF осторожно
PROCESS (sel) BEGIN
IF sel(3) = '1' THEN
IF sel(2) = '1' THEN
IF sel(1) = '1' THEN
IF sel(0) = '1' THEN y <= '1';
END IF; END IF;
END IF; ELSE
y <= '0'; END IF;
END PROCESS;
Sel(0) |
|
LOGIC |
|
LATCH |
|
|
|
|
|
|
|||
Sel(1) |
|
|
|
Y |
||
|
|
|
|
|
||
Sel(2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
Sel(3) |
|
|
|
|
|
|
|
|
|
|
|
|
286 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Исправление
n Терминируйте все операторы исчезнет.
PROCESS (sel)
BEGIN
IF sel(3) = '1' THEN
IF sel(2) = '1' THEN
IF sel(1) = '1' THEN
IF sel(0) = '1' THEN y <= '1';
ELSE
y <= '0'; END IF;
ELSE
y <= '0'; END IF;
ELSE
y <= '0'; END IF;
ELSE
y <= '0'; END IF;
END PROCESS;
IF и триггер защелка
sel(0) |
|
LOGIC |
|
|
|
|
|
||
sel(1) |
|
|
y |
|
|
|
|
||
sel(2) |
|
|
|
|
|
|
|
|
|
sel(3) |
|
|
|
|
|
|
|
|
PROCESS (sel)
BEGIN
y <= ‘0’;
IF sel(3) = '1' THEN
IF sel(2) = '1' THEN
IF sel(1) = '1' THEN
IF sel(0) = '1' THEN y <= '1';
END IF; END IF:
END IF;
END IF;
END PROCESS;
287 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Нежелательные защелки в операторе Case
n Условия, в которых не определены выходы
–3 выхода: x, y, z
–На не полностью определенном выходе формируется триггер-защелка
–Триггеры-защелки будут сформированы на ВСЕХ трех выходах.
288 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Исправление
n Доопределение выходов
Инициализация
Для исключения триггеров- защелок и полного определения всех выходов:
–Используйте инициализацию сигналов перед оператором case ( в операторе будут описаны только отличные от базовых значения сигналов)
289 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |
Упражнение 8
290 |
© 2014 СПбГПУ, каф. КСПТ, доц. Антонов А.П. ( dilab@scideco.ru ) |