Разработка VHDL-описаний цифровых устройств, проектируемых на основе ПЛИС фирмы Xilinx, с использованием шаблонов САПР ISE Design Suite. Часть 24
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.
Рис. 375. Условный графический образ элемента, создаваемого с помощью шаблона Register CAPTURE (CAPTURE_VIRTEX5)
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 ); — 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;
- USRDONETS — вход сигнала переключения вывода DONE в состояние высокого импеданса.
На рис. 376 показан условный графический образ компонента, описание которого формируется с помощью шаблона STARTUP Block (STARTUP_VIRTEX5), для управления глобальными цепями сброса/установки и переключения выходов в состояние высокого импеданса, а также для выбора тактового сигнала при активизации ресурсов кристаллов программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT.
Рис. 376. Условный графический образ компонента, создаваемого с помощью шаблона STARTUP Block (STARTUP_VIRTEX5)
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. — — 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 |
Система условных обозначений выходных портов, используемых в описании интерфейса библиотечного примитива FRAME_ECC_VIRTEX5, включает в себя следующие идентификаторы:
- CRCERROR — выход сигнала, сообщающего о наличии ошибки конфигурационных данных в процессе их контроля с помощью циклического избыточного кода CRC.
- ECCERROR — выход сигнала, информирующего о наличии или отсутствии ошибочных разрядов в составе считанного блока данных.
- SYNDROME — выходная 12-разрядная шина, совокупность значений сигналов которой указывает расположение ошибочных разрядов в считанном блоке данных.
- SYNDROMEVALID — выход сигнала, уведомляющего о достоверности результатов контроля блока конфигурационных данных.
Условный графический образ элемента, предназначенного для организации контроля считываемых конфигурационных данных в ПЛИС серии Virtex-5, для подготовки описания которого используется шаблон V-5 Config Frame Error Correction (FRAME_ECC_VIRTEX5), представлен на рис. 377.
Рис. 377. Условный графический образ элемента, формируемого с помощью шаблона V-5 Config Frame Error Correction (FRAME_ECC_VIRTEX5)
Dual-Clock Input DDR Register (IDDR_2CLK) — это образец описания входного триггера с удвоенной скоростью передачи данных, двумя входами синхронизации, входом разрешения тактового сигнала, программируемыми (синхронными или асинхронными) входами сброса и установки. Он предназначен для применения в составе проектов, реализуемых на базе кристаллов программируемой логики семейств 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. Для формирования описаний входных триггеров с удвоенной скоростью передачи данных, тактируемых парой противофазных сигналов синхронизации, предлагается шаблон Dual-Clock, Input DDR Register (IDDR_2CLK). Этот шаблон поддерживает три варианта конфигурирования входных DDR-триггеров.
Структурная схема первого варианта входного триггера с удвоенной скоростью передачи данных и двумя входами синхронизации, поддерживающего режим OPPOSITE_EDGE Mode, изображена на рис. 378. В этом режиме запись информационных данных с входа осуществляется по фронту каждого тактового сигнала. При этом данные на выходах DDR-триггера также обновляются с привязкой к фронту соответствующего сигнала синхронизации.
Рис. 378. Структурная схема входного DDR-триггера с двумя входами синхронизации, поддерживающего режим OPPOSITE_EDGE Mode
Временные диаграммы сигналов, поясняющие функционирование входного триггера с удвоенной скоростью передачи данных, тактируемого парой сигналов синхронизации и поддерживающего режим OPPOSITE_EDGE Mode, приведены на рис. 379.
Рис. 379. Временные диаграммы сигналов входного DDR-триггера с двумя входами синхронизации, функционирующего в режиме OPPOSITE_EDGE Mode
Второй вариант конфигурирования входного триггера с удвоенной скоростью передачи данных и двумя входами синхронизации, в котором реализован режим SAME_EDGE Mode, поясняет структурная схема, изображенная на рис. 380.
Рис. 380. Структурная схема входного DDR-триггера с двумя входами синхронизации, реализующего режим SAME_EDGE Mode
На рис. 381 приведены временные диаграммы сигналов, соответствующие режиму функционирования SAME_EDGE Mode входного DDR-триггера, тактируемого двумя сигналами синхронизации. В этом режиме изменение информационных данных на выходах происходит по фронту первого тактового сигнала.
Рис. 381. Временные диаграммы сигналов входного DDR-триггера с двумя входами синхронизации, функционирующего в режиме SAME_EDGE Mode
Структурная схема, представляющая третий вариант конфигурирования входного триггера с удвоенной скоростью передачи данных, тактируемого парой сигналов синхронизации и поддерживающего режим SAME_EDGE_PIPELINED Mode, представлена на рис. 382. В этом режиме обновление выходных информационных данных входного DDR-триггера осуществляется с привязкой к фронту первого тактового сигнала. Но при этом, в отличие от режима SAME_EDGE Mode, отсутствует сдвиг данных друг относительно друга.
Рис. 382. Структурная схема входного DDR-триггера с двумя входами синхронизации, реализующего режим SAME_EDGE_PIPELINED Mode
На рис. 383 показазны временные диаграммы сигналов, поясняющие функционирование входного триггера с удвоенной скоростью передачи данных и двумя входами синхронизации в режиме SAME_EDGE_PIPELINED Mode.
Рис. 383. Временные диаграммы сигналов входного DDR-триггера с двумя входами синхронизации, функционирующего в режиме SAME_EDGE_PIPELINED Mode
В качестве основы шаблона Dual-Clock Input DDR Register (IDDR_2CLK) используется оператор создания экземпляра библиотечного примитива IDDR_2CLK, который представляет указанные варианты конфигурирования входного DDR-триггера в ПЛИС серии Virtex-5:
— 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. — — 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 ПЛИС серии Virtex-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. — 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;
- CE1, 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.
Рис. 385. Условный графический образ входного последовательно-параллельного преобразователя, применяемого в ПЛИС серии Virtex-5
Input/Output Delay Element (IODELAY) содержит шаблон описания элементов программируемой входной и выходной задержки, реализуемых на базе соответствующих аппаратных модулей ресурсов ввода/вывода SelectIO ПЛИС серии 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.all; — — 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).
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, — Valid 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, — Valid 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).
- 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.
Рис. 387. Условный графический образ элемента 2-портового ОЗУ, формируемого с помощью шаблона 16k+2k Parity Paramatizable True Dual-Port BlockRAM (RAMB18)
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-разрядные шины, применяемые для осуществления контроля четности информационных данных первого и второго порта;
- 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).
Рис. 388. Условный графический образ элемента 2-портового ОЗУ, формируемого с помощью шаблона 32k+4k Parity Paramatizable True Dual-Port BlockRAM (RAMB36)
36×512 Simple Dual-Port BlockRAM (RAMB18SDP) включает в себя образец описания 2-портового ОЗУ с фиксированной функцией портов (записи или чтения данных) информационной емкостью 16 384 бит с организацией 512×32 разряда и поддержкой контроля четности, которое предназначено для реализации на основе модуля блочной памяти 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: 36×512 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-портовой оперативной памяти с фиксированной функцией портов, формируемых с помощью шаблона 36×512 Simple Dual-Port BlockRAM (RAMB18SDP), входят следующие идентификаторы:
- DO — выходная 32-разрядная шина информационных данных порта чтения;
- DOP — выходная 4-разрядная шина, предназначенная для организации контроля четности считываемых информационных данных;
- RDCLK — вход сигнала синхронизации порта чтения данных;
- RDEN — вход сигнала разрешения порта чтения данных;
- REGCE — вход сигнала разрешения синхронизации для выходного регистра порта чтения данных;
- SSR — вход синхронного сброса/установки выходного регистра;
- WRCLK — вход сигнала синхронизации порта записи данных;
- WREN — вход сигнала разрешения порта записи данных;
- WRADDR — 9-разрядная шина адресов порта записи данных;
- RDADDR — 9-разрядная шина адресов порта чтения данных;
- DI — входная 32-разрядная шина информационных данных порта записи;
- DIP — входная 4-разрядная шина, предназначенная для организации контроля четности записываемых информационных данных;
- WE — входная 4-разрядная шина, объединяющая сигналы управления записью соответствующих байтов данных в ячейки элемента оперативной памяти.
Условный графический образ элемента 2-портового ОЗУ с фиксированной функцией портов информационной емкостью 16 384 бит с организацией 512×32 разряда и поддержкой контроля четности, для подготовки описания которого используется шаблон 36×512 Simple Dual-Port BlockRAM (RAMB18SDP), показан на рис. 389.
Рис. 389. Условный графический образ 2-портового ОЗУ, формируемого с помощью шаблона 36×512 Simple Dual-Port BlockRAM (RAMB18SDP)
72×512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP) содержит шаблон VHDL-описания элемента 2-портового ОЗУ с фиксированной функцией портов (записи или чтения данных) информационной емкостью 32 768 бит с организацией 512×64 разряда, со встроенной схемой контроля и коррекции ошибок ECC (Error Correction Code), реализуемого на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5. Каждый модуль блочной памяти в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT поддерживает возможность конфигурирования в виде ОЗУ с раздельными портами записи и чтения данных и организацией 512×64 разряда, в составе которых можно задействовать встроенную схему контроля и коррекции ошибок ECC. Структурная схема таких элементов оперативной памяти изображена на рис. 390.
Рис. 390. Структура ОЗУ со встроенной схемой контроля и коррекции ошибок ECC, реализуемого на базе блочной памяти ПЛИС серии Virtex-5
Для подготовки описания элемента ОЗУ с фиксированной функцией портов, встроенной схемой контроля и коррекции ошибок 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 — 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: 72×512 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 кроме настраиваемых параметров, представленных при рассмотрении предыдущего шаблона, используются параметры EN_ECC_READ и EN_ECC_WRITE. Параметр EN_ECC_READ разрешает или запрещает декодирование считываемых данных с помощью встроенной схемы контроля и коррекции ошибок ECC. Параметр EN_ECC_WRITE применяется для управления кодированием записываемых информационных данных встроенной схемой контроля и коррекции ошибок ECC. По умолчанию для этих параметров настройки предлагается значение FALSE, при котором кодирование и декодирование информационных данных не производится.
Система условных обозначений входов и выходов, применяемых в описании интерфейса элементов 2-портовой оперативной памяти с фиксированной функцией портов, формируемых с помощью шаблона 72×512 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-портовой оперативной памяти с фиксированной функцией портов, поддержкой контроля и коррекции ошибок, описание которого создается с помощью шаблона 72×512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP) для последующей реализации на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-5.
Рис. 391. Условный графический образ элементов 2-портового ОЗУ, формируемого с помощью шаблона 72×512 Simple Dual-Port BlockRAM/w ECC (RAMB36SDP)
Примечание. Полный список литературы смотрите в предыдущих частях статьи.