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

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

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

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

В двадцать седьмой части статьи завершается изучение шаблонов VHDLописаний элементов, построенных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT [55-68]. В этой части рассмотрены образцы описаний входного программируемого последовательно-параллельного и выходного параллельно-последовательного преобразователя данных, представленных в составе логических ячеек ввода/вывода ПЛИС серии Virtex-6. Кроме того, здесь же приведена информация о шаблонах описания различных вариантов двухпортовых ОЗУ и запоминающих устройств, функционирующих по принципу «первым вошел первым вышел» (FIFO), конфигурируемых на базе модулей блочной памяти Block RAM кристаллов перечисленных семейств.

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

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

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

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

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

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

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

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

walerry@km.ru

В двадцать седьмой части статьи завершается изучение шаблонов VHDL-описаний элементов, построенных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT [55—68]. В этой части рассмотрены образцы описаний входного программируемого последовательно-параллельного и выходного параллельно-последовательного преобразователя данных, представленных в составе логических ячеек ввода/вывода ПЛИС серии Virtex-6. Кроме того, здесь же приведена информация о шаблонах описания различных вариантов двухпортовых ОЗУ и запоминающих устройств, функционирующих по принципу «первым вошел — первым вышел» (FIFO), конфигурируемых на базе модулей блочной памяти Block RAM кристаллов перечисленных семейств.

Input SERial/DESerializer (ISERDESE1) содержит шаблон VHDL-описания входного преобразователя последовательного кода в параллельный, реализуемого на базе со-

ответствующих аппаратных ресурсов ввода/вывода SelectЮ кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 СХТ, Virtex-6 SXT и Virtex-6 НХТ.

О

Модуль последовательно-параллельного преобразования

>

На рис. 430 показана обобщенная структурная схема входного программируемого последовательно-параллельного преобразователя, представленного в составе логических ячеек ввода/вывода ПЛИС серии Virtex-6.

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

• селектор-мультиплексор входных данных;

• схема формирования сигнала разрешения синхронизации;

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

• модуль Bitslip, позволяющий осуществлять переупорядочивание поступающего потока входных данных.

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

СЕ1 [ СЕ2 [

DYNCLKSEL CLKB

CLK Щ>ф OCLK Щ>ф

DYNCLKDIVSEL CLKDIV

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

Схема разрешения .К, синхронизации

SHIFTIN1/2

SHIFTOUT1/2

Q1-Q6

- ISERDESE1 : 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 : (ISERDESE1_inst) and/or the port declarations after the

- code : "=>" declaration maybe changed to properly reference and

- : connect this function to the design. All inputs and outputs

- : must be connected.

(«Т I >- -1

втеир I >-

Рис. 430. Структура входного последовательно-параллельного преобразователя ПЛИС серии Viгtex-6

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

-- ISERDESE1: Input SERial/DESerializer -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

ISERDESELinst : ISERDESE1 generic map (

DATA_RATE => "DDR", -- "SDR" or "DDR" DATA_WIDTH => 4, -- Parallel data width (2-8, 10) DYN_CLKDIV_INV_EN => FALSE, -- Enable DYNCLKDIVINVSEL inversion (TRUE/FALSE)

DYN_CLK_INV_EN = > FALSE, -- Enable DYNCLKINVSEL inversion (TRUE/FALSE) -- INIT_Q1 - INIT_Q4: Initial value on the Q outputs (0/1) INIT_Q1 => '0', INIT_Q2 => '0', INIT_Q3 => '0', INIT_Q4 => '0',

INTERFACE_TYPE => "MEMORY", -- "MEMORY", "MEMORY_DDR3", "MEMORY_QDR", "NETWORKING", or "OVERSAMPLE"

IOBDELAY => "NONE", -- "NONE", "IBUF", "IFD",

"BOTH"

NUM_CE => 2, -- Number of clock enables (1 or 2) OFB_USED => FALSE, -- Select OFB path (TRUE/

FALSE)

SERDES_MODE => "MASTER", -- "MASTER" or

"SLAVE"

-- SRVAL_Q1 - SRVAL_Q4: Q output values when SR is used (0/1) SRVAL_Q1 => '0', SRVAL_Q2 => '0', SRVAL_Q3 => '0', SRVAL_Q4 => '0' )

port map (

O => O, -- 1-bit output: Combinatorial output

-- Q1 - Q6: 1-bit (each) output: Registered data outputs

Q1 => Q1,

Q2 => Q2, Q3 => Q3, Q4 => Q4, Q5 => Q5, Q6 => Q6,

-- SHIFTOUT1-SHIFTOUT2: 1-bit (each) output: Data width expansion output ports

SHIFTOUT1 => SHIFTOUT1,

SHIFTOUT2 => SHIFTOUT2,

BITSLIP => BITSLIP, -- 1-bit input: Bitslip enable input

-- CE1, CE2: 1-bit (each) input: Data register clock enable

inputs

CE1 => CE1, CE2 => CE2,

-- Clocks: 1-bit (each) input: ISERDESE1 clock input

ports

CLK => CLK, -- 1-bit input: High-speed clock input CLKB => CLKB, -- 1-bit input: High-speed secondary

clock input

CLKDIV => CLKDIV, -- 1-bit input: Divided clock input OCLK => OCLK, -- 1-bit input: High speed output clock input used when

-- INTERFACE_TYPE="MEMORY" -- Dynamic Clock Inversions: 1-bit (each) input: Dynamic clock inversion pins to switch clock polarity

DYNCLKDIVSEL => DYNCLKDIVSEL, -- 1-bit input: Dynamic CLKDIV inversion input

DYNCLKSEL => DYNCLKSEL, -- 1-bit input: Dynamic CLK/CLKB inversion input

-- Input Data: 1-bit (each) input: ISERDESE1 data input

ports

D => D, -- 1-bit input: Data input

DDLY => DDLY, -- 1-bit input: Serial input data from

IODELAYE1

OFB => OFB, -- 1-bit input: Data feedback input from

OSERDESE1

RST => RST, -- 1-bit input: Active high asynchronous

reset input

-- SHIFTIN1-SHIFTIN2: 1-bit (each) input: Data width expansion input ports

SHIFTIN1 => SHIFTIN1, SHIFTIN2 => SHIFTIN2 );

-- End of ISERDESE1_inst instantiation

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

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

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

• DYN_CLKDIV_INV_EN — предоставляет возможность применения динамического инвертирования тактового сигнала CLKDIV (по умолчанию этот параметр принимает значение FALSE, блокирующее возможность динамического изменения полярности указанного тактового сигнала).

• DYN_CLK_INV_EN — позволяет задействовать функцию динамического инвертирования сигнала синхронизации CLK (по умолчанию предлагается значение FALSE, исключающее возможность динамического изменения полярности указанного сигнала синхронизации).

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

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

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

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

• INTERFACE_TYPE — предоставляет возможность выбора варианта организации интерфейса передачи выходных данных (по умолчанию присваивается значение "MEMORY", при котором устанавливается режим передачи выходных данных, соответствующий высокоскоростным интерфейсам внешней памяти).

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

• NUM_CE — устанавливает количество входов сигналов разрешения синхронизации (по умолчанию задействуются два входа разрешения синхронизации).

• OFB_USED — разрешает или запрещает использование входа обратного преоб-

разования кода данных, формируемого параллельно-последовательным преобразователем, OFB (по умолчанию указанный вход не используется).

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

• SERDES_MODE — определяет режим функционирования формируемого входного последовательно-параллельного преобразователя — ведущий (MASTER) или подчиненный (SLAVE) (по умолчанию создается описание последовательно-параллельного преобразователя, функционирующего в ведущем режиме).

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

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

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

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

В состав системы условных обозначений входных и выходных портов, применяемых в описании интерфейса преобразователей последовательного кода данных в параллельный, формируемых с помощью шаблона Input SERial/DESerializer (ISERDESE1), входят следующие идентификаторы:

• O — комбинаторный выход последовательного кода данных;

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

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

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

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

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

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

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

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

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

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

ISERDESE1

— BITSLIP О -

— CE1

— CE2 Q1 -

- CLK CLKB Q2 -

— CLKDIV D Q3 -

— DDLY Q4 -

— DYNCLKDIVSEL

— □YNCLKSEL Q5 -

- DYNOCLKSEL OCLK Q6 -

— OFB SHIFTOUT1 -

— RST

— SHIFTIN1 SHIFTOUT2 -

— SHIFTIN2

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

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

• ^ГОГУ — вход тактового сигнала, вырабатываемого путем деления частоты сигнала синхронизации ^К, для регистровых выходов преобразователя, схемы входной задержки и модуля, осуществляющего функцию ВйзНр;

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

• DYNCLKDIVSEL — вход сигнала динамического переключения полярности тактового сигнала ^ГОГУ;

• DYNCLKSEL — вход сигнала динамического изменения полярности сигнала синхронизации ^К;

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

• DDLY — вход данных, поступающих в виде последовательного кода с выхода элемента входной/выходной задержки;

• ОБВ — вход данных, транслируемых с выхода параллельно-последовательного преобразователя;

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

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

последовательно-параллельного преобразо-

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

вателя данных, описание которого создается с помощью шаблона Input SERial/DESerializer (ISERDESE1) для последующей реализации на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода в ПЛИС серии Virtex-6, изображен на рис. 431.

Output SERial/DESerializer (OSERDESE1) — это образец описания выходного преобразователя параллельного кода в последовательный. Он предназначен для реализации на базе соответствующих аппаратных ресурсов ввода/вывода SelectIO в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Структурная схема программируемого выходного параллельно-последовательного преобразователя, входящего в состав логических ячеек ввода/вывода ПЛИС серии Virtex-6, представлена на рис. 432.

В состав этой схемы входят следующие функциональные элементы:

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

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

• выходной кольцевой буфер;

• выходные мультиплексоры.

Для формирования описаний выходных параллельно-последовательных преобразователей, конфигурируемых на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода в кристаллах семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT, предлагается библиотечный примитив OSERDESE1. Оператор создания экземпляра этого библиотечного примитива образует основу рассматриваемого шаблона:

-- OSERDESE1 : 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 : (OSERDESE1_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs -- : must be connected.

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

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- OSERDESE1: Output SERial/DESerializer -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

OSERDESE1_inst : OSERDESE1 generic map (

DATA_RATE_OQ => "DDR", -- "SDR" or "DDR" DATA_RATE_TQ => "DDR", -- "BUF', "SDR" or "DDR" DATA_WIDTH => 4, -- Parallel data width (1-8,10) DDR3_DATA => 1, -- Must leave at 1 (MIG-only

parameter)

INIT_OQ => '0', -- Initial value of OQ output (0/1) INIT_TQ => '0', -- Initial value of TQ output (0/1) INTERFACE_TYPE => "DEFAULT", -- Must leave at "DEFAULT" (MIG-only parameter)

ODELAY_USED => 0, -- Must leave at 0 (MIG-only

parameter)

SERDES_MODE => "MASTER", -- "MASTER" or

"SLAVE"

SRVAL_OQ => '0', -- OQ output value when SR is used

(0/1)

SRVAL_TQ => '0', -- TQ output value when SR is used

(0/1)

TRISTATE_WIDTH => 4 -- Parallel to serial 3-state converter width (1 or 4)

)

port map (

-- MIG-only Signals: 1-bit (each) output: Do not use unless generated by MIG

OCBEXTEND => OCBEXTEND, -- 1-bit output: Leave unconnected (MIG-only connected signal)

-- Outputs: 1-bit (each) output: Serial output ports OFB => OFB, -- 1-bit output: Data feedback output to

ISERDESE1

OQ => OQ, -- 1-bit output: Data output (connect to I/O

port)

TFB => TFB, -- 1-bit output: 3-state control output TQ => TQ, -- 1-bit output: 3-state path output -- SHIFTOUT1-SHIFTOUT2: 1-bit (each) output: Data width expansion output ports

SHIFTOUT1 => SHIFTOUT1, -- 1-bit output: Connect to SHIFTIN1 of slave or unconnected

SHIFTOUT2 => SHIFTOUT2, -- 1-bit output: Connect to SHIFTIN2 of slave or unconnected

-- Clocks: 1-bit (each) input: OSERDESE1 clock input

ports

CLK => CLK, -- 1-bit input: High-speed clock input CLKDIV => CLKDIV, -- 1-bit input: Divided clock

input

-- Control Signals: 1-bit (each) input: Clock enable and reset input ports

OCE => OCE, -- 1-bit input: Active high clock data path

enable input

RST => RST, -- 1-bit input: Active high reset input TCE => TCE, -- 1-bit input: Active high clock enable input for 3-state

-- D1 - D6: 1-bit (each) input: Parallel data inputs

D1 => D1,

D2 => D2,

D3 => D3,

D4 => D4,

D5 => D5,

D6 => D6,

-- MIG-only Signals: 1-bit (each) input: Do not use unless generated by MIG

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

CLKPERF => CLKPERF, -- 1-bit input: Ground input (MIG-only connected signal)

CLKPERFDELAY => CLKPERFDELAY, -- 1-bit input: Ground input (MIG-only connected signal)

ODV => ODV, -- 1-bit input: Ground input (MIG-only connected signal)

WC => WC, -- 1-bit input: Ground input (MIG-only connected signal)

-- SHIFTIN1-SHIFTIN2: 1-bit (each) input: Data width expansion input ports

SHIFTIN1 => SHIFTIN1, -- 1-bit input: Connect to SHIFTOUT1 of master or GND

SHIFTIN2 => SHIFTIN2, -- 1-bit input: Connect to SHIFTOUT2 of master or GND

-- T1 - T4: 1-bit (each) input: Parallel 3-state inputs T1 => T1, T2 => T2, T3 => T3, T4 => T4 );

-- End of OSERDESE1_inst instantiation

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

• DATA_RATE_OQ — устанавливает режим стандартной (SDR) или удвоенной скорости передачи данных (DDR) на последовательном выходе OQ (по умолчанию задано значение "DDR", соответствующее удвоенной скорости передачи данных).

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

• DATA_WIDTH — позволяет выбрать разрядность входного параллельного кода данных (по умолчанию формируется описание 4-разрядного параллельно-последовательного преобразователя).

• DDR3_DATA — предоставляет возможность установки режима функционирования, соответствующего интерфейсу внешней памяти DDR3 (по умолчанию присваивается единичное значение, разрешающее поддержку указанного режима).

• INIT_OQ — задает начальное состояние выхода последовательных данных OQ (по умолчанию указанный выход после завершения процесса конфигурирования ПЛИС устанавливается в состояние низкого логического уровня).

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

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

• ODELAY_USED — применяется для установки корректного режима функционирования кольцевого буфера при выборе варианта конфигурирования преобразователя, поддерживающего интерфейс внешней памяти DDR3 (по умолчанию этому параметру присваивается нулевое значение, которое используется для остальных вариантов конфигурирования параллельно-последовательного преобразователя).

• SERDES_MODE — указывает режим функционирования формируемого выходного параллельно-последовательного преобразователя — ведущий (MASTER) или подчиненный (SLAVE) (по умолчанию создается описание преобразователя параллельного кода в последовательный, функционирующего в ведущем режиме).

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

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

• TRISTATE_WIDTH — определяет разрядность параллельного кода управления три-стабильным выходом (по умолчанию используется 4-разрядный код управления). Система условных обозначений входов и выходов, используемых в описании интерфейса выходных преобразователей параллельного кода в последовательный, формируемых с помощью шаблона Output SERial/DESerializer (OSERDESE1), включает в себя следующие идентификаторы:

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

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

параллельного преобразователя, описание которого создается с помощью шаблона Input SERial/DESerializer (ISERDESE1).

• OQ — выход последовательного кода данных, сформированного в результате преобразования входного параллельного кода.

• TFB — выход тристабильного сигнала управления модулем входной/выходной задержки.

• TQ — выход сигнала управления триста-бильным буферным элементом, полученного в результате преобразования параллельного кода, представленного на входах T1-T4.

• SHIFTOUT1 — выход, применяемый для организации каскадного соединения формируемых преобразователей (подключается к входу SHIFTIN1 ведущего модуля преобразования данных).

• SHIFTOUT2 — выход, предназначенный для осуществления каскадного соединения формируемых преобразователей (подключается к входу SHIFTIN2 ведущего модуля преобразования данных).

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

• CLKDIV — вход тактового сигнала, являющегося результатом деления частоты сигнала синхронизации CLK.

• OCE — вход сигнала разрешения синхронизации для выходного регистра.

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

• TCE — вход сигнала разрешения синхронизации для регистра сигнала управления тристабильным выходом.

• D1-D6 — входы соответствующих разрядов данных, представленных в виде параллельного двоичного кода.

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

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

• ODV — вход сигнала, применяемого для организации передачи данных в соответствии с интерфейсом DDR3.

• WC — вход сигнала команды записи, используемого при осуществлении передачи данных в соответствии с интерфейсом DDR3.

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

OSERDESE1

CLK OCBEXTEND

CLKDIV

CLKPERF OFB

CLKPERFDELAY D1 OQ

D2 SHIFTOUT1

D3

D4 SHIFTOUT2

D5

D6 TFB

ОСЕ ODV TQ

SHIFTIN1

SHIFTIN2

RST

ТСЕ

Т1

Т2

ТЗ

Т4

WC

OSERDESE1 ISERDESE1

CLK OCBEXTEND - - BITSLIP 0

CLKDIV - CE1

CLKPERF 0FB CE2 01

-

CLKPERFDELAY OQ D1 - CLK Q2 CLKB

-

02 SHIFTOUT1 - CLKDIV Q3

D3 - D

D4 SHIFTOUT2 DDLY Q4

DS - DYNCLKDIVSEL

„„ TFB D6 DYNCLKSEL 05

-

ОСЕ TQ ODV - DYNOCLKSEL Q6 OCLK 0FB SHIFTOUT1

-

SHIFTIN1

SHIFTIN2 - RST

RST - SHIFTIN1 SHIFTOUT2

TCE - SHIFTIN2

T1

T2

T3

T4

WC

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

• SHIFTIN2 — вход, применяемый для осуществления каскадного соединения формируемых преобразователей (подключается к выходу SHIFTOUT2 подчиненного модуля преобразования данных).

• T1-T4 — входы соответствующих разрядов параллельного двоичного кода управления выходом тристабильного буферного элемента.

На рис. 433 приведен условный графический образ выходного параллельно-последовательного преобразователя, конфигурируемого на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, для подготовки описания которого используется шаблон OutputSERial/DESerializer (OSERDESE1).

Наличие дополнительного выхода данных OFB в параллельно-последовательном преобразователе и одноименного входа в последовательно-параллельном преобразователе, описание которого формируется на основе шаблона Input SERial/DESerializer (ISERDESE1), обеспечивает возможность их непосредственного соединения, как показано на рис. 434. При этом оба преобразователя необходимо конфигурировать с одними

Рис. 434. Схема непосредственного подключения выходного параллельно-последовательного преобразователя к входному последовательно-параллельному преобразователю в ПЛИС серии Viгtex-6

и теми же значениями разрядности параллельного кода и скорости передачи данных. Следует учитывать, что в этом случае входной преобразователь последовательного кода в параллельный нельзя использовать для обработки внешних (по отношению к ПЛИС) данных.

18K-bit Configurable Synchronous Block RAM (RAMB18E1) предоставляет шаблон параметризированного варианта описания синхронного двухпортового ОЗУ общей емкостью 18 432 бита с программируемой организацией каждого порта, возможностью использования выходных регистров, поддержкой контроля четности и режима побайтной записи, которое предназначено для реализации на основе модуля блочной памяти Block RAM ПЛИС серии Virtex-6. Модули блочной памяти кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT поддерживают возможность конфигурирования в виде двух независимых элементов двухпортовых ОЗУ информационной емкостью 16 384 бита и дополнительным объемом 2048 бит для организации контроля четности записываемых и считываемых данных. Для подготовки описаний элементов оперативной памяти указанной емкости с различными вариантами организации портов

предусмотрен библиотечный примитив RAMB18E1, который позволяет формировать двухпортовые ОЗУ на базе модуля Block RAM ПЛИС серии Virtex-6 двух типов — True Dual-Port (TDP) RAM и Simple Dual-Port (SDP) RAM. К первому типу относятся элементы полнофункциональной двухпортовой оперативной памяти, каждый порт которых поддерживает операции чтения и записи данных. В двухпортовых ОЗУ второго типа функции каждого порта жестко зафиксированы: один порт предназначен для записи информации, а второй — для чтения данных.

В составе элементов двухпортовой оперативной памяти, формируемых с помощью библиотечного примитива RAMB18E1, можно задействовать выходные регистры со входами разрешения синхронизации и сброса/установки. Обобщенная структурная схема ОЗУ с выходным регистром, реализуемого на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, показана на рис. 435.

В библиотечном примитиве RAMB18E1 предусмотрена возможность выбора приоритетов сигналов на входах разрешения синхронизации и сброса/установки выходного регистра. Вид данных, представленных на вы-

EN

RSTRAM

REGCE RSTREG

Рис. 435. Структурная схема ОЗУ с выходным регистром, реализуемого на базе модуля блочной памяти Block RAM ПЛИС серии Virtex-6

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

ходах формируемого элемента оперативной памяти при выполнении операций сброса, зависит от установленного соотношения приоритетов сигналов на входах управления выходного регистра. На рис. 436 приведены временные диаграммы входных и выходных сигналов элемента оперативной памяти с выходным регистром, в котором сигнал на входе сброса/установки имеет более высокий приоритет по сравнению с сигналом на входе разрешения синхронизации.

Временные диаграммы сигналов на входах и выходах ОЗУ, в котором вход разрешения синхронизации обладает более высоким

приоритетом, чем вход сброса/установки, представлены на рис. 437.

Кроме выходного регистра с динамическим управлением в составе элементов оперативной памяти, конфигурируемых на базе модулей блочной памяти ПЛИС серии Virtex-6, можно задействовать регистр-защелку. Временные диаграммы входных и выходных сигналов для этого варианта конфигурирования модуля Block RAM показаны на рис. 438.

Оператор создания экземпляра библиотечного примитива RAMB18E1 является основой приведенного ниже шаблона:

Рис. 436. Временные диаграммы сигналов ОЗУ с выходным регистром, в котором вход сброса имеет более высокий приоритет, чем вход разрешения синхронизации

Рис. 437. Временные диаграммы сигналов ОЗУ с выходным регистром, в котором вход разрешения синхронизации имеет более высокий приоритет, чем вход сброса

CLK _|-1_|-1_|-1_|-1_|-1_

RAMEN '

RSTLAT

DBRAM = DO DO X" D1 ~XSRVAL(1LffjyX D3

Рис. 438. Временные диаграммы входных и выходных сигналов блочного ОЗУ с встроенным регистром-защелкой

-- RAMB18E1 : 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 : (RAMB18E1_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs -- : must be connected.

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

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- RAMB18E1: 18K-bit Configurable Synchronous Block RAM -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

RAMB18E1_inst : RAMB18E1 generic map (

-- Colision check: Values ("ALL", "WARNING_ONLY", "GENERATE_X_ONLY" or "NONE")

SIM_COLLISION_CHECK => "ALL", -- DOA_REG, DOB_REG: Optional output register (0

or 1)

DOA_REG => 0, DOB_REG => 0,

-- INITP_00 to INITP_07: Initial contents of parity memory array

INITP_00=> X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

INITP_06=> X"0000000000000000000000000000000000000000", INITP_07=> X"0000000000000000000000000000000000000000",

-- INIT_00 to INIT_3F: Initial contents of data memory array INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

INIT_3E => X"00000000000000000000000000000000000000000", INIT_3F=> X"00000000000000000000000000000000000000000", -- INIT_A, INIT_B: Initial values on output ports INIT_A => X"00000", INIT_B => X"00000", INIT_FILE => "NONE", -- RAM init file

RAM_MODE => "TDP", "SDP" or "TDP" RDADDR_COLLISION_HWCONFIG => "DELAYED_ WRITE", "PERFORMANCE" or "DELAYED_WRITE"

-- READ_WIDTH_A/B, WRITE_WIDTH_A/B: Read/ write width per port

READ_WIDTH_A => 0, -- 0,1,2,4,9,18,36 READ_WIDTH_B => 0, -- 0,1,2,4,9,18 WRITE_WIDTH_A => 0, -- 0,1,2,4,9,18 WRITE_WIDTH_B => 0, -- 0,1,2,4,9,18,36 -- RSTREG_PRIORITY_A, RSTREG_PRIORITY_B: Reset or enable priority ("RSTREG" or "REGCE")

RSTREG_PRIORITY_A => "RSTREG", RSTREG_PRIORITY_B => "RSTREG", -- SRVAL_A, SRVAL_B: Set/reset value for output SRVAL_A => X"00000", SRVAL_B => X"00000",

-- WriteMode: Value on output upon a write ("WRITE_ FIRST", "READ_FIRST", or "NO_CHANGE")

WRITE_MODE_A => "WRITE_FIRST", WRITE_MODE_B => "WRITE_FIRST"

)

port map (

-- Port A Data: 16-bit (each) output: Port A data DOADO => DOADO, -- 16-bit output: A port data/LSB

data output

DOPADOP => DOPADOP, -- 2-bit output: A port parity/ LSB parity output

-- Port B Data: 16-bit (each) output: Port B data DOBDO => DOBDO, -- 16-bit output: B port data/MSB

data output

DOPBDOP => DOPBDOP, -- 2-bit output: B port parity/ MSB parity output

-- Port A Address/Control Signals: 14-bit (each) input: Port A address and control signals (read port -- when RAM_MODE="SDP") ADDRARDADDR => ADDRARDADDR, -- 14-bit input: A port address/Read address input

CLKARDCLK => CLKARDCLK, -- 1-bit input: A port clock/Read clock input

ENARDEN => ENARDEN, -- 1-bit input: A port enable/ Read enable input

REGCEAREGCE => REGCEAREGCE, -- 1-bit input: A port register enable/Register enable input

компоненты и технологии • № 4 '2012 www.kit-e.ru

RSTRAMARSTRAM => RSTRAMARSTRAM, -- 1-bit input: A port set/reset input

RSTREGARSTREG => RSTREGARSTREG, -- 1-bit input: A port register set/reset input

WEA => WEA, -- 2-bit input: A port write enable

input

-- Port A Data: 16-bit (each) input: Port A data DIADI => DIADI, -- 16-bit input: A port data/LSB data

input

DIPADIP => DIPADIP, -- 2-bit input: A port parity/LSB

parity input

-- Port B Address/Control Signals: 14-bit (each) input: Port B address and control signals (write port -- when RAM_MODE="SDP") ADDRBWRADDR => ADDRBWRADDR, -- 14-bit input: B port address/Write address input

CLKBWRCLK => CLKBWRCLK, -- 1-bit input: B port clock/Write clock input

ENBWREN => ENBWREN, -- 1-bit input: B port enable/ Write enable input

REGCEB => REGCEB, -- 1-bit input: B port register

enable input

RSTRAMB => RSTRAMB, -- 1-bit input: B port set/reset

input

RSTREGB => RSTREGB, -- 1-bit input: B port register set/reset input

WEBWE => WEBWE, -- 4-bit input: B port write enable/ Write enable input

-- Port B Data: 16-bit (each) input: Port B data DIBDI => DIBDI, -- 16-bit input: B port data/MSB data

input

DIPBDIP => DIPBDIP -- 2-bit input: B port parity/MSB

parity input

);

-- End of RAMB18E1_inst instantiation

В библиотечном примитиве ЯЛМВ18Е1 используется следующая совокупность параметров настройки, предоставляющих возможность выбора требуемой организации и режимов функционирования формируемого элемента синхронной двухпортовой оперативной памяти:

• SIM_COLLISЮN_CHECK — устанавливает режим обработки различных конфликтных ситуаций при выполнении операций записи и чтения данных в процессе моделирования (по умолчанию предлагается значение "ALL", при котором в случае возникновения конфликтной ситуации генерируется соответствующее предупреждение, а выходы ОЗУ устанавливаются в неопределенное состояние).

• DOA_REG — позволяет задействовать регистр на выходе первого порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения 18 младших разрядов в ОЗУ с фиксированной функцией портов (по умолчанию выходной регистр не задействуется).

• DOB_REG — разрешает или запрещает использование регистра на выходе второго порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения 18 старших разрядов в ОЗУ с фиксированной функцией портов (по умолчанию выходной регистр не используется).

• МГГР_00 — МГГР_07 — применяются для инициализации содержимого ячеек памяти, предназначенных для организации контроля четности (по умолчанию во все ячейки ОЗУ заносится нулевое значение).

• ШГТ_00-ШГТ_3Б — предназначены для инициализации содержимого соответствующих ячеек основной памяти.

• INIT_A, INIT_B — задают начальное значение для соответствующего выходного порта данных, устанавливаемое после завершения процесса конфигурирования ПЛИС (по умолчанию этим параметрам присваивается значение X"00000").

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

• RAM_MODE — позволяет выбрать тип формируемого элемента памяти: ОЗУ с раздельными фиксированными портами записи и чтения данных SDP или полнофункциональное двухпортовое ОЗУ TDP (по умолчанию создается описание элемента полнофункциональной двухпортовой оперативной памяти).

• RDADDR_COLLISION_HWCONFIG — предоставляет возможность повышения производительности конфигурируемого двухпортового ОЗУ (по умолчанию установлено значение "DELAYED_WRITE", соответствующее стандартной производительности).

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

• READ_WIDTH_B — указывает разрядность второго выходного порта полнофункционального двухпортового ОЗУ (при подготовке описания элемента памяти с фиксированной функцией портов не используется).

• WRITE_WIDTH_A — задает разрядность первого входного порта полнофункционального двухпортового ОЗУ (при формировании описания элемента памяти с фиксированной функцией портов не используется).

• WRITE_WIDTH_B — определяет разрядность второго входного порта полнофункционального двухпортового ОЗУ или порта записи данных элемента памяти с фиксированной функцией портов.

• RSTREG_PRIORITY_A — устанавливает соотношение приоритетов сигналов управления для выходного регистра первого порта элемента полнофункциональной двухпортовой памяти или порта чтения младших разрядов ОЗУ с фиксированной функцией портов (по умолчанию сигнал на входе сброса обладает более высоким приоритетом, чем сигнал на входе разрешения синхронизации).

• RSTREG_PRIORITY_B — задает соотношение приоритетов сигналов управления для выходного регистра второго порта элемента полнофункциональной двухпортовой памяти или порта чтения старших разрядов ОЗУ с фиксированной функцией портов (по умолчанию сигнал на входе сброса имеет более высокий приоритет,

чем сигнал на входе разрешения синхронизации).

• SRVAL_A — определяет состояние первого выходного порта данных (A) элемента полнофункциональной двухпортовой оперативной памяти или порта чтения 18 младших разрядов в ОЗУ с фиксированной функцией портов, устанавливаемое при подаче активного уровня сигнала на вход сброса/установки (по умолчанию предлагается значение X"00000").

• SRVAL_B — указывает состояние второго выходного порта данных (B) элемента полнофункциональной двухпортовой оперативной памяти или порта чтения 18 старших разрядов в ОЗУ с фиксированной функцией портов, устанавливаемое при наличии активного уровня сигнала на входе сброса/установки (по умолчанию присваивается значение X"00000").

• WRITE_MODE_A и WRITE_MODE_B — устанавливают порядок выполнения операций записи и чтения данных при обращении к одной ячейке памяти для соответствующего порта (по умолчанию предлагается вариант "WRITE_FIRST", при котором записываемые данные сразу отображаются на выходах ОЗУ в случае одновременного присутствия сигналов разрешения записи и чтения данных).

В состав системы условных обозначений входов и выходов, используемых в описании интерфейса элементов двухпортовых ОЗУ, формируемых с помощью шаблона 18K-bit Configurable Synchronous Block RAM (RAMB18E1) в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, входят следующие идентификаторы:

• DOADO — выходная 16-разрядная шина, на которой отображаются информационные данные первого порта элемента полнофункциональной двухпортовой оперативной памяти или младшие разряды информационных данных порта чтения в ОЗУ с фиксированной функцией портов.

• DOPADOP — выходная 2-разрядная шина, на которую выводится код, предназначенный для осуществления контроля четности информационных данных первого порта элемента полнофункциональной двухпортовой оперативной памяти или младшие разряды контрольного кода в ОЗУ с фиксированной функцией портов.

• DOBDO — выходная 16-разрядная шина, на которой отображаются информационные данные второго порта элемента полнофункциональной двухпортовой оперативной памяти или старшие разряды информационных данных порта чтения в ОЗУ с фиксированной функцией портов.

• DOPBDOP — выходная 2-разрядная шина, на которую выводится код, предназначенный для осуществления контроля четности информационных данных второго порта элемента полнофункциональной двухпо-

ртовой оперативной памяти или старшие разряды контрольного кода в ОЗУ с фиксированной функцией портов.

• ADDRARDADDR — 14-разрядная шина адреса первого порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения в ОЗУ с фиксированной функцией портов.

• CLKARDCLK — вход сигнала синхронизации первого порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения в ОЗУ с фиксированной функцией портов.

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

• ENARDEN — вход сигнала разрешения первого порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения в ОЗУ с фиксированной функцией портов.

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

• RSTRAMARSTRAM — вход сигнала сброса/установки первого порта элемента полнофункциональной двухпортовой оперативной памяти или порта чтения в ОЗУ с фиксированной функцией портов.

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

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

• DIADI — входная 16-разрядная шина, на которую поступают записываемые информационные данные первого порта элемента полнофункциональной двухпортовой оперативной памяти или младшие разряды информационных данных порта записи в ОЗУ с фиксированной функцией портов.

• DIPADIP — входная 2-разрядная шина, на которую поступает код, предназначенный для осуществления контроля четности записываемых информационных данных первого порта элемента полнофункциональной двухпортовой оперативной памяти или младшие разряды контрольного кода в ОЗУ с фиксированной функцией портов.

• ADDRBWRADDR — 14-разрядная шина адреса второго порта элемента полнофункциональной двухпортовой оперативной памяти или порта записи в ОЗУ с фиксированной функцией портов.

• CLKBWRCLK — вход сигнала синхронизации второго порта элемента полнофунк-

циональной двухпортовой оперативной памяти или порта записи в ОЗУ с фиксированной функцией портов.

• ENBWREN — вход сигнала разрешения второго порта элемента полнофункциональной двухпортовой оперативной памяти или порта записи в ОЗУ с фиксированной функцией портов.

• REGCEB — вход сигнала разрешения синхронизации выходного регистра второго порта элемента полнофункциональной двухпортовой оперативной памяти (не используется в ОЗУ с фиксированной функцией портов).

• RSTRAMB — вход сигнала сброса/установки второго порта элемента полнофункциональной двухпортовой оперативной памяти (не задействуется в ОЗУ с фиксированной функцией портов).

• RSTREGB — вход сигнала сброса/установки выходного регистра второго порта элемента полнофункциональной двухпортовой оперативной памяти (не используется в ОЗУ с фиксированной функцией портов).

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

RAMB18E1

— ADDRARDADDR(13:0) DOADO(15:0)

— ADDRBWRADDR(13:0)

— DIADI(15:0)

— DIBDI(15:0)

— DIPADIP(1:0)

DIPBDIP(1:0) WEA(1:0) DOBDO(15:0)

— WEBWE(3:0)

— CLKARDCLK

— CLKBWRCLK

— ENARDEN

— ENBWREN DOPADOP(1:0)

— REGCEAREGCE

— REGCEB

— RSTRAMARSTRAM

— RSTRAMB

RSTREGARSTREG RSTREGB DOPBDOP(1:0)

Рис. 439. Условный графический образ элемента двухпортового ОЗУ, формируемого с помощью шаблона 18K-bit Configurable Synchronous Block RAM (RAMB18E1)

WRADDR[8:0] -RDADDR[8:0] -DIP[7:0]-ECCPARTY[7:0] -

INJECTSBITERR-INJECTDBITERR-Dl[63:0]-

D0[63:0] -

DOP[7:0]-

RDADDRECC[8:0] -

wraddr

rdaddr

-V-

64-bit ECC Encode

DO REG

DO_REG

fO-

DO REG

SBITERR-

DO REG

DO REG

EN ECC WRITE

EN ECC READ

BRAM 512x72

H

ч

Decode and

Correct

Out

Parity

Out

EN ECC READ

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

DIP[7:01 (Decode Only Mode)

ECCPARITY[7:0] ! (Encode Only Mode)

"X

T2W

I

"X

T3w

I

X_

T4W

I

1 а X Ь X с X d

1 А X В X с X D

1 PA X PB X PC X PD

IX РА X PB X PC X PD

Рис. 441. Временные диаграммы сигналов ОЗУ,

иллюстрирующие выполнение операций записи данных при использовании интегрированной схемы ECC

RDCLK

RDEN

RDADDR[8:0]

D0[63:0] (Latch Mode)

DOP[7:0] (Latch Mode)

SBITERR (Latch Mode)

DBITERR (Latch Mode)

ECCRDADDR (Latch Mode)

D0[63:0] (Register Mode)

DOP[7:0] (Register Mode)

SBITERR (Register Mode)

DBITERR (Register Mode)

ECCRDADDR (Register Mode)

~X_

T1R

Jr

T2R

Jr

~x_

T3R

Jr

~x_

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

T4R

Jr

-^-TRCCKEN

i-trcck_addr

3C

dc

:o_dc|

[*- TRCKO_E(j;C_SBITERR (Latch Mod4)

У~ Double Bit Ёгтог

—i

3C

3C

3C

3C

L

I

DC

I

mCKO_ECjC_DBITERR (Latch Modsj)

-H f»-TRCKO_DO (Register Mode)

У~ Single Bit Error

-»-I p*-TRCKO_ECC_SBltrERR (Register Mode)

3C

!X

3C

ZXI

x:

x: k

x

Double Bit Error

3C

x:

x:

-TRCKO_ECC_DBI]rERR (Register Mode)

Рис. 442. Временные диаграммы сигналов ОЗУ,

поясняющие выполнение операций чтения данных при использовании встроенной схемы ECC

• DIBDI — входная 16-разрядная шина, на которую поступают записываемые информационные данные второго порта элемента полнофункциональной двухпортовой оперативной памяти или старшие разряды информационных данных порта записи в ОЗУ с фиксированной функцией портов.

• DIPBDIP — входная 2-разрядная шина, на которую поступает код, предназначенный для осуществления контроля четности записываемых информационных данных второго порта элемента полнофункциональной двухпортовой оперативной памяти или старшие разряды контрольного кода в ОЗУ с фиксированной функцией портов.

Условный графический образ элемента двухпортовой оперативной памяти с поддержкой контроля четности, побайтной записи информации и применения выходных регистров, реализуемого на базе модуля Block RAM ПЛИС серии Virtex-6, для подготовки описания которого применяется шаблон 18K-bit Configurable Synchronous Block RAM (RAMB18E1), изображен рис. 439.

36K-bitConfigurableSynchronousBlockRAM (RAMB36E1) включает в себя образец описания варианта конфигурирования модуля блочной памяти Block RAM кристаллов про-

граммируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT в виде двухпортового ОЗУ информационной емкостью 32 768 бит и дополнительным объемом 4096 бит, предназначенным для осуществления контроля и коррекции ошибок, с программируемой организацией каждого порта, возможностью использования выходных регистров и поддержкой режима побайтной записи. В составе модулей блочной памяти ПЛИС серии Virtex-6 применяется новая модификация встроенной схемы контроля и коррекции ошибок ECC [60], используемой в кристаллах программируемой логики семейств Virtex-5 LX, Virtex-5 LXT, Virtex-5 SXT, Virtex-5 TXT и Virtex-5 FXT. Структура элементов двухпортовой оперативной памяти с усовершенствованной схемой контроля и коррекции ошибок ECC, реализуемой на базе модуля Block RAM ПЛИС серии Virtex-6, показана на рис. 440.

Временные диаграммы входных и выходных сигналов ОЗУ, поясняющие процесс выполнения операций записи данных при использовании интегрированной схемы контроля и коррекции ошибок ECC, приведены на рис. 441.

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

Встроенная схема контроля и коррекции ошибок ECC, присутствующая в модулях блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT, предоставляет возможность обнаружения двух ошибочных разрядов информационных данных, а также исправления одного модифицированного бита. Интегрированную схему ECC можно задействовать в элементах оперативной памяти, включающих в себя как выходные регистры с динамиче-

Запись ч данных

Чтение, данных

WREN

WRADDR "'S--X—3—X—5-X-*

INJSBITERR _/ \_

INJDBITERR _/ \

RDCLK RDADDR RDEN

DOUT _

SBITERR _

DBITERR _

Скорректированные данные

Нескорректированные данные

HEZZXÇ

Рис. 443. Временные диаграммы сигналов, поясняющие процесс коррекции ошибок в ОЗУ с выходным регистром

Запись данных

Чтение данных

/-А -В, DC о !ХИ

J I

- !

/ \

Скорректированные данные j

Нескорректированные данные -

Рис. 444. Временные диаграммы сигналов, поясняющие коррекцию ошибок в ОЗУ со встроенным регистром-защелкой

RDCLK RDADDR RDEN/REGCE DOUT SBITERR DBITERR ECCRDADDR

"V.

.X"

"X.

ГХИШХИзИХШ!

Скорректированные данные

Нескорректированные данные

Рис. 445. Временные диаграммы сигналов,

поясняющие формирование адреса декодируемых данных в ОЗУ с выходным регистром

Скорректированные данные

Нескорректированные данные

Рис. 446. Временные диаграммы сигналов,

поясняющие формирование адреса декодируемых данных в ОЗУ со встроенной защелкой

ским управлением, так и регистры-защелки. На рис. 443 показаны временные диаграммы входных и выходных сигналов, демонстрирующие процесс коррекции одиночной ошибки и обнаружения двойной ошибки в элементах оперативной памяти с выходными регистрами.

Временные диаграммы входных и выходных сигналов, поясняющие процесс коррекции модифицированного разряда данных в блочном ОЗУ со встроенным регистром-защелкой, приведены на рис. 444.

В элементах оперативной памяти, в состав которых включена схема контроля и коррекции ошибок ЕСС, предусмотрена до-

полнительная выходная шина, на которой отображается текущий адрес декодируемых информационных данных. Процесс формирования сигналов на этой шине для ОЗУ с выходным регистром и защелкой демонстрируют временные диаграммы, представленные на рис. 445 и 446 соответственно.

Для подготовки описания элемента ОЗУ суммарной емкостью 36 864 бита с программируемой организацией каждого порта, возможностью использования выходных регистров, поддержкой контроля и коррекции ошибок и режима побайтной записи предлагается шаблон, выполненный на основе экземпляра библиотечного примитива RAMB36E1:

-- RAMB36E1 : 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 : (RAMB36E1_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs -- : must be connected.

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

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- RAMB36E1: 36K-bit Configurable Synchronous Block RAM -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

RAMB36E1_inst : RAMB36E1 generic map (

-- Colision check: Values ("ALL", "WARNING_ONLY", "GENERATE_X_ONLY" or "NONE")

SIM_COLLISION_CHECK => "ALL", -- DOA_REG, DOB_REG: Optional output register (0 or 1) DOA_REG => 0, DOB_REG => 0,

-- Error Correction Circuitry (ECC): Encoder/decoder enable (TRUE/FALSE)

EN_ECC_READ => FALSE, EN_ECC_WRITE => FALSE,

-- INITP_00 to INITP_0F: Initial contents of the parity memory array

INITP_00=> X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

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

INITP_0E => X"0000000000000000000000000000000000000000", INITP_0F=> X"0000000000000000000000000000000000000000", -- INIT_00 to INIT_7F: Initial contents of the data memory array INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

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

-- INIT_A, INIT_B: Initial values on output ports INIT_A => X"000000000", INIT_B => X"000000000", INIT_FILE => "NONE", -- RAM initialization file

-- RAM_EXTENSION_A, RAM_EXTENSION_B: Selects cascade mode ("UPPER", "LOWER", or "NONE")

RAM_EXTENSION_A => "NONE", RAM_EXTENSION_B => "NONE", RAM_MODE => "TDP", "SDP" or "TDP" RDADDR_COLLISION_HWCONFIG => "DELAYED_ WRITE", "PERFORMANCE" or "DELAYED_WRITE"

-- READ_WIDTH_A/B, WRITE_WIDTH_A/B: Read/write width per port

READ_WIDTH_A => 0, -- 0, 1, 2, 4, 9, 18, 36, or 72 READ_WIDTH_B => 0, -- 0, 1, 2, 4, 9, 18, or 36 WRITE_WIDTH_A => 0, -- 0, 1, 2, 4, 9, 18, or 36 WRITE_WIDTH_B => 0, -- 0, 1, 2, 4, 9, 18, 36, or 72 -- RSTREG_PRIORITY_A, RSTREG_PRIORITY_B: Reset or enable priority ("RSTREG" or "REGCE")

RSTREG_PRIORITY_A => "RSTREG", RSTREG_PRIORITY_B => "RSTREG", -- SRVAL_A, SRVAL_B: Set/reset value for output SRVAL_A => X"000000000", SRVAL_B => X"000000000",

-- WriteMode: Value on output upon a write ("WRITE_ FIRST", "READ_FIRST", or "NO_CHANGE")

WRITE_MODE_A => "WRITE_FIRST", WRITE_MODE_B => "WRITE_FIRST"

)

port map (

-- Cascade Signals: 1-bit (each) output: BRAM cascade ports (to create 64kx1)

CASCADEOUTA => CASCADEOUTA, -- 1-bit output: A port cascade output

CASCADEOUTB => CASCADEOUTB, -- 1-bit output: B port cascade output

-- ECC Signals: 1-bit (each) output: Error Correction Circuitry ports

DBITERR => DBITERR, -- 1-bit output: double bit error

status output

ECCPARITY => ECCPARITY, -- 8-bit output: generated error correction parity

RDADDRECC => RDADDRECC, -- 9-bit output: ECC

read address

компоненты и технологии • № 4 '2012 www.kit-e.ru

SBITERR => SBITERR, -- 1-bit output: Single bit error

status output

-- Port A Data: 32-bit (each) output: Port A data DOADO => DOADO, -- 32-bit output: A port data/LSB

data output

DOPADOP => DOPADOP, -- 4-bit output: A port parity/ LSB parity output

-- Port B Data: 32-bit (each) output: Port B data DOBDO => DOBDO, -- 32-bit output: B port data/MSB

data output

DOPBDOP => DOPBDOP, -- 4-bit output: B port parity/ MSB parity output

-- Cascade Signals: 1-bit (each) input: BRAM cascade ports (to create 64kx1)

CASCADEINA => CASCADEINA, -- 1-bit input: A port

cascade input

CASCADEINB => CASCADEINB, -- 1-bit input: B port

cascade input

-- ECC Signals: 1-bit (each) input: Error Correction Circuitry ports

INJECTDBITERR => INJECTDBITERR, -- 1-bit input: Inject a double bit error

INJECTSBITERR => INJECTSBITERR, -- 1-bit input: Inject a single bit error

-- Port A Address/Control Signals: 16-bit (each) input: Port A address and control signals (read port -- when RAM_MODE="SDP") ADDRARDADDR => ADDRARDADDR, -- 16-bit input: A port address/Read address input

CLKARDCLK => CLKARDCLK, -- 1-bit input: A port clock/Read clock input

ENARDEN => ENARDEN, -- 1-bit input: A port enable/ Read enable input

REGCEAREGCE => REGCEAREGCE, -- 1-bit input: A port register enable/Register enable input

RSTRAMARSTRAM => RSTRAMARSTRAM, -- 1-bit input: A port set/reset input

RSTREGARSTREG => RSTREGARSTREG, -- 1-bit input: A port register set/reset input

WEA => WEA, -- 4-bit input: A port write enable input -- Port A Data: 32-bit (each) input: Port A data DIADI => DIADI, -- 32-bit input: A port data/LSB data

input

DIPADIP => DIPADIP, -- 4-bit input: A port parity/LSB

parity input

-- Port B Address/Control Signals: 16-bit (each) input: Port B address and control signals (write port -- when RAM_MODE="SDP") ADDRBWRADDR => ADDRBWRADDR, -- 16-bit input: B port address/Write address input

CLKBWRCLK => CLKBWRCLK, -- 1-bit input: B port clock/Write clock input

ENBWREN => ENBWREN, -- 1-bit input: B port enable/ Write enable input

REGCEB => REGCEB, -- 1-bit input: B port register

enable input

RSTRAMB => RSTRAMB, -- 1-bit input: B port set/reset

input

RSTREGB => RSTREGB, -- 1-bit input: B port register set/reset input

WEBWE => WEBWE, -- 8-bit input: B port write enable/ Write enable input

-- Port B Data: 32-bit (each) input: Port B data DIBDI => DIBDI, -- 32-bit input: B port data/MSB data

input

DIPBDIP => DIPBDIP -- 4-bit input: B port parity/MSB

parity input

);

-- End of RAMB36E1_inst instantiation

Большинство параметров настройки библиотечного примитива RAMB36E1 имеет то же предназначение, что и в предыдущем шаблоне. Кроме того, в шаблоне 36K-bit Configurable Synchronous Block RAM (RAMB36E1) используются следующие дополнительные параметры настройки:

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

• EN_ECC_WRITE — разрешает или запрещает выполнение кодирования записываемых информационных данных встроенной схемой контроля и коррекции

ошибок (по умолчанию предлагается значение FALSE, блокирующее кодирование записываемой информации).

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

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

• RAM_EXTENSION_A и RAM_EXTEN-SION_B — определяют возможность и параметры каскадного наращивания для соответствующего порта формируемого элемента двухпортовой оперативной памяти.

Система условных обозначений, используемых в описании интерфейса элементов двухпортовых ОЗУ, формируемых с помощью библиотечного примитива RAMB36E1, помимо наименований входов и выходов, представленных при рассмотрении предыдущего шаблона, включает в себя также следующие идентификаторы:

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

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

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

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

• RDADDRECC — выходная 9-разрядная шина, на которой отображается значение адреса текущих декодируемых данных.

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

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

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

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

• INJECTSBITERR — вход сигнала, сообщающего о наличии одного ошибочного бита в записываемом слове данных. Условный графический образ элемента

двухпортовой оперативной памяти с поддержкой возможности использования встроенной схемы контроля и коррекции ошибок ECC, побайтной записи информа-

RAMB36E1

— ADDRARDADDR(15:0) DOADC>(31:0) -

— ADDRBWRADDR(15:0)

— DIADI(31:0) DOBDO(31:0) -

- DIBDI(31:0)

Z DIPADIP(3:0) DOPADOP(3:0) DIPBDIP(3:0) -

— WEA(3:0)

— WEBWE(7:0) DOPBDOP(3:0) -

— CASCADEINA

— CASCADEINB ECCPARITY(7:0) -

— CLKARDCLK

— CLKBWRCLK RDADDRECC(12:0) -

— ENARDEN

ENBWREN CASCADEOUTA INJECTDBITERR -

- INJECTSBITERR

— „„„^„„„„r- CASCADEOUTB REGCEAREGCE -

— REGCEB

— RSTRAMARSTRAM DBITERR -

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

— RSTRAMB

— RSTREGARSTREG SBITERR -

— RSTREGB

Рис. 447. Условный графический образ элемента двухпортового ОЗУ, формируемого с помощью шаблона 36K-bit Configurable Synchronous Block RAM (RAMB36E1)

ции и применения выходных регистров, конфигурируемого на базе модуля Block RAM ПЛИС серии Virtex-6 с помощью шаблона 36K-bit Configurable Synchronous Block RAM (RAMB36E1), изображен на рис. 447.

18KB FIFO (First In, First Out) Block RAM Memory (FIFO18E1) содержит шаблон VHDL-описания запоминающего устройства, функционирующего по принципу FIFO с информационной емкостью 18 432 бита, которое предназначено для реализации на основе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Основой этого шаблона является оператор создания экземпляра библиотечного примитива FIFO18E1, который можно применять для подготовки описаний элементов FIFO-памяти, реализуемых в ПЛИС серии Virtex-6, со следующими вариантами организации входного и выходного портов: 4096x4 разряда, 2048x9 разрядов, 1024x18 разрядов и 512x36 разрядов. При использовании рассматриваемого шаблона следует учитывать, что для формиро-

вания элементов запоминающих устройств FIFO с организацией 512x36 разрядов предусмотрен соответствующий режим конфигурирования — FIFO18_36:

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

• ALMOST_EMPTY_OFFSET — указывает число слов данных, на которое должны

отличаться условия формирования активного уровня сигнала на выходах EMPTY и ALMOSTEMPTY (по умолчанию предлагается значение X"0080").

• ALMOST_FULL_OFFSET — определяет количество слов данных, на которое отличаются условия формирования активного уровня сигнала на выходах FULL и ALMOSTFULL (по умолчанию присваивается значение X"0080").

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

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

• EN_SYN — указывает тип формируемого запоминающего устройства FIFO: синхронный или асинхронный (по умолчанию конфигурируется асинхронный элемент FIFO-памяти — с различными входами синхронизации портов записи и чтения данных).

• FIRST_WORD_FALL_THROUGH — используется для активизации режима FWFT в создаваемом элементе (по умолчанию для этого параметра предлагается значение FALSE, блокирующее указанный режим).

• FIFO_MODE — позволяет выбрать режим конфигурирования формируемого элемента FIFO-памяти (по умолчанию предлагается режим FIFO18, который поддерживает следующие варианты организации входного и выходного портов — 4096x4 разряда, 2048x9 разрядов и 1024x18 разрядов).

• INIT — определяет начальное состояние выходных портов создаваемого элемента FIFO-памяти (по умолчанию предлагается значение X"000000000", при котором в выходные порты после завершения процесса конфигурирования ПЛИС записывается нулевое значение).

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

В систему условных обозначений входов и выходов, применяемых в описании интерфейса элементов FIFO-памяти, конфигурируемых с помощью шаблона 18KB FIFO (First In, First Out) Block RAM Memory (FIFO18E1), входят те же идентификаторы, что и в библиотечном примитиве FIFO16, рассмотренном в 23-й части статьи.

На рис. 448 представлен условный графический образ элемента запоминающего устройства, функционирующего по принципу «первым вошел - первым вышел», описание которого создается с помощью шаблона 18KB FIFO (First In, First Out) Block RAM Memory (FIFO18E1) для последующей

Рис. 448. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона, 18KB FIFO (First In, First Out) Block RAM Memory (FIFO18E1)

реализации на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT.

36KB FIFO (First In, First Out) Block RAM Memory (FIFO36E1) представляет собой образец VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM ПЛИС серии Virtex-6 в виде запоминающего устройства, работающего по принципу FIFO, с информационной емкостью 36 864 бита. В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива FIFO36E1, который поддерживает возможность формирования описаний элементов FIFO-памяти с различной организацией входного и выходного портов для последующей реализации в кристаллах программируемой логики семейств Virtex-6 LXT, Virtex-6 CXT, Virtex-6 SXT и Virtex-6 HXT. Для создания элементов запоминающих устройств FIFO с организацией 8192x4 разряда, 4096x9 разрядов, 2048x18 разрядов и 1024x36 разрядов в указанном библиотечном примитиве предусмотрен режим конфигурирования FIFO36. Кроме того, библиотечный примитив FIFO36E1 поддерживает режим конфигурирования FIFO36_72, который обеспечивает возможность формирования элементов FIFO-памяти с организацией входного и выходного портов 512x72 разряда и встроенной схемой контроля и коррекции ошибок ECC:

-- FIFO36E1 : 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 : (FIFO36E1_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs -- : must be connected.

-- Library : In addition to adding the instance declaration, a use -- declaration : statement for the UNISIM.vcomponents library needs to be

-- FIFO18E1 : 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 : (FIFO18E1_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs -- : must be connected.

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

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

-- FIFO18E1: 18KB FIFO (First In, First Out) Block RAM Memory -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

FIFO18E1_inst : FIFO18E1 generic map (

ALMOST_EMPTY_OFFSET => X"0080", -- Sets the almost empty threshold

ALMOST_FULL_OFFSET => X"0080", -- Sets almost full threshold

DATA_WIDTH => 4, -- Sets data width to 4, 9, 18, or 36 DO_REG => 1, -- Enable output register (0 or 1) Must be 1 if EN_SYN = FALSE

EN_SYN => FALSE, -- Specifies FIFO as dual-clock (FALSE) or Synchronous (TRUE)

FIFO_MODE => "FIFO18", -- Sets mode to FIFO18 or FIFO18_36

FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE

INIT => X"000000000", -- Initial values on output port SRVAL => X"000000000" -- Set/Reset value for output port

)

port map (

-- Read Data: 32-bit (each) output: Read output data DO => DO, -- 32-bit output: data output DOP => DOP, -- 4-bit output: parity data output -- Status: 1-bit (each) output: Flags and other FIFO status outputs

ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit output: almost empty output flag

ALMOSTFULL => ALMOSTFULL, -- 1-bit output: almost full output flag

EMPTY => EMPTY, -- 1-bit output: empty output flag FULL => FULL, -- 1-bit output: full output flag RDCOUNT => RDCOUNT, -- 12-bit output: read count

output

RDERR => RDERR, -- 1-bit output: read error output WRCOUNT => WRCOUNT, -- 12-bit output: write count

output

WRERR => WRERR, -- 1-bit output: write error -- Read Control Signals: 1-bit (each) input: Read clock, enable and reset input signals

RDCLK => RDCLK, -- 1-bit input: read clock input RDEN => RDEN, -- 1-bit input: read enable input REGCE => REGCE, -- 1-bit input: clock enable input RST => RST, -- 1-bit input: reset input RSTREG => RSTREG, -- 1-bit input: output register set/reset -- Write Control Signals: 1-bit (each) input: Write clock and enable input signals

WRCLK => WRCLK, -- 1-bit input: write clock input WREN => WREN, -- 1-bit input: write enable input -- Write Data: 32-bit (each) input: Write input data DI => DI, -- 32-bit input: data input DIP => DIP -- 4-bit input: parity input );

-- End of FIFO18E1_inst instantiation

FIF018E1

DIP(3:0) DOP(3:0)

Dl(31:0) D0(31:0)

RDCLK RDCOUNT(11:0)

RDEN WRCOUNT(11:0)

REGCE ALMOSTEMPTY

RST ALMOSTFULL

RSTREG EMPTY

WRCLK FULL

WREN RDERR

WRERR

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

-- FIFO36E1: 36KB FIFO (First In, First Out) Block RAM Memory -- Virtex-6

-- Xilinx HDL Language Template, version 13.2

FIFO36E1_inst : FIFO36E1 generic map (

ALMOST_EMPTY_OFFSET => X"0080", -- Sets the almost empty threshold

ALMOST_FULL_OFFSET => X"0080", -- Sets almost full threshold

DATA_WIDTH => 4, -- Sets data width to 4, 9, 18, 36, or 72 DO_REG => 1, -- Enable output register (0 or 1) Must be 1 if EN_SYN = FALSE

EN_ECC_READ => FALSE, -- Enable ECC decoder, TRUE or FALSE

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

EN_SYN => FALSE, -- Specifies FIFO as Asynchronous (FALSE) or Synchronous (TRUE)

FIFO_MODE => "FIFO36", -- Sets mode to FIFO36 or

FIFO36_72

FIRST_WORD_FALL_THROUGH => FALSE, -- Sets the FIFO FWFT to TRUE or FALSE

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

output port

SRVAL => X"000000000000000000" -- Set/Reset value for

output port

)

port map (

-- ECC Signals: 1-bit (each) output: Error Correction Circuitry ports

DBITERR => DBITERR, -- 1-bit output: double bit error

status output

ECCPARITY => ECCPARITY, -- 8-bit output: generated error correction parity

SBITERR => SBITERR, -- 1-bit output: single bit error

status output

-- Read Data: 64-bit (each) output: Read output data DO => DO, -- 64-bit output: data output DOP => DOP, -- 8-bit output: parity data output -- Status: 1-bit (each) output: Flags and other FIFO status

outputs

ALMOSTEMPTY => ALMOSTEMPTY, -- 1-bit output: almost empty output flag

ALMOSTFULL => ALMOSTFULL, -- 1-bit output: almost full output flag

EMPTY => EMPTY, -- 1-bit output: empty output flag

FULL => FULL, -- 1-bit output: full output flag RDCOUNT => RDCOUNT, -- 13-bit output: read count

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

output

RDERR => RDERR, -- 1-bit output: read error output WRCOUNT => WRCOUNT, -- 13-bit output: write

count output

WRERR => WRERR, -- 1-bit output: write error -- ECC Signals: 1-bit (each) input: Error Correction Circuitry ports

INJECTDBITERR => INJECTDBITERR, -- 1-bit input: Inject a double bit error

INJECTSBITERR => INJECTSBITERR, -- Read Control Signals: 1-bit (each) input: Read clock, enable and reset input signals

RDCLK => RDCLK, -- 1-bit input: read clock input RDEN => RDEN, -- 1-bit input: read enable input REGCE => REGCE, -- 1-bit input: clock enable input RST => RST, -- 1-bit input: reset input RSTREG => RSTREG, -- 1-bit input: output register set/reset -- Write Control Signals: 1-bit (each) input: Write clock and enable input signals

WRCLK => WRCLK, -- 1-bit input: write clock input WREN => WREN, -- 1-bit input: write enable input -- Write Data: 64-bit (each) input: Write input data DI => DI, -- 64-bit input: data input DIP => DIP -- 8-bit input: parity input );

-- End of FIFO36E1_inst instantiation

FIF036E1

DIP(7:0) DOP(7:OJ -

Dl(63:0) D0(63:0) -

INJECTDBITERR ECCPARITY(7:0) -

INJECTDBITERR RDCOUNT(12:0) -

RDCLK WRCOUNT(12:0) -

RDEN ALMOSTEMPTY -

REGCE ALMOSTFULL -

RST DBITERR -

RSTREG EMPTY -

WRCLK FULL -

WREN RDERR -

SBITERR -

WRERR -

В библиотечном примитиве FIFO36E1 в большинстве своем используются параметры настройки, назначение которых было представлено при рассмотрении предыдущего шаблона. Кроме того, в шаблоне 36KB FIFO (First In, First Out) Block RAM Memory (FIFO36E1) применяются дополнительные настраиваемые параметры EN_ECC_READ и EN_ECC_WRITE, которые предоставляют возможность управления декодированием считываемых данных и кодированием записываемой информации при использовании встроенной схемы контроля и коррекции ошибок ECC.

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

Рис. 449. Условный графический образ элемента FIFO-памяти, формируемого с помощью шаблона 36KB FIFO (First In, First Out) Block RAM Memory (FIFO36E1)

и в шаблоне 72x36k FIFO/w ECC (FIFO36_72), рассмотренном в 25-й части статьи.

Условный графический образ элемента запоминающего устройства, функционирующего по принципу «первым вошел - первым вышел», для подготовки описания которого используется шаблон 36KB FIFO (First In, First Out) Block RAM Memory (FIFO36E1), показан на рис. 449. ■

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

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