Научная статья на тему 'Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ise design suite'

Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ise design suite Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
85
17
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зотов Валерий

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Зотов Валерий

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ise design suite»

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

Разработка VHDL-описаний цифровых устройств,

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

Валерий ЗОТОВ

walerry@km.ru

В 26-й части статьи мы продолжаем знакомиться с образцами VHDL-описа-ний элементов, выполненных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 СХТ, Virtex-6 БХТ и Virtex-6 НХТ [55—68]. В этой части представлены шаблоны описаний компонентов, предназначенных для формирования и распределения тактовых сигналов, а также для осуществления операций периферийного сканирования и обратного чтения конфигурационных данных в ПЛИС серии 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 CLK0UT0 (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) REFJITTER1 => 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: CLKOUT output CLKOUT1B => CLKOUT1B, -- 1-bit output: Inverted CLKOUT 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

IBUFG

ММСМ

CLKIN1 CLKOUTO

CLKFBIN CLKOUTOB

CLKOUT1

CLKOUT1B

CLKOUT2

CLKOUT2B

CLKOUT3

CLKOUT3B

CLKOUT4

CLKOUT5

CLKOUT6

CLKFBOUT

CLKFBOUTB

RST LOCKED

BUFG

BUFG

IBUFG

MMCM

CLKIN1 CLKOUTO

CLKFBIN CLKOUTOB

CLKOUT1

CLKOUT1B

CLKOUT2

CLKOUT2B

CLKOUT3

CLKOUT3B

CLKOUT4

CLKOUT5

CLKOUT6

CLKFBOUT

CLKFBOUTB

RST LOCKED

^BUFG

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

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

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

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

MMCM_BASE

- CLKFBIN CLKFBOUT -

CLKFBOUTB -

CLKOUTO -

CLKOUTOB -

- CLKFIN1 CLK0UT1 -

CLKOUT1B -

CLKOUT2 -

CLKOUT2B -

- CLKOUT3 PWRDWN CLKOUT3B -

CLKOUT4 -

CLKOUT5 -

- CLKOUT6 RST LOCKED -

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

описания которого используется шаблон Base Mixed Mode Clock Manager (MMCM_BASE).

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

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

наглядно поясняет структурная схема, приведенная на рис. 413.

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Для расширения диапазона частот синтезируемых сигналов применяется каскадное соединение двух комбинированных модулей управления синхронизацией MMCM, входящих в состав одного блока CMT кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. На рис. 415 при-

IBUFG

MMCM

CLKIN1 CLKOUTO

CLKOUTOB

CLKOUT1

CLKFBIN

CLKOUT1B

CLKOUT2

CLKOUT2B

CLKOUT3

CLKOUT3B

CLKOUT4

CLKOUT5

CLKOUT6

CLKFBOUT

CLKFBOUTB

RST LOCKED

Virtex-6 FPGA BUFG OBUF

К внешним компонентам

BUFG

_______________________________I

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

ММСМ1 MMCM2

MMCM MMCM

CLKIN1 CLKOUTO CLKIN1 CLKOUTO

BUFG К

CLKFBIN CLKOUTOB r* CLKFBIN CLKOUTOB

CLK0UT1 \ » CLK0UT1

/

CLKOUT1В CLK0UT1B

CLK0UT2 CLK0UT2

CLKOUT2B CLK0UT2B

CLK0UT3 CLK0UT3

CLKOUT3B CLK0UT3B

CLK0UT4 CLK0UT4

CLK0UT5 CLK0UT5

CLK0UT6 CLK0UT6

CLKFBOUT —| CLKFBOUT

CLKFBOUTB CLKFBOUTB

RST LOCKED RST LOCKED

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

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

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

FOiMMCM2 = FOiMMCM1x

X clkfbout_mult_fmmcm2/ /( divclk_dividemmcm2 x xCLKOUTi_DIVIDEMMCM2), (5)

где Foimmcmi — значение частоты сигнала на выходе счетчика/делителя CLKOUTi первого модуля управления синхронизацией (MMCM1); Foimmcm2 — значение частоты сигнала на выходе счетчика/делителя CLKOUTi второго модуля управления синхронизацией (MMCM2); CLKFBOUT_MULT_ Fmmcm2, DIVCLK_DIVIDEmmcm2, CLKOUTi_

DIVIDEmmcm2 — параметры, задающие значение коэффициента деления частоты для модуля MMCM2.

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

где FCLKIN — значение частоты входного сигнала синхронизации; CLKFBOUT_MULT_

FMMCM1, DIVCLK_DIVIDEmmcm1, CLKOUTi_

DIVIDEmmcm], — параметры, задающие значение коэффициента деления частоты для первого модуля управления синхронизацией (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

FOiMMCM2 = FCLKINx

X CLKFBOUT_MULT_FMMCM1 X x CLKFBOUT_MULT_FMMCM2/

/( DIVCLK_dividemmcm1 x

x CLKOUTi_DIVIDEMMCM1 x x DIVCLK_DIVIDEMMCM2 x

xCLKOUTi_DIVIDXMCxx^M2), (6)

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.

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

BUFIODQS DQSMASK О

-- : 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 (

0 => O, -- Clock buffer output

1 => I, -- Diff_p clock buffer input

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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 разделена на несколько регионов, количество

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

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

Для подготовки описания буферного элемента 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 (

0 => O, -- 1-bit output: Clock output

CE => CE, -- 1-bit input: Active high enable input

1 => 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)

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

для последующего использования в составе устройств, реализуемых на базе ПЛИС серии Virtex-6.

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 32bit 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 СХТ, Virtex-6 SXT и Virtex-6 НХТ, для подготовки описания которого исполь-

EFUSE_USR EFUSEUSR(31:0)

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

зуется шаблон 32-bit non-volatile design ID (EFUSE_USR), показан на рис. 419.

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

BSCAN_VIRTEX6

— TDO CAPTURE -

DRCK -

RESET -

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

RUNTEST -

SEL -

SHIFT -

TCK -

TDI -

TMS -

UPDATE -

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

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

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

Рис. 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, предоставляющего возможность доступа к конфигураци-

USR_ACCESS_VIRTEX6 DATA(31:0)

CFGCLK

DATAVALID

FRAME_ECC_VIRTEX6

FAR(23:0) SYNBIT(4:0) SYNDR0ME(12:0) SYNWORD(6:0) CRCERROR ECCERROR ECCERRORSINGLE SYNDROMEVALID

онным регистрам ПЛИС и обратного чтения данных. Основой этого шаблона является оператор создания экземпляра библиотечного примитива ЮЛР^ШТЕХб, который представляет внутренний порт конфигурационного интерфейса, подобного SelectMAP [57]:

В библиотечном примитиве 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.

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

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

-- 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 preprogrammed 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

0 => 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

1 => 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

1(31:0) 0(31:0)

CLK

CSB

RDWRB BUSY

JTAG_SIM_VIRTEX6 TCK TDO

TDI

TMS

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

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

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

-- : 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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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, информирующего о завершении фазы StartUp процесса конфигурирования ПЛИС.

• 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) для управления глобальными цепями сброса/установ-

Рис. 426. Условный графический образ компонента, создаваемого с помощью шаблона STARTUP Block (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

CAPTURE_VIRTEX6

CAP CLK

STARTUP_VIRTEX6

CLK CFGCLK

GSR

CFGMCLK

GTS

KEYCLEARB DINSPI

PACK

EOS

USRCCLKO

USRCCLKTS PREQ

USRDONEO

TCKSPI

USRDONETS

ки и переключения выходов ПЛИС в состояние высокого импеданса, а также для выбора тактового сигнала при активизации ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

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

В библиотечном примитиве 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.

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

Serial Configuration Simulation Model (SM_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.

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

-- 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 Preprogrammed 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_ C0NFIG_V6

DONE BUSY

CCLK

CSIB CSOB

D

INITB

M

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

PROGB

RDWRB

SI M_CO N FI G_V6_SE RIAL

DONE DOUT

CCLK

DIN

INITB

M

PROGB

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 — вход сигнала синхронизации.

IODELAYE1

- CNTVALUEIN(4:0) CNTVALUEOUT(4:0) -

— СЕ

— CINVCTRL

— CLKIN

— DATAIN

— IDATAIN

— INC

— ODATAIN

— RST

— T DATAOUT -

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

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

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

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

i Надоели баннеры? Вы всегда можете отключить рекламу.