Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2010 №9

Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite. Часть 8

Зотов Валерий


В восьмой части статьи продолжается изучение шаблонов VHDL-описаний компонентов, выполненных на основе библиотечных примитивов, которые предназначены для непосредственной реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики с архитектурой FPGA семейства Spartan-3 [1, 6]. Рассматриваются образцы описаний компонентов, применяемых для осуществления операций периферийного сканирования и обратного считывания данных, входных, выходных и двунаправленных буферных элементов, а также входных и выходных триггеров, поддерживающих режим удвоенной скорости записи и чтения информации.

Все статьи цикла:

Подраздел 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.



Рис. 64. Условный графический образ компонента, предназначенного для организации периферийного сканирования в кристаллах программируемой логики семейства Spartan-3

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.



Рис. 65. Условный графический образ компонента, предназначенного для организации обратного считывания данных в ПЛИС семейства Spartan-3

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.



Рис. 66. Условный графический образ компонента, создаваемого с помощью шаблона Startup block (STARTUP_SPARTAN3)

В подразделе 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.



Рис. 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.



Рис. 68. Условный графический образ двунаправленного буферного элемента, описание которого формируется на основе шаблона Single-ended Buffer (IOBUF)

В папке DDR Registers расположены образцы описаний входных и выходных триггеров, которые предназначены для организации передачи данных с удвоенной скоростью DDR (Double Data Rate). Указанная папка содержит два каталога: Input и Output. В каталоге Input находятся шаблоны описаний входных триггеров, поддерживающих режим записи данных с удвоенной скоростью, а каталог Output объединяет образцы описаний выходных DDR-триггеров.

Каждый блок ввода/вывода в кристаллах программируемой логики семейства Spartan-3 содержит три пары триггерных элементов, каждая из которых может быть сконфигурирована в виде DDR-триггера, осуществляющего передачу данных с удвоенной скоростью. Для этой цели дополнительно применяются специальные мультиплексоры, представленные в составе блоков ввода/вывода, а для тактирования D-триггеров, образующих DDR-триггер, используется пара противофазных сигналов синхронизации. Формирование тактовых сигналов с фазовым сдвигом на половину периода друг относительно друга осуществляется, как правило, с помощью цифрового модуля управления синхронизацией DCM, шаблон описания которого был рассмотрен в предыдущей части статьи.

На рис. 69 представлена обобщенная структура входного DDR-триггера, поддерживающего режим записи поступающих данных с удвоенной скоростью, который формируется на основе ресурсов блоков ввода/вывода ПЛИС семейства Spartan-3.



Рис. 69. Структура входного DDR-триггера, формируемого на базе ресурсов блоков ввода/вывода ПЛИС семейства Spartan-3

На рис. 70 показана обобщенная структура выходного DDR-триггера, обеспечивающего возможность передачи данных с удвоенной скоростью, который конфигурируется на базе ресурсов блоков ввода/вывода в кристаллах программируемой логики рассматриваемого семейства.



Рис. 70. Структура выходного DDR-триггера, конфигурируемого на базе ресурсов блоков ввода/вывода ПЛИС семейства Spartan-3

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).



Рис. 71. Условный графический образ входного DDR-триггера с асинхронным сбросом, асинхронной установкой и входом разрешения тактового сигнала

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.



Рис. 72. Условный графический образ входного DDR-триггера с синхронным сбросом, синхронной установкой и входом разрешения тактового сигнала

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).



Рис. 73. Условный графический образ выходного DDR-триггера с асинхронным сбросом, асинхронной установкой и входом разрешения тактового сигнала

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.



Рис. 74. Условный графический образ выходного DDR-триггера с асинхронным сбросом, асинхронной установкой, входом разрешения тактового сигнала и тристабильным выходом

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) для реализации передачи выходных данных с удвоенной скоростью.



Рис. 75. Условный графический образ выходного DDR-триггера с синхронным сбросом, синхронной установкой и входом разрешения тактового сигнала

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.



Рис. 76. Условный графический образ выходного DDR-триггера с синхронным сбросом, синхронной установкой, входом разрешения тактового сигнала и тристабильным выходом

Папки 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).



Рис. 77. Условный графический образ буферного элемента с дифференциальными входами, реализуемого на базе ПЛИС семейства Spartan-3

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.



Рис. 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).



Рис. 79. Условный графический образ буферного элемента с дифференциальными выходами

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.



Рис. 80. Условный графический образ внутреннего подтягивающего резистора, подключенного к общей цепи («земле»)

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).

Продолжение следует.

Литература

  1. Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx / Справочное пособие. М.: Горячая линия – Телеком, 2004.
  2. Бибило П. Н. Основы языка VHDL. М.: Солон-Р, 2000.
  3. Бибило П. Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.
  4. Уэйкерли Дж. Ф. Проектирование цифровых устройств. Том 1. М.: Постмаркет, 2002.
  5. Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. М.: СолонПресс, 2003.
  6. Зотов В. Инструментальный комплект Spartan-3 Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 7.
  7. Зотов В. Новый инструментальный комплект Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2006. № 10.
  8. Зотов В. Новый инструментальный комплект Spartan-3A Starter Kit для практического освоения методов проектирования и отладки цифровых устройств с аппаратной и программной реализацией операций, реализуемых на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2007. № 9.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке