- •Аннотация
- •1.1. Прототип модуля
- •1.2. Структура иерархического проекта
- •1.3. Иерархическое описание накапливающего сумматора.
- •Variable tr[8..1] : dff;
- •Variable tr[9..1] : dff;
- •Include "rg_a.Inc";
- •Include "add.Inc";
- •Include "rg_out.Inc";
- •Variable
- •2. Проектирование схем двоично-десятичной арифметики.
- •2.1. Двоично-десятичное представление схем.
- •2.2. Двоично-десятичный сумматор
- •Variable
- •2.2. Двоично-десятичный вычитатель
- •Variable
- •2.3. Двоично-десятичные счетчики
- •3.1. Способы задания абстрактных автоматов.
- •3.2. Описание работы автоматов на языке ahdl
- •Init, Working, Waiting, Resuming, Ending.
- •Variable
- •3.3. Проектирование счетчиков на базе абстрактных автоматов
- •Variable
- •4. Проектирование типовых схемотехнических узлов
- •Дешифратора
- •Считается, что одновременно может быть нажата только одна кнопка клавиатуры.
- •Variable
- •4.2. Схемы вычисления функций
- •4.3. Счетчики расхода, пробега
- •Variable
- •Variable
- •Include "t210.Inc";
- •Variable
- •4.4. Узлы обработки сигналов локаторов
- •Include "t210.Inc";
- •Variable
- •4.5. Часы, счетчики времени, календари
- •Variable
- •Variable
- •4.6. Частотомеры
- •Variable
- •4.7. Умножители
- •Input_b_is_constant)
- •5 Проектирование схем с магистральным вводом выводом данных
- •5.1 Правила работы с магистралью, арбитр.
- •Variable
- •5.2 Подготовка временных диаграмм.
- •5.3. Пример сумматора с магистральным вводом-выводом данных.
- •Variable
Variable
ME[3..0] : DFF;
MD[2..0] : DFF;
WT: DFF;
WM: DFF;
BEGIN
WT.D=VCC;
WT.CLK=START;
WM.CLK=CLK;
WM.CLRN=RN;
WT.CLRN=RN&!WM.Q;
ME[].CLK=CLK & !UST & SQ # CLKU & UST;
MD[].CLK=ME[3].Q;
ME[].CLRN=RN;
MD[].CLRN=RN;
SQ=WT.Q;
S=WM.Q;
IF WT.Q==1 THEN
CASE ME[].Q IS
WHEN B"0000" => ME[].D=9;
WHEN OTHERS => ME[].D=ME[].Q-1;
END CASE;
MD[].D=MD[].Q-1;
END IF;
IF WT.Q==0 THEN
CASE ME[].Q IS
WHEN 9 => ME[].D=0;
WHEN OTHERS => ME[].D=ME[].Q+1;
END CASE;
CASE MD[].Q IS
WHEN 5 => MD[].D=0;
WHEN OTHERS => MD[].D=MD[].Q+1;
END CASE;
END IF;
IF ME[].Q==1 & MD[].Q==0 & WT.Q==1 THEN
WM.D=B"1";
ELSE WM.D=B"0";
END IF;
Q[6..4] = MD[].Q;
Q[3..0] = ME[].Q;
END;
Схема таймера имеет следующие входные и выходнын сигналы.
СLK - тактовый вход минут, имеющий частоту 1/60 Гц;
CLKU - тактовый вход установок, имеющий частоту 1 Гц;
UST – кнопка установки таймера;
START – кнопка запуска таймера;
RN - вход сброса;
S - выход сигнала на исполнительный механизм;
SQ - выход триггера управления (вспомогательный выход);
Q[6..0]- выходы двоично-десятичного счетчика минут;
Представленный таймер имеет в своём составе регистр счётчика минут, который может считать импульсю как по возрастанию (режим установки) так и по убыванию (режим счёта).
Для управления режимами работы служит триггер WT. В режиме ожидания триггер WT находится в нулевом состоянии. В этом режиме при нажатии кнопки UST счетчик минут начинает считать в прямом порядке импульсы с частотой CLKU, тем самым происходит установка начального значения таймера. При приходе положительного фронта сигнала START триггер перебрасывается в состояние «1», поскольку на вход этого триггера постоянно подаётся напряжение высокого логического уровня. Перейдя в состояние логической единицы триггер WT переводит схему в режим счёта импульсов по убыванию с частотой СLK.
После того, как счётчик досчитает до кода «000000», в выходной триггер WM записывается сигнал «1», а триггер WT перебрасывается в состояние «0» и схема опять переходит в режим ожидания.
Управление режимами счёта организовано с помощью условного оператора IF THEN. Внутри операторов находятся вложенные операторы CASE, которые и организовывают двоично-десятичный счёт минут.
Операторы
WT.CLK=START;
WM.CLK=CLK;
определяют тактовые сигналы, которые подаются на входы триггеров управления WT и WM.
Оператор
WT.CLRN=RN&!WM.Q;
определяет условия сброса триггера WT.
Операторы
ME[].CLK=CLK & !UST & SQ # CLKU & UST;
MD[].CLK=ME[3].Q;
определяют правила подачи тактовых сигналов на младшие ME[].CLK и старшие MD[].CLK разряды счётчика минут. Из этих выражений видно, что на тактовый вход ME[].CLK поступают импульсы CLKU при сигнале UST равном логической единице и соответственно импульсы CLK при сигнале UST равном логическому нулю и сигнале SQ равному логической единице.
Примеры временной диаграммы работы таймера приведён на рис 4.5.2. и 4.5.3.
Рис 4.5.2. Примеры временной диаграммы работы таймера (установка начального значения и начало счёта).
На рисунке 4.5.2. показа первая фаза работы таймера. При подаче единичного сигнала на вход UST таймер с частой CLKU досчитывает до числа 23. Затем при подаче логической единицы на вход START таймер переходит в режим рабочего счёта.
Рис 4.5.3. Примеры временной диаграммы работы таймера (окончание счёта).
На рисунке 4.5.3. показа вторая фаза работы таймера. Досчитав до нулевого значения таймер выдаёт единичный сигнал на выход управления исполнительным механизмом S и переводит таймер в режим ожидания (сигнал SQ сбрасывается в логический «0»)
Схемы календарейстроятся аналогично схемам часов. Они, обычно имеют регистры дней, месяцев, лет. Для этих регистров, как правило, предусматривается раздельная установка значений. Для обеспечения правильного отсчета дней применяются двоично десятичные счетчики с достаточно сложным управлением, поскольку разные месяцы имеют различное количество дней.