Разработка базовых компонентов цифровых устройств, реализуемых на базе ПЛИС FPGA фирмы Xilinx, с помощью генератора параметризированных модулей CORE Generator. Часть 2
Генерация элементов оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС
Все статьи цикла:
- Часть 1
- Часть 2
- Часть 3
- Часть 4
- Часть 5
- Часть 6
- Часть 7
- Часть 8
- Часть 9
- Часть 10
- Часть 11
- Часть 12
- Часть 13
- Часть 14
- Часть 15
- Часть 16
- Часть 17
- Часть 18
- Часть 19
Для создания оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС Block RAM, в составе генератора параметризированных модулей CORE Generator предусмотрено несколько видов соответствующих ядер. Эти модули одновременно представлены в двух функциональных группах ядер: в группе базовых элементов цифровых устройств Basic Elements и в группе ядер, предназначенных для генерации элементов запоминающих устройств Memories & Storage Elements. В частности, параметризированный модуль Single Port Block Memory предназначен для формирования однопортовых запоминающих устройств, а Dual Port Block Memory — двухпортовых элементов памяти. В последних версиях средств CORE Generator основным универсальным инструментом генерации запоминающих устройств всех типов с различной разрядностью и организацией портов чтения и записи данных считается параметризированный модуль Block Memory Generator, который рекомендуется использовать вместо ядер Single Port Block Memory и Dual Port Block Memory. Поэтому в настоящем разделе подробно рассматриваются возможности, параметры и применение только модуля Block Memory Generator. Версия v2.2 данного параметризированного модуля позволяет формировать элементы постоянной и оперативной памяти с различной конфигурацией портов записи и чтения данных, реализуемые на основе ресурсов блочной памяти ПЛИС следующих семейств: Spartan-3; Spartan-3 XA; Spartan-3E; Spartan-3E XA; Spartan-3A; Virtex-II; Virtex-II PRO; Virtex-4; Virtex-4 XA; Virtex-5.
Особенностями параметризированного модуля Block Memory Generator v2.2 являются:
- возможность генерации одно- и двухпортовых ОЗУ и ПЗУ, обладающих высоким быстродействием (достигающим 450 МГц);
- широкий диапазон выбора разрядности входных и выходных информационных портов (от 1 до 1152 разрядов);
- поддержка достаточно большого размера адресного пространства памяти, позволяющего формировать элементы запоминающих устройств емкостью от 8 до 9 M слов (фактический объем создаваемого ОЗУ или ПЗУ ограничен только физическими ресурсами блочной памяти Block RAM кристалла ПЛИС, выбранного для его реализации);
- возможность выбора разрядности для каждого порта записи и/или чтения данных в генерируемых двухпортовых запоминающих устройствах;
- применение оптимизированных алгоритмов реализации создаваемых запоминающих устройств, позволяющих минимизировать количество используемых физических блоков памяти Block RAM в ПЛИС;
- возможность инициализации содержимого создаваемых элементов ОЗУ и ПЗУ;
- поддержка побайтной записи с контролем и без контроля четности в формируемых ОЗУ, предназначенных для реализации на основе ПЛИС семейств Virtex-4, Virtex-4 XA и Virtex-5;
- управление параметрами структурных и поведенческих моделей, создаваемых для генерируемых запоминающих устройств;
- возможность выбора одного из трех режимов работы для каждого порта формируемого элемента оперативной памяти, определяющих состояние выходов при выполнении операций записи данных;
- применение (по выбору пользователя) выходных регистров, позволяющих добиться повышения производительности создаваемых элементов запоминающих устройств.
- возможность использования синхронных входов сброса/установки, а также входа разрешения для каждого порта формируемых элементов памяти по выбору пользователя.
Выбор типа и организации запоминающего устройства, формируемого на основе рассматриваемого параметризированного модуля, осуществляется с помощью соответствующего «мастера» настройки параметров, который содержит четыре или пять диалоговых панелей, в зависимости от количества портов записи или чтения данных. В стартовой диалоговой панели «мастера», вид которой показан на рис. 8, указывается тип создаваемого элемента памяти, его название, а также алгоритм его реализации. Название формируемого вида запоминающего устройства вводится с помощью клавиатуры в поле редактирования Component Name.
Для определения типа генерируемого элемента памяти следует воспользоваться группой кнопок с зависимой фиксацией Memory Type. Если в нажатом состоянии зафиксирована кнопка Single Port RAM, то будет сформировано ОЗУ с одним портом записи и одним портом чтения данных. При нажатой кнопке Simple Dual Port RAM создается элемент двухпортовой оперативной памяти с одним портом чтения данных. Для генерации ОЗУ с двумя портами чтения и двумя портами записи данных нужно переключить в нажатое состояние кнопку True Dual Port RAM. Формирование однопортового постоянного запоминающего устройства осуществляется при нажатой кнопке Single Port ROM. Чтобы создать элемент двухпортовой постоянной памяти, следует перевести во включенное состояние кнопку Dual Port ROM.
В формируемых элементах памяти, предназначенных для реализации на базе ПЛИС семейств Virtex-4 и Virtex-5, может быть установлен режим побайтной записи. Для этого нужно перевести в состояние «включено» индикатор Use Byte Write Enable, который расположен во встроенной панели Write Enable (рис. 8). Побайтная запись может осуществляться с контролем и без контроля четности. При этом размер записываемого байта (количество бит в байте) зависит от использования контроля четности. В случае отсутствия контроля четности длина байта составляет восемь бит. Чтобы побайтная запись выполнялась с контролем четности, в состав байта данных должно входить девять бит (восемь бит данных и один контрольный). Размер байта (и, соответственно, использование контроля четности) указывается с помощью поля выбора Byte Size.
Запоминающее устройство, генерируемое с помощью параметризированного модуля Block Memory Generator, строится в виде совокупности примитивов блочной памяти Block RAM primitive. В общем случае каждый из используемых примитивов может иметь различную организацию. Количество и состав возможных вариантов организации примитивов блочной памяти Block RAM primitive определяется выбранным семейством ПЛИС. Тип организации примитивов блочной памяти и алгоритм их соединения для получения запоминающего устройства с требуемой емкостью и организацией указывается с помощью двух кнопок с зависимой фиксацией, которые расположены во встроенной панели Algorithm (рис. 8). Когда в нажатом состоянии находится кнопка Minimum Area, создаваемый элемент памяти составляется из примитивов с различной организацией с целью минимизации используемого количества модулей блочной памяти Block RAM кристалла ПЛИС. При нажатой кнопке Fixed Primitive для построения требуемого запоминающего устройства будут использоваться примитивы блочной памяти одного типа, организация которого указывается пользователем с помощью поля выбора Primitive. Содержимое выпадающего списка этого поля выбора зависит от семейства ПЛИС, для которого создается элемент памяти.
Вторая диалоговая панель «мастера» настройки параметров генератора оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС, предназначена для определения емкости формируемого элемента памяти, а также описания организации и режима работы первого (или единственного) порта запоминающего устройства. Вид этой панели представлен на рис. 9.
Чтобы указать информационную емкость формируемого элемента памяти и разрядность первого (или единственного) порта записи и чтения данных, нужно воспользоваться полями редактирования и выбора, расположенными во встроенной панели Memory Size. Прежде всего, рекомендуется определить разрядность первого входного порта Port A, предназначенного для записи данных, с помощью поля редактирования Write Width. Требуемое число разрядов этого порта (в диапазоне от 1 до 1152) указывается с помощью клавиатуры, после активизации данного поля редактирования. Количество ячеек памяти в формируемом запоминающем устройстве задается в поле редактирования Write Depth. Максимальное значение этого параметра ограничено объемом физических ресурсов блочной памяти Block RAM используемого кристалла ПЛИС. Таким образом, информационная емкость создаваемого элемента памяти, выраженная в битах, равна произведению значений параметров Write Width и Write Depth. Разрядность первого (или единственного) выходного порта, используемого для чтения данных из памяти, определяется с помощью поля выбора Read Width. Выпадающий список этого поля выбора содержит допустимые варианты разрядности первого выходного порта, которые соответствуют установленному значению разрядности первого входного порта записи данных. Количество разрядов адреса (адресных входов) в формируемом запоминающем устройстве вычисляется автоматически, исходя из установленных значений параметров, рассмотренных выше.
При создании оперативных запоминающих устройств, предназначенных для реализации на основе ПЛИС семейств Virtex-4 и Virtex-5 и использующих режим побайтной записи, значения параметров Write Width и Read Width должны быть кратны размеру байта данных, указанному в поле выбора Byte Size (рис. 8). В этом случае вместо обычного (одиночного) входа разрешения записи данных используется шина, количество разрядов которой вычисляется автоматически в соответствии с указанным значением разрядности порта записи.
Для определения режима работы первого (или единственного) выходного порта элемента оперативной памяти, предназначенного для чтения данных, при выполнении операции записи данных в ОЗУ нужно воспользоваться группой кнопок с зависимой фиксацией Operating Mode. Если в нажатом состоянии находится кнопка Write First, то данные, поступающие во входной порт, записываются в соответствующую ячейку памяти (адрес которой задается комбинацией сигналов на адресных входах), после чего сразу передаются на выходы запоминающего устройства. На рис. 10 приведены временные диаграммы, которые поясняют работу генерируемого элемента оперативной памяти в режиме WRITE FIRST.
Идентификаторы сигналов, указанные на рис. 10–12, соответствуют системе условных обозначений входов и выходов, которая используется в модулях памяти, создаваемых с помощью генератора оперативных и постоянных запоминающих устройств Block Memory Generator:
- addra[M:0] и addrb[M:0] — адресные входы первого и второго порта соответственно;
- dina[N:0] и dinb[N:0] — информационные входы (записи) первого и второго порта соответственно;
- clka и clkb — входы сигнала синхронизации первого и второго порта соответственно;
- ena и enb — входы сигнала разрешения первого и второго порта соответственно;
- regcea и regceb — входы сигнала разрешения синхронизации выходных регистров первого и второго порта соответственно;
- wea и web — входы сигнала разрешения записи в первый и второй порт соответственно;
- ssra и ssrb — входы сигнала синхронного сброса/установки первого и второго порта соответственно;
- douta[N:0] и doutb[N:0] — выходы первого и второго порта соответственно.
При нажатии кнопки Read First в генерируемом элементе оперативной памяти будет установлен режим предварительного чтения данных из указанной ячейки перед записью новых данных в эту ячейку. Таким образом, при осуществлении операции записи данных, поступающих во входной порт формируемого элемента ОЗУ, на его выходах будет отображаться информация, которая содержалась в соответствующей ячейке перед этим (на предыдущем такте). Временные диаграммы, демонстрирующие работу генерируемого элемента оперативной памяти в режиме READ FIRST, представлены на рис. 11.
Когда в нажатое состояние переводится кнопка No Change, в формируемом элементе ОЗУ будет установлен режим блокировки выходов при выполнении операции записи данных. В этом режиме на протяжении всего цикла записи выходы находятся в зафиксированном состоянии, которое соответствует последним считанным данным, присутствовавшим в момент переключения сигнала разрешения записи в активное состояние. На рис. 12 представлено функционирование генерируемого элемента оперативной памяти в режиме NO CHANGE.
Во всех элементах памяти, создаваемых с помощью генератора Block Memory Generator, для каждого порта запоминающего устройства можно задействовать входы управления режимами разрешения/запрета выполнения операций. Для этого следует воспользоваться группой кнопок с зависимой фиксацией Enable (рис. 9). Если в нажатом состоянии зафиксирована кнопка Always Enabled, то в генерируемом элементе памяти будет постоянно установлен режим разрешения операций записи и чтения данных для первого (или единственного) порта (Port A). Чтобы сформировать элемент запоминающего устройства с входом разрешения операций для первого порта, нужно переключить в нажатое состояние кнопку Use ENA Pin. При этом в созданном элементе памяти выполнение операций записи и чтения данных для первого порта будет возможно только при активном уровне сигнала на входе разрешения ENA.
Для определения состояния выходного регистра или защелки формируемого запоминающего устройства в режиме сброса (или установки) следует воспользоваться полем редактирования Output Reset Value (Hex), которое расположено во встроенной панели Output Reset (рис. 9). Значение, указываемое в этом поле редактирования, должно быть представлено в шестнадцатеричном формате. При этом количество шестнадцатеричных символов должно соответствовать разрядности первого порта чтения данных. Чтобы задействовать в формируемом элементе памяти вход синхронного сброса (или установки) для первого порта (Port A), следует установить индикатор Use SSRA Pin, находящийся в этой же встроенной панели, в состояние «включено».
Если в стартовой диалоговой панели «мастера» настройки параметров генератора элементов памяти был выбран двухпортовый тип запоминающего устройства, то третья диалоговая панель будет иметь вид, показанный на рис. 13. Данная диалоговая панель позволяет определить основные параметры второго порта (Port B) создаваемого элемента памяти. Все параметры этого порта, за исключением разрядности, указываются так же, как и для первого порта (Port A). Количество разрядов второго порта записи данных не может быть установлено произвольно. Значение этого параметра должно быть кратным числу разрядов первого порта записи данных (с фиксированным набором коэффициентов кратности), которое было указано в диалоговой панели, представленной на рис. 9. Поэтому разрядность второго порта записи данных задается с помощью поля выбора Write Width, выпадающий список которого содержит только допустимые значения данного параметра. Содержимое этого списка автоматически корректируется при изменении значения разрядности первого порта записи данных.
Предпоследняя диалоговая панель «мастера» настройки параметров генератора оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС, позволяет выбрать тип и конфигурацию выходных регистров, а также указать параметры инициализации формируемого элемента памяти. Вид данной панели показан на рис. 14.
Для определения типа и конфигурации выходных регистров, включаемых в состав формируемого элемента памяти, следует воспользоваться индикаторами состояния, которые расположены во встроенной панели Optional Output Registers. В генерируемом запоминающем устройстве могут быть установлены два вида выходных регистров. Первый тип выходных регистров располагается непосредственно на выходе каждого примитива блочной памяти Block RAM primitive, используемого для построения формируемого запоминающего устройства. Кроме того, можно установить регистр непосредственно на выходе генерируемого элемента памяти. Способ подключения выходных регистров зависит от семейства ПЛИС, для которого формируется запоминающее устройство (точнее, от структуры блочной памяти кристаллов этого семейства). Рис. 15 демонстрирует применение выходных регистров, установленных на выходах каждого примитива блочной памяти, в ПЛИС семейств Virtex-II, Spartan-3, Spartan-3 XA, Spartan-3E, Spartan-3E XA, Spartan-3A.
Вариант установки регистров непосредственно на выходе генерируемого запоминающего устройства, реализуемого в кристаллах семейств Virtex-II, Spartan-3, Spartan-3 XA, Spartan-3E, Spartan-3E XA, Spartan-3A, показан на рис. 16.
Вариант совместного использования выходных регистров, рассмотренных выше, в запоминающих устройствах, выполняемых на базе ресурсов блочной памяти ПЛИС семейств Virtex-II, Spartan-3, Spartan-3 XA, Spartan-3E, Spartan-3E XA, Spartan-3A, представлен на рис. 17. Если в формируемом элементе памяти выходные регистры не задействуются, то данные с выходов примитивов блочной памяти через мультиплексор передаются сразу на выход этого запоминающего устройства.
В примитивах блочной памяти ПЛИС семейств Virtex-4 и Virtex-5 имеются встроенные выходные регистры. Поэтому структура запоминающего устройства с применением регистров, установленных на выходах каждого примитива блочной памяти в кристаллах этих семейств, отличается от структуры, показанной на рис. 15. Способ применения выходных регистров этого типа в ПЛИС семейств Virtex-4 и Virtex-5 поясняет рис. 18. При этом следует учитывать, что во встроенных выходных регистрах блочной памяти ПЛИС семейства Virtex-5 имеется вход синхронной установки, который отсутствует в кристаллах семейства Virtex-4.
На рис. 19 представлена структура запоминающего устройства, реализуемого на основе блочной памяти ПЛИС семейств Virtex-4 и Virtex-5, с применением регистров, установленных непосредственно на выходах формируемого элемента памяти.
Вариант построения запоминающего устройства, реализуемого на базе блочной памяти ПЛИС семейств Virtex-4 и Virtex-5, с совместным использованием выходных регистров различного типа приведен на рис. 20.
Чтобы ввести в состав формируемого запоминающего устройства регистры на выходах каждого примитива блочной памяти Block RAM primitive, следует переключить индикатор Register Output of Memory Primitives в состояние «включено» (рис. 14). Для установки регистра непосредственно на выходе генерируемого элемента памяти нужно перевести в активное состояние индикатор Register Output of Memory Core. Если в выходном регистре первого и/или второго порта необходимо задействовать вход разрешения сигнала синхронизации, то следует установить в состояние «включено» индикаторы Use REGCEA Pin и/или Use REGCEB Pin соответственно. Когда в формируемом запоминающем устройстве выходные регистры не используются, индикаторы состояния Use REGCEA Pin и Use REGCEB Pin находятся в недоступном состоянии.
Для автоматической инициализации содержимого генерируемых запоминающих устройств, реализуемых на основе блочной памяти ПЛИС, следует определить значения соответствующих параметров с помощью элементов управления, которые расположены во встроенной панели Memory Initialization (рис. 14). Информацию, которую нужно записать в соответствующие ячейки формируемого элемента памяти, можно указать в виде файла формата COE. Для этого нужно, прежде всего, переключить индикатор Load Init File в состояние «включено», после чего станут доступными поле редактирования COE File и кнопка Browse. При нажатии на данную кнопку на экран выводится стандартная панель диалога открытия файла, с помощью которой нужно найти на одном из дисков компьютера требуемый файл, описывающий содержимое создаваемого запоминающего устройства. После выбора соответствующего файла и закрытия стандартной диалоговой панели его название автоматически отображается в поле редактирования COE File. Можно также с помощью клавиатуры сразу указать в этом поле редактирования название требуемого файла инициализации, не выполняя процедуру его поиска. Для быстрого просмотра содержимого выбранного файла нужно воспользоваться кнопкой Show, которая находится во встроенной панели Memory Initialization.
Если указываемый файл инициализации описывает содержимое только части генерируемого запоминающего устройства, то все оставшиеся неинициализированными ячейки памяти могут быть заполнены по умолчанию значением, определяемым пользователем. С этой целью нужно установить индикатор Fill Remaining Memory Locations в состояние «включено». При этом становится доступным поле редактирования Remaining Memory Locations (Hex), в котором нужно с помощью клавиатуры указать шестнадцатеричное значение, записываемое по умолчанию в ячейки памяти, оставшиеся неопределенными. Количество шестнадцатеричных символов, указываемых в этом поле редактирования, должно соответствовать разрядности первого порта записи генерируемого запоминающего устройства.
Заключительная диалоговая панель «мастера» настройки генератора оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС, предназначена для определения параметров моделей формируемых элементов. В этой же панели, представленной на рис. 21, отображается информация об установленных значениях основных параметров создаваемого запоминающего устройства.
Генератор оперативных и постоянных запоминающих устройств Block Memory Generator автоматически формирует два вида моделей создаваемых элементов памяти: поведенческую и структурную. Поведенческая модель представляет собой упрощенную функциональную модель запоминающего устройства, которая предназначена для быстрой верификации разрабатываемого устройства. Структурная модель генерируемого элемента памяти точнее описывает его функционирование и позволяет получить более достоверные результаты моделирования. Недостатком использования структурной модели создаваемого запоминающего устройства по сравнению с поведенческой является существенное увеличение временных затрат при выполнении процесса моделирования.
Параметры структурной модели указываются с помощью группы кнопок с зависимой фиксацией Structural/UNISIM Simulation Model Options. Данные кнопки позволяют указать, какие сообщения (предупреждения) и выходные сигналы будут вырабатываться в процессе моделирования в случае обнаружения конфликтов при одновременном выполнении операций чтения и записи данных или записи информации в два порта запоминающего устройства. Если в нажатом состоянии зафиксирована кнопка All, то при появлении конфликтной ситуации в структурной модели будут генерироваться выходные сигналы неопределенного уровня (X), которые сопровождаются соответствующими предупреждениями. При нажатой кнопке None обнаружение конфликтов не отражается в выходных сигналах, и вывод диагностических сообщений не производится. Когда в нажатом состоянии находится кнопка Warning Only, в структурной модели генерируются только предупреждения о конфликтной ситуации. Если нажата кнопка GenerateX — Only, то при возникновении конфликтов в процессе одновременного выполнения операций чтения и записи данных или записи информации сразу по двум портам сигналы на выходах запоминающего устройства устанавливаются в неопределенное состояние без отображения соответствующих предупреждений.
Параметры поведенческой модели устанавливаются с помощью индикаторов состояния, которые расположены во встроенной панели Behavioral Simulation Model Options. Чтобы заблокировать формирование предупреждений о конфликтных ситуациях в процессе чтения и записи данных, следует перевести индикатор Disable Collision Warnings в состояние «включено». Для запрета предупреждений, генерируемых при выходе адреса чтения или записи данных за пределы допустимого адресного пространства формируемого элемента памяти, нужно установить индикатор Disable Out of Range Warnings в состояние «включено». Чтобы учесть влияние синхронности тактовых сигналов в двухпортовых запоминающих устройствах при генерации предупреждений о конфликтных ситуациях, следует переключить индикатор Assume Synchronous CLKA and CLKB to Determine Collision Warnings в состояние «включено».
Краткая информация об установленных значениях основных параметров создаваемого запоминающего устройства отображается на встроенной панели Information (рис. 21). Здесь приводятся сведения о выбранном типе запоминающего устройства Memory Type; суммарной длительности задержки появления выходных сигналов при выполнении операции чтения данных, выраженной в количестве периодов тактового сигнала, Total Read Latency; количестве разрядов адресной шины (адресных входов) для каждого порта элемента памяти Address Width. Если необходимо скорректировать значение какого-либо параметра, следует с помощью кнопки Назад (Back) вернуться к предыдущим диалоговым панелям «мастера» настройки параметров генератора оперативных и постоянных запоминающих устройств, реализуемых на основе блочной памяти ПЛИС.
При замене элементов памяти, созданных ранее с помощью ядер Single Port Block Memory и Dual Port Block Memory, следует учитывать, что описания запоминающих устройств, генерируемые с помощью параметризированного модуля Block Memory Generator, не обладают полной обратной совместимостью с этими элементами. В частности, различаются названия некоторых входов и выходов формируемых запоминающих устройств. Поэтому далее приводятся примеры описаний основных типов запоминающих устройств, сформированных генератором Block Memory Generator, которые в наглядном виде демонстрируют способ их применения.
В качестве примера однопортового элемента оперативной памяти, созданного с помощью генератора Block Memory Generator, далее приводится описание ОЗУ blk_mem_singl_ram с информационной емкостью 8 кбит и организацией 512 слов × 16 разрядов. В нем использованы два типа выходных регистров со входами разрешения синхронизации и синхронного сброса. Шина адреса данного запоминающего устройства содержит девять разрядов:
Для декларации сформированного компонента однопортового ОЗУ в состав VHDL-описания разрабатываемого устройства необходимо включить следующую последовательность выражений:
Создание экземпляра компонента однопортового ОЗУ со структурой и параметрами модуля оперативной памяти blk_mem_singl_ram в описании проектируемого устройства выполняется с помощью следующего оператора:
Примером двухпортового элемента оперативной памяти, сгенерированного с помощью параметризированного модуля Block Memory Generator, является ОЗУ с информационной емкостью 16 кбит blk_mem_dual_ram, описание которого выглядит следующим образом:
ВОЗУ blk_mem_dual_ram используются два независимых порта записи и два раздельных порта чтения данных. Первый порт записи и первый порт чтения Port A этого элемента оперативной памяти имеют организацию 1024 слова × 16 разрядов, а вторая пара портов записи и чтения Port B — 512 слов × 32 разряда. Разрядность шины адреса первого порта равна 10, второго — 9. В состав сформированного запоминающего устройства включены регистры, установленные на выходе каждого примитива блочной памяти ПЛИС и непосредственно на выходе этого элемента. В этих выходных регистрах задействованы входы разрешения синхронизации (раздельные для каждого выходного порта). Длительность задержки появления сигналов на выходах при выполнении операции чтения данных составляет три периода тактового сигнала. Декларация компонента двухпортового ОЗУ сформированного вида в описании разрабатываемого устройства осуществляется с помощью приведенной ниже последовательности выражений:
Для создания экземпляра двухпортового ОЗУ вида blk_mem_dual_ram необходимо добавить в состав описания архитектуры проектируемого устройства следующий оператор:
Формирование элементов постоянной памяти с одним выходным портом с помощью генератора Block Memory Generator иллюстрирует ПЗУ blk_mem_singl_rom. Информационная емкость данного ПЗУ составляет 32 кбит с организацией 1024 слова × 32 разряда. В состав запоминающего устройства blk_mem_singl_rom включены регистры со входами разрешения синхронизации и синхронного сброса, установленные непосредственно на его выходах. Суммарная длительность задержки появления выходных данных составляет два периода тактового сигнала:
Блок декларации представленного выше модуля ПЗУ blk_mem_singl_rom при использовании его в качестве компонента проектируемого устройства имеет следующий вид:
Создание экземпляра компонента blk_mem_singl_rom в описании разрабатываемого устройства осуществляется с помощью представленного далее оператора, который должен быть включен в состав архитектурного блока:
Примером применения генератора Block Memory Generator для создания двухпортовых ПЗУ является следующее описание модуля постоянной памяти blk_mem_dual_rom с информационной емкостью 32 кбит:
В представленном двухпортовом ПЗУ первый порт имеет организацию 2048 слов × 16 разрядов, а второй — 1024 слова × 32 разряда. Шина адреса первого порта содержит 11 разрядов, второго — 10. В данном элементе постоянной памяти используется двухступенчатая организация выходных регистров. При этом общая длительность задержки появления выходных сигналов составляет три периода тактового сигнала. Для каждого порта предусмотрен соответствующий сигнал разрешения. Инициализация содержимого сформированного ПЗУ осуществляется из файла с названием file_prog.
Для декларации компонента blk_mem_dual_rom необходимо поместить в состав VHDL-описания разрабатываемого устройства приведенную далее последовательность выражений:
Создание экземпляра модуля двухпортовой постоянной памяти с организацией и параметрами blk_mem_dual_rom осуществляется с помощью следующего оператора:
Продолжение следует