Продолжение. Начало в № 2 2010
Разработка VHDL-описаний цифровых устройств,
проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite
Валерий ЗОТОВ
Двадцать четвертая часть статьи продолжает ознакомление с шаблонами 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
Рис. 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
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) —
— 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) —
— 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
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.
Примечание. Полный список литературы смотрите в предыдущих частях статьи.
Продолжение следует