========================================== Programable State Machine (PSM) ========================================== 1. Описание характеристик генерируемого КА : -------------------------------------------- +--------------------------------------+--------------------------------------------+ | Кол-во входных условий | 1000 | +--------------------------------------+--------------------------------------------+ | Кол-во выходов | 64 | +--------------------------------------+--------------------------------------------+ | Кол-во состояний | не ограниченно | +--------------------------------------+--------------------------------------------+ | Глубина стека возвратов | 1 [1]_ | +--------------------------------------+--------------------------------------------+ | Типы выходов по способу кодирования | комбинационные Мура/Мили, регистровые Мура | +--------------------------------------+--------------------------------------------+ | Формат кодировния | onehot, native [2]_, sequental | +--------------------------------------+--------------------------------------------+ .. [1] возможно увеличение за счет модернизации генератора .. [2] native - чистый последовательный формат описания КА с указанием всех переходов (квартус хорошо понимает только его) 2.Форматы вызова PSM : ---------------------- python psm.py [-o|-n] infile.psm psm.py [-o|-n] infile.psm 3.Описание используемой мнемоники --------------------------------- 3.Описание используемой мнемоники --------------------------------- .. note :: мнемоника ассемблера построена на основе мнемоники языка Verilog 3.0. Анализ файла :: Однопроходный сверху вниз. Все используемые макаросы, переменные, но не метки должны быть объявлены выше секции где они используються. 3.1. Макросы :: `define <имя макроса> <значениe макроса> Поддерживаются только однострочные макросы. При переопределении имени макроса будет ошибка. Синтаксическая проверка макроса осуществляеться(обусловленно используемым способом анализа лексем !!! ) 3.2. Секции описания переменных:: const <имя переменной> = <значение переменной>; <имя переменной> = <значение переменной>; endconst branch <имя перехода> = <значение перехода>; <имя перехода> = <значение перехода>; endbranch Наличие символа **';'** в конце строки назначения переменной обязательно. В переменных допускаются перекрестные ссылки. При переопределении имени переменной будет ошикбка. Одинаковые имена для констант, переходов, макросов и меток не допускються 3.3. Секции описания кода :: begin исполняемый код конечного автомата end 3.3.1. Формат комманд ::