![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation 952 Глава 9. Примеры проектирования последовательностных схем Табл. 9.21. VHDL-программа, описывающая автомат для игры на угадывание library IEEE, use IEEE std loglc 1164.all; entity Vgga33ie is port ( CLOCK, RESET, Gl. C2, G3, 04: in STD.LOGIC; Ll, L2, L3, Ы, ERR: out STD.LOGIC ead; architecture Vggame.arcb of Vggame is type Sreg type is (Si, S2, S3. S4, SOK, SERR); signal Sreg: Sreg type; begin process (CLOCK) begia if CLOCKevent and CLOCK 1 then if RESET = 1 then Sreg <- SOK; else case Sreg is when SI => if G2=l elsif Gl=l else end if; when S2 => if Gl=i elsif Gl=l else end if; when S3 => if Gl=4 elsif Ol l or G3=l or G4=l or GSl or G4=l or G2=4 or G4=l then Sreg <= SERR; then Sreg <= SOK; Sreg <= S2, then Sreg SERR, then Sreg <= SOK; Sreg < S3; then Sreg <= SERR; then Sreg <= SOK; Sreg <= 34; or Q2-l or G3=l then Sreg <= SERR; then Sreg <= SQK; Sreg <= SI; end if, when S4 if Gil elsif Gl=l else end if; when SOK I SERR => if G1 0 and G2 0 and G3 0 and G4=0 then Sreg < SI; end if; when others => Sreg <= SI; end case; end if; end if; end process; Ll <= when Sreg = SI else 0 L2 <= 1 when Sreg S2 else 0 L3 <= Ч when Sreg = S3 else C L4 <= 1 when Sreg = S4 else 0 ERR <= when Sreg = SERR else 0 end Vggasie arch; constant B7 4.0!5Stan. S3 cista-i, S4 o,o.is.taa SER4 o-istaat 30K begin STD.LOGIC VSOTOR (1 to to) STD 1DCIC VECTQR (1 to Z) -STD .L0G1C VECTOR (l to t>) STD LOGIC VECTOR (1 to i) STD.LOGlC.VECrOR (1 to 5) STD.LUGXC vEC10R U to S) process rCLDCKS f=nd pro ъ, r 1 <= ?-е?С1) I? Srftg(2), !3 < --efrO) ERR <= SiegC?) ena Vggaceac ar:h, Ll, L2, 10000 , 01000 , OOlOC 00010 , О00СИ 00000, flio ;,}tai!f to process) 9.2.4. Продолжение работы над контроллерами светофоров Тем из вас, кто прочел пример из раздела 9. L5, уже известны мои разглагольствования об ужасньгх контроллерах светофоров в г Саннивейл, шт Калифорния. Ситуация на самом деле выглядит такой, как если бы контроллеры были специально спроектированы так, чтобы сделать возможно ббльшим время простоя автомобилей на перекрестках. В этом разделе мы разработаем контроллер для светофора, поведение которого будет подчеркнуто напоминать работу светофоров в г Саннивейл. На незагруженном перекрестке имеются датчики движения и светофоры, показанные на рис. 9.5. (Если бы это было в Чикаго, то самое большее, чем был бы отмечен такой перекресток, - это знак уступи дорогу .) Светофорами управляет автомат с частотой тактового сигнала 1 Гц; у него имеются таймер и четыре входа: NSCAR Сигнал принимает активное значение, если хотя бы один автомобиль находится в поле действия одного из датчиков в направлении движения север-юг по любую сторону перекрестка. EWCAR Сигнал принимает активное значение, если хотя бы один автомобиль находится в поле действия одного из датчиков в направлении движения восток-запад по любую сторону перекрестка. TMLONG Сигнал принимает активное значение, если с момента начала работы таймера прошло более пяти минут; он остается на активном уровне до тех пор, пока таймер не будет сброшен. Табл. 9.22. VHDL-архитектура для игры на угадывание с записью состояний в форме выходного кода architecture ¥ggaT eoc arch of Vggasse is signal S-eg STD tOGXC VECTOR (i to 5); - bit positioas of Oiitput coded assignmeat 1.1, L2, L3, 1,4, ERH. tmshort Сигаал принимает активное значение, если с момента начала работы таймера прошло более пяти секунд; он остается на активном уровне до тех пор, пока таймер не будет сброшен. У этого конечного автомата семь выходных сигналов: nsred, nsyellow, nsgreen Сигналы, зажигающие красный, желтый и зеленый свет в направлении север-юг соответственно. ewred, D/i/yellow, ewgreen Сигналы, зажигающие красный, желтый и зеленый свет в направлении восток-запад соответственно. tmreset Когда этот сигнал принимает активное значение, таймер сбрасывается, а сигналы tmshort и tmlong переходят на неактивный уровень. Таймер начинает отсчет времени, когда на неактивный уровень переходит сигнал tmreset. VHDL-программой, приведенной в табл. 9.23, реализуется типичный, одобренный местными властями алгоритм управления светофорами. Этот алгоритм обеспечивает два часто наблюдаемых режима работы нашего проворного светофора. Ночью, при малой интенсивности движения, он удерживает автомобиль в состоянии ожидания до пяти минут, если только не появляется автомобиль на поперечной улице; в этом случае светофор переключается так, чтобы остановить движение в поперечном направлении и пропустить ожидающий автомобиль. (Датчик раннего оповещения установлен достаточно далеко, чтобы сигналы светофора успели измениться до того, как приближающийся автомобиль достигнет перекрестка.) Днем, при напряженном движении всегда имеются автомобили, ожидающие проезда в обоих направлениях; тогда светофор переключается каждые пять секунд, чтобы минимизировать пропускную способность перекрестка и максимизировать время ожидания для всех, подталкивая тем самым возмущенную общественность к мысли о необходимости повышения налогов для решения этой проблемы. При написании этой программы мы воспользовались имевшейся возможностью и добавили контроллеру вход override. Подавая сигнал на этот вход, полицейский может заблокировать работу контроллера и заставить светофор мигать красным светом (с частотой тактового сигнала flashclk), и тогда у него появляется возможность вручную растаскивать пробки, возникающие благодаря этому удивительному изобретению. Как и в большинстве других наших примеров, в табл. 9.23 не указано какое-либо определенное кодирование состояний, и, подобно многим другим примерам, этот конечный автомат хорошо работает при записи состояний в форме выходного кода. Многие состояния можно отождествить с единственной комбинацией значений выходных сигналов, зажигающих огни светофора. Но существуют также три пары неразличимых состояний, если иметь в виду только световые сигналы: (NSWAIT, NSWAIT2), (EWWAIT, EWWAIT2) и (NSDELAY, EWDELAY). Это затруднение можно преодолеть, добавив еще одну переменную состояния EXTIIA с различными значениями в состояниях, образующих каждую пару Эта идея реализована в видоизмененной профамме, приведенной в табл. 9.24. ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |