й схемою переходів автомата, наведеною на малюнку 9. Схема переходів за допомогою графічного редактора пакету HDL Designer Series фірми Mentor Graphics була занесена у відповідний діаграмні файл.
Автомату Avt_ADC, керуючого зчитуванням даних з АЦП в тимчасовий регістр Reg_Buf і записом цих даних в пам'ять МП, і підтримуючого для цих обмінів необхідну взаємодію квитирующего сигналів.
Основу алгоритму утворює циклічна послідовність зміни станів, що визначає виконання 128 циклів оброблюваного блоку.
Початково (по сигналу Rst і по завершенні циклу запису блоку даних) автомат знаходиться в стані IDLE_ST. У цьому стані автомат формує сигнал Busy, що сигналізує про готовність до прийому блоку даних від АЦП, і сигнал Res_count, обнуляє лічильник числа циклів запису count, і продовжує перебувати в стані IDLE_ST до появи сигналу start, який призводить до переходу автомата в подальший стан START_ST. У цьому стані формується сигнал запуску процедури перетворення: сигнал nconvst встановлюється в 0.
У стані WAIT1_ST автомат залишається до тих пір, поки не надійде сигнал готовності даних від ADC - сигнал nЕОС не стане рівним нулю.
У стані LOAD_ST формуються сигнал квітірованія nRD для АЦП, сигнал запуску запису даних Load від ADC в проміжний регістр і сигнал запиту DMА_Req до контролера ПДП. Одночасно із запитом підготовляється передача в МП старшого байта даних із регістру, для чого формується сигнал ОЕ.
У стані WАIТ2_sт формується сигнал ОЕ. У цьому стані автомат залишається до тих пір, поки не з'явиться сигнал ACK_DMA, що підтверджує готовність МП до прийому даних по каналу ПДП. За цим сигналом вихідні дані Reg_Buf1, що знаходяться на виході мультиплексора, переписуються в ОЗУ.
У стані DMA_ST формуються новий сигнал запиту Req _ DMA до контролера ПДП і готується передача в МП молодших 4 -х розрядів даних із регістру Reg_Buf2, для чого знімається сигнал ОЕ.
Автомат безумовно переходить зі стану DMA_ST в стан WAIT3_ST. У цьому стані він залишається до тих пір, поки не з'явиться сигнал ACK_DMA, що підтверджує готовність МП до прийому даних по каналу ПДП.
У стані ENDTR_ST аналізується сигнал End_Count. Якщо сигнал End_count дорівнює 1, що відповідає завершального 128 циклу прийому оцифрованих даних від АЦП, то автомат переводиться в початковий стан IDLE_ST, в іншому випадку автомат переходить в стан START_ST, запускающее новий цикл перетворення.
Малюнок 8 - Граф-схема переходів автомата управління Avt_ADC
Для автомата за допомогою програми пакету HDL Designer Series фірми Mentor Graphics була виконана трансляція діаграми.
hds header_startheader_end LIBRARY ieee; ieee.std_logic_l164.all; USE ieee.std_logic_ariht.all; Avt_ADC IS (Clk, Start, Rst, nEOC, Ack_DMA, End_Count: in std_logic; nConvSt, Busy, Load, Req_DMA, OE, nRD, Res_Count: out std_logic); END Avt ADC; interface_end LIBRARY ieee; ieee.std_logic_1164.all; USE ieee.std_logic_ariht. all; fsm of Avt_ADC IS
Architecture Declarationsstate_values ??IS (IDLE_ST, START_ST, WAIT1_ST, LOAD_ST, WAIT2_ST, DMA_ST, WAIT3_ST, ENDTR_ST,); current_state, next_state: state_values; BEGIN: process (Clk, Rst) BEGINRst= 1 THEN_state lt;=IDLE_ST;- Reset Values ??ELSIF rising_edge (Clk) then_state lt;=next_state;- Default Assignment To Internals END IF; END PROCESS cloced ;: PROCESS (current_state, Start, nEOC, Ack_DMA, End_Count) BEGIN
Defaults Assignment lt;= 1 raquo ;; lt;= 1 raquo ;; Load lt;= 0 raquo ;; ReqDMA lt;= 0 raquo ;; OE lt;= 0 raquo ;; nRD lt;= 0 raquo ;; Res_Count lt;= 0 raquo ;;
Combined Actionscurrent_state ISIDLE_ST= gt; lt;= 0 raquo ;; _ count lt;= 1 raquo ;; Start= 1 THEN_state lt;=START_ST; IF; WHEN START_ST= gt; lt;= 0 raquo ;; _ state lt;=WAIT1_ST; WHEN WAIT1 ST= gt; nEOC= Про THEN_state lt;=LOAD_ST; END IF; WHEN LOAD_ST= gt; Load lt;= 1 raquo ;; nRD lt;= 0 raquo ;; Req_DMA lt;= 1 raquo ;; OE lt;= 1 raquo ;; _ state lt;=WAIT2_ST; WHEN WAIT2_ST= gt; OE lt;= 1 raquo ;; IF Ack_DMA= 1 THEN_state lt;=DMA_ST; END IF; WHEN DMA_ST= gt; _DMA lt;= 1 raquo ;; next_state lt;=WAIT3_ST; WHEN WAIT3_ST= gt; Ack_DMA= 1 THEN_state lt;=ENDTR_ST; END IF; WHEN ENDTR_ST= gt; End_Count= 1 THEN_state lt;=IDLE_ST; ELSE_state lt;=START_ST; END IF; WHEN OTHERS= gt; _state lt;=IDLE_ST; END CASE; END PROCESS nextstate;- Concurrent Statements END fsm;
3.3Тестірованіе програмного опису автомата
Для перевірки правильності складання і працездатності автоматів необхідно проведення тестових випробувань. Можливі різні підходи до організації тестування. Найбільшого поширення набули наступні варіанти:
) програма САПР, що створює текстовий опис автомата (така як, наприклад, програма StateCAD), перевіряє наявність комбінацій вхідних сигналів, що відповідають невизначеному напрямку переходу автомата, і тому в...