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

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

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

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

В девятнадцатой части статьи мы продолжим изучение образцов VHDLописаний элементов, выполненных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT [22-32]. Представлена подробная информация о шаблонах описаний элементов блочной и распределенной оперативной памяти, схемы ускоренного переноса и пятивходовых функциональных генераторов, конфигурируемых на базе таблиц преобразования LUT ПЛИС указанных семейств.

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

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

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

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

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

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

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

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

walerry@km.ru

В девятнадцатой части статьи мы продолжим изучение образцов VHDL-описаний элементов, выполненных на основе экземпляров библиотечных примитивов, реализуемых на базе соответствующих аппаратных ресурсов кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT [22—32]. Представлена подробная информация о шаблонах описаний элементов блочной и распределенной оперативной памяти, схемы ускоренного переноса и пятивходовых функциональных генераторов, конфигурируемых на базе таблиц преобразования LUT ПЛИС указанных семейств.

8k-bit Data and 1k-bit Parity Configurable Synchronous Block RAM (RAMB8BWER) является шаблоном параметризированного варианта описания 2-портового ОЗУ информационной емкостью 8192 бита, с программируемой организацией каждого порта, возможностью использования выходных регистров, контролем четности и поддержкой режима побайтной записи. Этот шаблон предназначен для реализации на основе модуля блочной памяти ПЛИС серии Spartan-6. Каждый модуль блочной памяти Block RAM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT можно конфигурировать не только в форме 2-портового ОЗУ емкостью 18 кбит, но и в виде двух независимых элементов оперативных запоминающих устройств объемом 9 кбит каждый [27]. При этом предоставляется возможность формирования элементов 2-портовой оперативной памяти как с раздельными портами записи и чтения данных, так и с универсальными портами, каждый из которых поддерживает выполнение операций записи и чтения информации. Шаблон 8k-bit Data and 1k-bit Parity Configurable Synchronous Block RAM (RAMB8BWER) охватывает все возможные варианты конфигурирования модуля блочной памяти в виде элементов 2-портовых ОЗУ объемом 9 кбит:

- RAMB8BWER : In order to incorporate this function into the design, -- VHDL : the following instance declaration needs to be placed

-- instance : in the body of the design code. The instance name

- declaration : (RAMB8BWER_inst) and/or the port declarations after the -- code : "=>" declaration maybe changed to properly reference and -- : connect this function to the design. All inputs and outputs

-- : must be connected.

-- Library : In addition to adding the instance declaration, a use

— declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library

-- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

- RAMB8BWER: 8k-bit Data and lk bit Parity Configurable Synchronous Block RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAMB8BWER_inst : RAMB8BWER generic map (

-- DATA_WIDTH_A/DATA_WIDTH_B: 'If RAM_ MODE="TDP": 0, 1, 2, 4, 9 or 18; If RAM_MODE="SDP": 36' DATA_WIDTH_A => 0, DATA_WIDTH_B => 0, -- DOA_REG/DOB_REG: Optional output register (0 or 1) DOA_REG => 0, DOB_REG => 0, -- EN_RSTRAM_A/EN_RSTRAM_B: Enable/disable RST EN_RSTRAM_A => TRUE, EN_RSTRAM_B => TRUE, -- INITP_00 to INITP_03: Initial memory contents. INITP_00=> X"0000000000000000000000000000000000000000", INITP_01=> X"0000000000000000000000000000000000000000",

-- INIT_00 to INIT_1F: Initial memory contents. INIT_00 => X"00000000000000000000000000000000000000000", INIT_01 => X"00000000000000000000000000000000000000000",

INIT_1E => X"00000000000000000000000000000000000000000", INIT_1F=> X"00000000000000000000000000000000000000000", -- INIT_A/INIT_B: Initial values on output port INIT_A => X"00000", INIT_B => X"00000", -- INIT_FILE: Not Supported

INIT_FILE => "NONE", Do not modify -- RAM_MODE: "SDP" or "TDP"

RAM_MODE => "TDP", -- RSTTYPE: "SYNC" or "ASYNC"

RSTTYPE => "SYNC", -- RST_PRIORITY_A/RST_PRIORITY_B: "CE" or "SR" RST_PRIORITY_A => "CE", RST_PRIORITY_B => "CE", -- SIM_COLLISION_CHECK: Collision check enable "ALL", "WARNING_ONLY", "GENERATE_X_ONLY" or "NONE"

SIM_COLLISION_CHECK => "ALL", -- SRVAL_A/SRVAL_B: Set/Reset value for RAM output SRVAL_A => X"00000", SRVAL_B => X"00000", -- WRITE_MODE_A/WRITE_MODE_B: "WRITE_FIRST", "READ_FIRST", or "NO_CHANGE"

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

)

port map (

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

output

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

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

output

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

-- Port A Address/Control Signals: 13-bit (each) input Port A address and control signals (write port -- when RAM_MODE="SDP") ADD RAWRADD R => ADDRAWRADDR, -- 13-bit input A port address/Write address input

CLKAWRCLK => CLKAWRCLK, -- 1-bit input A port clock/Write clock input

ENAWREN => ENAWREN, -- 1-bit input A port enable/ Write enable input

REGCEA => REGCEA, -- 1-bit input A port register enable input RSTA => RSTA, -- 1-bit input A port set/reset input WEAWEL => WEAWEL, -- 2-bit input A port write enable input -- Port A Data: 16-bit (each) input Port A data DIADI => DIADI, -- 16-bit input A port data/LSB data input DIPADIP => DIPADIP, -- 2-bit input A port parity/LSB parity input

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

CLKBRDCLK => CLKBRDCLK, -- 1-bit input B port clock/ Read clock input

ENBRDEN => ENBRDEN, -- 1-bit input B port enable/Read enable input

REGCEBREGCE => REGCEBREGCE, -- 1-bit input B port register enable/Register enable input

RSTBRST => RSTBRST, -- 1-bit input B port set/reset input WEBWEU => WEBWEU, -- 2-bit input B port write enable

input

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

-- End of RAMB8BWER_inst instantiation

В качестве основы представленного шаблона используется оператор создания экземпляра библиотечного примитива RAMB8BWER, который позволяет формировать элементы 2-портовой оперативной памяти с выходными регистрами, поддержкой режима побайтной записи информации и выполнения операций записи и чтения данных с использованием контроля четности для каждого порта. В этом примитиве для установки требуемой конфигурации создаваемого элемента ОЗУ применяются те же настраиваемые параметры, что и в шаблоне 16k-bit Data and 2k-bit Parity Configurable Synchronous Dual Port Block RAM with Optional Output Registers (RAMB16BWER), рассмотренном в предыдущей части статьи. Кроме того, в шаблоне 8k-bitData and 1k-bit Parity Configurable Synchronous Block RAM (RAMB8BWER) предусмотрен дополнительный параметр настройки RAM_MODE, который предназначен для выбора режима работы портов в формируемом элементе 2-портовой оперативной памяти. Этот параметр может принимать одно из двух значений — SDP или TDP. При выборе варианта SDP создается элемент 2-портового ОЗУ, в котором первый порт (A) предназначен для записи информации, а второй (B) — для чтения данных. Для формирования элемента полнофункциональной 2-портовой оперативной памяти, каждый порт которой поддерживает выполнение операций чтения и записи данных, следует использовать значение TDP, предлагаемое по умолчанию для параметра RAM_MODE.

В состав системы условных обозначений, применяемых в описании интерфейса элементов ОЗУ, создаваемых на основе шаблона 8k-bit Data and 1k-bit Parity Configurable Synchronous Block RAM (RAMB8BWER), входят следующие идентификаторы входов и выходов:

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

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

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

• DOPBDOP — выходная 2-разрядная шина, используемая для осуществления контроля четности информационных данных второго порта (для ОЗУ с универсальными портами) или старших 16 разрядов слова данных (для

элемента памяти со специализированными портами записи и чтения данных).

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

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

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

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

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

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

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

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

• ADDRBRDADDR — 13-разрядная шина адреса второго порта (для ОЗУ с универсальными портами) или порта чтения данных (для элемента памяти со специализированными портами записи и чтения данных).

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

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

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

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

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

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

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

На рис. 256 представлен условный графический образ элемента 2-портового ОЗУ с поддержкой режима побайтной записи информации и применения выходно-

Рис. 256. Условный графический образ 2-портового ОЗУ, формируемого с помощью шаблона RAMB8BWER

RAMB8BWER

DIADI DOADO

DIBDI

DIPADIP

DIPBDIP

ADDRAWRADDR

ADDRBWRADDR DOBDO

WEAWEL

WEBWEU

ENAWREN

ENBRDEN

REGCEA DOPADOP

REGCEBREGCE

RSTA

RSTB

CLKAWRCLK

CLKBDRCLK DOPBDOP

RAM128X1D

А6(СХ)

Рис. 257. Структурная схема 2-портового распределенного ОЗУ емкостью 128 бит, реализуемого на базе ПЛИС серии Spaгtan-6

го регистра, реализуемого на базе модуля блочной памяти Block RAM ПЛИС серии Spartan-6, описание которого формируется с помощью шаблона 8k-bit Data and 1k-bit Parity Configurable Synchronous Block RAM (RAMB8BWER).

128 x 1 posedge write (RAM128X1D) содержит образец VHDL-описания элемента 2-портового оперативного запоминающего устройства с информационной емкостью 128 бит и организацией 128 слов x 1 разряд, синтезируемого на базе таблиц преобразования LUT секций SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT.

В составе секций типа SLICEM конфигурируемых логических блоков (Configurable Logic Block, CLB) ПЛИС серии Spartan-6 применяются реальные 6-входовые таблицы преобразования LUT, которые можно конфигурировать как элементы распределенной оперативной или постоянной памяти с информационной емкостью 64 бита [28]. Для формирования элементов распределенных ОЗУ и ПЗУ большего объема используется объединение нескольких таблиц преобразования LUT. На рис. 257 изображена структурная схема элемента 2-портовой оперативной памяти с информационной емкостью 128 бит и организацией 128 слов x 1 разряд, конфигурируемого на базе четырех таблиц

преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT.

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

-- RAM128X1D : 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 (RAM128X1D_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.

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

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

-- RAM128X1D: 128-deep by 1-wide positive edge write, asynchronous read

-- dual-port distributed LUT RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM128X1D_inst : RAM128X1D generic map (

INIT => X"00000000000000000000000000000000"

)

port map (

DPO => DPO, -- Read/Write port 1-bit ouput

SPO => SPO, -- Read port 1-bit output

A => A, -- Read/Write port 7-bit address input

D => D, -- RAM data input

DPRA => DPRA, -- Read port 7-bit address input

WCLK => WCLK, -- Write clock input

WE => WE -- RAM data input

);

-- End of RAM128X1D_inst instantiation

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

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

• DPO — информационный выход второго порта элемента оперативной памяти;

• SPO — информационный выход первого порта ОЗУ;

• A — 7-разрядная шина адреса первого порта;

• D — информационный вход данных;

• DPRA — 7-разрядная шина адреса второго порта;

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

• WE — вход разрешения записи.

В элементах 2-портовых ОЗУ, создаваемых с помощью шаблона 128 х 1 posedge write (RAM128X1D), первый порт, включающий в себя шину адреса A и выход SPO, поддерживает выполнение операций чтения и записи входных данных. Второй порт, в состав которого входит шина адреса DPRA и выход DPO, позволяет выполнять только операции чтения информации, хранящейся в ОЗУ. Загрузка входных данных в ячейки элемента 2-портовой распределенной оперативной памяти осуществляется при наличии высокого логического уровня на входе разрешения записи WE по фронту сигнала синхронизации, поступающего на вход WCLK.

Условный графический образ элемента 2-портовой распределенной оперативной памяти с организацией 128 слов х 1 разряд, для подготовки описания которого используется шаблон 128 х 1 posedge write (RAM128X1D), приведен на рис. 258.

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

RAM128X1D

D

А(6:0) WE SPO

> WCLK

Г

DPRA(6:0)

DPO

128x1 Dual-Port LUT RAM

Рис. 258. Условный графический образ распределенного 2-портового ОЗУ, формируемого с помощью шаблона 128 х 1 posedge write (RAM128X1D)

шаблона, производится по спаду тактового сигнала:

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

-- RAM32X1D_1: 32 x 1 negative edge write, asynchronous read -- dual-port distributed RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM32X1D_1_inst : RAM32X1D_1 generic map (

INIT => X"00000000") -- Initial contents of RAM port map (

DPO => DPO, -- Read-only 1-bit data output

SPO => SPO, -- R/W 1-bit data output

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

A4 => A4, -- R/W address[4] 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

DPRA4 => DPRA4, -- Read-only address[4] input bit

WCLK => WCLK, -- Write clock input

WE => WE -- Write enable input

);

-- End of RAM32X1D_1_inst instantiation

Основу приведенного шаблона образует оператор создания экземпляра библиотечного примитива RAM32X1D_1, который представляет соответствующий вариант конфигурирования таблицы преобразования LUT секции SLICEM в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT.

Система условных обозначений входов и выходов, используемых в описании

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

• DPO — выход второго порта элемента оперативной памяти;

• SPO — выход первого порта ОЗУ;

• A0-A4 — адресные входы первого порта;

• D — информационный вход данных;

• DPRA0-DPRA4 — адресные входы второго порта;

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

• WE — вход сигнала разрешения записи. Инициализация содержимого элемента

2-портового ОЗУ, формируемого на основе шаблона 32 х 1 negedge write (RAM32X1D_1), осуществляется с помощью параметра INIT, значение которого задается в форме 8-разрядного шестнадцатеричного числа.

На рис. 259 показан условный графический образ элемента 2-портовой оперативной памяти с информационной емкостью 32 бита и организацией 32 слова х 1 разряд, реализуемого на базе таблицы преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6.

RAM32X1 D_1

- WE

- D SPO -

—С > WCLK

- AO

- A1

- A2

- A3

- A4

- DPRAO DPO -

- DPRA1

- DPRA2

- DPRA3

- DPRA4

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

2-портового ОЗУ, формируемого на основе шаблона

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

32 х 1 negedge write (RAM32X1D_1)

32 х 1 posedge write (RAM32X1D) представляет собой образец VHDL-описания элемента 2-портового ОЗУ с информационной емкостью 32 бита и организацией 32 слова х 1 разряд, предназначенного для реализации на базе таблицы преобразования LUT секции SLICEM в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. В качестве основы этого шаблона используется оператор создания экземпляра библиотечного примитива RAM32X1D, который отличается от примитива RAM32X1D_1, рассмотренного в предыдущем шаблоне, только отсутствием инверсии на входе тактового сигнала. Запись данных в элементы 2-портовой оперативной памяти, описания которых создаются на основе библиотечного примитива RAM32X1D, осуществляется по фронту сигнала синхронизации:

-- RAM32X1D : 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 (RAM32X1D_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—>

-- RAM32X1D: 32 x 1 positive edge write, asynchronous read -- dual-port distributed RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM32X1D_inst : RAM32X1D generic map (

INIT => X"00000000") -- Initial contents of RAM port map (

DPO => DPO, -- Read-only 1-bit data output

SPO => SPO, -- R/W 1-bit data output

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

A4 => A4, -- R/W address[4] 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

DPRA4 => DPRA4, -- Read-only address[4] input bit

WCLK => WCLK, -- Write clock input

WE => WE -- Write enable input

);

-- End of RAM32X1D_inst instantiation

Условный графический образ элемента 2-портового распределенного ОЗУ с организацией 32 слова x 1 разряд, описание которого формируется с помощью шаблона 32 x 1 posedge write (RAM32 X1D) для последующей реализации на базе таблицы преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6, изображен на рис. 260.

64 x 1 posedge write (RAM64 X1 D) является шаблоном VHDL-описания 2-портового

RAM32X1D

- WE

- D SPO -

- > WCLK

- AO

- A1

- A2

- A3

- A4

- DPRAO DPO -

- DPRA1

- DPRA2

- DPRA3

- DPRA4

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

2-портового ОЗУ, формируемого на основе шаблона

32 х 1 posedge write (RAM32X1D)

RAM64x1 D

— WE

— D SPO

— > WCLK

— AO

— A1

— A2

— A3

— A4

— A5

— DPRAO DPO

— DPRA1

— DPRA2

— DPRA3

— DPRA4

— DPRA5

Рис. 261. Структурная схема 2-портового распределенного ОЗУ емкостью 64 бита, Рис. 262. Усл0вный графический 0бра3

реализуемого на базе ПЛИС серии Spartan-6 2-портового ОЗУ, формируемого на основе шаблона

64 х 1 posedge write (RAM64X1D)

оперативного запоминающего устройства с информационной емкостью 64 бита и организацией 64 слова х 1 разряд, синтезируемого на базе таблиц преобразования LUT секций SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. Для формирования элементов распределенных 2-портовых ОЗУ объемом 64 бита используются две таблицы преобразования LUT. Структурная схема таких элементов 2-портовой оперативной памяти, предназначенных для применения в составе проектируемых устройств, реализуемых на базе ПЛИС серии Spartan-6, представлена на рис. 261.

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

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

DPRA4 => DPRA4, -- Read-only address[4] input bit

DPRA5 => DPRA5, -- Read-only address[5] input bit

WCLK = => WCLK, -- Write clock input

WE => WE -- Write enable input

Л -- End of RAM64X1D_inst instantiation

Основой приведенной конструкции является оператор создания экземпляра библиотечного примитива RAM64X1D. Система условных обозначений, применяемых в описании интерфейса этого примитива, включает в себя ту же совокупность идентификаторов входов и выходов, что и в шаблоне 32 х 1 negedge write (RAM32X1D_1), рассмотренном выше. Кроме того, в составе интерфейса библиотечного примитива RAM64X1D присутствуют два дополнительных адресных входа — A5 и DPRA5. Для инициализации содержимого элемента 2-портовой оперативной памяти, формируемого с помощью шаблона 64 х 1 posedge write RAM64X1D), необходимо указать соответствующее значение параметра настройки INIT в виде 16-разрядного шестнадцатеричного числа. Загрузка данных в ячейки такого запоминающего устройства производится при высоком логическом уровне сигнала на входе разрешения записи по фронту сигнала синхронизации.

На рис. 262 приведен условный графический образ элемента 2-портового распределенного ОЗУ с информационной емкостью 64 бита и организацией 64 слова х 1 разряд, описание которого создается на основе библиотечного примитива RAM64X1D для последующего применения в составе проектов, реализуемых на базе кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT.

64 х 1 negedge write (RAM64X1D_1) содержит образец описания элемента 2-портовой оперативной памяти с информационной емкостью 64 бита и организацией 64 слова х 1 разряд, реализуемого на базе таблицы пре-

образования LUT секции SLICEM конфигурируемых логических блоков ПЛИС серии Spartan-6. Основой этого шаблона является оператор создания экземпляра библиотечного примитива RAM64X1D_1, который отличается от элемента RAM64X1D, рассмотренного в предыдущем шаблоне, только инверсией сигнала на входе синхронизации. Таким образом, запись информации в ячейки 2-портового ОЗУ, для подготовки описания которого применяется шаблон 64 х 1 negedge write RAM64X1D_1), осуществляется по спаду тактового сигнала:

-- RAM64X1D_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 (RAM64X1D_inst) and/or the port declarations -- code : after the "=>" assignment maybe changed to properly -- : reference and connect this function to the design. -- : AH 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—>

-- RAM64X1D: 64 x 1 negative edge write, asynchronous read -- dual-port distributed RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM64X1D_1_inst : RAM64X1D_1 generic map (

INIT => X"000000000000000") -- Initial contents of RAM port map (

DPO => DPO, -- Read-only 1-bit data output

SPO => SPO, -- R/W 1-bit data output

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

A4 => A4, -- R/W address[4] input bit

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

A5 => A5, -- R/W address[5] 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

-- RAM64X1D : 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 (RAM64X1D_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—>

— RAM64X1D: 64 x 1 positive edge write, asynchronous read

— dual-port distributed RAM

— Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM64X1D_inst : RAM64X1D generic map (

INIT => X"0000000000000000") -- Initial contents of RAM port map (

DPO => DPO, -- Read-only 1-bit data output SPO => SPO, -- R/W 1-bit data output 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 A4 => A4, -- R/W address[4] input bit A5 => A5, -- R/W address[5] input bit

RAM64X1 D_1

— WE

— D SPO -

—с > WCLK

— AO

— A1

— A2

— A3

— A4

— A5

— DPRAO DPO -

— DPRA1

— DPRA2

— DPRA3

— DPRA4

— DPRA5

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

2-портового ОЗУ, формируемого на основе шаблона

64 х 1 negedge write (RAM64X1D_1)

DPRA3 => DPRA3, -- Read-only address[3] input bit DPRA4 => DPRA4, -- Read-only address[4] input bit DPRA5 => DPRA5, -- Read-only address[5] input bit WCLK => WCLK, -- Write clock input WE => WE -- Write enable input

);

-- End of RAM64X1D_1_inst instantiation

Условный графический образ элемента 2-портового распределенного оперативного запоминающего устройства, формируемого на основе библиотечного примитива RAM64X1D_1 в кристаллах программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, представлен на рис. 263.

32 x 8 (RAM32M) включает в себя шаблон описания элемента многопортового ОЗУ с информационной емкостью 32 слова, реализуемого на основе ресурсов распределенной памяти ПЛИС серии Spartan-6. Элемент оперативной памяти, формируемый с помощью этого шаблона, конфигурируется на базе четырех таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. В зависимости от способа соединения входов этих таблиц преобразования можно создавать элементы запоминающих устройств с числом портов от 1 до 4 и разрядностью слов данных от 8 до 2 соответственно. Структура 4-портового ОЗУс организацией каждого порта 32 слова x 2 разряда, для подготовки описания которого применяется шаблон 32 x 8 (RAM32M), изображена на рис. 264.

Рассматриваемый шаблон представляет собой конструкцию, выполненную на основе оператора создания экземпляра библиотечного примитива RAM32M:

-- RAM32M : 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 (RAM32M_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.

DOD[Q]

DOD[1]

DQC[0]

DOC[1]

DOB[Q]

DOB[1]

DOA[Q]

DOA[1]

Рис. 264. Структура 4-портового распределенного ОЗУ с организацией каждого порта 32 слова х 2 разряда, реализуемого на базе ПЛИС серии Spaгtan-6

-- Library : In addition to adding the instance declaration, a use

— declaration : statement for the UNISIM.vcomponents library needs to be -- for : added before the entity declaration. This library

-- Xilinx : contains the component declarations for all Xilinx -- primitives : primitives and points to the models that will be used -- : for simulation.

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

Library UNISIM;

use UNISIM.vcomponents.all;

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

- RAM32M: 32-deep by 8-wide Multi Port LUT RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM32M_inst : RAM32M generic map (

INIT_A => X"000000000000", -- Initial contents of A port INIT_B => X"000000000000", -- Initial contents of B port INIT_C => X"000000000000", -- Initial contents of C port INIT_D => X"000000000000") -- Initial contents of D port ort map (

DOA => DOA, -- Read port A 2-bit output DOB => DOB, -- Read port B 2-bit output DOC => DOC, -- Read port C 2-bit output DOD => DOD, -- Read/Write port D 2-bit output ADDRA => ADDRA, -- Read port A 5-bit address input ADDRB => ADDRB, -- Read port B 5-bit address input ADDRC => ADDRC, -- Read port C 5-bit address input ADDRD => ADDRD, -- Read/Write port D 5-bit address input DIA => DIA, -- RAM 2-bit data write input addressed by ADDRD,

-- read addressed by ADDRA DIB => DIB, -- RAM 2-bit data write input addressed by ADDRD,

-- read addressed by ADDRB DIC => DIC, -- RAM 2-bit data write input addressed by ADDRD,

-- read addressed by ADDRC DID => DID, -- RAM 2-bit datawlite input addressedby ADDRD,

-- read addressed by ADDRD WCLK => WCLK, -- Write clock input WE => WE -- Write enable input

);

-- End of RAM32M_inst instantiation

В библиотечном примитиве RAM32M используются параметры настройки INIT_A, INIT_B, INIT_C и INIT_D, которые предоставляют возможность определения начального содержимого соответствующего порта формируемого элемента распределенной оперативной памяти. По умолчанию этим параметрам присваиваются нулевые значения.

В описании интерфейса элементов ОЗУ, создаваемых с помощью шаблона 32 х 8 (RAM32 M), применяется следующая система условных обозначений входов и выходов:

• DOA, DOB, DOC и DOD — выходные 2-разрядные шины данных соответствующего порта (A, B, C и D) элемента распределенной оперативной памяти;

• ADDRA, ADDRB, ADDRC и ADDRD — 5-разрядные шины адреса соответствующего порта распределенного запоминающего устройства;

• DIA, DIB, DIC и DID — входные 2-разрядные шины данных соответствующего порта;

• WCLK — вход тактового сигнала;

• WE — вход сигнала разрешения записи. Загрузка информации в элементы многопортовой оперативной памяти, формируемые на основе экземпляра библиотечного примитива RAM32M, выполняется по фронту тактового сигнала при высоком логическом уровне напряжения на входе разрешения записи.

На рис. 265 представлен условный графический образ элемента 4-портового ОЗУ, реализуемого на базе четырех таблиц преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6, для подготовки описания которого используется шаблон 32 х 8 (RAM32M).

64 х 4 (RAM64M) представляет собой образец описания элемента мультипортовой оперативной памяти с информационной емкостью 64 слова, синтезируемого на базе четырех таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. С помощью этого шаблона можно формировать описания элементов распределенных ОЗУ с числом портов от одного до четырех. Структура элемента 4-портовой оперативной памяти с организацией каждого порта 64 слова х 1 разряд, описание которого выполняется на основе шаблона 64 х 4 (RAM64M), приведена на рис. 266.

-- RAM64M : 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 (RAM64M_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—>

- RAM64M: 64-deep by 4-wide Multi Port LUT RAM

- Spartan-6

- Xilinx HDL Language Template, version 12.4

RAM64M_inst : RAM64M generic map (

INIT_A => X"000000000000'" INIT_B => X"000000000000", INIT_C => X"000000000000", INIT_D => X"000000000000) port map (

DOA => DOA, DOB => DOB, DOC => DOC, DOD => DOD. ADDRA => ADDRA, ADDRB => ADDRB.

- Initial contents of A port

- Initial contents of B port

- Initial contents of C port

- Initial contents of D port

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

Read port A 1-bit output Read port B 1-bit output Read port C 1-bit output Read/Write port D 1-bit output

Read port A 6-bit address input Read port B 6-bit address input

ADDRC => ADDRC, -- Read port C 6-bit address input ADDRD => ADDRD, -- Read/Write port D 6-bit address input DIA => DIA, -- RAM 1-bit datawlite input addressed by ADDRD,

-- read addressed by ADDRA DIB => DIB, -- RAM 1-bit data write input addressed by ADDRD,

-- read addressed by ADDRB DIC => DIC, -- RAM 1-bit data write input addressed by ADDRD,

-- read addressed by ADDRC DID => DID, -- RAM 1-bit datawlite input addressedby ADDRD,

-- read addressed by ADDRD WCLK => WCLK, -- Write clock input WE => WE -- Write enable input

);

- End of RAM64M_inst instantiation

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

ного элемента RAM32M. Отличия проявляются только в разрядности адресных и информационных шин этих библиотечных примитивов. В элементе RAM64M используются 6-разрядные шины адреса, а вместо информационных шин — обычные входы и выходы данных.

Условный графический образ элемента 4-портовой оперативной памяти с организацией каждого порта 64 слова x 1 разряд, описание которого создается с помощью шаблона 64 x 4 (RAM64M) для последующей реализации на базе таблиц преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6, показан на рис. 267.

128 x 1 posedge write (RAM128X1S) является шаблоном VHDL-описания элемента однопортового оперативного запоминающего устройства информационной емкостью 128 бит с организацией 128 слов x 1 разряд, конфигурируемого на базе ресурсов распределенной памяти кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. Для реализации элемента ОЗУ указанного объема задействуются две таблицы преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6. Рис. 268 наглядно поясняет структуру элемента памяти, формируемого с помощью шаблона 128 x 1 posedge write (RAM128X1S).

Рассматриваемый шаблон включает в себя следующую конструкцию, основу которой составляет оператор создания экземпляра библиотечного примитива ЯЛМ128Х^:

-- RAM128X1S : 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 (RAM128X1S_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—>

-- RAM128X1S: 128-deep x 1 positive edge write, asynchronous read -- single-port distributed RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM128X1S_inst : RAM128X1S generic map (

INIT => X"00000000000000000000000000000000") 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 A6 => A6, -- Address[6] input bit D => D, -- 1-bit data input WCLK => WCLK, -- Write clock input WE => WE -- RAM data input

);

-- End of RAM128X1S_inst instantiation

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

В состав системы условных обозначений входов и выходов, используемых в описании интерфейса элементов распределенной одно-портовой оперативной памяти, создаваемых с помощью шаблона 128 x 1 posedge write (RAM128X1S), входят следующие идентификаторы:

• O — выход данных;

• A0-A6 — адресные входы;

• D — информационный вход данных;

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

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

В элементах ОЗУ, для подготовки описаний которых применяется библиотечный примитив RAM128X1S, загрузка данных в ячейки производится по фронту тактового сигнала

RAM128X1S

— WE

— D О -

— > WCLK

— АО

— A1

— А2

— A3

— A4

— А5

— А6

Рис. 269. Условный графический образ однопортового распределенного ОЗУ, формируемого с помощью шаблона 128 х 1 posedge write (RAM128X1S)

при наличии высокого логического уровня напряжения на входе разрешения записи.

На рис. 269 представлен условный графический образ элементов однопортовой оперативной памяти с информационной емкостью 128 бит, реализуемых на базе таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT.

128 х 1 negedge write (RAM128X1S_1) содержит образец описания элемента распределенного однопортового ОЗУ с информационной емкостью 128 бит и организацией 128 слов х 1 разряд. Запись информации в это ОЗУ осуществляется по спаду сигнала синхронизации. Этот шаблон выполнен на основе оператора создания экземпляра библиотечного примитива RAM128X1S_1, который отличается от элемента RAM128X1S, рассмотренного в предыдущем шаблоне, инверсией на входе тактового сигнала:

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

-- RAM128X1S_1: 128-deep x 1 negative edge write, asynchronous read -- single-port distributed RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM128X1S_1inst : RAM128X1S_1 generic map (

INIT => X"00000000000000000000000000000000")

RAM 128X1 S_1

— WE

— D О -

-о > WCLK

— АО

— A1

— A2

— A3

— A4

— A5

— A6

Рис. 270. Условный графический образ однопортового распределенного ОЗУ, формируемого с помощью шаблона 128 х 1 negedge write (RAM128X1S_1)

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 A6 => A6, -- Address[6] input bit D => D, -- 1-bit data input WCLK => WCLK, -- Write clock input WE => WE -- RAM data input

);

-- End of RAM128X1S_1inst instantiation

Условный графический образ элемента распределенной однопортовой оперативной памяти с информационной емкостью 128 бит и записью данных по спаду тактового сигнала, описание которого создается с помощью шаблона 128 х 1 negedge write RAM128X1S_1) для последующей реализации на базе таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, приведен на рис. 270.

256 х 1 posedge write (RAM256X1S) предоставляет шаблон VHDL-описания элемента однопортового оперативного запоминающего устройства информационной емкостью 256 бит с организацией 256 слов х 1 разряд, синтезируемого на базе ресурсов распределенной памяти ПЛИС серии Spartan-6. Элементы оперативной памяти, описание которых создается на основе этого шаблона, реализуются на базе четырех таблиц преобразования LUT секции SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. Схема соединения таблиц преобразования LUT для формирования элемента распределенного ОЗУ указанной емкости изображена на рис. 271.

Рассматриваемый шаблон включает в себя следующий VHDL-код:

-- RAM256X1S : 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 (RAM256X1S_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

RAM256X1S

Рис. 271. Структура распределенного однопортового ОЗУ, создаваемого с помощью шаблона 256 х 1 posedge write (RAM256X1S)

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

-- RAM256X1S: 256-deep by 1-wide positive edge write, asynchronous read

-- single-port distributed LUT RAM -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

RAM256X1S_inst : RAM256X1S generic map (

INIT => X"00000000000000000000000000000000000000") port map (

O => O, -- Read/Write port 1-bit ouput A => A, -- Read/Write port 8-bit address input D => D, -- RAM data input WCLK => WCLK, -- Write clock input WE => WE -- Write enable input

);

-- End of RAM256X1S_inst instantiation

Основу приведенной конструкции образует экземпляр библиотечного примитива RAM256X1S, в котором для инициализации содержимого формируемого элемента оперативной памяти используется тот же параметр настройки 1№Т, что и в предыдущих шаблонах. Но значение этого параметра задается в виде 64-разрядного шестнадцатерич-ного числа. Система условных обозначений, применяемых в описании интерфейса этого

библиотечного примитива, включает в себя те же идентификаторы входов и выходов, что и в шаблоне 128 x 1 posedge write (RAM128X1S). Отличие проявляется только в обозначениях адресных входов. В библиотечном примитиве RAM256X1S эти входы представлены в виде 8-разрядной шины адреса A.

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

На рис. 272 показан условный графический образ элементов оперативной памяти информационной емкостью 256 бит, реализуемых на базе таблиц преобразования LUT секции SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6, для подготовки описаний которых используется шаблон 256 x 1 posedge write (RAM256X1S).

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

Рис. 272. Условный графический образ однопортового распределенного ОЗУ, формируемого с помощью шаблона 256 х 1 posedge write (RAM256X1S)

RAM256X1S

D

A(7:0)

WE

> WCLK

проектируемых устройств, выполняемых на базе кристаллов программируемой ло гики семейств Spartan-6 LX и Spartan-6 LXT. В составе секций SLICEL и SLICEM конфи гурируемых логических блоков ПЛИС серии Spartan-6 представлена логика ускоренного переноса, структурная схема которой показа на на рис. 273.

Для подготовки VHDL-описания схемы ускоренного переноса предоставляется шаблон, построенный на основе экземпляра библиотечного примитива CARRY4:

-- CARRY4 : In order to incorporate this function into the design, -- VHDL : the following instance declaration needs to be placed -- instance : in the body of the design code. The instance name -- declaration : (CARRY4_inst) and/or the port declarations after the -- code : "=>" assignment maybe changed to properly reference and -- : connect this function to the design. All inputs and -- : outputs of this primitive 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—>

-- CARRY4: Fast Carry Logic Component -- Spartan-6

-- Xilinx HDL Language Template, version 12.4 CARRY4_inst : CARRY4

В библиотечном примитиве CARRY4, представляющем логический блок ускоренного переноса секций SLICEL и SLICEM кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT, используется следующая система условных обозначений интерфейсных портов:

• СО — выходная 4-разрядная шина, объединяющая выходы каждого каскада схемы ускоренного переноса;

• О — выходная 4-разрядная шина общего назначения;

• С1 — вход сигнала переноса, предназначенный для организации каскадного соединения секций конфигурируемого логического блока;

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

• DI — входная 4-разрядная шина, объединяющая информационные входы мультиплексоров логики ускоренного переноса;

• S — входная 4-разрядная шина, объединяющая входы сигналов выбора мультиплексоров логики ускоренного переноса.

Рис. 274. Условный графический образ схемы ускоренного переноса, формируемой с помощью шаблона Carry (CARRY4)

Условный графический образ схемы ускоренного переноса, описание которой формируется с помощью шаблона Carry (CARRY4) для последующей реализации на базе соответствующих ресурсов секций SLICEL и SLICEM конфигурируемого логического блока ПЛИС серии Spartan-6, представлен на рис. 274.

LUT5 является шаблоном VHDL-описания варианта конфигурирования таблицы преобразования LUT кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT в виде 5-входового функционального генератора. Основу этого шаблона образует оператор создания экземпляра одноименного библиотечного примитива:

-- LUT5 : 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 (LUT5_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—>

-- LUT5: 5-input Look-Up Table with general output -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT5_inst : LUT5 generic map (

INIT => X"00000000") -- Specify LUT Contents

LUT5

14

13

12 О

И

10

LUT5_D

14

13 О

12

И LO

10

LUT5J-

14

13

12 LO

И

10

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

Рис. 276. Условный графический образ 5-входового функционального генератора с двумя выходами, формируемого с помощью шаблона LUT5_D

Рис. 277. Условный графический образ 5-входового функционального генератора с локальным выходом, формируемого с помощью шаблона LUT5_L

port map (

O => O, -- LUT general output

I0 => I0, -- LUT input

Il => Il, -- LUT input

I2 => I2, -- LUT input

I3 => I3, -- LUT input

I4 => I4 -- LUT input

); -- End of LUT5_ inst instantiation

-- LUT5_D: 5-input Look-Up Table with general and local outputs -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT5_D_inst : LUT5_D generic map (

INIT => X"00000000") -- Specify LUT contents port map (

LO => LO, -- LUT local output O => O, -- LUT general output

10 => I0, -- LUT input

11 => I1, -- LUT input

12 => I2, -- LUT input

13 => I3, -- LUT input

14 => I4 -- LUT input

);

-- End of LUT5_D_inst instantiation

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

-- LUT5_L: 5-input Look-Up Table with local output -- Spartan-6

-- Xilinx HDL Language Template, version 12.4

LUT5_L_inst : LUT5_L generic map (

INIT => X"00000000") -- Specify LUT Contents port map (

LO => LO, -- LUT local output

10 => I0, -- LUT input

11 => I1, -- LUT input

12 => I2, -- LUT input

13 => I3, -- LUT input

14 => I4 -- LUT input

);

-- End of LUT5_L_inst instantiation

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

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

• O — выход общего назначения;

• I0-I4 — входы таблицы преобразования

LUT.

На рис. 275 приведен условный графический образ 5-входового функционального генератора, описание которого создается с помощью шаблона LUT5 для последующей реализации на основе таблицы преобразования LUT конфигурируемого логического блока ПЛИС серии Spartan-6.

LUT5_D содержит конструкцию, предназначенную для подготовки описания варианта конфигурирования таблицы преобразования LUT кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT в виде 5-входового функционального генератора с двумя выходами:

Приведенный шаблон выполнен на основе экземпляра библиотечного примитива LUT5_D, в котором кроме выхода общего назначения O предусмотрен также локальный выход LO. Этот выход используется для подключения только в пределах того же конфигурируемого логического блока CLB, в состав которого входит создаваемый экземпляр таблицы преобразования.

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

На рис. 276 представлен условный графический образ 5-входового функционального генератора с двумя выходами, конфигурируемого на базе таблицы преобразования LUT ПЛИС серии Spartan-6, описание которого создается с помощью шаблона LUT5_D.

LUT5_L представляет собой шаблон VHDL-описания 5-входового функционального генератора с локальным выходом, конфигурируемого на базе таблицы преобразования LUT, входящей в состав логических ячеек кристаллов программируемой логики семейств Spartan-6 LX и Spartan-6 LXT. Этот шаблон выполнен на основе экземпляра одноименного библиотечного примитива:

-- LUT5_L : 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 (LUT5_L_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;

На рис. 277 показан условный графический образ 5-входового функционального генератора с локальным выходом, реализуемого на базе таблицы преобразования ПЛИС серии Spartan-6, для подготовки описания которого используется шаблон LUT5_L.

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

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 для практического освоения методов проектирования и отладки цифро-

-- LUT5_D : 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 (LUT5_D_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—>

вых устройств с аппаратной и программной реализацией операций, реализуемых на основе ПЛИС семейств 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 // Компоненты п технологии. 200б. № l2. 2007. № l.

18. Зотов В. Разработка компонентов устройств цифровой обработки сиг-палов, реализуемых па базе аппаратных модулей DSP48E в ПЛИС FPGA серпп Virtex-5, с помощью «мастера» Architecture Wizard САПР серии Xilinx ISE // Компоненты п технологии. 2008. № l2. 2009. № l, 4-7.

19. Spartan-3 Generation FPGA User Guide. Xilinx, 2009.

20. Spartan-3 FPGA Familyi Complete Data Sheet. Xilinx, 2009.

21. Spartan-3 Generation Configuration User Guide. Xilinx, 2009.

22. Зотов В. Особенности архитектуры нового поколения ПЛИС FPGA фирмы Xilinx серпп Spartan-б // Компоненты п технологии. 2009. № 9.

23. Spartan-б Family Overview. Xilinx, 2009.

24. Spartan-б FPGA Configuration User Guide. Xilinx, 2009.

25. Spartan-б FPGA SelectIO Resources User Guide. Xilinx, 2009.

26. Spartan-б FPGA Clocking Resources User Guide. Xilinx, 2009.

27. Spartan-б FPGA Block RAM User Guide. Xilinx, 2009.

28. Spartan-б FPGA Configurable Logic Block User Guide. Xilinx, 2009.

29. Spartan-б FPGA GTP Transceivers User Guide. Xilinx, 2009.

30. Spartan-б FPGA Memory Controller User Guide. Xilinx, 2009.

31. Spartan-б FPGA DSP48Al User Guide. Xilinx, 2009.

32. Spartan-б FPGA Data Sheeti DC and Switching Characteristics. Xilinx, 2009.

33. Spartan-б FPGA Power Management User Guide. Xilinx, 2009.

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