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

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

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

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

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

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

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

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

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

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

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

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

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

walerry@km.ru

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

LUT6 включает в себя образец VHDL-опи-сания 6-входовой таблицы преобразования LUT с выходом общего назначения, которая представлена в составе секций SLICE конфигурируемых логических блоков CLB в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. Основой этого шаблона является оператор создания экземпляра библиотечного примитива LUT6:

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

-- LUT6: 6-input Look-Up Table with general output

-- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT6_inst : LUT6 generic map (

INIT => X"0000000000000000") port map (

O => O, -- LUT general output

10 => I0, -- LUT input

11 => I1, -- LUT input

- Specify LUT Contents

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

• O — выход общего назначения;

• I0-I5 — входы таблицы преобразования LUT.

Для определения функции, которую реализует экземпляр 6-входовой таблицы преобразования, формируемый на основе указанного библиотечного примитива, предусмотрен настраиваемый параметр инициализации INIT, значение которого задается в форме 16-разрядного шестнадцатеричного числа.

LUT6

15

14

13 0

12

И

10

Рис. 278. Условный графический образ 6-входового функционального генератора, формируемого с помощью шаблона LUT6

Условный графический образ 6-входового функционального генератора, описание которого формируется с помощью шаблона LUT6 для последующей реализации на базе таблицы преобразования ПЛИС серии Spartan-6, показан на рис. 278.

LUT6_2 является шаблоном описания варианта конфигурирования 6-входовой таблицы преобразования LUT, входящей в состав секций SLICE конфигурируемых логических блоков CLB в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, который предоставляет возможность реализации как функции ше-

LUT6 2

14 14

13

13 12

И

10

12

11 14

13

12

1П И

н 10

LUT5

LUT5

06

05

Рис. 279. Реализация двух 5-входовых функциональных генераторов на базе одной таблицы преобразования LUT ПЛИС серии Spartan-6

сти переменных, так и двух функций пяти переменных. Этот вариант конфигурирования таблицы преобразования LUT поясняет структурная схема, приведенная на рис. 279.

Основу рассматриваемого шаблона образует оператор создания экземпляра библиотечного примитива LUT6_2, который позволяет сконфигурировать на базе 6-входовой таблицы преобразования LUT ПЛИС серии Spartan-6 два 5-входовых функциональных генератора:

-- LUT6_2 : 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 (LUT6_2_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.aH;

-- <—Cut code below this line and paste into the architecture body--->

-- LUT6_2: 6-input 2 output Look-Up Table -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT6_2_inst : LUT6_2 generic map (

INIT => X"0000000000000000") -- Specify LUT Contents port map (

06 => O6, -- 6/5-LUT output (1-bit)

05 => 05, -- 5-LUT output (1-bit)

10 => I0, -- LUT input (1-bit)

11 => I1, -- LUT input (1-bit)

I5 => I5 -- LUT input (1-bit) -- End of LUT6_2_inst instantiation

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

• 06 — выход 6-входового или первого 5-входового функционального генератора;

• 05 — выход второго 5-входового функционального генератора;

• I0-I5 — входы функциональных генераторов.

На рис. 280 изображен условный графический образ элемента, реализующего функцию шести переменных или две функции пяти переменных, конфигурируемого на базе таблицы преобразования LUT секций SLICE кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, описание которого формируется с помощью шаблона LUT6_2.

LUT6_D содержит образец VHDL-описания варианта конфигурирования таблицы преобразования LUT, представленной в составе секций SLICE конфигурируемых логических блоков CLB ПЛИС серии Spartan-6, в виде функционального генератора, содержащего

LUT6_2

I5

14 06

13

12 05

И

I0

LUT6_D

15

14 0

13

12 LO

И

Ю

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

В библиотечном примитиве LUT6_D кроме выхода общего назначения О представлен также локальный выход LO, который используется для подключения только в пределах того же конфигурируемого логического блока ^В, в состав которого входит создаваемый экземпляр таблицы преобразования.

Условный графический образ 6-входового функционального генератора с двумя выходами, реализуемого на основе таблицы преобразования кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, для подготовки описания которого используется шаблон LUT6_D, показан на рис. 281.

LUT6_L представляет собой шаблон описания варианта конфигурирования таблицы

Рис. 281. Условный графический образ 6-входового функционального генератора с двумя выходами, формируемого с помощью шаблона LUT6_D

преобразования, входящей в состав логических ячеек ПЛИС серии Spartan-6, в виде 6-входового функционального генератора с локальным выходом. Этот шаблон выполнен на основе экземпляра библиотечного элемента LUT6_L, который соответствует указанному варианту конфигурирования таблицы преобразования LUT:

-- LUT6_L : 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 (LUT6_L_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;

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

-- <—Cut code below this line and paste into the architecture body--->

-- LUT6_L: 6-input Look-Up Table with local output -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT6_L_inst : LUT6_L generic map (

INIT => X"0000000000000000") -- Specify LUT Contents port map (

L0 => L0, -- LUT local output

10 => I0, -- LUT input

11 => I1, -- LUT input

I5 => I5 -- LUT input

);

-- End of LUT6_L_inst instantiation

На рис. 282 приведен условный графический образ 6-входового функционального генератора с локальным выходом, описание которого формируется на основе шаблона

LUT6_L.

Reconfigurable LUT (CFGLUT5) включает в себя образец VHDL-описания динамически реконфигурируемых функциональных генераторов, реализуемых на базе таблиц преобразования LUT кристаллов программируемой логики семейств Spartan-6 LX

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

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

-- LUT6_D: 6-input Look-Up Table with general and local outputs -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT6_D_inst : LUT6_D generic map (

INIT => X"0000000000000000") -- Specify LUT contents port map (

L0 => L0, -- LUT local output 0 => 0, -- LUT general output

10 => I0, -- LUT input

11 => I1, -- LUT input

I5 => I5 -- LUT input

);

-- End of LUT6_D_inst instantiation

LUT6_L

15

14

13 L0

12

И

10

CFGLUT5

14

13

12 06

11 05

10

CDI CDO

СЕ

> CLK

Рис. 282. Условный графический образ 6-входового функционального генератора с локальным выходом, формируемого с помощью шаблона LUT6_L

Рис. 283. Условный графический образ реконфигурируемого функционального генератора, формируемого на основе шаблона CFGLUT5

и Spartan-6 LXT. Каждая таблица преобразования ПЛИС серии Spartan-6 предоставляет возможность формирования одного 5-входового или двух 4-входовых функциональных генераторов, в которых выполняемые функции можно изменять в процессе их работы. При этом параметры инициализации, определяющие осуществляемые функции, загружаются в таблицу преобразования в виде последовательного двоичного кода:

Основой приведенной конструкции является оператор создания экземпляра библиотечного примитива CFGLUT5, который представляет 5- и 4-входовые варианты функциональных генераторов, поддерживающих возможность динамического рекон-

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

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

• CDO — последовательный вход реконфи-гурируемых данных, используемый при каскадном соединении таблиц преобразования;

• O5 — выход 4-входового реконфигурируе-мого функционального генератора;

• O6 — выход 5-входового реконфигурируе-мого функционального генератора;

• CDI — последовательный вход данных, определяющих новую функцию, выполняемую создаваемым функциональным генератором;

• CE — вход сигнала разрешения синхронизации процесса реконфигурирования;

• CLK — вход сигнала синхронизации, который предназначен для тактирования процесса реконфигурирования;

• I0-I4 — входы функциональных генераторов.

Условный графический образ динамически реконфигурируемого функционального генератора, описание которого формируется с помощью шаблона CFGLUT5 для последующей реализации на базе таблицы преобразования LUT кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, изображен на рис. 283.

В папке INIT Truth Tables представлены два новых шаблона таблиц истинности, которые применяются для определения значений констант инициализации при использовании табличного метода описания функциональных генераторов с различным числом входов.

-- CFGLUT5 : 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 : (CFGLUT5_inst) and/or the port declarations after the -- code : "=>" 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--->

-- CFGLUT5: Reconfigurable 5-input LUT -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

CFGLUT5_inst : CFGLUT5 generic map (

INIT => X"00000000") port map (

CDO => CDO, -- Reconfiguration cascade output

05 => O5, -- 4-LUT output

06 => 06, -- 5-LUT output

CDI => CDI, -- Reconfiguration data input CE => CE, -- Reconfiguration enable input CLK => CLK, -- Clock input I0 => I0, -- Logic data input

I4 => I4 -- Logic data input );

-- End of CFGLUT5_inst instantiation

LUT5 является образцом описания таблицы истинности, позволяющего в наглядной форме задать значение константы, необходимой для инициализации 5-входового функционального генератора, конфигурируемого на базе таблицы преобразования LUT ПЛИС серии Spartan-6:

-- Truth Table to determine INIT value for a LUT5

-- | I4 I3 I2 I 1 I0 IOI

-- | 0 0 0 0 0 I?I\

-- | 0 0 0 0 1 I?I = 4'b???? = 4'h?--------+

-- | 0 0 0 1 I?I I

-- | 0 0 0 1 1 I?I / I

-- | 0 0 1 I?I \ I

-- | 0 0 1 1 I?I = 4'b???? = 4'h? I

-- | 0 0 1 I?I I

-- | 0 0 1 1 I?I / I

-- | 0 1 0 0 I?I \ I

-- | 0 1 0 0 1 I?I = 4'b???? = 4'h? I

-- | 0 1 0 1 I?I I

-- | 0 1 0 1 1 I?I / I

-- | 0 1 1 I?I \ I

-- | 0 1 1 1 I?I = 4'b???? = 4'h? I

-- | 0 1 1 I?I I

-- | 0 1 1 1 I?I/ I

INIT = 32'h????????

0 0 I?I\ I

0 0 1 I?I = 4'b???? = 4'h? I

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

0 0 I?I I

0 1 I?I/ I

0 1 I?I\ I

0 1 1 I?I = 4'b???? = 4'h? I

0 1 I?I I

0 1 1 I?I/ I

1 0 I?I\ I

1 0 1 I?I = 4'b???? = 4'h? I

1 0 I?I I

1 0 1 I?I / I

1 1 I?I \ I

1 1 1 I?I = 4'b???? = 4'h?--------+

1 1 I?I

1 1 1 I?I /

LUT6 предоставляет шаблон таблицы истинности, который можно использовать при подготовке VHDL-описания 6-входового функционального генератора, реализуемого на основе таблицы преобразования LUT кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT:

-- Truth Table to det ermine INIT value for a LUT6

-- I I5 I4 I3 I2 I1 I0 IOI

-- I 0 0 0 0 0 0 I?I \

-- I 0 0 0 0 0 1 = 4'b???? = 4'h? ----+

-- I 0 0 0 0 1 0 I

-- I 0 0 0 0 1 1 I?I / I

-- I 0 0 0 1 0 I?I \ I

-- I 0 0 0 1 1 = 4'b???? = 4'h? I

-- I 0 0 0 1 0 I

-- I 0 0 0 1 1 I?I/ I

-- I 0 0 1 0 0 0 I?I\ I

-- I 0 0 1 0 0 1 I?I \ = 4'b???? = 4'h? I

-- I 0 0 1 0 1 0 I?I / I

-- I 0 0 1 0 1 1 I?I/ I

-- I 0 0 1 1 0 I?I\ I

-- I 0 0 1 1 1 I?I \ = 4'b???? = 4'h? I

-- I 0 0 1 1 0 I?I / I

-- I 0 0 1 1 1 I?I/ I

-- I 0 1 0 0 0 0 I?I \ I

-- I 0 1 0 0 0 1 I?I \ = 4'b???? = 4'h? I

-- I 0 1 0 0 1 0 I?I / I

-- I 0 1 0 0 1 1 I?I / I

0 10 0 0 1 0 0 1 0 1

0 0 0 0

1 1 1 1

0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 0 0 1 0 0 1 0 0 1

0 0 0 0

1 1 1 1

0 0 0 0 0 0 0 0

0 1 0 1 0 1 0 1

0 0 0 0

1 1 1

1

= 4'b???? = 4'h?

INIT = 64'h????????? = 4'b???? = 4'h?

= 4'b???? = 4'h? ----+

32-bit/w CEposedge SR (SRLC32E) содержит образец описания 32-разрядного сдвигового регистра, тактируемого фронтом сигнала синхронизации, со входом разрешения тактового сигнала, последовательным входом и выходом данных, реализуемого на основе таблицы преобразования LUT секций SLICEM ПЛИС серии Spartan-6. Каждая из 6-входовых таблиц преобразования LUT, входящих в состав секций типа SLICEM кристаллов программируемой логики семейств Spartan-6 LX

Рис. 284. Реализация сдвоенного 16-разрядного регистра сдвига на базе таблицы преобразования LUT секций SLICEM ПЛИС серии Spartan-6

и Spartan-6 LXT, может конфигурироваться в виде сдвоенного 16-разрядного регистра сдвига или в виде 32-разрядного сдвигового регистра [12, 28]. На рис. 284 приведена структурная схема, поясняющая реализацию сдвоенного 16-разрядного регистра сдвига на базе таблицы преобразования ПЛИС указанной серии. Образцы описаний таких сдвиговых регистров были представлены ранее при рассмотрении шаблонов, предназначенных для использования в составе проектов, реализуемых на основе кристаллов программируемой логики семейства Spartan-3.

Структурная схема, демонстрирующая вариант конфигурирования таблицы преобразования LUT секций SLICEM ПЛИС серии Spartan-6 в виде 32-разрядного сдвигового регистра, показана на рис. 285. На выходе формируемого сдвигового регистра при необходимости можно задействовать триггер, сопряженный с используемой таблицей преобразования LUT.

Функциональная схема 32-разрядного регистра сдвига, реализуемого на базе таблицы преобразования LUT секций SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, изображена на рис. 286.

Для подготовки описания регистра сдвига с динамически изменяемой используемой

разрядностью, максимальное значение которой может достигать 32, предлагается следующий шаблон:

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

-- SRLC32E: 32-bit variable length shift register LUT -- with clock enable -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

SRLC32E_inst : SRLC32E generic map (

INIT => X"00000000") port map (

Q => Q, -- SRL data output Q31 => Q31, -- SRL cascade output pin A => A, -- 5-bit shift depth select input CE => CE, -- Clock enable input CLK => CLK, -- Clock input D => D -- SRL data input );

-- End of SRLC32E_inst instantiation

В качестве основы приведенной конструкции используется оператор создания экземпляра библиотечного примитива SRLC32E, который представляет вариант конфигурирования таблицы преобразования в форме 32-разрядного регистра сдвига. В этом примитиве для инициализации содержимого создаваемого экземпляра сдвигового регистра предусмотрен настраиваемый параметр МГГ, значение которого задается в виде 8-разрядного шестнадцатеричного числа. По умолчанию во все разряды формируемого сдвигового регистра после завершения процесса конфигурирования кристалла программируемой логики заносится нулевое значение.

Система условных обозначений входных и выходных портов, применяемых в описании интерфейса 32-разрядных сдвиговых реги-

SHIFTIN (D) -WE-CLK-

32-разрядный Сдвиговый регистр

SHIFTOUT(Q31)

Address (А[4;0]) -

Мультиплексор

Рис. 285. Реализация 32-разрядного сдвигового регистра на базе таблицы преобразования LUT секций SLICEM ПЛИС серии Spartan-6

Рис. 286. Функциональная схема 32-разрядного сдвигового регистра, реализуемого на базе таблицы преобразования секций SLICEM ПЛИС серии Spartan-6

стров, описания которых создаются на основе шаблона 32-ЬкМ СЕposedge SR ^К1С32Е), включает в себя следующие идентификаторы:

• Q — основной выход сдвигового регистра;

• Q31 — дополнительный выход последнего (старшего) разряда, предназначенный для каскадного соединения;

• А — 5-разрядная адресная шина, совокупность значений сигналов которой определяет используемую (эффективную) разрядность сдвигового регистра (номер разряда, с которого данные поступают на основной выход);

• СЕ — вход сигнала разрешения синхронизации;

• ^К — вход тактового сигнала;

• D — последовательный вход данных.

На рис. 287 приведен условный графический образ 32-разрядного регистра сдвига, реализуемого на базе таблицы преобразования LUT секций SLICEM ПЛИС серии Spartan-6, для подготовки описания которого применяется шаблон 32-ЬкМ СЕposedge SR (SRLC32E).

Наличие в составе регистров сдвига, конфигурируемых на основе таблиц преобразования LUT, дополнительного выхода последнего (старшего) разряда, предназначенного для каскадного соединения, предоставляет возможность увеличения максимальной разрядности формируемых сдвиговых регистров. Для создания регистра сдвига с динамически изменяемой используемой разрядностью, максимальное значение которой может достигать 64, необходимо использовать две таблицы преобразования в сочетании с мультиплексором Б7МиХ. Структурная схема такого сдвигового реги-

SHIFTIN (D)-

А[5:0] -

CLK-WE-

_^

(CLK)

(WE/CE)

□ SRL32

□И Об

А[6:2]

МС31

CLK

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

WE

А5 (АХ)

-4.

□ SRL32

DI1 Об

А[6:2] CLK WE МС31

F7AMUX

Q

-► Output (Q)

(AQ) Registered * Output

SHIFTOUT (Q63)

Рис. 288. Реализация сдвигового регистра с динамически изменяемой разрядностью на базе двух таблиц преобразования секции SLICEM ПЛИС серии Spartan-6

стра, конфигурируемого на базе двух таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, представлена на рис. 288.

Каскадное соединение трех таблиц преобразования LUT с применением мультиплексоров F7MUX и F8MUX позволяет формировать регистры сдвига с максимальным числом разрядов, достигающим 96. На рис. 289 показана структурная схема сдвигового регистра с динамически изменяемой разрядностью, реализуемого на базе трех таблиц преобразования LUT секции SLICEM конфигурируемого логического блока CLB ПЛИС серии Spartan-6.

Предельное количество разрядов регистра сдвига с динамически изменяемой разрядно-

стью, конфигурируемого на основе четырех таблиц преобразования LUT одной секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, равно 128. На рис. 290 показана структурная схема такого сдвигового регистра.

В разделе Virtex-4 каталога Device Primitive Instantiation шаблонов языка VHDL сосредоточены образцы описаний компонентов, построенных на основе экземпляров библиотечных примитивов, которые предназначены для непосредственной реализации на базе соответствующих аппаратных ресурсов ПЛИС семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Структурная организация этого раздела подобна структуре каталога Spartan-3, рассмотренного ранее (рис. 51, КиТ № 8Ч2010, стр. 101). Большинство шаблонов, располо-

СХ (А5)

Рис. 289. Реализация сдвигового регистра с динамически изменяемой разрядностью на базе трех таблиц преобразования секции SLICEM ПЛИС серии Spartan-6

SHIFTIN (D) -

A[6:0] -

CLK -WE-

(CLK)

(WE/CE)

□ SRL32

DU 06

A[6:2]

MC31

CLK

WE

□ SRL32

DU 06

A[6:2]

MC31

CLK

WE

CX (A5)

F7BMUX

□ SRL32

DU 06

A[6:2]

MC31

CLK

WE

BX (A6) F8MUX

□ SRL32

DU 06

A[6:2]

MC31

CLK

WE

AX (A5)

F7AMUX

L|D Q

(BMUX)

(BQ)

■ Output (Q)

Registered Output

(MC31)

SHIFTOUT (Q127)

Рис. 290. Реализация сдвигового регистра с динамически изменяемой разрядностью на базе четырех таблиц преобразования секции SLICEM ПЛИС серии Spaгtan-6

-18^-

N Г7--

х 1 ,

Zero-/-*

Е

зе:

Ж

X Ь^

Zero-/-*

Е

тМ ±

Ж

Рис. 291. Структура блока цифровой обработки сигналов XtгemeDSP ПЛИС серии Viгtex-4

женных в подразделах каталога Virtex-4, по существу не отличаются от одноименных образцов описаний, содержащихся в папках Spartan-3, Spartan-3A, Spartan-3A DSP, Spartan-3E и Spartan-6, которые были представлены ранее. Поэтому ниже приводятся сведения только о тех шаблонах, которые присутствуют в разделе Virtex-4.

DSP Block (DSP48) включает в себя шаблон описания секций цифровой обработки сигналов DSP48, входящих в состав архитектуры ПЛИС серии Virtex-4. В кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX указанные секции сгруппированы попарно в блоки цифровой обработки сигналов XtremeDSP [37]. При этом две секции DSP48, объединенные в один блок цифровой обработки сигналов, имеют общий вход сумматора/вычитающего устройства. Структурная схема блока цифровой обработки сигналов XtremeDSP изображена на рис. 291.

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

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

-- DSP48: DSP Function Block -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

DSP48_inst : DSP48 generic map (

AREG => 1, -- Number of pipeline registers on the A input, 0, 1 or 2 BREG => 1, -- Number of pipeline registers on the B input, 0, 1 or 2 B_INPUT => "DIRECT", -- B input DIRECT from fabric or CASCADE from another DSP48

CARRYINREG => 1, -- Number of pipeline registers for the CARRYIN input, 0 or 1

CARRYINSELREG => 1, -- Number of pipeline registers for the CARRYINSEL, 0 or 1

CREG => 1, -- Number of pipeline registers on the C input, 0 or 1 LEGACY_MODE => "MULT18X18S", -- Backward compatibility, NONE, MULT18X18 or MULT18X18S

MREG => 1, -- Number of multiplier pipeline registers, 0 or 1 OPMODEREG => 1, -- Number of pipeline regsiters on OPMODE input, 0 or 1

PREG => 1, -- Number of pipeline registers on the P output, 0 or 1 SUBTRACTREG => 1) -- Number of pipeline registers on the SUBTRACT input, 0 or 1 port map (

BCOUT => BCOUT, -- 18-bit B cascade output

P => P, -- 48-bit product output

PCOUT => PCOUT, -- 48-bit cascade output

A => A, -- 18-bit A data input

B => B, -- 18-bit B data input

BCIN => BCIN, -- 18-bit B cascade input

C => C, -- 48-bit cascade input

CARRYIN => CARRYIN, -- Carry input signal

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

CARRYINSEL => CARRYINSEL, -- 2-bit carry input select

CEA => CEA, -- A data clock enable input

CEB => CEB, -- B data clock enable input

CEC => CEC, -- C data clock enable input

CECARRYIN => CECARRYIN, -- CARRYIN clock enable input

CECINSUB => CECINSUB, -- CINSUB clock enable input

CECTRL => CECTRL, -- Clock Enable input for CTRL regsitersL

CEM => CEM, -- Clock Enable input for multiplier regsiters

CEP => CEP, -- Clock Enable input for P regsiters

CLK => CLK, -- Clock input

OPMODE => OPMODE, -- 7-bit operation mode input PCIN => PCIN, -- 48-bit PCIN input RSTA => RSTA, -- Reset input for A pipeline registers RSTB => RSTB, -- Reset input for B pipeline registers RSTC => RSTC, -- Reset input for C pipeline registers RSTCARRYIN => RSTCARRYIN, -- Reset input for CARRYIN registers

RSTCTRL => RSTCTRL, -- Reset input for CTRL registers RSTM => RSTM, -- Reset input for multiplier registers RSTP => RSTP, -- Reset input for P pipeline registers SUBTRACT => SUBTRACT -- SUBTRACT input );

-- End of DSP48_inst instantiation

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

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

• BREG — указывает количество конвейерных регистров, задействованных в составе формируемого элемента на входной шине данных В аппаратного умножителя.

• В_ШРиТ — позволяет выбрать источник данных, используемых в качестве второго сомножителя (операнда В).

• CARRYINREG — разрешает или запрещает применение буферного регистра в цепи сигнала входного переноса.

• CARRYINSELREG — управляет установкой буферного регистра на входах выбора источника сигнала входного переноса.

• CREG — определяет необходимость использования конвейерного регистра на дополнительной входной шине данных С сумматора/вычитающего устройства.

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

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

• OPMODEREG — позволяет задействовать конвейерный регистр на шине управления выбором источников входных данных сумматора/вычитающего устройства.

• PREG — определяет наличие выходного регистра в формируемом элементе.

• SUBTRACTREG — управляет установкой буферного регистра на входе управления режимом работы сумматора/вычитающего устройства.

В состав системы условных обозначений входных и выходных портов, применяемых

в описании интерфейса элементов, формируемых с помощью шаблона DSP Block (DSP48),

входят следующие идентификаторы:

• BCOUT — выходная 18-разрядная шина, используемая для подключения ко входной шине BCIN следующей секции DSP48 при каскадном сопряжении аппаратных модулей ЦОС.

• P [47:0] — выходная 48-разрядная шина данных, значения которых представляют собой результат операций, осуществляемых секцией цифровой обработки сигналов.

• PCOUT [47:0] — выходная 48-разрядная шина данных, предназначенная для организации каскадного соединения секций ЦОС DSP48.

• A [17:0] — входная 18-разрядная шина данных, совокупность значений сигналов которой образует код первого операнда (A) аппаратного умножителя.

• B [17:0] — входная 18-разрядная шина данных, на которую поступает код второго операнда (B) аппаратного умножителя.

• BCIN [17:0] — входная 18-разрядная шина, используемая для подключения выходной шины BCOUT предшествующей секции DSP48 при каскадном соединении аппаратных модулей ЦОС.

• C [47:0] — дополнительная 48-разрядная входная шина данных C сумматора/вычитающего устройства.

• CARRYIN — вход сигнала переноса.

• CARRYINSEL — двухразрядная шина, совокупность значений сигналов которой указывает источник сигнала входного переноса.

• CEA — вход сигнала разрешения синхронизации для конвейерных регистров, устанавливаемых на входной шине данных A аппаратного умножителя.

• CEB — вход сигнала разрешения синхронизации для конвейерных регистров, устанавливаемых на входной шине данных B аппаратного умножителя.

• CEC — вход сигнала разрешения синхронизации для входного регистра, подключаемого к дополнительной шине данных C сумматора/вычитающего устройства.

• CECARRYIN — вход сигнала разрешения синхронизации для буферного регистра, устанавливаемого в цепи внешнего сигнала входного переноса.

• CECINSUB — вход сигнала разрешения синхронизации для конвейерного регистра, устанавливаемого в цепи сигнала выбора операции, выполняемой сумматором/вычитающим устройством.

• CECTRL — вход сигнала разрешения синхронизации для буферного регистра, устанавливаемого на шине управления выбором источников входных данных сумматора/вычитающего устройства.

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

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

• CLK — вход тактового сигнала.

• 0PM0DE [7:0] — входная 8-разрядная шина управления выбором источников входных данных сумматора/вычитающего устройства.

• PCIN [47:0] — входная 48-разрядная шина, предназначенная для подключения выходной шины PC0UT предыдущей секции DSP48 при каскадном соединении аппаратных модулей ЦОС.

• RSTA — вход сигнала сброса конвейерных регистров, устанавливаемых на входе данных A аппаратного умножителя.

• RSTB — вход сигнала сброса конвейерных регистров, устанавливаемых на входе данных B аппаратного умножителя.

• RSTC — вход сигнала сброса входного регистра, подключаемого к дополнительной шине данных C сумматора/вычитающего устройства.

• RSTCARRYIN — вход сигнала сброса конвейерного регистра, устанавливаемого в цепи входного переноса.

• RSTCTRL — вход сигнала сброса буферного регистра, устанавливаемого на шине управления выбором источников входных данных сумматора/вычитающего устройства.

• RSTM — вход сигнала сброса конвейерного регистра, устанавливаемого на выходе аппаратного умножителя.

• RSTP — вход сигнала сброса выходного регистра.

• SUBTRACT — вход сигнала выбора операции, выполняемой сумматором/вычитающим устройством.

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

Local Clock Buffer (BUFIO) представляет собой образец описания локальных буферных элементов тактового сигнала, которые входят в состав системы распределения сигналов синхронизации в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX [36]. Выходы этих буферных элементов сопряжены с локальными линиями передачи тактовых сигналов, которые подключены к ячейкам ввода/вывода, относящихся к соответствующему региону. Структурная схема локальных ресурсов распределения сигналов синхронизации ПЛИС серии Virtex-4 приведена на рис. 293.

Основой шаблона описания локального буферного элемента тактового сигнала является оператор создания экземпляра библиотечного примитива BUFIO:

-- BUFI0 : 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 : (BUFI0_inst) and/or the port declarations after the -- code : "=>" 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--- >

-- BUFIO: Clock in, clock out buffer

-- Virtex-4

-- Xilinx HDL Language Template, version 12.4

BUFIO_inst : BUFIO port map (

0 => O, -- Clock buffer output

1 => I -- Clock buffer input );

-- End of BUFIO_inst instantiation

Условный графический образ локального буферного элемента тактового сигнала, предназначенного для применения в составе проектируемых устройств, реализуемых на базе кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 БХ, отличается от изображения, представленного на рис. 43 (КиТ № 7Ч2010, стр. 103), только названием.

DSP48

18

-7е— А[17:0]

18.

48, В[17:0] 48

С[47:0] Р[47:0]

7, OPMODE[6:0]

- SUBTRACT

- CARRYIN

2. CARRYINSEL[1:0]

- CEA

- СЕВ

- CEC

- СЕМ

- СЕР

- CECTRL

- CECINSUB

- CECARRYIN

- RSTA

- RSTB

- RSTC

- RSTM

- RSTP

- RSTCTRL

- RSTCARRYIN

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

- CLK

18 BCIN[17:0] BCOUT[17:0] 4S-

48. PCIN[47:0] PCOUT[47:0] 48

Рис. 292. Условный графический образ элементов,

формируемых на основе шаблона DSP Block (DSP48)

Regional Clock Buffer (BUFR) является шаблоном VHDL-описания региональных буферных элементов тактовых сигналов, которые входят в состав ресурсов распределения сигналов синхронизации ПЛИС серии Virtex-4. Особенность системы распределения тактовых сигналов в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX по сравнению с ПЛИС предыдущих поколений заключается в разбиении кристалла на отдельные области (регионы). Количество этих областей зависит от объема ресурсов каждого конкретного типа кристалла и находится в пределах от 8 до 24. В этих областях предусмотрены региональные линии передачи тактовых сигналов, которые не зависят от глобальных ресурсов распределения сигналов синхронизации. Доступ к региональным линиям передачи тактовых сигналов обеспечивают специальные буферные элементы BUFR. При этом следует обратить внимание на то, что региональные сигналы синхронизации в отличие от локальных могут использоваться для тактирования не только ячеек ввода/вывода, но и конфигурируемых логических блоков, модулей блочной памяти Block RAM и аппаратных секций цифровой обработки сигналов, которые входят в состав трех смежных регионов. На рис. 294 представлена структура региональных ресурсов распределения тактовых сигналов в кристаллах про-

Ячейки ввода/вывода

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I/O Tile

Clock Capable I/O

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I

К смежному региону

BUFR

К смежному региону

Ячейки ввода/вывода

К смежному региону Конфигурируемые Модули секции логические блоки блочной цОС

I/O Tile

I/O Tile

I/O Tile

I/O Tile

I/O Tile

- I BUFIO BUFR

Clock Capable I/O

I/O Tile

I/O Tile

I/O Tile <

I/O Tile <

I/O Tile <

I/O Tile <

I/O Tile <

-(■CLBs

-[cLBs

CLBs

-(■CLBs

-|>CLBs

-|>CLBs

-(■CLBs

CLBs

CLBs

-|>CLBs

-|>CLBs

-|> CLBs

Block RAM

Block RAM

Block RAM

Block RAM

К смежному региону

DSP Tile

DSP Tile

DSP Tile

DSP Tile

Рис. 293. Структура локальных ресурсов распределения сигналов синхронизации ПЛИС серии Viгtex-4

Рис. 294. Структура региональных ресурсов распределения тактовых сигналов ПЛИС серии Viгtex-4

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

BUFR

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

граммируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX.

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

-- BUFR : 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 : (BUFR_inst) and/or the port declarations after the -- code : "=>" 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.aH;

-- <—Cut code below this line and paste into the architecture body--->

-- BUFR: Regional (Local) Clock Buffer /w Enable, Clear and Division Capabilities -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

BUFR_inst : BUFR generic map (

BUFR_DIVIDE => "BYPASS", -- "BYPASS", "1", "2", "3", "4", "5","6","7", "8"

SIM_DEVICE => "VIRTEX4") -- Specify target device, "VIRTEX4", "VIRTEX5", "VIRTEX6" port map (

0 => O, -- Clock buffer output CE => CE, -- Clock enable input

CLR => CLR, -- Clock buffer reset input

1 => I -- Clock buffer input );

-- End of BUFR_inst instantiation

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

• BUFR_DIVIDE — задает значение коэффициента деления частоты входного сигнала синхронизации.

• SIM_DEVICE — указывает серию ПЛИС, в которых предполагается использовать создаваемый буферный элемент (по умолчанию для этого параметра установлено значение "VIRTEX4"). Региональные буферные элементы BUFR

предоставляют возможность использования

функции деления частоты входного тактового сигнала. Чтобы задействовать эту функцию, необходимо настраиваемому параметру BUFR_DIVIDE присвоить требуемое значение коэффициента деления частоты. В качестве значения указанного параметра можно указывать целые числа в диапазоне от 1 до 8. По умолчанию для параметра BUFR_DIVIDE предлагается значение BYPASS, при котором функция деления частоты входного сигнала синхронизации не используется. В региональных буферных элементах предусмотрена также поддержка режима сброса. На рис. 295 показаны временные диаграммы сигналов, поясняющие применение функции деления частоты входного сигнала синхронизации и режима сброса в региональных буферных элементах BUFR ПЛИС серии Virtex-4. Приведенные временные диаграммы соответствуют варианту трехкратного деления частоты входного тактового сигнала.

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

• O — выход регионального тактового сигнала;

• CE — вход сигнала разрешения синхронизации;

• CLR — вход сброса;

• I — вход локального сигнала синхронизации.

Условный графический образ региональных буферных элементов, для подготовки описаний которых используется шаблон Regional Clock Buffer (BUFR), представлен на рис. 296.

Advanced Clock Primitive (BUFGCTRL) содержит образец VHDL-описания глобального буферного элемента с функцией мультиплексирования двух входных сигналов синхронизации. Буферные элементы, формируемые с помощью этого шаблона, обеспечивают доступ к глобальным цепям распределения тактовых сигналов в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. При этом предоставляется возможность динамического выбора одного из двух сигналов синхронизации, поступающих на входы создаваемого глобального буферного элемента. На рис. 297 приведены временные диаграммы входных и выходных сигналов, демонстрирующие режимы

10

и __j

CEO

СЕ1_

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

SO

ТвсЬсксе

----1

1-----1—

~1—L-

S1

IGNOREO

О _Г

Рис. 297. Временные диаграммы сигналов, поясняющие функционирование глобальных буферных элементов, формируемых на основе библиотечного примитива BUFGCTRL

функционирования глобального буферного элемента, для подготовки описания которого используется рассматриваемый шаблон. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива BUFGCTRL.

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

• INIT_OUT — определяет начальное состояние выхода глобального буферного элемента после завершения процесса конфигурирования ПЛИС.

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

• PRESELECT_I1 — предоставляет возможность автоматического выбора после завершения процесса конфигурирования ПЛИС сигнала синхронизации, подаваемого на второй вход.

В состав системы условных обозначений входных и выходных портов, применяемых в описании интерфейса глобальных буферных элементов, формируемых с помощью шаблона Advanced Clock Primitive (BUFGCTRL), входят следующие идентификаторы:

• O — выход глобального сигнала синхронизации;

IGNORE1 СЕ1

S1_

J1 10

SO CEO IGNOREO

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

• CE0 — вход разрешения первого входа тактового сигнала (I0);

• CE1 — вход разрешения второго входа тактового сигнала (I1);

• I0 — вход первого тактового сигнала;

• I1 — вход второго тактового сигнала;

• IGNOREO — вход стробирования первого сигнала синхронизации;

• IGNORE1 — вход стробирования второго сигнала синхронизации;

• S0 — вход выбора первого тактового сигнала;

• S1 — вход выбора второго тактового сигнала.

На рис. 298 изображен условный графический образ глобального буферного элемента, описание которого создается на основе шаблона Advanced Clock Primitive (BUFGCTRL) для последующего использования в составе цифровых устройств, реализуемых на базе ПЛИС серии Virtex-4.

Global Clock Buffer MUX (BUFGMUX_ VIRTEX4) предоставляет шаблон описания упрощенного варианта конфигурирования глобального буферного элемента тактового сигнала с функцией мультиплексирования двух входных сигналов синхронизации в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Этот шаблон выполнен на основе экземпляра библиотечного примитива BUFGMUX_ VIRTEX4, который, по сути, представляет собой соответствующий вариант включения библиотечного примитива BUFGCTRL, рас-

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

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

-- BUFGMUX_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 : (BUFGMUX_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 -- : and outputs must be connect.

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

-- BUFGMUX_VIRTEX4: Global Clock Buffer 2-to-1 MUX

-- Virtex-4

-- Xilinx HDL Language Template, version 12.4

BUFGMUX_VIRTEX4_inst : BUFGMUX_VIRTEX4

port map (

O => O, -- Clock MUX output

10 => IO, -- ClockO input

11 => I1, -- Clockl input

S => S -- Clock select input );

-- End of BUFGMUX_VIRTEX4_inst instantiation

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

На рис. 300 показан условный графический образ глобального буферного элемента, для подготовки описаний которого используется шаблон Global Clock Buffer MUX (BUFGMUX_VIRTEX4).

Ч-

Рис. 299. Временные диаграммы сигналов, поясняющие функционирование глобальных буферных элементов, формируемых на основе библиотечного примитива BUFGMUX_VIRTEX4

-- BUFGCTRL : 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 : (BUFGCTRL_inst) and/or the port declarations after the -- code : "=>" assignemnt 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--->

-- BUFGCTRL: Advanced Clock Primitive -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

BUFGCTRL_inst : BUFGCTRL generic map (

INIT_OUT => 0, -- Inital value of 0 or 1 after configuration PRESELECT_I0 => FALSE, -- TRUE/FALSE set the I0 input after configuration

PRESELECT_I1 => FALSE) -- TRUE/FALSE set the I1 input after configuration port map (

O => O, -- Clock MUX output CE0 => CE0, -- Clock enable0 input CE1 => CE1, -- Clock enablel input

10 => I0, -- Clock0 input

11 => Il, -- Clockl input

IGNORE0 => IGNORE0, -- Ignore clock select0 input IGNORE1 => IGNORE1, -- Ignore clock select1 input

50 => S0, -- Clock select0 input

51 => S1 -- Clock select1 input

);

-- End of BUFGCTRL_inst instantiation

buf И 10 S gmu: <_virtex4 ^S. о

Рис. 300. Условный графический образ глобального буферного элемента, формируемого с помощью шаблона Global Clock Buffer MUX (BUFGMUX_VIRTEX4)

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

Для ликвидации временных перекосов распространения внутренних и внешних (по отношению к ПЛИС) сигналов синхронизации можно задействовать несколько модулей управления синхронизацией, описания которых создаются с помощью шаблона DCM (DCM_ADV). Один из возможных вариантов такой схемы, выполненной на базе трех цифровых модулей управления синхронизацией, показан на рис. 302.

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

-- DCM_ADV : 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_ADV_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;

FPGA Virtex-4

DCM ADV

CLKIN CLKFB

RST

PSINCDEC

PSEN

PSCLK

DADDR[6:0]

Dl[15:0]

DWE

DEN

DCLK

CLKO CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180

LOCKED D0[15:0]

BUFG

ODDR

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

GND

D1 Q

D2

С

Рис. 301. Применение компонента, формируемого с помощью шаблона DCM (DCM_ADV), для устранения временных перекосов тактовых сигналов на печатной плате устройства

Virtex-4 FPGA

DCM ADV

CLKIN CLKFB

RST

PSINCDEC

PSEN

PSCLK

DADDR[6:0]

Dl[15:0]

DWE

DEN

DCLK

CLKO CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180

LOCKED D0[15:0]

BUFG

Рис. 302. Применение компонентов, формируемых с помощью шаблона DCM (DCM_ADV), для устранения временных перекосов распространения тактовых сигналов в кристалле и на ПП

-- <----Cut code below this line and paste into the architecture body--- >

-- DCM_ADV: Digital Clock Manager Circuit -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

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

SIM_DEVICE => "VIRTEX4", -- Set target device, "VIRTEX4" or "VIRTEX5"

STARTUP_WAIT => FALSE) -- Delay configuration DONE until DCM LOCK, TRUE/FALSE port map (

CLK0 => CLK0, -- 0 degree DCM CLK output 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)

DRDY => DRDY, -- Ready output signal from the 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)

DADDR => DADDR, -- 7-bit address for the DRP

DCLK => DCLK, -- Clock for the DRP

DEN => DEN, -- Enable input for the DRP

DI => DI, -- 16-bit data input for the DRP

DWE => DWE, -- Active high allows for writing configuration

memory

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_ADV_inst instantiation

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

• CLKDV_DIVIDE — определяет значение коэффициента деления частоты на выходе CLKDV (по умолчанию предлагается значение 2.0, соответствующее двукратному делению частоты входного сигнала).

• CLKFX_DIVIDE — указывает значение знаменателя дробного коэффициента, определяющего частоту выходных сигналов, формируемых цифровым синтезатором частот в соответствии с выражением (2) (КиТ № 8Ч2010, стр. 107).

• CLKFX_MULTIPLY — задает значение числителя коэффициента умножения частоты входного тактового сигнала, определяющего характеристики синтезируемых сигналов синхронизации в соответствии с выражением (2).

• CLKIN_DIVIDE_BY_2 — предоставляет возможность применения двукратного деления частоты входного тактового сигнала в модуле DCM.

• CLKIN_PERIOD — определяет значение периода входного сигнала синхронизации.

• CLKOUT_PHASE_SHIFT — позволяет выбрать тип фазового сдвига формируемых тактовых сигналов (по умолчанию предлагается значение NONE, при котором генерация выходных сигналов синхронизации осуществляется без фазового сдвига).

• CLK_FEEDBACK — указывает тип сигнала, подключаемого к входу обратной связи модуля DCM.

• DCM_PERFORMANCE_MODE — устанавливает требуемое соотношение максимальной частоты и стабильности формируемых сигналов.

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

• DFS_FREQUENCY_MODE — устанавливает режим функционирования цифрового синтезатора частот.

• DLL_FREQUENCY_MODE — задает частотный режим работы схемы автоподстройки задержки.

• DUTY_CYCLE_CORRECTION — указывает необходимость коррекции коэффициента заполнения тактовых сигналов, формируемых на выходах CLK0, CLK90, CLK180 и CLK270.

• FACTORY_JF — определяет значение джиттера синтезируемых сигналов синхронизации.

• PHASE_SHIFT — устанавливает значение фиксированного фазового сдвига выходных сигналов модуля DCM.

• SIM_DEVICE — указывает серию ПЛИС, на базе которой реализуется формируемый модуль управления синхронизацией.

• STARTUP_WAIT — используется для управления включением паузы в процессе конфигурирования кристалла программируемой логики до момента нормального захвата следящей системы схемы автоподстройки задержек.

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

• CLK0 — выход сигнала с частотой входного сигнала синхронизации и нулевым сдвигом фазы;

• CLK90, CLK180, CLK270 — выходы сигналов с частотой входного сигнала син-

хронизации и сдвигом фазы на четверть, половину и три четверти периода соответственно;

• CLK2X — выход сигнала с удвоенной частотой входного сигнала синхронизации и нулевым сдвигом фазы;

• CLK2X180 — выход сигнала с удвоенной частотой входного сигнала синхронизации и сдвигом фазы на половину периода;

• CLKDV — выход тактового сигнала с частотой, определяемой коэффициентом деления частоты исходного сигнала синхронизации;

• CLKFX — выход сигнала, формируемого цифровым синтезатором частот, с нулевым сдвигом фазы и с частотой, определяемой разработчиком;

• CLKFX180 — выход сигнала, вырабатываемого цифровым синтезатором частот, со сдвигом фазы на половину периода и с частотой, определяемой разработчиком;

• DO — выходная 16-разрядная шина данных порта динамического реконфигурирования Dynamic Reconfiguration Port (DRP);

• DRDY — выход сигнала готовности порта динамического реконфигурирования DRP;

• LOCKED — выход сигнала, информирующего о текущем соотношении фаз входного и выходного сигналов схемы автоподстройки задержек в создаваемом экземпляре модуля DCM;

• PSDONE — выход сигнала, информирующего о завершении выполнения операции фазового сдвига;

• CLKFB — вход сигнала обратной связи;

• CLKIN — вход исходного тактового сигнала;

• DADDR — 7-разрядная шина адреса порта динамического реконфигурирования DRP;

• DCLK — вход тактового сигнала порта динамического реконфигурирования DRP;

• DEN — вход сигнала разрешения порта динамического реконфигурирования DRP;

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

DCM_ADV

CLKIN CLK0

CLKFB CLK90

RST CLK180

PSINCDEC CLK270

PSEN CLK2X

PSCLK CLK2X180

DADDR[6:0] CLKDV

Dl[15:0] CLKFX

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

DWE CLKFX180

DEN LOCKED

DCLK PSDONE

D0[15:0]

DRDY

DI — входная 16-разрядная шина данных порта динамического реконфигурирова-ния DRP;

DWE — вход сигнала разрешения записи данных в конфигурационную память; PSCLK — вход тактового сигнала схемы фазового сдвига;

PSEN — вход сигнала разрешения выполнения операции изменения фазового сдвига;

PSINCDEC — вход выбора режима изменения фазового сдвига (инкрементный или декрементный);

RST — вход асинхронного сброса.

Условный графический образ компонента, 37. описание которого создается на основе шаблона DCM (DCM_ADV) для последующей 38. реализации на базе цифрового модуля управления синхронизацией ПЛИС серии Virtex-4, 39. показан на рис. 303. ■

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

Литература 41.

34. Virtex-4 Family Overview. Xilinx, 2010. 42.

35. Virtex-4 FPGA Data Sheet: DC and Switching Characteristics. Xilinx, 2010. 43.

36. Virtex-4 FPGA User Guide. Xilinx, 2008.

XtremeDSP for Virtex-4 FPGAs User Guide. Xilinx, 2008.

Virtex-4 FPGA Configuration Guide. Xilinx, 2010.

Virtex-4 FPGA Packaging and Pinout Specification. Xilinx, 2008.

Virtex-4 RocketIO Multi-Gigabit Transceiver User Guide. Xilinx, 2008.

Virtex-4 FPGA Embedded Tri-Mode Ethernet MAC User Guide. Xilinx, 2010. PowerPC Processor Reference Guide. Xilinx, 2010.

PowerPC 405 Processor Block Reference Guide. Xilinx, 2010.

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