Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2010 №11

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

Зотов Валерий


Десятая часть статьи продолжает обзор шаблонов VHDL-описаний двухпортовых ОЗУ, выполняемых на основе ресурсов блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3. В этой части рассматриваются образцы описаний элементов оперативной памяти, в которых два порта предоставляют возможность одновременной работы с различной разрядностью слов данных.

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

16к/4к х 1/4 (RAMB16_S1_S4) является образцом VHDL-описания варианта конфигурирования модуля блочной памяти ПЛИС семейства Spartan-3 в виде элемента 2-портового ОЗУ с организацией первого и второго порта 16 384 слова х 1 разряд и 4096 слов х 4 разряда соответственно. Этот шаблон выполнен на основе использования библиотечного примитива RAMB16_S1_S4:

-- RAMB16_S1_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 : (RAMB16_S1_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_S1_S4: 16k/4k x 1/4 Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S1_S4_inst : RAMB16_S1_S4
generic map (
INIT_A => "0", -- Value of output RAM registers on Port A
at startup
INIT_B => X"0", -- Value of output RAM registers on Port B
at startup
SRVAL_A => "0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"0", -- Port B ouput 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 4095, Port B Address 0 to 1023
INIT_00 => X"0000000000000000000000000000000000000000000
000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
000000000",
-- Port A Address 4096 to 8191, Port B Address 1024 to 2047
INIT_10 => X"0000000000000000000000000000000000000000000
000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
000000000",
-- Port A Address 8192 to 12287, Port B Address 2048 to 3071
INIT_20 => X"0000000000000000000000000000000000000000000
000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
000000000",
-- Port A Address 12288 to 16383, Port B Address 3072 to 4095
INIT_30 => X"0000000000000000000000000000000000000000000
000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
000000000")
port map (
DOA => DOA, -- Port A 1-bit Data Output
DOB => DOB, -- Port B 4-bit Data Output
ADDRA => ADDRA, -- Port A 14-bit Address Input
ADDRB => ADDRB, -- Port B 12-bit Address Input
CLKA => CLKA, -- Port A Clock
CLKB => CLKB, -- Port B Clock
DIA => DIA, -- Port A 1-bit Data Input

DIB => DIB, -- Port B 4-bit Data Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S1_S4_inst instantiation

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

Условный графический образ элемента двухпортового ОЗУ с организацией портов 16 384 слова х 1 разряд и 4096 слов х 4 разряда, описание которого создается с помощью шаблона 16k/4k x 1/4 (RAMB16_S1_S4), изображен на рис. 89.

Условный графический образ 2хпортового ОЗУ, формируемого на основе шаблона 16k/4k x 1/4 (RAMB16_S1_S4)

Рис. 89. Условный графический образ 2хпортового ОЗУ, формируемого на основе шаблона 16k/4k x 1/4 (RAMB16_S1_S4)

16k/512 x 1/32 + 0/4 Parity bits (RAMB16_S1_ S36) представляет собой шаблон описания элемента 2-портового ОЗУ с различной организацией портов — 16 384 слова х 1 разряд и 512 слов х 32 разряда, реализуемого на базе модуля блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3. Второй порт указанного элемента оперативной памяти поддерживает выполнение операций записи и чтения данных с использованием контроля четности:

-- RAMB16_S1_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_S1_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_S1_S36: 16k/512 x 1/32 + 0/4 Parity bits Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S1_S36_inst : RAMB16_S1_S36
generic map (
INIT_A => "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 => "0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"000000000", -- Port B ouput 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 4095, Port B Address 0 to 127
INIT_00 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
00000000000",

-- Port A Address 4096 to 8191, Port B Address 128 to 255
INIT_10 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
00000000000",
-- Port A Address 8192 to 12287, Port B Address 256 to 383
INIT_20 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
00000000000",
-- Port A Address 12288 to 16383, Port B Address 384 to 512
INIT_30 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
00000000000",
-- The next set of INITP_xx are for the parity bits
--Port B Address 0 to 127
INITP_00 => X"000000000000000000000000000000000000000000
00000000000",
INITP_01 => X"000000000000000000000000000000000000000000
00000000000",
-- Port B Address 128 to 255
INITP_02 => X"000000000000000000000000000000000000000000
00000000000",
INITP_03 => X"000000000000000000000000000000000000000000
00000000000",
-- Port B Address 256 to 383
INITP_04 => X"000000000000000000000000000000000000000000
00000000000",
INITP_05 => X"000000000000000000000000000000000000000000
00000000000",
-- Port B Address 384 to 512
INITP_06 => X"000000000000000000000000000000000000000000
00000000000",
INITP_07 => X"000000000000000000000000000000000000000000
00000000000")
port map (
DOA => DOA, -- Port A 1-bit Data Output
DOB => DOB, -- Port B 32-bit Data Output
DOPB => DOPB, -- Port B 4-bit Parity Output
ADDRA => ADDRA, -- Port A 14-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 1-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, -- PortB 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_S1_S36_inst instantiation

Основу представленного шаблона образует оператор создания экземпляра библиотечного элемента RAMB16_S1_S36. При практическом использовании этой конструкции нужно обратить внимание на то, что в отличие от шаблона 16k/4k x 1/4 (RAMB16_S1_S4), рассмотренного выше, разрядность входной и выходной шин данных второго порта составляет 32 бита, а разрядность шины адреса — 9 бит. Кроме того, второй порт включает в себя дополнительные 4-разрядные шины данных (входную и выходную), предназначенные для осуществления контроля четности.

На рис. 90 приведен условный графический образ элемента 2-портового оперативного запоминающего устройства с информационной емкостью 16 384 бита и организацией портов 16 384 слова х 1 разряд и 512 слов х 32 разряда, формируемого с помощью шаблона 16k/512 x 1/32 + 0/4 Parity bits (RAMB16_S1_S36).

Условный графический образ

Рис. 90. Условный графический образ

16k/8k x 1/2 (RAMB16_S1_S2) включает в себя образец описания элемента 2-портовой оперативной памяти информационной емкостью 16 384 бита с организацией портов 16 384 слова х 1 разряд и 8192 слова х 2 разряда. Данный шаблон выполнен на основе использования библиотечного примитива RAMB16_S1_S2, который представляет соответствующий вариант конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3:

-- RAMB16_S1_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 : (RAMB16_S1_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_S1_S2: 16k/8k x 1/2 Dual-Port RAM

-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S1_S2_inst : RAMB16_S1_S2
generic map (
INIT_A => "0", -- Value of output RAM registers on Port A
at startup
INIT_B => X"0", -- Value of output RAM registers on Port B
at startup
SRVAL_A => "0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"0", -- Port B ouput 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 4095, Port B Address 0 to 2047
INIT_00 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
00000000000",
-- Port A Address 4096 to 8191, Port B Address 2048 to 4095
INIT_10 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
00000000000",
--Port A Address 8192 to 12287, Port B Address 4095 to 6143
INIT_20 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
00000000000",
-- Port A Address 12288 to 16383, Port B Address 6144 to 8091
INIT_30 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
00000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
00000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
00000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
00000000000")
port map (
DOA => DOA, -- Port A 1-bit Data Output
DOB => DOB, -- Port B 2-bit Data Output
ADDRA => ADDRA, -- Port A 14-bit Address Input
ADDRB => ADDRB, -- Port B 13-bit Address Input
CLKA => CLKA, -- Port A Clock
CLKB => CLKB, -- Port B Clock
DIA => DIA, -- Port A 1-bit Data Input
DIB => DIB, -- Port B 2-bit Data Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S1_S2_inst instantiation

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

Условный графический образ элемента 2-портового ОЗУ с организацией портов 16 384 слова х 1 разряд и 8192 слова х 2 разряда, для подготовки описания которого используется шаблон 16k/8k x 1/2 (RAMB16_S1_S2), показан на рис. 91.

Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 16k/8k x 1/2 (RAMB16_S1_S2)

Рис. 91. Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 16k/8k x 1/2 (RAMB16_S1_S2)

2k/1k x 8/16 +12 Parity bits (RAMB16_S9_S18) содержит шаблон VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3 в виде элемента 2-портового ОЗУ с организацией портов 2048 слов х 8 разрядов и 1024 слова х 16 разрядов. Каждый порт элемента оперативной памяти, формируемого с помощью этого шаблона, поддерживает возможность выполнения операций с использованием контроля четности:

-- RAMB16_S9_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 : (RAMB16_S9_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_S9_S18: 2k/1k x 8/16 + 1/2 Parity bits Parity bits Dual-Port
RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S9_S18_inst : RAMB16_S9_S18
generic map (
INIT_A => X"000", -- Value of output RAM registers on
Port A at startup
INIT_B => X"00000", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"000", -- Port A ouput value upon SSR
assertion

SRVAL_B => X"00000", -- Port B ouput 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 511, Port B Address 0 to 255
INIT_00 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 512 to 1023, Port B Address 256 to 511
INIT_10 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1024 to 1535, Port B Address 512 to 767
INIT_20 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1536 to 2047, Port B Address 768 to 1024
INIT_30 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
000000000000",
-- The next set of INITP_xx are for the parity bits
-- Port A Address 0 to 511, Port B Address 0 to 255
INITP_00 => X"000000000000000000000000000000000000000000
000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 512 to 1023, Port B Address 256 to 511
INITP_02 => X"000000000000000000000000000000000000000000
000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1024 to 1535, Port B Address 512 to 767
INITP_04 => X"000000000000000000000000000000000000000000
000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1536 to 2047, Port B Address 768 to 1024
INITP_06 => X"000000000000000000000000000000000000000000
000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
000000000000")
port map (
DOA => DOA, -- Port A 8-bit Data Output
DOB => DOB, -- Port B 16-bit Data Output
DOPA => DOPA, -- Port A 1-bit Parity Output
DOPB => DOPB, -- Port B 2-bit Parity Output
ADDRA => ADDRA, -- Port A 11-bit Address Input
ADDRB => ADDRB, -- Port B 10-bit Address Input
CLKA => CLKA, -- Port A Clock
CLKB => CLKB, -- Port B Clock
DIA => DIA, -- Port A 8-bit Data Input
DIB => DIB, -- Port B 16-bit Data Input
DIPA => DIPA, -- Port A 1-bit parity Input
DIPB => DIPB, -- Port-B 2-bit parity Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S9_S18_inst instantiation

Основу представленного шаблона образует оператор создания экземпляра библиотечного компонента RAMB16_S9_S18. В элементах ОЗУ, формируемых на базе этого компонента, разрядность входной и выходной шин данных первого порта составляет 8 бит, а второго порта — 16 бит. Кроме того, первый порт содержит дополнительные вход и выход, которые предназначены для организации контроля четности, а в составе второго порта для этой цели предусмотрены дополнительные двухразрядные шины данных. При этом шина адреса первого порта содержит 11 двоичных разрядов, а второго — 10 разрядов.

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

Условный графический образ 2хпортового ОЗУ, формируемого на основе шаблона 2k/1k x 8/16 + 1/2 Parity bits (RAMB16_S9_S18)

Рис. 92. Условный графический образ 2хпортового ОЗУ, формируемого на основе шаблона 2k/1k x 8/16 + 1/2 Parity bits (RAMB16_S9_S18)

2k/512 x 8/32 +1/4 Parity bits (RAMB16_S9_S36) представляет собой шаблон описания элемента 2-портовой оперативной памяти информационной емкостью 16 384 бита с организацией портов 2048 слов х 8 разрядов и 512 слов х 32 разряда и дополнительным объемом 2048 бит, необходимым для осуществления контроля четности загружаемых и считываемых данных. Основой этого шаблона является экземпляр библиотечного примитива RAMB16_S9_S36, который представляет соответствующий вариант конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3:

-- RAMB16_S9_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_S9_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_S9_S36: 2k/512 x 8/32 + 1/4 Parity bits Parity bits Dual-
Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S9_S36_inst : RAMB16_S9_S36
generic map (
INIT_A => X"000", -- 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"000", -- Port A ouput value upon SSR
assertion
SRVAL_B => X"000000000", -- Port B ouput 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 511, Port B Address 0 to 127
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 512 to 1023, Port B Address 128 to 255
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1024 to 1535, Port B Address 255 to 383
INIT_20 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1536 to 2047, Port B Address 384 to 511
INIT_30 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
0000000000000",
-- The next set of INITP_xx are for the parity bits

-- Port A Address 0 to 511, Port B Address 0 to 127
INITP_00 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 512 to 1023, Port B Address 128 to 255
INITP_02 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1024 to 1535, Port B Address 256 to 383
INITP_04 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1536 to 2047, Port B Address 384 to 511
INITP_06 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
0000000000000")
port map (
DOA => DOA, -- Port A 8-bit Data Output
DOB => DOB, -- Port B 32-bit Data Output
DOPA => DOPA, -- Port A 1-bit Parity Output
DOPB => DOPB, -- Port B 4-bit Parity Output
ADDRA => ADDRA, -- Port A 11-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 8-bit Data Input
DIB => DIB, -- Port B 32-bit Data Input
DIPA => DIPA, -- Port A 1-bit parity Input
DIPB => DIPB, -- Port-B 4-bit parity Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S9_S36_inst instantiation

Основные отличия приведенной конструкции от предыдущего шаблона проявляются в разрядности входной и выходной шин данных, а также шины адреса второго порта. Основные шины данных второго порта (входная и выходная) содержат 32 двоичных разряда, а шина адреса — 9 разрядов. Для организации контроля четности в составе второго порта используются дополнительные 4-разрядные входная и выходная шины данных.

На рис. 93 представлен условный графический образ элемента 2-портового ОЗУ с организацией портов 2048 слов х 8 разрядов и 512 слов х 32 разряда и поддержкой контроля четности записываемых и считываемых данных, для подготовки описания которого используется шаблон 2k/512 x 8/32 + 1/4 Parity bits (RAMB16_S9_S36).

Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 2k/512 x 8/32 + 1/4 Parity bits (RAMB16_S9_S36)

Рис. 93. Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 2k/512 x 8/32 + 1/4 Parity bits (RAMB16_S9_S36)

4k/1k x 4/16 + 0/2 Parity bits (RAMB16_S4_S18) представляет образец VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3 в виде элемента 2-портовой памяти с различной организацией портов: 4096 слов х 4 разряда и 1024 слова х 16 разрядов. При этом второй порт формируемого ОЗУ поддерживает возможность реализации операций с использованием контроля четности:

-- RAMB16_S4_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 : (RAMB16_S4_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_S4_S18: 4k/1k x 4/16 + 0/2 Parity bits Dual-Port
RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S4_S18_inst : RAMB16_S4_S18
generic map (
INIT_A => X"0", -- Value of output RAM registers on
Port A at startup
INIT_B => X"00000", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"00000", -- Port B ouput 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 1023, Port B Address 0 to 255
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1024 to 2047, Port B Address 256 to 511
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 3071, Port B Address 512 to 767
INIT_20 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 3072 to 4095, Port B Address 768 to 1023
INIT_30 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
0000000000000",
-- The next set of INITP_xx are for the parity bits
-- Port A Address 0 to 1023, Port B Address 0 to 255
INITP_00 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1024 to 2047, Port B Address 256 to 511
INITP_02 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 3071, Port B Address 512 to 767
INITP_04 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 3072 to 4095, Port B Address 768 to 1023
INITP_06 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
0000000000000")
port map (
DOA => DOA, -- Port A 4-bit Data Output
DOB => DOB, -- Port B 16-bit Data Output
DOPB => DOPB, -- Port B 2-bit Parity Output
ADDRA => ADDRA, -- Port A 12-bit Address Input
ADDRB => ADDRB, -- Port B 10-bit Address Input
CLKA => CLKA, -- Port A Clock
CLKB => CLKB, -- Port B Clock
DIA => DIA, -- Port A 4-bit Data Input
DIB => DIB, -- Port B 16-bit Data Input
DIPB => DIPB, -- Port-B 2-bit parity Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S4_S18_inst instantiation

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

На рис. 94 приведен условный графический образ элемента 2-портовой оперативной памяти с организацией портов 4096 слов х 4 разряда и 1024 слова х 16 разрядов, описание которого формируется с помощью шаблона 4k/1k x 4/16 + 0/2 Parity bits (RAMB16_S4_S18).

Условный графический образ элемента 2хпортового ОЗУ, создаваемого с помощью шаблона 4k/1k x 4/16 + 0/2 Parity bits (RAMB16_S4_S18)

Рис. 94. Условный графический образ элемента 2хпортового ОЗУ, создаваемого с помощью шаблона 4k/1k x 4/16 + 0/2 Parity bits (RAMB16_S4_S18)

4k/2k x 4/8 + 0/1 Parity bit (RAMB16_S4_S9) включает в себя конструкцию, предназначенную для подготовки VHDL-описания варианта конфигурирования модуля блочной памяти в кристаллах программируемой логики семейства Spartan-3 в виде элемента 2-портового ОЗУ, в котором первый порт имеет организацию 4096 слов х 4 разряда, а второй — 2048 слов х 8 разрядов:

-- RAMB16_S4_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 : (RAMB16_S4_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_S4_S9: 4k/2k x 4/8 + 0/1 Parity bit Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--

RAMB16_S4_S9_inst : RAMB16_S4_S9
generic map (
INIT_A => X"0", -- Value of output RAM registers on
Port A at startup
INIT_B => X"000", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"000", -- Port B ouput 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 1023, Port B Address 0 to 511
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 1024 to 2047, Port B Address 512 to 1023
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 3071, Port B Address 1024 to 1535
INIT_20 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 3072 to 4095, Port B Address 1536 to 2047
INIT_30 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
0000000000000",
-- The next set of INITP_xx are for the parity bits
-- Port B Address 0 to 511
INITP_00 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port B Address 512 to 1023
INITP_02 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port B Address 1024 to 1535
INITP_04 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port B Address 1536 to 2047
INITP_06 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
0000000000000")
port map (
DOA => DOA, -- Port A 4-bit Data Output
DOB => DOB, -- Port B 8-bit Data Output
DOPB => DOPB, -- Port B 1-bit Parity Output
ADDRA => ADDRA, -- Port A 12-bit Address Input
ADDRB => ADDRB, -- Port B 11-bit Address Input
CLKA => CLKA, -- Port A Clock
CLKB => CLKB, -- Port B Clock
DIA => DIA, -- Port A 4-bit Data Input
DIB => DIB, -- Port B 8-bit Data Input
DIPB => DIPB, -- Port-B 1-bit parity Input

ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S4_S9_inst instantiation

Представленный шаблон выполнен на основе библиотечного примитива RAMB16_S4_S9, для второго порта которого предусмотрена поддержка операций с применением контроля четности. В приведенной конструкции, в отличие от предыдущего шаблона, в составе второго порта представлены основные 8-разрядные информационные шины и дополнительные вход и выход данных, предназначенные для реализации контроля четности. Шина адреса второго порта содержит 11 двоичных разрядов.

Условный графический образ элемента 2-портового ОЗУ с организацией портов 4096 слов х 4 разряда и 2048 слов х 8 разрядов, описание которого формируется с помощью шаблона 4k/2k x 4/8 + 0/1 Parity bit (RAMB16_S4_S9), показан на рис. 95.

Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 4k/2k x 4/8 + 0/1 Parity bit (RAMB16_S4_S9)

Рис. 95. Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 4k/2k x 4/8 + 0/1 Parity bit (RAMB16_S4_S9)

4k/512 x 4/32 + 0/4 Parity bits (RaMB16_S4_S36) содержит образец описания варианта конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3 в виде элемента 2-портового ОЗУ с различной организацией портов — 4096 слов х 4 разряда и 512 слов х 32 разряда. В элементах 2-портовой памяти, формируемых на основе этого шаблона, второй порт способен поддерживать выполнение операций записи и чтения данных с использованием контроля четности:

-- RAMB16_S4_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_S4_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_S4_S36: 4k/512 x 4/32 + 0/4 Parity bits Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S4_S36_inst : RAMB16_S4_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 ouput value upon SSR assertion
SRVAL_B => X"000000000", -- Port B ouput 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 1023, Port B Address 0 to 127
INIT_00 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1024 to 2047, Port B Address 128 to 255
INIT_10 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 2048 to 3071, Port B Address 256 to 383
INIT_20 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 3072 to 4095, Port B Address 384 to 511
INIT_30 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
000000000000",
-- The next set of INITP_xx are for the parity bits

-- Port A Address 0 to 1023, Port B Address 0 to 127
INITP_00 => X"000000000000000000000000000000000000000000
000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 1024 to 2047, Port B Address 128 to 255
INITP_02 => X"000000000000000000000000000000000000000000
000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 2048 to 3071, Port B Address 256 to 383
INITP_04 => X"000000000000000000000000000000000000000000
000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
000000000000",
-- Port A Address 3072 to 4095, Port B Address 384 to 511
INITP_06 => X"000000000000000000000000000000000000000000
000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
000000000000")
port map (
DOA => DOA, -- Port A 4-bit Data Output
DOB => DOB, -- Port B 32-bit Data Output
DOPB => DOPB, -- Port B 4-bit Parity Output
ADDRA => ADDRA, -- Port A 12-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 4-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, -- PortB 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_S4_S36_inst instantiation

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

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

Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 4k/512 x 4/32 + 0/4 Parity bits (RAMB16_S4_S36)

Рис. 96. Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 4k/512 x 4/32 + 0/4 Parity bits (RAMB16_S4_S36)

8k/1k x 2/16 + 0/2 Parity bits (RAMB16_S2_S18) представляет собой шаблон описания элемента 2-портовой оперативной памяти информационной емкостью 16 384 бита с организацией портов 8192 слова х 2 разряда и 1024 слова х 16 разрядов и дополнительным объемом 2048 бит, предназначенным для выполнения операций с использованием контроля четности данных. Основой этого шаблона является экземпляр библиотечного примитива RAMB16_S2_S18, который соответствует указанному варианту конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3:

-- RAMB16_S2_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 : (RAMB16_S2_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_S2_S18: 8k/1k x 2/16 + 0/2 Parity bit Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S2_S18_inst : RAMB16_S2_S18
generic map (
INIT_A => X"0", -- Value of output RAM registers on
Port A at startup
INIT_B => X"000", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"000", -- Port B ouput 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 255
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 4095, Port B Address 256 to 511
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 4096 to 6143, Port B Address 512 to 767
INIT_20 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
000000000000",
-- Port A Address 6144 to 8191, Port B Address 768 to 1023
INIT_30 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
000000000000",
-- The next set of INITP_xx are for the parity bits
-- Port B Address 0 to 255
INITP_00 => X"000000000000000000000000000000000000000000
000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
000000000000",
-- Port B Address 256 to 511
INITP_02 => X"000000000000000000000000000000000000000000
000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
000000000000",
-- Port B Address 512 to 767
INITP_04 => X"000000000000000000000000000000000000000000
000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
000000000000",
-- Port B Address 768 to 1023
INITP_06 => X"000000000000000000000000000000000000000000
000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
000000000000")
port map (
DOA => DOA, -- Port A 2-bit Data Output
DOB => DOB, -- Port B 16-bit Data Output
DOPB => DOPB, -- Port B 2-bit Parity Output
ADDRA => ADDRA, -- Port A 13-bit Address Input
ADDRB => ADDRB, -- Port B 10-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 16-bit Data Input
DIPB => DIPB, -- Port-B 2-bit parity Input
ENA => ENA, -- Port A RAM Enable Input
ENB => ENB, -- PortB 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_S18_inst instantiation

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

Условный графический образ элемента 2-портового ОЗУ с организацией портов 8192 слова х 2 разряда и 1024 слова х 16 разрядов, описание которого создается с помощью шаблона 8k/1k x 2/16 + 0/2 Parity bits (RAMB16_S2_S18), изображен на рис. 97.

Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 8k/1k x 2/16 + 0/2 Parity bits (RAMB16_S2_S18)

Рис. 97. Условный графический образ 2хпортового ОЗУ, формируемого с помощью шаблона 8k/1k x 2/16 + 0/2 Parity bits (RAMB16_S2_S18)

8k/2k x 2/8 + 0/1 Parity bit (RAMB16_S2_S9) является образцом VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3 в виде элемента 2-портового ОЗУ с организацией первого и второго порта 8192 слова х 2 разряда и 2048 слов х 8 разрядов соответственно. В основе этого шаблона лежит использование библиотечного примитива RAMB16_S2_S9, поддерживающего возможность выполнения операций записи и чтения данных с применением контроля четности для второго порта:

-- RAMB16_S2_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 : (RAMB16_S2_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_S2_S9: 8k/2k x 2/8 + 0/1 Parity bit Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
--
RAMB16_S2_S9_inst : RAMB16_S2_S9
generic map (

INIT_A => X"0", -- Value of output RAM registers on
Port A at startup
INIT_B => X"000", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"0", -- Port A output value upon SSR
assertion
SRVAL_B => X"000", -- 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 511
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 4095, Port B Address 512 to 1023
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 4096 to 6143, Port B Address 1024 to 1535
INIT_20 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 6144 to 8191, Port B Address 1536 to 2047
INIT_30 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
0000000000000",
-- The next set of INITP_xx are for the parity bits
-- Port B Address 0 to 511
INITP_00 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_01 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port B Address 512 to 1023
INITP_02 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_03 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port B Address 1024 to 1535
INITP_04 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_05 => X"000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 6144 to 8191, Port B Address 1536 to 2047
INITP_06 => X"000000000000000000000000000000000000000000
0000000000000",
INITP_07 => X"000000000000000000000000000000000000000000
0000000000000")
port map (
DOA => DOA, -- Port A 2-bit Data Output
DOB => DOB, -- Port B 8-bit Data Output
DOPB => DOPB, -- Port B 1-bit Parity Output
ADDRA => ADDRA, -- Port A 13-bit Address Input
ADDRB => ADDRB, -- Port B 11-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 8-bit Data Input
DIPB => DIPB, -- Port-B 1-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_S9_inst instantiation

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

На рис. 98 показан условный графический образ элемента 2-портового ОЗУ с организацией портов 8192 слова х 2 разряда и 2048 слов х 8 разрядов, для подготовки описания которого используется шаблон 8k/2k x 2/8 + 0/1 Parity bit (RAMB16_S2_S9).

Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 8k/2k x 2/8 + 0/1 Parity bit (RAMB16_S2_S9)

Рис. 98. Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 8k/2k x 2/8 + 0/1 Parity bit (RAMB16_S2_S9)

8k/4k x 2/4 (RAMB16_S2_S4) представляет шаблон VHDL-описания варианта конфигурирования модуля блочной памяти Block RAM кристаллов программируемой логики семейства Spartan-3 в виде элемента 2-портового оперативного запоминающего устройства емкостью 16 384 бита с различной организацией портов: 8192 слова х 2 разряда и 4096 слов х 4 разряда:

-- RAMB16_S2_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 : (RAMB16_S2_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_S2_S4: 8k/4k x 2/4 Dual-Port RAM
-- Spartan-3
-- Xilinx HDL Language Template, version 11.4
RAMB16_S2_S4_inst : RAMB16_S2_S4
generic map (
INIT_A => X"0", -- Value of output RAM registers on
Port A at startup
INIT_B => X"0", -- Value of output RAM registers on
Port B at startup
SRVAL_A => X"0", -- Port A ouput value upon SSR assertion
SRVAL_B => X"0", -- Port B ouput 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 1023
INIT_00 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_01 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_02 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_0E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_0F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 2048 to 4095, Port B Address 1024 to 2047
INIT_10 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_11 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_12 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_1E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_1F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 4096 to 6143, Port B Address 2048 to 3071
INIT_20 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_21 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_22 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_2E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_2F => X"0000000000000000000000000000000000000000000
0000000000000",
-- Port A Address 6144 to 8191, Port B Address 3072 to 4095
INIT_30 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_31 => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_32 => X"0000000000000000000000000000000000000000000
0000000000000",

INIT_3E => X"0000000000000000000000000000000000000000000
0000000000000",
INIT_3F => X"0000000000000000000000000000000000000000000
0000000000000")
port map (
DOA => DOA, -- Port A 2-bit Data Output
DOB => DOB, -- Port B 4-bit Data Output
ADDRA => ADDRA, -- Port A 13-bit Address Input
ADDRB => ADDRB, -- Port B 12-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 4-bit Data 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_S4_inst instantiation

Основу этого шаблона образует оператор создания экземпляра библиотечного элемента RAMB16_S2_S4, который представляет указанный выше вариант конфигурирования модуля блочной памяти Block RAM ПЛИС семейства Spartan-3. При практическом использовании шаблона 8k/4k x 2/4 (RAMB16_S2_S4) нужно учитывать, что, в отличие от предыдущих двух конструкций, в составе второго порта библиотечного элемента оперативной памяти представлены входная и выходная 4-разрядные шины данных и 12-разрядная шина адреса.

Условный графический образ элемента 2-портового ОЗУ с организацией портов 8192 слова х 2 разряда и 4096 слов х 4 разряда, для подготовки описания которого используется шаблон 8k/4k x 2/4 (RAMB16_S2_S4), показан на рис. 99.

Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 8k/4k x 2/4 (RAMB16_S2_S4)

Рис. 99. Условный графический образ элемента 2хпортового ОЗУ, формируемого с помощью шаблона 8k/4k x 2/4 (RAMB16_S2_S4)

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

Литература

  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, 4-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.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке