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

№ 12’2010
PDF версия
В одиннадцатой части статьи завершается изучение шаблонов VHDL-описаний 2-портовых ОЗУ, реализуемых на основе ресурсов блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3. Рассмотрены также образцы описания различных вариантов конфигурирования модуля блочной памяти ПЛИС указанного семейства в виде элемента 1-портового ОЗУ. Здесь же приведена подробная информация о шаблонах описаний элементов распределенной оперативной памяти.

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

8k/512 x 2/32 + 0/4 Parity bits (RAMB16_S2_S36) включает в себя шаблон описания
элемента 2-портового ОЗУ, конфигурируемого на базе модуля блочной памяти кристаллов программируемой логики семейства
Spartan-3, в котором первый порт имеет
организацию 8192 слова × 2 разряда, а второй — 512 слов × 32 разряда. Основой этой
конструкции является оператор создания
экземпляра библиотечного элемента оперативной памяти RAMB16_S2_S36, второй
порт которого поддерживает возможность
выполнения операций с применением контроля четности.

— RAMB16_S2_S36 : 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_S2_S36_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_S2_S36: 8k/512 x 2/32 + 0/4 Parity bits Dual-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S2_S36_inst : RAMB16_S2_S36
generic map (
      INIT_A => X“0”, — Value of output RAM registers on Port A
at startup
INIT_B => X“000000000”, — Value of output RAM registers
on Port B at startup
SRVAL_A => X“0”, — 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
SIM_COLLISION_CHECK => “ALL”, — “NONE”,
“WARNING”, “GENERATE_X_ONLY”, “ALL”
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Port A Address 0 to 2047, Port B Address 0 to 127
  INIT_00 => X“0000000000000000000000000000000000000000000”,
INIT_01 => X“0000000000000000000000000000000000000000000”,
INIT_02 => X“0000000000000000000000000000000000000000000”,
     
  INIT_0E => X“0000000000000000000000000000000000000000000”,
INIT_0F => X“0000000000000000000000000000000000000000000”,
    — Port A Address 2048 to 4095, Port B Address 128 to 255
  INIT_10 => X“0000000000000000000000000000000000000000000”,
INIT_11 => X“0000000000000000000000000000000000000000000”,
INIT_12 => X“0000000000000000000000000000000000000000000”,
     
  INIT_1E => X“0000000000000000000000000000000000000000000”,
INIT_1F => X“0000000000000000000000000000000000000000000”,
    — Port A Address 4096 to 6143, Port B Address 256 to 383
  INIT_20 => X“0000000000000000000000000000000000000000000”,
INIT_21 => X“0000000000000000000000000000000000000000000”,
INIT_22 => X“0000000000000000000000000000000000000000000”,
     
  INIT_2E => X“0000000000000000000000000000000000000000000”,
INIT_2F => X“0000000000000000000000000000000000000000000”,
    — Port A Address 6144 to 8191, Port B Address 384 to 511
  INIT_30 => X“0000000000000000000000000000000000000000000”,
INIT_31 => X“0000000000000000000000000000000000000000000”,
INIT_32 => X“0000000000000000000000000000000000000000000”,
     
  INIT_3E => X“0000000000000000000000000000000000000000000”,
INIT_3F => X“0000000000000000000000000000000000000000000”,
    — The next set of INITP_xx are for the parity bits
— Port B Address 0 to 127
  INITP_00 => X“000000000000000000000000000000000000000000”,
INITP_01 => X“000000000000000000000000000000000000000000”,
    — Port B Address 128 to 255
  INITP_02 => X“000000000000000000000000000000000000000000”,
INITP_03 => X“000000000000000000000000000000000000000000”,
    — Port B Address 256 to 383
  INITP_04 => X“000000000000000000000000000000000000000000”,
INITP_05 => X“000000000000000000000000000000000000000000”,
    — Port B Address 384 to 511
  INITP_06 => X“000000000000000000000000000000000000000000”,
INITP_07 => X“000000000000000000000000000000000000000000”)
port map (
      DOA => DOA, — Port A 2-bit Data Output
DOB => DOB, — Port B 32-bit Data Output
DOPB => DOPB, — Port B 4-bit Parity Output
ADDRA => ADDRA, — Port A 13-bit Address Input
ADDRB => ADDRB, — Port B 9-bit Address Input
CLKA => CLKA, — Port A Clock
CLKB => CLKB, — Port B Clock
DIA => DIA, — Port A 2-bit Data Input
DIB => DIB, — Port B 32-bit Data Input
DIPB => DIPB, — Port B 4-bit parity Input
ENA => ENA, — Port A RAM Enable Input
ENB => ENB, — Port B RAM Enable Input
SSRA => SSRA, — Port A Synchronous Set/Reset Input
SSRB => SSRB, — Port B Synchronous Set/Reset Input
WEA => WEA, — Port A Write Enable Input
WEB => WEB — Port B Write Enable Input
);
  — End of RAMB16_S2_S36_inst instantiation

После включения представленной конструкции в состав описания разрабатываемого устройства следует указать идентификаторы цепей, подключаемых к интерфейсным
портам формируемого экземпляра библиотечного примитива RAMB16_S2_S36. В этом
шаблоне используются те же параметры настройки и система условных обозначений
интерфейсных портов, что и в шаблонах
16k x 1 (RAMB16_S1_S1) и 1k x 16 + 2 Parity
bits (RAMB16_S18_S18)
, информация о которых была приведена в девятой части статьи
(КиТ. 2010. № 10). При этом нужно обратить
внимание на то, что основные шины данных
второго порта формируемого элемента оперативной памяти являются 32-разрядными,
а дополнительные шины данных — 4-разрядными. Шина адреса второго порта содержит девять двоичных разрядов.

На рис. 100 показан условный графический
образ элемента 2-портовой оперативной
памяти с организацией портов 8192 слова ×
2 разряда и 512 слов × 32 разряда, для создания описания которого используется шаблон
8k/512 x 2/32 + 0/4 Parity bits (RAMB16_S2_S36).

Рис. 100. Условный графический образ элемента
2-портового ОЗУ (шаблон
8k/512 x 2/32 + 0/4 Parity bits (RAMB16_S2_S36))

1k/512 x 16/32 + 2/4 Parity bits (RAMB16_
S18_S36)
является образцом VHDL-описания
варианта конфигурирования модуля блочной памяти кристаллов программируемой
логики семейства Spartan-3 в виде элемента 2-портового ОЗУ с организацией первого и второго порта 1024 слова × 16 разрядов
и 512 слов × 32 разряда соответственно. Этот
шаблон выполнен на основе использования
библиотечного примитива RAMB16_S18_S36,
который предоставляет возможность выполнения операций записи и чтения данных
с использованием контроля четности для
каждого порта.

— RAMB16_S18_S36 : 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_S18_S36_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_S18_S36: 1k/512 x 16/32 + 2/4 Parity bits Dual-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S18_S36_inst : RAMB16_S18_S36
generic map (
      INIT_A => X“00000”, — Value of output RAM registers on
Port A at startup
INIT_B => X“000000000”, — Value of output RAM registers
on Port B at startup
SRVAL_A => X“00000”, — 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
    SIM_COLLISION_CHECK => “ALL”, — “NONE”,
“WARNING”, “GENERATE_X_ONLY”, “ALL”
— The following INIT_xx declarations specify the initial contents
of the RAM
— Port A Address 0 to 255, Port B Address 0 to 127
  INIT_00 => X“00000000000000000000000000000000000000000”,
INIT_01 => X“00000000000000000000000000000000000000000”,
INIT_02 => X“00000000000000000000000000000000000000000”,

INIT_0D => X“00000000000000000000000000000000000000000”,
INIT_0E => X“00000000000000000000000000000000000000000”,
INIT_0F => X“00000000000000000000000000000000000000000”,
    — Port A Address 256 to 511, Port B Address 128 to 255
  INIT_10 => X“00000000000000000000000000000000000000000”,
INIT_11 => X“00000000000000000000000000000000000000000”,
INIT_12 => X“00000000000000000000000000000000000000000”,
     
  INIT_1D => X“00000000000000000000000000000000000000000”,
INIT_1E => X“00000000000000000000000000000000000000000”,
INIT_1F => X“00000000000000000000000000000000000000000”,
    — Port A Address 512 to 767, Port B Address 256 to 383
  INIT_20 => X“00000000000000000000000000000000000000000”,
INIT_21 => X“00000000000000000000000000000000000000000”,
INIT_22 => X“00000000000000000000000000000000000000000”,
     
  INIT_2D => X“00000000000000000000000000000000000000000”,
INIT_2E => X“00000000000000000000000000000000000000000”,
INIT_2F => X“00000000000000000000000000000000000000000”,
    — Port A Address 768 to 1023, Port B Address 384 to 511
  INIT_30 => X“00000000000000000000000000000000000000000”,
INIT_31 => X“00000000000000000000000000000000000000000”,
INIT_32 => X“00000000000000000000000000000000000000000”,
     
  INIT_3D => X“00000000000000000000000000000000000000000”,
INIT_3E => X“00000000000000000000000000000000000000000”,
INIT_3F => X“00000000000000000000000000000000000000000”,
    — The next set of INITP_xx are for the parity bits
— Port A Address 0 to 255, Port B Address 0 to 127
  INITP_00 => X“0000000000000000000000000000000000000000”,
INITP_01 => X“0000000000000000000000000000000000000000”,
    — Port A Address 256 to 511, Port B Address 128 to 255
  INITP_02 => X“0000000000000000000000000000000000000000”,
INITP_03 => X“0000000000000000000000000000000000000000”,
    — Port A Address 512 to 767, Port B Address 256 to 383
  INITP_04 => X“0000000000000000000000000000000000000000”,
INITP_05 => X“0000000000000000000000000000000000000000”,
    — Port A Address 768 to 1023, Port B Address 384 to 511
  INITP_06 => X“000000000000000000000000000000000000000”,
INITP_07 => X“0000000000000000000000000000000000000000”)
port map (
      DOA => DOA, — Port A 16-bit Data Output
DOB => DOB, — Port B 32-bit Data Output
DOPA => DOPA, — Port A 2-bit Parity Output
DOPB => DOPB, — Port B 4-bit Parity Output
ADDRA => ADDRA, — Port A 10-bit Address Input
ADDRB => ADDRB, — Port B 9-bit Address Input
CLKA => CLKA, — Port A Clock
CLKB => CLKB, — Port B Clock
DIA => DIA, — Port A 16-bit Data Input
DIB => DIB, — Port B 32-bit Data Input
DIPA => DIPA, — Port A 2-bit parity Input
DIPB => DIPB, — Port-B 4-bit parity Input
ENA => ENA, — Port A RAM Enable Input
ENB => ENB, — Port B RAM Enable Input
SSRA => SSRA, — Port A Synchronous Set/Reset Input
SSRB => SSRB, — Port B Synchronous Set/Reset Input
WEA => WEA, — Port A Write Enable Input
WEB => WEB — Port B Write Enable Input
);
  — End of RAMB16_S18_S36_inst instantiation

В элементах оперативной памяти, формируемых на базе библиотечного компонента
RAMB16_S18_S36, разрядность входной и выходной основных шин данных первого порта
составляет 16 бит, а второго порта — 32 бита.
Кроме того, первый порт содержит дополнительные входную и выходную 2-разрядные
шины данных, которые предназначены для
организации контроля четности. В составе
второго порта для этой цели предусмотрены дополнительные 4-разрядные шины данных. При этом шина адреса первого порта
содержит 10 двоичных разрядов, а второго —
9 разрядов.

Условный графический образ элемента
2-портового ОЗУ с организацией 1024 слова ×
16 разрядов и 512 слов × 32 разряда, описание которого создается с помощью шаблона
1k/512 x 16/32 + 2/4 Parity bits (RAMB16_S18_S36) для последующей реализации на основе
модуля блочной памяти Block RAM ПЛИС
семейства Spartan-3, изображен на рис. 101.

Рис. 101. Условный графический образ
2-портового ОЗУ (шаблон
1k/512 x 16/32 + 2/4 Parity bits (RAMB16_S18_S36))

16k x 1 (RAMB16_S1) представляет собой
шаблон описания элемента 1-портового ОЗУ
с организацией 16 384 слова × 1 разряд, реализуемого на базе модуля блочной памяти
Block RAM кристаллов программируемой
логики семейства Spartan-3.

— RAMB16_S1 : 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 (RAMB16_S1_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_S1: Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S1_inst : RAMB16_S1
generic map (
      INIT => X”0”, — Value of output RAM registers at startup
SRVAL => X”0”, — Output value upon SSR assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Address 0 to 4095
  INIT_00 => X“0000000000000000000000000000000000000000”,
INIT_01 => X“0000000000000000000000000000000000000000”,
INIT_02 => X“0000000000000000000000000000000000000000”,
     
  INIT_0D => X“0000000000000000000000000000000000000000”,
INIT_0E => X“0000000000000000000000000000000000000000”,
INIT_0F => X“0000000000000000000000000000000000000000”,
    — Address 4096 to 8191
  INIT_10 => X“0000000000000000000000000000000000000000”,
INIT_11 => X“0000000000000000000000000000000000000000”,
INIT_12 => X“0000000000000000000000000000000000000000”,
     
  INIT_1D => X“0000000000000000000000000000000000000000”,
INIT_1E => X“0000000000000000000000000000000000000000”,
INIT_1F => X“0000000000000000000000000000000000000000”,
    — Address 8192 to 12287
  INIT_20 => X“0000000000000000000000000000000000000000”,
INIT_21 => X“0000000000000000000000000000000000000000”,
INIT_22 => X“0000000000000000000000000000000000000000”,
     
  INIT_2D => X“0000000000000000000000000000000000000000”,
INIT_2E => X“0000000000000000000000000000000000000000”,
INIT_2F => X“0000000000000000000000000000000000000000”,
    — Address 12288 to 16383
  INIT_30 => X“0000000000000000000000000000000000000000”,
INIT_31 => X“0000000000000000000000000000000000000000”,
INIT_32 => X“0000000000000000000000000000000000000000”,
     
  INIT_3D => X“0000000000000000000000000000000000000000”,
INIT_3E => X“0000000000000000000000000000000000000000”,
INIT_3F => X“0000000000000000000000000000000000000000”)
port map (
      DO => DO, — 1-bit Data Output
ADDR => ADDR, — 14-bit Address Input
CLK => CLK, — Clock
DI => DI, — 1-bit Data Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
  End of RAMB16_S1_inst instantiation

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

  • INIT — указывает начальное значение для
    выходного регистра создаваемого ОЗУ, которое заносится после завершения процесса конфигурирования кристалла (по умолчанию предлагается нулевое значение).
  • SRVAL — определяет состояние выходного
    регистра при подаче активного уровня сигнала на вход сброса/установки (по умолчанию устанавливается нулевое значение).
  • WRITE_MODE — устанавливает режим записи информации (порядок выполнения
    операций записи и чтения данных при одновременном обращении к ячейкам памяти).
  • INIT_00–INIT_3F — предоставляют возможность инициализации содержимого
    соответствующих ячеек памяти (по умолчанию во все ячейки ОЗУ записывается
    нулевое значение).

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

  • DO — выход элемента 1-портовой оперативной памяти;
  • ADDR — 14-разрядная шина адреса;
  • CLK — вход сигнала синхронизации;
  • DI — информационный вход (вход записи);
  • EN — вход сигнала разрешения;
  • SSR — вход сигнала синхронного сброса/установки;
  • WE — вход сигнала разрешения записи.

Для осуществления всех операций, включая
сброс/установку, необходимо подать высокий
логический уровень напряжения на вход сигнала разрешения EN. Выполнение операций
производится по фронту тактового сигнала
CLK. Занесение информационных данных
с входа DI в ячейку, адрес которой определяется совокупностью значений сигналов, представленных на шине ADDR, осуществляется
только при наличии высокого логического
уровня напряжения на входе сигнала разрешения записи WE. Если на вход сигнала
синхронного сброса/установки SSR поступает активный уровень напряжения, то выход
элемента оперативной памяти переключается
в состояние, которое определяется указанным
значением параметра настройки SRVAL.

На рис. 102 показан условный графический образ элемента 1-портового ОЗУ с информационной емкостью 16 384 бита и организацией 16 384 слова × 1 разряд, описание которого создается с помощью шаблона
16k x 1 (RAMB16_S1) для последующей реализации на основе модуля блочной памяти
Block RAM кристаллов программируемой
логики семейства Spartan-3.

Рис. 102. Условный графический образ
1-портового ОЗУ (шаблон 16k x 1 (RAMB16_S1))

1k x 16 + 2 Parity bits (RAMB16_S18) включает в себя образец VHDL-описания элемента
1-портовой оперативной памяти информационной емкостью 16 384 бита с организацией 1024 слова × 16 разрядов и дополнительным объемом 2048 бит, необходимым для
осуществления контроля четности загружаемых и считываемых данных. В качестве основы этого шаблона используется экземпляр
библиотечного примитива RAMB16_S18, который представляет соответствующий вариант конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3.

— RAMB16_S18 : 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 (RAMB16_S18_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_S18: 1k x 16 + 2 Parity bits Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S18_inst : RAMB16_S18
generic map (
      INIT => X“00000”, — Value of output RAM registers at
startup
SRVAL => X“00000”, — Output value upon SSR assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Address 0 to 255
  INIT_00 => X“00000000000000000000000000000000000000000”,
INIT_01 => X“00000000000000000000000000000000000000000”,
INIT_02 => X“00000000000000000000000000000000000000000”,
     
  INIT_0D => X“00000000000000000000000000000000000000000”,
INIT_0E => X“00000000000000000000000000000000000000000”,
INIT_0F => X“00000000000000000000000000000000000000000”,
    — Address 256 to 511
  INIT_10 => X“00000000000000000000000000000000000000000”,
INIT_11 => X“00000000000000000000000000000000000000000”,
INIT_12 => X“00000000000000000000000000000000000000000”,
     
  INIT_1D => X“00000000000000000000000000000000000000000”,
INIT_1E => X“00000000000000000000000000000000000000000”,
INIT_1F => X“00000000000000000000000000000000000000000”,
    — Address 512 to 767
  INIT_20 => X“00000000000000000000000000000000000000000”,
INIT_21 => X“00000000000000000000000000000000000000000”,
INIT_22 => X“00000000000000000000000000000000000000000”,
     
  INIT_2D => X“00000000000000000000000000000000000000000”,
INIT_2E => X“00000000000000000000000000000000000000000”,
INIT_2F => X“00000000000000000000000000000000000000000”,
    — Address 768 to 1023
  INIT_30 => X“00000000000000000000000000000000000000000”,
INIT_31 => X“00000000000000000000000000000000000000000”,
INIT_32 => X“00000000000000000000000000000000000000000”,
     
  INIT_3D => X“00000000000000000000000000000000000000000”,
INIT_3E => X“00000000000000000000000000000000000000000”,
INIT_3F => X“00000000000000000000000000000000000000000”,
    — The next set of INITP_xx are for the parity bits
— Address 0 to 255
  INITP_00 => X“0000000000000000000000000000000000000000”,
INITP_01 => X“0000000000000000000000000000000000000000”,
    — Address 256 to 511
  INITP_02 => X“0000000000000000000000000000000000000000”,
INITP_03 => X“0000000000000000000000000000000000000000”,
    — Address 512 to 767
  INITP_04 => X“0000000000000000000000000000000000000000”,
INITP_05 => X“0000000000000000000000000000000000000000”,
    — Address 768 to 1023
  INITP_06 => X“0000000000000000000000000000000000000000”,
INITP_07 => X“0000000000000000000000000000000000000000”)
port map (
      DO => DO, — 16-bit Data Output
DOP => DOP, — 2-bit parity Output
ADDR => ADDR, — 10-bit Address Input
CLK => CLK, — Clock
DI => DI, — 16-bit Data Input
DIP => DIP, — 2-bit parity Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
    — End of RAMB16_S18_inst instantiation

В систему условных обозначений, используемую в описании интерфейса библиотечного примитива RAMB16_S18, входят
идентификаторы входов и выходов, представленные при рассмотрении предыдущего
шаблона. При этом следует обратить внимание на то, что в приведенной конструкции
вместо одиночных информационных входа
и выхода DI и DO применяются одноименные 16-разрядные шины данных. Кроме того,
в шаблоне 1k x 16 + 2 Parity bits (RAMB16_
S18
)
присутствуют 2-разрядные дополнительные входная и выходная шины данных (DIP
и DOP соответственно), которые предназначены для организации контроля четности. В отличие от предыдущего шаблона шина адреса
библиотечного элемента RAMB16_S18 содержит 10 двоичных разрядов.

На рис. 103 представлен условный графический образ элемента 1-портового ОЗУ
с организацией 1024 слова × 16 разрядов, для
подготовки описания которого используется
шаблон 1k x 16 + 2 Parity bits (RAMB16_S18).

Рис. 103. Условный графический образ 1-портового
ОЗУ (шаблон 1k x 16 + 2 Parity bits (RAMB16_S18))

2k x 8 + 1 Parity bit (RAMB16_S9) содержит
конструкцию, предназначенную для подготовки описания варианта конфигурирования
модуля блочной памяти кристаллов программируемой логики семейства Spartan-3 в виде
элемента 1-портового ОЗУ с организацией
2048 слов × 8 разрядов. Элементы оперативной памяти, формируемые с помощью этого шаблона, дают возможность выполнения
операций с использованием контроля четности данных.

— RAMB16_S9 : 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 (RAMB16_S9_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_S9: 2k x 8 + 1 Parity bit Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S9_inst : RAMB16_S9
generic map (
      INIT => X“000”, — Value of output RAM registers at
startup
SRVAL => X“000”, — Output value upon SSR assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Address 0 to 511
  INIT_00 => X“0000000000000000000000000000000000000000”,
INIT_01 => X“0000000000000000000000000000000000000000”,
INIT_02 => X“0000000000000000000000000000000000000000”,
     
  INIT_0E => X“0000000000000000000000000000000000000000”,
INIT_0F => X“0000000000000000000000000000000000000000”,
    — Address 512 to 1023
  INIT_10 => X“0000000000000000000000000000000000000000”,
INIT_11 => X“0000000000000000000000000000000000000000”,
INIT_12 => X“0000000000000000000000000000000000000000”,
     
  INIT_1E => X“0000000000000000000000000000000000000000”,
INIT_1F => X“0000000000000000000000000000000000000000”,
    — Address 1024 to 1535
  INIT_20 => X“0000000000000000000000000000000000000000”,
INIT_21 => X“0000000000000000000000000000000000000000”,
INIT_22 => X“0000000000000000000000000000000000000000”,
     
  INIT_2E => X“0000000000000000000000000000000000000000”,
INIT_2F => X“0000000000000000000000000000000000000000”,
    — Address 1536 to 2047
  INIT_30 => X“0000000000000000000000000000000000000000”,
INIT_31 => X“0000000000000000000000000000000000000000”,
INIT_32 => X“0000000000000000000000000000000000000000”,
     
  INIT_3E => X“0000000000000000000000000000000000000000”,
INIT_3F => X“0000000000000000000000000000000000000000”,
    — The next set of INITP_xx are for the parity bits
— Address 0 to 511
  INITP_00 => X“000000000000000000000000000000000000000”,
INITP_01 => X“000000000000000000000000000000000000000”,
    — Address 512 to 1023
  INITP_02 => X“000000000000000000000000000000000000000”,
INITP_03 => X“000000000000000000000000000000000000000”,
    — Address 1024 to 1535
  INITP_04 => X“000000000000000000000000000000000000000”,
INITP_05 => X“000000000000000000000000000000000000000”,
    — Address 1536 to 2047
  INITP_06 => X“000000000000000000000000000000000000000”,
INITP_07 => X“000000000000000000000000000000000000000”)
port map (
      DO => DO, — 8-bit Data Output
DOP => DOP, — 1-bit parity Output
ADDR => ADDR, — 11-bit Address Input
CLK => CLK, — Clock
DI => DI, — 8-bit Data Input
DIP => DIP, — 1-bit parity Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
  — End of RAMB16_S9_inst instantiation

Основные отличия приведенной конструкции от предыдущего шаблона проявляются
в разрядности входных и выходных шин данных, а также шины адреса. Основные входная
и выходная шины данных содержат 8 двоичных разрядов, а шина адреса — 11 разрядов.
Для организации контроля четности предусмотрены дополнительные вход и выход данных.

На рис. 104 приведен условный графический образ 1-портового оперативного запоминающего устройства с организацией
2048 слов × 8 разрядов и поддержкой выполнения операций с использованием контроля
четности, формируемого с помощью шаблона 2k x 8 + 1 Parity bit (RAMB16_S9).

Рис. 104. Условный графический образ 1-портового
ОЗУ (шаблон 2k x 8 + 1 Parity bit (RAMB16_S9))

4k x 4 (RAMB16_S4) является образцом VHDL-описания варианта конфигурирования модуля блочной памяти кристаллов программируемой логики семейства
Spartan-3 в виде элемента 1-портового ОЗУ
с организацией 4096 слов × 4 разряда.

— RAMB16_S4 : 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 (RAMB16_S4_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_S4: 4k x 4 Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S4_inst : RAMB16_S4
generic map (
      INIT => X“0”, — Value of output RAM registers at startup
SRVAL => X“0”, — Output value upon SSR assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Address 0 to 1023
  INIT_00 => X“000000000000000000000000000000000000000”,
INIT_01 => X“000000000000000000000000000000000000000”,
INIT_02 => X“000000000000000000000000000000000000000”,
     
  INIT_0D => X“000000000000000000000000000000000000000”,
INIT_0E => X“000000000000000000000000000000000000000”,
INIT_0F => X“000000000000000000000000000000000000000”,
    — Address 1024 to 2047
  INIT_10 => X“000000000000000000000000000000000000000”,
INIT_11 => X“000000000000000000000000000000000000000”,
INIT_12 => X“000000000000000000000000000000000000000”,
     
  INIT_1D => X“000000000000000000000000000000000000000”,
INIT_1E => X“000000000000000000000000000000000000000”,
INIT_1F => X“000000000000000000000000000000000000000”,
    — Address 2048 to 3071
  INIT_20 => X“000000000000000000000000000000000000000”,
INIT_21 => X“000000000000000000000000000000000000000”,
INIT_22 => X“000000000000000000000000000000000000000”,
     
  INIT_2D => X“000000000000000000000000000000000000000”,
INIT_2E => X“000000000000000000000000000000000000000”,
INIT_2F => X“000000000000000000000000000000000000000”,
    — Address 3072 to 4095
  INIT_30 => X“000000000000000000000000000000000000000”,
INIT_31 => X“000000000000000000000000000000000000000”,
INIT_32 => X“000000000000000000000000000000000000000”,
     
  INIT_3D => X“000000000000000000000000000000000000000”,
INIT_3E => X“000000000000000000000000000000000000000”,
INIT_3F => X“000000000000000000000000000000000000000”)
port map (
      DO => DO, — 4-bit Data Output
ADDR => ADDR, — 12-bit Address Input
CLK => CLK, — Clock
DI => DI, — 4-bit Data Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
  End of RAMB16_S4_inst instantiation

Основу этого шаблона образует оператор
создания экземпляра библиотечного элемента RAMB16_S4, который соответствует
указанному выше варианту конфигурирования модуля блочной памяти кристаллов программируемой логики семейства Spartan-3.
При практическом использовании этой конструкции нужно обратить внимание на то,
что разрядность входной и выходной шин
данных формируемого элемента оперативной памяти составляет 4 бита, а разрядность
шины адреса — 12 бит.

Условный графический образ элемента
1-портового ОЗУ с организацией 4096 слов ×
4 разряда, описание которого формируется
с помощью шаблона 4k x 4 (RAMB16_S4), показан на рис. 105.

Рис. 105. Условный графический образ 1-портового
ОЗУ (шаблон 4k x 4 (RAMB16_S4))

512 x 32 + 4 Parity bits (RAMB16_S36) представляет шаблон VHDL-описания 1-портового оперативного запоминающего устройства
с организацией 512 слов × 32 разряда и поддержкой контроля четности записываемых
и считываемых данных, которое предназначено для реализации на базе ресурсов блочной памяти кристаллов программируемой
логики семейства Spartan-3.

— RAMB16_S36 : 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 (RAMB16_S36_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_S36: 512 x 32 + 4 Parity bits Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S36_inst : RAMB16_S36
generic map (
      INIT => X“000000000”, — Value of output RAM registers at
startup
SRVAL => X“000000000”, — Output value upon SSR
assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
    — The following INIT_xx declarations specify the initial contents
of the RAM
— Address 0 to 127
  INIT_00 => X“0000000000000000000000000000000000000000”,
INIT_01 => X“000000000000000000000000000000000000000”,
INIT_02 => X“0000000000000000000000000000000000000000”,
     
  INIT_0E => X“000000000000000000000000000000000000000”,
INIT_0F => X“0000000000000000000000000000000000000000”,
    — Address 128 to 255
  INIT_10 => X“0000000000000000000000000000000000000000”,
INIT_11 => X“0000000000000000000000000000000000000000”,
INIT_12 => X“0000000000000000000000000000000000000000”,
     
  INIT_1E => X“0000000000000000000000000000000000000000”,
INIT_1F => X“0000000000000000000000000000000000000000”,
    — Address 256 to 383
  INIT_20 => X“0000000000000000000000000000000000000000”,
INIT_21 => X“0000000000000000000000000000000000000000”,
INIT_22 => X“0000000000000000000000000000000000000000”,
     
  INIT_2E => X“0000000000000000000000000000000000000000”,
INIT_2F => X“0000000000000000000000000000000000000000”,
    — Address 384 to 511
  INIT_30 => X“0000000000000000000000000000000000000000”,
INIT_31 => X“0000000000000000000000000000000000000000”,
INIT_32 => X“0000000000000000000000000000000000000000”,
     
  INIT_3E => X“0000000000000000000000000000000000000000”,
INIT_3F => X“0000000000000000000000000000000000000000”,
— The next set of INITP_xx are for the parity bits
— Address 0 to 127
INITP_00 => X“000000000000000000000000000000000000000”,
INITP_01 => X“000000000000000000000000000000000000000”,
— Address 128 to 255
INITP_02 => X“000000000000000000000000000000000000000”,
INITP_03 => X“000000000000000000000000000000000000000”,
— Address 256 to 383
INITP_04 => X“000000000000000000000000000000000000000”,
INITP_05 => X“000000000000000000000000000000000000000”,
    — Address 384 to 511
  INITP_06 => X“000000000000000000000000000000000000000”,
INITP_07 => X“000000000000000000000000000000000000000”)
port map (
      DO => DO, — 32-bit Data Output
DOP => DOP, — 4-bit parity Output
ADDR => ADDR, — 9-bit Address Input
CLK => CLK, — Clock
DI => DI, — 32-bit Data Input
DIP => DIP, — 4-bit parity Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
  End of RAMB16_S36_inst instantiation

Основой этого шаблона является экземпляр
библиотечного примитива RAMB16_S36,
который представляет соответствующий вариант конфигурирования модуля блочной
памяти ПЛИС семейства Spartan-3. Система
условных обозначений входов и выходов,
используемая в представленной конструкции, отличается от совокупности идентификаторов предыдущих шаблонов только
разрядностью адресной и информационных шин. В шаблоне 512 x 32 + 4 Parity bits
(RAMB16_S36)
входная и выходная основные
шины данных содержат 32 двоичных разряда, а шина адреса — 9 разрядов. В составе
интерфейса присутствуют также дополнительные 4-разрядные шины данных (входная
и выходная), используемые при выполнении
операций с применением контроля четности.

На рис. 106 приведен условный графический образ элемента 1-портовой оперативной
памяти с организацией 512 слов × 32 разряда
и поддержкой контроля четности, описание
которого формируется с помощью шаблона
512 x 32 + 4 Parity bits (RAMB16_S36).

Рис. 106. Условный графический образ элемента
1-портового ОЗУ
(шаблон 512 x 32 + 4 Parity bits (RAMB16_S36))

8k x 2 (RAMB16_S2) включает в себя конструкцию, предназначенную для подготовки VHDL-описания варианта конфигурирования модуля блочной памяти в кристаллах программируемой логики семейства
Spartan-3, в виде элемента 1-портового
ОЗУ емкостью 16 384 бита с организацией
8192 слова × 2 разряда.

— RAMB16_S2 : 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 (RAMB16_S2_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_S2: 8k x 2 Single-Port RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAMB16_S2_inst : RAMB16_S2
generic map (
      INIT => X“0”, — Value of output RAM registers at startup
SRVAL => X“0”, — Ouput value upon SSR assertion
WRITE_MODE => “WRITE_FIRST”, — WRITE_FIRST,
READ_FIRST or NO_CHANGE
  — The following INIT_xx declarations specify the initial contents of
the RAM
— Address 0 to 2047
INIT_00 => X“00000000000000000000000000000000000000000”,
INIT_01 => X“00000000000000000000000000000000000000000”,
INIT_02 => X“00000000000000000000000000000000000000000”,
     
  INIT_0D => X“00000000000000000000000000000000000000000”,
INIT_0E => X“00000000000000000000000000000000000000000”,
INIT_0F => X“00000000000000000000000000000000000000000”,
    — Address 2048 to 4095
  INIT_10 => X“00000000000000000000000000000000000000000”,
INIT_11 => X“00000000000000000000000000000000000000000”,
INIT_12 => X“00000000000000000000000000000000000000000”,
     
  INIT_1D => X“00000000000000000000000000000000000000000”,
INIT_1E => X“00000000000000000000000000000000000000000”,
INIT_1F => X“00000000000000000000000000000000000000000”,
    — Address 4096 to 6143
  INIT_20 => X“00000000000000000000000000000000000000000”,
INIT_21 => X“00000000000000000000000000000000000000000”,
INIT_22 => X“00000000000000000000000000000000000000000”,
     
  INIT_2D => X“00000000000000000000000000000000000000000”,
INIT_2E => X“00000000000000000000000000000000000000000”,
INIT_2F => X“00000000000000000000000000000000000000000”,
    — Address 6143 to 8191
  INIT_30 => X“00000000000000000000000000000000000000000”,
INIT_31 => X“00000000000000000000000000000000000000000”,
INIT_32 => X“00000000000000000000000000000000000000000”,
     
  INIT_3D => X“00000000000000000000000000000000000000000”,
INIT_3E => X“00000000000000000000000000000000000000000”,
INIT_3F => X“00000000000000000000000000000000000000000”)
port map (
      DO => DO, — 2-bit Data Output
ADDR => ADDR, — 13-bit Address Input
CLK => CLK, — Clock
DI => DI, — 2-bit Data Input
EN => EN, — RAM Enable Input
SSR => SSR, — Synchronous Set/Reset Input
WE => WE — Write Enable Input
);
  End of RAMB16_S2_inst instantiation

Представленный шаблон выполнен на основе библиотечного примитива RAMB16_S2.
В приведенной конструкции в составе интерфейса присутствуют 2-разрядные шины данных и 13-разрядная шина адреса.

Условный графический образ элемента
1-портового ОЗУ с организацией 8192 слова × 2 разряда, описание которого создается
с помощью шаблона 8k x 2 (RAMB16_S2) для
последующей реализации на основе модуля
блочной памяти Block RAM ПЛИС семейства
Spartan-3, изображен на рис. 107.

Рис. 107. Условный графический образ
2-портового ОЗУ (шаблон 8k x 2 (RAMB16_S2))

В каталоге Distributed RAM, входящем
в состав подраздела RAM/ROM (Рис. 51. КиТ.
2010. № 8), сосредоточены образцы описаний элементов оперативных запоминающих
устройств различного типа, которые реализуются на базе ресурсов распределенной
памяти ПЛИС семейства Spartan-3. В состав
всех секций типа SLICEM кристаллов программируемой логики этого семейства входят две 4-входовые таблицы преобразования
LUT (Look-Up Table), каждая из которых
может конфигурироваться в виде элемента
ОЗУ или ПЗУ с информационной емкостью
16 бит [1, 19]. Таким образом, одна секция
указанного типа позволяет реализовать элемент запоминающего устройства емкостью
32 бита с различной разрядностью данных
(32 слова × 1 разряд или 16 слов × 2 разряда).

Каталог Distributed RAM содержит две
папки — Dual-Port и Single-Port. В папке
Dual-Port находятся шаблоны описаний элементов 2-портовых распределенных оперативных запоминающих устройств с организацией 16 слов × 1 разряд. Папка Single-Port объединяет в себе образцы описаний элементов 1-портовой распределенной оперативной
памяти с различной информационной емкостью, которые сгруппированы в подразделы
в соответствии с количеством ячеек.

16 x 1 negedge write (RAM16X1D_1) содержит
шаблон VHDL-описания элемента 2-портового
ОЗУ с информационной емкостью 16 бит, синтезируемого в виде распределенной памяти
в кристаллах программируемой логики семейства Spartan-3. Основу этой конструкции образует оператор создания экземпляра библиотечного примитива RAM16X1D_1.

— RAM16X1D_1 : 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 (RAM16X1D_1_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—- >
  — RAM16X1D_1: 16 x 1 negative edge write, asynchronous read dualport
distributed RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
     
  RAM16X1D_1_inst : RAM16X1D_1
generic map (
    INIT => X“0000”
      )
  port map (
    DPO => DPO, — Read-only 1-bit data output for DPRA
SPO => SPO, — R/W 1-bit data output for A0-A3
A0 => A0, — R/W address[0] input bit
A1 => A1, — R/W address[1] input bit
A2 => A2, — R/W address[2] input bit
A3 => A3, — R/W address[3] input bit
D => D, — Write 1-bit data input
DPRA0 => DPRA0, — Read-only address[0] input bit
DPRA1 => DPRA1, — Read-only address[1] input bit
DPRA2 => DPRA2, — Read-only address[2] input bit
DPRA3 => DPRA3, — Read-only address[3] input bit
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM16X1D_1_inst instantiation

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

  • SPO — информационный выход первого
    порта ОЗУ;
  • DPO — информационный выход второго
    порта элемента оперативной памяти;
  • A0–A3 — адресные входы первого порта;
  • D — информационный вход данных;
  • DPRA0–DPRA3 — адресные входы второго
    порта;
  • WCLK — вход сигнала синхронизации;
  • WE — вход разрешения записи.

В элементах 2-портовых запоминающих
устройств, формируемых с помощью шаблона 16 x 1 negedge write (RAM16X1D_1),
первый порт, который включает в себя адресные входы A0–A3 и выход SPO, позволяет
выполнять как операции чтения, так и записи входных данных. Второй порт (с адресными входами DPRA0–DPRA3 и выходом DPO)
предназначен только для чтения информации, хранящейся в ОЗУ. Загрузка входных
данных в ячейки элемента 2-портовой распределенной оперативной памяти производится по спаду сигнала синхронизации
при наличии высокого логического уровня
на входе разрешения записи WE. Для инициализации содержимого создаваемых
2-портовых ОЗУ предусмотрен настраиваемый параметр INIT. Значение этого параметра задается в виде 4-разрядного шестнадцатеричного числа.

На рис. 108 показан условный графический образ элемента 2-портовой распределенной оперативной памяти с организацией
16 слов × 1 разряд, для подготовки описания
которого используется шаблон 16 x 1 negedge
write (RAM16X1D_1)
.

Рис. 108. Условный графический образ
распределенного 2-портового ОЗУ
(шаблон 16 x 1 negedge write (RAM16X1D_1))

16 x 1 posedge write (RAM16X1D) представляет собой образец описания варианта
конфигурирования таблицы преобразования
LUT кристаллов программируемой логики
семейства Spartan-3 в виде элемента 2-портового оперативного запоминающего устройства с информационной емкостью 16 бит
и организацией 16 слов × 1 разряд. Основой
этого шаблона является экземпляр библиотечного примитива RAM16X1D.

— : 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 (RAM16X1D_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—- >
  — RAM16X1D: 16 x 1 positive edge write, asynchronous read dualport
distributed RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM16X1D_inst : RAM16X1D
generic map (
    INIT => X“0000”
)
  port map (
    DPO => DPO, — Read-only 1-bit data output for DPRA
SPO => SPO, — R/W 1-bit data output for A0-A3
A0 => A0, — R/W address[0] input bit
A1 => A1, — R/W address[1] input bit
A2 => A2, — R/W address[2] input bit
A3 => A3, — R/W address[3] input bit
D => D, — Write 1-bit data input
DPRA0 => DPRA0, — Read-only address[0] input bit
DPRA1 => DPRA1, — Read-only address[1] input bit
DPRA2 => DPRA2, — Read-only address[2] input bit
DPRA3 => DPRA3, — Read-only address[3] input bit
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  End of RAM16X1D_inst instantiation

В составе системы условных обозначений
интерфейсных портов в представленной
конструкции используются те же идентификаторы входов и выходов, что и в предыдущем шаблоне. Но при этом необходимо
учитывать, что в отличие от библиотечного
примитива RAM16X1D_1, используемого
в составе предыдущего шаблона, в элементах
ОЗУ, формируемых на основе компонента
RAM16X1D, загрузка данных в ячейки памяти производится по фронту тактового сигнала при наличии активного уровня напряжения на входе разрешения записи WE.

На рис. 109 приведен условный графический образ элемента 2-портовой распределенной оперативной памяти, для создания
описания которого используется шаблон
16 x 1 posedge write (RAM16X1D).

Рис. 109. Условный графический образ элемента
2-портового распределенного ОЗУ
(шаблон 16 x 1 posedge write (RAM16X1D))

16 x 1 negedge write (RAM16X1S_1) является шаблоном описания элемента 1-портового
оперативного запоминающего устройства информационной емкостью 16 бит с организацией 16 слов × 1 разряд, синтезируемого на базе
распределенной памяти кристаллов программируемой логики семейства Spartan-3.

— RAM16X1S_1 : 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 (RAM16X1S_1_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—- >

  RAM16X1S_1: 16 x 1 negedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM16X1S_1_inst : RAM16X1S_1
generic map (
    INIT => X“0000”
)
  port map (
    O => O, — RAM output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
D => D, — RAM data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  End of RAM16X1S_1_inst instantiation

В основе представленного шаблона лежит экземпляр библиотечного примитива
RAM16X1S_1. Система условных обозначений, используемая в описании интерфейса
этого компонента, отличается от совокупности идентификаторов входов и выходов библиотечного примитива RAM16X1D_1 только наименованием выхода ОЗУ (O). Входные
данные, поступающие на вход D, заносятся
в ячейку элемента оперативной памяти
по спаду тактового сигнала на входе WCLK
при подаче высокого логического уровня напряжения на вход разрешения записи WE.

Условный графический образ элемента
распределенного 1-портового ОЗУ с организацией 16 слов × 1 разряд, описание которого формируется с помощью шаблона
16 x 1 negedge write (RAM16X1S_1), показан
на рис. 110.

Рис. 110. Условный графический образ
распределенного 1-портового ОЗУ
(шаблон 16 x 1 negedge write (RAM16X1S_1))

16 x 1 posedge write (RAM16X1S) представляет образец VHDL-описания варианта конфигурирования таблицы преобразования
LUT ПЛИС семейства Spartan-3 в форме элемента 1-портового ОЗУ с информационной
емкостью 16 бит и организацией 16 слов ×
1 разряд. Основой этого шаблона является
оператор создания экземпляра библиотечного примитива RAM16X1S.

— RAM16X1S : 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 (RAM16X1S_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-
— >
  RAM16X1S: 16 x 1 posedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM16X1S_inst : RAM16X1S
generic map (
    INIT => X“0000”
)
  port map (
    O => O, — RAM output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
D => D, — RAM data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  End of RAM16X1S_inst instantiation

Элементы оперативной памяти, формируемые на основе библиотечного примитива
RAM16X1S, отличаются от ОЗУ, выполняемых на базе компонента RAM16X1S_1, рассмотренного выше, только тем, что запись
данных осуществляется по фронту сигнала
синхронизации.

На рис. 111 изображен условный графический образ элемента распределенного 1-портового ОЗУ с информационной
емкостью 16 бит и организацией 16 слов ×
1 разряд, для подготовки описания которого используется шаблон 16 x 1 posedge write
(RAM16X1S)
.

Рис. 111. Условный графический образ элемента
1-портового распределенного ОЗУ
(шаблон 16 x 1 posedge write (RAM16X1S))

16 x 2 posedge write (RAM16X2S) включает
в себя конструкцию, предназначенную для
подготовки описания элемента 1-портового
ОЗУ с информационной емкостью 32 бита
и организацией 16 слов × 2 разряда, синтезируемого на основе ресурсов распределенной памяти кристаллов программируемой
логики семейства Spartan-3. В качестве основы этого шаблона используется экземпляр
библиотечного примитива RAM16X2S.

— RAM16X2S : 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 (RAM16X2S_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—- >
  — RAM16X2S: 16 x 2 posedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM16X2S_inst : RAM16X2S
generic map (
    INIT_00 => X“0000”, — INIT for bit 0 of RAM
INIT_01 => X“0000”) — INIT for bit 1 of RAM
  port map (
    O0 => O0, — RAM data[0] output
O1 => O1, — RAM data[1] output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
D0 => D0, — RAM data[0] input
D1 => D1, — RAM data[1] input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM16X2S_inst instantiation

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

  • O0 — выход нулевого разряда данных;
  • O1 — выход первого разряда данных;
  • D0 — информационный вход нулевого
    разряда данных;
  • D1 — информационный вход первого разряда данных.

Для инициализации содержимого ячеек
оперативной памяти, формируемых с помощью шаблона 16 x 2 posedge write (RAM16X2S),
применяются настраиваемые параметры INIT_00 и INIT_01, значения которых задаются в виде 4-разрядных шестнадцатеричных
чисел. При этом параметр INIT_00 определяет
содержимое ячеек, соответствующих нулевому
разряду данных, а параметр INIT_01 указывает значения, записываемые после завершения
конфигурирования ПЛИС в ячейки, соответствующие первому разряду данных.

Условный графический образ элемента
1-портового ОЗУ с информационной емкостью 32 бита и организацией 16 слов × 2 разряда, описание которого создается на основе шаблона 16 x 2 posedge write (RAM16X2S) для последующей реализации на базе таблиц
преобразования LUT кристаллов программируемой логики семейства Spartan-3, показан на рис. 112.

Рис. 112. Условный графический образ элемента
1-портового распределенного ОЗУ
(шаблона 16 x 2 posedge write (RAM16X2S))

32 x 1 negedge write (RAM32X1S_1) содержит образец описания элемента 1-портового
ОЗУ с информационной емкостью 32 бита
и организацией 32 слова × 1 разряд, выполняемого на основе ресурсов распределенной
памяти ПЛИС семейства Spartan-3. Запись
данных в оперативную память, формируемую на основе этого шаблона, производится
по спаду тактового сигнала.

— RAM32X1S_1 : 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 (RAM32X1S_1_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—- >
  — RAM32X1S_1: 32 x 1 negedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM32X1S_1_inst : RAM32X1S_1
generic map (
    INIT => X“00000000”
)
  port map (
    O => O, — RAM output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
A4 => A4, — RAM address[4] input
D => D, — RAM data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM32X1S_1_inst instantiation

В отличие от предыдущих шаблонов описаний элементов распределенной оперативной памяти в составе интерфейса библиотечного примитива RAM32X1S_1, образующего
основу представленной конструкции, присутствует дополнительный адресный вход A4
в соответствии с емкостью этого компонента.
При практическом использовании шаблона 32 x 1 negedge write (RAM32X1S_1) следует
обратить внимание на то, что значения настраиваемого параметра INIT, определяющего начальное содержимое ячеек оперативной памяти, задаются в форме 8-разрядного
шестнадцатеричного числа.

На рис. 113 изображен условный графический образ элемента 1-портового ОЗУ
с информационной емкостью 32 бита и организацией 32 слова × 1 разряд, реализуемого
на основе таблиц преобразования LUT кристаллов программируемой логики семейства
Spartan-3.

Рис. 113. Условный графический образ 1-портового
ОЗУ (шаблон 32 x 1 negedge write (RAM32X1S_1))

32 x 1 posedge write (RAM32X1S) является шаблоном VHDL-описания элемента
1-портовой оперативной памяти с информационной емкостью 32 бита и организацией
32 слова × 1 разряд, предназначенного для
реализации на базе таблиц преобразования
ПЛИС семейства Spartan-3. Этот шаблон
отличается от предыдущего только отсутствием инверсии тактового сигнала. Запись
в элементы ОЗУ, описания которых создаются на основе библиотечного примитива
RAM32X1S, осуществляется по фронту сигнала синхронизации.

— RAM32X1S : 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 (RAM32X1S_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—- >
  — RAM32X1S: 32 x 1 posedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM32X1S_inst : RAM32X1S
generic map (
    INIT => X“00000000”
)
  port map (
    O => O, — RAM output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
A4 => A4, — RAM address[4] input
D => D, — RAM data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  End of RAM32X1S_inst instantiation

Условный графический образ элемента
1-портового распределенного ОЗУ с организацией 32 слова × 1 разряд, для формирования описания которого используется шаблон
32 x 1 posedge write (RAM32X1S), приведен
на рис. 114.

Рис. 114. Условный графический образ
1-портового распределенного ОЗУ
(шаблон 32 x 1 posedge write (RAM32X1S))

32 x 2 posedge write (RAM32X2S) представляет собой образец описания элемента
1-портового оперативного запоминающего устройства с информационной емкостью
64 бита и организацией 32 слова × 2 разряда,
реализуемого на базе ресурсов распределенной памяти кристаллов программируемой
логики семейства Spartan-3.

— RAM32X2S : 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 (RAM16X2S_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—- >
  — RAM32X2S: 32 x 2 posedge write distributed (LUT) RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM32X2S_inst : RAM32X2S
generic map (
    INIT_00 => X“00000000”, — INIT for bit 0 of RAM
INIT_01 => X“00000000”) — INIT for bit 1 of RAM
  port map (
    O0 => O0, — RAM data[0] output
O1 => O1, — RAM data[1] output
A0 => A0, — RAM address[0] input
A1 => A1, — RAM address[1] input
A2 => A2, — RAM address[2] input
A3 => A3, — RAM address[3] input
A4 => A4, — RAM address[4] input
D0 => D0, — RAM data[0] input
D1 => D1, — RAM data[1] input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM32X2S_inst instantiation

Основу приведенной конструкции образует оператор создания экземпляра библиотечного примитива RAM32X2S. В отличие от элементов оперативной памяти, формируемых
с помощью двух предыдущих шаблонов, для
инициализации содержимого ОЗУ, создаваемого на базе этого библиотечного компонента, необходимо определить значения двух настраиваемых параметров INIT_00 и INIT_01.
Значение каждого из этих параметров указывается в виде 8-разрядного шестнадцатеричного числа.

На рис. 115 показан условный графический
образ элемента 1-портового ОЗУ с информационной емкостью 32 бита и организацией
32 слова × 2 разряда, реализуемого на основе
таблиц преобразования LUT кристаллов программируемой логики семейства Spartan-3,
для подготовки описания которого используется шаблон 32 x 2 posedge write (RAM32X2S).

Рис. 115. Условный графический образ 1-портового
ОЗУ (шаблон 32 x 2 posedge write (RAM32X2S))

64 x 1 negedge write (RAM64X1S_1) включает в себя шаблон VHDL-описания элемента 1-портового ОЗУ с информационной
емкостью 64 бита и организацией 64 слова ×
1 разряд, синтезируемого на базе таблиц
преобразования ПЛИС семейства Spartan-3.
В качестве основы этого шаблона используется экземпляр библиотечного примитива
RAM64X1S_1. В элементах оперативной памяти, создаваемых на базе этого библиотечного компонента, запись данных в ячейки
осуществляется по спаду тактового сигнала.

— RAM64X1S_1 : 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 (RAM64X1S_1_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—- >
  RAM64X1S_1: 64 x 1 negative edge write, asynchronous read
single-port distributed RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM64X1S_1_inst : RAM64X1S_1
generic map (
    INIT => X“0000000000000000”)
  port map (
    O => O, — 1-bit data output
A0 => A0, — Address[0] input bit
A1 => A1, — Address[1] input bit
A2 => A2, — Address[2] input bit
A3 => A3, — Address[3] input bit
A4 => A4, — Address[4] input bit
A5 => A5, — Address[5] input bit
D => D, — 1-bit data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM64X1S_1_inst instantiation

Условный графический образ элемента
1-портового распределенного ОЗУ с организацией 64 слова × 1 разряд, формируемого с помощью шаблона 64 x 1 negedge write
(RAM64X1S_1)
, изображен на рис. 116.

Рис. 116. Условный графический образ 1-портового
ОЗУ (шаблон 64 x 1 negedge write (RAM64X1S_1))

64 x 1 posedge write (RAM64X1S) содержит
образец описания элемента 1-портового
ОЗУ с информационной емкостью 64 бита
и организацией 64 слова × 1 разряд, предназначенного для реализации на базе ресурсов
распределенной памяти кристаллов программируемой логики семейства Spartan-3. Этот
шаблон выполнен на основе библиотечного
примитива RAM64X1S, который отличается
от компонента RAM64X1S_1, рассмотренного выше, записью данных по фронту сигнала
синхронизации.

— RAM64X1S : 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 (RAM64X1S_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—- >
  — RAM64X1S: 64 x 1 positive edge write, asynchronous read singleport
distributed RAM
— Spartan-3
— Xilinx HDL Language Template, version 11.4
   
  RAM64X1S_inst : RAM64X1S
generic map (
    INIT => X“0000000000000000”)
  port map (
    O => O, — 1-bit data output
A0 => A0, — Address[0] input bit
A1 => A1, — Address[1] input bit
A2 => A2, — Address[2] input bit
A3 => A3, — Address[3] input bit
A4 => A4, — Address[4] input bit
A5 => A5, — Address[5] input bit
D => D, — 1-bit data input
WCLK => WCLK, — Write clock input
WE => WE — Write enable input
);
  — End of RAM64X1S_inst instantiation

На рис. 117 представлен условный графический образ элемента 1-портового ОЗУ
с информационной емкостью 64 бита, описание которого создается на основе шаблона
64 x 1 posedge write (RAM64X1S).

Рис. 117. Условный графический образ
распределенного 1-портового ОЗУ
(шаблон 64 x 1 posedge write (RAM64X1S))

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

Литература

  1. Кузелин М. О., Кнышев Д. А., Зотов В. Ю.
    Современные семейства ПЛИС фирмы Xilinx.
    Справочное пособие. М.: Горячая линия –
    Телеком, 2004.
  2. Бибило П. Н. Основы языка VHDL. М.: Солон-Р,
    2000.
  3. Бибило П. Н. Синтез логических схем с использованием языка VHDL. М.: Солон-Р, 2002.
  4. Уэйкерли Дж. Ф. Проектирование цифровых
    устройств. Т. 1. М.: Постмаркет, 2002.
  5. Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. М.: СолонПресс, 2003.
  6. Зотов В. Инструментальный комплект Spartan-3
    Starter Kit для практического освоения методов
    проектирования встраиваемых микропроцессорных систем на основе ПЛИС семейств FPGA
    фирмы Xilinx // Компоненты и технологии.
    2005. № 7.
  7. Зотов В. Новый инструментальный комплект
    Spartan-3E Starter Kit для практического освоения методов проектирования встраиваемых
    микропроцессорных систем на основе ПЛИС
    семейств FPGA фирмы Xilinx // Компоненты
    и технологии. 2006. № 10.
  8. Зотов В. Новый инструментальный комплект
    Spartan-3A Starter Kit для практического освоения
    методов проектирования и отладки цифровых
    устройств с аппаратной и программной реализацией операций, реализуемых на основе ПЛИС
    семейств FPGA фирмы Xilinx // Компоненты
    и технологии. 2007. № 9.
  9. Зотов В. Новый инструментальный комплект
    от компании Avnet на основе ПЛИС FPGA семейства Spartan-3A фирмы Xilinx//Компоненты
    и технологии. 2008. № 8.
  10. Зотов В. Инструментальный модуль компании Avnet для отладки проектов встраиваемых систем, разрабатываемых на базе
    нового семейства ПЛИС FPGA фирмы Xilinx
    Virtex-5 FXT // Компоненты и технологии.
    2008. № 9.
  11. Зотов В. Особенности архитектуры нового поколения высокопроизводительных ПЛИС FPGA
    фирмы Xilinx серии Virtex-6 // Компоненты
    и технологии. 2009. № 8.
  12. Зотов В. Особенности архитектуры нового
    поколения ПЛИС FPGA фирмы Xilinx серии
    Spartan-6 // Компоненты и технологии. 2009.
    № 9.
  13. Зотов В. Новое семейство высокопроизводительных ПЛИС с архитектурой FPGA фирмы Xilinx Virtex-6 HXT // Компоненты и технологии. 2010. № 1.
  14. IEEE Standard VHDL Language Reference Manual.
    IEEE Std 1076-2002.
  15. Суворова Е. А., Шейнин Ю. Е. Проектирование
    цифровых систем на VHDL. СПб.: БХВ-Петербург, 2003.
  16. Сергиенко A. M. VHDL для проектирования
    вычислительных устройств. Киев: ЧП «Корнейчук», ООО «ТИД «ДС», 2003.
  17. Зотов В. Проектирование цифровых устройств,
    реализуемых на базе ПЛИС FPGA фирмы Xilinx,
    с использованием средств CORE Generator //
    Компоненты и технологии. 2006. № 12. 2007. № 1.
  18. Зотов В. Разработка компонентов устройств
    цифровой обработки сигналов, реализуемых
    на базе аппаратных модулей DSP48E в ПЛИС
    FPGA серии Virtex-5, с помощью «мастера»
    Architecture Wizard САПР серии Xilinx ISE //
    Компоненты и технологии. 2008. № 12. 2009.
    № 1–7.
  19. Spartan-3 Generation FPGA User Guide. Xilinx,
    2009.
  20. Spartan-3 FPGA Family: Complete Data Sheet.
    Xilinx, 2009.
  21. Spartan-3 Generation Configuration User Guide.
    Xilinx, 2009.

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

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