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

Опрос

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

Реклама

 

2012 №2

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

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


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

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

Модули блочной памяти Block RAM ПЛИС серии Virtex-5 поддерживают возможность конфигурирования в виде запоминающих устройств, функционирующих по принципу «первым вошел – первым вышел» (FIFO) с различным объемом и организацией. Для подготовки описаний элементов FIFO-памяти, реализуемых на базе модулей блочной памяти кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, предоставляются четыре библиотечных примитива, каждый из которых соответствует определенному варианту информационной емкости и организации входного и выходного портов.

16k+2k Parity FIFO (FIFO18) является шаблоном описания элемента запоминающего устройства FIFO с информационной емкостью 16 384 бит и дополнительным объемом 2048 бит, предназначенным для осуществления контроля четности при реализации на основе модуля блочной памяти Block RAM ПЛИС серии Virtex-5. Этот шаблон можно применять для подготовки описаний элементов FIFO-памяти со следующими вариантами организации входного и выходного портов: 4096×4 разряда, 2048×9 разрядов и 1024×18 разрядов:

-- FIFO18 : 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 (FIFO18_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : connect this function to the design. All inputs
-- : and outputs must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- FIFO18: 16k+2k Parity Synchronous/Asynchronous BlockRAM FIFO BlockRAM Memory
-- Virtex-5
-- Xilinx HDL Language Template, version 13.2
--
FIFO18_inst : FIFO18
generic map (
ALMOST_FULL_OFFSET => X“080”, -- Sets almost full threshold
ALMOST_EMPTY_OFFSET => X“080”, -- Sets the almost empty threshold
DATA_WIDTH => 4, -- Sets data width to 4, 9, or 18
DO_REG => 1, -- Enable output register ( 0 or 1)
-- Must be 1 if the EN_SYN = FALSE
EN_SYN => FALSE, -- Specified FIFO as Asynchronous (FALSE) or Synchronous (TRUE)
FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE
SIM_MODE => “SAFE”) -- Simulation: “SAFE” vs “FAST”, see “Synthesis and Simulation
-- Design Guide” for details
port map (
ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit almost empty output flag
ALMOSTFULL => ALMOSTFULL, -- 1-bit almost full output flag
DO => DO, -- 32-bit data output
DOP => DOP, -- 2-bit parity data output
EMPTY => EMPTY, -- 1-bit empty output flag
FULL => FULL, -- 1-bit full output flag
RDCOUNT => RDCOUNT, -- 12-bit read count output
RDERR => RDERR, -- 1-bit read error output
WRCOUNT => WRCOUNT, -- 12-bit write count output
WRERR => WRERR, -- 1-bit write error
DI => DI, -- 16-bit data input
DIP => DIP, -- 2-bit parity input
RDCLK => RDCLK, -- 1-bit read clock input
RDEN => RDEN, -- 1-bit read enable input
RST => RST, -- 1-bit reset input
WRCLK => WRCLK, -- 1-bit write clock input
WREN => WREN -- 1-bit write enable input
);
-- End of FIFO18_inst instantiation

В основе приведенного шаблона — оператор создания экземпляра библиотечного примитива FIFO18, который представляет элемент запоминающего устройства, функционирующего по принципу «первым вошел – первым вышел» с указанной информационной емкостью, конфигурируемый на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT. В этом библиотечном примитиве для выбора требуемой конфигурации формируемого элемента FIFO-памяти предусмотрены следующие параметры настройки:

  • ALMOST_FULL_OFFSET — определяет количество слов данных, на которое отличаются условия формирования активного уровня сигнала на выходах FULL и ALMOSTFULL (по умолчанию присваивается значение X“080”).
  • ALMOST_EMPTY_OFFSET — задает число слов данных, на которое должны отличаться условия формирования активного уровня сигнала на выходах EMPTY и ALMOSTEMPTY (по умолчанию предлагается значение X“080”).
  • DATA_WIDTH — указывает разрядность входного и выходного портов формируемого экземпляра запоминающего устройства FIFO (по умолчанию устанавливается разрядность слов данных, равная четырем).
  • DO_REG — предоставляет возможность использования выходного регистра (по умолчанию выходной регистр задействуется в создаваемом элементе FIFO-памяти).
  • EN_SYN — определяет тип формируемого запоминающего устройства FIFO: синхронный или асинхронный (по умолчанию конфигурируется асинхронный элемент FIFO-памяти — с различными входами синхронизации портов записи и чтения данных).
  • FIRST_WORD_FALL_THROUGH — позволяет в создаваемом элементе использовать режим FWFT (по умолчанию для этого параметра предлагается значение FALSE, блокирующее применение указанной функции).
  • SIM_MODE — устанавливает режим моделирования формируемого экземпляра запоминающего устройства FIFO.

В состав системы условных обозначений входов и выходов, используемых в описании интерфейса элементов FIFO-памяти, создаваемых с помощью шаблона 16k+2k Parity FIFO (FIFO18), входят те же идентификаторы, что и в библиотечном примитиве FIFO16, рассмотренном в 23-й части статьи.

Условный графический образ элемента запоминающего устройства, функционирующего по принципу «первым вошел – первым вышел», описание которого формируется с использованием шаблона 16k+2k Parity FIFO (FIFO18) для последующей реализации на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5, приведен на рис. 392.

Образ элемента FIFO-памяти, формируемого с помощью шаблона 16k+2k Parity FIFO

Рис. 392. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона 16k+2k Parity FIFO (FIFO18)

32k+4k Parity FIFO (FIFO36) представляет собой образец VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT в виде запоминающего устройства, работающего по принципу «первым вошел – первым вышел», с информационной емкостью 32 768 бит и дополнительным объемом 4096 бит, применяемым для организации контроля четности записываемых и считываемых данных. В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива FIFO36, который соответствует указанному варианту конфигурирования модуля блочной памяти ПЛИС серии Virtex-5. Этот библиотечный примитив позволяет формировать описания элементов FIFO-памяти с одним из четырех возможных вариантов организации входного и выходного портов: 8192×4 разряда, 4096×9 разрядов, 2048×18 разрядов и 1024×36 разрядов:

-- FIFO36 : 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 (FIFO36_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : connect this function to the design. All inputs
-- : and outputs must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- FIFO36: 32k+4k Parity Synchronous/Asynchronous BlockRAM FIFO BlockRAM Memory
-- Virtex-5
-- Xilinx HDL Language Template, version 13.2
--
FIFO36_inst : FIFO36
generic map (
ALMOST_FULL_OFFSET => X“0080”, -- Sets almost full threshold
ALMOST_EMPTY_OFFSET => X“0080”, -- Sets the almost empty threshold
DATA_WIDTH => 4, -- Sets data width to 4, 9, 18, or 36
DO_REG => 1, -- Enable output register ( 0 or 1)
-- Must be 1 if the EN_SYN = FALSE
EN_SYN => FALSE, -- Specified FIFO as Asynchronous (FALSE) or
-- Synchronous (TRUE)
FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE
SIM_MODE => “SAFE”) -- Simulation: “SAFE” vs “FAST”, see “Synthesis and Simulation
-- Design Guide” for details
port map (
ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit almost empty output flag
ALMOSTFULL => ALMOSTFULL, -- 1-bit almost full output flag
DO => DO, -- 32-bit data output
DOP => DOP, -- 4-bit parity data output
EMPTY => EMPTY, -- 1-bit empty output flag
FULL => FULL, -- 1-bit full output flag
RDCOUNT => RDCOUNT, -- 13-bit read count output
RDERR => RDERR, -- 1-bit read error output
WRCOUNT => WRCOUNT, -- 13-bit write count output
WRERR => WRERR, -- 1-bit write error
DI => DI, -- 32-bit data input
DIP => DIP, -- 4-bit parity input
RDCLK => RDCLK, -- 1-bit read clock input
RDEN => RDEN, -- 1-bit read enable input
RST => RST, -- 1-bit reset input
WRCLK => WRCLK, -- 1-bit write clock input
WREN => WREN -- 1-bit write enable input
);
-- End of FIFO36_inst instantiation

В библиотечном примитиве FIFO36 используются те же параметры настройки и система условных обозначений входов и выходов, что и в предыдущем шаблоне. На рис. 393 показан условный графический образ элемента запоминающего устройства FIFO, формируемого с помощью шаблона 32k+4k Parity FIFO (FIFO36) в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.

Образ элемента FIFO-памяти, формируемого с помощью шаблона 32k+4k Parity FIFO

Рис. 393. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона 32k+4k Parity FIFO (FIFO36)

Для увеличения информационной емкости формируемого запоминающего устройства, работающего по принципу «первым вошел – первым вышел», может применяться каскадное соединение нескольких элементов FIFO-памяти. Структурная схема, изображенная на рис. 394, демонстрирует пример каскадного соединения трех элементов, создаваемых с помощью шаблона 32k+4k Parity FIFO (FIFO36), для реализации запоминающего устройства FIFO с организацией входного и выходного портов 81 924 разряда.

Схема каскадного соединения трех элементов FIFO-памяти

Рис. 394. Схема каскадного соединения трех элементов FIFO-памяти с организацией 8192×4 разряда

36x18k FIFO (FIFO18_36) содержит шаблон описания элемента FIFO-памяти с информационной емкостью 18 432 бита и организацией 512×36 разрядов и поддержкой контроля четности, реализуемого на основе модуля блочной памяти Block RAM ПЛИС серии Virtex-5. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива FIFO18_36, который представляет соответствующий вариант конфигурирования модуля блочной памяти в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT:

-- FIFO18_36 : 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 (FIFO18_36_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : connect this function to the design. All inputs
-- : and outputs must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- FIFO18_36: 36x18k Synchronous/Asynchronous BlockRAM FIFO
-- Virtex-5
-- Xilinx HDL Language Template, version 13.2
--
FIFO18_36_inst : FIFO18_36
generic map (
ALMOST_FULL_OFFSET => X“0080”, -- Sets almost full threshold
ALMOST_EMPTY_OFFSET => X“0080”, -- Sets the almost empty threshold
DO_REG => 1, -- Enable output register (0 or 1)
-- Must be 1 if EN_SYN = FALSE
EN_SYN => FALSE, -- Specifies FIFO as Asynchronous (FALSE)
-- or Synchronous (TRUE)
FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE
SIM_MODE => “SAFE”) -- Simulation: “SAFE” vs “FAST”, see “Synthesis and Simulation
-- Design Guide” for details
port map (
ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit almost empty output flag
ALMOSTFULL => ALMOSTFULL, -- 1-bit almost full output flag
DO => DO, -- 32-bit data output
DOP => DOP, -- 4-bit parity data output
EMPTY => EMPTY, -- 1-bit empty output flag
FULL => FULL, -- 1-bit full output flag
RDCOUNT => RDCOUNT, -- 9-bit read count output
RDERR => RDERR, -- 1-bit read error output
WRCOUNT => WRCOUNT, -- 9-bit write count output
WRERR => WRERR, -- 1-bit write error
DI => DI, -- 32-bit data input
DIP => DIP, -- 4-bit parity input
RDCLK => RDCLK, -- 1-bit read clock input
RDEN => RDEN, -- 1-bit read enable input
RST => RST, -- 1-bit reset input
WRCLK => WRCLK, -- 1-bit write clock input
WREN => WREN -- 1-bit write enable input
);
-- End of FIFO18_36_inst instantiation

Условный графический образ элемента запоминающего устройства, функционирующего по принципу «первым вошел – первым вышел», реализуемого на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5, для подготовки описания которого применяется шаблон 36x18k FIFO (FIFO18_36), приведен на рис. 395.

Образ элемента FIFO-памяти, формируемого с помощью шаблона 36x18k FIFO

Рис. 395. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона 36x18k FIFO (FIFO18_36)

72x36k FIFO/w ECC (FIFO36_72) включает в себя образец VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT в виде запоминающего устройства, работающего по принципу «первым вошел – первым вышел», информационной емкостью 36 864 бит с организацией портов записи и чтения данных 512×72 разряда и встроенной схемой контроля и коррекции ошибок ECC:

-- FIFO36_72 : 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 (FIFO36_72_inst) and/or the port declarations
-- code : after the “=>” assignment maybe changed to properly
-- : connect this function to the design. All inputs
-- : and outputs must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- FIFO36_72: 72x36k Synchronous/Asynchronous BlockRAM FIFO /w ECC
-- Virtex-5
-- Xilinx HDL Language Template, version 13.2
--
FIFO36_72_inst : FIFO36_72
generic map (
ALMOST_FULL_OFFSET => X“0080”, -- Sets almost full threshold
ALMOST_EMPTY_OFFSET => X“0080”, -- Sets the almost empty threshold
DO_REG => 1, -- Enable output register (0 or 1)
-- Must be 1 if EN_SYN = FALSE
EN_ECC_READ => FALSE, -- Enable ECC decoder, TRUE or FALSE
EN_ECC_WRITE => FALSE, -- Enable ECC encoder, TRUE or FALSE
EN_SYN => FALSE, -- Specifies FIFO as Asynchronous (FALSE) or Synchronous (TRUE)
FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE
SIM_MODE => “SAFE”) -- Simulation: “SAFE” vs “FAST”, see “Synthesis and Simulation
-- Design Guide” for details
port map (
ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit almost empty output flag
ALMOSTFULL => ALMOSTFULL, -- 1-bit almost full output flag
DBITERR => DBITERR -- 1-bit double bit error status output
SBITERR => SBITERR, -- 1-bit single bit error status output
DO => DO, -- 64-bit data output
DOP => DOP, -- 4-bit parity data output
ECCPARITY => ECCPARITY -- 8-bit generated error correction parity
EMPTY => EMPTY, -- 1-bit empty output flag
FULL => FULL, -- 1-bit full output flag
RDCOUNT => RDCOUNT, -- 9-bit read count output
RDERR => RDERR, -- 1-bit read error output
WRCOUNT => WRCOUNT, -- 9-bit write count output
WRERR => WRERR, -- 1-bit write error
DI => DI, -- 64-bit data input
DIP => DIP, -- 4-bit parity input
RDCLK => RDCLK, -- 1-bit read clock input
RDEN => RDEN, -- 1-bit read enable input
RST => RST, -- 1-bit reset input
WRCLK => WRCLK, -- 1-bit write clock input
WREN => WREN -- 1-bit write enable input
);
-- End of FIFO36_72_inst instantiation

Основу приведенной конструкции составляет оператор создания экземпляра библиотечного примитива FIFO36_72, который представляет указанный вариант конфигурирования модуля блочной памяти Block RAM ПЛИС серии Virtex-5. В этом библиотечном примитиве в большинстве своем используются параметры настройки, рассмотренные при изучении шаблона 16k+2k Parity FIFO (FIFO18). Кроме того, в шаблоне 72x36k FIFO/w ECC (FIFO36_72) предусмотрены дополнительные настраиваемые параметры:

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

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

В состав системы условных обозначений входов и выходов, применяемых в описании интерфейса элементов запоминающих устройств FIFO, формируемых с помощью шаблона 72x36k FIFO/w ECC (FIFO36_72), входят следующие идентификаторы:

  • ALMOSTEMPTY — выход сигнала, информирующего о том, что не более заданного количества слов данных может быть считано из сформированного элемента FIFO-памяти.
  • ALMOSTFULL — выход сигнала, предупреждающего о том, что в запоминающее устройство FIFO может быть записано не более указанного количества слов данных.
  • DBITERR — выход сигнала, сообщающего о наличии двух ошибочных бит данных.
  • SBITERR — выход сигнала, информирующего о присутствии одного ошибочного бита данных.
  • DO — выходная 64-разрядная шина данных, на которую выводится информация, считываемая из запоминающего устройства FIFO.
  • DOP — выходная 8-разрядная шина, предназначенная для организации контроля четности считываемых информационных данных.
  • ECCPARITY — выходная 8-разрядная шина, на которую поступает код, формируемый встроенной схемой контроля и коррекции ошибок ECC.
  • EMPTY — выход сигнала, активный уровень которого предупреждает об опустошении запоминающего устройства (всех ячеек FIFO-памяти) и невозможности осуществления операции чтения новых данных.
  • FULL — выход сигнала, активный уровень которого сообщает о заполнении всего объема запоминающего устройства FIFO (всех ячеек FIFO-памяти) и невозможности осуществления операции записи новых данных.
  • RDCOUNT — выходная 9-разрядная шина, на которую выводится текущее значение счетчика количества считанных слов данных.
  • RDERR — выход сигнала, активный уровень которого информирует об ошибке при выполнении операции чтения слова данных из элемента FIFO-памяти.
  • WRCOUNT — выходная 9-разрядная шина, на которой отображается текущее значение счетчика числа записанных слов данных.
  • WRERR — выход сигнала, информирующего об ошибке при выполнении операции записи слова данных в запоминающее устройство FIFO.
  • DI — входная 64-разрядная шина, на которую поступают информационные данные, записываемые в запоминающее устройство FIFO.
  • DIP — входная 8-разрядная шина, используемая для контроля четности записываемых информационных данных.
  • RDCLK — вход сигнала синхронизации для порта чтения данных из элемента FIFO-памяти.
  • RDEN — вход сигнала, разрешающего выполнение операции чтения (извлечения) данных из запоминающего устройства FIFO.
  • RST — вход сигнала сброса.
  • WRCLK — вход сигнала синхронизации для порта записи данных в элемент запоминающего устройства FIFO.
  • WREN — вход сигнала разрешения операции записи данных в элемент FIFO-памяти.

На рис. 396 представлен условный графический образ элемента запоминающего устройства, функционирующего по принципу «первым вошел – первым вышел», описание которого создается с помощью шаблона 72x36k FIFO/w ECC (FIFO36_72) для последующей реализации на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.

Образ элемента FIFO-памяти, формируемого с помощью шаблона 72x36k FIFO/w ECC

Рис. 396. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона 72x36k FIFO/w ECC (FIFO36_72)

Для формирования запоминающих устройств FIFO с более высокой разрядностью входного и выходного портов можно применять параллельное соединение нескольких элементов, для подготовки описаний которых используются рассмотренные шаблоны. В качестве примера на рис. 397 изображена структурная схема запоминающего устройства, функционирующего по принципу «первым вошел – первым вышел», с организацией портов записи и чтения данных 512×144 разряда, выполненная на основе двух элементов FIFO-памяти, описание которых создается с помощью шаблона 72x36k FIFO/w ECC (FIFO36_72).

Структура элемента FIFO-памяти

Рис. 397. Структура элемента FIFO-памяти с организацией 512×144 разряда

System Monitor (SYSMON) представляет собой шаблон VHDL-описания модуля системного мониторинга ПЛИС серии Virtex-5. В состав архитектуры кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT входит модуль System Monitor, предоставляющий возможность контроля значений температуры кристалла, уровней напряжений питания, а также измерения значений 17 внешних сигналов, подключаемых к соответствующим аналоговым входам. Структурная схема этого модуля изображена на рис. 398.

Схема модуля системного мониторинга System Monitor

Рис. 398. Структурная схема модуля системного мониторинга System Monitor ПЛИС серии Virtex-5

Основные функциональные блоки этой схемы:

  • 10-разрядный АЦП;
  • встроенный датчик температуры;
  • интегрированный датчик питающих напряжений;
  • мультиплексор внешних аналоговых сигналов;
  • управляющая логика Control Logic;
  • регистры состояния Status Registers;
  • регистры управления Control Registers;
  • порт динамического реконфигурирования Dynamic Reconfiguration Port (DRP).

Блок АЦП, входящий в состав модуля системного мониторинга, позволяет выполнять преобразование аналоговых сигналов в цифровую форму с максимальной частотой дискретизации, достигающей 200 000 выборок/с, и 10-разрядным разрешением. Передаточная характеристика аналого-цифрового преобразователя модуля System Monitor показана на рис. 399.

Передаточная характеристика АЦП

Рис. 399. Передаточная характеристика АЦП модуля System Monitor

Встроенный датчик температуры модуля System Monitor предоставляет возможность измерения соответствующего параметра кристалла в диапазоне от –40 до +125 °C с точностью ±4 °C. На рис. 400 представлена передаточная характеристика блока измерения температуры, включающего в себя датчик и АЦП.

Передаточная характеристика блока измерения температуры

Рис. 400. Передаточная характеристика блока измерения температуры модуля System Monitor

Интегрированный датчик напряжения модуля системного мониторинга применяется для контроля уровней различных напряжений питания ПЛИС, включая напряжения VCCINT, VCCAUX и VREF. Этот датчик обеспечивает возможность измерения уровней питающих напряжений в диапазоне от 0 до 3 В с точностью ±1%. Передаточная характеристика блока измерения напряжений питания модуля System Monitor, который образуют интегрированный датчик напряжения и АЦП, приведена на рис. 401.

Передаточная характеристика блока измерения напряжения

Рис. 401. Передаточная характеристика блока измерения напряжения модуля System Monitor

Мультиплексор внешних сигналов осуществляет коммутацию аналоговых входов кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT с входами аналого-цифрового преобразователя модуля системного мониторинга. Управляющая логика обеспечивает требуемую последовательность подключения аналоговых входов и встроенных датчиков к входам АЦП, усреднение результатов измерений параметров, формирование сигналов, предупреждающих о выходе значений температуры и питающих напряжений за пределы установленного диапазона, а также калибровку датчиков и АЦП. Регистры управления и состояния образуют совместно с портом динамического реконфигурирования интерфейс передачи результатов измерений и установки требуемых режимов работы модуля System Monitor.

Для подготовки описания модуля системного мониторинга предоставляется библиотечный примитив SYSMON, на основе экземпляра которого выполнен рассматриваемый шаблон:

-- SYSMON : 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 (SYSMON_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--->
--
-- SYSMON: System Monitor
-- Virtex-5
-- Xilinx HDL Language Template, version 13.2
--
SYSMON_inst : SYSMON
generic map (
INIT_40 => X“0000”, -- Configuration register 0
INIT_41 => X“0000”, -- Configuration register 1
INIT_42 => X“0000”, -- Configuration register 2
INIT_43 => X“0000”, -- Test register 0
INIT_44 => X“0000”, -- Test register 1
INIT_45 => X“0000”, -- Test register 2
INIT_46 => X“0000”, -- Test register 3
INIT_47 => X“0000”, -- Test register 4

INIT_50 => X”0000”, -- Alarm limit register 0
INIT_51 => X”0000”, -- Alarm limit register 1
INIT_52 => X“0000”, -- Alarm limit register 2
INIT_53 => X“0000”, -- Alarm limit register 3
INIT_54 => X“0000”, -- Alarm limit register 4
INIT_55 => X“0000”, -- Alarm limit register 5
INIT_56 => X“0000”, -- Alarm limit register 6
INIT_57 => X“0000”, -- Alarm limit register 7
SIM_MONITOR_FILE => “design.txt”) -- Simulation analog entry file
port map (
ALM => ALM, -- 3-bit output for temp, Vccint and Vccaux
BUSY => BUSY, -- 1-bit output ADC busy signal
CHANNEL => CHANNEL, -- 5-bit output channel selection
DO => DO, -- 16-bit output data bus for dynamic reconfig
DRDY => DRDY, -- 1-bit output data ready for dynamic reconfig
EOC => EOC, -- 1-bit output end of conversion
EOS => EOS, -- 1-bit output end of sequence
JTAGBUSY => JTAGBUSY, -- 1-bit output JTAG DRP busy
JTAGLOCKED => JTAGLOCKED, -- 1-bit output DRP port lock
JTAGMODIFIED => JTAGMODIFIED, -- 1-bit output JTAG write to DRP
OT => OT, -- 1-bit output over temperature alarm
CONVST => CONVST, -- 1-bit input convert start
CONVSTCLK => CONVSTCLK, -- 1-bit input convert start clock
DADDR => DADDR, -- 7-bit input address bus for dynamic reconfig
DCLK => DCLK, -- 1-bit input clock for dynamic reconfig
DEN => DEN, -- 1-bit input enable for dynamic reconfig
DI => DI, -- 16-bit input data bus for dynamic reconfig
DWE => DWE, -- 1-bit input write enable for dynamic reconfig
RESET => RESET, -- 1-bit input active high reset
VAUXN => VAUXN, -- 16-bit input N-side auxiliary analog input
VAUXP => VAUXP, -- 16-bit input P-side auxiliary analog input
VN => VN, -- 1-bit input N-side analog input
VP => VP -- 1-bit input P-side analog input
);
-- End of SYSMON_inst instantiation

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

  • INIT_40–INIT_42 — определяют содержимое конфигурационных регистров модуля системного мониторинга.
  • INIT_43–INIT_47 — предоставляют возможность указания содержимого тестовых регистров модуля System Monitor.
  • INIT_50–INIT_57 — позволяют задать пороговые уровни температуры и питающих напряжений, при достижении которых автоматически вырабатывается сигнал тревоги для соответствующего параметра (производится переключение уровня сигнала на соответствующем выходе).
  • SIM_MONITOR_FILE — определяет имя файла входных значений, используемого в процессе моделирования модуля System Monitor.

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

  • ALM — 3-разрядная выходная шина, объединяющая сигналы тревоги, предупреждающие о выходе значений температуры и питающих напряжений за пределы заданного диапазона;
  • BUSY — выход сигнала, информирующего о ходе выполнения процесса аналого-цифрового преобразования входных сигналов;
  • CHANNEL — 5-разрядная выходная шина, совокупность значений сигналов которой определяет номер канала, обрабатываемого АЦП;
  • DO — 16-разрядная выходная шина данных для порта динамического реконфигурирования;
  • DRDY — выход сигнала готовности данных для порта динамического реконфигурирования;
  • EOC — выход сигнала, информирующего о завершении процесса аналого-цифрового преобразования сигнала соответствующего канала;
  • EOS — выход сигнала, сообщающего о завершении процесса аналого-цифрового преобразования сигнала последнего канала в заданной последовательности;
  • JTAGBUSY — выход сигнала, информирующего о выполнении операции порта динамического реконфигурирования с использованием JTAG интерфейса;
  • JTAGLOCKED — выход сигнала, предупреждающего о блокировке порта динамического реконфигурирования;
  • JTAGMODIFIED — выход сигнала, сообщающего о выполнении операции записи в один из регистров порта динамического реконфигурирования;
  • OT — выход сигнала тревоги, предупреждающего о достижении значения температуры кристалла программируемой логики максимально допустимого уровня;
  • CONVST — вход сигнала, запускающего процесс аналого-цифрового преобразования сигнала выбранного канала;
  • CONVSTCLK — вход сигнала, инициирующего процесс выборки сигнала в АЦП;
  • DADDR — входная 7-разрядная адресная шина порта динамического реконфигурирования;
  • DCLK — вход сигнала синхронизации для порта динамического реконфигурирования;
  • DEN — вход сигнала разрешения порта динамического реконфигурирования;
  • DI — 16-разрядная входная шина данных порта динамического реконфигурирования;
  • DWE — вход сигнала разрешения записи для порта динамического реконфигурирования;
  • RESET — вход сигнала сброса для управляющей логики модуля системного мониторинга;
  • VAUXN и VAUXP — входные 16-разрядные шины, объединяющие соответствующие линии дифференциальных пар дополнительных аналоговых входов модуля System Monitor;
  • VN и VP — дифференциальная пара сигналов основных аналоговых входов модуля системного мониторинга.

Условный графический образ элемента, выполняющего функции системного мониторинга, описание которого создается с помощью шаблона System Monitor (SYSMON) для последующего применения в составе устройств, реализуемых на базе ПЛИС серии Virtex-5, изображен на рис. 402.

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

Рис. 402. Условный графический образ элемента, выполняющего функции системного мониторинга в ПЛИС серии Virtex-5

System Monitor Simulation File предоставляет образец файла входных значений для модуля системного мониторинга System Monitor, предназначенного для использования в процессе его моделирования в составе проектируемых устройств, выполняемых на основе кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT:

-- Must use valid headers on all columns
-- Comments can be added to the stimulus file using ‘--’
TIME TEMP VCCAUX VCCINT VP VN VAUXP[0] VAUXN[0]
00000 45 2.5 1.0 0.5 0.0 0.7 0.0
05000 85 2.45 1.1 0.3 0.0 0.2 0.0
-- Time stamp data is in nano seconds (ns)
-- Temperature is recorded in C (degrees centigrade)
-- All other channels are recorded as V (Volts)
-- Valid column headers are:
-- TIME, TEMP, VCCAUX, VCCINT, VP, VN,
-- VAUXP[0], VAUXN[0],...............VAUXP[15], VAUXN[15]
-- External analog inputs are differential so VP = 0.5 and VN = 0.0 the
-- input on channel VP/VN in 0.5 - 0.0 = 0.5V

В разделе Virtex-6 каталога Device Primitive Instantiation шаблонов языка VHDL сосредоточены образцы описаний компонентов, основу которых образуют экземпляры библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов ПЛИС одноименной серии [5568]. В структуру этого раздела входят, в основном, те же подразделы, что представлены в составе каталога Spartan-3 (рис. 51, КиТ № 8`2010, стр. 101). Содержание большинства шаблонов, расположенных в подразделах каталога Virtex-6, совпадает с одноименными образцами описаний компонентов, находящимися в папках Spartan-3, Spartan-3A, Spartan-3A DSP, Spartan-3E, Spartan-6, Virtex-4 и Virtex-5, которые были рассмотрены в предыдущих частях статьи. Поэтому далее приводятся сведения только о тех шаблонах, которые не были представлены ранее.

48-bit Multi-Functional Arithmetic Block (DSP48E1) включает в себя образец VHDL-описания элементов, формируемых на базе аппаратных секций цифровой обработки сигналов DSP48E1 в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT [64]. Многофункциональный арифметический модуль цифровой обработки сигналов DSP48E1, входящий в состав архитектуры ПЛИС серии Virtex-6, является результатом усовершенствования аппаратной секции DSP48E, представленной в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT. Этот модернизированный модуль обладает полной совместимостью с базовым вариантом DSP48E и в то же время отличается расширенными функциональными возможностями, которые позволяют добиться дальнейшего повышения производительности разрабатываемых устройств цифровой обработки сигналов.

В состав архитектуры модернизированных аппаратных секций цифровой обработки сигналов DSP48E1 включены дополнительный (предварительный) сумматор, который расположен перед умножителем 25×18, и соответствующая дополнительная входная 25-разрядная шина данных. Кроме того, на входе дополнительного сумматора, как и на входах умножителя, установлены блоки буферных регистров с раздельными входами сигналов разрешения синхронизации. Подробная структурная схема многофункционального аппаратного модуля цифровой обработки сигналов DSP48E1, применяемого в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, показана на рис. 403. Новые элементы архитектуры модернизированной аппаратной секции ЦОС (предварительный сумматор, блоки буферных регистров и дополнительная входная шина данных) выделены на этой схеме, чтобы наглядно продемонстрировать отличия аппаратного модуля DSP48E1 от базового варианта DSP48E.

Схема аппаратной секции цифровой обработки сигналов DSP48E1

Рис. 403. Структурная схема аппаратной секции цифровой обработки сигналов DSP48E1, применяемой в ПЛИС серии Virtex-6

Детализированная структурная схема блока буферных регистров, установленных на шинах B и BCIN аппаратной секции цифровой обработки сигналов DSP48E1, приведена на рис. 404.

Схема блока буферных регистров

Рис. 404. Структурная схема блока буферных регистров, установленных на шинах B и BCIN секции DSP48E1

Подробная структурная схема предварительного сумматора и блока буферных регистров, установленных на шинах A и ACIN аппаратного многофункционального модуля цифровой обработки сигналов ПЛИС серии Virtex-6, изображена на рис. 405.

Схема предварительного сумматора и блока буферных регистров

Рис. 405. Структурная схема предварительного сумматора и блока буферных регистров, установленных на шинах A и ACIN секции DSP48E1

Двоичный код, представленный на дополнительной входной 25-разрядной шине данных секции DSP48E1, может использоваться не только как значение слагаемого в дополнительном сумматоре, но и в качестве значения одного из сомножителей в умножителе 25×18. Выбор источников операндов и соответствующих буферных регистров осуществляется с помощью дополнительной 5-разрядной шины управления INMODE. Наличие дополнительного (предварительного) сумматора и блоков буферных регистров позволяет оптимальным образом реализовать многозвенные устройства ЦОС, в частности симметричные цифровые фильтры. При этом требуется минимальное количество аппаратных секций цифровой обработки сигналов и достигается максимальная производительность разрабатываемого устройства.

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

-- DSP48E1 : 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 : (DSP48E1_inst) and/or the port declarations after the
-- code : “=>” declaration maybe changed to properly reference and
-- : connect this function to the design. All inputs and outputs
-- : must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- DSP48E1: 48-bit Multi-Functional Arithmetic Block
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
DSP48E1_inst : DSP48E1
generic map (
-- Feature Control Attributes: Data Path Selection
A_INPUT => “DIRECT”, -- Selects A input source, “DIRECT” (A port) or “CASCADE” (ACIN port)
B_INPUT => “DIRECT”, -- Selects B input source, “DIRECT” (B port) or “CASCADE” (BCIN port)
USE_DPORT => FALSE, -- Select D port usage (TRUE or FALSE)
USE_MULT => “MULTIPLY”, -- Select multiplier usage (“MULTIPLY”, “DYNAMIC”, or “NONE”)
-- Pattern Detector Attributes: Pattern Detection Configuration
AUTORESET_PATDET => “NO_RESET”, -- “NO_RESET”, “RESET_MATCH”, “RESET_NOT_MATCH”
MASK => X“3fffffffffff”, -- 48-bit mask value for pattern detect (1=ignore)
PATTERN => X“000000000000”, -- 48-bit pattern match for pattern detect
SEL_MASK => “MASK”, -- “C”, “MASK”, “ROUNDING_MODE1”, “ROUNDING_MODE2”
SEL_PATTERN => “PATTERN”, -- Select pattern value (“PATTERN” or “C”)
USE_PATTERN_DETECT => “NO_PATDET”, -- Enable pattern detect (“PATDET” or “NO_PATDET”)
-- Register Control Attributes: Pipeline Register Configuration
ACASCREG => 1, -- Number of pipeline stages between A/ACIN and ACOUT (0, 1 or 2)
ADREG => 1, -- Number of pipeline stages for pre-adder (0 or 1)
ALUMODEREG => 1, -- Number of pipeline stages for ALUMODE (0 or 1)
AREG => 1, -- Number of pipeline stages for A (0, 1 or 2)
BCASCREG => 1, -- Number of pipeline stages between B/BCIN and BCOUT (0, 1 or 2)
BREG => 1, -- Number of pipeline stages for B (0, 1 or 2)
CARRYINREG => 1, -- Number of pipeline stages for CARRYIN (0 or 1)
CARRYINSELREG => 1, -- Number of pipeline stages for CARRYINSEL (0 or 1)
CREG => 1, -- Number of pipeline stages for C (0 or 1)
DREG => 1, -- Number of pipeline stages for D (0 or 1)
INMODEREG => 1, -- Number of pipeline stages for INMODE (0 or 1)
MREG => 1, -- Number of multiplier pipeline stages (0 or 1)
OPMODEREG => 1, -- Number of pipeline stages for OPMODE (0 or 1)
PREG => 1, -- Number of pipeline stages for P (0 or 1)
USE_SIMD => “ONE48” -- SIMD selection (“ONE48”, “TWO24”, “FOUR12”)
)
port map (
-- Cascade: 30-bit (each) output: Cascade Ports
ACOUT => ACOUT, -- 30-bit output: A port cascade output
BCOUT => BCOUT, -- 18-bit output: B port cascade output
CARRYCASCOUT => CARRYCASCOUT, -- 1-bit output: Cascade carry output
MULTSIGNOUT => MULTSIGNOUT, -- 1-bit output: Multiplier sign cascade output
PCOUT => PCOUT, -- 48-bit output: Cascade output
-- Control: 1-bit (each) output: Control Inputs/Status Bits
OVERFLOW => OVERFLOW, -- 1-bit output: Overflow in add/acc output
PATTERNBDETECT => PATTERNBDETECT, -- 1-bit output: Pattern bar detect output
PATTERNDETECT => PATTERNDETECT, -- 1-bit output: Pattern detect output
UNDERFLOW => UNDERFLOW, -- 1-bit output: Underflow in add/acc output
-- Data: 4-bit (each) output: Data Ports
CARRYOUT => CARRYOUT, -- 4-bit output: Carry output
P => P, -- 48-bit output: Primary data output
-- Cascade: 30-bit (each) input: Cascade Ports
ACIN => ACIN, -- 30-bit input: A cascade data input
BCIN => BCIN, -- 18-bit input: B cascade input
CARRYCASCIN => CARRYCASCIN, -- 1-bit input: Cascade carry input
MULTSIGNIN => MULTSIGNIN, -- 1-bit input: Multiplier sign input
PCIN => PCIN, -- 48-bit input: P cascade input
-- Control: 4-bit (each) input: Control Inputs/Status Bits
ALUMODE => ALUMODE, -- 4-bit input: ALU control input
CARRYINSEL => CARRYINSEL, -- 3-bit input: Carry select input
CEINMODE => CEINMODE, -- 1-bit input: Clock enable input for INMODEREG
CLK => CLK, -- 1-bit input: Clock input
INMODE => INMODE, -- 5-bit input: INMODE control input
OPMODE => OPMODE, -- 7-bit input: Operation mode input
RSTINMODE => RSTINMODE, -- 1-bit input: Reset input for INMODEREG
-- Data: 30-bit (each) input: Data Ports
A => A, -- 30-bit input: A data input
B => B, -- 18-bit input: B data input
C => C, -- 48-bit input: C data input
CARRYIN => CARRYIN, -- 1-bit input: Carry input signal
D => D, -- 25-bit input: D data input
-- Reset/Clock Enable: 1-bit (each) input: Reset/Clock Enable Inputs
CEA1 => CEA1, -- 1-bit input: Clock enable input for 1st stage AREG
CEA2 => CEA2, -- 1-bit input: Clock enable input for 2nd stage AREG
CEAD => CEAD, -- 1-bit input: Clock enable input for ADREG
CEALUMODE => CEALUMODE, -- 1-bit input: Clock enable input for ALUMODERE
CEB1 => CEB1, -- 1-bit input: Clock enable input for 1st stage BREG
CEB2 => CEB2, -- 1-bit input: Clock enable input for 2nd stage BREG
CEC => CEC, -- 1-bit input: Clock enable input for CREG
CECARRYIN => CECARRYIN, -- 1-bit input: Clock enable input for CARRYINREG
CECTRL => CECTRL, -- 1-bit input: Clock enable input for OPMODEREG and CARRYINSELREG
CED => CED, -- 1-bit input: Clock enable input for DREG
CEM => CEM, -- 1-bit input: Clock enable input for MREG
CEP => CEP, -- 1-bit input: Clock enable input for PREG
RSTA => RSTA, -- 1-bit input: Reset input for AREG
RSTALLCARRYIN => RSTALLCARRYIN, -- 1-bit input: Reset input for CARRYINREG
RSTALUMODE => RSTALUMODE, -- 1-bit input: Reset input for ALUMODEREG
RSTB => RSTB, -- 1-bit input: Reset input for BREG
RSTC => RSTC, -- 1-bit input: Reset input for CREG
RSTCTRL => RSTCTRL, -- 1-bit input: Reset input for OPMODEREG and CARRYINSELREG
RSTD => RSTD, -- 1-bit input: Reset input for DREG and ADREG
RSTM => RSTM, -- 1-bit input: Reset input for MREG
RSTP => RSTP -- 1-bit input: Reset input for PREG
);
-- End of DSP48E1_inst instantiation

Большинство параметров настройки библиотечного примитива DSP48E1 имеют то же предназначение, что и одноименные параметры в шаблоне DSP Block (DSP48E), рассмотренном в 23-й части статьи. Кроме того, в шаблоне 48-bit Multi-Functional Arithmetic Block (DSP48E1) предусмотрены дополнительные параметры настройки:

  • USE_DPORT — позволяет задействовать предварительный сумматор и дополнительную входную шину данных D в создаваемом элементе.
  • AUTORESET_PATDET — предоставляет возможность автоматического сброса регистра на выходе детектора совпадения на следующем цикле после сравнения кода на выходной шине P и заданного значения.
  • ADREG — разрешает или запрещает использование буферного регистра на выходе предварительного сумматора.
  • DREG — позволяет задействовать в составе формируемого компонента буферный регистр на дополнительной входной шине данных D.
  • INMODEREG — определяет количество буферных регистров на дополнительной шине управления INMODE.

Система условных обозначений входных и выходных портов, используемых в описании интерфейса элементов, формируемых с помощью шаблона 48-bit Multi-Functional Arithmetic Block (DSP48E1), кроме идентификаторов, представленных при рассмотрении шаблона DSP Block (DSP48E), содержит следующие названия входов и выходов:

  • CEINMODE — вход сигнала разрешения синхронизации буферного регистра, установленного на дополнительной шине управления INMODE;
  • INMODE — дополнительная 5-разрядная шина управления;
  • RSTINMODE — вход сигнала сброса буферного регистра, установленного на дополнительной шине управления INMODE;
  • D — дополнительная 25-разрядная входная шина данных предварительного сумматора;
  • CEAD — вход сигнала разрешения синхронизации буферного регистра, расположенного на выходе предварительного сумматора;
  • CED — вход сигнала разрешения синхронизации буферного регистра, установленного на входе предварительного сумматора;
  • RSTD — вход сигнала сброса буферных регистров, установленных на входе и выходе предварительного сумматора.

На рис. 406 представлен условный графический образ элементов, описание которых создается с помощью шаблона 48-bit Multi-Functional Arithmetic Block (DSP48E1) для последующей реализации на основе аппаратных модулей цифровой обработки сигналов в ПЛИС серии Virtex-6.

Образ элементов, формируемых с помощью шаблона 48-bit Multi-Functional Arithmetic Block

Рис. 406. Условный графический образ элементов, формируемых с помощью шаблона 48-bit Multi-Functional Arithmetic Block (DSP48E1)

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

Система формирования и распределения тактовых сигналов в ПЛИС серии Virtex-6 существенно отличается от соответствующих ресурсов кристаллов семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 FXT и Virtex-5 TXT. Ее основу образуют блоки управления синхронизацией Clock Management Tile (CMT) и совокупность линий распределения тактовых сигналов различных типов, доступ к которым осуществляется через соответствующие буферные элементы. Структурная схема взаимосвязей блоков управления синхронизацией CMT и линий распределения тактовых сигналов в ПЛИС серии Virtex-6 приведена на рис. 407.

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

Рис. 407. Структурная схема взаимосвязей блоков управления синхронизацией CMT и линий распределения тактовых сигналов в ПЛИС серии Virtex-6

Структура блоков CMT, применяемых в составе архитектуры кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, принципиально отличается от архитектуры аналогичных блоков, используемых в ПЛИС серии Virtex-5. Блоки управления синхронизацией предыдущего поколения включают в себя два цифровых модуля Digital Clock Manager (DCM) и аналоговый модуль фазовой автоподстройки частоты Phase-Locked-Loop (PLL), которые можно применять как независимо друг от друга, так и в виде каскадных соединений DCM — PLL или PLL — DCM. Блоки CMT в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT [59] выполнены на основе двух более совершенных комбинированных модулей управления синхронизацией MMCM. Обобщенная структура блоков CMT, представленных в ПЛИС серии Virtex-6, показана на рис. 408.

Структура блоков управления синхронизацией CMT

Рис. 408. Структура блоков управления синхронизацией CMT, применяемых в ПЛИС серии Virtex-6

Комбинированные модули управления синхронизацией MMCM построены на основе схемы фазовой автоподстройки частоты PLL, но при этом также обладают всеми преимуществами цифровых модулей DCM. Модули управления синхронизацией ПЛИС серии Virtex-6 поддерживают широкий диапазон частот входных сигналов, который составляет от 10 до 800 МГц. Функции частотного синтеза и точного фазового сдвига, выполняемые комбинированными модулями MMCM, позволяют достаточно легко сформировать необходимую сетку тактовых сигналов для проектируемых устройств различного уровня сложности.

Функциональная схема комбинированных модулей управления синхронизацией MMCM, входящих в состав архитектуры кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, приведена на рис. 409.

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

Рис. 409. Функциональная схема комбинированных модулей управления синхронизацией MMCM, используемых в ПЛИС серии Virtex-6

Основные элементы этой схемы: программируемый счетчик/делитель (Counter/Divider, C/D), фазочастотный детектор (Phase-Frequency Detector, PFD), интегрирующий источник тока (Charge Pump, CP), петлевой фильтр (Loop Filter, LF) и генератор, управляемый напряжением (Voltage-Controlled Oscillator, VCO), который формирует восемь сигналов с постоянным значением фазы (0°, 45°, 90°, 135°, 180°, 225°, 270° и 315°) и один с переменным значением фазы, необходимый для реализации точного фазового сдвига. Все сигналы, вырабатываемые генератором VCO, поступают на соответствующие выходные счетчики/делители (Output counter О0 — Output counter О6 и Output counter М). Коэффициент деления частоты входного сигнала каждого из них программируется в соответствии с требованиями проектируемого устройства. Значение частоты сигналов, формируемых на выходах счетчиков/делителей О0–О6, определяется следующим выражением:

где FOi — значение частоты сигнала на выходе счетчика/делителя Оi; FCLKIN — значение частоты входного сигнала синхронизации; CLKFBOUT_MULT_F, DIVCLK_DIVIDE, CLKOUTi_DIVIDE — параметры, задающие значение коэффициента деления частоты.

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

-- MMCM_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 : (MMCM_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 and outputs
-- : must be connected.
--
-- Library : In addition to adding the instance declaration, a use
-- declaration : statement for the UNISIM.vcomponents library needs to be
-- for : added before the entity declaration. This library
-- Xilinx : contains the component declarations for all Xilinx
-- primitives : primitives and points to the models that will be used
-- : for simulation.
--
-- Copy the following two statements and paste them before the
-- Entity declaration, unless they already exist.
--
Library UNISIM;
use UNISIM.vcomponents.all;
--
-- <---Cut code below this line and paste into the architecture body--->
--
-- MMCM_ADV: Advanced Mixed Mode Clock Manager
-- Virtex-6
-- Xilinx HDL Language Template, version 13.2
--
MMCM_ADV_inst : MMCM_ADV
generic map (
BANDWIDTH => “OPTIMIZED”, -- Jitter programming (“HIGH”,”LOW”,”OPTIMIZED”)
CLKFBOUT_MULT_F => 5.0, -- Multiply value for all CLKOUT (5.0-64.0).
CLKFBOUT_PHASE => 0.0, -- Phase offset in degrees of CLKFB (0.00-360.00).
-- CLKIN_PERIOD: Input clock period in ns to ps resolution (i.e. 33.333 is 30 MHz).
CLKIN1_PERIOD => 0.0,
CLKIN2_PERIOD => 0.0,
CLKOUT0_DIVIDE_F => 1.0, -- Divide amount for CLKOUT0 (1.000-128.000).
-- CLKOUT0_DUTY_CYCLE - CLKOUT6_DUTY_CYCLE: Duty cycle for CLKOUT outputs (0.01-0.99).
CLKOUT0_DUTY_CYCLE => 0.5,
CLKOUT1_DUTY_CYCLE => 0.5,
CLKOUT2_DUTY_CYCLE => 0.5,
CLKOUT3_DUTY_CYCLE => 0.5,
CLKOUT4_DUTY_CYCLE => 0.5,
CLKOUT5_DUTY_CYCLE => 0.5,
CLKOUT6_DUTY_CYCLE => 0.5,
-- CLKOUT0_PHASE - CLKOUT6_PHASE: Phase offset for CLKOUT outputs (-360.000-360.000).
CLKOUT0_PHASE => 0.0,
CLKOUT1_PHASE => 0.0,
CLKOUT2_PHASE => 0.0,
CLKOUT3_PHASE => 0.0,
CLKOUT4_PHASE => 0.0,
CLKOUT5_PHASE => 0.0,
CLKOUT6_PHASE => 0.0,
-- CLKOUT1_DIVIDE - CLKOUT6_DIVIDE: Divide amount for CLKOUT (1-128)
CLKOUT1_DIVIDE => 1,
CLKOUT2_DIVIDE => 1,
CLKOUT3_DIVIDE => 1,
CLKOUT4_DIVIDE => 1,
CLKOUT5_DIVIDE => 1,
CLKOUT6_DIVIDE => 1,
CLKOUT4_CASCADE => FALSE, -- Cascase CLKOUT4 counter with CLKOUT6 (TRUE/FALSE)
CLOCK_HOLD => FALSE, -- Hold VCO Frequency (TRUE/FALSE)
COMPENSATION => “ZHOLD”, -- “ZHOLD”, “INTERNAL”, “EXTERNAL”, “CASCADE” or “BUF_IN”
DIVCLK_DIVIDE => 1, -- Master division value (1-80)
-- REF_JITTER: Reference input jitter in UI (0.000-0.999).
REF_JITTER1 => 0.0,
REF_JITTER2 => 0.0,
STARTUP_WAIT => FALSE, -- Not supported. Must be set to FALSE.
-- USE_FINE_PS: Fine phase shift enable (TRUE/FALSE)
CLKFBOUT_USE_FINE_PS => FALSE,
CLKOUT0_USE_FINE_PS => FALSE,
CLKOUT1_USE_FINE_PS => FALSE,
CLKOUT2_USE_FINE_PS => FALSE,
CLKOUT3_USE_FINE_PS => FALSE,
CLKOUT4_USE_FINE_PS => FALSE,
CLKOUT5_USE_FINE_PS => FALSE,
CLKOUT6_USE_FINE_PS => FALSE
)
port map (
-- Clock Outputs: 1-bit (each) output: User configurable clock outputs
CLKOUT0 => CLKOUT0, -- 1-bit output: CLKOUT0 output
CLKOUT0B => CLKOUT0B, -- 1-bit output: Inverted CLKOUT0 output
CLKOUT1 => CLKOUT1, -- 1-bit output: CLKOUT1 output
CLKOUT1B => CLKOUT1B, -- 1-bit output: Inverted CLKOUT1 output
CLKOUT2 => CLKOUT2, -- 1-bit output: CLKOUT2 output
CLKOUT2B => CLKOUT2B, -- 1-bit output: Inverted CLKOUT2 output
CLKOUT3 => CLKOUT3, -- 1-bit output: CLKOUT3 output
CLKOUT3B => CLKOUT3B, -- 1-bit output: Inverted CLKOUT3 output
CLKOUT4 => CLKOUT4, -- 1-bit output: CLKOUT4 output
CLKOUT5 => CLKOUT5, -- 1-bit output: CLKOUT5 output
CLKOUT6 => CLKOUT6, -- 1-bit output: CLKOUT6 output
-- DRP Ports: 16-bit (each) output: Dynamic reconfigration ports
DO => DO, -- 16-bit output: DRP data output
DRDY => DRDY, -- 1-bit output: DRP ready output
-- Dynamic Phase Shift Ports: 1-bit (each) output: Ports used for dynamic phase shifting of the outputs
PSDONE => PSDONE, -- 1-bit output: Phase shift done output
-- Feedback Clocks: 1-bit (each) output: Clock feedback ports
CLKFBOUT => CLKFBOUT, -- 1-bit output: Feedback clock output
CLKFBOUTB => CLKFBOUTB, -- 1-bit output: Inverted CLKFBOUT
-- Status Ports: 1-bit (each) output: MMCM status ports
CLKFBSTOPPED => CLKFBSTOPPED, -- 1-bit output: Feedback clock stopped output
CLKINSTOPPED => CLKINSTOPPED, -- 1-bit output: Input clock stopped output
LOCKED => LOCKED, -- 1-bit output: LOCK output
-- Clock Inputs: 1-bit (each) input: Clock inputs
CLKIN1 => CLKIN1, -- 1-bit input: Primary clock input
CLKIN2 => CLKIN2, -- 1-bit input: Secondary clock input
-- Control Ports: 1-bit (each) input: MMCM control ports
CLKINSEL => CLKINSEL, -- 1-bit input: Clock select input
PWRDWN => PWRDWN, -- 1-bit input: Power-down input
RST => RST, -- 1-bit input: Reset input
-- DRP Ports: 7-bit (each) input: Dynamic reconfigration ports
DADDR => DADDR, -- 7-bit input: DRP adrress input
DCLK => DCLK, -- 1-bit input: DRP clock input
DEN => DEN, -- 1-bit input: DRP enable input
DI => DI, -- 16-bit input: DRP data input
DWE => DWE, -- 1-bit input: DRP write enable input
-- Dynamic Phase Shift Ports: 1-bit (each) input: Ports used for dynamic phase shifting of the outputs
PSCLK => PSCLK, -- 1-bit input: Phase shift clock input
PSEN => PSEN, -- 1-bit input: Phase shift enable input
PSINCDEC => PSINCDEC, -- 1-bit input: Phase shift increment/decrement input
-- Feedback Clocks: 1-bit (each) input: Clock feedback ports
CLKFBIN => CLKFBIN -- 1-bit input: Feedback clock input
);
-- End of MMCM_ADV_inst instantiation

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

  • BANDWIDTH — позволяет выбрать алгоритм функционирования, соответствующий требуемым характеристикам формируемых сигналов.
  • CLKFBOUT_MULT_F — указывает значение множителя в выражении (4), определяющем значение частоты выходных сигналов синхронизации.
  • CLKFBOUT_PHASE — устанавливает значение фазового сдвига тактового сигнала в цепи обратной связи.
  • CLKIN1_PERIOD — задает значение периода основного входного сигнала синхронизации.
  • CLKIN2_PERIOD — определяет значение периода дополнительного входного сигнала синхронизации.
  • CLKOUT0_DIVIDE_F — указывает значение индивидуального делителя CLKOUTi_DIVIDE в выражении (4), определяющем значение частоты тактового сигнала, формируемого на соответствующем выходе модуля (CLKOUT0).
  • CLKOUT0_DUTY_CYCLE — CLKOUT6_DUTY_CYCLE — устанавливают значения коэффициента заполнения для тактовых сигналов, вырабатываемых на соответствующих выходах модуля (CLKOUT0–CLKOUT6).
  • CLKOUT0_PHASE — CLKOUT6_PHASE — предоставляют возможность выбора значения фазового сдвига для соответствующих выходных сигналов синхронизации (CLKOUT0–CLKOUT6).
  • CLKOUT1_DIVIDE — CLKOUT6_DIVIDE — указывают значения индивидуального делителя CLKOUTi_DIVIDE в выражении (4), определяющем значение частоты сигнала синхронизации, формируемого на соответствующем выходе модуля (CLKOUT1–CLKOUT6).
  • CLKOUT4_CASCADE — предоставляет возможность каскадного соединения выходных счетчиков/делителей O4 и O6 для получения значения коэффициента деления частоты, превышающего 128.
  • CLOCK_HOLD — позволяет задействовать режим сохранения значения частоты сигнала, вырабатываемого генератором, управляемым напряжением, при исчезновении входного сигнала.
  • COMPENSATION — определяет вид фазовой коррекции для входного сигнала синхронизации.
  • DIVCLK_DIVIDE — задает значение общего делителя в выражении (4), определяющем значения частоты формируемых тактовых сигналов.
  • REF_JITTER1, REF_JITTER2 — указывают ожидаемое значение джиттера соответствующего входного сигнала синхронизации для оптимизации работы формируемого модуля.
  • STARTUP_WAIT — предоставляет возможность приостановки захвата схемы фазовой автоподстройки частоты до завершения конфигурирования кристалла.
  • CLKFBOUT_USE_FINE_PS — позволяет реализовать точное изменение значения фазового сдвига тактового сигнала в цепи обратной связи.
  • CLKOUT0_USE_FINE_PS — CLKOUT6_USE_FINE_PS — разрешают или запрещают точное изменение значения фазового сдвига сигналов синхронизации, формируемых соответствующими выходными счетчиками/делителями O0–O6.

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

  • CLKOUT0–CLKOUT6 — выходы тактовых сигналов, формируемых соответствующими выходными счетчиками/делителями O0–O6 модуля MMCM;
  • CLKOUT0B–CLKOUT3B — выходы инвертированных сигналов синхронизации, вырабатываемых соответствующими выходными счетчиками/делителями O0–O3 модуля MMCM;
  • DO — 16-разрядная выходная шина данных порта динамического реконфигурирования;
  • DRDY — выход сигнала готовности данных порта динамического реконфигурирования;
  • PSDONE — выход сигнала, информирующего о завершении выполнения операции фазового сдвига;
  • CLKFBOUT — выход сигнала синхронизации, предназначенного для подключения ко входу обратной связи;
  • CLKFBOUTB — выход инвертированного тактового сигнала, предназначенного для подключения ко входу обратной связи;
  • CLKFBSTOPPED — выход сигнала, предупреждающего о прекращении переключений сигнала на входе обратной связи;
  • CLKINSTOPPED — выход сигнала, сообщающего об отсутствии переключений входного тактового сигнала;
  • LOCKED — выход сигнала, информирующего о достижении режима фазового синхронизма;
  • CLKIN1 — вход основного исходного сигнала синхронизации;
  • CLKIN2 — вход дополнительного внешнего сигнала синхронизации;
  • CLKINSEL — вход сигнала управления выбором исходного тактового сигнала;
  • PWRDWN — вход сигнала отключения питания модуля MMCM, не используемого в течение некоторого интервала времени;
  • RST — вход сигнала асинхронного сброса;
  • DADDR — входная 7-разрядная адресная шина порта динамического реконфигурирования;
  • DCLK — вход тактового сигнала для порта динамического реконфигурирования;
  • DEN — вход сигнала разрешения порта динамического реконфигурирования;
  • DI — 16-разрядная входная шина данных порта динамического реконфигурирования;
  • DWE — вход сигнала разрешения записи данных в порт динамического реконфигурирования;
  • PSCLK — вход тактового сигнала интерфейса управления динамическим изменением фазового сдвига;
  • PSEN — вход сигнала разрешения выполнения операции динамического изменения фазового сдвига;
  • PSINCDEC — вход выбора режима динамического изменения фазового сдвига (инкрементный или декрементный);
  • CLKFBIN — вход сигнала обратной связи.

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

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

Рис. 410. Условный графический образ комбинированного модуля управления
синхронизацией MMCM

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

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

Литература

  1. Virtex-6 Family Overview. Xilinx, 2011.
  2. Virtex-6 FPGA Data Sheet: DC and Switching Characteristics. Xilinx, 2011.
  3. Virtex-6 FPGA Configuration User Guide. Xilinx, 2011.
  4. Virtex-6 FPGA SelectIO Resources User Guide. Xilinx, 2010.
  5. Virtex-6 FPGA Clocking Resources User Guide. Xilinx, 2011.
  6. Virtex-6 FPGA Memory Resources User Guide. Xilinx, 2011.
  7. Virtex-6 FPGA Configurable Logic Block User Guide. Xilinx, 2009.
  8. Virtex-6 FPGA GTX Transceivers User Guide. Xilinx, 2011.
  9. Virtex-6 FPGA Embedded Tri-Mode Ethernet MAC User Guide. Xilinx, 2011.
  10. Virtex-6 FPGA DSP48E1 Slice User Guide. Xilinx, 2011.
  11. Virtex-6 FPGA System Monitor User Guide. Xilinx, 2010.
  12. Virtex-6 FPGA GTH Transceivers User Guide. Xilinx, 2011.
  13. Virtex-6 FPGA Integrated Block for PCI Express User Guide. Xilinx, 2010.
  14. Virtex-6 FPGA Packaging and Pinout Specifications. Xilinx, 2011.

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

 


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

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