Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 208
Текст из файла (страница 208)
При исполнении процесса сигнал в языке ЧНПЬ сохраняет свое значение, если не выполняется присвоение ему нового значения. Поэтому заключительное предложение "е1зег в табл. 9.20 в состоянии 1()ьь можно было бы опустить, и это не повлияло бы на работу автомата. Кроме того, можно повысить надежность конечного автомата, заменив оператор "пц11'* в случае «мЛ ел оСЛе гз" переходом в состояние 1()1е, от<<у Чгдсз гв рого ( СЫСК, ВЕЗЕТ, 1.ЕРТ, В1СНТ, НАЗ: 1п БТО 1.ОС1С; ЩСНТЯ: Ьпттвг ЯТО ! 0010„ЧЕС."СВ (! Го б) ); вгб; вгсЫ всгсгв ЧсЫгб вгсь ог ЧсЫгб м <оп«сввп !ОЫ: ЗТО„КОС!0 ЧЕСТСК Ы Го б): "000000" 1 сов«свпо 13: ЗТО ЬССТС ЧЕСТОВ (1 Со 6):"' "111000" ~ сов«сввп Ь2: БТО ЬОСТС ЧЕСТСВ (1 Го 6):= "110000"; сопмвпг Ы : БТО ЬОСТС ЧЕСТСВ (1 Со 6) .= "1СОООО"; совв.впс В1 : БТО ЫС1С ЧЕС>ОВ (1 Со 6) : "000001"; сопвсвпг Вг : ятэ ыстс чес"сз (г го 6) ;= 000011 ", сопвгвпс ВЗ : БТО ЫСТС ЧЕС>ОН (1 го б) := "000111"; сов«Свпо ЬВЗ : Я";О ЬОС1С ЧЕСТСК (1 Ьо 6) : "111111"; Ьвя(п ргосвм (СЬССК) Ьвягг 11 СЬССК'во«по всб СЫСК '1' гЬ«п 11 ВЕЗЕТ ' 1' Сьвп ЫСНТЯ < ТО.'Я; «1«в саве 11СНТЯ 1« «Ьвп 10'Е => 11 НАЕ='1' ог ((ЕРТ '1' впб В1 в1в>1 ЬЕРТ '1' вмлт Ввзнт='1' в1«в впб «ьв и -> ы ВАЯ- 1 оьвп ыснтз <- *.
Вз; «Ьво Ь2 => Ьб Р'Е '1' сЬ«п 1.1СНТЯ < ЫЗ, «Ь ЬЗ ЩС)«Я < !Оьк; «Ьвп В1»1 НАЕ '1' сЬвп (дСНТЯ <= 'РЗ; «Ьвп В2 => 11 НАЗ '1' ГЬвп 11СНТБ < ЬВЗ) «Ь«п ВЗ > ЬТОНТЯ < !ОСЕ; «Ьсп ЬВЗ -> Ыбнтз < ПЕЕ! «Ьвп оСЬ«гв > п«11; епб сввп; впб г1; впб >1; впб ргосввв; ввб ЧсЫгб вгсЬ; снт- 1 ) сЬ Ьзнтв = ькз; <Ь ТСРПЯ <= Ы; сЬ«п !.1СНТЯ < В!; !ЛОКТЯ < !ОСЕ; в)вв ЬТСНТБ <- 12; впб 11; «1 Ыонтб < ЬЗ; впб >1; вняв ЫСНТБ < В2; б 1; В вв ЩСНТЯ < ВЗ; вгм 11; Табл.
9.20. ЧН(гь-программадля автомата, управляющего задними огнями ав- томобиля марки гог() ТЛцп()егЬ!1() 9.2. примеры проектирования на языке ЧНОЬ й51 9.2.Э. Игра на угадывание Задача построения автомата для «игры на угадывание» была сформулирована следующим образом: Построить тактируемый синхронный автомат с четырьмя входами 01-04, подключенными к кнопкам.
У автомата четыре выхода Ь1-Ь4, к которым подключены лампочки или светодиоды, расположенные рядом с кнопками с теми же номерами. Имеется также выход Ейй, к которому подключена красная лампочка. При нормальной работе на выходах Ь1-Ь4 индицируется комбинация «1 из 4». На каждом такте комбинация сдвигается на одну позицию; частота тактового сигнала равна 4 Гц. Задача игрока состоит в том, чтобы вовремя нажать кнопку, соответствующую горящей лампочке.
При нажатии рой кнопки вырабатывается единичный сигнал Я. Если подан «неправильный» сигнал, то возникает сигнал на выходе Ейй и загорается красная лампочка, это происходит в том случае, когда автомат на очередном такте обнаруживает сигнал, номер которого не совпадает с номером лампочки, зажженной на предыдущем такте. Когда кнопка нажата, игра останавливается, и сигнал на выходе Ейй сохраняет свое значение в течение одного или нескольких тактов, пока не будет снят удерживаемый вами сигнал 01, н тогда игра возобновляется. Как мы видели в разделе 7.7.1, у этого автомата шесть состояний: четыре состояния соответствуют зажженным лампочкам, а два — для тех случаев, когда игра остановлена после правильного или ошибочного нажатия кнопки.
ЧН01.- программа для игры на угадывание приведена в табл. 9.21. В этом варианте устройство имеет также вход КЕБЕТ: сигнал на этом входе заставляет устройство перейти в известное начальное состояние. Эта программа является почти непосредственным переводом на язык ЧНРЬ диаграммы состояний, изображенной на рис. 7.бб. Единственной, по-видимому, ее особенностью, которая заслуживает упоминания, является случай "БОК ~ БЕРГ'. Поскольку переходы из этих двух состояний в следующие состояния совершенно одинаковы (нужно переходить в состояние Б 1 или оставаться в текущем состоянии), их можно обрабатывать как один и тот же случай.
Однако эта хитрость, позволяющая уменьшить число строк в тексте программы, нежелательна, в частности, с точки зрения документации на этот конечный автомат и его отладки. Но автору эта хитрость позволила сократить размер программы до одной страницы в книге! В программе, приведенной в табл. 9.21, кодирование состояний не задано; типичный синтезатор использует три бита для Бгед и кодирует шесть состояний в порялке следования двоичных комбинаций 000 — 1 О1.
Применительно к этому конечному автомату можно воспользовшъся также записью состояний в форме выходного кода, то есть представить их с помощью уже имеющихся сигналов зажигания лампочек и сигнала ошибки, В языке ЧНРЬ нет удобного механизма для объединения выходных сигналов, определенных в данном объекте, в одно целое и представления ими состояний, но этого можно все-таки достичь так, как показано в табл. 9?2.
Соответствие между входными сигналами и битами в новом 5-разрядном регистре Бге9 указанно в комментарии, а операторы присваивания значений выходным сигналам видоизменены таким образом, чтобы выбирать подходяший бит, а не обнаптжиаать состояние в целом. 952 Глава 9. Примеры проектирования пооледоввтельностных схем 1>Ъгагу ТЕЕЕ, пве 1ЕЕЕ зсп 1оБ>с 1164.а11; ЕПС>гу ЧББале 1в ротс ( С1.0СК, ВЕЗЕТ, 61, 62, 63, 64: 1п БТО 10610; 1.1, 12, 13.
14, ЕВВ: овз ЗТО„10610 ); епв; агсьггвстпте ЧЗКаае агсЬ оХ ЧЗБавв гз суре БгсБ суре аз (31, 32, 33, 34, ЗОК, ЯБВВ); з>Зпа1 БгеЯ: ЗгеЗ суре; ЬеБ>в ргосевз (СЬОСК) Ьея>а 11 СЬОСК'ечепс апа С1.ОСК '1' сЬвп >1 ВЕЗЕТ '1' ГЬеп ЗгеЗ < ЯОК; е1ве саве Всея гз яЬея Б1 > 11 62 '1' от 63 '1' ог 64 '1' е1в>1 61 '1' е1ве епа >1; епеп 32 =»1 61 '1' ог 63 '1' от 64 '1' е" в>1 61 '1' е1ве епй >1; вЬеп ЯЗ > >1 С1"-'1' ог 62 '1' от 64 '1' е1в>1 01 '1' е1ве епй >1, ЧЬеп 34 > >Х 61 '1' от 62 '1' ог 63 '1' е1в11 61='1' в1ве епп 11: ЧЬеп ЯОК ! ЗЕВЕ > >Х 61 '0' ап4 62 '0' апй СЬеп ЗгеБ < 31; епй >1; вЬеп осЬегв > ЯгеЗ < Б1; епа сазе; епй 11; епй >1; епй ргосевз; СЬеп ЗтеЗ < ЗЕВЕ; сЬеп ЯгеЯ < ЯОК; БгеЗ < 32, сЬеп ЗгеБ < ЗЕВВ, СЬеп ЗгеБ <= БОК; ЗгеБ <- 33; гЬеп ЗгеЯ <= ВЕВВ; сьев Всея < БОк; ЯтеЯ < 34; гпеп ВтеБ < ЗЕВЕ; СЬеп ВгеЗ <= ЗОК; ЗтеБ <= 31; 63 'О' апа 64='0' 11 < '1' япеп БгеЕ 31 е1зе '0'; ЬБ < '1' вЬеп ВгеВ Я2 е1ве '0'; 13 < '1' впеп БгеЯ = 33 е1ве '0'; 14 <= '1' реп Отед Б4 е1зе '0', ЕВВ < '1' ЧЬеп ЯгеБ ЯЕВВ е1ве '0'; епа ЧБЯаае агсЬ; Табл.
9.21. ЧН()Ь-программа, описывающая автомат для игры на угадывание 9.2. Примеры проектирования на языке ННОЕ 953 Табл. 9.22. НН(Э(.-архитектура для игры на угадывание с записью состояний в форме выходного кода "гсссеа 'СЬЭСК) <а* сааеяе сс 2<с<«ее) еа« ргс ееа, 12 < Бее«(21, 13 <- Бсея(3) 1, <- "Егер,с~, ЕЕЕ <= всея,'Б) еас укяасесс аг<Ь, 9.2.4.
Продолжение работы над контроллерами светофоров Тем нз вас, кто прочел пример из раздела 9,1.5, уже известны мои разглагольствования об ужасных контроллерах светофоров в г. Саннивейл, шт. Калифорния. Ситуация на самом деле выглядит такой, как если бы контроллеры бьин специально спроектированы так, чтобы сделать возможно ббльшим время простоя автомобилей на перекрестках.
В этом разделе мы разработаем контроллер для светофора, поведение которого будет подчеркнуто напоминать работу светофоров в г. Саннивейл. На незагруженном перекрестке имеются датчики движения и светофоры, показанные на рис. 9.5. (Если бы это было в Чикаго, то самое большее, чем был бы отмечен такой перекресток, — это знак «уступи дорогуя.) Светофорами управляет автомат с частотой тактового сигнала 1 Гц; у него имеются таймер и четыре входа: Сигнал принимает активное значение, если хотя бы один автомо- биль находится в поле действия одного из датчиков в направлении движения «север-юг» по любую сторону перекрестка, Сигнал принимает активное значение, если хотя бы один автомо- биль находится в поле действия одного из датчиков в направлении движения «восток-запади по любую сторону перекрестка. Сигнал принимает активное значение, если с момента начала рабо- ты таймера прошло более пяти минут; он остается на активном уров- не до тех пор, пока таймер не будет сброшен.
И ЯСАР( Е)ИСАВ ТМ'ьС)МС< асака<асс«ге Тккааеа< е«Ь ет укяеае «е е еа«1 <-ее Бтэ 10010 уестОБ (1 сс ы; — Ьа< реса<ассе оз острее <ее«а аееаяааеаь ,есасп Б!. Бтг ссгг уестсе П сс ь) саек .. В2 Бто Осто ТЕСток 11 се сае(аа. БЗ БТО ЬОСХС ЕЕСТОЕ (1 Сс Ь) с.ае< - . Ба БтО ЬОШС УЕСтоя (1 Сс Ь) .- <сема«' БЕЕЗ БТО ЬССТС ТЕС!ОЕ (1 сс Б) сае<аа< БОХ Бтос„ьсв! 1ЕГЛОЕ 11 Сс Б) ьее- .т, ьг, ьз, с, еяя -:оооо", О)ООО", ОО(ОС" 'ооо!о", "оооо~" "ооосо , 954 Глава Я. Примеры проектнрованив последовательностных схем ТМЯНОНТ Сигнал принимает активное значение, если с момента началаработы таймера прошло более пяти секунд; сн остается на активном уровне до тех пор, пока таймер не будет сброшен. У этого конечного автомата семь выходных сигналов; НЯНЕО, НЯтЕЬЬО»9, МЯОНЕЕН Сигналы, зажигающие красный, желтый изеленый свет в направлении «север-юг» соответственно.
ВИНЕР, "ЛГГЕЬ ОЧ/, ВДОВЕЕМ Сигналы, зажигающие красный, желтый и зеленый свет в направлении «восток-запад» соответственно. Когда этот сигнал принимает активное значение, таймер сбрасывается, а сигналы ТМЯНОНТ и ТМ ОНО переходят на неактивный уровень. Таймер начинает отсчет времени, когда на неактивный уровень переходит сигнал ТМНЕЯЕТ. ТМНЕЯЕТ УНРЬ-програгимой, приведенной в табл.
9.23, реализуется типичный, одобренный местными властями алгоритм управления светофорами. Этот алгоритм обеспечивает два часто наблюдаемых режима работы нашего «проворного» светофора. Ночью, при малой интенсивности движения, он удерживает автомобиль в состоянии ожидания до пяти минут, если только не появляется автомобиль на поперечной улице; в этом случае светофор переключается так, чтобы остановить движение в поперечном направлении и пропустить ожидающий автомобиль. (Датчик «раннего оповещения» установлен достаточно далеко, чтобы сигналы светофора успели измениться до того, как приближающийся автомобиль достигнет перекрестка.) Днем, при напряженном движении всегда имеются автомобили, ожидающие проезда в обоих направлениях; тогда светофор переключается каждые пять секунд, чтобы минимизировать пропускную способность перекрестка и максимизировать время ожидания для всех, подталкивая теги самым возмущенную общественность к мысли о необходимости повышения налогов для решения этой проблемы.
При написании этой программы мы воспользовались имевшейся возможностью и добавили контроллеру вход О~/ЕНН10Е. Подавая сигнал на этот вход, полицейский может заблокировать работу контроллера и заставить светофор мигать красным светом (с частотой тактового сигнала РАН СЬК), и тогда у него пояел яется возможность вручную растаскивать пробки, возникающие благодаря этому удивительному изобретению.