Видеоурок №4. Создание ПЗУ в IP Coregen

В этом видеоуроке мы рассмотрим работу в модуле IP CoreGen пакета программ xilinx webpack ise. В качестве подопытного кролика разберем создание элемента ПЗУ на основе блочной памяти FPGA в виде IP-элемента.

Создание COE – файла для ПЗУ было рассмотрено ранее.

Здравствуйте, друзья! В этом видеоуроке мы рассмотрим создание ПЗУ (постоянное запоминающее

устройство), или ROM (read only memory) в программе ISE WebPack. Для этого, открываем наш созданный проект register1. В контекстном меню файла register1.sch выбираем пункт New Source и  далее выбираем пункт IP, в поле File Name вводим pzu8x64, нажимаем далее, и в закладке View by function выбираем Memories & Storage Elements/RAMs and ROMs/BlockMemoriGenerator 6.2. Нажимаем Next и Finish. Ждем некоторое время.

В появившемся окне нажимаем на кнопку DATASHEET и сохраняем описание IP-компонента в папке XProject/XDatasheet в виде PDF-документа. Нажимаем NEXT и в поле Memory Type выбираем SinglPort ROM и нажимаем NEXT.

В блоке Memory Size в поле Read Width указываем разрядность выходной шины данных. В нашем случае это 64. В поле Read Depth указываем, например, 8. Это число обозначает количество  64 разрядных ячеек в нашем ПЗУ. Иначе говоря, значение в поле Read Depth равно 2 в степени A , где A – разрядность шины адреса. В блоке Enables отмечаем пункт Always Enabled.

Переходим к следующему шагу. Здесь в блоке Memory Initialization отмечаем галкой пункт load init file и в поле Coe file нам необходимо с помощью кнопки Browse выбрать файл с содержимым нашего будущего ПЗУ. Если вдруг созданный нами COE-файл оказывается с ошибкой (например, не совпадают разрядности шин адреса или данных), то текст в этом поле подсветится красным. Соответственно, COE-файл необходимо будет исправить. Нажав на кнопку Show, можно убедится в достоверности COE-файла, либо получить подсказку о возможной ошибке. Переходим к следующему шагу.

Здесь можно задать начальное значение (по умолчанию) для выходной шины ПЗУ. Именно это значение будет появляться на выходе ПЗУ тогда, когда произошло включение питания, а синхросигнал CLK ещё не подан. Так же можно задействовать RSTA, который будет это выходной шине значение присваивать принудительно, имея активный уровень на входе. Для его использования необходимо поставить галочку напротив Use RSTA-PIN.

Переходим к следующему шагу и нажимаем Generate.

Переходим к основному окну нашего проекта и наблюдаем, что в Hierarchy у нас появился новый элемент pzu8x64 с желтым значком. Этот элемент, который пока еще не принадлежит нашей схеме, нужно вынести на схему. Для этого в нижней панели закладок выбираем закладку Symbols, в верхнем окне Categories выбираем папку нашего проекта и в окне Symbols видим, что в ней пока только один элемент, созданный с помощью программы IP Core Generator.

Вытаскиваем ПЗУ на схему. Видим, что его условно-графическое обозначение автоматически создано довольно большим. Необходимо его уменьшить, чтобы он не загромождал всю схему, для этого в контекстном меню нашего элемента выбираем Symbol/Edit symbol и слегка редактируем внешний вид нашего элемента. Нажимаем кнопку Сохранить все и снова открываем нашу схему. Щелкнув левой кнопкой рядом с символом ПЗУ, тем самым сняв его выделение,  тут же всплывает окошко, предлагающее нам обновить на схеме устаревший символ. Выделяем строку с символом и нажимаем Update. Видим, что символ на схеме обновился.

Иногда содержимое ПЗУ нужно изменить, например, поменять разрядности, содержание ячеек, добавить порты ввода/вывода и тому подобные вещи.  Для этого в контекстном меню вызываем команду Symbol / Push into symbol и убираем, к примеру, контакт RSTA из списка портов нашего элемента. Нажимаем Generate.

После того, как процесс создания завершился, точно также снимаем выделение с УГО ПЗУ и в появившемся окне обновляем наш элемент.

Итак, в этом видеоуроке мы с вами научились не только создавать полноценный элемент ПЗУ на ПЛИС,  но и познакомились с основами использования программы IP Core Generator. До скорых встреч!

Об авторе admin

Инженер. Окончил НГТУ по специальности "Радиосвязь, телевидение и радиовещание". С 2003 г. занимаюсь разработкой электронной начинки различных радиотехнических устройств и приборов.
Запись опубликована в рубрике Все статьи, Только у нас! Видеоуроки XILINX ISE WebPack. Добавьте в закладки постоянную ссылку.

13 комментариев на «Видеоурок №4. Создание ПЗУ в IP Coregen»

  1. stud говорит:

    Здравствуйте!
    пытаюсь создать ПЗУ для хранения данных (для 16 кадров)…

    нужно в coe fail задать слова, не подскажите как это сделать?

  2. stas говорит:

    Здравствуйте!Скачал последнюю версию ISE.Все предыдущие уроки прошёл.Потом пытался запустить модуль IP.Сам модуль запускается,но выбрать устройство не получается.Причем в списке они видны,но затенены,поэтому и не выбираются.Может нужна другая лицензия?

  3. stas говорит:

    Делал всё,как сказано в уроке.Тип xc3s200-4tq144.Кликаю правой кнопкой на registr1.sch.,потом new source wizard-IP-ввожу имя-next.Загружается список всех всех IP.Но при просмотре они все затенены.А,да, ещё внизу надпись-This core is not supported by your current part.Что бы это значило?

  4. stas говорит:

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

  5. stas говорит:

    Я так понимаю,что компания xilinx вообще отказалась от бесплатной поддержки IP?.Потому что из тех сообщений,насколько я понял английский,они предлагают установить полную(т.е. платную) версию для полной поддержки.А переходить на старую версию это как-то неправильно.

    • admin говорит:

      Ну почему же неправильно? Версия 14.1 или 14.2 – это последние версии, которые поддерживают выбранную Вами относительно устаревшую серию Spartan3. Я, честно говоря, вообще удивлен, что на 12 или 13 версии не отказались от поддержки устаревших серий ПЛИС. А разработчикам, использующим Spartan 2, вообще приходится 6 или 7 версии качать.

Оставить комментарий