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

Опрос

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

Реклама

 

2012 №3

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

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


Продолжение. Начало в № 2`2010.

В 26‑й части статьи мы продолжаем знакомиться с образцами VHDL-описаний элементов, выполненных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. В этой части представлены шаблоны описаний компонентов, предназначенных для формирования и распределения тактовых сигналов, а также для осуществления операций периферийного сканирования и обратного чтения конфигурационных данных в ПЛИС серии Virtex-6. Кроме того, здесь же рассмотрены образцы описаний функциональных моделей конфигурационных интерфейсов и элементов входной и выходной задержки, используемых в кристаллах перечисленных семейств.

Base Mixed Mode Clock Manager (MMCM_BASE) является образцом описания базового варианта конфигурирования комбинированного модуля управления синхронизацией Mixed-Mode Clock Manager (MMCM), представленного в составе архитектуры кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Этот шаблон позволяет задействовать только наиболее часто востребованные функциональные возможности модуля MMCM ПЛИС серии Virtex-6:

-- MMCM_BASE : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (MMCM_BASE_inst) and/or the port declarations after the
-- code : “=>” declaration 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---->
--
-- MMCM_BASE: Base Mixed Mode Clock Manager
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
MMCM_BASE_inst : MMCM_BASE
generic map (
BANDWIDTH => “OPTIMIZED”, -- Jitter programming (“HIGH”,”LOW”,”OPTIMIZED”)
CLKFBOUT_MULT_F => 5.0, -- Multiply value for all CLKOUT (5.0-64.0).
CLKFBOUT_PHASE => 0.0, -- Phase offset in degrees of CLKFB (0.00-360.00).
CLKIN1_PERIOD => 0.0, -- Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz).
CLKOUT0_DIVIDE_F => 1.0, -- Divide amount for CLKOUT0 (1.000-128.000).
-- CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for each CLKOUT (0.01-0.99).
CLKOUT0_DUTY_CYCLE => 0.5,
CLKOUT1_DUTY_CYCLE => 0.5,
CLKOUT2_DUTY_CYCLE => 0.5,
CLKOUT3_DUTY_CYCLE => 0.5,
CLKOUT4_DUTY_CYCLE => 0.5,
CLKOUT5_DUTY_CYCLE => 0.5,
CLKOUT6_DUTY_CYCLE => 0.5,
-- CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for each CLKOUT (-360.000-360.000).
CLKOUT0_PHASE => 0.0,
CLKOUT1_PHASE => 0.0,
CLKOUT2_PHASE => 0.0,
CLKOUT3_PHASE => 0.0,
CLKOUT4_PHASE => 0.0,
CLKOUT5_PHASE => 0.0,
CLKOUT6_PHASE => 0.0,
-- CLKOUT1_DIVIDE - CLKOUT6_DIVIDE: Divide amount for each CLKOUT (1-128)
CLKOUT1_DIVIDE => 1,
CLKOUT2_DIVIDE => 1,
CLKOUT3_DIVIDE => 1,
CLKOUT4_DIVIDE => 1,
CLKOUT5_DIVIDE => 1,
CLKOUT6_DIVIDE => 1,
CLKOUT4_CASCADE => FALSE, -- Cascase CLKOUT4 counter with CLKOUT6 (TRUE/FALSE)
CLOCK_HOLD => FALSE, -- Hold VCO Frequency (TRUE/FALSE)
DIVCLK_DIVIDE => 1, -- Master division value (1-80)
REF_JITTER1 => 0.0, -- Reference input jitter in UI (0.000-0.999).
STARTUP_WAIT => FALSE -- Not supported. Must be set to FALSE.
)
port map (
-- Clock Outputs: 1-bit (each) output: User configurable clock outputs
CLKOUT0 => CLKOUT0, -- 1-bit output: CLKOUT0 output
CLKOUT0B => CLKOUT0B, -- 1-bit output: Inverted CLKOUT0 output
CLKOUT1 => CLKOUT1, -- 1-bit output: CLKOUT1 output
CLKOUT1B => CLKOUT1B, -- 1-bit output: Inverted CLKOUT1 output
CLKOUT2 => CLKOUT2, -- 1-bit output: CLKOUT2 output
CLKOUT2B => CLKOUT2B, -- 1-bit output: Inverted CLKOUT2 output
CLKOUT3 => CLKOUT3, -- 1-bit output: CLKOUT3 output
CLKOUT3B => CLKOUT3B, -- 1-bit output: Inverted CLKOUT3 output
CLKOUT4 => CLKOUT4, -- 1-bit output: CLKOUT4 output
CLKOUT5 => CLKOUT5, -- 1-bit output: CLKOUT5 output
CLKOUT6 => CLKOUT6, -- 1-bit output: CLKOUT6 output
-- Feedback Clocks: 1-bit (each) output: Clock feedback ports
CLKFBOUT => CLKFBOUT, -- 1-bit output: Feedback clock output
CLKFBOUTB => CLKFBOUTB, -- 1-bit output: Inverted CLKFBOUT output
-- Status Port: 1-bit (each) output: MMCM status ports
LOCKED => LOCKED, -- 1-bit output: LOCK output
-- Clock Input: 1-bit (each) input: Clock input
CLKIN1 => CLKIN1,
-- Control Ports: 1-bit (each) input: MMCM control ports
PWRDWN => PWRDWN, -- 1-bit input: Power-down input
RST => RST, -- 1-bit input: Reset input
-- Feedback Clocks: 1-bit (each) input: Clock feedback ports
CLKFBIN => CLKFBIN -- 1-bit input: Feedback clock input
);
-- End of MMCM_BASE_inst instantiation

Основу приведенной конструкции составляет оператор создания экземпляра библиотечного примитива MMCM_BASE, который соответствует базовому варианту конфигурирования комбинированного модуля управления синхронизацией MMCM. В этом библиотечном примитиве используются те же параметры настройки и система условных обозначений входных и выходных портов, что и в шаблоне Advanced Mixed Mode Clock Manager (MMCM_ADV), рассмотренном в предыдущей части статьи.

На рис. 411 показан условный графический образ элемента, представляющего базовый вариант конфигурирования комбинированного модуля управления синхронизацией MMCM в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, для подготовки описания которого используется шаблон Base Mixed Mode Clock Manager (MMCM_BASE).

Образ модуля управления синхронизацией, формируемого с помощью шаблона Base Mixed Mode Clock Manager

Рис. 411. Условный графический образ модуля управления синхронизацией, формируемого с помощью шаблона Base Mixed Mode Clock Manager (MMCM_BASE)

Элементы, формируемые с помощью библиотечного примитива MMCM_BASE, применяются чаще всего для устранения временных перекосов при распространении сигналов синхронизации, синтеза тактовых сигналов с требуемым значением частоты и фазового сдвига, а также снижения уровня джиттера сигналов синхронизации в ПЛИС серии Virtex-6. На рис. 412 изображена типовая схема включения элемента, создаваемого с помощью шаблона Base Mixed Mode Clock Manager (MMCM_BASE), используемая для ликвидации расхождения фронтов тактовых сигналов в разрабатываемых устройствах.

Схема включения элемента, создаваемого с помощью примитива MMCM_BASE

Рис. 412. Схема включения элемента, создаваемого с помощью примитива MMCM_BASE, используемая для устранения расхождения фронтов тактовых сигналов

Применение элементов, формируемых с помощью указанного шаблона, для синтеза сигналов синхронизации с заданными значениями частоты и фазового сдвига или снижения уровня джиттера тактовых сигналов наглядно поясняет структурная схема, приведенная на рис. 413.

Схема включения элемента, создаваемого с помощью примитива MMCM_BASE

Рис. 413. Схема включения элемента, создаваемого с помощью примитива MMCM_BASE, применяемая для синтеза тактовых сигналов или снижения уровня джиттера

Элементы, создаваемые с помощью шаблона Base Mixed Mode Clock Manager (MMCM_BASE), можно также эффективно использовать для организации разветвления сигналов синхронизации, предназначенных для тактирования различных компонентов, расположенных на печатной плате разрабатываемого устройства. Блок синхронизации, структурная схема которого представлена на рис. 414, обеспечивает формирование требуемого количества экземпляров тактовых сигналов без временных перекосов.

Схема включения элемента, создаваемого с помощью примитива MMCM_BASE

Рис. 414. Схема включения элемента, создаваемого с помощью примитива MMCM_BASE, используемая для организации разветвления сигналов синхронизации

Для расширения диапазона частот синтезируемых сигналов применяется каскадное соединение двух комбинированных модулей управления синхронизацией MMCM, входящих в состав одного блока CMT кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. На рис. 415 приведен пример структурной схемы, предоставляющей возможность формирования сигналов синхронизации с расширенным диапазоном частот, которая выполнена на основе каскадного соединения двух элементов, создаваемых с помощью шаблона Base Mixed Mode Clock Manager (MMCM_BASE).

Схема каскадного соединения двух модулей управления синхронизацией

Рис. 415. Схема каскадного соединения двух модулей управления синхронизацией, формируемых с помощью шаблона Base Mixed Mode Clock Manager (MMCM_BASE)

Значение частоты тактовых сигналов, формируемых на выходах счетчиков/делителей CLKOUT0–CLKOUT6 первого модуля управления синхронизацией MMCM (MMCM1), вычисляется в соответствии с формулой (4). Для определения значения частоты тактовых сигналов на аналогичных выходах второго модуля MMCM (MMCM2) необходимо воспользоваться следующим выражением:

где FOiMMCM1 — значение частоты сигнала на выходе счетчика/делителя CLKOUTi первого модуля управления синхронизацией (MMCM1); FOiMMCM2 — значение частоты сигнала на выходе счетчика/делителя CLKOUTi второго модуля управления синхронизацией (MMCM2); CLKFBOUT_MULT_FMMCM2, DIVCLK_DIVIDEMMCM2, CLKOUTi_DIVIDEMMCM2 — параметры, задающие значение коэффициента деления частоты для модуля MMCM2.

При подстановке выражения, определяющего значение частоты выходных сигналов модуля MMCM1, в формулу (5) она преобразуется к виду:

где FCLKIN — значение частоты входного сигнала синхронизации; CLKFBOUT_MULT_FMMCM1, DIVCLK_DIVIDEMMCM1, CLKOUTi_DIVIDEMMCM1 — параметры, задающие значение коэффициента деления частоты для первого модуля управления синхронизацией (MMCM1).

Differential Clock Input for Memory Interface Clocks (BUFIODQS) представляет собой шаблон описания входного буферного элемента для сигнала синхронизации с поддержкой функции блокировки выходного тактового сигнала. Компоненты, для подготовки описания которых используется этот шаблон, предназначены, прежде всего, для применения в составе высокоскоростных интерфейсов памяти, реализуемых на базе ПЛИС серии Virtex-6. В основе этого шаблона — оператор создания экземпляра библиотечного примитива BUFIODQS:

-- BUFIODQS : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (BUFIODQS_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- BUFIODQS: Differential Clock Input for Memory Interface Clocks
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
BUFIODQS_inst : BUFIODQS
generic map (
DQSMASK_ENABLE => FALSE -- Enables the squelch circuitry
)
port map (
O => O, -- 1-bit output: Clock output port
DQSMASK => DQSMASK, -- 1-bit input: “squelch” the I/O clock after a given burst length from strobe
I => I -- 1-bit input: Clock input port
);
-- End of BUFIODQS_inst instantiation

В библиотечном примитиве BUFIODQS предусмотрен единственный параметр настройки DQSMASK_ENABLE, который позволяет задействовать в составе формируемого элемента схему подавления тактового сигнала после приема или передачи пакета данных. По умолчанию для этого параметра предлагается значение FALSE, при котором функция блокировки сигнала синхронизации не используется.

Система условных обозначений входных и выходных портов, применяемых в описании интерфейса буферных элементов, формируемых с помощью шаблона Differential Clock Input for Memory Interface Clocks (BUFIODQS), включает в себя следующие идентификаторы:

  • O — выход тактового сигнала;
  • DQSMASK — вход блокировки тактового сигнала;
  • I — вход сигнала синхронизации.

Условный графический образ входного буферного элемента тактового сигнала, используемого в составе интерфейсов памяти, реализуемых на базе кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, для подготовки описания которого применяется шаблон Differential Clock Input for Memory Interface Clocks (BUFIODQS), приведен на рис. 416.

Образ буферного элемента, формируемого с помощью шаблона Differential Clock Input for Memory Interface Clocks

Рис. 416. Условный графический образ буферного элемента, формируемого с помощью шаблона Differential Clock Input for Memory Interface Clocks (BUFIODQS)

Differential Input Global Clock Buffer (IBUFGDS) включает в себя образец описания входного глобального буферного элемента, предназначенного для подключения внешних дифференциальных тактовых сигналов в проектируемых устройствах, выполняемых на основе ПЛИС серии Virtex-6:

-- IBUFGDS : 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 (IBUFGDS_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--->
--
-- IBUFGDS: Differential Global Clock Buffer (sourced by an external pin)
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
IBUFGDS_inst : IBUFGDS
generic map (
IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for refernced I/O standards
IOSTANDARD => “DEFAULT”
)
port map (
O => O, -- Clock buffer output
I => I, -- Diff_p clock buffer input
IB => IB -- Diff_n clock buffer input
);
-- End of IBUFGDS_inst instantiation

В качестве основы приведенного шаблона используется оператор создания экземпляра библиотечного примитива IBUFGDS, в котором предусмотрены следующие параметры настройки:

  • IBUF_LOW_PWR — позволяет задействовать режим пониженного энергопотребления в формируемом элементе.
  • IOSTANDARD — указывает на используемый дифференциальный стандарт ввода/вывода.

В состав системы условных обозначений входов и выходов, используемых в описании интерфейса глобальных буферных элементов дифференциальных тактовых сигналов, формируемых с помощью шаблона Differential Input Global Clock Buffer (IBUFGDS), входят следующие идентификаторы:

  • O — выход глобального буферного элемента;
  • I — прямой вход дифференциальной пары сигналов;
  • IB — инверсный вход дифференциальной пары сигналов.

Условный графический образ входного глобального буферного элемента с дифференциальными входами, описание которого создается с помощью рассматриваемого шаблона для последующего использования в проектах цифровых устройств, разрабатываемых на базе кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, совпадает с изображением, представленным на рис. 54.

HROW Clock Buffer for a Single Clocking Region with Clock Enable (BUFHCE) содержит шаблон VHDL-описания буферного элемента со входом разрешения сигнала синхронизации, предоставляющего доступ к горизонтальным линиям передачи тактовых сигналов HCLK ROW в пределах одного региона ПЛИС серии Virtex-6.

Вся площадь каждого кристалла программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT разделена на несколько регионов, количество которых — от 6 до 18, в зависимости от объема ресурсов ПЛИС. Вертикальный размер каждого региона ограничен 40 конфигурируемыми логическими блоками CLB, а горизонтальный — половиной ширины кристалла. В состав каждого региона входят 40 блоков ввода/вывода. В центре каждого региона проходят горизонтальные линии передачи тактовых сигналов (Horizontal Clock Row, HCLK ROW), доступ к которым предоставляют буферные элементы BUFH. С каждой горизонтальной магистралью HCLK ROW кристаллов программируемой логики перечисленных семейств сопряжено 12 буферных элементов BUFH (рис. 417), которые поддерживают два варианта конфигурирования — без входа разрешения синхронизации или с указанным входом.

Расположение горизонтальных магистралей тактовых сигналов

Рис. 417. Расположение горизонтальных магистралей тактовых сигналов в пределах одного региона ПЛИС серии Virtex-6

Для подготовки описания буферного элемента BUFH без входа разрешения сигнала синхронизации предусмотрен одноименный библиотечный примитив, на основании экземпляра которого выполнен шаблон HROW Clock Buffer for a Single Clocking Region (BUFH). Текст этого шаблона по существу не отличается от аналогичной конструкции, предназначенной для ПЛИС серии Spartan-6, которая была рассмотрена в 17-й части статьи. Для формирования описания буферного элемента BUFH со входом разрешения сигнала синхронизации предлагается библиотечный примитив BUFHCE, оператор создания экземпляра которого образует основу рассматриваемого шаблона:

-- BUFHCE : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (BUFHCE_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- BUFHCE: HROW Clock Buffer for a Single Clocking Region with Clock Enable
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
BUFHCE_inst : BUFHCE
generic map (
INIT_OUT => 0 -- Initial output value
)
port map (
O => O, -- 1-bit output: Clock output
CE => CE, -- 1-bit input: Active high enable input
I => I -- 1-bit input: Clock input
);
-- End of BUFHCE_inst instantiation

В библиотечном примитиве BUFHCE используется единственный настраиваемый параметр INIT_OUT, значение которого определяет начальное состояние выходного сигнала. По умолчанию этому параметру присваивается нулевое значение.

Система условных обозначений входов и выходов, применяемых в описании интерфейса буферных элементов BUFH со входом разрешения сигнала синхронизации, создаваемых с помощью библиотечного примитива BUFHCE, включает в себя следующие идентификаторы:

  • O — выход буферного элемента;
  • CE — вход сигнала разрешения синхронизации;
  • I — вход тактового сигнала.

На рис. 418 приведен условный графический образ буферного элемента BUFH со входом разрешения сигнала синхронизации, описание которого формируется на основе шаблона HROW Clock Buffer for a Single Clocking Region with Clock Enable (BUFHCE) для последующего использования в составе устройств, реализуемых на базе ПЛИС серии Virtex-6.

Образ буферного элемента, формируемого с помощью шаблона HROW Clock Buffer

Рис. 418. Условный графический образ буферного элемента, формируемого с помощью шаблона HROW Clock Buffer for a Single Clocking Region with Clock Enable (BUFHCE)

32-bit non-volatile design ID (EFUSE_USR) представляет собой образец VHDL-описания элемента, обеспечивающего доступ к энергонезависимому регистру eFUSE кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. В ПЛИС перечисленных семейств разработчику предоставляется возможность записи уникального 32-разрядного двоичного кода, который сохраняется при отключении питания. Данные, сохраняемые в энергонезависимом регистре eFUSE, можно использовать в качестве идентификационного кода проекта, реализуемого в конкретном кристалле программируемой логики серии Virtex-6. Доступ к этому коду предоставляет библиотечный примитив EFUSE_USR, на его основе выполнен рассматриваемый шаблон:

-- EFUSE_USR : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (EFUSE_USR_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- EFUSE_USR: 32-bit non-volatile design ID
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
EFUSE_USR_inst : EFUSE_USR
generic map (
SIM_EFUSE_VALUE => X“00000000” -- Value of the 32-bit non-volatile design ID used in simulation
)
port map (
EFUSEUSR => EFUSEUSR -- 32-bit output: User E-Fuse register value output
);
-- End of EFUSE_USR_inst instantiation

В библиотечном примитиве EFUSE_USR предусмотрен настраиваемый параметр SIM_EFUSE_VALUE, значение которого позволяет определить идентификационный код проекта при моделировании разрабатываемого устройства. Система условных обозначений интерфейсных портов указанного библиотечного примитива содержит идентификатор выходной 32-разрядной шины данных, на которой отображается значение идентификационного кода, хранящегося в энергонезависимом регистре eFUSE.

Условный графический образ элемента, предоставляющего доступ к энергонезависимому регистру eFUSE кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, для подготовки описания которого используется шаблон 32-bit non-volatile design ID (EFUSE_USR), показан на рис. 419.

Образ элемента, формируемого с помощью шаблона 32-bit non-volatile design ID

Рис. 419. Условный графический образ элемента, формируемого с помощью шаблона 32-bit non-volatile design ID (EFUSE_USR)

Boundary Scan (BSCAN_VIRTEX6) является шаблоном описания компонента, предназначенного для осуществления операций периферийного сканирования в ПЛИС серии Virtex-6. Основу этого шаблона образует оператор создания экземпляра библиотечного элемента BSCAN_VIRTEX6:

-- BSCAN_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (BSCAN_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- BSCAN_VIRTEX6: Boundary Scan
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
BSCAN_VIRTEX6_inst : BSCAN_VIRTEX6
generic map (
DISABLE_JTAG => FALSE, -- This attribute is unsupported. Please leave it at default.
JTAG_CHAIN => 1 -- Value for USER command. Possible values: (1,2,3 or 4).
)
port map (
CAPTURE => CAPTURE, -- 1-bit output: CAPTURE output from TAP controller
DRCK => DRCK, -- 1-bit output: Data register output for USER functions
RESET => RESET, -- 1-bit output: Reset output for TAP controller
RUNTEST => RUNTEST, -- 1-bit output: State output asserted when TAP controller is in Run Test Idle state.
SEL => SEL, -- 1-bit output: USER active output
SHIFT => SHIFT, -- 1-bit output: SHIFT output from TAP controller
TCK => TCK, -- 1-bit output: Scan Clock output. Fabric connection to TAP Clock pin.
TDI => TDI, -- 1-bit output: TDI output from TAP controller
TMS => TMS, -- 1-bit output: Test Mode Select input. Fabric connection to TAP.
UPDATE => UPDATE, -- 1-bit output: UPDATE output from TAP controller
TDO => TDO -- 1-bit input: Data input for USER function
);
-- End of BSCAN_VIRTEX6_inst instantiation

В библиотечном примитиве BSCAN_VIRTEX6 предусмотрены следующие параметры настройки:

  • DISABLE_JTAG — не поддерживается текущей версией средств проектирования (следует использовать значение FALSE, предлагаемое по умолчанию).
  • JTAG_CHAIN — указывает номер цепочки периферийного сканирования, для управления которой применяется создаваемый компонент.

Система условных обозначений входных и выходных портов, используемых в описании интерфейса компонентов, формируемых с помощью шаблона Boundary Scan (BSCAN_VIRTEX6), включает в себя идентификаторы, представленные при рассмотрении шаблона JTAG Boundary Scan Logic Control Circuit (BSCAN_SPARTAN6) в 17-й части статьи.

На рис. 420 приведен условный графический образ компонента, с помощью которого можно выполнить операции периферийного сканирования в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Его описание формируется на основе шаблона Boundary Scan (BSCAN_VIRTEX6).

Образ компонента, предназначенного для организации периферийного сканирования в ПЛИС серии Virtex-6

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

Configuration Data Access (USR_ACCESS_VIRTEX6) включает в себя образец VHDL-описания 32-разрядного регистра, предоставляющего прямой доступ к данным конфигурационной последовательности в составе проектов, реализуемых на базе ПЛИС серии Virtex-6. Основой этого шаблона является оператор создания экземпляра библиотечного примитива USR_ACCESS_VIRTEX6:

-- USR_ACCESS_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (USR_ACCESS_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- USR_ACCESS_VIRTEX6: Configuration Data Access
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
USR_ACCESS_VIRTEX6_inst : USR_ACCESS_VIRTEX6
port map (
CFGCLK => CFGCLK, -- 1-bit output: Configuration Clock output
DATA => DATA, -- 32-bit output: Configuration Data output
DATAVALID => DATAVALID -- 1-bit output: Active high data valid output
);
-- End of USR_ACCESS_VIRTEX6_inst instantiation

В состав системы условных обозначений выходных портов, применяемых в описании интерфейса библиотечного примитива USR_ACCESS_VIRTEX6, входят те же идентификаторы, что и в шаблоне Config Data Access (USR_ACCESS_VIRTEX5), рассмотренном в 23-й части статьи.

Условный графический образ 32-разрядного регистра, обеспечивающего прямой доступ к данным конфигурационной последовательности в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, описание которого создается с помощью шаблона Configuration Data Access (USR_ACCESS_VIRTEX6), приведен на рис. 421.

Образ компонента, формируемого с помощью шаблона Configuration Data Access

Рис. 421. Условный графический образ компонента, формируемого с помощью шаблона Configuration Data Access (USR_ACCESS_VIRTEX6)

Configuration Frame Error Correction (FRAME_ECC_VIRTEX6) предоставляет шаблон VHDL-описания компонента, предназначенного для контроля наличия ошибок в процессе обратного чтения блока конфигурационных данных из ПЛИС серии Virtex-6. Схема обнаружения ошибок Frame ECC logic, присутствующая в составе кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, обеспечивает поддержку возможности выявления искажения одного или двух бит данных в считываемом блоке конфигурационной последовательности. Для подготовки описания компонента, конфигурируемого на базе этой логики, предусмотрен библиотечный примитив FRAME_ECC_VIRTEX6, оператор создания экземпляра которого составляет основу рассматриваемого шаблона:

-- FRAME_ECC_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (FRAME_ECC_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- FRAME_ECC_VIRTEX6: Configuration Frame Error Correction
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
FRAME_ECC_VIRTEX6_inst : FRAME_ECC_VIRTEX6
generic map (
FARSRC => “EFAR”, -- Determines if the output of FAR[23:0] configuration register points
-- to the FAR or EFAR. Sets configuration option register bit CTL0[7].
FRAME_RBT_IN_FILENAME => “NONE” -- This file is output by the ICAP_VIRTEX6 model and it contains Frame
-- Data information for the Raw Bitstream (RBT) file. The FRAME_ECC
-- model will parse this file, calculate ECC and output any error
-- conditions.
)
port map (
CRCERROR => CRCERROR, -- 1-bit output: Output indicating a CRC error
ECCERROR => ECCERROR, -- 1-bit output: Output indicating an ECC error
ECCERRORSINGLE => ECCERRORSINGLE, -- 1-bit output: Output Indicating single-bit Frame ECC error detected.
FAR => FAR, -- 24-bit output: Frame Address Register Value output
SYNBIT => SYNBIT, -- 5-bit output: Output bit address of error
SYNDROME => SYNDROME, -- 13-bit output: Output location of erroneous bit
SYNDROMEVALID => SYNDROMEVALID, -- 1-bit output: Frame ECC output indicating the SYNDROME output is valid.
SYNWORD => SYNWORD -- 7-bit output: Word output in the frame where an ECC error has been detected
);
-- End of FRAME_ECC_VIRTEX6_inst instantiation

В библиотечном примитиве FRAME_ECC_VIRTEX6 используется следующая совокупность настраиваемых параметров:

  • FARSRC — указывает конфигурационный регистр, адрес которого отображается на выходной шине FAR.
  • FRAME_RBT_IN_FILENAME — предоставляет возможность определения названия файла данных, используемого в процессе моделирования схемы обнаружения ошибок.

Система условных обозначений выходных портов, используемых в описании интерфейса компонента, формируемого с помощью шаблона Configuration Frame Error Correction (FRAME_ECC_VIRTEX6), содержит следующие идентификаторы:

  • CRCERROR — выход сигнала, информирующего об обнаружении ошибки конфигурационных данных в процессе их контроля с помощью циклического избыточного кода CRC.
  • ECCERROR — выход сигнала, сообщающего о наличии или отсутствии ошибочных разрядов в составе считанного блока конфигурационных данных.
  • ECCERRORSINGLE — выход сигнала, информирующего о присутствии одиночной ошибки (одного искаженного бита) в считанном блоке конфигурационных данных.
  • FAR — выходная 24-разрядная шина, на которую выводится адрес регистра, содержащего значение контрольной суммы или ошибочный бит конфигурационных данных (в зависимости от выбранного значения параметра FARSRC).
  • SYNBIT — выходная 5-разрядная шина, на которой отображается номер ошибочного бита в 32-разрядном слове конфигурационных данных.
  • SYNDROME — выходная 13-разрядная шина, совокупность значений сигналов которой указывает расположение ошибочных разрядов в считанном блоке данных.
  • SYNDROMEVALID — выход сигнала, уведомляющего о достоверности результатов контроля блока конфигурационных данных.
  • SYNWORD — выходная 7-разрядная шина, на которой отображается адрес 32-разряд-ного слова, содержащего ошибочный бит, в блоке конфигурационных данных.

Условный графический образ компонента, описание которого создается на основе шаблона Configuration Frame Error Correction (FRAME_ECC_VIRTEX6) для организации контроля считываемых конфигурационных данных в ПЛИС серии Virtex-6, представлен на рис. 422.

Образ элемента, формируемого с помощью шаблона Configuration Frame Error Correction

Рис. 422. Условный графический образ элемента, формируемого с помощью шаблона Configuration Frame Error Correction (FRAME_ECC_VIRTEX6)

Internal Configuration Access Port (ICAP_VIRTEX6) содержит образец описания внутреннего порта конфигурационного интерфейса кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, предоставляющего возможность доступа к конфигурационным регистрам ПЛИС и обратного чтения данных. Основой этого шаблона является оператор создания экземпляра библиотечного примитива ICAP_VIRTEX6, который представляет внутренний порт конфигурационного интерфейса, подобного SelectMAP [57]:

-- ICAP_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (ICAP_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- ICAP_VIRTEX6: Internal Configuration Access Port
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
ICAP_VIRTEX6_inst : ICAP_VIRTEX6
generic map (
DEVICE_ID => X“4244093”, -- Specifies the pre-programmed Device ID value
ICAP_WIDTH => “X8”, -- Specifies the input and output data width to be used with the
-- ICAP_VIRTEX6.
SIM_CFG_FILE_NAME => “NONE” -- Specifies the Raw Bitstream (RBT) file to be parsed by the simulation model
)
port map (
BUSY => BUSY, -- 1-bit output: Busy/Ready output
O => O, -- 32-bit output: Configuration data output bus
CLK => CLK, -- 1-bit input: Clock Input
CSB => CSB, -- 1-bit input: Active-Low ICAP input Enable
I => I, -- 32-bit input: Configuration data input bus
RDWRB => RDWRB -- 1-bit input: Read/Write Select input
);
-- End of ICAP_VIRTEX6_inst instantiation

В библиотечном примитиве ICAP_VIRTEX6 используются следующие параметры настройки:

  • DEVICE_ID — указывает идентификационный код используемого типа кристалла программируемой логики.
  • ICAP_WIDTH — определяет разрядность данных, записываемых и считываемых из конфигурационных регистров.
  • SIM_CFG_FILE_NAME — позволяет указать идентификатор файла конфигурационной последовательности, применяемого в процессе моделирования проектируемого устройства.

В состав системы условных обозначений входных и выходных портов, используемых в описании интерфейса элемента, создаваемого с помощью шаблона Internal Configuration Access Port (ICAP_VIRTEX6), входят следующие идентификаторы:

  • BUSY — выход сигнала состояния Busy/Ready, используемого при выполнении операций чтения;
  • O — выходная 32-разрядная шина конфигурационных данных;
  • CLK — вход тактового сигнала внутреннего конфигурационного интерфейса;
  • CSB — вход сигнала разрешения внутреннего конфигурационного интерфейса, аналогичного сигналу CSI_B интерфейса SelectMAP;
  • I — входная 32-разрядная шина конфигурационных данных;
  • RDWRB — вход сигнала выбора выполняемой операции записи или чтения конфигурационной информации.

На рис. 423 изображен условный графический образ элемента, формируемого с помощью шаблона Internal Configuration Access Port (ICAP_VIRTEX6) для осуществления операций записи и чтения данных из конфигурационных регистров ПЛИС серии Virtex-6.

Образ компонента, создаваемого с помощью шаблона Internal Configuration Access Port

Рис. 423. Условный графический образ компонента, создаваемого с помощью шаблона Internal Configuration Access Port (ICAP_VIRTEX6)

JTAG Simulation Model (JTAG_SIM_VIRTEX6) включает в себя образец VHDL-описания элемента, предоставляющего возможность функционального моделирования контроллера порта JTAG-интерфейса в составе проектируемого устройства, реализуемого на базе кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива JTAG_SIM_VIRTEX6:

-- JTAG_SIM_VIRTEX6 : In order to incorporate this simulation model,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the architecture body of the testbench code.
-- declaration : This should not be instantiated into the synthesizable design
-- code : code.
-- : The instance name
-- : (JTAG_SIM_VIRTEX6_inst) and/or the port declarations after the
-- : “=>” assignment maybe changed to properly reference and connect this
-- : function to the design.
-- : Only one JTAG_SIM_VIRTEX6 should be
-- : instantiated per design.
-- : All inputs and output should 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--->
--
-- JTAG_SIM_VIRTEX6: JTAG Interface Simulation Model
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
JTAG_SIM_VIRTEX6_inst : JTAG_SIM_VIRTEX6
generic map (
PART_NAME => “LX75T”) -- Specify target V6 device. Possible values are:
-- “CX130T”,”CX195T”,”CX240T”,”CX75T”,”HX250T”,
-- “HX255T”,”HX380T”,”HX45T”,”HX565T”,
-- “LX115T”,”LX130T”,”LX130TL”,”LX195T”,
-- “LX195TL”,”LX240T”,”LX240TL”,”LX365T”,
-- “LX365TL”,”LX40T”,”LX550T”,”LX550TL”,
-- “LX75T”,”LX760”,”SX315T”,”SX475T”
port map (
TDO => TDO, -- JTAG data output (1-bit)
TCK => TCK, -- Clock input (1-bit)
TDI => TDI, -- JTAG data input (1-bit)
TMS => TMS -- JTAG command input (1-bit)
);
-- End of JTAG_SIM_VIRTEX6_inst instantiation

В библиотечном примитиве JTAG_SIM_VIRTEX6 используются те же условные обозначения интерфейсных портов и параметр настройки, что и в шаблоне JTAG Simulation Model (JTAG_SIM_VIRTEX4), рассмотренном в 21-й части статьи. Основное различие библиотечных примитивов JTAG_SIM_VIRTEX6 и JTAG_SIM_VIRTEX4 заключается в списке возможных вариантов значений параметра настройки PART_NAME. В шаблоне JTAG Simulation Model (JTAG_SIM_VIRTEX6) в этот список входят варианты сокращенных условных обозначений ПЛИС серии Virtex-6.

Условный графический образ компонента, формируемого с помощью библиотечного примитива JTAG_SIM_VIRTEX6 для применения в процессе функционального моделирования контроллера порта JTAG-интерфейса в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, приведен на рис. 424.

Образ компонента, формируемого с помощью шаблона JTAG Simulation Model

Рис. 424. Условный графический образ компонента, формируемого с помощью шаблона JTAG Simulation Model (JTAG_SIM_VIRTEX6)

Register Capture (CAPTURE_VIRTEX6) содержит шаблон описания элемента, применяемого для организации обратного чтения конфигурационных данных из ПЛИС серии Virtex-6. Основой этого шаблона является оператор создания экземпляра библиотечного примитива CAPTURE_VIRTEX6:

-- CAPTURE_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (CAPTURE_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- CAPTURE_VIRTEX6: Register Capture
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
CAPTURE_VIRTEX6_inst : CAPTURE_VIRTEX6
generic map (
ONESHOT => TRUE -- Specifies the procedure for performing single readback per CAP trigger.
)
port map (
CAP => CAP, -- 1-bit input: Capture Input
CLK => CLK -- 1-bit input: Clock Input
);
-- End of CAPTURE_VIRTEX6_inst instantiation

В библиотечном примитиве CAPTURE_VIRTEX6 используется тот же параметр настройки и система условных обозначений входных портов, что и в шаблоне CAPTURE (CAPTURE_VIRTEX4), который был рассмотрен в 21-й части статьи.

На рис. 425 приведен условный графический образ элемента, предоставляющего возможность выполнения операций обратного чтения конфигурационных данных в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, описание которого формируется на основе шаблона Register CAPTURE (CAPTURE_VIRTEX6).

Образ элемента, создаваемого с помощью шаблона Register CAPTURE

Рис. 425. Условный графический образ элемента, создаваемого с помощью шаблона Register CAPTURE (CAPTURE_VIRTEX6)

STARTUP Block (STARTUP_VIRTEX6) — это образец описания компонента, используемого для организации управления глобальными цепями сброса/установки и переключения выходов ПЛИС серии Virtex-6 в высокоимпедансное состояние, а также для выбора сигнала синхронизации, необходимого для активизации логических ресурсов в процессе конфигурирования кристалла. В качестве основы этого шаблона применяется оператор создания экземпляра библиотечного примитива STARTUP_VIRTEX6:

-- STARTUP_VIRTEX6 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (STARTUP_VIRTEX6_inst) and/or the port declarations after the
-- code : “=>” declaration 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--->
--
-- STARTUP_VIRTEX6: STARTUP Block
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
STARTUP_VIRTEX6_inst : STARTUP_VIRTEX6
generic map (
PROG_USR => FALSE -- Activate program event security feature. Requires encrypted bitstreams.
)
port map (
CFGCLK => CFGCLK, -- 1-bit output: Configuration main clock output
CFGMCLK => CFGMCLK, -- 1-bit output: Configuration internal oscillator clock output
DINSPI => DINSPI, -- 1-bit output: DIN SPI PROM access output
EOS => EOS, -- 1-bit output: Active high output signal indicating the End Of Configuration.
PREQ => PREQ, -- 1-bit output: PROGRAM request to fabric output
TCKSPI => TCKSPI, -- 1-bit output: TCK configuration pin access output
CLK => CLK, -- 1-bit input: User start-up clock input
GSR => GSR, -- 1-bit input: Global Set/Reset input (GSR cannot be used for the port name)
GTS => GTS, -- 1-bit input: Global 3-state input (GTS cannot be used for the port name)
KEYCLEARB => KEYCLEARB, -- 1-bit input: Clear AES Decrypter Key input from Battery-Backed RAM (BBRAM)
PACK => PACK, -- 1-bit input: PROGRAM acknowledge input
USRCCLKO => USRCCLKO, -- 1-bit input: User CCLK input
USRCCLKTS => USRCCLKTS, -- 1-bit input: User CCLK 3-state enable input
USRDONEO => USRDONEO, -- 1-bit input: User DONE pin output control
USRDONETS => USRDONETS -- 1-bit input: User DONE 3-state enable output
);
-- End of STARTUP_VIRTEX6_inst instantiation

В библиотечном примитиве STARTUP_VIRTEX6 предусмотрен настраиваемый параметр PROG_USR, который предоставляет возможность активизации функции защиты конфигурационных данных.

Система условных обозначений входных и выходных портов, используемых в описании интерфейса компонента, формируемого с помощью шаблона STARTUP Block (STARTUP_VIRTEX6), включает в себя следующие идентификаторы:

  • CFGCLK — выход основного сигнала синхронизации, предназначенного для тактирования процесса конфигурирования логических ресурсов ПЛИС.
  • CFGMCLK — выход внутреннего генератора тактового сигнала с типовым значением частоты 50 МГц, который можно применять для конфигурирования кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.
  • DINSPI — выход сигнала, поступающего с вывода кристалла D_IN при использовании элементов конфигурационной памяти с интерфейсом SPI.
  • EOS — выход сигнала End Of Configuration, информирующего о завершении фазы Start-Up процесса конфигурирования ПЛИС.
  • PREQ — выход запроса переключения сигнала PROGRAM.
  • TCKSPI — выход сигнала, поступающего с вывода кристалла программируемой логики TCK при использовании элементов конфигурационного ППЗУ с интерфейсом SPI.
  • CLK — вход сигнала синхронизации, используемого при активизации логических ресурсов в процессе конфигурирования ПЛИС (на фазе Start-Up).
  • GSR — вход глобального сигнала сброса/установки триггеров в кристаллах программируемой логики перечисленных выше семейств.
  • GTS — вход глобального сигнала управления состоянием тристабильных выводов ПЛИС серии Virtex-6.
  • KEYCLEARB — вход сигнала очистки памяти Battery-Backed RAM (BBRAM), применяемой для хранения ключа шифрования конфигурационных данных AES Decrypter Key кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.
  • PACK — вход подтверждения сигнала PROGRAM.
  • USRCCLKO — вход сигнала, подаваемого на вывод CCLK.
  • USRCCLKTS — вход сигнала переключения вывода CCLK в высокоимпедансное состояние.
  • USRDONEO — вход сигнала, поступающего на вывод DONE.
  • USRDONETS — вход сигнала переключения вывода DONE в состояние высокого импеданса.

На рис. 426 представлен условный графический образ компонента, описание которого создается на основе шаблона STARTUP Block (STARTUP_VIRTEX6) для управления глобальными цепями сброса/установки и переключения выходов ПЛИС в состояние высокого импеданса, а также для выбора тактового сигнала при активизации ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

Образ компонента, создаваемого с помощью шаблона STARTUP Block

Рис. 426. Условный графический образ компонента, создаваемого с помощью шаблона STARTUP Block (STARTUP_VIRTEX6)

SelectMap Configuration Simulation Model (SIM_CONFIG_V6) представляет собой шаблон VHDL-описания поведенческой модели конфигурационного интерфейса SelectMap ПЛИС серии Virtex-6. В основе этого шаблона — оператор создания экземпляра библиотечного примитива SIM_CONFIG_V6:

-- SIM_CONFIG_V6 : 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 : (SIM_CONFIG_V6_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--->
--
-- SIM_CONFIG_V6: Behavioral Simulation-only Model of FPGA SelectMap Configuration
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
SIM_CONFIG_V6_inst : SIM_CONFIG_V6
generic map (
ICAP_SUPPORT => FALSE, -- Using ICAP, TRUE or FALSE
ICAP_WIDTH => “X8”, -- ICAP width, “X8”, “X16”, “X32”
-- Do not need to change/specify if
-- ICAP_SUPPORT-FALSE
DEVICE_ID => X“00000000”) -- Specifies the Pre-programmed Device ID value
port map (
BUSY => BUSY, -- 1-bit output Busy pin
CSOB => CSOB, -- 1-bit output chip select pin
DONE => DONE, -- 1-bit bi-directional Done pine
CCLK => CCLK, -- 1-bit input configuration clock
D => D, -- 8-bit bi-directional configuration data
INITB =>INITB, -- 1-bit bi-directional INIT status pin
M => M, -- 3-bit input Mode pins
PROGB => PROGB, -- 1-bit input Program pin
RDWRB => RDWRB -- 1-bit input Read/Write pin
);
-- End of SIM_CONFIG_V6_inst instantiation

В библиотечном примитиве SIM_CONFIG_V6 используются следующие параметры настройки:

  • ICAP_SUPPORT — определяет возможность поддержки внутреннего порта конфигурационного интерфейса Internal Configuration Access Port (ICAP), подобного SelectMap.
  • ICAP_WIDTH — указывает разрядность данных, записываемых и считываемых из конфигурационных регистров через внутренний порт конфигурационного интерфейса ICAP.
  • DEVICE_ID — принимает значение идентификационного кода используемого кристалла программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

В состав системы условных обозначений входных и выходных портов, используемых в описании интерфейса компонента, создаваемого с помощью библиотечного примитива SIM_CONFIG_V6, входят идентификаторы, представленные при рассмотрении шаблона Configuration Simulation Model (SIM_CONFIG_V5) в 23-й части статьи.

Условный графический образ компонента, предназначенного для моделирования параллельного конфигурационного интерфейса SelectMap ПЛИС серии Virtex-6, для подготовки описания которого применяется шаблон SelectMap Configuration Simulation Model (SIM_CONFIG_V6), изображен на рис. 427.

Образ компонента, формируемого с помощью шаблона SelectMap Configuration Simulation Model

Рис. 427. Условный графический образ компонента, формируемого с помощью шаблона SelectMap Configuration Simulation Model (SIM_CONFIG_V6)

Serial Configuration Simulation Model (SIM_CONFIG_V6_SERIAL) включает в себя образец описания поведенческой модели последовательного конфигурационного интерфейса кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива SIM_CONFIG_V6_SERIAL:

-- SIM_CONFIG_V6_SERIAL : 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 : (SIM_CONFIG_V6_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--->
--
-- SIM_CONFIG_V6_SERIAL: Behavioral Simulation-only Model of FPGA Serial Configuration
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
SIM_CONFIG_V6_SERIAL_inst : SIM_CONFIG_V6_SERIAL
generic map (
DEVICE_ID => X“00000000”) -- Specifies the Pre-programmed Device ID value
port map (
DONE => DONE, -- 1-bit bi-directional Done pine
CCLK => CCLK, -- 1-bit input configuration clock
DIN => DIN, -- 1-bit input configuration data
INITB =>INITB, -- 1-bit bi-directional INIT status pin
M => M, -- 3-bit input Mode pins
PROGB => PROGB -- 1-bit input Program pin
);
-- End of SIM_CONFIG_V6_SERIAL_inst instantiation

Параметр настройки DEVICE_ID и условные обозначения интерфейсных портов библиотечного примитива SIM_CONFIG_V6_SERIAL имеют то же предназначение, что и в шаблоне Serial Configuration Simulation Model (SIM_CONFIG_S6_SERIAL), рассмотренном в 18-й части статьи.

Условный графический образ компонента, формируемого с помощью шаблона Serial Configuration Simulation Model (SIM_CONFIG_V6_SERIAL) для последующего использования в процессе моделирования последовательного конфигурационного интерфейса в составе проектируемых устройств, реализуемых на базе ПЛИС серии Virtex-6, показан на рис. 428.

Образ компонента, формируемого с помощью шаблона Serial Configuration Simulation Model

Рис. 428. Условный графический образ компонента, формируемого с помощью шаблона Serial Configuration Simulation Model (SIM_CONFIG_V6_SERIAL)

Input and Output Fixed or Variable Delay Element (IODELAYE1) представляет собой шаблон описания элементов программируемой входной и выходной задержки, конфигурируемых на базе соответствующих аппаратных модулей ресурсов ввода/вывода SelectIO кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

-- IODELAYE1 : In order to incorporate this function into the design,
-- VHDL : the following instance declaration needs to be placed
-- instance : in the body of the design code. The instance name
-- declaration : (IODELAYE1_inst) and/or the port declarations after the
-- code : “=>” declaration 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;
--
-- Put the following attribute before the ‘begin’ statement
-- to specify the group name for associated IDELAY and IDELAYCTRLs
--
attribute IODELAY_GROUP : string;
attribute IODELAY_GROUP of <label_name>: label is “<iodelay_group_name>”;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- IODELAYE1: Input and Output Fixed or Variable Delay Element
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
IODELAYE1_inst : IODELAYE1
generic map (
CINVCTRL_SEL => FALSE, -- Enable dynamic clock inversion (“TRUE”/”FALSE”)
DELAY_SRC => “I”, -- Delay input (“I”, “CLKIN”, “DATAIN”, “IO”, “O”)
HIGH_PERFORMANCE_MODE => TRUE, -- Reduced jitter (“TRUE”), Reduced power (“FALSE”)
IDELAY_TYPE => “DEFAULT”, -- “DEFAULT”, “FIXED”, “VARIABLE”, or “VAR_LOADABLE”
IDELAY_VALUE => 0, -- Input delay tap setting (0-32)
ODELAY_TYPE => “FIXED”, -- “FIXED”, “VARIABLE”, or “VAR_LOADABLE”
ODELAY_VALUE => 0, -- Output delay tap setting (0-32)
REFCLK_FREQUENCY => 200.0, -- IDELAYCTRL clock input frequency in MHz
SIGNAL_PATTERN => “DATA” -- “DATA” or “CLOCK” input signal
)
port map (
CNTVALUEOUT => CNTVALUEOUT, -- 5-bit output - Counter value for monitoring purpose
DATAOUT => DATAOUT, -- 1-bit output - Delayed data output
C => C, -- 1-bit input - Clock input
CE => CE, -- 1-bit input - Active high enable increment/decrement function
CINVCTRL => CINVCTRL, -- 1-bit input - Dynamically inverts the Clock (C) polarity
CLKIN => CLKIN, -- 1-bit input - Clock Access into the IODELAY
CNTVALUEIN => CNTVALUEIN, -- 5-bit input - Counter value for loadable counter application
DATAIN => DATAIN, -- 1-bit input - Internal delay data
IDATAIN => IDATAIN, -- 1-bit input - Delay data input
INC => INC, -- 1-bit input - Increment / Decrement tap delay
ODATAIN => ODATAIN, -- 1-bit input - Data input for the output datapath from the device
RST => RST, -- 1-bit input - Active high, synchronous reset, resets delay chain to IDELAY_VALUE/
-- ODELAY_VALUE tap. If no value is specified, the default is 0.
T => T -- 1-bit input - 3-state input control. Tie high for input-only or internal delay or
-- tie low for output only.
);
-- End of IODELAYE1_inst instantiation

Основу приведенной конструкции составляет оператор создания экземпляра библиотечного примитива IODELAYE1, в котором для выбора требуемого режима работы формируемого модуля программируемой задержки предусмотрены следующие параметры настройки:

  • CINVCTRL_SEL — позволяет задействовать функцию динамического инвертирования сигнала синхронизации.
  • DELAY_SRC — указывает на используемый источник данных (соответствующий входной порт) для схемы программируемой задержки.
  • HIGH_PERFORMANCE_MODE — предоставляет возможность уменьшения джиттера сигнала на выходе элемента задержки или снижения уровня энергопотребления.
  • IDELAY_TYPE — используется для выбора типа формируемого элемента входной задержки (элемент фиксированной или изменяемой задержки).
  • IDELAY_VALUE — устанавливает величину фиксированной задержки при конфигурировании модуля IODELAYE1 в виде элемента входной задержки (по умолчанию предлагается нулевое значение).
  • ODELAY_TYPE — указывает на тип создаваемого элемента выходной задержки (элемент фиксированной или изменяемой задержки).
  • ODELAY_VALUE — задает величину фиксированной задержки при конфигурировании модуля IODELAYE1 в виде элемента выходной задержки.
  • REFCLK_FREQUENCY — определяет значение частоты опорного сигнала синхронизации, выраженное в мегагерцах.
  • SIGNAL_PATTERN — позволяет повысить точность результатов временного анализа.

Система условных обозначений входов и выходов, применяемых в описании интерфейса элементов входной и выходной задержки, создаваемых с помощью шаблона Input and Output Fixed or Variable Delay Element (IODELAYE1), включает в себя следующие идентификаторы:

  • CNTVALUEOUT — 5-разрядная выходная шина, на которой отображается текущее установленное значение счетчика задействованных отводов линии задержки, определяющее величину задержки.
  • DATAOUT — выход сигнала задержанных данных.
  • C — вход сигнала синхронизации.
  • CE — вход сигнала разрешения инкремента или декремента значения задержки.
  • CINVCTRL — вход динамического переключения полярности сигнала синхронизации.
  • CLKIN — вход тактового сигнала, поступающего с выхода буферных элементов BUFIO, BUFG или BUFR.
  • CNTVALUEIN — 5-разрядная входная шина, на которую поступает код, определяющий устанавливаемое значение задержки.
  • DATAIN — вход данных, подключаемый к логическим ресурсам ПЛИС серии Virtex-6.
  • IDATAIN — вход данных, поступающих из соответствующего блока ввода/вывода.
  • INC — вход сигнала инкремента или декремента задержки.
  • ODATAIN — вход данных, подключаемый к выходу регистра или преобразователя параллельного кода в последовательный.
  • RST — вход сигнала сброса.
  • T — вход сигнала динамического переключения источников входных данных в двунаправленном режиме (при конфигурировании модуля в виде элемента входной и выходной задержки).

На рис. 429 приведен условный графический образ элементов программируемой входной и выходной задержки, описания которых формируются с помощью шаблона Input and Output Fixed or Variable Delay Element (IODELAYE1) для последующей реализации на основе соответствующих аппаратных модулей ресурсов ввода/вывода SelectIO кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

Образ элемента задержки, создаваемого с помощью библиотечного примитива IODELAYE1

Рис. 429. Условный графический образ элемента задержки, создаваемого с помощью библиотечного примитива IODELAYE1

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

Примечание. Полный список литературы смотрите в предыдущих частях статьи.

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

 


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

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