![]() |
Звоните! (926)274-88-54 Бесплатная доставка. Бесплатная сборка. |
Ассортимент тканей График работы: Ежедневно. С 8-00 до 20-00. Почта: soft_hous@mail.ru |
![]() ![]() ![]() |
Читальный зал --> Программные средства foundation Definitions LSTATE [KSRED.NSYELLOW,NSGREEN,EWKED,EWYELLOW,EWGREEN,XTRA]
State vairs States 9.2. Примеры проектирования на языке VHDL в параграфе 7.12 мы уже объяснили, что основные правила языка VHDL, введенные нами еще в параграфе 4.7, в том числе, процессы - это почти все, что нужно для описания работы последовательностных схем. В отличие от языка ABEL в языке VHDL нет никаких специальных языковых средств для создания конечных автоматов. Вместо этого большинство профаммистов описывает конечные автоматы комбинацией имеющихся обычных средств, чаще всего с помощью перечислимых типов и операторов case. Мы воспользуемся этим методом в примерах данного парафафа. 9.2.1. Несколько простых автоматов в разделе 7.4.1 мы проиллюстрировали процедуру создания автомата по таблице состояний на примере следующей простой задачи: Построить тактируемый синхронный конечный автомат с двумя входами А и В и одним выходом Z, сигнал на котором равен 1, если - сигнал на входе А имел одно и то же значение на двух последних тактах или - сигнал на входе В оставался равным 1 с тех пор, когда в последний раз было выполнено первое условие. В противном случае выходной сигнал должен равняться 0. Табл. 9.11. Определения для автомата, управляющего светофором в г Саннивейл, с записью состояний в форме выходного кода nodule svaletlb title Output-Coded State Machine for Sunuyvale Traffic Lights SVALETLB device P16V8R; Input and output pins CLOCK, !0E pin 1, 11; HSCAR, EVCAR, TMSHORT, THLOHG pin 2, 3, 8, 9; NSRED, KSYELLOW, SSGREE.4 pia 19, 18, 17 istype reg; EWRSD, EWYELLOW, E GREEK pin 16, 15. 14 istype reg; raRESET.L, XTRA pia 13, 12 istype reg;
Табл. 9.12. Таблица состояний и значений выходного сигнала в рассматриваемом примере Как обычно, объявление объекта в языке VHDL содержит только указания на входы и выходы; в нашем примере это -CLOCK, А, В и Z. Определением архитектуры задается внутреннее функционирование конечного автомата. Первое, что делается в архитектуре, - это образование перечислимого типа Sreg type, значениями которого являются идентификаторы, соответствующие именам состояний. Затем объявляется сигнал Sreg, который будет применен для хранения текущего состояния автомата. С учетом последующего использования этого сигнала, он будет при синтезе отображен в переключающийся по фронту регистр. В части архитектуры, содержащей операторы, имеется два параллельных оператора: процесс и оператор избирательного присваивания. Процесс чувствителен только к сигналу CLOCK и им осуществляются все переходы из одного состояния в другое, которые происходят по нарастающему фронту сигнала CLOCK. Оператором i f в пределах процесса обнаруживается нарастающий фронт, а в операторе case для каждого состояния перебираются все возможные переходы. В операторе case имеется шесть альтернатив, соответствующих пяти состояниям, определенным явно, и случаю, в котором собраны все другие состояния. Ради надежности, в случае others автомат отсьшается назад в состояние INIT. В каждой из альтернатив используется вложенный оператор if , чтобы непосредственно перечислить все комбинации входньгх сигналов А и В. Однако, строго говоря, нет необходимости включать те комбинации, при которых автомат остается в текущем состоянии; сигнал Sreg сохраняет текущее состояние до тех пор, пока в каком-то из возобновлений процесса ему не будет присвоено новое значение. Оператор избирательного присваивания в конце табл. 9.13 вырабатывает единственный выходной сигнал данного автомата - сигнал Z типа Мура, значение которого зависит от текущего состояния. Возможно, легче было определить также в пределах этого оператора выходные сигналы типа Мили. Другими словами, значе- В среде проектирования на основе того или иного языка описания схем можно многими способами написать программу, удовлетворяющую сформулированным требованиям. Мы рассмотрим несколько таких возможностей. Первый подход заключается в том, чтобы составить от руки таблицу состояний и значений выходного сигнала, а затем вручную преобразовать ее в программу. Поскольку в разделе 7.4.1 нами уже была составлена такая таблица состояний, то почему бы нам не воспользоваться ею? В табл. 9.12 эта таблица воспроизведена заново, а в табл. 9.13 приведена соответствующая VHDL-профамма. when OKI if elsif A=l then Sreg <= OKI; when others Sreg <= INIT; end case; end if; end process; with Sreg select - output values based on state Z <= 0 when IHIT I AO I Al, 1 when ОКО 1 OKI, 0 when others; end if; end snexamp arch; Ha самом деле, нам следовало предусмотреть в табл. 9.13 вход сброса (см. заключенное рамку замечание в конце раздела 9.1.4). Сигнап RESET легко включить, видоизменив объявление объекта и добавив еще одно предложение в оператор if в определении архитектуры. Если сигнал RESET принимает активное значение, то автомат должен перейти в состояние INIT; в противном случае еле- ние Z могло бы быть функцией не только текущего состояния, но и входных сигналов. Поскольку оператор with является параллельным оператором, любые изменения входных сигналов сразу же отражаются на значении выходного сигнала Z. Табл. 9.13. VHDL-программа для рассматриваемого конечного автомата library IEEE; use IEEE.std logic l164.all; entity snexaap is port ( CLOCK, A, B: in STD.LOGIC; Z: out STD LOGIC ); end; architecture Sicexanp.arch of saiexaiap is type Sreg.type is (INIT, AO, Al, ОКО, OKI); signal Sreg: Sregtype; ?in process (CLOCK) - state-nachiae states and transitions begin if CLOCKevent and CLOCK =4 then case Sreg is when IHIT => if A=0 then Sreg AO; elsif A=l then Sreg <= Al; end if; when AO if A=0 then Sreg <= ОКО; elsif A=l then Sreg <= Al; end if; when Al => if A=0 then Sreg <= AO; elsif A=l then Sreg <= OKI; end if hen QKO => if A=0 then Sreg <= ОКО; elsif A= l aad B=0 then Sreg <= Al; elsif A=l and B=l then Sreg <= OKI; end if; if A=0 and B-O then Sreg <= AO; elsif A=0 and B=l then Sreg <= O.KO; ООО «Мягкий Дом» - это Отечественный производитель мебели. Наша профильная продукция - это диваны еврокнижка. Каждый диван можем изготовить в соответствии с Вашими пожеланияи (размер, ткань и материал). Осуществляем бесплатную доставку и сборку. Звоните! Ежедневно! (926)274-88-54 Продажа и изготовление мебели. Копирование контента сайта запрещено. Авторские права защищаются адвокатской коллегией г. Москвы. |