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

Опрос

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

Реклама

 

2011 №10

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

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


В 21-й части статьи мы продолжим изучение образцов VHDL-описаний элементов, выполненных на основе экземпляров библиотечных примитивов, которые предназначены для реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX [34–43]. Представлены шаблоны описаний компонентов, применяемых в составе блоков синхронизации разрабатываемых устройств и для организации периферийного сканирования в ПЛИС серии Virtex-4. Рассмотрены образцы описаний входных и выходных регистров с удвоенной скоростью передачи данных, а также элементов программируемой входной задержки.

Base DCM (DCM_BASE) является шаблоном VHDL-описания базового варианта конфигурирования цифрового модуля управления синхронизацией DCM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива DCM_BASE, который поддерживает наиболее часто востребованные функциональные возможности цифрового модуля управления синхронизацией. Компоненты, создаваемые с помощью шаблона Base DCM (DCM_BASE), можно применять для формирования тактовых сигналов с требуемыми значениями частоты и фиксированным фазовым сдвигом, а также для устранения временных перекосов при распространении сигналов синхронизации:

-- DCM_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 : (DCM_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
-- : 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--->
--
-- DCM_BASE: Base Digital Clock Manager Circuit
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
DCM_BASE_inst : DCM_BASE
generic map (
CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
CLKFX_DIVIDE => 1, -- Can be any integer from 1 to 32
CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32
CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
CLKOUT_PHASE_SHIFT => “NONE”, -- Specify phase shift mode of NONE or FIXED
CLK_FEEDBACK => “1X”, -- Specify clock feedback of NONE or 1X
DCM_PERFORMANCE_MODE => “MAX_SPEED”, -- Can be MAX_SPEED or MAX_RANGE
DESKEW_ADJUST => “SYSTEM_SYNCHRONOUS”, -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or an integer from 0 to 15
DFS_FREQUENCY_MODE => “LOW”, -- LOW or HIGH frequency mode for frequency synthesis
DLL_FREQUENCY_MODE => “LOW”, -- LOW, HIGH, or HIGH_SER frequency mode for DLL
DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
FACTORY_JF => X”F0F0”, -- FACTORY JF Values Suggested to be set to X”F0F0”
PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
port map (
CLK0 => CLK0, -- 0 degree DCM CLK ouptput
CLK180 => CLK180, -- 180 degree DCM CLK output
CLK270 => CLK270, -- 270 degree DCM CLK output
CLK2X => CLK2X, -- 2X DCM CLK output
CLK2X180 => CLK2X180, -- 2X, 180 degree DCM CLK out
CLK90 => CLK90, -- 90 degree DCM CLK output
CLKDV => CLKDV, -- Divided DCM CLK out (CLKDV_DIVIDE)
CLKFX => CLKFX, -- DCM CLK synthesis out (M/D)
CLKFX180 => CLKFX180, -- 180 degree CLK synthesis out
LOCKED => LOCKED, -- DCM LOCK status output
CLKFB => CLKFB, -- DCM clock feedback
CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM)
RST => RST -- DCM asynchronous reset input
);
-- End of DCM_BASE_inst instantiation

Настраиваемые параметры библиотечного примитива DCM_BASE имеют то же предназначение, что и в шаблоне DCM (DCM_ADV), который был рассмотрен в предыдущей части статьи. Система условных обозначений входных и выходных портов, используемых в описании интерфейса этого библиотечного примитива, содержит идентификаторы, назначение которых было представлено при рассмотрении шаблона DCM (DCM_ADV).

На рис. 304 приведен условный графический образ компонента, описание которого формируется с помощью шаблона Base DCM (DCM_BASE) для последующей реализации на базе цифрового модуля управления синхронизацией ПЛИС серии Virtex-4.

Образ компонентов, формируемых с помощью шаблона Base DCM

Рис. 304. Условный графический образ компонентов, формируемых с помощью шаблона Base DCM (DCM_BASE)

Типовая схема включения компонента, создаваемого на базе библиотечного примитива DCM_BASE, изображена на рис. 305.

Схема включения компонента, формируемого с помощью шаблона Base DCM

Рис. 305. Типовая схема включения компонента, формируемого с помощью шаблона Base DCM (DCM_BASE)

Эта схема позволяет формировать совокупность тактовых сигналов с заданным постоянным фазовым сдвигом. Временные диаграммы входных и выходных сигналов, поясняющие функционирование компонентов, реализующих базовый вариант конфигурирования цифрового модуля управления синхронизацией DCM в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, для подготовки описаний которых используется шаблон Base DCM (DCM_BASE), показаны на рис. 306.

Диаграммы сигналов,  поясняющие функционирование компонента  с помощью шаблона  Base DCM

Рис. 306. Временные диаграммы сигналов, поясняющие функционирование компонента, формируемого с помощью шаблона Base DCM (DCM_BASE)

Dynamic Phase Shift DCM (DCM_PS) содержит образец описания варианта конфигурирования цифрового модуля управления синхронизацией DCM в составе ПЛИС серии Virtex-4, предоставляющего возможность формирования тактовых сигналов с динамически изменяемым фазовым сдвигом. Этот вариант конфигурирования модуля DCM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX отличается от базового поддержкой функции динамической коррекции величины фазового сдвига выходных сигналов. На рис. 307 представлены временные диаграммы входных и выходных сигналов цифрового модуля управления синхронизацией ПЛИС серии Virtex-4, соответствующие режиму динамического изменения фазового сдвига формируемых тактовых сигналов.

Диаграммы сигналов, соответствующие режиму изменения  фазового сдвига тактовых сигналов

Рис. 307. Временные диаграммы сигналов, соответствующие режиму динамического изменения фазового сдвига тактовых сигналов, формируемых модулем DCM

Рассматриваемый шаблон включает в себя следующую конструкцию:

-- DCM_PS : 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 : (DCM_PS_inst) and/or the port declarations after the
-- code : “=>” declaration maybe changed to properly reference and
-- : 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--->
--
-- DCM_PS: Digital Clock Manager Circuit
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
DCM_PS_inst : DCM_PS
generic map (
CLKDV_DIVIDE => 2.0, -- Divide by: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5,7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 or 16.0
CLKFX_DIVIDE => 1, -- Can be any integer from 1 to 32
CLKFX_MULTIPLY => 4, -- Can be any integer from 2 to 32
CLKIN_DIVIDE_BY_2 => FALSE, -- TRUE/FALSE to enable CLKIN divide by two feature
CLKIN_PERIOD => 10.0, -- Specify period of input clock in ns from 1.25 to 1000.00
CLKOUT_PHASE_SHIFT => “NONE”, -- Specify phase shift mode of NONE, FIXED, -- VARIABLE_POSITIVE, VARIABLE_CENTER or DIRECT
CLK_FEEDBACK => “1X”, -- Specify clock feedback of NONE or 1X
DCM_PERFORMANCE_MODE => “MAX_SPEED”, -- Can be MAX_SPEED or MAX_RANGE
DESKEW_ADJUST => “SYSTEM_SYNCHRONOUS”, -- SOURCE_SYNCHRONOUS, SYSTEM_SYNCHRONOUS or an integer from 0 to 15
DFS_FREQUENCY_MODE => “LOW”, -- HIGH or LOW frequency mode for frequency synthesis
DLL_FREQUENCY_MODE => “LOW”, -- LOW, HIGH, or HIGH_SER frequency mode for DLL
DUTY_CYCLE_CORRECTION => TRUE, -- Duty cycle correction, TRUE or FALSE
FACTORY_JF => X”F0F0”, -- FACTORY JF Values Suggested to be set to X”F0F0”
PHASE_SHIFT => 0, -- Amount of fixed phase shift from -255 to 1023
STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE
port map (
CLK0 => CLK0, -- 0 degree DCM CLK ouptput
CLK180 => CLK180, -- 180 degree DCM CLK output
CLK270 => CLK270, -- 270 degree DCM CLK output
CLK2X => CLK2X, -- 2X DCM CLK output
CLK2X180 => CLK2X180, -- 2X, 180 degree DCM CLK out
CLK90 => CLK90, -- 90 degree DCM CLK output
CLKDV => CLKDV, -- Divided DCM CLK out (CLKDV_DIVIDE)
CLKFX => CLKFX, -- DCM CLK synthesis out (M/D)
CLKFX180 => CLKFX180, -- 180 degree CLK synthesis out
DO => DO, -- 16-bit data output for Dynamic Reconfiguration Port (DRP)
LOCKED => LOCKED, -- DCM LOCK status output
PSDONE => PSDONE, -- Dynamic phase adjust done output
CLKFB => CLKFB, -- DCM clock feedback
CLKIN => CLKIN, -- Clock input (from IBUFG, BUFG or DCM)
PSCLK => PSCLK, -- Dynamic phase adjust clock input
PSEN => PSEN, -- Dynamic phase adjust enable input
PSINCDEC => PSINCDEC, -- Dynamic phase adjust increment/decrement
RST => RST -- DCM asynchronous reset input
);
-- End of DCM_PS_inst instantiation

Приведенный шаблон выполнен на основе экземпляра библиотечного примитива DCM_PS, который представляет указанный вариант конфигурирования цифрового модуля управления синхронизацией DCM в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Параметры настройки и идентификаторы входных и выходных портов, используемые в этом библиотечном примитиве, имеют то же назначение, что и в шаблоне DCM (DCM_ADV).

На рис. 308 представлен условный графический образ компонента, формируемого с помощью шаблона Dynamic Phase Shift DCM (DCM_PS) и реализуемого на базе цифрового модуля управления синхронизацией ПЛИС серии Virtex-4.

Образ компонентов, формируемых с помощью шаблона Dynamic Phase Shift DCM

Рис. 308. Условный графический образ компонентов, формируемых с помощью шаблона Dynamic Phase Shift DCM (DCM_PS)

Phase-Matched Clock Divider (PMCD) представляет собой шаблон VHDL-описания делителей частоты тактового сигнала, применяемых в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. В состав архитектуры ПЛИС серии Virtex-4, за исключением кристаллов XC4VLX15, XC4VSX25, XC4VFX12 и XC4VFX20, входят делители частоты сигналов синхронизации, которые позволяют формировать выходные сигналы с жесткой привязкой по фазе к входным сигналам. Эти модули осуществляют 2-, 4- и 8-кратное деление частоты тактового сигнала, подаваемого на первый вход, а также фиксированную задержку сигналов синхронизации, поступающих на три других входа. На рис. 309 приведена типовая схема включения делителя частоты тактового сигнала PMCD.

Типовая схема включения делителя частоты тактового сигнала PMCD

Рис. 309. Типовая схема включения делителя частоты тактового сигнала PMCD

Временные диаграммы входных и выходных сигналов, поясняющие функционирование делителя частоты сигнала синхронизации PMCD, показаны на рис. 310.

Диаграммы входных и выходных сигналов делителя частоты сигнала синхронизации PMCD

Рис. 310. Временные диаграммы входных и выходных сигналов делителя частоты сигнала синхронизации PMCD

Для получения значения коэффициента деления частоты, превышающего восемь, применяется последовательное соединение двух и более модулей PMCD. В качестве примера на рис. 311 представлена схема последовательного соединения двух делителей частоты тактового сигнала, обеспечивающая 64-кратное деление частоты входного сигнала синхронизации.

Схема последовательного соединения двух делителей частоты тактового сигнала PMCD

Рис. 311. Схема последовательного соединения двух делителей частоты тактового сигнала PMCD

При необходимости формирования совокупности сигналов синхронизации с более разнообразным набором частот в разрабатываемом устройстве делители частоты тактового сигнала PMCD можно использовать совместно с цифровыми модулями управления синхронизацией DCM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Вариант схемы блока синхронизации, выполненного на базе модулей PMCD и DCM, изображен на рис. 312.

Схема совместного применения делителя частоты сигнала синхронизации PMCD и модуля DCM

Рис. 312. Схема совместного применения делителя частоты сигнала синхронизации PMCD и модуля DCM

Совместно с одним цифровым модулем управления синхронизацией DCM можно использовать два делителя частоты тактового сигнала PMCD, как показано на рис. 313. Подключение двух модулей PMCD к выходам цифрового модуля управления синхронизацией DCM существенно расширяет функциональные возможности последнего.

Схема совместного применения модуля DCM и двух делителей частоты сигнала синхронизации PMCD

Рис. 313. Схема совместного применения модуля DCM и двух делителей частоты сигнала синхронизации PMCD

Шаблон описания делителя частоты тактового сигнала выполнен на основе экземпляра библиотечного примитива PMCD:

-- PMCD : 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 (PMCD_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.
--
-- : Note: This component can not be retargeted to future architectures
--
-- 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--->
--
-- PMCD: Phase-Matched Clock Divider Circuit
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
PMCD_inst : PMCD
generic map (
EN_REL => FALSE, -- TRUE/FALSE to allow synchronous deassertion of RST
RST_DEASSERT_CLK => “CLKA”) -- Reset syncronization to which clock: CLKA, CLKB, CLKC or CLKD
port map (
CLKA1 => CLKA1, -- Output CLKA divided by 1
CLKA1D2 => CLKA1D2, -- Output CLKA divided by 2
CLKA1D4 => CLKA1D4, -- Output CLKA divided by 4
CLKA1D8 => CLKA1D8, -- Output CLKA divided by 8
CLKB1 => CLKB1, -- Output phase matched CLKB
CLKC1 => CLKC1, -- Output phase matched CLKC
CLKD1 => CLKD1, -- Output phase matched CLKD
CLKA => CLKA, -- Input CLKA
CLKB => CLKB, -- Input CLKB
CLKC => CLKC, -- Input CLKC
CLKD => CLKD, -- Input CLKD
REL => REL, -- PCMD release input
RST => RST -- Active high reset input
);
-- End of PMCD_inst instantiation

В библиотечном примитиве PMCD предусмотрены два настраиваемых параметра — EN_REL и RST_DEASSERT_CLK. Параметр EN_REL разрешает или запрещает использование сигнала на входе REL для управления выходами 2-, 4- и 8-кратного деления частоты входного сигнала синхронизации. Параметр RST_DEASSERT_CLK позволяет выбрать вход тактового сигнала, с которым синхронизируется выполнение операции сброса. Список возможных значений этого параметра включает в себя четыре варианта, которые соответствуют условным обозначениям соответствующих входов делителя частоты тактового сигнала — CLKA, CLKB, CLKC и CLKD. По умолчанию для параметра RST_DEASSERT_CLK указан вариант CLKA.

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

  • CLKA1 — выход сигнала синхронизации, значение частоты которого совпадает с частотой тактового сигнала на входе CLKA.
  • CLKA1D2 — выход двукратного делителя частоты тактового сигнала, подаваемого на вход CLKA.
  • CLKA1D4 — выход 4-кратного делителя частоты сигнала синхронизации, поступающего на вход CLKA.
  • CLKA1D8 — выход 8-кратного делителя частоты тактового сигнала, подаваемого на вход CLKA.
  • CLKB1, CLKC1 и CLKD1 — выходы задержанных сигналов синхронизации, поступающих на входы CLKB, CLKC и CLKD соответственно.
  • CLKA — вход делителей частоты тактового сигнала.
  • CLKB, CLKC, CLKD — входы схем задержки сигналов синхронизации.
  • REL — вход сигнала управления выходами делителей частоты.
  • RST — вход сигнала сброса.

На рис. 314 приведен условный графический образ компонентов, описания которых создаются с помощью шаблона Phase-Matched Clock Divider (PMCD) для последующей реализации на базе делителей частоты тактового сигнала кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX.

Образ компонентов, формируемых с помощью шаблона  Phase-Matched Clock Divider

Рис. 314. Условный графический образ компонентов, формируемых с помощью шаблона Phase-Matched Clock Divider (PMCD)

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

-- BSCAN_VIRTEX4: 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 instance name
-- declaration : (BSCAN_VIRTEX4_inst) and/or the port declarations after the
-- code : “=>” assignment maybe changed to properly reference and 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_VIRTEX4: Boundary Scan primitve for connecting internal logic to
-- JTAG interface.
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
BSCAN_VIRTEX4_inst : BSCAN_VIRTEX4
generic map (
JTAG_CHAIN => 1) -- Value to set BSCAN site of device. Possible values: (1,2,3 or 4)
port map (
CAPTURE => CAPTURE, -- CAPTURE output from TAP controller
DRCK => DRCK, -- Data register output for USER functions
RESET => RESET, -- Reset output from TAP controller
SEL => SEL, -- USER active output
SHIFT => SHIFT, -- SHIFT output from TAP controller
TDI => TDI, -- TDI output from TAP controller
UPDATE => UPDATE, -- UPDATE output from TAP controller
TDO => TDO -- Data input for USER function
);
-- End of BSCAN_VIRTEX4_inst instantiation

В библиотечном примитиве BSCAN_VIRTEX4 применяется тот же параметр настройки и условные обозначения входных и выходных портов, что и в шаблоне JTAG Boundary Scan Logic Control Circuit (BSCAN_SPARTAN6), рассмотренном ранее.

Условный графический образ компонента, формируемого с помощью шаблона Boundary Scan (BSCAN_VIRTEX4) для выполнения операций периферийного сканирования в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, показан на рис. 315.

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

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

CAPTURE (CAPTURE_VIRTEX4) является шаблоном описания элемента, предоставляющего возможность организации обратного чтения конфигурационных данных из кристаллов программируемой логики серии Virtex-4. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива CAPTURE_VIRTEX4:

-- CAPTURE_VIRTEX4 : 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_VIRTEX4_inst) and/or the port declarations after the
-- code : “=>” assignment maybe changed to properly reference and
-- : 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_VIRTEX4: Register State Capture for Bitstream Readback
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
CAPTURE_VIRTEX4_inst : CAPTURE_VIRTEX4
generic map (
ONESHOT => TRUE) -- TRUE or FALSE
port map (
CAP => CAP, -- Capture input
CLK => CLK -- Clock input
);
-- End of CAPTURE_VIRTEX4_inst instantiat

В библиотечном примитиве CAPTURE_VIRTEX4 для ограничения количества выполняемых операций обратного чтения данных за один цикл предусмотрен настраиваемый параметр ONESHOT. По умолчанию этому параметру присваивается значение TRUE, соответствующее выполнению одной операции чтения данных в течение одного цикла.

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

  • CAP — вход сигнала разрешения захвата данных;
  • CLK — вход сигнала синхронизации.

На рис. 316 изображен условный графический образ элемента, предназначенного для организации обратного чтения конфигурационных данных из кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, описание которого формируется с помощью шаблона CAPTURE (CAPTURE_VIRTEX4).

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

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

Config Data Access (USR_ACCESS_VIRTEX4) содержит образец VHDL-описания 32-разрядного регистра, предоставляющего прямой доступ к данным конфигурационной последовательности в ПЛИС серии Virtex-4. В качестве основы этого шаблона используется экземпляр библиотечного примитива USR_ACCESS_VIRTEX4.

--USR_ACCESS_VIRTEX4: 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 instance name
-- declaration : (USR_ACCESS_VIRTEX4_inst) and/or the port declarations after the
-- code : “=>” assignment maybe changed to properly reference and 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-->
--
-- USR_ACCESS_VIRTEX4: Configuration Data Memory Access Port
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
USR_ACCESS_VIRTEX4_inst : USR_ACCESSS_VIRTEX4
port map (
DATA => DATA, -- 32-bit config data output
DATAVALID => DATAVALID -- 1-bit data valid output
);
-- End of USR_ACCESS_VIRTEX4_inst instantiation

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

  • DATA — 32-разрядная выходная шина данных;
  • DATAVALID — выход сигнала, информирующего о достоверности конфигурационных данных, представленных на шине DATA.

Условный графический образ 32-разрядного регистра, обеспечивающего возможность прямого доступа к данным конфигурационной последовательности в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, для подготовки описания которого используется шаблон Config Data Access (USR_ACCESS_VIRTEX4), приведен на рис. 317.

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

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

Config Frame Error Correction (FRAME_ECC_VIRTEX4) представляет собой шаблон описания элемента, используемого для обнаружения ошибок в конфигурационной последовательности в процессе обратного чтения блока данных из ПЛИС серии Virtex-4. В составе кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX присутствует логика контроля и коррекции ошибок Frame error correction code (ECC) logic, которая позволяет осуществлять коррекцию одиночной ошибки и обнаружение двойной ошибки в считываемом блоке конфигурационной последовательности. Для описания элемента, реализуемого на базе этой логики, предусмотрен библиотечный примитив FRAME_ECC_VIRTEX4, который используется в качестве основы рассматриваемого шаблона.

--FRAME_ECC_VIRTEX4: 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 (FRAME_ECC_VIRTEX4_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : 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_VIRTEX4: Configuration Frame Error Correction Circuitry
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
FRAME_ECC_VIRTEX4_inst : FRAME_ECC_VIRTEX4
port map (
ERROR => ERROR,
SYNDROME => SYNDROME,
SYNDROMEVALID => SYNDROMEVALID
);
-- End of FRAME_ECC_VIRTEX4_inst instantiation

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

  • ERROR — выход сигнала, информирующего о наличии или отсутствии ошибочных разрядов в составе считанного блока данных.
  • SYNDROME — выходная 12-разрядная шина, совокупность значений сигналов которой указывает расположение ошибочных разрядов в считанном блоке данных.
  • SYNDROMEVALID — выход сигнала, уведомляющего о достоверности результатов контроля блока конфигурационных данных.

На рис. 318 показан условный графический образ элемента, описание которого формируется с помощью шаблона Config Frame Error Correction (FRAME_ECC_VIRTEX4) для последующей реализации на базе логики контроля и коррекции ошибок ECC ПЛИС серии Virtex-4.

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

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

Internal Config Access Port (ICAP_VIRTEX4) включает в себя образец VHDL-описания внутреннего порта конфигурационного интерфейса кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, предоставляющего возможность доступа к конфигурационным регистрам ПЛИС и обратного чтения данных:

-- ICAP_VIRTEX4 : 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 (ICAP_VIRTEX4_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-->
--
-- ICAP_VIRTEX4: Internal Configuration Access Port
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
ICAP_VIRTEX4_inst : ICAP_VIRTEX4
generic map (
ICAP_WIDTH => “X8”) -- “X8” or “X32”
port map (
BUSY => BUSY, -- Busy output
O => O, -- 32-bit data output
CE => CE, -- Clock enable input
CLK => CLK, -- Clock input
I => I, -- 32-bit data input
WRITE => WRITE -- Write input
);
-- End of ICAP_VIRTEX4_inst instantiation

В основе приведенной конструкции — оператор создания экземпляра библиотечного примитива ICAP_VIRTEX4, представляющего внутренний порт конфигурационного интерфейса, подобного SelectMAP [38]. В этом библиотечном примитиве используется настраиваемый параметр ICAP_WIDTH, значение которого определяет разрядность данных, записываемых и считываемых из конфигурационных регистров ПЛИС серии Virtex-4. Внутренний порт ICAP в кристаллах программируемой логики указанной серии может конфигурироваться как с 8-разрядными, так и с 32-разрядными шинами данных. По умолчанию для настраиваемого параметра ICAP_WIDTH предлагается значение X8, которое соответствует 8-разрядному варианту конфигурирования внутреннего порта ICAP. Для реализации внутреннего порта конфигурационного интерфейса с 32-разрядными шинами данных следует параметру ICAP_WIDTH присвоить значение X32.

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

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

Условный графический образ компонента, предназначенного для выполнения операции чтения и записи данных в конфигурационные регистры кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, описание которого формируется с помощью шаблона Internal Config Access Port (ICAP_VIRTEX4), представлен на рис. 319.

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

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

JTAG Simulation Model (JTAG_SIM_VIRTEX4) является образцом VHDL-описания компонента, применяемого для функционального моделирования контроллера порта JTAG-интерфейса в составе разрабатываемого устройства, реализуемого на базе ПЛИС серии Virtex-4. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива JTAG_SIM_VIRTEX4:

-- JTAG_SIM_VIRTEX4 : 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_inst) and/or the port declarations after the
-- : “=>” assignment maybe changed to properly reference and connect this
-- : function to the design. All inputs must be connected.
-- : Only one JTAG_SIM_VIRTEX4 should be instantiated per 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-->
--
-- JTAG_SIM_VIRTEX4: JTAG Interface Simulation Model
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
JTAG_SIM_VIRTEX4_inst : JTAG_SIM_VIRTEX4
generic map (
PART_NAME => “LX15”) -- Specify target V4 device. Possible values are: “LX15”, “LX25”, “LX40”, “LX60”, “LX80”, “LX100”, “LX160”, “LX200”, “SX25”, “SX35”, “SX55”, “FX12”, “FX20”,
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_VIRTEX4_inst instantiation

В библиотечном примитиве JTAG_SIM_VIRTEX4 используется параметр настройки PART_NAME, значение которого указывает тип кристалла программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, для которого создается компонент. В списке возможных значений этого параметра представлены варианты сокращенных условных обозначений всех ПЛИС серии Virtex-4: LX15, LX25, LX40, LX60, LX80, LX100, LX160, LX200, SX25, SX35, SX55, FX12 и FX20. По умолчанию для параметра PART_NAME предлагается значение LX4, которое соответствует младшему представителю семейства Virtex-4 LX.

В состав системы условных обозначений входных и выходных портов, используемых в описании интерфейса компонентов, создаваемых с помощью шаблона JTAG Simulation Model (JTAG_SIM_VIRTEX4), входят следующие идентификаторы:

  • TDO — выход сигнала тестовых данных цепочки периферийного сканирования;
  • TCK — вход тактового сигнала;
  • TDI — вход сигнала тестовых данных;
  • TMS — вход одноименного сигнала.

Условный графический образ компонента, формируемого на основе шаблона JTAG Simulation Model (JTAG_SIM_VIRTEX4), изображен на рис. 320.

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

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

STARTUP (STARTUP_VIRTEX4) предоставляет шаблон описания компонента, предназначенного для управления глобальными цепями сброса/установки и переключения выходов кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX в состояние высокого импеданса, а также выбора тактового сигнала, применяемого при активизации логических ресурсов в процессе конфигурирования ПЛИС (на фазе Start-Up). В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива STARTUP_VIRTEX4:

-- STARTUP_VIRTEX4 : 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_VIRTEX4_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_VIRTEX4: Startup primitive for GSR, GTS or startup sequence
-- control.
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
STARTUP_VIRTEX4_inst : STARTUP_VIRTEX4
port map (
EOS => EOS, -- End of Startup 1-bit output
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)
USRCCLKO => USRCCLKO, -- USRCCLKO 1-bit input
USRCCLKTS => USRCCLKTS, -- USRCCLKTS 1-bit input
USRDONEO => USRDONEO, -- USRDONEO 1-bit input
USRDONETS => USRDONETS -- USRDONETS 1-bit input
);
-- End of STARTUP_VIRTEX4_inst instantiation

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

  • EOS — выход сигнала End Of Configuration, информирующего о завершении фазы Start-Up процесса конфигурирования кристалла программируемой логики;
  • CLK — вход сигнала синхронизации, используемого при активизации логических ресурсов в процессе конфигурирования ПЛИС (на фазе Start-Up);
  • GSR — вход глобального сигнала сброса/установки триггеров в кристаллах программируемой логики серии Virtex-4;
  • GTS — вход глобального сигнала управления состоянием выходов кристалла программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX;
  • USRCCLKO — вход сигнала управления состоянием вывода CCLK;
  • USRCCLKTS — тристабильный вывод CCLK;
  • USRDONEO — вход сигнала управления состоянием вывода DONE;
  • USRDONETS — тристабильный вывод DONE.

На рис. 321 приведен условный графический образ компонента, описание которого создается на основе шаблона STARTUP (STARTUP_VIRTEX4) для управления глобальными цепями сброса/установки и переключения выходов в состояние высокого импеданса, а также для выбора тактового сигнала при активизации логических ресурсов ПЛИС серии Virtex-4.

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

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

Input DDR Register (IDDR) содержит образец описания входного триггера с удвоенной скоростью передачи данных DDR (Double Data Rate), входом разрешения тактового сигнала, программируемыми (синхронными или асинхронными) входами сброса и установки и поддержкой возможности привязки выходных информационных сигналов к фронту тактового сигнала, который предназначен для применения в составе проектируемых устройств, реализуемых на базе кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX.

Логические ресурсы блоков ввода/вывода ILOGIC ПЛИС серии Virtex-4 предоставляют возможность конфигурирования трех вариантов входных триггеров с удвоенной скоростью передачи данных DDR, которые отличаются режимами синхронизации операций записи и чтения данных. На рис. 322 показана структурная схема первого варианта входного триггера с удвоенной скоростью передачи данных, поддерживающего режим OPPOSITE_EDGE Mode. В этом режиме запись информационных данных осуществляется по фронту и спаду тактового сигнала. При этом данные на выходах DDR-триггера также обновляются с привязкой соответственно к фронту и спаду сигнала синхронизации.

Схема входного триггера, поддерживающего режим OPPOSITE_EDGE Mode

Рис. 322. Структурная схема входного триггера с удвоенной скоростью передачи данных, поддерживающего режим OPPOSITE_EDGE Mode

Временные диаграммы сигналов, поясняющие функционирование входного триггера с удвоенной скоростью передачи данных, поддерживающего режим OPPOSITE_EDGE Mode, представлены на рис. 323.

Временные диаграммы сигналов входного триггера в режиме OPPOSITE_EDGE Mode

Рис. 323. Временные диаграммы сигналов входного триггера с удвоенной скоростью передачи данных, функционирующего в режиме OPPOSITE_EDGE Mode

Второй вариант конфигурирования входного триггера с удвоенной скоростью передачи данных, в котором реализован режим SAME_EDGE Mode, демонстрирует структурная схема, изображенная на рис. 324.

Схема входного триггера, реализующего режим SAME_EDGE Mode

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

На рис. 325 приведены временные диаграммы сигналов, соответствующие режиму функционирования SAME_EDGE Mode входного DDR-триггера. В этом режиме обновление информационных данных на выходах происходит по фронту тактового сигнала. При этом данные, представленные на выходах DDR-триггера, смещены друг относительно друга на один период сигнала синхронизации.

Временные диаграммы сигналов входного триггера в режиме SAME_EDGE Mode

Рис. 325. Временные диаграммы сигналов входного триггера с удвоенной скоростью передачи данных, функционирующего в режиме SAME_EDGE Mode

Структурная схема, представляющая третий вариант конфигурирования входного триггера с удвоенной скоростью передачи данных, поддерживающего режим SAME_EDGE_PIPELINED Mode, показана на рис. 326. В этом режиме обновление выходных информационных данных входного DDR-триггера осуществляется с привязкой к фронту тактового сигнала. Но при этом, в отличие от режима SAME_EDGE Mode, отсутствует сдвиг данных относительно друг друга.

Схема входного триггера, реализующего режим SAME_EDGE_PIPELINED Mode

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

На рис. 327 представлены временные диаграммы сигналов, демонстрирующие функционирование входного триггера с удвоенной скоростью передачи данных в режиме SAME_EDGE_PIPELINED Mode.

Диаграммы сигналов входного триггера в режиме SAME_EDGE_PIPELINED Mode

Рис. 327. Временные диаграммы сигналов входного триггера с удвоенной скоростью передачи данных, функционирующего в режиме SAME_EDGE_PIPELINED Mode

Для подготовки описания входного DDR-триггера предлагается библиотечный примитив IDDR, поддерживающий возможность выбора одного из трех рассмотренных вариантов конфигурирования, который используется в качестве основы рассматриваемого шаблона:

-- IDDR : 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 (IDDR_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-->
--
-- IDDR: Double Data Rate Input Register with Set, Reset
-- and Clock Enable.
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
IDDR_inst : IDDR
generic map (
DDR_CLK_EDGE => “OPPOSITE_EDGE”, -- “OPPOSITE_EDGE”, “SAME_EDGE” or “SAME_EDGE_PIPELINED”
INIT_Q1 => ‘0’, -- Initial value of Q1: ‘0’ or ‘1’
INIT_Q2 => ‘0’, -- Initial value of Q2: ‘0’ or ‘1’
SRTYPE => “SYNC”) -- Set/Reset type: “SYNC” or “ASYNC”
port map (
Q1 => Q1, -- 1-bit output for positive edge of clock
Q2 => Q2, -- 1-bit output for negative edge of clock
C => C, -- 1-bit clock input
CE => CE, -- 1-bit clock enable input
D => D, -- 1-bit DDR data input
R => R, -- 1-bit reset
S => S -- 1-bit set
);
-- End of IDDR_inst instantiation

Для выбора варианта конфигурирования, типа входов сброса и установки, определения начального состояния выходов формируемого входного триггера с удвоенной скоростью передачи данных в библиотечном примитиве IDDR предусмотрены следующие настраиваемые параметры:

  • DDR_CLK_EDGE — определяет режим функционирования создаваемого входного DDR-триггера (по умолчанию предлагается вариант OPPOSITE_EDGE).
  • INIT_Q1, INIT_Q2 — предназначены для установки начального состояния выходов DDR-триггера (по умолчанию им присваиваются нулевые значения).
  • SRTYPE — указывает тип входов сброса и установки создаваемого входного DDR-триггера (по умолчанию предлагается значение SYNC, соответствующее синхронным режимам сброса и установки).

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

  • Q1 — выход, ассоциированный с фронтом тактового сигнала;
  • Q2 — выход, ассоциированный со спадом тактового сигнала;
  • C — вход сигнала синхронизации;
  • CE — вход разрешения тактового сигнала;
  • D — информационный вход;
  • R — вход сигнала сброса;
  • S — вход сигнала установки.

Условный графический образ входного DDR-триггера со входом разрешения тактового сигнала, программируемыми входами сброса и установки и возможностью привязки выходных информационных сигналов к фронту тактового сигнала, описание которого создается на основе шаблона Input DDR Register (IDDR) для последующей реализации на базе ресурсов ввода/вывода ILOGIC кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, изображен на рис. 328.

Образ входного DDR-триггера, реализуемого на базе ресурсов ввода/вывода ILOGIC

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

Output DDR Register (ODDR) включает в себя шаблон описания выходного триггера с удвоенной скоростью передачи данных, входом разрешения тактового сигнала, программируемыми (синхронными или асинхронными) входами сброса и установки, поддержкой возможности захвата входных данных по фронту сигнала синхронизации, реализуемого на базе ресурсов ввода/вывода ПЛИС серии Virtex-4.

Логические ресурсы блоков ввода/вывода OLOGIC кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX позволяют формировать два варианта выходных DDR-триггеров, которые различаются режимами синхронизации операций захвата данных, представленных на его входах. На рис. 329 приведена структурная схема первого варианта выходного триггера с удвоенной скоростью передачи данных, в котором реализован режим OPPOSITE_EDGE Mode. В этом режиме запись информационных данных, поступающих на первый и второй входы триггера, производится соответственно по фронту и спаду тактового сигнала.

Схема входного триггера с удвоенной скоростью  передачи данных

Рис. 329. Структурная схема входного триггера с удвоенной скоростью передачи данных, поддерживающего режим OPPOSITE_EDGE Mode

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

Диаграммы сигналов, поясняющие функционирование выходного DDR-триггера в OPPOSITE_EDGE Mode

Рис. 330. Временные диаграммы сигналов, поясняющие функционирование выходного DDR-триггера в режиме OPPOSITE_EDGE Mode

Структурная схема второго варианта конфигурирования выходного триггера с удвоенной скоростью передачи данных, поддерживающего режим SAME_EDGE Mode, изображена на рис. 331. В этом режиме захват информационных данных на входах DDR-триггера происходит по фронту тактового сигнала.

Схема выходного триггера с удвоенной скоростью передачи данных

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

На рис. 332 представлены временные диаграммы сигналов, соответствующие режиму функционирования SAME_EDGE Mode выходного DDR-триггера.

Временные диаграммы сигналов, поясняющие функционирование  выходного DDR-триггера

Рис. 332. Временные диаграммы сигналов, поясняющие функционирование выходного DDR-триггера в режиме SAME_EDGE Mode

Формирование VHDL-описаний выходных триггеров с удвоенной скоростью передачи данных осуществляется с помощью следующей конструкции, основу которой образует оператор создания экземпляра библиотечного примитива ODDR:

-- ODDR : 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 (ODDR_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : 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-->
--
-- ODDR: Output Double Data Rate Output Register with Set, Reset
-- and Clock Enable.
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
ODDR_inst : ODDR
generic map(
DDR_CLK_EDGE => “OPPOSITE_EDGE”, -- “OPPOSITE_EDGE” or “SAME_EDGE”
INIT => ‘0’, -- Initial value for Q port (‘1’ or ‘0’)
SRTYPE => “SYNC”) -- Reset Type (“ASYNC” or “SYNC”)
port map (
Q => Q, -- 1-bit DDR output
C => C, -- 1-bit clock input
CE => CE, -- 1-bit clock enable input
D1 => D1, -- 1-bit data input (positive edge)
D2 => D2, -- 1-bit data input (negative edge)
R => R, -- 1-bit reset input
S => S -- 1-bit set input
);
-- End of ODDR_inst instantiation

Библиотечный примитив ODDR предоставляет возможность выбора одного из двух вариантов конфигурирования выходных DDR-триггеров ПЛИС серии Virtex-4, рассмотренных выше. Выбор требуемого варианта и типа входов сброса и установки, а также инициализация создаваемого выходного триггера с удвоенной скоростью передачи данных осуществляется с помощью следующих параметров настройки указанного библиотечного примитива:

  • DDR_CLK_EDGE — устанавливает режим синхронизации процесса захвата входных данных (по умолчанию предлагается вариант “OPPOSITE_EDGE”).
  • INIT — задает начальное состояние выхода DDR-триггера (по умолчанию выход сбрасывается в состояние низкого логического уровня).
  • SRTYPE — используется для выбора типа входов сброса и установки (по умолчанию формируется триггер с синхронными режимами сброса и установки).

В состав системы условных обозначений интерфейсных портов выходных DDR-триггеров, формируемых на основе библиотечного примитива ODDR, кроме идентификаторов, представленных при рассмотрении шаблона Input DDR Register (IDDR), входят также следующие наименования входов и выхода:

  • Q — выход триггера;
  • D1 — информационный вход, ассоциированный с фронтом сигнала синхронизации;
  • D2 — информационный вход, ассоциированный со спадом тактового сигнала.

Условный графический образ выходного триггера с удвоенной скоростью передачи данных, со входом разрешения тактового сигнала, программируемыми входами сброса и установки и возможностью захвата входных данных по фронту сигнала синхронизации, для подготовки описания которого используется шаблон Output DDR Register (ODDR), приведен на рис. 333.

Образ выходного  DDR-триггера

Рис. 333. Условный графический образ выходного DDR-триггера, реализуемого на базе ресурсов ввода/вывода OLOGIC ПЛИС серии Virtex-4

DCI Reset Component (DCIRESET) представляет собой образец описания компонента, используемого для сброса схемы цифрового управления импедансом DCI (Digitally Controlled Impedance) в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. В основе этого шаблона — оператор создания экземпляра библиотечного примитива DCIRESET:

-- DCIRESET : 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 (DCIRESET_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : 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-->
--
-- DCIRESET: DCI reset component
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
DCIRESET_inst : DCIRESET
port map (
LOCKED => LOCKED, -- DCIRESET LOCK status output
RST => RST -- DCIRESET asynchronous reset input
);
-- End of DCIRESET_inst instantiation

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

  • LOCKED — выход сигнала, информирующего о состоянии схемы цифрового управления импедансом DCI;
  • RST — вход сигнала асинхронного сброса.

Условный графический образ компонента, формируемого с помощью шаблона DCI Reset Component (DCIRESET) для применения в составе проектируемых устройств, реализуемых на базе ПЛИС серии Virtex-4, показан на рис. 334.

Образ компонента, формируемого с помощью шаблона DCI Reset Component (DCIRESET)

Рис. 334. Условный графический образ компонента, формируемого с помощью шаблона DCI Reset Component (DCIRESET)

Input Delay Element (IDELAY) является шаблоном VHDL-описания элементов программируемой входной задержки, реализуемых на базе соответствующих аппаратных ресурсов ввода/вывода SelectIO кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. В состав входных логических ячеек ввода/вывода ILOGIC ПЛИС серии Virtex-4, структура которых представлена на рис. 335, входят элементы, позволяющие осуществлять задержку сигналов, поступающих с выводов кристалла, на постоянную (заданную) или изменяемую величину.

Структура входных логических ресурсов ввода/вывода ILOGIC

Рис. 335. Структура входных логических ресурсов ввода/вывода ILOGIC

Основу этих элементов образуют 64-ступенчатые линии задержки. Таким образом, допустимый диапазон изменения значений входной задержи (количество эквивалентных отводов линии задержки) находится в пределах от 0 до 63. В элементах с переменной величиной задержки изменение значения последней осуществляется в инкрементном или декрементном режиме. Выбор режима подстройки значения задержки производится подачей соответствующего уровня сигнала на вход управления INC. Высокий логический уровень сигнала на этом входе соответствует инкрементному режиму, а низкий логический уровень напряжения — декрементному. Изменение значения входной задержки производится по фронту сигнала синхронизации при наличии высокого логического уровня напряжения на входе сигнала разрешения коррекции CE. При наличии сигнала низкого логического уровня на входе разрешения коррекции значение входной задержки остается без изменений. В случае подачи напряжения высокого логического уровня на вход асинхронного сброса, независимо от уровней сигналов на других входах, устанавливается начальное значение задержки, которое определяется при подготовке описания элемента. На рис. 336 показаны временные диаграммы сигналов, демонстрирующие процесс изменения значения задержки сигнала, поступающего с вывода ПЛИС, с помощью элемента программируемой входной задержки.

Временные диаграммы сигналов

Рис. 336. Временные диаграммы сигналов, поясняющие функционирование элементов программируемой входной задержки в ПЛИС серии Virtex-4

В качестве основы шаблона описания элементов программируемой входной задержки используется оператор создания экземпляра библиотечного примитива IDELAY:

-- IDELAY : 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 (IDELAY_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;
--
-- 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--->
--
-- IDELAY: Input Delay Element
-- Virtex-4
-- Xilinx HDL Language Template, version 12.4
--
IDELAY_inst : IDELAY
generic map (
IOBDELAY_TYPE => “FIXED”, -- “FIXED” or “VARIABLE”
IOBDELAY_VALUE => 0) -- Any value from 0 to 63
port map (
O => O, -- 1-bit output
C => C, -- 1-bit clock input
CE => CE, -- 1-bit clock enable input
I => I, -- 1-bit data input
INC => INC, -- 1-bit increment input
RST => RST -- 1-bit reset input
);
-- End of IDELAY_inst instantiation

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

  • IOBDELAY_TYPE — позволяет выбрать тип создаваемого элемента входной задержки.
  • IOBDELAY_VALUE — определяет величину начальной или фиксированной задержки формируемого элемента.

В процессе подготовки законченного описания элемента входной задержки на основе шаблона Input Delay Element (IDELAY) необходимо, прежде всего, указать его тип, воспользовавшись параметром настройки IOBDELAY_TYPE. По умолчанию для этого параметра предлагается значение FIXED, соответствующее элементу фиксированной входной задержки. Для создания описания элемента с изменяемой задержкой следует параметру настройки IOBDELAY_TYPE присвоить значение VARIABLE. Начальная величина задержки указывается в виде соответствующего значения параметра IOBDELAY_VALUE. Этот параметр может принимать целочисленные значения в диапазоне от 0 до 63. По умолчанию для параметра IOBDELAY_VALUE установлено нулевое значение.

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

  • O — выход задержанного сигнала;
  • C — вход сигнала синхронизации;
  • CE — вход сигнала разрешения изменения значения задержки;
  • INC — вход сигнала выбора режима изменения задержки (инкрементный или декрементный);
  • RST — вход сброса.

Условный графический образ элементов входной задержки, для подготовки описаний которых используется шаблон Input Delay Element (IDELAY), представлен на рис. 337.

Условный графический образ элемента входной задержки

Рис. 337. Условный графический образ элемента входной задержки, формируемого с помощью шаблона Input Delay Element (IDELAY)

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

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

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

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

 


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

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