- •«Устройство для преобразования кода»
- •Содержание
- •Введение
- •Задание на курсовой проект
- •Структурная схема устройства для помехоустойчивого кодирования
- •Проектирование crc-кодера
- •Проектирование устройства формирования пускового импульса
- •Проектирование устройства деления частоты
- •Проектирование устройства управления
- •Проектирование сдвигового регистра
- •Проектирование дешифратора для управления 7-сегментным индикатором
- •Размещение проекта на кристалле
- •Назначение контактов микросхемы epf10k70rc240-4 для портов проекта
- •Определение временных задержек и быстродействия устройства
- •Заключение
- •Библиографический список
Проектирование устройства управления
Устройство управления обеспечивает управление обратной связью в CRC-кодере, управляет вводом безызбыточной комбинации в сдвиговый регистр 1 и избыточной комбинации в сдвиговый регистр 2 (см. рис. 1).
В соответствии с заданием устройство управления спроектировано в виде текстового описания на языке AHDL [2,3]:
-------------------------------------------
-- Устройство управления
-------------------------------------------
INCLUDE " lpm_counter.inc";
INCLUDE " lpm_decode.inc ";
SUBDESIGN control_device
(
start,clock,enable,stop : INPUT;
switch,en,eq[16..1] : OUTPUT;
)
VARIABLE
counter : lpm_counter WITH (LPM_WIDTH=4,
LPM_DIRECTION="DEFAULT",
LPM_MODULUS=0,
LPM_SVALUE=1);
decode : lpm_decode WITH (LPM_WIDTH=4,
LPM_DECODES=16);
tr :SRFF;
mk :SRFF;
nt :SRFF;
l,mops :node;
BEGIN
l=enable & eq[10];
tr.(CLK, S, R)=(clock, start, l);
mk.(CLK, S, R)=(clock, start, eq[9]);
nt.(CLK, S, R)=(clock, start, eq[5]);
mops=tr.q;
counter.(CNT_EN, CLOCK, CLK_EN, ACLR)=(mops,clock,enable, !stop);
decode.(data[],enable)=(counter.q[],enable);
eq[]=decode.eq[];
switch=nt.q;
IF enable THEN
en=mk.q;
END IF;
END;
Работа устройства управления заключается в следующем. При приходе пускового импульса запускается счетчик на счет до 16. Досчитав до определенных тактов, он выдает следующие сигналы:
На 5-ом такте – сигнал switch для управления обратной связью в CRC-кодере;
На 9-ом такте – сигнал en управления вводом избыточной комбинации в сдвиговый регистр 2.
На 10– ом такте –запись результата.
Рассмотрим процесс работы более подробно. При подаче на вход start уровня логической единицы, RS-триггер переходит в единичное состояние. Сигнал с выхода RS-триггера поступает на вход cnt_en счетчика LPM_COUNTER. Изменение состояния счетчика LPM_COUNTER осуществляется тактовыми импульсами, поступающими по входу clk при высоких уровнях сигналов поступающих на входы cnt_en и clk_en. С выхода счетчика на вход демультиплексора поступает код, где происходит его преобразование в распределительный код 1 из 16. На выходах демультиплексора eq[16..1] образуется распределительный код «1 из 16». Появление логической единицы на выходе eq[10] подготавливает триггер к переключению в нулевое состояние, и с приходом очередного тактового импульса происходит это переключение. На вход разрешения счета cnt_en счетчика с выхода триггера поступает логический ноль, запрещая счет.
Используя сигналы eq[5], eq[9] с помощью триггеров нетрудно получить необходимые сигналы управления для кодера и сдвигового регистра (см. рис. 10):
Рис. 10. Временные диаграммы устройства управления
Для дальнейшей работы с проектом сохраним устройство в виде графического символа, представленного на рис. 11.
Рис. 11. Символ устройства управления
