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

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

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

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

Двадцать вторая часть статьи продолжает представление образцов VHDLописаний элементов, основанных на использовании экземпляров библиотечных примитивов, которые предназначены для реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX [34-43]. В этой части приведена информация о шаблонах описаний компонентов, осуществляющих калибровку элементов входной задержки, входных и выходных преобразователей последовательного кода в параллельный и параллельного кода в последовательный, входящих в состав логических ресурсов ввода/ вывода ПЛИС серии Virtex-4. Рассмотрены также образцы описаний различных вариантов конфигурирования модулей блочной памяти Block RAM кристаллов программируемой логики указанных семейств.

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

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

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

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

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

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

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

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

walerry@km.ru

Двадцать вторая часть статьи продолжает представление образцов VHDL-описаний элементов, основанных на использовании экземпляров библиотечных примитивов, которые предназначены для реализации на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX [34—43]. В этой части приведена информация о шаблонах описаний компонентов, осуществляющих калибровку элементов входной задержки, входных и выходных преобразователей последовательного кода в параллельный и параллельного кода в последовательный, входящих в состав логических ресурсов ввода/ вывода ПЛИС серии Virtex-4. Рассмотрены также образцы описаний различных вариантов конфигурирования модулей блочной памяти Block RAM кристаллов программируемой логики указанных семейств.

Input Delay Element Control (IDELAYCTRL) содержит образец VHDL-описания компонентов, осуществляющих калибровку элементов входной задержки IDELAY в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Основу этого шаблона образует оператор создания экземпляра библиотечного примитива IDELAYCTRL:

-- Xilinx HDL Language Template, version 12.4

IDELAYCTRLjnst : IDELAYCTRL port map (

RDY => RDY,-- 1-bit output indicates validity of the REFCLK REFCLK => REFCLK, -- 1-bit reference clock input RST => RST -- 1-bit reset input

);

-- End of IDELAYCTRLjnst instantiation

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

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

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

• RST — вход сигнала сброса. Компоненты, формируемые с помощью

шаблона IDELAYCTRL, включаются в состав разрабатываемых устройств при использовании элементов входной задержки IDELAY или входных преобразователей последовательного кода в параллельный ISERDES. В случае применения этих компонентов необходимо выполнить процедуру их сброса после завершения загрузки конфигурационной последовательности в ПЛИС, подав высокий уровень сигнала на вход RST. При этом длительность

импульса сброса должна быть не менее значения ТШЕ1АТСТВ1 КР№ указанного в справочной документации [35, 36]. После завершения процедуры сброса, через несколько периодов тактового сигнала сигнал на выходе ИБУ переключается в состояние высокого логического уровня, что информирует о выполнении калибровки элементов входной задержки соответствующего региона. Если сигнал на входе ИЕБСЬК не переключается в течение интервала, превышающего один период тактового сигнала, то выход ИБУ сбрасывается в состояние низкого логического уровня. В этом случае нужно снова выполнить процедуру сброса. Временные диаграммы сигналов, поясняющие функционирование компонентов, осуществляющих калибровку элементов входной задержки в ПЛИС серии Virtex-4, показаны на рис. 338.

На рис. 339 изображен условный графический образ компонента, описание которого создается на основе шаблона IDELAYCTRL для последующего использования в составе цифровых устройств, реализуемых на базе кристаллов программируемой логики семейств Virtex-4 ЬХ, Virtex-4 SX и Virtex-4 БХ.

Компоненты, для подготовки описаний которых применяется рассматриваемый шаблон, можно включать в состав проектируемых устройств без топологических ограничений или с указанием конкретного расположения в кристалле программируемой

-- IDELAYCTRL : 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 (IDELAYCTRL_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;

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

-- IDELAYCTRL : Input Delay Element Control -- Virtex-4

REFCLK

Л|и^и|11Ш1ЛГ1Л_

: —и— :

RST

1 IDEA LAYCTRLR PW

тАЯ-

I IOEALAYCTRLCOROY

Рис. 338. Временные диаграммы сигналов, поясняющие функционирование элементов, формируемых на основе библиотечного примитива IDELAYCTRL

IDELAYCTRL REFCLK RDY RST

Рис. 339. Условный графический образ компонента, формируемого с помощью шаблона IDELAYCTRL

логики. В первом варианте в описании разрабатываемого устройства достаточно создать один экземпляр компонента, формируемого на основе библиотечного примитива IDELAYCTRL, а средства размещения и трассировки САПР ISE Design Suite автоматически добавят необходимое количество экземпляров указанного компонента. При этом выходы сигналов, информирующих о выполнении калибровки элементов входной задержки, могут оставаться в неподключенном состоянии или использоваться в проектируемом устройстве, объединяясь по схеме «лог. И». На рис. 340 приведена структурная схема, поясняющая применение компонентов, создаваемых с помощью шаблона IDELAYCTRL, без топологических ограничений, в которой выходные сигналы RDY игнорируются.

Структурная схема, представленная на рис. 341, демонстрирует применение указанных компонентов без топологических ограничений с использованием выходных сигналов RDY.

Конкретное расположение в ПЛИС экземпляров компонентов, формируемых на основе шаблона IDELAYCTRL, определяется с по-

Рис. 341. Применение компонентов, создаваемых с помощью шаблона IDELAYCTRL, без топологических ограничений с использованием выходных сигналов RDY

INST "<идентификатор_экземпляра_компонента>" LOC=IDELAYCTRL_X#Y#;

Эти выражения для каждого экземпляра компонента записываются в файл временных и топологических ограничений проекта UCF. На рис. 342 показана структурная схема, поясняющая использование компонентов, выполняющих калибровку элементов входной задержки в ПЛИС серии Virtex-4, с указанием их конкретного расположения.

В тех случаях, когда кроме компонентов с заданным расположением в кристалле присутствуют экземпляры, для которых не указаны топологические ограничения, средства размещения и трассировки автоматически генерируют дополнительные экземпляры, необходимые для калибровки всех элементов входной задержки соответствующих регионов ПЛИС. Пример такого варианта применения компонентов, осуществляющих калибровку элементов входной задержки в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, показан на рис. 343.

Input SERDES (ISERDES) предоставляет шаблон описания входного преобразователя последовательного кода в параллельный, реализуемого на базе соответствующих аппаратных ресурсов ввода/вывода SelectIO ПЛИС серии Virtex-4. Структурная схема программируемого входного последовательно-параллельного преобразователя ISERDES, входящего в состав логических ячеек ввода/вывода кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, изображена на рис. 344.

Рис. 340. Применение компонентов, формируемых с помощью шаблона IDELAYCTRL

Рис. 342. Применение компонентов, создаваемых с помощью шаблона IDELAYCTRL, с указанием топологических ограничений

LOC=IDELAYCTRL_X1Y1

LOC=IDELAYCTRL_XnYn

IDELAYCTRL_n

REFCLK

RDY

rst_n- RST

RST_NOLOC -

IDELAYCTRL_noloc REFCLK RST

RDY

IDELAYCTRL_noloc ■ REFCLK - RST

RDY .

Экземпляры,

автоматически

сгенерированные

средствами

размещения

и трассировки

RDY NOLOC

Рис. 343. Совместное использование компонентов, создаваемых с помощью шаблона IDELAYCTRL, без топологических ограничений и с заданным расположением в кристалле

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

Основными элементами этой схемы являются:

• модуль входной задержки;

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

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

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

те же функции, что и элемент, формируемый с помощью шаблона Input Delay Element (IDELAY), который был рассмотрен в предыдущей части статьи. Схема формирования сигнала разрешения синхронизации, применяемая в составе программируемого входного преобразователя последовательного кода в параллельный, показана на рис. 345.

Модуль преобразования последовательного кода в параллельный формирует на выходе код, максимальное число разрядов которого может достигать шести. Соответствие разрядов последовательного входного и параллельного выходного кодов данных в наглядном виде демонстрирует рис. 346.

Шаблон описания входного последовательно-параллельного преобразователя, предназначенного для применения в составе проектов, реализуемых на основе ПЛИС серии Virtex-4, выполнен на основе экземпляра библиотечного примитива ISERDES:

-- ISERDES : 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_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--->

-- ISERDES: Input SERDES -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

ISERDES_inst : ISERDES 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 -- For DDR 4,6,8, or 10

-- For SDR 2,3,4,5,6,7, or 8 INTERFACE_TYPE => "MEMORY", -- Use model -"MEMORY" or "NETWORKING"

IOBDELAY => "NONE", -- Specify outputs where delay chain will be applied

-- "NONE", "IBUF", "IFD", or "BOTH" IOBDELAY_TYPE => "DEFAULT", -- Set tap delay "DEFAULT", "FIXED", or "VARIABLE"

IOBDELAY_VALUE => 0, -- Set initial tap delay to an integer from 0 to 63

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

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

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

СЕ1 SR CLKDIV

СЕ2 SR CLKDIV

D Q AR

CE1R

D Q AR

ICE

К входному регистру ISERDES

NUM_CE CLKDIV ICE

1 X СЕ1

2 0 CE2R

2 1 CE1R

©®®©@®

Входные данные

CLK RX

CLKDIV RX

Рис. 345. Схема формирования сигнала разрешения синхронизации, входящая в состав программируемого входного последовательно-параллельного преобразователя

Рис. 346. Соответствие разрядов данных на входе и выходах последовательно-параллельного преобразователя ПЛИС серии Viгtex-4

port map (

O => O, -- 1-bit output

Q1 => Q1, -- 1-bit output

Q2 => Q2, -- 1-bit output

Q3 => Q3, -- 1-bit output

Q4 => Q4, -- 1-bit output

Q5 => Q5, -- 1-bit output

Q6 => Q6, -- 1-bit output

SHIFTOUT1 => SHIFTOUT1, -- 1-bit output

SHIFTOUT2 => SHIFTOUT2, -- 1-bit output

BITSLIP => BITSLIP, -- 1-bit input

CE1 => CE1, -- 1-bit input

CE2 => CE2, -- 1-bit input

CLK => CLK, -- 1-bit input

CLKDIV => CLKDIV, -- 1-bit input

D => D, -- 1-bit input

DLYCE => DLYCE, -- 1-bit input

DLYINC => DLYINC, -- 1-bit input

DLYRST => DLYRST, -- 1-bit input

OCLK => OCLK, -- 1-bit input

REV => '0', -- Must be tied to logic zero

SHIFTIN1 => SHIFTIN1, -- 1-bit input

SHIFTIN2 => SHIFTIN2, -- 1-bit input

SR => SR -- 1-bit input

);

-- End of ISERDES_inst instantiation

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

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

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

• DATA_WIDTH — определяет разрядность выходного параллельного кода данных.

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

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

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

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

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

• SERDES_MODE — устанавливает режим функционирования формируемого вход-

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• DLYCE — вход сигнала разрешения коррекции значения входной задержки;

• DLYINC — вход сигнала выбора режима изменения входной задержки (инкремент-ный или декрементный);

• DLYRST — вход сигнала сброса модуля входной задержки (установки заданного начального значения входной задержки);

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

• REV — зарезервированный вход, подключаемый к общему проводу;

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

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

Процесс подготовки законченного описания входного последовательно-параллельного преобразователя на основе шаблона ISERDES рекомендуется начинать с установки соответствующего режима (скорости) передачи данных с помощью настраиваемого параметра DATA_RATE. В списке возможных значений этого параметра представлены два варианта — "SDR" и "DDR". Значение "DDR", предлагаемое по умолчанию для параметра DATA_RATE, соответствует удвоенной скорости передачи данных. Для создания описания входного преобразователя последовательного кода в параллельный с обычной скоростью передачи данных нужно присвоить этому параметру значение "SDR".

Затем целесообразно выбрать требуемый вариант организации интерфейса передачи выходных данных, используя параметр настройки INTERFACE_TYPE. Этот параметр может принимать одно из двух возможных значений — "NETWORKING" или "MEMORY". Значение "NETWORKING" соответствует обычному режиму передачи выходных данных. В этом режиме может использоваться функция Bitslip. По умолчанию параметру INTERFACE_TYPE присваивается значение "MEMORY", при котором устанавливается режим передачи выходных данных, соответствующий высокоскоростным интерфейсам внешней памяти. На рис. 347 приведена структурная схема, поясняющая процесс формирования выходного параллельного кода в этом режиме.

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

страиваемым параметром DATA_WIDTH. Состав списка допустимых значений этого параметра зависит от установленного режима (скорости) передачи данных и выбранного типа выходного интерфейса. Если создается описание входного последовательно-параллельного преобразователя с обычной скоростью передачи данных и выходным интерфейсом "NETWORKING", то параметр DATA_WIDTH может принимать любые целочисленные значения в диапазоне от двух до восьми. При формировании описания входного преобразователя последовательного кода в параллельный с удвоенной скоростью передачи данных и указанным выходным интерфейсом список возможных значений этого параметра включает в себя четыре варианта: 4, 6, 8 и 10. Когда для формируемого преобразователя выбран выходной интерфейс "MEMORY" с удвоенной скоростью передачи данных, параметр настройки DATA_WIDTH может принимать единствен-

Входные данные

SERDES MODE=MASTER

ISERDES (Master)

Q1 Q2 Q3 CM Q5 Q6

SHIFTOUT1 SHIFTOUT2

SHIFTIN1 SHIFTIB2 01

Q2

ISERDES Q3

(Slave) CM

Q5

Q6

SERDES_MODE=SLAVE

Выходные данные (разряды 0-5)

Выходные данные (разряды 6-9)

ное значение, равное четырем, которое предлагается по умолчанию. При выборе значения разрядности информационных данных следует учитывать, что для формирования выходного параллельного кода с числом разрядов более шести необходимо каскадное соединение двух модулей последовательно-параллельного преобразования ISERDES. При этом один из указанных модулей функционирует в ведущем режиме (master), а второй — в подчиненном (slave). Структурная схема, демонстрирующая каскадное соединение двух входных последовательно-параллельных преобразователей ISERDES ПЛИС серии Virtex-4, представлена на рис. 348.

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

Если для параметра настройки INTERFACE_TYPE был выбран вариант "NETWORKING", то в этом случае можно активизировать функцию Bitslip. Для этой цели нужно присвоить настраиваемому параметру BITSLIP_ENABLE значение "TRUE". Когда для параметра INTERFACE_TYPE указывается вариант "MEMORY", параметр должен принимать значение "FALSE", установленное по умолчанию, которое блокирует использование модуля, выполняющего функцию Bitslip. На рис. 349 показаны временные диаграммы входных и выходных сигналов преобразователя последовательного кода данных в параллельный, которые наглядно поясняют применение указанной функции.

Следующим шагом в процессе подготовки описания последовательно-параллельного преобразователя является определение параметров модуля входной задержки. Прежде всего, используя параметр настройки IOBDELAY, нужно указать, при формировании каких выходных сигналов должен быть задействован указанный модуль. Список возможных значений этого параметра включает в себя четыре варианта: "NONE", "IBUF", "IFD" и "BOTH". По умолчанию для параметра настройки IOBDELAY предлагается значение "NONE", при котором модуль входной задержки не используется. В случае выбора варианта "IBUF" модуль входной задержки применяется в цепи передачи последовательного кода на комбинаторный выход. Если параметру IOBDELAY присваивается значение "IFD", то модуль входной задержки используется при формировании сигналов на регистровых выходах параллельного кода. При выборе значения "BOTH" модуль входной задержки задействуется в цепях как комбинаторного, так и регистровых выходов преобразователя.

XCXDXAXBXCXDXAXBXCXDXAXBXCXDX

CLK

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

лллЬЛЬЛЬ-Л^Ь^

BITSLIP

Q4-Q1

Bltsllpl J I Bitslip2

I

J"

CDAB

BCDA

ABCIP

Рис. 348. Структурная схема каскадного соединения двух входных Рис. 349. Временные диаграммы сигналов, поясняющие применение функции Bitslip

последовательно-параллельных преобразователей ISERDES ПЛИС серии Virtex-4 в последовательно-параллельных преобразователях ISERDES ПЛИС серии Virtex-4

Тип используемого модуля входной задержки указывается с помощью настраиваемого параметра IOBDELAY_TYPE. В списке возможных значений этого параметра представлены три варианта: "DEFAULT", "FIXED" и "VARIABLE". Вариант "DEFAULT", предлагаемый по умолчанию для параметра IOBDELAY_TYPE, соответствует значению входной задержки, обеспечивающему нулевое время удержания. В случае выбора варианта "FIXED" в формируемом преобразователе последовательного кода данных в параллельный будет использоваться модуль фиксированной входной задержки. Для создания описания последовательно-параллельного преобразователя с изменяемой входной задержкой необходимо параметру настройки IOBDELAY_TYPE присвоить значение "VARIABLE".

Чтобы определить начальное или фиксированное значение входной задержки, следует воспользоваться настраиваемым параметром IOBDELAY_VALUE. Этому параметру можно присвоить любые целочисленные значения в диапазоне от 0 до 63. По умолчанию для параметра IOBDELAY_VALUE указано нулевое значение.

Процесс подготовки описания входного преобразователя последовательного кода данных в параллельный завершается выбором количества входов сигналов разрешения синхронизации с помощью параметра настройки NUM_CE, который может принимать одно из двух значений — 1 или 2. По умолчанию этому параметру присваивается значение 2.

На рис. 350 приведен условный графический образ входного последовательно-параллельного преобразователя, реализуемого на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода в ПЛИС серии Virtex-4, для подготовки описания которого применяется шаблон ISERDES.

Output SERDES (OSERDES) включает в себя образец описания выходного преобразователя параллельного кода данных в последовательный, реализуемого на базе соответствующих аппаратных ресурсов ввода/вы-

ISERDES

BITSLIP

СЕ1

СЕ2

CLK 0

CLKDIV Q1

D Q2

DLYCE Q3

DLYNC Q4

DLYRST Q5

OCLK Q6 SHIFTOUT1

REV SHIFTOUT2

SHIFTIN1

SHIFTIN2

SR

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

вода SelectЮ кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 БХ. Компоненты, формируемые с помощью этого шаблона, широко применяются при разработке высокоскоростных интерфейсов передачи данных. На рис. 351 показана структурная схема программируемого выходного параллельно-последовательного преобразователя данных, представленного в составе логических ячеек ввода/вывода ПЛИС серии ^гйх-4.

Главными элементами этой схемы являются основной модуль преобразования параллельного кода данных в последовательный и дополнительный модуль преобразования параллельного кода в последовательный сигнал управления тристабильным выходом.

Максимальная разрядность входного кода основного параллельно-последовательного преобразователя равна шести, а дополнительного — четырем. Порядок следования разрядов входных данных в последовательном коде, формируемом на выходе преобразователя, в наглядном виде представлен на рис. 352. Выходной последовательный код начинается с младшего значащего разряда и завершается старшим значащим разрядом входного параллельного кода данных.

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

Выходные преобразователи параллельного кода данных в последовательный, входящие в состав логических ресурсов ввода/вывода SelectЮ кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 БХ, поддерживают режимы функционирования как с обычной, так и с удвоенной скоростью передачи данных. На рис. 354, в качестве примера, приведены временные диаграммы входных и выходных сигналов, соответствующие стандартному режиму функционирования выходного двухразрядного параллельно-последовательного преобразователя, выполненного на базе соответствующих аппаратных ресурсов ввода/вывода ПЛИС серии Virtex-4.

Временные диаграммы входных и выходных сигналов, иллюстрирующие процесс конвертирования параллельного кода в последовательный с удвоенной скоростью передачи данных, представлены на рис. 355 на примере 8-разрядного преобразователя, реализуемого в виде каскадного соединения двух модулей OSERDES.

Формирование последовательного кода данных на тристабильном выходе параллельно-последовательного преобразователя по-

Входные данные

0" ©-

OSERDES

D1 Q

D2

D3

D4

D5

D6

> <

CLKDIV ТХ

©0®©®®

Выходные данные

CLK ТХ

Рис. 352. Соответствие разрядов данных на входах и выходе параллельно-последовательного преобразователя

SERDES_MODE=MASTER

Входные данные (разряде 0-5)

Входные данные (разряде 6-9)

□1 OQ

□2

D3 D4 OSERDES (Master)

□5

D6 SHIFTIN1 SHIFTIN2

t t

D1 SHIFTOUT1 SHIFTOUT2 OQ

D2

D3 D4 OSERDES (Slave)

□5

D6

Выходные данные

SERDES MODE=SLAVE

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

CLKDIV

-_п_ги

J

J~~L

D1

D2

«хххклмзтш

Рис. 354. Временные диаграммы сигналов, соответствующие стандартному режиму функционирования параллельно-последовательного преобразователя ПЛИС серии Virtex-4

Master.DI X • X | X

Master.D2 X ■ х -

Master. D3 X . X - X

Master.D4 х . X L X

Master.D5 X ■ X . X

Master. D6 X - X - X

Slave. D3 X • X ° X

Slave.D4 X » X - X

г

CLKDIV ff1 ■ ж 1 ■

CLK ' 'UUUTj •TfUinj шл

OQ ) ш«

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

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

Для подготовки описаний выходных параллельно-последовательных преобразователей, реализуемых на базе соответствующих ресурсов логических ячеек ввода/вывода в кристаллах семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, предоставляется библиотечный примитив OSERDES. На основе оператора создания экземпляра этого библиотечного примитива выполнен рассматриваемый шаблон:

-- OSERDES : 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 (OSERDES_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;

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

use UNISIM.vcomponents.aH;

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

-- OSERDES: Output SERDES -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

OSERDES_inst : OSERDES generic map (

DATA_RATE_OQ => "DDR", -- Specify data rate to "DDR" or "SDR"

DATA_RATE_TQ => "DDR", -- Specify data rate to "DDR", "SDR", or "BUF"

DATA_WIDTH => 4, -- Specify data width -- For DDR: 4,6,8, or 10 -- For SDR or BUF: 2,3,4,5,6,7, or 8

INIT_OQ => '0', -- INIT for Q1 register - '1' or '0' INIT_TQ => '0', -- INIT for Q2 register - '1' or '0' SERDES_MODE => "MASTER", --Set SERDES mode to "MASTER" or "SLAVE"

SRVAL_OQ => '0', -- Define Q1 output value upon SR assertion - '1' or '0'

SRVAL_TQ => '0', -- Define Q1 output value upon SR assertion - '1' or '0'

TRISTATE_WIDTH => 4) -- Specify parallel to serial

converter width

-- When DATA_RATE_TQ = DDR: 2 or 4 -- When DATA_RATE_TQ = SDR or BUF: 1 "

port map (

OQ => OQ, -- 1-bit output

SHIFTOUT1 => SHIFTOUT1, -- 1-bit data expansion

output

SHIFTOUT2 => SHIFTOUT2, -- 1-bit data expansion

output

TQ => TQ, -- 1-bit 3-state control output

CLK => CLK, -- 1-bit clock input

CLKDIV => CLKDIV, -- 1-bit divided clock input

D1 => D1, -- 1-bit parallel data input

D2 => D2, -- 1-bit parallel data input

D3 => D3, -- 1-bit parallel data input

D4 => D4, -- 1-bit parallel data input

D5 => D5, -- 1-bit parallel data input

D6 => D6, -- 1-bit parallel data input

OCE => OCE, -- 1-bit clcok enable input

REV => '0', -- Must be tied to logic zero

SHIFTIN1 => SHIFTIN1, -- 1-bit data expansion input

SHIFTIN2 => SHIFTIN2, -- 1-bit data expansion input

SR => SR, -- 1-bit set/reset input

T1 => T1, -- 1-bit parallel 3-state input

T2 => T2, -- 1-bit parallel 3-state input

T3 => T3, -- 1-bit parallel 3-state input

T4 => T4, -- 1-bit parallel 3-state input

TCE => TCE -- 1-bit 3-state signal clock enable input

);

-- End of OSERDES_inst instantiation

D1 D2 D3 D4 CLKDIV CLK Т1

* X Е X ■

■ X F X -

• X G X "

■ X н X L

К X X

jn_n_r _гт_пжи

плшъгъгъг

тз

Т4 OQ

та

Рис. 356. Временные диаграммы сигналов, поясняющие формирование последовательного кода данных на тристабильном выходе параллельно-последовательного преобразователя

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

• DATA_RATE_OQ — определяет режим (скорость) передачи данных на выходе OQ.

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

• DATA_WIDTH — указывает разрядность входного параллельного кода данных.

• INIT_OQ — определяет начальное состояние выхода данных OQ.

• INIT_TQ — устанавливает начальное состояние выхода сигнала управления TQ.

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

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

• SRVAL_TQ — определяет состояние выхода сигнала управления TQ при наличии активного уровня сигнала на входе сброса.

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

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

создаваемых с помощью шаблона OSERDES,

входят следующие идентификаторы:

• OQ — выход данных, представленных в виде последовательного кода.

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

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

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

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

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

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

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

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

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

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

SHIFTOUT2 подчиненного модуля преобразования данных).

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

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

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

При создании описания конкретного выходного параллельно-последовательного преобразователя на основе шаблона OSERDES в первую очередь следует установить режим передачи данных, используя параметры настройки DATA_RATE_OQ и DATA_RATE_TQ. Параметр DATA_RATE_OQ может принимать одно из двух возможных значений — "SDR" или "DDR". Список возможных значений параметра DATA_RATE_TQ включает в себя три варианта: "SDR", "DDR" и "BUF". Вариант "DDR", предлагаемый по умолчанию для указанных параметров настройки, соответствует режиму передачи данных с удвоенной скоростью. Для установки режима передачи данных с обычной скоростью параметрам DATA_RATE_OQ и DATA_RATE_TQ следует присвоить значение "SDR". В случае выбора варианта "BUF" для параметра DATA_RATE_TQ в формируемом преобразователе параллельного кода в последовательный используется комбинаторный выход сигнала управления тристабильным буферным элементом.

Затем нужно указать требуемое значение разрядности входного параллельного кода данных, воспользовавшись настраиваемым параметром DATA_WIDTH. Состав списка возможных значений этого параметра зависит от установленного режима (скорости) передачи данных. При подготовке описания выходного параллельно-последовательного преобразователя со стандартной скоростью передачи данных параметру DATA_WIDTH можно присвоить любые целочисленные значения в диапазоне от двух до восьми. В случае выбора режима удвоенной скорости передачи данных список допустимых значений указанного параметра включает в себя четыре варианта: 4, 6, 8 и 10. По умолчанию параметру DATA_WIDTH присваивается значение, равное четырем. Если указывается значение разрядности, превышающее шесть разрядов, то для реализации формируемого конвертора необходимо каскадное соединение двух модулей параллельно-последовательного преобразования OSERDES, схема которого приведена на рис. 353.

Далее необходимо с помощью настраиваемого параметра TRISTATE_WIDTH определить разрядность параллельного кода управления тристабильным выходным буферным элементом. Содержание списка допустимых вариантов для этого параметра зависит от выбранного значения параметра настройки DATA_RATE_TQ. Если для последнего параметра указан вариант "DDR", то настраиваемый параметр TRISTATE_WIDTH может при-

OSERDES

— CLK

— CLKDIV

— D1

— D2

— D3

— D4

— D5 OQ -

— D6 SHIFTOUT1 -

— ОСЕ SHIFTOUT2 -

— REV TQ -

— SHIFTIN1

— SHIFTIN2

— SR

— T1

— T2

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

— ТЗ

— Т4

— ТСЕ

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

нимать значение, равное двум или четырем. В тех случаях, когда для параметра настройки DATA_RATE_TQ выбран вариант "SDR" или "BUF", параметру TRISTATE_WIDTH можно присвоить только единичное значение.

После этого рекомендуется установить требуемый режим функционирования создаваемого выходного параллельно-последовательного преобразователя данных, воспользовавшись параметром настройки SERDES_MODE. Список возможных значений этого параметра содержит те же варианты, что и аналогичный параметр в шаблоне описания входного последовательно-параллельного преобразователя, представленном выше. По умолчанию для параметра настройки SERDES_MODE предлагается вариант "MASTER", соответствующий ведущему режиму работы формируемого выходного преобразователя параллельного кода данных в последовательный.

При необходимости далее можно указать начальное состояние выходов параллельно-последовательного преобразователя с помощью параметров настройки INIT_OQ и INIT_TQ. По умолчанию для этих параметров предлагается нулевое значение, которое соответствует низкому логическому уровню сигналов на выходах OQ и TQ. Чтобы выходы создаваемого преобразователя устанавливались по окончании процесса конфигурирования ПЛИС в состояние высокого уров-

Рис. 358. Структура модуля блочной памяти Block RAM ПЛИС серии Virtex-4

ня, следует присвоить параметрам INIT_OQ и INIT_TQ единичное значение.

Аналогичным образом можно определить состояние выходов формируемого преобразователя параллельного кода данных в последовательный при подаче активного уровня сигнала на вход сброса, используя настраиваемые параметры SRVAL_OQ и SRVAL_TQ. По умолчанию для этих параметров указываются нулевые значения, соответствующие низкому логическому уровню выходных сигналов. Для установки выходов в состояние высокого логического уровня нужно параметрам SRVAL_OQ и SRVAL_TQ присвоить единичные значения.

Условный графический образ выходного параллельно-последовательного преобразо-

вателя данных, реализуемого на базе соответствующих аппаратных ресурсов логических ячеек ввода/вывода в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, для подготовки описания которого применяется шаблон OSERDES, приведен на рис. 357.

16k+2k Parity Paramatizable BlockRAM (RAMB16) является шаблоном параметризи-рованного варианта описания 2-портового ОЗУ информационной емкостью 16 384 бита, с программируемой организацией каждого порта, возможностью использования выходных регистров и поддержкой режима побайтной записи, которое предназначено для реализации на основе модуля блочной памяти ПЛИС серии Virtex-4. Структура модуля

CASCADEOUT

DI " А[13:0] -А14 "

WE[3:0] DI-

А[13:0] -А14-

D Q "

D Q "

D Q

RAM_EXTENSION= UPPER(O)

D Q

RAM_EXTENSION= LOWER(1)

WE[3:0]

D Q

DI DO

А[13:0]

А14

WE

DO

и U > А[13:0]

и U > А14

DU

Выходной

триггер

>

CASCADEIN of Top

CASCADEOUT of Bottom

Выходной триггер

CASCADEIN

Рис. 359. Структурная схема каскадного соединения двух смежных модулей блочной памяти ПЛИС серии Virtex-4

блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX показана на рис. 358. Основу этой структуры составляют массив оперативной памяти и два канала записи и чтения данных.

Два смежных модуля блочной памяти Block RAM можно объединять без привлечения внешних логических ресурсов для формирования элемента 2-портового ОЗУ с информационной емкостью 32 кбит. Для этой цели в каждом модуле Block RAM предусмотрены две пары входов и выходов, предназначенные для подключения к смежному модулю. Структурная схема каскадного соединения двух смежных модулей блочной памяти ПЛИС серии Virtex-4 изображена на рис. 359.

Основу шаблона параметризированно-го варианта описания элемента 2-портовой оперативной памяти образует оператор создания экземпляра библиотечного примитива RAMB16, который поддерживает все перечисленные выше функциональные возможности блочной памяти Block RAM ПЛИС серии Virtex-4:

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

or 36

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

or 36

-- 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_06=> X"0000000000000000000000000000000000000000", INITP_07 => X"0000000000000000000000000000000000000000") port map (

CASCADEOUTA => CASCADEOUTA, -- 1-bit cascade

output

CASCADEOUTB => CASCADEOUTB, -- 1-bit cascade

output

DOA => DOA, -- 32-bit A port Data Output

DOB => DOB, -- 32-bit B port Data Output

DOPA => DOPA, -- 4-bit A port Parity Output

DOPB => DOPB, -- 4-bit B port Parity Output

ADDRA => ADDRA, -- 15-bit A port Address Input

ADDRB => ADDRB, -- 15-bit B port Address Input

CASCADEINA => CASCADEINA, -- 1-bit cascade A input

CASCADEINB => CASCADEINB, -- 1-bit cascade B input

CLKA => CLKA, -- Port A Clock

CLKB => CLKB, -- Port B Clock

DIA => DIA, -- 32-bit A port Data Input

DIB => DIB, -- 32-bit B port Data Input

DIPA => DIPA, -- 4-bit A port parity Input

DIPB => DIPB, -- 4-bit B port parity 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 Synchronous Set/Reset Input

SSRB => SSRB, -- 1-bit B port Synchronous Set/Reset Input

WEA => WEA, -- 4-bit A port Write Enable Input

WEB => WEB -- 4-bit B port Write Enable Input

);

-- End of RAMB16_inst instantiation

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

• DOA_REG — разрешает или запрещает использование регистра на выходе первого порта.

• DOB_REG — позволяет задействовать регистр на выходе второго порта.

• INIT_A — указывает начальное значение для выходного порта данных A.

• INIT_B — устанавливает начальное состояние выходного порта данных B.

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

• INVERT_CLK_DOB_REG — позволяет использовать инвертированный сигнал синхронизации для выходного регистра второго порта.

• RAM_EXTENSION_A — определяет возможность и параметры каскадирования для первого порта.

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

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

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

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

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

• SRVAL_B — устанавливает состояние выходного порта данных B при активном уровне сигнала на входе сброса/установки.

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

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

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

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

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

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

Система условных обозначений входов и выходов, используемых в описании интерфейса элементов 2-портовой оперативной памяти, создаваемых на основе библиотечного примитива RAMB16 в кристаллах программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX, включает в себя следующие идентификаторы:

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

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

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

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

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

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

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

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

-- RAMB16 : 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 : (RAMB16_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--->

-- RAMB16: 16k+2k Parity Paramatizable BlockRAM -- Virtex-4

-- Xilinx HDL Language Template, version 12.4

RAMB16_inst : RAMB16 generic map (

DOA_REG => 0, -- Optional output registers on the

A port (0 or 1)

DOB_REG => 0, -- Optional output registers on the 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

INVERT_CLK_DOA_REG => FALSE, -- Invert clock on A port output registers (TRUE or FALSE)

INVERT_CLK_DOB_REG => FALSE, -- Invert clock on B port output registers (TRUE or FALSE)

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"

SRVAL_A => X"000000000", -- Port A output value upon SSR assertion

SRVAL_B => X"000000000", -- Port B output value upon SSR assertion

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

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

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

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

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

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

При формировании описания конкретного элемента 2-портового ОЗУ, поддерживающего режим побайтной записи и возможность применения выходных регистров, на основе шаблона 16k+2k Parity Paramatizable BlockRAM (RAMB16) целесообразно вначале определить разрядность входных и выходных шин данных для каждого порта, воспользовавшись настраиваемыми параметрами WRITE_WIDTH_A, WRITE_WIDTH_B и READ_WIDTH_A, READ_WIDTH_B. Список возможных значений каждого из этих параметров содержит следующие варианты: 1, 2, 4, 9, 18 и 36. По умолчанию разрядность входных и выходных шин данных не задана (всем перечисленным параметрам присваивается нулевое значение).

Если в составе какого-либо порта формируемого оперативного запоминающего устройства необходимо задействовать выходной регистр, то следует указать для соответствующего параметра настройки DOA_ REG или DOB_REG единичное значение. По умолчанию для этих параметров предлагается нулевое значение, при котором выходные регистры не используются.

В случае применения выходных регистров в создаваемом ОЗУ нужно с помощью настраиваемых параметров INVERT_ CLK_DOA_REG и INVERT_CLK_DOB_REG определить необходимость инвертирования тактовых сигналов для этих регистров. Каждый из указанных параметров может принимать одно из двух значений — "TRUE" или "FALSE". В случае использования значения "FALSE", установленного по умолчанию для параметров INVERT_CLK_DOA_REG и INVERT_CLK_DOB_REG, тактирование выходных регистров формируемого элемента 2-портовой оперативной памяти осуществляется неинвертированным сигналом синхронизации. Чтобы задействовать инвертор в цепи тактового сигнала какого-либо порта, следует соответствующему параметру настройки (INVERT_CLK_DOA_REG

или INVERT_CLK_DOB_REG) присвоить значение "TRUE".

Затем, используя параметры настройки WRITE_MODE_A и WRITE_MODE_B, необходимо установить требуемый порядок выполнения операций записи и чтения данных при обращении к ячейкам памяти для каждого порта формируемого 2-портового оперативного запоминающего устройства. Значение "WRITE_FIRST", заданное по умолчанию для этих параметров, соответствует режиму, при котором информационные данные, поступающие в соответствующий входной порт, записываются в ячейку памяти, адрес которой задается комбинацией сигналов на адресных входах, после чего сразу передаются на выходы. При подготовке описания элемента 2-портового ОЗУ, в котором должен использоваться режим предварительного чтения данных из ячеек памяти перед записью новых данных в эти ячейки, следует соответствующему параметру (WRITE_MODE_A или WRITE_MODE_B) присвоить значение "READ_FIRST". Чтобы установить для какого-либо порта формируемого элемента 2-портовой оперативной памяти режим блокировки выходов при выполнении операции записи данных, нужно соответствующему параметру настройки присвоить значение "NO_CHANGE". В этом случае в процессе записи информации в такой порт ОЗУ его выходы остаются в зафиксированном состоянии, соответствующем последним считанным данным, присутствовавшим в момент появления активного уровня сигнала на входе разрешения записи этого порта.

Далее, при необходимости, следует определить состояние выходных портов при активном уровне соответствующего сигнала сброса/установки, воспользовавшись настраиваемыми параметрами SRVAL_A и SRVAL_B, которые могут принимать нулевое или единичное значение. По умолчанию этим параметрам присваиваются нулевые значения. Начальное состояние выходных портов после завершения процесса конфигурирования кристалла программируемой логики указывается с помощью настраиваемых параметров INIT_A и INIT_B, для которых по умолчанию также предлагаются нулевые значения.

Для автоматической инициализации содержимого ячеек формируемого элемента 2-портовой оперативной памяти нужно воспользоваться соответствующими параметрами настройки INIT_00-INIT_3F и INITP_00-INITP_07.

Если создаваемый элемент 2-портового ОЗУ предназначен для применения в составе каскадного соединения двух смежных модулей блочной памяти Block RAM, то необходимо указать соответствующие значения параметров RAM_EXTENSION_A и RAM_EXTENSION_B. Список допустимых значений этих параметров включает в себя три варианта: "UPPER", "LOWER"

RAMB16

- DIA[31:0]

- DIPA[3:0]

- ADDRA[14:0] DOA[31:0] -

WEA[3:0] ENA REGCEA SSRA > CLKA DOPA[3:0]

CASCADEINA CASCADEOUTA -

□ d

— DIB[31:0]

- DIPB[3:0]

— AOORB[14:0] DOB[31:0] -

WEB[3:0] ENB REGCEB SSRB > CLKB DOPB[3:0]

CASCADEINB CASCADEOUTB -

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

и "NONE". По умолчанию параметрам RAM_EXTENSION_A и RAM_EXTENSION_B присваивается значение "NONE", которое соответствует автономному использованию формируемого элемента 2-портовой оперативной памяти. При выборе значения "UPPER" ячейки создаваемого элемента памяти в составе каскадного соединения относятся к старшей части адресного пространства. Значение "LOWER" соответствует младшей части адресного пространства ОЗУ.

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

512x64ECCRAMRAMB32_S64_ECC) содержит образец описания элемента оперативной памяти с поддержкой контроля и коррекции ошибок, реализуемого на основе двух модулей блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Каждая пара смежных (по вертикали) модулей блочной памяти ПЛИС серии Virtex-4 может быть сконфигурирована в виде ОЗУ информационной емкостью 32 кбит с организацией 512x64 разряда, с раздельными портами записи и чтения данных и со встроенной схемой контроля и коррекции ошибок ECC (Error Correction Code). Структурная схема такого элемента оперативной памяти приведена на рис. 361.

Рис. 361. Структурная схема ОЗУ со встроенной схемой контроля и коррекции ошибок ECC, реализуемого на базе смежных модулей блочной памяти ПЛИС серии Viгtex-4

RAMB32. _S64_ECC

Dl[63:0] D0[63:0]

WRADDR[8:0]

RDADDR[8:0]

WREN STATUS[1:0]

— RDEN

— SSR

— WRCLK

- RDCLK

Рис. 362. Условный графический образ элементов оперативной памяти, формируемых с помощью шаблона 512 x 64 ECC RAM (RAMB32_S64_ECC)

Для подготовки описания ОЗУ информационной емкостью 32 кбит с поддержкой контроля и коррекции ошибок предоставляется шаблон, который выполнен на основе экземпляра библиотечного примитива RAMB32Js64_ECC.

generic map(

DO_REG => 0, -- Optional output registers (0 or 1) SIM_COLLISION_CHECK => "ALL") -- Collision check enable "ALL", "WARNING_ONLY", "GENERATE_X_ONLY" port map (

DO => DO, -- 64-bit output data

STATUS => STATUS, -- 2-bit status output

DI => DI, -- 64-bit data input

RDADDR => RDADDR, -- 9-bit data address input

RDCLK => RDCLK, -- 1-bit read clock input

RDEN => RDEN, -- 1-bit read enable input

SSR => '0', -- Always tie to ground

WRADDR =>WRADDR, -- 9-bit write address input

WRCLK => WRCLK, -- 1-bit write clock input

WREN => WREN -- 1-bit write enable input

);

-- End of RAMB32_S64_ECC_inst instantiation

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

• DO — выходная 64-разрядная шина данных.

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

• DI — входная 64-разрядная шина данных.

• RDADDR — 9-разрядная шина адреса порта чтения.

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

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

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

• SSR — зарезервированный вход, подключаемый к общей цепи.

• WRADDR — 9-разрядная шина адреса порта записи.

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

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

На рис. 362 показан условный графический образ элемента оперативной памяти с поддержкой контроля и коррекции ошибок, описание которого создается с помощью шаблона 512 x 64 ECC RAM (RAMB32_ S64_ECC) для последующей реализации на базе двух смежных модулей блочной памяти Block RAM кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX.

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

-- RAMB32_S64_ECC : 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 (RAMB32_S64_ECC_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--->

-- RAMB32_S64_ECC: 512 x 64 Error Correction BlockRAM -- Virtex-4

-- Xilinx HDL Language Template, version 12.4 RAMB32_S64_ECC_inst: RAMB32_S64_ECC_inst

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