Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite. Часть 8
Все статьи цикла:
- Часть 1
- Часть 2
- Часть 3
- Часть 4
- Часть 5
- Часть 6
- Часть 7
- Часть 8
- Часть 9
- Часть 10
- Часть 11
- Часть 12
- Часть 13
- Часть 14
- Часть 15
- Часть 16
- Часть 17
- Часть 18
- Часть 19
- Часть 20
- Часть 21
Подраздел Config/BSCAN Components содержит шаблоны описаний компонентов, предназначенных для реализации функций периферийного сканирования и обратного считывания данных в кристаллах программируемой логики семейства
Spartan-3, а также для организации управления глобальными цепями сброса/установки
и переключения выходов ПЛИС в состояние
высокого импеданса.
Boundary Scan (BSCAN_SPARTAN3) содержит образец описания компонента, предоставляющего возможность осуществления операций периферийного сканирования в кристаллах программируемой логики семейства
Spartan-3. Для создания VHDL-описания этого
компонента в данном шаблоне используется
библиотечный примитив BSCAN_SPARTAN3:
— BSCAN_SPARTAN3 : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (BSCAN_SPARTAN3_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— BSCAN_SPARTAN3: Boundary Scan primitive for connecting internal logic to — JTAG interface. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — BSCAN_SPARTAN3_inst : BSCAN_SPARTAN3 port map ( |
|||
CAPTURE => CAPTURE, — CAPTURE output from TAP controller DRCK1 => DRCK1, — Data register output for USER1 functions DRCK2 => DRCK2, — Data register output for USER2 functions RESET => RESET, — Reset output from TAP controller SEL1 => SEL1, — USER1 active output SEL2 => SEL2, — USER2 active output SHIFT => SHIFT, — SHIFT output from TAP controller TDI => TDI, — TDI output from TAP controller UPDATE => UPDATE, — UPDATE output from TAP controller TDO1 => TDO1, — Data input for USER1 function TDO2 => TDO2 — Data input for USER2 function |
|||
); | |||
— End of BSCAN_SPARTAN3_inst instantiation |
Компоненты, описание которых создается
на основе шаблона Boundary Scan (BSCAN_SPARTAN3), позволяют сформировать внутренние цепочки периферийного сканирования в составе ПЛИС. Эти компоненты открывают доступ к контроллеру периферийного
сканирования кристалла JTAG Boundary Scan
Controller [21]. В библиотечном примитиве
BSCAN_SPARTAN3 предусмотрена поддержка формирования двух внутренних пользовательских цепочек периферийного сканирования, обозначаемых USER1 и USER2 соответственно.
Система условных обозначений входных
и выходных портов, применяемая в описании интерфейса библиотечного примитива
BSCAN_SPARTAN3, включает в себя следующие идентификаторы:
- CAPTURE — выход одноименного сигнала, поступающего от контроллера порта
тестового доступа TAP (Test Access Port); - DRCK1 — выход тактового сигнала для
первой цепочки периферийного сканирования (USER1); - DRCK2 — выход тактового сигнала для
второй цепочки периферийного сканирования (USER2); - RESET — выход сигнала сброса, поступающего от контроллера TAP;
- SEL1 — выход сигнала, информирующего
о загрузке инструкции периферийного сканирования для цепочки USER1 в регистр
команд JTAG Instruction Register и ее исполнении; - SEL2 — выход сигнала, уведомляющего о загрузке инструкции периферийного сканирования для цепочки USER2 в регистр команд
JTAG Instruction Register и ее исполнении; - SHIFT — выход одноименного сигнала, поступающего от контроллера TAP;
- TDI — выход сигнала тестовых данных, поступающего от контроллера JTAG-порта;
- UPDATE — выход одноименного сигнала,
поступающего от контроллера TAP; - TDO1 — вход сигнала тестовых данных
первой цепочки периферийного сканирования (USER1); - TDO2 — вход сигнала тестовых данных
второй цепочки периферийного сканирования (USER2).
Условный графический образ компонента,
формируемого на основе шаблона Boundary
Scan (BSCAN_SPARTAN3) для осуществления операций периферийного сканирования
в кристаллах программируемой логики семейства Spartan-3, показан на рис. 64.
Register Capture (CAPTURE_SPARTAN3) предоставляет шаблон описания компонента,
предназначенного для организации обратного чтения данных из кристаллов программируемой логики семейства Spartan-3. Основой
этой конструкции является оператор формирования экземпляра библиотечного элемента
CAPTURE_SPARTAN3:
— CAPTURE_SPARTAN3 : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (CAPTURE_SPARTAN3_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— CAPTURE_SPARTAN3: Register State Capture for Bitstream Readback — Spartan-3 — Xilinx HDL Language Template, version 11.4 — CAPTURE_SPARTAN3_inst : CAPTURE_SPARTAN3 port map ( |
|||
CAP => CAP, — Capture input CLK => CLK — Clock input |
|||
); | |||
— End of CAPTURE_SPARTAN3_inst instantiation |
В представленном шаблоне используются
следующие условные обозначения интерфейсных портов:
- CAP — вход сигнала разрешения захвата
данных; - CLK — вход сигнала синхронизации.
Условный графический образ компонента,
создаваемого с помощью шаблона Register
Capture (CAPTURE_SPARTAN3) для осуществления операций обратного считывания
данных в ПЛИС семейства Spartan-3, показан
на рис. 65.
Startup block (STARTUP_SPARTAN3) является образцом описания компонентов, предназначенных для организации управления
глобальными цепями сброса/установки и переключения выходов кристалла программируемой логики семейства Spartan-3 в состояние
высокого импеданса, а также для указания тактового сигнала, используемого при активизации логических ресурсов в процессе конфигурирования ПЛИС (на фазе Start-Up). В основе
этого шаблона лежит использование библиотечного примитива STARTUP_SPARTAN3:
— STARTUP_SPARTAN3 : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (STARTUP_SPARTAN3_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— STARTUP_SPARTAN3: Startup primitive for GSR, GTS or startup sequence — control. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — STARTUP_SPARTAN3_inst : STARTUP_SPARTAN3 port map ( |
|||
CLK => CLK, — Clock input for start-up sequence GSR => GSR_PORT, — Global Set/Reset input (GSR cannot be used for the port name) GTS => GTS_PORT — Global 3-state input (GTS cannot be used for the port name) |
|||
); | |||
— End of STARTUP_SPARTAN3_inst instantiation |
Система условных обозначений входных
и выходных портов, используемая в описании интерфейса библиотечного примитива
STARTUP_SPARTAN3, включает в себя следующие идентификаторы:
- CLK — вход сигнала синхронизации, используемого при активизации логических
ресурсов в процессе конфигурирования
ПЛИС (на фазе Start-Up); - GSR — вход глобального сигнала сброса/установки триггеров в кристаллах семейства Spartan-3;
- GTS — вход глобального сигнала управления состоянием выходов ПЛИС семейства
Spartan-3.
На рис. 66 изображен условный графический образ компонента, создаваемого с помощью шаблона Startup block (STARTUP_SPARTAN3), который предоставляет возможность управления глобальными цепями
сброса/установки и переключения выходов
в состояние высокого импеданса, а также
выбора тактового сигнала при активизации
логических ресурсов кристаллов программируемой логики семейства Spartan-3.
В подразделе I/O Components расположены шаблоны описаний компонентов,
применяемых во входных и выходных цепях цифровых устройств, разрабатываемых на основе ПЛИС семейства Spartan-3.
Большинство компонентов, представленных
в данном подразделе, реализуется на базе соответствующих ресурсов блоков ввода/вывода в кристаллах программируемой логики
указанного семейства. Структура подраздела
I/O Components включает в себя пять папок:
Bi-directional, DDR Registers, Input, Output,
Weak drivers (Рис. 51. КиТ. 2010. № 8). В каждой из этих папок находятся образцы описаний соответствующей группы компонентов,
выполняющих однотипные функции. Папка
Bi-directional объединяет в себе шаблоны
описания двунаправленных буферных элементов для сигналов, соответствующих различным стандартам ввода/вывода.
Differential Buffer (IOBUFDS) содержит
образец описания двунаправленного буферного элемента с дифференциальными
входами/выходами, предназначенного для
применения в составе цифровых устройств,
проектируемых на основе ПЛИС семейства
Spartan-3. В качестве основы этого шаблона
используется экземпляр библиотечного компонента IOBUFDS.
— IOBUFDS : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IOBUFDS_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— IOBUFDS: Differential Bi-directional Buffer — Spartan-3/3E/3A — Xilinx HDL Language Template, version 11.4 IOBUFDS_inst : IOBUFDS generic map ( |
|||
IOSTANDARD => “DEFAULT” | |||
) | |||
port map ( | |||
O => O, — Buffer output IO => IO, — Diff_p inout (connect directly to top-level port) IOB => IOB, — Diff_n inout (connect directly to top-level port) I => I, — Buffer input T => T — 3-state enable input, high=input, low=output |
|||
); | |||
— End of IOBUFDS_inst instantiation |
В представленном шаблоне тип используемого стандарта ввода/вывода указывается
в виде соответствующего значения параметра настройки IOSTANDARD.
В систему условных обозначений интерфейсных портов библиотечного примитива IOBUFDS входят следующие идентификаторы:
- O — выход буферного элемента;
- IO и IOB — дифференциальные входы/выходы;
- I — вход буферного элемента;
- T — вход управления состоянием дифференциальных входов/выходов.
Условный графический образ двунаправленного буферного элемента с дифференциальными входами/выходами, описание
которого формируется на основе шаблона
Differential Buffer (IOBUFDS) для использования в кристаллах программируемой логики семейства Spartan-3, приведен на рис. 67.
Single-ended Buffer (IOBUF) включает в себя
шаблон VHDL-описания двунаправленного
буферного элемента, который предназначен
для подключения внутренних сигналов (цепей)
разрабатываемого устройства к двунаправленным выводам ПЛИС семейства Spartan-3:
— IOBUF : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IOBUF_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— IOBUF: Single-ended Bi-directional Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — IOBUF_inst : IOBUF generic map ( |
|||
DRIVE => 12, IOSTANDARD => “DEFAULT”, SLEW => “SLOW” |
|||
) | |||
port map ( | |||
O => O, — Buffer output IO => IO, — Buffer inout port (connect directly to top-level port) I => I, — Buffer input T => T — 3-state enable input, high=input, low=output |
|||
); | |||
— End of IOBUF_inst instantiation |
Основой представленной конструкции является оператор формирования экземпляра
библиотечного компонента IOBUF. В этом
библиотечном примитиве предусмотрены
следующие параметры настройки:
- DRIVE — указывает значение нагрузочной
способности соответствующего двунаправленного вывода кристалла, выраженное
в миллиамперах (по умолчанию предлагается значение, равное 12 мА). - IOSTANDARD — определяет используемый стандарт ввода/вывода, в соответствии с которым будет конфигурироваться
двунаправленный вывод ПЛИС. - SLEW — задает скорость переключения
(длительность фронтов) сигналов на соответствующем двунаправленном выводе
кристалла.
После включения шаблона Single-ended
Buffer (IOBUF) в состав VHDL-описания проектируемого устройства в случае использования низковольтных сигнальных стандартов
LVTTL, LVCMOS12, LVCMOS15, LVCMOS18,
LVCMOS25 или LVCMOS33 нужно с помощью параметра DRIVE выбрать требуемое
значение нагрузочной способности для входа/выхода ПЛИС, к которому подключается данный экземпляр двунаправленного
буферного элемента. В кристаллах программируемой логики семейства Spartan-3 указанный параметр настройки может принимать одно из следующих значений: 2, 4, 6, 8,
12, 16, 24. При выборе значения параметра
DRIVE необходимо учитывать, что для стандартов ввода/вывода LVCMOS12, LVCMOS15,
LVCMOS18 поддерживаются не все перечисленные варианты. В таблице 4 приведена информация о возможных вариантах значений
нагрузочной способности для различных
низковольтных сигнальных стандартов, поддерживаемых блоками ввода/вывода ПЛИС
семейства Spartan-3.
Таблица 4. Варианты значений нагрузочной
способности для различных низковольтных
сигнальных стандартов, поддерживаемых блоками
ввода/вывода ПЛИС семейства Spartan-3
Стандарт ввода/вывода |
Значение выходного тока, мА | ||||||
2 | 4 | 6 | 8 | 12 | 16 | 24 | |
LVCMOS12 | + | + | + | – | – | – | – |
LVCMOS15 | + | + | + | + | + | – | – |
LVCMOS18 | + | + | + | + | + | + | – |
LVCMOS25 | + | + | + | + | + | + | + |
LVCMOS33 | + | + | + | + | + | + | + |
LVTTL | + | + | + | + | + | + | + |
Затем, при необходимости, следует задать значение параметра IOSTANDARD, соответствующее требуемому стандарту ввода/вывода. Далее для выбора необходимого
режима переключения выходных сигналов
нужно воспользоваться параметром SLEW.
По умолчанию для данного параметра настройки предлагается значение “SLOW”,
которое соответствует медленной скорости
переключения сигналов. Чтобы установить
режим быстрого переключения выходных
сигналов, нужно присвоить параметру SLEW
значение “FAST”.
Система условных обозначений интерфейсных портов двунаправленного буферного элемента, описание которого создается
на основе библиотечного примитива IOBUF,
включает в себя идентификаторы, которые
были рассмотрены при описании предыдущего шаблона. Условный графический образ
компонента, формируемого с помощью шаблона Single-ended Buffer (IOBUF), изображен на рис. 68.
В папке DDR Registers расположены образцы описаний входных и выходных триггеров, которые предназначены для организации передачи данных с удвоенной скоростью
DDR (Double Data Rate). Указанная папка
содержит два каталога: Input и Output. В каталоге Input находятся шаблоны описаний
входных триггеров, поддерживающих режим
записи данных с удвоенной скоростью, а каталог Output объединяет образцы описаний
выходных DDR-триггеров.
Каждый блок ввода/вывода в кристаллах программируемой логики семейства Spartan-3 содержит три пары триггерных элементов, каждая из которых может быть сконфигурирована в виде DDR-триггера, осуществляющего
передачу данных с удвоенной скоростью. Для
этой цели дополнительно применяются специальные мультиплексоры, представленные
в составе блоков ввода/вывода, а для тактирования D-триггеров, образующих DDR-триггер,
используется пара противофазных сигналов
синхронизации. Формирование тактовых сигналов с фазовым сдвигом на половину периода друг относительно друга осуществляется,
как правило, с помощью цифрового модуля
управления синхронизацией DCM, шаблон
описания которого был рассмотрен в предыдущей части статьи.
На рис. 69 представлена обобщенная структура входного DDR-триггера, поддерживающего режим записи поступающих данных
с удвоенной скоростью, который формируется на основе ресурсов блоков ввода/вывода
ПЛИС семейства Spartan-3.
На рис. 70 показана обобщенная структура
выходного DDR-триггера, обеспечивающего возможность передачи данных с удвоенной скоростью, который конфигурируется
на базе ресурсов блоков ввода/вывода в кристаллах программируемой логики рассматриваемого семейства.
Async set, reset and CE (IFDDRCPE) является
шаблоном описания входного DDR-триггера
с асинхронным сбросом, асинхронной установкой и входом разрешения тактового сигнала, реализуемого на базе соответствующих
ресурсов блоков ввода/вывода в ПЛИС семейства Spartan-3. Элемент, формируемый
с помощью этого шаблона, тактируется двумя противофазными сигналами синхронизации, что обеспечивает возможность записи
входных данных с удвоенной скоростью:
— IFDDRCPE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IFDDRCPE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— IFDDRCPE: Double Data Rate Input Register with Async. Clear, Async. Preset — and Clock Enable. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — IFDDRCPE_inst : IFDDRCPE port map ( |
|||
Q0 => Q0, — Posedge data output Q1 => Q1, — Negedge data output C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input CLR => CLR, — Asynchronous reset input D => D, — Data input (connect directly to top-level port) PRE => PRE — Asynchronous preset input |
|||
); | |||
— End of IFDDRCPE_inst instantiation |
Представленный шаблон выполнен
на основе экземпляра библиотечного компонента IFDDRCPE. В описании интерфейса
этого библиотечного примитива используются следующие идентификаторы входных
и выходных портов:
- D — информационный вход;
- C0 — вход сигнала синхронизации с нулевым фазовым сдвигом;
- C1 — вход сигнала синхронизации с фазовым сдвигом, равным половине периода;
- CE — вход разрешения тактового сигнала;
- CLR — вход сигнала асинхронного сброса;
- PRE — вход сигнала асинхронной установки;
- Q0, Q1 — выходы.
Запись данных, поступающих на информационный вход, осуществляется при высоком
логическом уровне напряжения на входе разрешения тактового сигнала по фронтам сигналов синхронизации, подаваемых на входы
C0 и C1 с фазовым сдвигом на половину периода. Асинхронный сброс или асинхронная
установка осуществляются при высоком логическом уровне сигнала на входах CLR или
PRE соответственно, независимо от уровня
напряжения на входе разрешения тактового сигнала. При этом следует учитывать, что
сигнал на входе асинхронного сброса имеет более высокий приоритет по сравнению
с сигналом на входе асинхронной установки.
На рис. 71 показан условный графический образ входного DDR-триггера с асинхронным сбросом, асинхронной установкой
и входом разрешения тактового сигнала,
предназначенного для организации записи
данных с удвоенной скоростью, описание которого создается на основе шаблона Async set,
reset and CE (IFDDRCPE).
Sync set, reset and CE (IFDDRRSE) представляет собой образец описания входного
DDR-триггера с синхронным сбросом, синхронной установкой и входом разрешения
тактового сигнала, предназначенного для
организации записи входных данных с удвоенной скоростью в разрабатываемых цифровых устройствах, проектируемых на базе
кристаллов программируемой логики семейства Spartan-3. В качестве основы этого шаблона используется экземпляр библиотечного компонента IFDDRRSE:
— IFDDRRSE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IFDDRRSE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— IFDDRRSE: Double Data Rate Input Register with Sync. Clear, Sync. Preset — and Clock Enable. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — IFDDRRSE_inst : IFDDRRSE port map ( |
|||
Q0 => Q0, — Posedge data output Q1 => Q1, — Negedge data output C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input D => D, — Data input (connect directly to top-level port) R => R, — Synchronous reset input S => S — Synchronous preset input |
|||
); | |||
— End of IFDDRRSE_inst instantiation |
В систему условных обозначений интерфейсных портов библиотечного компонента IFDDRRSE, кроме идентификаторов входов и выходов, рассмотренных при описании
предыдущего шаблона, входят также следующие наименования входов:
- R — вход сигнала синхронного сброса;
- S — вход сигнала синхронной установки.
В отличие от DDR-триггеров, формируемых на основе шаблона Async set, reset and
CE (IFDDRCPE), в компонентах, создаваемых
с помощью шаблона Sync set, reset and CE
(IFDDRRSE), сброс или установка осуществляются по фронту тактового сигнала при
высоком логическом уровне напряжения
на входах R или S соответственно. В библиотечном примитиве IFDDRRSE сигнал на входе синхронного сброса имеет более высокий
приоритет, чем сигнал на входе синхронной
установки. Условный графический образ
входного DDR-триггера с синхронным сбросом, синхронной установкой и входом разрешения тактового сигнала, предназначенного
для организации записи данных с удвоенной скоростью, описание которого создается на основе шаблона Sync set, reset and CE
(IFDDRRSE), представлен на рис. 72.
Async set, reset and CE (OFDDRCPE) содержит
шаблон описания выходного DDR-триггера
с асинхронным сбросом, асинхронной установкой, входом разрешения тактового сигнала и двумя входами данных и синхронизации.
Элементы, формируемые с помощью рассматриваемого шаблона, реализуются на базе
пары триггеров и специального мультиплексора, входящих в состав блоков ввода/вывода
ПЛИС семейства Spartan-3, и применяются, как
правило, для организации передачи выходных
данных с удвоенной скоростью. При этом для
тактирования используется пара противофазных сигналов синхронизации:
— OFDDRCPE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OFDDRCPE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— OFDDRCPE: Double Data Rate Output Register with Async. Clear, Async. Preset — and Clock Enable. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OFDDRCPE_inst : OFDDRCPE port map ( |
|||
Q => Q, — Data output (connect directly to top-level port) C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input CLR => CLR, — Asynchronous reset input D0 => D0, — Posedge data input D1 => D1, — Negedge data input PRE => PRE — Asynchronous preset input |
|||
); | |||
— End of OFDDRCPE_inst instantiation |
Представленный шаблон выполнен на основе библиотечного примитива OFDDRCPE.
В описании интерфейса этого библиотечного компонента, кроме условных обозначений
входных и выходных портов, рассмотренных
выше для шаблонов входных DDR-триггеров,
используются также следующие идентификаторы:
- D0 — информационный вход, запись данных с которого осуществляется по фронту
тактового сигнала без фазового сдвига, поступающего на вход C0; - D1 — информационный вход, запись данных
с которого осуществляется по фронту тактового сигнала с фазовым сдвигом, равным половине периода, подаваемого на вход C1; - Q — выход.
В элементах, для подготовки описаний которых используется рассматриваемая конструкция, сохраняется такое же соотношение
приоритетов сигналов на входах асинхронного
сброса и асинхронной установки, как и во входных DDR-триггерах, формируемых на основе
шаблона Async set, reset and CE (IFDDRCPE).
На рис. 73 приведен условный графический образ выходного DDR-триггера с асинхронным сбросом, асинхронной установкой, входом разрешения тактового сигнала
и двумя входами данных и синхронизации,
предназначенного для передачи выходных
данных с удвоенной скоростью, описание которого создается с помощью шаблона Async
set, reset and CE (OFDDRCPE).
Async set, reset and CE/w 3-state (OFDDRTCPE) включает в себя образец описания выходного
DDR-триггера с асинхронным сбросом, асинхронной установкой, входом разрешения
тактового сигнала, двумя входами данных
и синхронизации и тристабильным выходом. Компоненты, формируемые на основе
этой конструкции, как и выходные DDR-триггеры, создаваемые с помощью шаблона
Async set, reset and CE (OFDDRCPE), предназначены для реализации передачи данных
с удвоенной скоростью, но отличаются возможностью переключения выхода в состояние высокого импеданса. Эту возможность
обеспечивает наличие выходного буферного
элемента с тристабильным выходом:
— OFDDRTCPE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OFDDRTCPE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— OFDDRTCPE: Double Data Rate Output Register with Async. Clear, Async. Preset — and Clock Enable with 3-state. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OFDDRTCPE_inst : OFDDRTCPE port map ( |
|||
O => O, — Data output (connect directly to top-level port) C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input CLR => CLR, — Asynchronous reset input D0 => D0, — Posedge data input D1 => D1, — Negedge data input PRE => PRE, — Asynchronous preset input T => T — 3-state enable input |
|||
); | |||
— End of OFDDRTCPE_inst instantiation |
В качестве основы шаблона Async set, reset
and CE/w 3-state (OFDDRTCPE) используется библиотечный примитив OFDDRTCPE.
В состав интерфейса этого библиотечного
компонента входят те же входы и выходы,
что и в примитиве OFDDRCPE, а также вход
T, предназначенный для управления состоянием тристабильного выхода. При наличии
низкого логического уровня сигнала на указанном входе данные, записанные в триггер,
отображаются на выходе этого элемента. При
подаче высокого логического уровня сигнала
на вход управления T выход элемента переключается в состояние высокого импеданса.
Условный графический образ выходного
DDR-триггера с асинхронным сбросом, асинхронной установкой, входом разрешения
тактового сигнала, двумя входами данных
и синхронизации и тристабильным выходом,
формируемого с помощью шаблона Async set,
reset and CE/w 3-state (OFDDRTCPE) для организации передачи данных с удвоенной скоростью в кристаллах программируемой логики
семейства Spartan-3, изображен на рис. 74.
Sync set, reset and CE (OFDDRRSE) представляет собой шаблон описания выходного
DDR-триггера с синхронным сбросом, синхронной установкой, входом разрешения
тактового сигнала и двумя входами данных
и синхронизации, который применяется для
организации передачи данных с удвоенной
скоростью в цифровых устройствах, разрабатываемых на базе ПЛИС семейства Spartan-3.
— OFDDRRSE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OFDDRRSE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— OFDDRRSE: Double Data Rate Input Register with Sync. Clear, Sync. Preset — and Clock Enable. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OFDDRRSE_inst : OFDDRRSE port map ( |
|||
Q => Q, — Data output (connect directly to top-level port) C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input D0 => D0, — Posedge data input D1 => D1, — Negedge data input R => R, — Synchronous reset input S => S — Synchronous preset input |
|||
); | |||
— End of OFDDRRSE_inst instantiation |
Основу представленной конструкции образует оператор создания экземпляра библиотечного компонента OFDDRRSE. В этом
компоненте входы синхронного сброса
и синхронной установки имеют то же соотношение приоритетов, что и в библиотечном
примитиве IFDDRRSE.
На рис. 75 представлен условный графический образ выходного DDR-триггера с синхронным сбросом, синхронной установкой,
входом разрешения тактового сигнала и двумя входами данных и синхронизации, создаваемого с помощью шаблона Sync set, reset
and CE (OFDDRRSE) для реализации передачи
выходных данных с удвоенной скоростью.
Sync set, reset and CE/w 3-state (OFDDRTRSE) является образцом описания выходного DDR-триггера с синхронным сбросом, синхронной
установкой, тристабильным выходом, входом
разрешения тактового сигнала и двумя входами данных и синхронизации, который предназначен для осуществления передачи данных
с удвоенной скоростью в цифровых устройствах, проектируемых на базе кристаллов программируемой логики семейства Spartan-3.
Основное различие между выходными триггерами, формируемыми с помощью шаблонов Sync set, reset and CE (OFDDRRSE) и Sync
set, reset and CE/w 3-state (OFDDRTRSE), проявляется в возможности переключения выходов последних элементов в состояние высокого импеданса:
— OFDDRTRSE : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OFDDRTRSE_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— OFDDRTRSE: Double Data Rate Input Register with Sync. Clear, Sync. Preset — and Clock Enable with 3-state. — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OFDDRTRSE_inst : OFDDRTRSE port map ( |
|||
O => O, — Data output (connect directly to top-level port) C0 => C0, — 0 degree clock input C1 => C1, — 180 degree clock input CE => CE, — Clock enable input D0 => D0, — Posedge data input D1 => D1, — Negedge data input R => R, — Synchronous reset input S => S, — Synchronous preset input T => T — 3-state enable input |
|||
); | |||
— End of OFDDRTRSE_inst instantiation |
Условный графический образ выходного
DDR-триггера с синхронным сбросом, синхронной установкой, тристабильным выходом, входом разрешения тактового сигнала
и двумя входами данных и синхронизации,
для подготовки описания которого применяется шаблон Sync set, reset and CE/w 3-state
(OFDDRTRSE), показан на рис. 76.
Папки Input и Output включают в себя шаблоны описаний, соответственно, входных
и выходных буферных элементов, применяемых для подключения внешних однополюсных и дифференциальных сигналов.
Differential Buffer (IBUFDS) содержит шаблон описания входного буферного элемента с дифференциальными входами, который
применяется для подключения внешних сигналов, представленных в соответствии с одним из дифференциальных стандартов ввода/вывода, поддерживаемых ПЛИС семейства
Spartan-3 [1, 20]. Основой этой конструкции
является оператор создания экземпляра библиотечного элемента IBUFDS:
— IBUFDS : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IBUFDS_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : reference and connect this function to the design. — : All inputs and outputs must be connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— IBUFDS: Differential Input Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 |
|||
— | |||
IBUFDS_inst : IBUFDS generic map ( |
|||
CAPACITANCE => “DONT_CARE”, — “LOW”, “NORMAL”, “DONT_CARE” (Spartan-3 only) DIFF_TERM => FALSE, — Differential Termination IOSTANDARD => “DEFAULT” |
|||
) | |||
port map ( | |||
O => O, — Buffer output I => I, — Diff_p buffer input (connect directly to top-level port) IB => IB — Diff_n buffer input (connect directly to top-level port) |
|||
); | |||
— End of IBUFDS_inst instantiation |
В библиотечном примитиве IBUFDS предусмотрены следующие параметры настройки, предназначенные для конфигурирования
формируемого входного буферного элемента с дифференциальными входами:
- CAPACITANCE — указывает характер
входной емкости. - DIFF_TERM — управляет использованием
внутренних согласующих элементов. - IOSTANDARD — определяет применяемый дифференциальный стандарт ввода/вывода.
При подготовке описания конкретного
экземпляра входного буферного элемента
с дифференциальными входами для применения в проектах, реализуемых на базе кристаллов программируемой логики семейства
Spartan-3, достаточно указать требуемый дифференциальный стандарт ввода/вывода, а для
остальных параметров настройки следует использовать значения, предлагаемые по умолчанию.
Система условных обозначений интерфейсных портов, применяемая в шаблоне описания входного буферного элемента с дифференциальными входами Differential Buffer
(IBUFDS), включает в себя следующие идентификаторы:
- О — выход буферного элемента;
- I — прямой вход дифференциальной пары
сигналов; - IB — инверсный вход дифференциальной
пары сигналов.
На рис. 77 приведен условный графический образ входного буферного элемента
с дифференциальными входами, для подготовки VHDL-описания которого используется шаблон Differential Buffer (IBUFDS).
Differential Global Clock (IBUFGDS) дублирует образец описания входного глобального
буферного элемента с дифференциальными
входами Differential Input Global Clock Buffer
(IBUFGDS), предназначенного для подключения внешних сигналов синхронизации,
соответствующих одному из дифференциальных стандартов ввода/вывода. Последний
шаблон, расположенный в каталоге Clock
Buffers подраздела Clock Components, подробно рассмотрен в предыдущей части статьи (КиТ. 2010. № 8).
Single-ended Buffer (IBUF) предоставляет
шаблон описания входного буферного элемента, применяемого для коммутации внешних однополюсных входных сигналов цифрового устройства, разрабатываемого на базе
ПЛИС семейства Spartan-3:
— IBUF : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (IBUF_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
||||
— IBUF: Single-ended Input Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — |
||||
IBUF_inst : IBUF generic map ( |
||||
IOSTANDARD => “DEFAULT” ) |
||||
port map ( | ||||
O => O, — Buffer output I => I — Buffer input (connect directly to top-level port) |
||||
); | ||||
— End of IBUF_inst instantiation |
Информация о системе условных обозначений, назначении настраиваемого параметра
и условный графический образ входного буферного элемента, формируемого с помощью
шаблона Single-ended Buffer (IBUF), были
приведены при рассмотрении аналогичной
конструкции, предназначенной для применения в устройствах, проектируемых на базе
кристаллов программируемой логики с архитектурой CPLD (Рис. 43. КиТ. 2010. № 7).
Single-ended Global Clock (IBUFG) является дубликатом шаблона описания входного
глобального буферного элемента Singleended
Input Global Clock Buffer (IBUFG), который находится в каталоге Clock Buffers подраздела Clock Components. Подробная информация об этой конструкции была представлена
в предыдущей части статьи (КиТ. 2010. № 8).
Differential 3-state Buffer (OBUFTDS) включает в себя образец описания выходного буферного элемента с дифференциальными
тристабильными выходами, предназначенного для использования в составе цифровых
устройств, реализуемых на основе кристаллов программируемой логики семейства
Spartan-3. Элементы, описание которых формируется с помощью этого шаблона, применяются для организации передачи данных
из ПЛИС к внешним устройствам в виде
дифференциальных пар сигналов, в соответствии с выбранным стандартом ввода/вывода, поддерживаемым кристаллами семейства
Spartan-3 [1, 20]. Рассматриваемый шаблон
основан на использовании библиотечного
примитива OBUFTDS:
— OBUFTDS : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OBUFTDS_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||||
— OBUFTDS: Differential 3-state Output Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — |
|||||
OBUFTDS_inst : OBUFTDS generic map ( |
|||||
IOSTANDARD => “DEFAULT” ) |
|||||
port map ( | |||||
O => O, — Diff_p output (connect directly to top-level port) OB => OB, — Diff_n output (connect directly to top-level port) I => I, — Buffer input T => T — 3-state enable input |
|||||
); | |||||
— End of OBUFTDS_inst instantiation |
В системе условных обозначений, применяемой в описании интерфейса библиотечного примитива OBUFTDS, представлены те же идентификаторы входных портов,
что и в образце описания двунаправленного
буферного элемента с дифференциальными входами/выходами Differential Buffer
(IOBUFDS). Кроме того, в эту систему входят
идентификаторы дифференциальной пары
выходов O и OB.
Условный графический образ выходного
буферного элемента с дифференциальными
тристабильными выходами, формируемого
с помощью шаблона Differential 3-state Buffer
(OBUFTDS), представлен на рис. 78.
Differential Buffer (OBUFDS) содержит шаблон описания выходного буферного элемента с дифференциальными выходами, применяемого в составе цифровых устройств,
разрабатываемых на базе ПЛИС семейства
Spartan-3. Основу данного шаблона составляет оператор создания экземпляра библиотечного элемента OBUFDS:
— OBUFDS : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OBUFDS_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
||||
— OBUFDS: Differential Output Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OBUFDS_inst : OBUFDS generic map ( |
||||
IOSTANDARD => “DEFAULT” ) |
||||
port map ( | ||||
O => O, — Diff_p output (connect directly to top-level port) OB => OB, — Diff_n output (connect directly to top-level port) I => I — Buffer input |
||||
); | ||||
— End of OBUFDS_inst instantiation |
В отличие от выходного буферного элемента с дифференциальными выходами, для
подготовки описания которого используется
шаблон Differential 3-state Buffer (OBUFTDS),
в элементах, формируемых на основе представленной конструкции, отсутствует возможность переключения выходов в состояние высокого импеданса.
На рис. 79 показан условный графический образ выходного буферного элемента
с дифференциальными выходами, описание которого создается с помощью шаблона
Differential Buffer (OBUFDS).
Single-ended 3-state Buffer (OBUFT) содержит образец использования библиотечного
примитива OBUFT при подготовке VHDL-описания выходного буферного элемента
с тристабильным выходом, который предназначен для реализации на основе соответствующих ресурсов блоков ввода/вывода
в кристаллах программируемой логики семейства Spartan-3:
— : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OBUFT_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
||||
— OBUFT: Single-ended 3-state Output Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OBUFT_inst : OBUFT generic map ( |
||||
DRIVE => 12, IOSTANDARD => “DEFAULT”, SLEW => “SLOW” |
||||
) | ||||
port map ( | ||||
O => O, — Buffer output (connect directly to top-level port) I => I, — Buffer input T => T — 3-state enable input |
||||
); | ||||
— End of OBUFT_inst instantiation |
В приведенной конструкции используются те же условные обозначения интерфейсных портов и параметры настройки, что
и в шаблоне описания выходного буферного
элемента с тристабильным выходом, предназначенного для применения в цифровых
устройствах, разрабатываемых на базе ПЛИС
с архитектурой CPLD, который был рассмотрен в шестой части данной статьи. При этом
следует обратить внимание на то, что параметры IOSTANDARD и DRIVE при подготовке VHDL-описаний выходных буферных элементов с тристабильным выходом для кристаллов программируемой логики семейства
Spartan-3 могут принимать иные значения
по сравнению с аналогичными элементами,
создаваемыми для ПЛИС серий CPLD. Список
возможных вариантов значений параметра
настройки IOSTANDARD определяется спектром сигнальных стандартов ввода/вывода,
поддерживаемых кристаллами семейства
Spartan-3 [1, 20]. Допустимые значения параметра DRIVE при использовании сигнальных
стандартов LVTTL, LVCMOS12, LVCMOS15,
LVCMOS18, LVCMOS25 или LVCMOS33 приведены в таблице 4.
Условный графический образ выходного буферного элемента, описание которого
создается с помощью шаблона Single-ended
3-state Buffer (OBUFT) для использования
в кристаллах программируемой логики семейства Spartan-3, показан на рис. 44 (КиТ.
2010. № 7).
Single-ended Buffer (OBUF) представляет
собой шаблон описания выходного буферного элемента, используемого для согласования
внутренних и внешних уровней выходных
сигналов в ПЛИС семейства Spartan-3:
— OBUF : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (OBUF_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
||||
— OBUF: Single-ended Output Buffer — Spartan-3 — Xilinx HDL Language Template, version 11.4 — OBUF_inst : OBUF generic map ( |
||||
DRIVE => 12, IOSTANDARD => “DEFAULT”, SLEW => “SLOW” ) |
||||
port map ( | ||||
O => O, — Buffer output (connect directly to top-level port) I => I — Buffer inp |
||||
); | ||||
— End of OBUF_inst instantiation |
Система условных обозначений, настраиваемые параметры и условный графический
образ выходного буферного элемента, формируемого с помощью шаблона Single-ended
Buffer (OBUF), были представлены при рассмотрении аналогичной конструкции, предназначенной для использования в составе
устройств, проектируемых на базе кристаллов программируемой логики с архитектурой CPLD (Рис. 43. КиТ. 2010. № 7).
Папка Weak drivers объединяет в себе образцы описаний специальных элементов,
которые можно задействовать для управления состоянием входов и выходов ПЛИС
семейства Spartan-3. В составе блоков ввода/вывода кристаллов программируемой логики этого семейства представлены подтягивающие резисторы PULLDOWN и PULLUP,
а также схема удержания последнего состояния. Для создания VHDL-описаний этих
элементов предусмотрены соответствующие библиотечные примитивы. Каждый
из этих примитивов имеет единственный
порт, который должен подключаться к интерфейсной цепи верхнего уровня иерархии
проекта.
KEEPER является шаблоном описания схемы удержания последнего состояния в цифровых устройствах, реализуемых на базе
ПЛИС семейства Spartan-3.
— KEEPER : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (KEEPER_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
|||
— KEEPER: I/O Buffer Weak Keeper — Spartan-3 — Xilinx HDL Language Template, version 11.4 — KEEPER_inst : KEEPER port map ( |
|||
O => O — Keeper output (connect directly to top-level port) | |||
); | |||
— End of KEEPER_inst instantiation |
Условный графический образ компонента,
представляющего схему удержания последнего состояния в кристаллах программируемой логики семейства Spartan-3, который
формируется с помощью шаблона KEEPER,
показан на рис. 45 (КиТ. 2010. № 7).
PULLDOWN включает в себя шаблон
VHDL-описания внутреннего подтягивающего резистора, входящего в состав блоков
ввода/вывода ПЛИС семейства Spartan-3, который подключен к общей цепи («земле»):
— PULLDOWN : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (PULLDOWN_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. — — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. — Library UNISIM; use UNISIM.vcomponents.all; — — <——Cut code below this line and paste into the architecture body—-> — |
||
— PULLDOWN: I/O Buffer Weak Pull-down — Spartan-3 — Xilinx HDL Language Template, version 11.4 — PULLDOWN_inst : PULLDOWN port map ( |
||
O => O — Pulldown output (connect directly to top-level port) ); |
||
— End of PULLDOWN_inst instantiation |
На рис. 80 показан условный графический
образ внутреннего подтягивающего резистора, подключенного к общей цепи («земле»),
описание которого создается с помощью шаблона PULLDOWN.
PULLUP содержит образец применения
одноименного библиотечного примитива
для подготовки VHDL-описания внутреннего подтягивающего резистора, подключенного к источнику питания, в составе цифровых
устройств, разрабатываемых на основе кристаллов программируемой логики семейства
Spartan-3:
— PULLUP : In order to incorporate this function into the design, — VHDL : the following instance declaration needs to be placed — instance : in the architecture body of the design code. The — declaration : instance name (PULLUP_inst) and/or the port declarations — code : after the “=>” assignment maybe changed to properly — : connect this function to the design. All inputs must be — : connected. — Library : In addition to adding the instance declaration, a use — declaration : statement for the UNISIM.vcomponents library needs to be — for : added before the entity declaration. This library — Xilinx : contains the component declarations for all Xilinx — primitives : primitives and points to the models that will be used — : for simulation. — Copy the following two statements and paste them before the — Entity declaration, unless they already exist. Library UNISIM; use UNISIM.vcomponents.all; — <——Cut code below this line and paste into the architecture body—-> |
||
— PULLUP: I/O Buffer Weak Pull-up — Spartan-3 — Xilinx HDL Language Template, version 11.4 PULLUP_inst : PULLUP port map ( |
||
O => O — Pullup output (connect directly to top-level port) | ||
); — End of PULLUP_inst instantiation |
Условный графический образ внутреннего
подтягивающего резистора, подключенного
к источнику питания в блоках ввода/вывода ПЛИС семейства Spartan-3, описание которого формируется с помощью шаблона
PULLUP, совпадает с символом (Рис. 46. КиТ.
2010. № 7).
Продолжение следует.
Литература
- Кузелин М. О., Кнышев Д. А., Зотов В. Ю.
Современные семейства ПЛИС фирмы Xilinx /
Справочное пособие. М.: Горячая линия –
Телеком, 2004. - Бибило П. Н. Основы языка VHDL. М.: Солон-Р,
2000. - Бибило П. Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.
- Уэйкерли Дж. Ф. Проектирование цифровых
устройств. Том 1. М.: Постмаркет, 2002. - Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. М.: СолонПресс, 2003.
- Зотов В. Инструментальный комплект Spartan-3
Starter Kit для практического освоения методов
проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA
фирмы Xilinx // Компоненты и технологии.
2005. № 7. - Зотов В. Новый инструментальный комплект
Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых
микропроцессорных систем на основе ПЛИС
семейств FPGA фирмы Xilinx // Компоненты
и технологии. 2006. № 10. - Зотов В. Новый инструментальный комплект
Spartan-3A Starter Kit для практического освоения методов проектирования и отладки цифровых устройств с аппаратной и программной
реализацией операций, реализуемых на основе ПЛИС семейств FPGA фирмы Xilinx //
Компоненты и технологии. 2007. № 9.