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

Опрос

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

Реклама

 

2010 №6

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

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


Пятая часть статьи завершает ознакомление с образцами применения библиотечных макросов, представленных в папке Device Macro Instantiation, которые предназначены для описания компонентов разрабатываемых устройств, реализуемых на базе ресурсов блочной памяти Block RAM кристаллов программируемой логики с архитектурой FPGA [1] семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT и Virtex-5 FXT [10]. Кроме того, в данной части рассматриваются шаблоны описания элементов, выполняемых на основе аппаратных секций цифровой обработки сигналов DSP48E1 в ПЛИС серии Virtex-6 [11, 13].

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

Single Port RAM (BRAM_SINGLE_MACRO) представляет собой вариант конструкции описания элемента однопортовой оперативной памяти на базе макроса BRAM_SINGLE_MACRO, который предназначен для реализации на основе ресурсов блочной памяти Block RAM в ПЛИС серии Virtex-5:

--BRAM_SINGLE_MACRO : 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 : (BRAM_SINGLE_MACRO_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly

-- : reference and connect this function to the design.

-- : AH 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 four statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.aH;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

-- BRAM_SINGLE_MACRO: Single Port RAM -- Virtex-5

-- Xilinx HDL Language Template, version 11.4

BRAM_SINGLE_MACRO_inst : BRAM_SINGLE_MACRO generic map (

BRAM_SIZE => "18Kb", -- Target BRAM, "18Kb" or "36Kb"

DEVICE => "VIRTEX5", -- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

DO_REG => 0, -- Optional output register (0 or 1)

INIT_A => X"000000000",
-- Initial values on output port

INIT_FILE => "NONE", WRITE_WIDTH => 0,

-- Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb") READ_WIDTH => 0,

-- Valid values are 1-72 (37-72 only valid when BRAM_SIZE="36Kb") SIM_MODE => "SAFE",

-- Simulation: "SAFE" vs "FAST",

-- see "Synthesis and Simulation Design Guide" for details SRVAL => X"000000000",
-- Set/Reset value for port output

WRITE_MODE => "WRITE_FIRST", -- "WRITE_FIRST", "READ_FIRST" or "NO_CHANGE"

-- The following INIT_xx declarations specify the initial contents of the RAM

INIT_00 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_01 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_02 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_03 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_04 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_05 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_3F => X"0000000000000000000000000000000000000000000000000000000000000000",

-- The next set of INIT_xx are valid when configured as 36Kb

INIT_40 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_41 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_42 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_43 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_44 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_45 => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_7E => X"0000000000000000000000000000000000000000000000000000000000000000",

INIT_7F => X"0000000000000000000000000000000000000000000000000000000000000000",

-- The next set of INITP_xx are for the parity bits

INITP_00 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_01 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_02 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_03 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_04 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_05 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_06 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_07 => X"0000000000000000000000000000000000000000000000000000000000000000",

-- The next set of INIT_xx are valid when configured as 36Kb

INITP_08 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_09 => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0A => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0B => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0C => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0D => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0E => X"0000000000000000000000000000000000000000000000000000000000000000",

INITP_0F => X"0000000000000000000000000000000000000000000000000000000000000000")

port map (

DO => DO,

-- Output data ADDR => ADDR,

-- Input address CLK => CLK,

-- Input clock DI => DI,

-- Input data port EN => EN,

-- Input RAM enable REGCE => REGCE,

-- Input output register enable RST => RST,

-- Input reset WE => WE

-- Input write enable );

-- End of BRAM_SINGLE_MACRO_inst instantiation

Представленный шаблон отличается от аналогичной конструкции, используемой для подготовки описаний элементов однопортовых ОЗУ, предназначенных для реализации в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT (КиТ. 2010. № 4), наличием дополнительных параметров настройки макроса BRAM_SINGLE_ MACRO. Параметры INIT_40-INIT_7F и INITP_08-INITP_0F применяются для определения содержимого соответствующих ячеек элементов оперативной памяти с информационной емкостью 36 кбит после завершения процесса конфигурирования ПЛИС. Сведения о разрядности входных и выходных шин для возможных вариантов конфигурации элементов однопорто-вых ОЗУ, формируемых на основе макроса BRAM_SINGLE_MACRO, содержатся в таблице 3.

Таблица 3. Варианты конфигурации элементов однопортовых ОЗУ

Разрядность входной шины данных WRITE_WIDTH Разрядность выходной шины данных READ_WIDTH Информационная емкость, кбит BRAM_SIZE Разрядность шины адреса ADDR Разрядность сигнала побайтной записи WE
36-19 36-19 36 10 4
18-10 11
9-5 12
4-3 13
2 14
1 15
18-10 36-19 36 11 2
18-10 11
9-5 12
4-3 13
2 14
1 15
9-5 36-19 36 12 1
18-10 12
9-5 12
4-3 13
2 14
1 15
4-3 36-19 36 13 1
18-10 13
9-5 13
4-3 13
2 14
1 15
2 36-19 36 14 1
18-10 14
9-5 14
4-3 14
2 14
1 15
1 36-19 36 15 1
18-10 15
9-5 15
4-3 15
2 15
1 15
18-10 18-10 18 10 2
9-5 11
4-3 12
2 13
1 14
9-5 18-10 18 11 1
9-5 11
4-3 12
2 13
1 14
4-3 18-10 18 12 1
9-5 12
4-3 12
2 13
1 14
2 18-10 18 13 1
9-5 13
4-3 13
2 13
1 14
1 18-10 18 14 1
9-5 14
4-3 14
2 14
1 14

Кроме того, в шаблоне описаний элементов однопортовой оперативной памяти, реализуемых в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT и Virtex-5 FXT, для ряда настраиваемых параметров по умолчанию установлены другие значения, а также расширен диапазон выбора значений разрядности представления данных. На рис. 27 представлен условный графический образ однопортово-го ОЗУ, описание которого создается с помощью шаблона Single Port RAM (BRAM_ SINGLE_MACRO).

Условный графический образ однопортового ОЗУ

Рис. 27. Условный графический образ однопортового ОЗУ

Synchronous FIFO (FIFO_SYNC_MACRO) является шаблоном, предназначенным для формирования описания экземпляра синхронного запоминающего устройства, работающего по принципу «первым вошел — первым вышел», которое реализуется на основе модулей блочной памяти Block RAM ПЛИС серии Virtex-5. Основу этого шаблона образует библиотечный макрос FIFO_SYNC_MACRO. В отличие от элементов FIFO-памяти, описания которых создаются на базе шаблона Dual Clock FIFO (FIFO_ DUALCLOCK_MACRO) в предыдущей части статьи (КиТ. 2010. № 5) в синхронных запоминающих устройствах, формируемых с помощью макроса FIFO_SYNC_MACRO, для портов чтения и записи данных используется один общий тактовый сигнал:

--FIFO_SYNC_MACRO : 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 : (FIFO_SYNC_MACRO_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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.alI;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

body---- >

-- FIFO_SYNC_MACRO: Synchronous First-In, First-Out (FIFO) RAM Buffer

-- Virtex-5

-- Xilinx HDL Language Template, version 11.4

FIFO_SYNC_MACRO_inst : FIFO_SYNC_MACRO generic map (

DEVICE => "VIRTEX5",

-- Target Device: "VIRTEX5, "VIRTEX6"

ALMOST_FULL_OFFSET => X"0080",

-- Sets almost full threshold

ALMOST_EMPTY_OFFSET => X"0080",

-- Sets the almost empty threshold

DATA_WIDTH => 0,

-- Valid values are 1-72 (37-72 only valid when FIFO_SIZE="36Kb")

FIFO_SIZE => "18Kb,

-- Target BRAM, "18Kb" or "36Kb" SIM_MODE => "SAFE")

-- Simulation) "SAFE" vs "FAST",

-- see "Synthesis and Simulation Design Guide" for

details port map (

ALMOSTEMPTY => ALMOSTEMPTY, -- Output almost

empty

ALMOSTFULL => ALMOSTFULL,

-- Output almost full DO => DO,

-- Output data EMPTY => EMPTY,

-- Output empty FULL => FULL,

-- Output full RDCOUNT => RDCOUNT,

-- Output read count RDERR => RDERR,

-- Output read error WRCOUNT => WRCOUNT,

-- Output write count WRERR => WRERR,

-- Output write error CLK => CLK,

-- Input clock DI => DI,

-- Input data RDEN => RDEN,

-- Input read enable RST => RST,

-- Input reset WREN => WREN

-- Input write enable );

-- End of FIFO_SYNC_MACRO_inst instantiation

Структура синхронных запоминающих устройств, функционирующих по принципу «первым вошел — первым вышел», с общим сигналом синхронизации портов записи и чтения данных, создаваемых с помощью макроса FIFO_SYNC_MACRO для последующей реализации на основе блочной памяти Block RAM ПЛИС серии Virtex-5, показана на рис. 28.

Структура элементов FIFO-памяти с общим сигналом синхронизации портов записи и чтения данных

Рис. 28. Структура элементов FIFO-памяти с общим сигналом синхронизации портов записи и чтения данных

Макрос FIFO_SYNC_MACRO предоставляет возможность создания описания элементов FIFO-памяти с общим тактовым сигналом портов записи и чтения информации с теми же вариантами комбинации информационной емкости и разрядности входной и выходной шин данных, что и макрос FIFO_DUALCLOCK_MACRO (Табл. 1. КиТ. 2010. № 5).

Настраиваемые параметры, предусмотренные в шаблоне Synchronous FIFO (FIFO_SYNC_MACRO), имеют то же предназначение, что и в макросе FIFO_DUALCLOCK_ MACRO. В системе условных обозначений интерфейсных портов макроса FIFO_SYNC_ MACRO, кроме наименований входов и выходов, представленных в шаблоне Dual Clock FIFO (FIFO_DUALCLOCK_MACRO), используется также идентификатор CLK, который соответствует входу тактового сигнала. На рис. 29 приведен условный графический образ запоминающего устройства FIFO с общим сигналом синхронизации портов записи и чтения данных, описание которого формируется на базе шаблона Synchronous FIFO (FIFO_SYNC_MACRO).

Условный графический образ элемента FIFO-памяти с общим сигналом синхронизации портов записи и чтения данных

Рис. 29. Условный графический образ элемента FIFO-памяти с общим сигналом синхронизации портов записи и чтения данных

True Dual Port RAM (BRAM_TDP_MACRO) содержит вариант конструкции описания элемента полнофункционального двухпортового ОЗУ, предназначенный для реализации на основе модулей блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT и Virtex-5 FXT. В отличие от одноименного шаблона, представленного в папке Spartan-6, в этом варианте используются дополнительные параметры настройки библиотечного макроса BRAM_TDP_MACRO, который является основой описания элементов полнофункциональной двухпортовой оперативной памяти. Эти параметры предназначены для инициализации содержимого ячеек формируемых ОЗУ с информационной емкостью 36 кбит. Кроме того, для ряда настраиваемых параметров этого макроса заданы другие значения, устанавливаемые по умолчанию:

--BRAM_TDP_MACRO : 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 : (BRAM_TDP_MACRO_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly

-- : reference and connect this function to the design

. -- : AH 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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

body---- >

-- BRAM_TDP_MACRO: True Dual Port RAM -- Virtex-5

-- Xilinx HDL Language Template, version 11.4

BRAM_TDP_MACRO_inst : BRAM_TDP_MACRO generic map (

BRAM_SIZE => "18Kb",

-- Target BRAM, "18Kb" or "36Kb" DEVICE => "VIRTEX5",

-- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

DOA_REG => 0,

-- Optional port A output register (0 or 1) DOB_REG => 0,

-- Optional port B output register (0 or 1) INIT_A => X"000000000",
-- Initial values on A output port

INIT_B => X"000000000",
-- Initial values on B output port INIT_FILE => "NONE",

READ_WIDTH_A => 0,

-- Valid values are 1-36 (19-36 only valid when BRAM_SIZE="36Kb")

READ_WIDTH_B => 0,

-- Valid values are 1-36 (19-36 only valid when BRAM_SIZE="36Kb")

SIM_COLLISION_CHECK => "ALL",

-- Collision check enable "ALL", "WARNING_ONLY",

-- "GENERATE_X_ONLY" or "NONE" SIM_MODE => "SAFE",

-- Simulation: "SAFE" vs "FAST",

-- see "Synthesis and Simulation Design Guide" for details SRVAL_A => X"000000000",
-- Set/Reset value for A port

output

SRVAL_B => X"000000000",
-- Set/Reset value for B port

output

WRITE_MODE_A => "WRITE_FIRST",

-- "WRITE_FIRST", "READ_FIRST" or "NO_CHANGE"

WRITE_MODE_B => "WRITE_FIRST",

-- "WRITE_FIRST", "READ_FIRST" or "NO_CHANGE"

WRITE_WIDTH_A => 0,

-- Valid values are 1, 2, 4, 9, 18 or 36 (36 only valid when BRAM_SIZE="36Kb")

WRITE_WIDTH_B => 0,

-- Valid values are 1, 2, 4, 9, 18 or 36 (36 only valid when BRAM_SIZE="36Kb")

-- The following INIT_xx declarations specify the initial contents of the RAM

INIT_00 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_01 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_02 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_03 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_04 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_05 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_3E => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_3F => X"00000000000000000000000000000000000000000000 00000000000000000000",

-- The next set of INIT_xx are valid when configured as 36Kb

INIT_40 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_41 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_42 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_43 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_44 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_45 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_7E => X"00000000000000000000000000000000000000000000 00000000000000000000",

INIT_7F => X"00000000000000000000000000000000000000000000 00000000000000000000",

-- The next set of INITP_xx are for the parity bits

INITP_00 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_01 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_02 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_03 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_04 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_05 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_06 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_07 => X"00000000000000000000000000000000000000000000 00000000000000000000",

-- The next set of INIT_xx are valid when configured as 36Kb

INITP_08 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_09 => X"00000000000000000000000000000000000000000000 00000000000000000000",

INITP_0A => X"0000000000000000000000000000000000000000000 000000000000000000000",

INITP_0B => X"0000000000000000000000000000000000000000000 000000000000000000000",

INITP_0C => X"0000000000000000000000000000000000000000000 000000000000000000000",

INITP_0D => X"0000000000000000000000000000000000000000000 000000000000000000000",

INITP_0E => X"0000000000000000000000000000000000000000000 000000000000000000000",

INITP_0F => X"0000000000000000000000000000000000000000000 000000000000000000000")

port map (

DOA => DOA,

-- Output port-A data DOB => DOB,

-- Output port-B data ADDRA => ADDRA,

-- Input port-A address

ADDRB => ADDRB,

-- Input port-B address CLKA => CLKA,

-- Input port-A clock CLKB => CLKB,

-- Input port-B clock DIA => DIA,

-- Input port-A data DIB => DIB,

-- Input port-B data ENA => ENA,

-- Input port-A enable ENB => ENB,

-- Input port-B enable REGCEA => REGCEA,

-- Input port-A output register enable REGCEB => REGCEB,

-- Input port-B output register enable RSTA => RSTA,

-- Input port-A reset RSTB => RSTB,

-- Input port-B reset WEA => WEA,

-- Input port-A write enable WEB => WEB

-- Input port-B write enable );

-- End of BRAM_TDP_MACRO_inst instantiation

Макрос BRAM_TDP_MACRO позволяет создавать описания элементов полнофункциональной двухпортовой оперативной памяти с теми же вариантами комбинации информационной емкости и разрядности входных и выходных шин, что и шаблон Single Port RAM (BRAM_SINGLE_MACRO) (табл. 3). На рис. 30 представлен условный графический образ элемента полнофункционального двухпортового ОЗУ, создаваемого с помощью шаблона True Dual Port RAM (BRAM_TDP_MACRO).

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

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

Шаблоны описаний экземпляров компонентов, выполненных на основе библиотечных макросов, предназначенных для реализации на базе специализированных аппаратных ресурсов ПЛИС серии Virtex-6

Шаблоны описаний экземпляров компонентов, выполненных на основе библиотечных макросов, предназначенных для последующей реализации на базе специализированных аппаратных блоков кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, расположены в разделе Virtex-6 папки Device Macro Instantiation. Подробная структура данного раздела показана на рис. 31.

Структура раздела Virtex-6 папки Device Macro Instantiation шаблонов языка VHDL

Рис. 31. Структура раздела Virtex-6 папки Device Macro Instantiation шаблонов языка VHDL

Структура раздела Virtex-6 в значительной степени подобна структуре каталога Virtex-5 (Рис. 16. КиТ. 2010. № 5). В состав подраздела DSP48 входят шаблоны описаний экземпляров компонентов, предназначенных для реализации на базе ресурсов аппаратных секций цифровой обработки сигналов DSP48E1, которые используются в архитектуре ПЛИС серии Virtex-6. Подраздел RAM объединяет в себе образцы конструкций, которые предназначены для описания элементов оперативных запоминающих устройств (ОЗУ) с различной организацией портов записи и чтения информации, выполняемых на основе модулей блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. После включения в состав разрабатываемого модуля VHDL-описания шаблонов, представленных в разделе Virtex-6, необходимо выполнить те же операции перемещения выражений ссылок на используемые библиотеки UNISIM, UNIMACRO и их пакеты vcomponents, что и при использовании аналогичных шаблонов из каталога Virtex-5.

Add/Subtract (ADDSUB_MACRO) включает в себя вариант конструкции, выполненной на основе библиотечного макроса ADDSUB_ MACRO, предназначенный для подготовки описаний сумматоров и вычитающих устройств для последующей реализации на базе ресурсов аппаратных секций цифровой обработки сигналов DSP48E1 в ПЛИС семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT:

-- ADDSUB_MACRO : 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 : (ADDSUB_MACRO_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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

body---- >

-- ADDSUB_MACRO: Variable width & latency - Adder / Subtrator implemented in a DSP48E -- Virtex-6

-- Xilinx HDL Language Template, version 11.4

ADDSUB_MACRO_inst : ADDSUB_MACRO generic map (

DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

LATENCY => 2,

-- Desired clock cycle latency, 0-2 WIDTH => 48)

-- Input / Output bus width, 1-48 port map (

CARRYOUT => CARRYOUT,

-- 1-bit carry-out output

signal

RESULT => RESULT,

-- Add/sub result output, width defined by WIDTH generic

A => A,

-- Input A bus, width defined by WIDTH generic ADD_SUB => ADD_SUB,

-- 1 -bit add/sub input, high selects add, low selects subtract

B => B,

-- Input B bus, width defined by WIDTH generic CARRYIN => CARRYIN,

-- 1-bit carry-in input CE => CE,

-- 1-bit clock enable input CLK =>CLK,

-- 1-bit clock input RST => RST

-- 1-bit active high synchronous reset );

-- End of ADDSUB_MACRO_inst instantiation

Назначение настраиваемых параметров и система условных обозначений интерфейсных портов комбинированных устройств, выполняющих операции сложения и вычитания, формируемых с помощью макроса ADDSUB_MACRO, были подробно рассмотрены при описании аналогичного шаблона, используемого для создания сумматоров/вычитающих устройств, реализуемых на основе аппаратных секций цифровой обработки сигналов DSP48A1 в ПЛИС семейств Spartan-6 LX и Spartan-6 LXT [12] (КиТ. 2010. № 4).

Обобщенная структурная схема компонентов, осуществляющих операции сложения и вычитания, описания которых создаются с помощью шаблона Add/Subtract (ADDSUB_MACRO) для последующей реализации на базе кристаллов программируемой логики серии Virtex-6, показана на рис. 32. Следует обратить внимание на то, что в составе формируемых сумматоров/вычитающих устройств могут быть задействованы входные и выходные буферные регистры. Наличие этих регистров позволяет применять конвейерную организацию обработки данных в проектируемых устройствах. Присутствие входных и выходных регистров в составе создаваемых компонентов определяется значением параметра LATENCY. Если данному параметру присваивается нулевое значение, то указанные регистры в структуре формируемых сумматоров/вычитающих устройств не используются. При единичном значении параметра LATENCY в составе соответствующих экземпляров рассматриваемых компонентов задействуется выходной регистр. В том случае, когда указанный параметр принимает значение, равное двум, в структуре формируемых элементов присутствуют как входные, так и выходные буферные регистры.

Обобщенная структурная схема сумматоров/вычитающих устройств

Рис. 32. Обобщенная структурная схема сумматоров/вычитающих устройств

Add and Multiple Accumulate (ADDMACC_ MACRO) представляет собой вариант применения библиотечного макроса ADDMACC_ MACRO для подготовки описания экземпляра компонента, выполняющего операции умножения с накоплением, с использованием предварительного сумматора, представленного в составе архитектуры аппаратных секций цифровой обработки сигналов DSP48E1 в кристаллах программируемой логики серии Virtex-6:

-- ADDMACC_MACRO : 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 : (ADDMACC_MACRO_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly

-- : reference and connect this function to the design.

-- : AH 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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

body---- >

-- ADDMACC_MACRO: Add and Multiple Accumulate Function implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

ADDMACC_MACRO_inst : ADDMACC_MACRO generic map (

DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX6", "SPARTAN6"

LATENCY => 4,

-- Desired clock cycle latency, 1-4 WIDTH_PREADD => 25,

-- Pre-Adder input bus width, 1-25 WIDTH_MULTIPLIER => 18,

-- Multiplier input bus width,

1-18

WIDTH_PRODUCT => 48)

-- MACC output width, 1-48

port map (

PRODUCT => PRODUCT,

-- MACC result output, width defined by WIDTH_PRODUCT generic

MULTIPLIER => MULTIPLIER,

-- Multiplier data input, width determined by WIDTH_MULTIPLIER generic

PREADDER1 => PREADDER1,

-- Preadder data input, width determined by WIDTH_PREADDER generic

PREADDER2 => PREADDER2,

-- Preadder data input, width determined by WIDTH_PREADDER generic

CARRYIN => CARRYIN,

-- 1-bit carry-in input CE => CE,

-- 1-bit input clock enable CLK => CLK,

-- 1-bit clock input LOAD => LOAD,

-- 1-bit accumulator load input LOAD_DATA => LOAD_DATA,

-- Accumulator load data input, width defined by WIDTH_PRODUCT generic

RST => RST

-- 1-bit input active high synchronous reset );

-- End of ADDMACC_MACRO_inst instantiation

В приведенном шаблоне используется та же совокупность настраиваемых параметров и та же система условных обозначений интерфейсных портов, что и в варианте применения макроса ADDMACC_MACRO для подготовки описаний умножителей-накопителей с функцией предварительного суммирования операндов, выполняемых на основе аппаратных модулей цифровой обработки сигналов DSP48A1 в ПЛИС семейств Spartan-6 LX и Spartan-6 LXT, который был рассмотрен в третьей части статьи (КиТ. 2010. № 4). При этом нужно учитывать, что разрядность входных шин предварительного сумматора в секциях ЦОС DSP48E1 кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT можно выбирать в более широком диапазоне значений, который составляет от 1 до 25 двоичных разрядов.

На рис. 33 представлена обобщенная структурная схема умножителей-накопителей с функцией предварительного суммирования операндов, для подготовки описаний которых используется шаблон Add and Multiple Accumulate (ADDMACC_MACRO). Аппаратные секции цифровой обработки сигналов DSP48E1 в ПЛИС серии Virtex-6 [11] предоставляют возможность выбора различных вариантов использования буферных регистров в этих компонентах. Каждому из этих вариантов соответствует определенное значение параметра LATENCY. При нулевом значении данного параметра указанные регистры в структуре формируемых элементов не используются. Единичное значение параметра LATENCY соответствует варианту использования одного буферного регистра, расположенного на выходе аппаратного умножителя. Если в структуре создаваемого компонента задействуются буферные регистры на выходе аппаратного умножителя и на входах предварительного сумматора или на выходе аккумулятора, то указанный параметр принимает значение, равное двум. В том случае, когда для параметра LATENCY задается значение, равное трем, в состав структуры формируемых умножителей-накопителей с функцией предварительного суммирования операндов включаются входные и выходные регистры, а также буферные регистры, расположенные на выходе аппаратного умножителя. При выборе максимального значения параметра LATENCY структура создаваемых элементов отличается от предыдущего варианта применением дополнительных буферных регистров на входах предварительного сумматора.

Обобщенная структурная схема умножителей-накопителей с функцией предварительного суммирования операндов

Рис. 33. Обобщенная структурная схема умножителей-накопителей с функцией предварительного суммирования операндов

Условный графический образ умножителя-накопителя с функцией предварительного суммирования операндов, формируемого с помощью шаблона Add and Multiple Accumulate (ADDMACC_MACRO), изображен на рис. 34.

Условный графический образ умножителя-накопителя с функцией предварительного суммирования операндов

Рис. 34. Условный графический образ умножителя-накопителя с функцией предварительного суммирования операндов

Counter/Terminal Count (COUNTER_TC_ MACRO) содержит вариант конструкции, выполненной на основе библиотечного макроса COUNTER_TC_MACRO, которая может применяться для подготовки описаний счетчиков с заданной разрядностью и модулем счета, реализуемых на базе ресурсов аппаратных секций цифровой обработки сигналов DSP48 E1 кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT:

--COUNTER_TC_MACRO : 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 : (COUNTER_TC_MACRO_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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

-- COUNTER_TC_MACRO: Counter with terminal count implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

COUNTER_TC_MACRO_inst : COUNTER_TC_MACRO generic map (

COUNT_BY => X"000000000001",

-- Count by value DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX5", "VIRTEX6" DIRECTION => "UP"

-- Counter direction "UP" or "DOWN"

RESET_UPON_TC => FALSE,

-- Reset counter upon terminal count, TRUE or FALSE TC_VALUE => X"000000000000",

-- Terminal count value WIDTH_DATA => 48)

-- Counter output bus width, 1-48 port map (

Q => Q,

-- Counter ouput, width determined by WIDTH_DATA generic TC => TC,

-- 1-bit terminal count output, high = terminal count is reached CLK => CLK,

-- 1-bit clock input CE => CE,

-- 1-bit clock enable input RST=> RST

-- 1-bit active high synchronous reset );

-- End of COUNTER_TC_MACRO_inst instantiation

Система условных обозначений входных и выходных портов, используемая в описании интерфейса макроса счетчика с заданной разрядностью и модулем счета COUNTER_TC_MACRO, и совокупность параметров настройки были представлены при рассмотрении одноименного шаблона, расположенного в папке Virtex-5 (КиТ. 2010. № 5).

Equiality Comparator (EQ_COMPARE_MACRO) предоставляет вариант применения библиотечного макроса EQ_COMPARE_MACRO для формирования описания экземпляра цифрового компаратора,

предназначенного для реализации на основе ресурсов аппаратных секций цифровой обработки сигналов DSP48E1 кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT:

--EQ_COMPARE_MACRO : 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 : (EQ_COMPARE_MACRO_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 four statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

-- EQ_COMPARE_MACRO: Equiality Comparator implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

EQ_COMPARE_MACRO_inst : EQ_COMPARE_MACRO generic map (

DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX5", "VIRTEX6"

LATENCY => 2,

-- Desired clock cycle latency, 0-3

MASK => X"000000000000",
-- Select bits to be masked, must set

-- SEL_MASK = "MASK" SEL_MASK => "MASK",

-- "MASK" = use MASK generic,

-- "DYNAMIC_PATTERN = use DYNAMIC_PATTERN input bus

SEL_PATTERN => "DYNAMIC_PATTERN",

-- "DYNAMIC_PATTERN" = use DYNAMIC_ PATTERN input bus

-- "STATIC_PATTERN" = use STATIC_PATTERN generic STATIC_PATTERN => X"000000000000",

-- Specify static pattern,

-- must set SEL_PATTERN = "STATIC_PATTERN WIDTH => 48)

-- Comparator output bus width, 1-48 port map (

Q => Q,

-- 1-bit output indicating a match

CE => CE,

-- 1-bit active high input clock enable input

CLK => CLK,

-- 1-bit positive edge clock input

DATA_IN => DATA_IN

-- Input Data Bus, width determined by WIDTH generic DYNAMIC_PATTERN => DYNAMIC_PATTERN,

-- Input Dynamic Match/Mask Bus, width determined by WIDTH generic

RST=> RST

-- 1-bit input active high reset );

-- End of EQ_COMPARE_MACRO_inst instantiation

Обобщенная структурная схема цифровых компараторов, описания которых формируются с помощью шаблона Equiality Comparator (EQ_COMPARE_MACRO) для последующей реализации на базе ПЛИС серии Virtex-6, приведена на рис. 35. Количество буферных регистров, задействованных в составе компонентов, создаваемых на основе макроса EQ_COMPARE_MACRO, определяется значением параметра LATENCY. Нулевое значение этого параметра соответствует варианту компаратора, не содержащему буферных регистров. При выборе единичного значения указанного параметра в состав структуры формируемого компонента включается выходной регистр. В случае использования значения параметра LATENCY, равного двум, на входах и выходе создаваемого компаратора задействуется по одному буферному регистру. Если данный параметр принимает значение, равное трем, то в составе структуры компонентов, формируемых на основе макроса EQ_COMPARE_MACRO, применяется максимально возможное количество буферных регистров.

Обобщенная структурная схема цифровых компараторов

Рис. 35. Обобщенная структурная схема цифровых компараторов

Информация о системе условных обозначений интерфейсных портов и параметрах настройки макроса EQ_COMPARE_MACRO была приведена при описании одноименного шаблона, представленного в папке Virtex-5.

Loadable counter (COUNTER_LOAD_ MACRO) включает в себя образец использования библиотечного макроса COUNTER_ LOAD_MACRO для подготовки описания реверсивного счетчика с параллельной загрузкой данных, реализуемого на базе ресурсов аппаратной секции цифровой обработки сигналов DSP48E1 кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT:

--COUNTER_LOAD_MACRO : 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 : (COUNTER_LOAD_MACRO_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly

-- : reference and connect this function to the design.

-- : AH 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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

body---- >

-- COUNTER_LOAD_MACRO: Loadable variable counter implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

COUNTER_LOAD_MACRO_inst : COUNTER_LOAD_MACRO

generic map (

COUNT_BY => X"000000000001",

-- Count by value DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

WIDTH_DATA => 48)

-- Counter output bus width, 1-48

port map (

Q => Q,

-- Counter ouput, width determined by WIDTH_ DATA generic

CLK => CLK,

-- 1-bit clock input CE => CE,

-- 1-bit clock enable input DIRECTION => DIRECTION,

-- 1-bit up/down count direction input, high is count up

LOAD => LOAD,

-- 1-bit active high load input LOAD_DATA => LOAD_DATA,

-- Counter load data, width determined by WIDTH_DATA generic

RST => RST

-- 1-bit active high synchronous reset );

-- End of COUNTER_LOAD_MACRO_inst instantiation

В представленной конструкции применяется та же система условных обозначений интерфейсных портов и параметров настройки макроса реверсивного счетчика с параллельной загрузкой данных, которая была подробно рассмотрена при описании шаблона Loadable counter (COUNTER_LOAD_ MACRO), находящегося в папке Spartan-6.

Multiplier (MULT_MACRO) представляет собой вариант конструкции, выполненной на основе библиотечного макроса MULT_MACRO, который предназначен для создания описаний аппаратных умножителей, реализуемых на базе ресурсов аппаратных секций цифровой обработки сигналов DSP48E1 в ПЛИС серии Virtex-6:

-- MULT_MACRO : 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 : (MULT_MACRO_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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

-- MULT_MACRO: Multiply Function implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

MULT_MACRO_inst : MULT_MACRO generic map (

DEVICE => "VIRTEX6",

-- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

LATENCY => 3,

-- Desired clock cycle latency, 0-4 WIDTH_A => 18,

-- Multiplier A-input bus width, 1-25 WIDTH_B => 18)

-- Multiplier B-input bus width, 1-18 port map (

P => P,

-- Multiplier ouput bus, width determined by WIDTH_P generic

A => A,

-- Multiplier input A bus, width determined by WIDTH_A generic

B => B,

-- Multiplier input B bus, width determined by WIDTH_B generic

CE => CE,

-- 1-bit active high input clock enable CLK => CLK,

-- 1-bit positive edge clock input RST => RST

-- 1-bit input active high reset );

-- End of MULT_MACRO_inst instantiation

В составе умножителей, формируемых с помощью шаблона Multiplier (MULT_ MACRO) для последующей реализации на базе кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, могут быть задействованы входные и выходные буферные элементы. На рис. 36 изображена обобщенная структурная схема элементов, создаваемых на основе макроса MULT_MACRO. В этих элементах могут применяться те же комбинации буферных регистров, что и в умножителях-накопителях с предварительным сумматором, создаваемых с помощью шаблона Add and Multiple Accumulate (ADDMACC_MACRO). Значения параметра LATENCY, которые соответствуют каждой из этих комбинаций, были рассмотрены выше при описании варианта использования макроса ADDMACC_MACRO для подготовки компонентов, выполняющих операции умножения с накоплением с функцией предварительного суммирования операндов, реализуемых на базе ПЛИС серии Virtex-6.

Обобщенная структурная схема умножителей

Рис. 36. Обобщенная структурная схема умножителей

Multiply Accumulate (MACC_MACRO) содержит образец варианта применения библиотечного макроса MACC_MACRO для подготовки описания экземпляра элемента, выполняющего операции умножения с накоплением, реализуемого на основе ресурсов аппаратной секции цифровой обработки сигналов DSP48E1 кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

-- MACC_MACRO : 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 : (MACC_MACRO_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 four statements and paste them before the

-- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

Library UNIMACRO;

use UNIMACRO.vcomponents.all;

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

-- MACC_MACRO: Multiple Accumulate Function implemented in a DSP48E

-- Virtex-6

-- Xilinx HDL Language Template, version 11.4

MACC_MACRO_inst : MACC_MACRO

generic map (

DEVICE => "VIRTEX6", -- Target Device: "VIRTEX5", "VIRTEX6", "SPARTAN6"

LATENCY => 3,

-- Desired clock cycle latency, 1-4 WIDTH_A => 25,

-- Multiplier A-input bus width, 1-25 WIDTH_B => 18,

-- Multiplier B-input bus width, 1-18 WIDTH_P => 48)

-- Accumulator output bus width, 1-48

port map (

P => P,

-- MACC ouput bus, width determined by WIDTH_P

generic

A => A,

-- MACC input A bus, width determined by WIDTH_A generic

ADDSUB => ADDSUB,

-- 1-bit add/sub input, high selects add, low selects subtract

B => B,

-- MACC input B bus, width determined by WIDTH_B generic

CARRYIN => CARRYIN,

-- 1-bit carry-in input to accumulator

CE => CE,

-- 1-bit active high input clock enable

CLK => CLK,

-- 1-bit positive edge clock input

LOAD => LOAD,

-- 1-bit active high input load accumulator

enable

LOAD_DATA => LOAD_DATA,

-- Load accumulator input

data,

-- width determined by WIDTH_P generic RST => RST

-- 1-bit input active high reset );

-- End of MACC_MACRO_inst instantiation

В шаблоне Multiply Accumulate (MACC_ MACRO), предназначенном для создания VHDL-описаний умножителей-накопителей, реализуемых на базе ПЛИС серии Virtex-6, предусмотрена возможность использования в составе формируемых компонентов буферных регистров для организации конвейерной обработки данных. Обобщенная структурная схема элементов, осуществляющих операции умножения с накоплением, создаваемых на основе макроса MACC_MACRO, представлена на рис. 37. В составе формируемых умножителей-накопителей могут быть задействованы те же комбинации буферных регистров, что и в элементах, описания которых выполняются на основе шаблона Add and Multiple Accumulate (ADDMACC_MACRO).

Обобщенная структурная схема умножителей-накопителей

Рис. 37. Обобщенная структурная схема умножителей-накопителей

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

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

Литература

  1. Кузелин М. О., Кнышев Д. А., Зотов В. Ю. Современные семейства ПЛИС фирмы Xilinx. Справочное пособие. М.: Горячая линия -Телеком, 2004.
  2. Бибило П. Н. Основы языка VHDL. М.: Солон-Р, 2000.
  3. Бибило П. Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.
  4. Уэйкерли Дж. Ф. Проектирование цифровых устройств. Том 1. М.: Постмаркет, 2002.
  5. Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. М.: Солон-Пресс, 2003.
  6. Зотов В. Инструментальный комплект Spartan-3 Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2005. № 7.
  7. Зотов В. Новый инструментальный комплект Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2006. № 10.
  8. Зотов В. Новый инструментальный комплект Spartan-3A Starter Kit для практического освоения методов проектирования и отладки цифровых устройств с аппаратной и программной реализацией операций, реализуемых на основе ПЛИС семейств FPGA фирмы Xilinx // Компоненты и технологии. 2007. № 9.
  9. Зотов В. Новый инструментальный комплект от компании Avnet на основе ПЛИС FPGA семейства Spartan-3 A фирмы Xilinx // Компоненты и технологии. 2008. № 8.
  10. Зотов В. Инструментальный модуль компании Avnet для отладки проектов встраиваемых систем, разрабатываемых на базе нового семейства ПЛИС FPGA фирмы Xilinx Virtex-5 FXT // Компоненты и технологии. 2008. № 9.
  11. Зотов В. Особенности архитектуры нового поколения высокопроизводительных ПЛИС FPGA фирмы Xilinx серии Virtex-6 // Компоненты и технологии. 2009. № 8.
  12. Зотов В. Особенности архитектуры нового поколения ПЛИС FPGA фирмы Xilinx серии Spartan-6 // Компоненты и технологии. 2009. № 9.
  13. Зотов В. Новое семейство высокопроизводительных ПЛИС с архитектурой FPGA фирмы Xilinx Virtex-6 HXT // Компоненты и технологии. 2010. № 1.
  14. IEEE Standard VHDL Language Reference Manual. IEEE Std 1076-2002.
  15. Суворова Е. А., Шейнин Ю. Е. Проектирование цифровых систем на VHDL. СПб.: БХВ-Петербург, 2003.
  16. Сергиенко A. M. VHDL для проектирования вычислительных устройств. Киев: ЧП «Корнейчук», ООО «ТИД "ДС"», 2003.
  17. Зотов В. Проектирование цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с использованием средств CORE Generator // Компоненты и технологии. 2006. № 12. 2007. № 1.
  18. Зотов В. Разработка компонентов устройств цифровой обработки сигналов, реализуемых на базе аппаратных модулей DSP48E в ПЛИС FPGA серии Virtex-5, с помощью «мастера» Architecture Wizard САПР серии Xilinx ISE // Компоненты и технологии. 2008. № 12. 2009. № 1, 4-7.

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

 


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

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