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

№ 11’2011
PDF версия
Продолжение. Начало в № 2`2010

Двадцать вторая часть статьи продолжает представление образцов 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:

— 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
— Xilinx HDL Language Template, version 12.4

IDELAYCTRL_inst : 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 IDELAYCTRL_inst instantiation

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

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

Компоненты, формируемые с помощью шаблона IDELAYCTRL, включаются в состав разрабатываемых устройств при использовании элементов входной задержки IDELAY или входных преобразователей последовательного кода в параллельный ISERDES. В случае применения этих компонентов необходимо выполнить процедуру их сброса после завершения загрузки конфигурационной последовательности в ПЛИС, подав высокий уровень сигнала на вход RST. При этом длительность импульса сброса должна быть не менее значения TIDELAYCTRL_RPW, указанного в справочной документации [35, 36]. После завершения процедуры сброса, через несколько периодов тактового сигнала сигнал на выходе RDY переключается в состояние высокого логического уровня, что информирует о выполнении калибровки элементов входной задержки соответствующего региона. Если сигнал на входе REFCLK не переключается в течение интервала, превышающего один период тактового сигнала, то выход RDY сбрасывается в состояние низкого логического уровня. В этом случае нужно снова выполнить процедуру сброса. Временные диаграммы сигналов, поясняющие функционирование компонентов, осуществляющих калибровку элементов входной задержки в ПЛИС серии Virtex-4, показаны на рис. 338.

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

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

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

Графический образ компонента, формируемого с помощью шаблона IDELAYCTRL

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

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

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

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

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

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

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

Конкретное расположение в ПЛИС экземпляров компонентов, формируемых на основе шаблона IDELAYCTRL, определяется с помощью выражений топологических ограничений LOC, формат которых выглядит следующим образом:

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

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

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

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

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

Совместное использование компонентов без топологических ограничений и с заданным расположением в кристалле

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

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

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

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

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

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

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

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

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

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

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

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

Шаблон описания входного последова-тельно-параллельного преобразователя, предназначенного для применения в составе проектов, реализуемых на основе ПЛИС серии 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
SERDES_MODE => “MASTER”) —Set SERDES mode to “MASTER” or “SLAVE”
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 — применяется для выбора типа используемого модуля входной задержки.
  • IOBDELAY_VALUE — определяет значение начальной или фиксированной задержки используемого модуля входной задержки.
  • NUM_CE — указывает количество входов сигналов разрешения синхронизации.
  • SERDES_MODE — устанавливает режим функционирования формируемого входного последовательно-параллельного преобразователя.

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

  • O — комбинаторный выход последовательного кода;
  • Q1 — регистровый выход первого разряда формируемого параллельного кода;
  • Q2 — регистровый выход второго разряда формируемого параллельного кода;
  • Q3 — регистровый выход третьего разряда формируемого параллельного кода;
  • Q4 — регистровый выход четвертого разряда формируемого параллельного кода;
  • Q5 — регистровый выход пятого разряда формируемого параллельного кода;
  • Q6 — регистровый выход шестого разряда формируемого параллельного кода;
  • SHIFTOUT1, SHIFTOUT2 — выходы данных, предназначенные для организации каскадного соединения последовательно-параллельных преобразователей;
  • BITSLIP — вход сигнала активизации функции Bitslip;
  • CE1, 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 приведена структурная схема, поясняющая процесс формирования выходного параллельного кода в этом режиме.

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

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

Далее следует указать требуемое количество двоичных разрядов в формируемом параллельном коде, воспользовавшись настраиваемым параметром DATA_WIDTH. Состав списка допустимых значений этого параметра зависит от установленного режима (скорости) передачи данных и выбранного типа выходного интерфейса. Если создается описание входного последовательно-параллельного преобразователя с обычной скоростью передачи данных и выходным интерфейсом “NETWORKING”, то параметр DATA_WIDTH может принимать любые целочисленные значения в диапазоне от двух до восьми. При формировании описания входного преобразователя последовательного кода в параллельный с удвоенной скоростью передачи данных и указанным выходным интерфейсом список возможных значений этого параметра включает в себя четыре варианта: 4, 6, 8 и 10. Когда для формируемого преобразователя выбран выходной интерфейс “MEMORY” с удвоенной скоростью передачи данных, параметр настройки DATA_WIDTH может принимать единственное значение, равное четырем, которое предлагается по умолчанию. При выборе значения разрядности информационных данных следует учитывать, что для формирования выходного параллельного кода с числом разрядов более шести необходимо каскадное соединение двух модулей последовательно-параллельного преобразования ISERDES. При этом один из указанных модулей функционирует в ведущем режиме (master), а второй — в подчиненном (slave). Структурная схема, демонстрирующая каскадное соединение двух входных последовательно-параллельных преобразователей ISERDES ПЛИС серии Virtex-4, представлена на рис. 348.

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

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

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

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

Временные диаграммы сигналов, поясняющие применение функции Bitslip

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

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

Тип используемого модуля входной задержки указывается с помощью настраиваемого параметра 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.

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

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

Output SERDES (OSERDES) включает в себя образец описания выходного преобразователя параллельного кода данных в последовательный, реализуемого на базе соответствующих аппаратных ресурсов ввода/вывода SelectIO кристаллов программируемой логики семейств Virtex-4 LX, Virtex-4 SX и Virtex-4 FX. Компоненты, формируемые с помощью этого шаблона, широко применяются при разработке высокоскоростных интерфейсов передачи данных. На рис. 351 показана структурная схема программируемого выходного параллельно-последовательного преобразователя данных, представленного в составе логических ячеек ввода/вывода ПЛИС серии Virtex-4.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для подготовки описаний выходных параллельно-последовательных преобразователей, реализуемых на базе соответствующих ресурсов логических ячеек ввода/вывода в кристаллах семейств 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;
use UNISIM.vcomponents.all;

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

В библиотечном примитиве 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 может принимать значение, равное двум или четырем. В тех случаях, когда для параметра настройки DATA_RATE_TQ выбран вариант “SDR” или “BUF”, параметру TRISTATE_WIDTH можно присвоить только единичное значение.

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

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

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

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

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

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

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

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

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

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

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

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

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

— 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
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_00INIT_3F — предоставляют возможность инициализации содержимого соответствующих ячеек основной памяти (по умолчанию во все ячейки ОЗУ заносится нулевое значение).
  • INITP_00INITP_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 — входы сигналов синхронизации первого и второго порта соответственно;
  • 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_00INIT_3F и INITP_00INITP_07.

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

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

Условный графический образ  элемента 2-портовой оперативной памяти,  формируемого с помощью шаблона

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

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

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

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

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

— 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
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-разрядная шина адреса порта чтения.
  • 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.

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

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

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

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

Все статьи цикла:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *