x може бути здійснена або підбором стандартних компонентів з бібліотек ISE Xilinx, або описом роботи пристрою на мові VHDL. p align="justify"> При реалізації розглянутого пристрою на ПЛІС є деякі обмеження. Так, для початкового скидання тригера DD5.2 застосовується RC-ланцюг, реалізація якої на ПЛІС вельми скрутна. Є можливість використовувати таку ж RC-ланцюг з тією ж метою шляхом виносу її за межі ПЛІС, тобто так само використовувати дискретні резистор і конденсатор, але при найближчому розгляді з'ясовується, що є можливість зовсім відмовитися від її застосування. Крім того, в розглянутому пристрої застосовуються та інші схемні рішення, що не дозволяють безпосередньо перенести схему пристрою в кристал ПЛІС. Для вирішення даної проблеми схема вихідного пристрою була перероблена з метою розміщення її в ПЛІС. Вид переробленої схеми в Xilinx ISE представлений на рис. 9. p align="justify"> Як видно з малюнка, схема тепер має 4 режими роботи - хід двигуна вперед, прискорений хід вперед, прискорений хід назад і останов. Режим встановлюється подачею лог.1 на відповідний вхід. br/>
В
У даній схемі в більшості своїй використовуються бібліотечні модулі ISE, але є три модулі, яких немає в стандартних бібліотеках.
Перший модуль DIV_2x10exp6 написаний на VHDL і замінює у вихідній схемі ланцюжок лічильників-дільників DD5.1-DD6-DD7-DD9-DD11-DD12-DD13. Він так само здійснює розподіл вхідної частоти на 2000000. Текст опису модуля на VHDL:
'0 '); res, q_tmp: std_logic: = '0 ';: process (C, res, R) (res = '1' or R = '1 ') then <= (others => '0'); _tmp <= '0 '; (rising_edge (C) ) then <= counter + 1; (counter = 999999) then <= (others => '0 '); _tmp <= not q_tmp; <= '0'; if; if; process; <= q_tmp ; Behavioral;
Приведення тимчасової діаграми для пояснення роботи модуля тут недоцільно через велику різницю в періодах вхідного і вихідного сигналів, внаслідок чого тимчасова діаграма неінформативна.
Другий модуль DIV12 також представляє собою дільник частоти, але з коефіцієнтом перерахунку 12. У даній схемі частота, формована дільником DIV_2x10exp6, використовується для завдання підвищеної швидкості обертання вала керованого двигуна, в той час як частота, одержувана з виходу дільника DIV12, відповідає за нормальний режим роботи двигуна. Текст опису модуля на VHDL:
{Тут розміщується оголошення стандартних бібліотек}
entity DIV12 is (C: in STD_LOGIC;: in STD_LOGIC;: out STD_LOGIC); DIV12; Behavioral of DIV12 iscounter: std_logic_vector (3 downto 0): = (others => '0 ') ; res, q_tmp: std_logic: = '0 ';: process (C, res, R) (res = '1' or R = '1 ...