Создание ПЗУ в ISE WebPack

ПЗУ микросхема ПЛИС В этой статье рассматривается способ создания ПЗУ на ПЛИС фирмы Xilinx, которым я в работе успешно пользуюсь. Постоянное запоминающее устройство (ROM) нам может понадобиться для различных целей. Например, ПЗУ часто используют вместо какого-либо устройства комбинаторной логики для преобразования кодов. ПЗУ также используют в синтезаторах DDS в качестве хранилища таблицы функции SIN, для чего на адресные входы ПЗУ подаётся линейный код аргумента функции SIN, а с выхода ПЗУ снимается код значения этой функции.

В среде ISE WebPack проще всего создать ПЗУ, используя программу IP (Core Generator). В ПЛИС фирмы Xilinx имеется возможность создать два типа ПЗУ: на основе блочной памяти и на основе распределенной памяти. Блочная память относится к специальным аппаратным ресурсам ПЛИС типа FPGA. Эта память представляет собой несколько быстродействующих блоков (в серии Spartan – это два либо четыре блока емкостью 18 Кбит каждый). Распределенная память зиждется на обычных логических  ячейках ПЛИС. При этом она является гораздо менее быстродействующей, чем блочная.

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

Итак, чтобы сделать COE-файл, необходимо в папке с нашим проектом создать текстовый документ и перенаименовать его в pzu8x64.coe – это означает что в ПЗУ хранятся ровно восемь ячеек, каждая представляет собой 64-разрядный код.

После этого с помощью программы Total Commander (либо другим способом) открыть этот файл на редактирование (нажав функциональную кнопку F4 на клавиатуре). Далее, копируем в него следующий текст:

; Initialization file for a pzu 8 x 64 block ROM for register1

memory_initialization_radix = 16;

memory_initialization_vector =

12ADCDFD12ADCDFD,

C4568DFE12ADCDFD,

A4568DFE12ADCDFD,

445F8DFE12ADCDFD,

94568DFE12ADCDFD,

645F8DCE12ADCDFD,

D4568DFE12ADCDFD,

D45F8DAE12ADCDFD;

Приведу краткую расшифровку:

- в первой строке до конца строки идет некомпилируемый комментарий (поскольку стоит после точки с запятой)

- вторая строка memory_initialization_radix = 16 указывает, что при описании содержимого ПЗУ будет использоваться шестнадцатеричная система счисления; при желании, можно использовать двоичную, восьмеричную и десятичную системы счисления, указав вместо числа 16 соответственно 2, 8 либо 10. Но тогда нужно приготовиться  к тому, что запись содержимого будет более громоздкой

- третья строка и последующие восемь строк перечисляют через запятую содержимое каждой ячейки, начиная с первой, имеющей адрес 000 и заканчивая последней с адресом 111. Таким образом, в ячейку с адресом 000 будет записано число 12ADCDFD12ADCDFD; в принципе, перечисление содержимого можно вести и в одну строчку через запятую, но, на мой взгляд, приведенная запись всё-таки является более удобной

Таким образом, наш COE-файл готов.

Описание создания ПЗУ будет представлено в видеоуроке.

Об авторе admin

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

2 комментария на «Создание ПЗУ в ISE WebPack»

  1. stud говорит:

    У МЕНЯ ВЫДАЕТ ОШИБКУ::: sim – The Memory Initialization vector can contain between 1 to Write
    Depth A number of entires

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