Расширения
CUPL предлагает большой список расширений (см.ниже). Увы, применительно к ATF16V8B подходит только одно – D-триггер.
По сути своей, расширение – это способ описать некоторую аппаратную особенность ПЛИС.
Пример:
Name D-Flip-Flop ;
PartNo 00 ;
Date 20.12.2015 ;
Revision 01 ;
Designer JM ;
Company Home ;
Assembly None ;
Location ;
Device g16v8a ;
PIN 1 = CLOCK;
PIN 2 = DATA;
PIN 19 = Q;
Q.D = DATA;
В данном случае имеем описание одного D-триггера. Микросхема (ATF16V8B) устроена таким образом, что CLOCK всегда выведен на первый вывод (его можно было бы и не указывать в коде). И CLOCK общий для всех триггеров (их восемь на одну микросхему).
Фактически, можно указать лишь вывод, к которому надо подключить D-вход триггера и вывод, к которому надо подключить выход Q триггера.
Имена выводов могут быть произвольными. Важно лишь указать “.D”. По сути, никаких объявлений переменных/инстансов здесь нет. Расширение привязывается к имени выхода.
Последняя особенность: ножка 11 (Output Enable) должна быть подключена к земле. Причина заключается в том, что при попытке использования триггеров компилятор переводит микросхему в регистровый режим, в котором выводы CLK и OE намертво привязываются к выводам 1 и 11 и нет никакой возможности этим управлять.
Триггер защёлкивает данные по фронту импульса.
Полный список расширений CUPL
Extension | Side | Description |
.AP | L | Asynchronous preset of flip-flop |
.AR | L | Asynchronous reset of flip-flop |
.APMUX | L | Asynchronous preset multiplexer selection |
.ARMUX | L | Asynchronous reset multiplexer selection |
.BYP | L | Programmable register bypass |
.CA | L | Complement array |
.CE | L | CE input of enabled D-CE type flip-flop |
.CK | L | Programmable clock of flip-flop |
.CKMUX | L | Clock multiplexer selection |
.D | L | D nput of D-type flip-flop |
.DFB | R | D registered feedback path selection |
.DQ | R | Q output of D-type flip-flop |
.IMUX | L | Input multiplexer selection of two pins |
.INT | R | Internal feedback path for registered macrocell |
.IO | R | Pin feedback path selection |
.IOAR | L | Asynchronous reset for pin feedback register |
.IOAP | L | Asynchronous preset for pin feedback register |
.IOCK | L | Clock for pin feedback register |
.IOD | R | Pin feedback path through D register |
.IOL | R | Pin feedback path through latch |
.IOSP | L | Synchronous preset for pin feedback register |
.IOSR | L | Synchronous reset for pin feedback register |
.J | L | J input of JK-type output flip-flop |
.K | L | K input of JK-type output flip-flop |
.L | L | D input of transparent latch |
.LE | L | Programmable latch enable |
.LEMUX | L | Latch enable multiplexer selection |
.LFB | R | Latched feedback path selection |
.LQ | R | Q output of transparent input latch |
.OBS | L | Programmable observability of buried nodes |
.OE | L | Programmable output enable |
.OEMUX | L | Tri-state multiplexer selection |
.PR | L | Programmable preload |
.R | L | R input of SR-type output flip-flop |
.S | L | S input of SR-type output flip-flop |
.SP | L | Synchronous preset of flip-flop |
.SR | L | Synchronous reset of flip-flop |
.T | L | T input of toggle output flip-flop |
.TEC | L | Technology-dependent fuse selection |
.TFB | R | T registered feedback path selection |
.T1 | L | T1 input of 2-T flip-flop |
.T2 | L | T2 input of 2-T flip-flop |