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

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

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

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

Двадцать четвертая часть статьи продолжает ознакомление с шаблонами VHDL-описаний элементов, основанными на использовании экземпляров библиотечных примитивов, которые предназначены для реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 F XT [44-54]. Основное внимание в этой части уделено образцам описаний элементов, применяемых для организации обратного чтения конфигурационных данных, входного триггера с удвоенной скоростью передачи данных и двумя входами синхронизации, а также различных вариантов конфигурирования модулей блочной памяти Block RAM, представленных в составе архитектуры ПЛИС серии Virtex-5. Кроме того, здесь же рассмотрены шаблоны описаний входных преобразователей последовательного кода в параллельный и элементов программируемой входной и выходной задержки.

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

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

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

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

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

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

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

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

walerry@km.ru

Двадцать четвертая часть статьи продолжает ознакомление с шаблонами VHDL-описаний элементов, основанными на использовании экземпляров библиотечных примитивов, которые предназначены для реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT [44—54]. Основное внимание в этой части уделено образцам описаний элементов, применяемых для организации обратного чтения конфигурационных данных, входного триггера с удвоенной скоростью передачи данных и двумя входами синхронизации, а также различных вариантов конфигурирования модулей блочной памяти Block RAM, представленных в составе архитектуры ПЛИС серии Virtex-5. Кроме того, здесь же рассмотрены шаблоны описаний входных преобразователей последовательного кода в параллельный и элементов программируемой входной и выходной задержки.

Register CAPTURE (CAPTURE_VIRTEX5) включает в себя шаблон описания элемента, обеспечивающего возможность организации обратного чтения конфигурационных данных из ПЛИС серии Virtex-5. В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива CAPTURE_VIRTEX5:

-- CAPTURE_VIRTEX5 : In order to incorporate this function into the design,

-- VHDL : the following instance declaration needs to be placed -- instance : in the body of the design code. The instance name -- declaration : (CAPTURE_VIRTEX5_inst) and/or the port declarations after the

-- code : "=>" assignment maybe changed to properly reference and -- : connect this function to the design. All inputs must be -- : connected.

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- CAPTURE_VIRTEX5: Register State Capture for Bitstream Readback -- Virtex-5

-- Xilinx HDL Language Template, version 13.2 CAPTURE_VIRTEX5_inst : CAPTURE_VIRTEX5

generic map (

ONESHOT => TRUE) -- TRUE or FALSE

port map (

CAP => CAP, -- Capture input CLK => CLK -- Clock input );

-- End of CAPTURE_VIRTEX5_inst instantiation

Параметры настройки ONESHOT и условные обозначения интерфейсных портов библиотечного примитива CAPTURE_VIRTEX5 имеют то же предназначение, что и в шаблоне CAPTURE (CAPTURE_VIRTEX4).

Условный графический образ элемента, предназначенного для выполнения операций обратного чтения конфигурационных данных из кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, описание которого формируется с помощью шаблона Register CAPTURE (CAPTURE_ VIRTEX5), приведен на рис. 375.

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

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

-- STARTUP_VIRTEX5 : In order to incorporate this function into the design,

-- VHDL : the following instance declaration needs to be placed -- instance : in the architecture body of the design code. The -- declaration : instance name (STARTUP_VIRTEX5_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly -- : connect this function to the design. All inputs -- : must be connected

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- STARTUP_VIRTEX5: Startup primitive for GSR, GTS or startup sequence control,

-- SPI PROM pins, configuration clock and start-up status -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

STARTUP_VIRTEX5_inst : STARTUP_VIRTEX5 port map (

CFGCLK => CFGCLK, -- Config logic clock 1-bit output CFGMCLK => CFGMCLK, -- Config internal osc clock 1-bit

output

DINSPI => DINSPI, -- DIN SPI PROM access 1-bit output EOS => EOS, -- End of Startup 1-bit output TCKSPI => TCKSPI, -- TCK SPI PROM access 1-bit output CLK => CLK, -- Clock input for start-up sequence GSR => GSR_PORT, -- Global Set/Reset input (GSR cannot be used for the port name)

GTS => GTS_PORT, -- Global 3-state input (GTS cannot be used for the port name)

USRCCLKO => USRCCLKO, -- User CCLK 1-bit input USRCCLKTS => USRCCLKTS, -- User CCLK 3-state,

1-bit input

USRDONEO => USRDONEO, -- User Done 1-bit input USRDONETS => USRDONETS -- User Done 3-state,

1-bit input

STARTUP. VIRTEX5

USRCCLKO

USRCCLKTS

USRDONEO USRDONETS EOS

TCK_SPI CFG_CLK

DIN_SPI CFG_MCLK

GSR

GTS

> CLK

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- FRAME_ECC_VIRTEX5: Configuration Frame Error Correction Circuitry -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

FRAME_ECC_VIRTEX5_inst : FRAME_ECC_VIRTEX5 port map (

CRCERROR => CRCERROR, -- 1-bit output indicating

a CRC error

ECCERROR => ECCERROR, -- 1-bit output indicating

an ECC error

SYNDROME => SYNDROME, -- 12-bit output location of erroneous bit

SYNDROMEVALID => SYNDROMEVALID -- 1-bit

output indicating the SYNDROME output is valid );

-- End of FRAME_ECC_VIRTEX5_inst instantiation

- End of STARTUP_VIRTEX5_inst instantiation

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

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

• CFGMCLK — выход внутреннего генератора тактового сигнала для процесса конфигурирования ПЛИС;

• DINSPI — выход сигнала, поступающего с вывода кристалла D_IN при использовании конфигурационного ППЗУ с интерфейсом SPI;

• EOS — выход сигнала End Of Configuration, информирующего о завершении фазы Start-Up процесса конфигурирования кристалла программируемой логики;

• TCKSPI — выход сигнала, поступающего с вывода кристалла TCK при использовании конфигурационного ППЗУ с интерфейсом SPI;

• CLK — вход сигнала синхронизации, используемого при активизации логических ресурсов в процессе конфигурирования ПЛИС (на фазе Start-Up);

• GSR — вход глобального сигнала сброса/ установки триггеров в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT;

• GTS — вход глобального сигнала управления состоянием выводов ПЛИС серии Virtex-5;

• USRCCLKO — вход сигнала, подаваемого на вывод CCLK;

• USRCCLKTS — вход сигнала переключения вывода CCLK в высокоимпедансное состояние;

• USRDONEO — вход сигнала, поступающего на вывод DONE;

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

• USRDONETS — вход сигнала переключения вывода DONE в состояние высокого импеданса.

На рис. 376 показан условный графический образ компонента, описание которого формируется с помощью шаблона STARTUP Block (STARTUP_VIRTEX5), для управления глобальными цепями сброса/установки и переключения выходов в состояние высокого импеданса, а также для выбора тактового сигнала при активизации ресурсов кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.

V-5 Config Frame Error Correction (FRAME_ ECC_VIRTEX5) является шаблоном описания компонента, применяемого для контроля наличия ошибок в конфигурационной последовательности в процессе обратного чтения блока данных из ПЛИС серии Virtex-5. В составе кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT предусмотрена схема обнаружения ошибок Frame error correction code (ECC) logic, которая позволяет отслеживать модификацию одного или двух бит данных в считываемом блоке конфигурационной последовательности. Для создания описания компонента, реализуемого на базе этой логики, предлагается библиотечный примитив FRAME_ECC_VIRTEX5, который образует основу рассматриваемого шаблона:

--FRAME_ECC_VIRTEX5: In order to incorporate this function into the design,

-- VHDL : the following instance declaration needs to be placed -- instance : in the architecture body of the design code. The -- declaration : instance name (FRAME_ECC_VIRTEX5_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.

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

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

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

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

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

предназначенного для организации контроля считываемых конфигурационных данных в ПЛИС серии Virtex-5, для подготовки описания которого используется шаблон V-5 Config Frame Error Correction (FRAME_ECC_ VIRTEX5), представлен на рис. 377.

Dual-Clock Input DDR Register (IDDR_2CLK) — это образец описания входного триггера с удвоенной скоростью передачи данных, двумя входами синхронизации, входом разрешения тактового сигнала, программируемыми (синхронными или асинхронными) входами сброса и установки.

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

FRAME_ECC_VIRTEX5

ECC_ERROR SYNDROME [11:0] SYNDROME VALID CRC_ERROR

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

Рис. 378. Структурная схема входного DDR-триггера с двумя входами синхронизации, поддерживающего режим OPPOSITE_EDGE Mode

Он предназначен для применения в составе проектов, реализуемых на базе кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.

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

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

передачи данных, тактируемых парой противофазных сигналов синхронизации, предлагается шаблон Dual-Clock, Input DDR Register (IDDR_2CLK). Этот шаблон поддерживает три варианта конфигурирования входных DDR-триггеров.

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

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

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

Второй вариант конфигурирования входного триггера с удвоенной скоростью переда-

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

Рис. 380. Структурная схема входного DDR-триггера с двумя входами синхронизации, Рис. 382. Структурная схема входного DDR-триггера с двумя входами синхронизации,

реализующего режим SAME_EDGE Mode реализующего режим SAME_EDGE_PIPELINED Mode

| D0A | d1a | D2A | d3a i d4a | d5a | d6a | d7a | d®a | d9a |diöa|dha|diöa|di3a|

I I I I I

i | d0ai | d2a | d4a i | d6a i | d8a i | d10a

I I I I I

i | d1ai | d3ai | d5a i | d7a i | d9a i | d11a

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

чи данных и двумя входами синхронизации, в котором реализован режим SAME_EDGE Mode, поясняет структурная схема, изображенная на рис. 380.

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

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

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

В качестве основы шаблона Dual-Clock Input DDR Register (IDDR_2CLK) используется оператор создания экземпляра библиотечного примитива IDDR_2CLK, который представляет указанные варианты конфигурирования входного DDR-триггера в ПЛИС серии Virtex-5:

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- IDDR_2CLK: Dual-Clock, Input Double Data Rate Input Register with -- Set, Reset and Clock Enable. -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

IDDR_2CLK_inst : IDDR_2CLK generic map (

DDR_CLK_EDGE => "OPPOSITE_EDGE", --"OPPOSITE_EDGE", "SAME_EDGE" or "SAME_EDGE_PIPELINED" INIT_Q1 => '0', -- Initial value of Q1: '0' or '1' INIT_Q2 => '0', -- Initial value of Q2: '0' or '1' SRTYPE => "SYNC") -- Set/Reset type: "SYNC" or "ASYNC"

port map (

Q1 => Q1, -- 1-bit output for positive edge of clock Q2 => Q2, -- 1-bit output for negative edge of clock C => C, -- 1-bit primary clock input CB => CB, -- 1-bit secondary clock input CE => CE, -- 1-bit clock enable input D => D, -- 1-bit DDR data input R => R, -- 1-bit reset S => S -- 1-bit set );

-- End of IDDR_2CLK_inst instantiation

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

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

• INIT_Q1, INIT_Q2 — задают начальное состояние выходов DDR-триггера (по умолчанию им присваиваются нулевые значения).

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

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

• Q1 — выход, ассоциированный с фронтом первого тактового сигнала (C);

• Q2 — выход, ассоциированный с фронтом второго тактового сигнала (CB);

• C — вход первого сигнала синхронизации;

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

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

• D — информационный вход;

• R — вход сигнала сброса;

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

На рис. 384 изображен условный графический образ входного DDR-триггера с входом разрешения тактового сигнала и программируемыми входами сброса и установки, тактируемого парой сигналов синхронизации, описание которого создается на основе шаблона Dual-Clock Input DDR Register (IDDR_2CLK) для последующей реализации на базе ресурсов ввода/вывода ILOGIC кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.

Рис. 384. Условный графический образ входного DDR-триггера с двумя входами синхронизации, реализуемого на базе ресурсов ввода/вывода ILOGIC ПЛИС серии Viгtex-5

Input SERDES (ISERDES_NODELAY) включает в себя образец VHDL-описания варианта конфигурирования модуля входного преобразователя последовательного кода в параллельный, реализуемого на базе соответствующих аппаратных ресурсов ввода/вывода SelectIO кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, без элемента входной задержки. Основой этого шаблона является оператор создания экземпляра библиотечного примитива ISERDES_ NODELAY, который представляет указанный вариант конфигурирования модуля входного последовательно-параллельного преобразователя ПЛИС серии Virtex-5:

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

-- code : after the "=>" assignment maybe changed to properly -- : connect this function to the design. Alll inputs must be -- : connected.

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

-- IDDR_2CLK : In order to incorporate this function into the design, -- VHDL : the following instance declaration needs to be placed -- instance : in the architecture body of the design code. The -- declaration : instance name (IDDR_2CLK_inst) and/or the port declarations

-- code : after the "=>" assignment maybe changed to properly -- : connect this function to the design. All inputs must be -- : connected.

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- ISERDES_NODELAY: Input SERial / DESerializer -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

ISERDES_NODELAY_inst : ISERDES_NODELAY generic map (

BITSLIP_ENABLE => FALSE, -- TRUE/FALSE to enable bitslip controller

-- Must be "FALSE" in interface type is "MEMORY"

DATA_RATE => "DDR", -- Specify data rate of "DDR"

or "SDR"

DATA_WIDTH => 4, -- Specify data width --- NETWORKING SDR: 2, 3, 4, 5, 6, 7, 8 : DDR 4, 6, 8, 10 -- MEMORY SDR N/A : DDR 4

INTERFACE_TYPE => "MEMORY", -- Use model -"MEMORY" or "NETWORKING"

NUM_CE => 2, -- Define number or clock enables to an integer of 1 or 2

SERDES_MODE => "MASTER") --Set SERDES mode to "MASTER" or "SLAVE" port map (

Q1 => Q1, -- 1-bit registered SERDES output Q2 => Q2, -- 1-bit registered SERDES output Q3 => Q3, -- 1-bit registered SERDES output Q4 => Q4, -- 1-bit registered SERDES output Q5 => Q5, -- 1-bit registered SERDES output Q6 => Q6, -- 1-bit registered SERDES output SHIFTOUT1 => SHIFTOUT1, -- 1-bit cascade Master/

Slave output

SHIFTOUT2 => SHIFTOUT2, -- 1-bit cascade Master/

Slave output

BITSLIP => BITSLIP, -- 1-bit Bitslip enable input CE1 => CE1, -- 1-bit clock enable input CE2 => CE2, -- 1-bit clock enable input CLK => CLK, -- 1-bit master clock input CLKB => CLKB, -- 1-bit secondary clock input for DATA_RATE=DDR

CLKDIV => CLKDIV, -- 1-bit divided clock input D => D, -- 1-bit data input, connects to IODELAY or input

buffer

OCLK => OCLK, -- 1-bit fast output clock input RST => RST, -- 1-bit asynchronous reset input SHIFTIN1 => SHIFTIN1, -- 1-bit cascade Master/Slave input SHIFTIN2 => SHIFTIN2 -- 1-bit cascade Master/Slave input

);

-- End of ISERDES_NODELAY_inst instantiation

Параметры настройки библиотечного примитива ISERDES_NODELAY имеют то же предназначение, что и одноименные параметры в шаблоне SERDES (ISERDES), рассмотренном в 22-й части статьи. Система условных обозначений входных и выходных портов, используемых в описании интерфейса преобразователей последовательного кода в параллельный, формируемых на основе библиотечного примитива ISERDES_NODELAY, содержит следующие идентификаторы:

• Q1-Q6 — выходы соответствующих разрядов формируемого параллельного кода;

• SHIFTOUT1, SHIFTOUT2 — выходы данных, предназначенные для организации каскадного соединения последовательно-параллельных преобразователей;

• BITSLIP — вход сигнала активизации функции Bitslip;

• CEI, CE2 — входы сигналов разрешения синхронизации;

• CLK — вход основного сигнала синхронизации;

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

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

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

• D — вход данных, поступающих в виде последовательного кода;

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

• RST — вход сигнала асинхронного сброса;

• SHIFTIN1, SHIFTIN2 — входы данных, предназначенные для организации каскадного соединения последовательно-параллельных преобразователей. Условный графический образ входного

последовательно-параллельного преобразователя, реализуемого на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода SelectIO в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, для подготовки описания которого применяется шаблон Input SERDES (ISERDES_NODELAY), показан на рис. 385.

ISERDES_ NODELAY

BITSLIP Q1

СЕ1 СЕ2 CLK CLKB CLKDIV Q2 Q3 04 Q5 Q6

D OCLK SHIFTIN1 SHIFT0UT1 SHIFT0UT2

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

SHIFTIN2

RST

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

Input/Output Delay Element (IODELAY) содержит шаблон описания элементов программируемой входной и выходной задержки, реализуемых на базе соответствующих аппаратных модулей ресурсов ввода/вывода SelectlO ПЛИС серии Virtex-5. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива IODELAY, который поддерживает различные варианты конфигурирования модуля входной и выходной задержки кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT:

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

-- code : after the "=>" assignment maybe changed to properly -- : connect this function to the design. All inputs -- : must be connected.

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library -- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

-- Copy the following two statements and paste them before the -- Entity declaration, unless they already exist.

Library UNISIM;

use UNISIM.vcomponents.aH;

-- Put the following attribute before the 'begin' statement

-- to specify the group name for associated IDELAY and IDELAYCTRLs

attribute IODELAY_GROUP : string;

attribute IODELAY_GROUP of <label_name>: label is "<iodelay_ group_name>";

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

-- IODELAY: Input and/or Output Fixed/Variable Delay Element -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

IODELAY_inst : IODELAY generic map (

DELAY_SRC => "I", -- Specify which input port to be used -- "I"=IDATAIN, "O"=ODATAIN, "DATAIN"=DATAIN, "IO"=Bi-directional

HIGH_PERFORMANCE_MODE => TRUE, -- TRUE specifies lower jitter at expense of more power

IDELAY_TYPE => "FIXED", -- "FIXED" or "VARIABLE" IDELAY_VALUE => 0, -- 0 to 63 tap values ODELAY_VALUE => 0, -- 0 to 63 tap values REFCLK_FREQUENCY => 200.0, -- Frequency used for IDELAYCTRL 175.0 to 225.0

SIGNAL_PATTERN => "DATA") -- Input signal type, "CLOCK" or "DATA" port map (

DATAOUT => DATAOUT, -- 1-bit delayed data output C => C, -- 1-bit clock input CE => CE, -- 1-bit clock enable input DATAIN => DATAIN, -- 1-bit internal data input IDATAIN => IDATAIN, -- 1-bit input data input (connect to port)

INC => INC, -- 1-bit increment/decrement input ODATAIN => ODATAIN, -- 1-bit output data input RST => RST, -- 1-bit active high, synch reset input T => T -- 1-bit 3-state control input );

-- End of IODELAY_inst instantiation

Для выбора требуемого режима работы модуля программируемой задержки в библиотечном примитиве IODELAY предусмотрены следующие параметры настройки:

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

• HIGH_PERFORMANCE_MODE — предоставляет возможность уменьшения джитте-ра сигнала на выходе элемента задержки.

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

• IDELAY_VALUE — устанавливает величину фиксированной задержки при конфигурировании модуля IODELAY в виде элемента входной задержки (по умолчанию предлагается нулевое значение).

• ODELAY_VALUE — определяет величину фиксированной задержки при конфигурировании модуля IODELAY в виде элемента выходной задержки (по умолчанию устанавливается нулевое значение).

• REFCLK_FREQUENCY — задает значение частоты опорного сигнала синхронизации (по умолчанию присваивается значение, равное 200 МГц).

• SIGNAL_PATTERN — позволяет повысить точность результатов временного анализа. Система условных обозначений входов

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

• DATAOUT — выход сигнала задержанных данных;

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

• CE — вход сигнала разрешения инкремента или декремента значения задержки;

• DATAIN — вход данных, подключаемый к логическим ресурсам ПЛИС;

• IDATAIN — вход данных, поступающих из соответствующего блока ввода/вывода;

• INC — вход сигнала инкремента или декремента задержки;

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

• RST — вход сигнала сброса;

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

На рис. 386 представлен условный графический образ элементов программируемой входной и выходной задержки, реализуемых на основе соответствующих аппаратных модулей ресурсов ввода/вывода SelectIO ПЛИС серии Virtex-5, описания которых создаются с помощью шаблона Input/Output Delay Element (IODELAY).

IODELAY

ODATAIN DATAOUT

IDATAIN

T

INC

RST

CE

DATAIN

С

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

16k+2k Parity Paramatizable True Dual-Port BlockRAM (RAMB18) является образцом па-раметризированного варианта описания полнофункционального 2-портового ОЗУ информационной емкостью 16 384 бит с программируемой организацией каждого порта, возможностью использования выходных

регистров, поддержкой контроля четности и режима побайтной записи. Оно предназначено для реализации на основе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT. Каждый из модулей Block RAM ПЛИС перечисленных семейств может конфигурироваться в виде двух независимых элементов полнофункциональной 2-портовой оперативной памяти информационной емкостью 16 384 бит и дополнительным объемом 2048 бит, предназначенным для организации контроля четности записываемых и считываемых данных. Для быстрой подготовки описаний таких элементов ОЗУ предоставляется рассматриваемый шаблон, а в качестве его основы используется оператор создания экземпляра библиотечного примитива RAMB18, соответствующий указанному варианту конфигурирования модуля блочной памяти Block RAM ПЛИС серии Virtex-5:

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

-- RAMB18: 16k+2k Parity Paramatizable True Dual-Port BlockRAM -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

RAMB18_inst : RAMB18 generic map (

DOA_REG => 0, -- Optional output register on A port

(0 or 1)

DOB_REG => 0, -- Optional output register on B port

(0 or 1)

INIT_A => X"00000", -- Initial values on A output port INIT_B => X"00000", -- Initial values on B output port READ_WIDTH_A => 0, -- Valid values are 1, 2, 4, 9, or 18 READ_WIDTH_B => 0, -- VaHd values are 1, 2, 4, 9, or 18 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"00000", -- Set/Reset value for A port

output

SRVAL_B => X"00000", -- 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, -- VaHd values are 1, 2, 4, 9, or 18 WRITE_WIDTH_B => 0, -- Valid values are 1, 2, 4, 9, or 18 -- The following INIT_xx declarations specify the initial contents of the RAM INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

INIT_3E => X"00000000000000000000000000000000000000000", INIT_3F => X"00000000000000000000000000000000000000000",

-- The next set of INITP_xx are for the parity bits INITP_00 => X"0000000000000000000000000000000000000000", INITP_01 => X"0000000000000000000000000000000000000000",

INITP_07 => X"000000000000000000000000000000000000000") port map (

DOA => DOA, -- 16-bit A port data output DOB => DOB, -- 16-bit B port data output DOPA => DOPA, -- 2-bit A port parity data output DOPB => DOPB, -- 2-bit B port parity data output ADDRA => ADDRA, -- 14-bit A port address input ADDRB => ADDRB, -- 14-bit B port address input CLKA => CLKA, -- 1-bit A port clock input CLKB => CLKB, -- 1 bit B port clock input DIA => DIA, -- 16-bit A port data input DIB => DIB, -- 16-bit B port data input DIPA => DIPA, -- 2-bit A port parity data input DIPB => DIPB, -- 2-bit B port parity data input ENA => ENA, -- 1-bit A port enable input ENB => ENB, -- 1-bit B port enable input REGCEA => REGCEA, -- 1-bit A port register enable input REGCEB => REGCEB, -- 1-bit B port register enable input SSRA => SSRA, -- 1-bit A port set/reset input SSRB => SSRB, -- 1-bit B port set/reset input WEA => WEA, -- 2-bit A port write enable input

WEB => WEB -- 2-bit B port write enable input );

-- End of RAMB18_inst instantiation

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

• DOA_REG — предоставляет возможность использования регистра на выходе первого порта (по умолчанию выходной регистр не задействуется).

• DOB_REG — позволяет задействовать регистр на выходе второго порта (по умолчанию выходной регистр не используется).

• INIT_A, INIT_B — определяют начальное значение для соответствующего выходного порта данных (по умолчанию устанавливается значение X"00000").

• READ_WIDTH_A — задает разрядность первого выходного порта (порта чтения данных A).

• READ_WIDTH_B — указывает разрядность второго выходного порта (порта чтения данных B).

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

• SIM_MODE — устанавливает режим моделирования формируемого элемента 2-портового ОЗУ.

• SRVAL_A — указывает состояние выходного порта данных A при активном уровне сигнала на входе сброса/установки (по умолчанию предлагается значение X"00000").

• SRVAL_B — задает состояние выходного порта данных B при активном уровне сигнала на входе сброса/установки (по умолчанию присваивается значение X"00000").

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

• WRITE_WIDTH_A — определяет разрядность первого входного порта (порта записи данных A).

RAMB18

— DIA(15:0)

— DIPA(1:0) DOA(15:0) —

— ADDRA(13:0) DOPA(1:0) —

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

— WEA(1:0)

— ENA

— REGCEA

— SSRA

>CLKA 1-------------с

— DIB(15:0) DOB(15:0) DIPB(1:0) DOPB(1:0) ADDRB(13:0) —

— WEB(1:0)

— ENB

— REGCEB

— SSRB

— >CLKB

Рис. 387. Условный графический образ элемента 2-портового ОЗУ, формируемого с помощью шаблона 16k+2k Parity Paramatizable True Dual-Port BlockRAM (RAMB18)

• WRITE_WIDTH_B — указывает разрядность второго входного порта (порта записи данных B).

• INIT_00-INIT_3F — используются для инициализации содержимого соответствующих ячеек основной памяти (по умолчанию во все ячейки ОЗУ заносится нулевое значение).

• INITP_00-INITP_07 — предоставляют возможность инициализации содержимого ячеек памяти, используемых для организации контроля четности.

В состав системы условных обозначений входов и выходов, применяемых в описании интерфейса элементов 2-портовой оперативной памяти, создаваемых на основе библиотечного примитива RAMB18 в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, входят следующие идентификаторы:

• DOA и DOB — выходные 16-разрядные шины информационных данных первого и второго порта соответственно;

• DOPA и DOPB — выходные 2-разрядные шины, предназначенные для организации контроля четности информационных данных первого и второго порта;

• ADDRA и ADDRB — 14-разрядные шины адресов первого и второго порта соответственно;

• CLKA и CLKB — входы сигналов синхронизации первого и второго порта соответственно;

• DIA и DIB — входные 16-разрядные шины информационных данных первого и второго порта;

• DIPA и DIPB — входные 2-разрядные шины, применяемые для осуществления контроля четности информационных данных первого и второго порта соответственно;

• ENA и ENB — входы сигналов разрешения первого и второго порта соответственно;

• REGCEA и REGCEB — входы сигналов разрешения синхронизации выходных регистров первого и второго порта соответственно;

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

• WEA и WEB — входные 2-разрядные шины, объединяющие сигналы разрешения записи соответствующего байта данных в первый и второй порт элемента 2-портового ОЗУ.

Условный графический образ элемента полнофункциональной 2-портовой оперативной памяти с поддержкой контроля четности, побайтной записи информации и применения выходных регистров, реализуемого на базе модуля Block RAM ПЛИС серии Virtex-5, описание которого создается с помощью шаблона 16k+2k Parity Paramatizable True Dual-Port BlockRAM (RAMB18), изображен на рис. 387.

32k+4k Parity Paramatizable True Dual-Port BlockRAM (RAMB36) предоставляет шаблон параметризированного варианта описания полнофункционального 2-портового ОЗУ информационной емкостью 32 768 бит с программируемой организацией каждого порта, возможностью использования выходных регистров, поддержкой контроля четности, каскадного соединения и режима побайтной записи. Он реализуется на основе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT:

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

-- RAMB36: 32k+4k Parity Paramatizable True Dual-Port BlockRAM -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

RAMB36_inst : RAMB36 generic map (

DOA_REG => 0, -- Optional output register on A port

(0 or 1)

DOB_REG => 0, -- Optional output register on B port

(0 or 1)

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

RAM_EXTENSION_A => "NONE", -- "UPPER", "LOWER" or "NONE" when cascaded

RAM_EXTENSION_B => "NONE", -- "UPPER", "LOWER" or "NONE" when cascaded

READ_WIDTH_A => 0, -- Valid values are 1, 2, 4, 9, 18, or 36 READ_WIDTH_B => 0, -- Valid values are 1, 2, 4, 9, 18, or 36 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, 3, 4, 9,

18, 36

WRITE_WIDTH_B => 0, -- Valid values are 1, 2, 3, 4, 9,

18, 36

-- The following INIT_xx declarations specify the initial contents of the RAM INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

INIT_7E => X"00000000000000000000000000000000000000000", INIT_7F=> X"00000000000000000000000000000000000000000",

-- The next set of INITP_xx are for the parity bits INITP_00=> X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

INITP_0F=> X"000000000000000000000000000000000000000") port map (

CASCADEOUTLATA => CASCADEOUTLATA, -- 1-bit cascade A latch output

CASCADEOUTLATB => CASCADEOUTLATB, -- 1-bit cascade B latch output

CASCADEOUTREGA => CASCADEOUTREGA, -- 1-bit cascade A register output

CASCADEOUTREGB => CASCADEOUTREGB, -- 1-bit cascade B register output

DOA => DOA, -- 32-bit A port data output DOB => DOB, -- 32-bit B port data output DOPA => DOPA, -- 4-bit A port parity data output DOPB => DOPB, -- 4-bit B port parity data output ADDRA => ADDRA, -- 16-bit A port address input ADDRB => ADDRB, -- 16-bit B port address input CASCADEINLATA => CASCADEINLATA, -- 1-bit cascade A latch input

CASCADEINLATB => CASCADEINLATB, -- 1-bit cascade B latch input

CASCADEINREGA => CASCADEINREGA, -- 1-bit cascade A register input

CASCADEINREGB => CASCADEINREGB, -- 1-bit cascade B register input

CLKA => CLKA, -- 1-bit A port clock input CLKB => CLKB, -- 1 bit B port clock input DIA => DIA, -- 32-bit A port data input DIB => DIB, -- 32-bit B port data input DIPA => DIPA, -- 4-bit A port parity data input DIPB => DIPB, -- 4-bit B port parity data input ENA => ENA, -- 1-bit A port enable input ENB => ENB, -- 1-bit B port enable input REGCEA => REGCEA, -- 1-bit A port register enable input REGCEB => REGCEB, -- 1-bit B port register enable input SSRA => SSRA, -- 1-bit A port set/reset input SSRB => SSRB, -- 1-bit B port set/reset input WEA => WEA, -- 4-bit A port write enable input WEB => WEB -- 4-bit B port write enable input );

-- End of RAMB36_inst instantiation

Основу приведенной конструкции образует оператор создания экземпляра библиотечного примитива RAMB36, который представляет указанный вариант конфигурирования модуля блочной памяти Block RAM ПЛИС серии Virtex-5. В этом библиотечном примитиве в большинстве своем используются те же параметры настройки, что и в шаблоне 16k+2k Parity Paramatizable True Dual-Port BlockRAM (RAMB18). Кроме того, в библиотечном примитиве RAMB36 предусмотрены параметры RAM_EXTENSION_A и RAM_EXTENSION_B, которые определяют возможность и параметры каскадирования соответствующего порта форми-

руемого элемента 2-портовой оперативной памяти. Дополнительные параметры настройки INIT_40-INIT_7F и INITP_08-INITP_0F предназначены для инициализации соответствующих ячеек создаваемого элемента 2-портового ОЗУ.

Система условных обозначений входов и выходов, применяемых в описании интерфейса элементов полнофункциональной 2-портовой оперативной памяти, формируемых с помощью шаблона 32k+4k Parity Paramatizable True Dual-Port BlockRAM (RAMB36), включает в себя следующие идентификаторы:

• CASCADEOUTLATA — выход защелки первого порта (порта A), предназначенный для каскадного соединения смежных модулей блочной памяти;

• CASCADEOUTLATB — выход защелки второго порта (порта B), применяемый для организации каскадного соединения смежных модулей блочной памяти;

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

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

• DOA и DOB — выходные 32-разрядные шины информационных данных первого и второго порта соответственно;

• DOPA и DOPB — выходные 4-разрядные шины, предназначенные для организации контроля четности информационных данных первого и второго порта соответственно;

• ADDRA и ADDRB — 16-разрядные шины адресов первого и второго порта соответственно;

• CASCADEINLATA — вход защелки первого порта (порта A), предназначенный для каскадного соединения смежных модулей блочной памяти;

• CASCADEINLATB — вход защелки второго порта (порта B), применяемый для организации каскадного соединения смежных модулей блочной памяти;

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

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

• CLKA и CLKB — входы сигналов синхронизации первого и второго порта соответственно;

• DIA и DIB — входные 32-разрядные шины информационных данных первого и второго порта соответственно;

• DIPA и DIPB — входные 4-разрядные шины, применяемые для осуществления контроля четности информационных данных первого и второго порта;

RAMB36

CASCADEOUTLATA —

CASCADEOUTLATB —

CASCADEOUTREGA —

CASCADEOUTREGB —

— DIA(31:0) DIPA(3:0) DOA(31:0) —

— ADDRA(15:0) DOPA(3:0) —

— WEA(3:0)

— ENA

— REGCEA

— SSRA

> CLKA > — -■€

— DIB(31:0) DIPB(3:0) DOB(31:0) —

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

— ADDRB(15:0) DOPB(3:0) —

— WEB(3:0)

— ENB

— REGCEB

— SSRB

— > CLKB

— CASCADEINLATA

— CASCADEINLATB

— CASCADEINREGA

— CASCADEINREGB

Рис. 388. Условный графический образ элемента 2-портового ОЗУ, формируемого с помощью шаблона 32k+4k Parity Paramatizable True Dual-Port BlockRAM (RAMB36)

• ENA и ENB — входы сигналов разрешения первого и второго порта соответственно;

• REGCEA и REGCEB — входы сигналов разрешения синхронизации выходных регистров первого и второго порта соответственно;

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

• WEA и WEB — входные 4-разрядные шины, объединяющие сигналы разрешения записи соответствующего байта данных в первый и второй порт элемента 2-портовой оперативной памяти.

На рис. 388 приведен условный графический образ элемента полнофункционального 2-портового ОЗУ информационной емкостью 32 768 бит с программируемой организацией каждого порта, возможностью использования выходных регистров, поддержкой контроля четности, каскадного соединения и режима побайтной записи, реализуемого на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT, для подготовки описания которого применяется шаблон 32k+4k Parity Paramatizable True Dual-Port BlockRAM (RAMB36).

36x512 Simple Dual-Port BlockRAM (RAMB18SDP) включает в себя образец описания 2-портового ОЗУ с фиксированной функцией портов (записи или чтения данных) информационной емкостью 16 384 бит с организацией 512x32 разряда и поддержкой контроля четности, которое предназначено для реализации на основе модуля блочной памяти Block RAM ПЛИС серии Virtex-5:

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

-- RAMB18SDP: 36x512 Simple Dual-Port BlockRAM -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

RAMB18SDP_inst : RAMB18SDP generic map (

DO_REG => 0, -- Optional output register (0 or 1) INIT => X"000000000", -- Initial values on output port 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 => X"000000000", -- Set/Reset value for port

output

-- The following INIT_xx declarations specify the initial contents of the RAM INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

INIT_3E => X"00000000000000000000000000000000000000000", INIT_3F=> X"00000000000000000000000000000000000000000",

-- The next set of INITP_xx are for the parity bits INITP_00=> X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

INITP_07 => X"000000000000000000000000000000000000000") port map (

DO => DO, -- 32-bit Data Output DOP => DOP, -- 4-bit Parity Output RDCLK => RDCLK, -- 1-bit read port clock RDEN => RDEN, -- 1-bit read port enable REGCE => REGCE, -- 1-bit register enable input SSR => SSR, -- 1-bit synchronous output set/reset input WRCLK => WRCLK, -- 1-bit write port clock WREN => WREN, -- 1-bit write port enable WRADDR => WRADDR, -- 9-bit write port address input RDADDR => RDADDR, -- 9-bit read port address input DI => DI, -- 32-bit data input DIP => DIP, -- 4-bit parity data input WE => WE -- 4-bit write enable input );

-- End of RAMB18SDP_inst instantiation

В качестве основы приведенного шаблона используется оператор создания экземпляра библиотечного примитива RAMB18SDP, который представляет соответствующий вариант конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT в виде ОЗУ с раздельными портами записи и чтения данных. В указан-

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

• DO_REG — позволяет задействовать выходной регистр в составе создаваемого элемента оперативной памяти (по умолчанию этому параметру присваивается нулевое значение, при котором выходной регистр не используется).

• INIT — определяет начальное значение для выходного порта данных (по умолчанию установлено значение X"00000").

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

• SIM_MODE — устанавливает режим моделирования формируемого элемента оперативной памяти.

• SRVAL — указывает состояние выходного порта данных при активном уровне сигнала на входе сброса/установки (по умолчанию этот параметр принимает значение X"00000").

• INIT_00-INIT_3F — применяются для инициализации содержимого соответствующих ячеек основной памяти (по умолчанию во все ячейки ОЗУ заносится нулевое значение).

• INITP_00-INITP_07 — используются для инициализации содержимого ячеек памяти, предназначенных для организации контроля четности информационных данных.

В состав системы условных обозначений входов и выходов, используемых в описании интерфейса элементов 2-портовой оперативной памяти с фиксированной функцией портов, формируемых с помощью шаблона 36x512 Simple Dual-Port BlockRAM (RAMB18SDP), входят следующие идентификаторы:

• DO — выходная 32-разрядная шина информационных данных порта чтения;

• DOP — выходная 4-разрядная шина, предназначенная для организации контроля четности считываемых информационных данных;

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

• RDEN — вход сигнала разрешения порта чтения данных;

• REGCE — вход сигнала разрешения синхронизации для выходного регистра порта чтения данных;

• SSR — вход синхронного сброса/установки выходного регистра;

• WRCLK — вход сигнала синхронизации порта записи данных;

• WREN — вход сигнала разрешения порта записи данных;

• WRADDR — 9-разрядная шина адресов порта записи данных;

• RDADDR — 9-разрядная шина адресов порта чтения данных;

RAMB18SDP

_ RDADDR[8:0]

DO[31:0] -

— WRADDR[8:0]

— RDCLK

— WRCLK

— Dl[31:0]

— DIP[3:0]

— RDEN

— WREN

— REGCE

- SSR

DOP[3:0] -

WE[3:0]

Рис. 389. Условный графический образ 2-портового ОЗУ, формируемого с помощью шаблона 36x512 Simple Dual-Port BlockRAM (RAMB18SDP)

• DI — входная 32-разрядная шина информационных данных порта записи;

• DIP — входная 4-разрядная шина, предназначенная для организации контроля четности записываемых информационных данных;

• WE — входная 4-разрядная шина, объединяющая сигналы управления записью соответствующих байтов данных в ячейки элемента оперативной памяти. Условный графический образ элемента

2-портового ОЗУ с фиксированной функцией портов информационной емкостью 16 384 бит с организацией 512x32 разряда и поддержкой контроля четности, для подготовки описания которого используется

шаблон 36x512 Simple Dual-Port BlockRAM (RAMB18SDP), показан на рис. 389.

72x512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP) содержит шаблон VHDL-описания элемента 2-портового ОЗУ с фиксированной функцией портов (записи или чтения данных) информационной емкостью 32 768 бит с организацией 512x64 разряда, со встроенной схемой контроля и коррекции ошибок ECC (Error Correction Code), реализуемого на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5. Каждый модуль блочной памяти в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT поддерживает возможность конфигурирования в виде ОЗУ с раздельными портами записи и чтения данных и организацией 512x64 разряда, в составе которых можно задействовать встроенную схему контроля и коррекции ошибок ECC. Структурная схема таких элементов оперативной памяти изображена на рис. 390.

Для подготовки описания элемента ОЗУ с фиксированной функцией портов, встроенной схемой контроля и коррекции ошибок ECC предлагается шаблон, выполненный на основе экземпляра библиотечного примитива RAMB36SDP:

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

EN_ECC_READ

Рис. 390. Структура ОЗУ со встроенной схемой контроля и коррекции ошибок ECC, реализуемого на базе блочной памяти ПЛИС серии Virtex-5

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

-- RAMB36SDP: 72x512 Simple Dual-Port BlockRAM /w ECC -- Virtex-5

-- Xilinx HDL Language Template, version 13.2

RAMB36SDP_inst : RAMB36SDP generic map (

DO_REG => 0, -- Optional output register (0 or 1) EN_ECC_READ => FALSE, -- Enable ECC decoder, TRUE or FALSE

EN_ECC_WRITE => FALSE, -- Enable ECC encoder, TRUE or FALSE

INIT => X"000000000000000000", -- Initial values on

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

output port

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 => X"000000000000000000", -- Set/Reset value for port output

-- The following INIT_xx declarations specify the initial contents of the RAM INIT_00=> X"00000000000000000000000000000000000000000", INIT_01=> X"00000000000000000000000000000000000000000",

INIT_7E => X"00000000000000000000000000000000000000000", INIT_7F=> X"00000000000000000000000000000000000000000",

-- The next set of INITP_xx are for the parity bits INITP_00 => X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

INITP_0F=> X"000000000000000000000000000000000000000") port map (

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, -- 8-bit Parity Output ECCPARITY => ECCPARITY, -- 8-bit generated error correction parity

RDCLK => RDCLK, -- 1-bit read port clock RDEN => RDEN, -- 1-bit read port enable REGCE => REGCE, -- 1-bit register enable input SSR => SSR, -- 1-bit synchronous output set/reset input WRCLK => WRCLK, -- 1-bit write port clock WREN => WREN, -- 1-bit write port enable WRADDR => WRADDR, -- 9-bit write port address input RDADDR => RDADDR, -- 9-bit read port address input DI => DI, -- 64-bit data input DIP => DIP, -- 8-bit parity data input WE => WE -- 8-bit write enable input );

-- End of RAMB36SDP_inst instantiation

В составе библиотечного примитива RAMB36SDP кроме настраиваемых параметров, представленных при рассмотрении

RAMB36SDP

— Dl[63:0] D0[63:0] -

— DIP[7:0]

_ RDADDR[8:0] DOP[7:0]

-

— WRADDR[8:0]

— WE[7:0]

— RDEN SBITERR -

— WREN

— SSR

— RDCLK DBITERR -

— WRCLK

— REGCE ECCPARITY[7:0] -

Рис. 391. Условный графический образ элементов 2-портового ОЗУ, формируемого с помощью шаблона 72x512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP)

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

Система условных обозначений входов и выходов, применяемых в описании интерфейса элементов 2-портовой оперативной памяти с фиксированной функцией портов, формируемых с помощью шаблона 72x512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP), включает в себя следующую совокупность идентификаторов:

• DBITERR — выход сигнала, информирующего о наличии двух ошибочных бит данных;

• SBITERR — выход сигнала, сообщающего о присутствии одного ошибочного бита данных;

• DO — выходная 64-разрядная шина информационных данных порта чтения;

• DOP — выходная 8-разрядная шина, предназначенная для организации контроля четности считываемых информационных данных;

• ECCPARITY — выходная 8-разрядная шина, на которую поступает код, формируемый встроенной схемой контроля и коррекции ошибок ECC;

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

• RDEN — вход сигнала разрешения порта чтения данных;

• REGCE — вход сигнала разрешения синхронизации для выходного регистра порта чтения данных;

• SSR — вход сигнала синхронного сброса/установки выходного регистра;

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

• WREN — вход сигнала разрешения порта записи данных;

• WRADDR — 9-разрядная шина адресов порта записи данных;

• RDADDR — 9-разрядная шина адресов порта чтения данных;

• DI — входная 64-разрядная шина информационных данных порта записи;

• DIP — входная 8-разрядная шина, предназначенная для организации контроля четности записываемых информационных данных;

• WE — входная 8-разрядная шина, объединяющая сигналы управления записью соответствующих байтов данных в ячейки ОЗУ. На рис. 391 показан условный графический

образ элемента 2-портовой оперативной памяти с фиксированной функцией портов, поддержкой контроля и коррекции ошибок, описание которого создается с помощью шаблона 72x512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP) для последующей реализации на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5.

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

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

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