Lexus

Использование ПЛИС в DAC

63 сообщения в этой теме

Lexus    944

К созданию данной темы меня побудила как личная переписка с пользователями форумов, так и периодически возникающие вопросы о совмещении транспортов и плат DAC, имеющих различный формат передачи данных. Многие уже опытные разработчики или только готовящиеся к самостоятельному построению DAC начинающие ЦАПостроители хотели бы снабдить свои изделия полезными функциями, для реализации которых требуются относительно сложные цифровые схемы. В данной теме я постараюсь подробно рассказать о создании проектов цифровых схем на ПЛИС, начиная от знакомства с соответствующим "софтом" и заканчивая процессом загрузки проекта в ПЛИС. Приветствуется обсуждение различных алгоритмов работы цифровых схем, применяемых в ЦАПострое, выбор подходящей ПЛИС, вариантов трассировки печатных плат в области установки ПЛИС, а также других вопросов, так или иначе связанных с использованием ПЛИС в DAC.

Тема не совсем профильная в данном разделе, так как для работы с ПЛИС есть отдельный раздел в "Микроконтроллерах". Но создавать данную тему там мне кажется нелогичным.

Что такое ПЛИС? Это программируемая логическая интегральная схема. На кристалле ПЛИС может размещаться логическая схема, состоящая из примитивов, триггеров, их комбинации. Функционально это точно такая же схема, как и собранная из интегральных микросхем серии 74. Но в сравнении с дискретными логическими схемами ПЛИС имеет ряд преимуществ, главные из которых - это:

  1. Существенно меньшие габариты схемы;
  2. Существенно меньшее потребление тока от источника питания;
  3. Высокое быстродействие (для верхних моделей ПЛИС время распространения сигнала по кристаллу выражается единицами и десятыми долями наносекунд);
  4. Меньшее по сравнению с дискретными системами излучение ВЧ помех в окружающее пространство;
  5. Относительная простота трассировки печатных плат с установленными на ней ПЛИС;
  6. Простота внесения изменений в логическую схему.

Это достаточные аргументы для того, чтобы задуматься о целесообразности использования дискретной логики вообще, за исключением схем, где использование потенциала ПЛИС не оправдано. Например, когда требуется один логический элемент "И-НЕ" или простой делитель частоты на 2.

Отдельно я хотел бы выделить пункт №6. Дело в том, что архитектура ПЛИС позволяет размещать на кристалле самые разнообразные логические схемы, и переход от одной схемы к другой абсолютно безболезнен, тогда как для дискретной схемы добавление всего одного логического элемента в схему означает внесение изменений в печатную плату. А если нужно добавить триггер или регистр сдвига? В случае с ПЛИС это займет не более нескольких минут и не повлияет на печатную плату.

Для чего ПЛИС в ЦАПострое вообще? Оправдано ли ее использование? DAC (Digital to Analog Converter), как устройство в целом, содержит в себе цифровую часть. Она может быть относительно простой. Например, USB-кодеки PCM270x и PCM290x практически не требуют внешних логических элементов. Простая цифровая часть и у DAC структуры "S/PDIF-приемник + ЦАП". Но, углубляясь в тему ЦАПостроя, рано или поздно сталкиваешься с полностью синхронными системами. Это системы, где главный тактовый сигнал (Masterclock - MCLK) вырабатывается генератором, расположенным возле ИМС ЦАП, и обеспечивает синхронную работу всех частей цифровой системы, включая транспорт. Главное преимущество синхронной системы перед плезиохронной (условно синхронной) заключается в обеспечении ИМС ЦАП "чистым" тактовым сигналом (если это ЦАП архитектуры Сигма-Дельта) или "чистыми" сигналами управления (если это ЦАП R-2R). Под "чистыми" сигналами здесь подразумеваются цифровые сигналы, подверженные малому влиянию "джиттера" (фазового шума). О плюсах данной системы здесь говорить не буду, отметив лишь, что данное построение системы является верхним уровнем в ЦАПострое. В таких системах ПЛИС может выполнять различные полезные функции. Например: переключать цифровые входы, преобразовывать один цифровой формат передачи данных в другой, обеспечивать такт транспорту, цифровому фильтру, следить за установками и перезапускать систему в случае их изменения, определять разрядность и частоту дискретизации входного потока, перенаправлять потоки в зависимости от их формата, переключать опорные генераторы для разных сеток частот дискретизации, восстанавливать тайминги цифровых сигналов, прошедших через длинные линии передачи и многое другое. Одним словом, может выполнять такие функции, которые нужны разработчику, и которые этот разработчик может реализовать. :)

Помимо полностью синхронных систем DAC, встречаются ситуации, когда имеющиеся в наличии транспорт и плата DAC с установленными на ней цифровыми ИМС не могут обеспечить нормального функционирования в силу различных цифровых форматов передачи данных. Например, транспорт имеет на цифровом выходе формат I2S, а DAC работает только с RJ. Проблемной такую ситуацию не назвать, но вот пути ее решения могут быть разными – дискретная схема габаритами сравнимыми с платой DAC и с приличным аппетитом к источнику питания или небольшая плата с ПЛИС.

Что нужно для того, чтобы начать работать с ПЛИС:

  1. Обязательно знание и понимание принципов работы логических элементов – как простых, так и сложных комбинированных. Без этого просто невозможно построить цифровую схему;
  2. Хотя бы поверхностно познакомиться с архитектурой ПЛИС класса CPLD. На русском языке материал по семейству MAX3000A производства Altera представлен по следующей ссылке: http://altera.ru/cgi-bin/go?44
  3. Загрузить САПР Quartus II 9.1 SP 2 Build 350. К сожалению, Altera удалила из архивов информацию о предыдущих версиях Quartus и загрузить эти версии можно только на просторах Интернета. Например: http://rutracker.org/forum/viewtopic.php?t=3723674 Никаких авторских прав это не нарушит, так как Web Edition является бесплатной версией с некоторыми ограничениями, для нашего дела несущественными. Почему нельзя загрузить последнюю версию Quartus с официального сайта Altera. К сожалению, в версиях старше 9.1 разработчики удалили крайне удобное встроенное средство моделирования. Вместо него предложен к использованию другой пакет, который требует освоения. Но основная причина моего отказа от изучения "передового софта" - это вовсе не сложность освоения, но именно удобство и простота при достаточных возможностях встроенного средства моделирования;
  4. Изготовить загрузочный кабель Altera ByteBlasterMV. Официальный документ на кабель прилагаю к сообщению. Присутствие в названии кабеля букв "MV" означает "MultiVolt". Загрузочный кабель может работать как в системах с напряжением питания +5 v, так и с +3.3 v. Кабель подсоединяется к параллельному порту ПК – LPT. Данный порт ныне уходит на свалку истории, поэтому могут возникнуть некоторые сложности. Сразу отмечу, это важно: ни с адаптерами ExpressCard или PCMCIA в случае ноутбука, ни с адаптерами PCI в случае десктопа работать не получится. Необходим "железный" порт LPT на материнской плате ПК. Если таковой порт отсутствует, выходов из ситуации два: покупка USB Blaster или сборка небольшого десктопа на устаревшем "железе". Для работы с Quartus без "тормозов" будет достаточно десктопа с конфигурацией вроде Pentium 4 3.0 GHz, 1Gb RAM. Учитывая цену на USB Blaster, я выбрал второй вариант. Описание загрузочного кабеля ByteBlasterMV на русском языке (перевод приложенного документа) можно найти по ссылке: http://altera.ru/cgi-bin/go?35

Фотографии моего загрузочного кабеля ByteBlasterMV:

post-3963-0-69820400-1319364965_thumb.jpg post-3963-0-70151300-1319364977_thumb.jpg

Схема кабеля полностью соответствует схеме, указанной в официальном документе Altera. Для уменьшения габарит я использовал резисторы для поверхностного монтажа типоразмера 0805. Шунтирующие питание конденсаторы – электролитический и керамический. Номиналы конденсаторов могут варьироваться в пределах 10-47 uF для первого и 0.01-0.1 uF для второго. Микросхему 74HC244 настоятельно рекомендую установить в панельку. Случаи их выхода из строя редки, но если уж это произойдет, то замена будет не сложной. Важно! Длина кабеля от микросхемы до разъема IDC-10 не должна превышать 25 см для устойчивого процесса загрузки конфигурации. Для удлинения кабеля необходимо использовать Pin-to-Pin DB25 кабель. Соединены должны быть все 26 проводников – 25 сигнальных и один GND на корпус, для исключения повреждения схемы при различных потенциалах корпуса ПК и программируемого устройства. Несмотря на достаточные меры по обеспечению защиты от выхода компонентов из строя, я настоятельно рекомендую не подключать и не отключать кабель при работающей схеме. Соблюдайте соответствие пинов разъема IDC-10, это стандартная колодка JTAG.

Поскольку я работаю с ПЛИС производства Altera, то и все материалы соответствуют их продукции. Это не дискриминация других производителей, которые ничем не хуже Altera, но просто мой личный выбор. Самый главный конкурент Altera – такой же гигант Xilinx.

ПЛИС существуют двух классов – CPLD и FPGA. Первый класс представляет собой готовый для работы кристалл. На нем уже размещена конфигурационная память, из которой данные о внутренних связях при включении получает ПЛИС. При загрузке проекта в ПЛИС загружается именно конфигурационная память. ПЛИС класса CPLD – это достаточно мощные и емкие устройства. Количество макроячеек (грубо говоря, количество доступных триггеров) для данного класса может составлять до 512 для семейства MAX3000A и до 256 для MAX7000S, как наиболее часто используемых в ЦАПострое. Для этих двух семейств САПР Quartus точно вычисляет задержки распространения сигналов по кристаллу. Более поздние семейства MAX II и MAX V позволяют размещать большие проекты, но представляют собой по сути "FPGA + конфигурационная память" на одном кристалле, а потому названы CPLD.

ПЛИС класса FPGA для работы требуют внешнюю конфигурационную память, имеют отличную от CPLD внутреннюю архитектуру и гораздо больший объем. К ним не применяется определение "макроячейка". Вместо него емкость описывается количеством логических элементов. Для данного класса ПЛИС в САПР разработчик может самостоятельно варьировать задержками распространения сигналов по кристаллу за счет расположения блоков схем в различных участках кристалла. FPGA – ПЛИС большой интеграции. На кристалле могут быть расположены готовые модули – синтезаторы частот, блоки ЦОС, ФАПЧ.

Как уже упоминалось выше, наиболее часто используемыми в ЦАПострое ПЛИС являются два семейства – MAX7000S и MAX3000A. Обратите внимание на букву "S" для семейства MAX7000. Именно эти представители семейства работают с ISP (In-System Programmability) и допускают программирование в готовом устройстве. Другие представители семейства MAX7000 могут быть запрограммированы только специальным программатором. Семейство MAX7000S представляет собой CPLD с номинальным напряжением +5 v питания ядра и портов. Для семейства MAX3000A это значение составляет +3.3 v. Допускается напряжение питания портов +5 v при номинальном напряжении питания ядра, но нужно быть крайне аккуратным при этом – внешние pull-up резисторы нередко выводят порты из строя.

Обозначение микросхем следующее: EPM7xxxS и EPM3xxxA. Здесь "xxx" отражает емкость ПЛИС – количество макроячеек. Например, EPM7128S обозначает ПЛИС семейства MAX7000S с 128 макроячейками. EPM3032A обозначает ПЛИС семейства MAX3000A с 32 макроячейками. После буквы "S" или "A" следует буква, соответствующая типу корпуса: L – PLCC, T – TQFP, Q – PQFP. Далее следует буква "C" или "I", которая обозначает коммерческое или индустриальное исполнение. Эти два исполнения отличаются допустимым рабочим диапазоном температуры окружающего воздуха. Для коммерческого исполнения это диапазон 0...70°c, для индустриального -40...85°c. После буквы исполнения следуют цифры, соответствующие количеству выводов корпуса. И завершает обозначение грейд быстродействия – Pin-to-Pin задержка распространения сигнала.

Рассмотрим для примера полное наименование ПЛИС – EPM7064STC44-10. Это CPLD семейства MAX7000S с количеством макроячеек – 64, в корпусе TQFP44, коммерческого исполнения, с грейдом быстродействия -10 ns. Другой пример – EPM3256AQI208-10. Это CPLD семейства MAX3000A с количеством макроячеек – 256, в корпусе PQFP208, индустриального исполнения, с грейдом быстродействия -10 ns.

Итак. Минимально необходимая вводная часть закончена. Более подробную информацию можно получить на сайте производителя - http://www.altera.com/ Там же можно найти техническую документацию, чертежи корпусов, назначение пинов для любой ПЛИС. А сейчас самое время переходить к САПР Quartus.

Altera ByteBlasterMV.pdf

  • Одобряю 6

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
Lexus    944

Установка и первый запуск САПР Quartus.

Запускаем инсталляционный файл и дожидаемся приветственного окна. Запуск файла продолжительный, так как инсталлятор идет одним исполняемым файлом размером 1.85 Gb.

post-3963-0-98635600-1319368087_thumb.png

Нажимаем кнопку "Next". В следующем окне принимаем условия лицензионного соглашения, выбрав "I accept the terms of the license agreement", и снова нажимаем кнопку "Next". В следующем окне необходимо указать свое имя и наименование компании. Можно указать любую информацию. Обычно, я указываю компанию "Home". Нажимаем "Next".

post-3963-0-80451500-1319368168_thumb.png

По умолчанию пакет устанавливается на диск C. Можно либо оставить папку назначения по умолчанию, либо выбрать свою. Папка не должна содержать русских букв и пробелов. "Next".

Следующее окно – выбор папки в меню "Пуск". Оставляем по умолчанию, нажимаем "Next". В следующем окне выбираем тип установки – "Complete" и нажимаем "Next", запустив тем самым процесс копирования файлов.

По окончанию копирования файлов появится окно "Quartus II TalkBack".

post-3963-0-68138100-1319368249_thumb.png

Снимаем галочку "Enable sending TalkBack data to Altera" и нажимаем "OK". В последнем окне снимаем галочку "View readme.txt" и нажимаем кнопку "Finish". Установка завершена.

Запускаем Quartus из меню "Пуск", выбрав Altera -> Quartus II 9.1sp2 Web Edition -> Quartus II 9.1sp2 Web Edition:

post-3963-0-93662500-1319368337_thumb.png

Появится окно программы и поверх него окно "Look & Feel":

post-3963-0-75799700-1319368409_thumb.png

Это окно предназначено для пользователей, привыкших к старому Max+Plus II, поэтому выбираем "Quartus II" и нажимаем "OK". Следующее окно:

post-3963-0-33440100-1319368465_thumb.png

Выбираем "Run the Quartus II software", нажимаем "OK". Когда появится окно "Getting Started With Quartus II Software", закрываем его, нажав крестик в правом верхнем углу:

post-3963-0-03082800-1319368539_thumb.png

Quartus готов к работе. Окно подсказок ("Tips and Tricks") можно закрыть, а окно программы развернуть.

post-3963-0-52709600-1319368598_thumb.png

Создание проекта.

Меню Quartus может испугать своим разнообразием. Тем не менее, многих установок по умолчанию достаточно для подавляющего большинства проектов, а в нашем случае – для всех. Важные для любого проекта установки будут произведены по ходу составления проекта.

Первым делом необходимо создать проект. Пусть это будет проект преобразователя формата - I2S to RJ. В удобном месте жесткого диска создаем папку для проектов Quartus. Желательно, чтобы путь к папке не содержал русских букв и пробелов, так как могут возникнуть ошибки. В этой папке создаем папку проекта i2s_to_rj. В меню "File" выбираем "New Project Wizard...".

post-3963-0-07059200-1319369028_thumb.png

Появится окно "New Project Wizard Introduction":

post-3963-0-91468700-1319369061_thumb.png

Отмечаем галочкой пункт "Don’t show me this introduction again", тем самым отключив отображения этого окна в будущем, и нажимаем кнопку "Next".

В появившемся окне в поле "What is the working directory for this project?" указываем папку, в которой будут храниться файлы проекта, а в поле "What is the name of this project?" указываем имя проекта – i2s_to_rj. По ходу написания имени проекта в третьем поле будет дублироваться имя.

post-3963-0-59526600-1319369170_thumb.png

Нажимаем "Next" и переходим к следующему окну:

post-3963-0-96472700-1319369206_thumb.png

Это окно предназначено для добавления существующих файлов в проект. Это могут быть файлы текстового или графического описания схем из других проектов. Сейчас это не требуется, поэтому нажимаем "Next" и переходим к следующему окну.

post-3963-0-20377500-1319369256_thumb.png

В поле "Family" выбираем MAX7000S. Так как размер проекта нам не известен, отмечаем пункт "Auto device selected by the Fitter". Данный пункт означает автоматический выбор ПЛИС из указанного семейства при компиляции. После компиляции проекта можно будет изменить тип ПЛИС на любой подходящий. Нажимаем "Next".

post-3963-0-38288500-1319369389_thumb.png

В этом окне ничего менять не нужно. По умолчанию во всех полях указано "None" и Quartus использует встроенные средства для всех стадий проектирования. Так и оставляем. "Next".

Последнее окно отражает свойства создаваемого проекта:

post-3963-0-42068700-1319369450_thumb.png

Нажимаем "Finish". Проект создан.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Работа с проектом. Создание главного файла и ввод схемы.

В первую очередь в проект необходимо добавить главный файл. Выбираем в меню "File" пункт "New". Появится окно выбора типа файла.

post-3963-0-11772000-1319370351_thumb.png

Здесь можно создать как схемный, так и текстовый файл. Начнем с простого – схемного файла. Указываем "Block Diagram/Schematic File" и нажимаем "OK", создав тем самым схемный файл.

post-3963-0-58415200-1319370400_thumb.png

Выбираем в меню "File" пункт "Save As...".

post-3963-0-68219600-1319370547_thumb.png

Quartus сам вписывает имя в поле "Имя файла". В данном случае это имя соответствует имени проекта и изменять его нельзя. Нажимаем кнопку "Сохранить". Главный файл проекта создан, можно приступать к составлению схемы.

В первую очередь смотрим на диаграмму сигналов обоих форматов.

I2S:

post-3963-0-28212700-1319370677_thumb.png

RJ:

post-3963-0-88447700-1319370703_thumb.png

Условимся, что разрядность данных составляет 16 бит, а количество тактов BCLK на период LRCK равно 64. Итого, входной формат I2S64. Выходной формат в данном случае получится RJ64. Если нужно преобразовать I2S64 в RJ48, то никак не обойтись без тактового сигнала частотой многократно превышающей частоту BCLK и несколько более сложной схемой. О таком алгоритме я расскажу в другой раз, а сейчас примем, что на входе и выходе действуют три сигнала – BCLK, LRCK и DATA. То есть, создаем простой преобразователь форматов. Выбираем названия входов и выходов в проекте. Входы - BCKI, LRCI, DIN. Выходы - BCKO, LRCO, DOUT.

На половину периода LRCK при формате I2S64 приходится 32 такта BCLK. Первый такт BCLK после перепада LRCK – "холостой", далее следуют 16 тактов BCLK, загружающих в последующую ИМС 16 бит данных, после них – 15 "холостых" тактов BCLK. Полярность сигнала LRCK у форматов разная. Итого: необходимо задержать на 15 тактов данные и инвертировать сигнал LRCK. Но это не все. Неочевидны два момента. Первый - так как задерживаться данные будут по фронтальному перепаду сигнала BCLK, то и на выходе изменение логического уровня сигнала DATA будет происходить сразу после фронта плюс задержка распространения в ПЛИС. Значит, на выходе также необходимо инвертировать и сигнал BCLK. Второй неочевидный момент, вытекающий из первого, – при инвертировании BCLK нарушится соотношение между этим сигналом и LRCK. Значит, нужно задержать на один такт и LRCK. Однако можно упростить схему. Для этого нужно задержать на 15 тактов сигнал DATA по фронту BCLK и на 1 такт по спаду BCLK. В этом случае нужно будет инвертировать только сигнал LRCK.

Составляем схему. В Quartus есть готовые компоненты серии 74, что облегчит задачу. Для выбора компонента необходимо два раза кликнуть мышью по рабочей области схемного листа. Появится окно "Symbol".

post-3963-0-70734300-1319370953_thumb.png

Можно выбрать компонент из разворачивающегося списка "Libraries", но удобнее воспользоваться полем "Name". Вписываем в него наименование компонента – 74164.

post-3963-0-00993600-1319371002_thumb.png

Quartus автоматически найдет данный компонент в библиотеке и справа появится его символ. Это 8-и разрядный сдвиговый регистр 164 серии интегральных микросхем 74. Данные необходимо сдвинуть на 15 тактов, поэтому таких регистров понадобятся два. Для добавления нескольких одинаковых компонентов в схему устанавливаем галочку "Repeat-insert mode" и нажимаем "OK". С помощью левой кнопки мыши устанавливаем на схемный лист два регистра, после чего, нажав правую кнопку мыши, выбираем пункт "Cancel".

post-3963-0-12701200-1319371132_thumb.png

Помимо сдвиговых регистров 164 требуется D-триггер. В библиотеке Quartus он называется DFF. Вызываем окно выбора компонентов и вписываем имя – DFF. Так как установить в схему требуется только один триггер, галочку "Repeat-insert mode" устанавливать не нужно. Нажимаем "OK", устанавливаем компонент в схему.

Для инвертирования сигналов в Quartus служит компонент NOT. Аналогичным образом устанавливаем в схему два инвертера. Не забываем периодически сохранять проект ("File -> Save").

post-3963-0-92245400-1319371283_thumb.png

Выполняем соединение компонентов. Для этого служит инструмент "Orthogonal Node Tool", расположенный на панели инструментов слева от схемного листа.

post-3963-0-20065100-1319371323_thumb.png

Чтобы провести линию, необходимо приблизить курсор мыши к выводу компонента или линии. Зажав левую кнопку мыши, проводится линия. Здесь требуется некоторая привычка. В итоге должно получиться что-то подобное:

post-3963-0-70963600-1319371377_thumb.png

Теперь в схему требуется добавить входы и выходы. Через меню установки компонентов выбираются, устанавливаются и подключаются компоненты Input и Output. В результате схема приобретает следующий вид:

post-3963-0-21127800-1319371467_thumb.png

Остались не подключенными выводы "B" регистров и вывод "PRN" триггера. С первыми можно ничего не делать, компилятор успешно удалит незадействованный логический элемент на входе регистров, а вот вывод установки триггера лучше подсоединить к питанию. Для этого служит компонент VCC. Добавляем в схему и подключаем к выводу "PRN" триггера.

Входам и выходам схемы необходимо дать логичные названия вместо "pin_name", устанавливаемых по умолчанию. Для этого два раза кликаем мышью по компоненту Input или Output. Появится окно "Pin Properties".

post-3963-0-06209100-1319371681_thumb.png

В поле "Pin name(s)" вписываем название входа/выхода. Для входов помимо этого поля есть еще одно – "Default value". При установленном значении "VCC" будут задействованы внутренние pull-up резисторы ПЛИС, а при значении "GND" - pull-down. Поочередно присваиваем имена всем входам/выходам. В результате схема принимает следующий вид:

post-3963-0-28928200-1319371767_thumb.png

Проект готов к компиляции.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Компиляция проекта.

Запускаем компиляцию нажатием кнопки "Start Compilation" на панели инструментов, расположенной сверху схемного листа, либо через меню "Processing -> Start Compilation".

post-3963-0-40110500-1319373165_thumb.png

По завершении компиляции окно программы примет следующий вид:

post-3963-0-75794700-1319373203_thumb.png

Слева, в окне "Tasks", можно видеть отмеченные галочками пункты. Самый главный пункт – "Compile Design". В данном случае компиляция завершена успешно. В случае отрицательного результата пункт "Compile Design" будет отмечен красным крестом, а также отмечен пункт, на котором возникла ошибка.

Справа можно видеть общую информацию по результатам компиляции. Здесь нас интересуют 5 пунктов: "Meet timing requirements", "Total macrocells", "Total pins", "Device" и "Timing Models". Первый из этих пунктов означает, что проект соответствует установкам таймингов. Об этих установках чуть позже. Второй пункт – объем проекта в макроячейках. Третий – количество задействованных пинов. Четвертый – выбранная "Fitter’ом" ПЛИС. Пятый – результат проведения временного анализа.

Как можно видеть, проект занимает всего 18 макроячеек. Если в ПЛИС более ничего помещать не требуется, можно выбрать ближайшую подходящую по объему. Поскольку Altera сняла с производства EPM7032S, то выбор остается за EPM7064S. Проект не требователен к быстродействию, достаточен грейд -10. Корпус – TQFP44. Итого ПЛИС – EPM7064STC44-10. Выбираем эту ИМС для проекта.

Кликнув правой кнопкой мыши по названию окна отчета, выбираем пункт "Close".

post-3963-0-73357900-1319373365_thumb.png

В меню "Assignments" выбираем пункт "Device". Появится уже знакомое окно. Отмечаем пункт "Specific device selected in ‘Available devices’ list". В поле "Package" выбираем "TQFP", в поле "Pin count" – "44", а в поле "Speed grade" – "10". В результате будет сформирован список "Available Device", в котором отмечаем "EPM7064STC44-10".

post-3963-0-56783100-1319373414_thumb.png

Нажимаем «OK».

После любых изменений в проекте Quartus требуется компиляция. Это отражается в окне "Tasks" слева как установка оранжевых вопросительных знаков возле пунктов. Запускаем компиляцию.

post-3963-0-23168900-1319373546_thumb.png

Компиляция завершена успешно.

В самом низу Quartus присутствует окно "мессенджера". В нем отображается как ход процессов, так и их результаты. Обратим внимание на присутствие двух предупреждений – "Warning (2)". Переключаемся на эту вкладку.

post-3963-0-78905000-1319373599_thumb.png

Первое предупреждение сообщает о не поддерживаемом расширенном временном анализе для данного семейства. Второе сообщение более важное – в установках таймингов отсутствуют требования для входного сигнала BCKI. Необходимо выполнить эти установки, но для начала посмотрим, какую максимальную частоту рассчитал компилятор для сигнала BCKI. Для этого разворачиваем в отчете пункт "Timing Analyzer" и выбираем "Summary":

post-3963-0-37878300-1319373664_thumb.png

Компилятор допускает частоту BCKI до 50 MHz – "Clock Setup: ‘bcki’". Этого более чем достаточно для преобразователя форматов, где частота сигнала BCLK составляет 2.8224 MHz в случае формата с 64 тактами BCLK на период LRCK и частотой дискретизации 44100 Hz. Тем не менее, установки таймингов делать полагается. Делаем.

Закрываем окно "Compilation Report". Выбираем в меню "Assignments" пункт "Timing Analysis Settings...". В появившемся окне разворачиваем пункт списка "Timing Analysis Settings" и выбираем пункт "Classic Timing Analyzer Settings".

post-3963-0-81456300-1319373791_thumb.png

Нажимаем справа кнопку "Individual Clocks...". Появится следующее окно:

post-3963-0-20316800-1319373829_thumb.png

Нажимаем кнопку "New...". В появившемся окне в поле "Clock settings name" вписываем подходящее название – BCKI:

post-3963-0-74551200-1319373876_thumb.png

Справа от поля "Applies to node" нажимаем кнопку и попадаем в окно "Node Finder". В поле "Filter" выбираем "Pins: input". Нажимаем расположенную справа кнопку "List". Слева отобразится список входных сигналов. Выбираем из этого списка "bcki" и нажимаем расположенную по центру кнопку ">". В результате в списке справа появится цепь с именем "|i2s_to_rj|bcki".

post-3963-0-07717300-1319373928_thumb.png

Нажимаем "OK" и возвращаемся в окно "New Clock Settings". Теперь в поле "Applies to node" указано значение – "bcki". Вписываем в поле "Required fmax" значение частоты BCLK с небольшим запасом, например, "3", а справа из списка выбираем "MHz", если указано другое.

post-3963-0-49774900-1319374056_thumb.png

Нажимаем "OK", возвращаемся в окно "Individual Clocks".

post-3963-0-82059700-1319374200_thumb.png

Требования к таймингам сигнала BCLK созданы. Нажимаем "OK" в этом окне, затем в окне "Settings" и возвращаемся в главное окно Quartus. Компилируем проект. Результат – единственное сообщение о невозможности использования расширенного временного анализа для выбранного типа ПЛИС, с чем ничего поделать нельзя.

  • Одобряю 1
  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Назначение портов ПЛИС.

ПЛИС, как и МК, обладают очень интересной особенностью – позволяют разработчику выбирать любые пины корпуса для ввода/вывода сигналов, за исключением пинов питания, GND и так называемых глобальных входов. Последние представляют собой расположенные на кристалле трассы для обеспечения малого времени распространения тактовых сигналов, сигналов разрешения и сброса. Эти входы вовсе не обязательно использовать, но они строго определены для ПЛИС, а потому не подлежат переназначению. Остальные пины можно назначить так, как будет удобно трассировать плату с расположенной на ней ПЛИС. Выполняем назначение.

В главном окне Quartus на панели инструментов сверху схемного листа выбираем "Pin Planner", либо через меню "Assignments -> Pins". Появится окно "Pin Planner".

post-3963-0-23260800-1319374734_thumb.png

Для примера условимся, что входные сигналы подключены к пинам 12 – BCKI, 13 – LRCI, 14 – DIN, а выходные к пинам 20 – BCKO, 21 – LRCO, 22 – DOUT. Вход сигнала сброса – RSTN – оставим глобальным, так как это желательно. Это пин 39.

Делаем двойной клик левой кнопкой мыши по изображению пина 12. Появится окно "Pin Properties". В строке "Pin number" отображается текущий пин. В поле "Node name" выбираем соответствующий этому пину входной сигнал – "bcki". Остальные поля не трогаем, Quartus сам подставит в них нужные значения.

post-3963-0-40895300-1319374789_thumb.png

Нажимаем "OK".

post-3963-0-77930400-1319374865_thumb.png

Назначенный пин изменяет свой цвет. Также, в графе "Location" таблицы конкретному входу/выходу будет соответствовать назначенный пин ПЛИС.

Аналогичным образом производим назначение всех пинов проекта.

post-3963-0-87877000-1319374916_thumb.png

Закрываем окно "Pin Planner", изменения автоматически будут внесены в проект и на схеме возле входов и выходов отобразятся соответствующие этим цепям пины ПЛИС.

post-3963-0-69467100-1319374976_thumb.png

Поскольку в проект были внесены изменения, требуется компиляция. Запускаем и проверяем результаты.

В сложных проектах с большим количеством триггеров и логических элементов переназначение пинов может приводить к изменениям задержек. Бывают ситуации, когда только что успешно проходящий по требованиям к таймингам проект после переназначения пинов теряет возможность работы с заданными частотами. В этом случае либо приходится идти на схемотехнические ухищрения, либо выбирать ПЛИС с более высоким быстродействием. Чтобы не попадать в такую ситуацию, не нужно загружать емкость кристалла на все 100%. Рекомендуемый производителем резерв - 20%.

Помимо сигналов проекта существуют 4 служебных сигнала - TMS, TCK, TDI и TDO. Это сигналы интерфейса JTAG. Несмотря на то, что Altera допускает как их переназначение, так и двойное использование - для загрузки конфигурации и для работы проекта - настоятельно рекомендую не использовать и не переназначать их во избежание проблем с загрузкой конфигурации. Просто не обращайте внимание, что эти сигналы присутствуют в таблице.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Моделирование проекта встроенными средствами Quartus.

Разумеется, чтобы быть уверенным в функционировании проекта в "железе", возникает желание провести моделирование проекта. В Quartus данной версии есть встроенное средство моделирования. Так как доступные инструменты симулятора позволяют генерировать только простые тактовые сигналы, ими пользоваться не будем, а создадим так называемый файл векторов входных сигналов.

Открываем в "Проводнике" Windows папку с проектом. Включаем отображение расширения файлов. Создаем текстовый документ и задаем его имя – "i2s_to_rj.vec". Имя файла должно быть таким же, как и имя верхнего файла проекта.

post-3963-0-76905200-1319376321_thumb.png

Файл векторов входных сигналов – это файл с текстовым описанием поведения входных сигналов. Каждый сигнал описывается следующим набором строк:

  • START – время начала действия сигнала;
  • STOP – время окончания действия сигнала;
  • INTERVAL – время, через которое сигнал изменяет свое состояние в соответствии с содержимым PATTERN;
  • RADIX – система счисления для описания сигнала;
  • INPUTS – имя сигнала в проекте;
  • PATTERN – описание сигнала.

Для примера рассмотрим описание тактового сигнала с именем MCLK с периодом следования 50 ns. Генерировать будем в течение 100 us. Описание для него следующее:

START 0ns;

STOP 100us;

INTERVAL 25ns;

RADIX BIN;

INPUTS mclk;

PATTERN 0 1;

Каждая строчка в файле векторов должна заканчиваться точкой с запятой.

Здесь указано, что генерирование сигнала начинается с временной отметки 0 ns и заканчивается на отметке 100 us. Строка INTERVAL содержит вдвое меньшее значение, чем период сигнала. INTERVAL - это период, через который сигнал будет изменять свое значение в соответствии со значениями в строке PATTERN. В этой строке указано "0 1", поэтому через каждые 25 ns сигнал MCLK будет изменять свое значение с 0 на 1 или с 1 на 0. Тем самым достигается генерирование сигнала формы меандр с периодом 50 ns.

Строка RADIX должна содержать значение BIN для описания сигнала двоичной системой счисления – 0 или 1 – логичной для использования в цифровых схемах. Строка PATTERN содержит значения, которые должны быть разделены пробелом.

Составляем требования к сигналам для нашего проекта. Моделировать будем до 1 ms. Сигнал сброса RSTN будет действовать до 10 us, что обеспечит сброс триггерам при запуске системы. Интервалы для сигналов BCKI, LRCI и DIN я использую исходя из возможности кратного деления, без остатка. Для проектов с сигналом MCLK 768Fs период последнего выбираю 30 ns, а остальные сигналы пересчитываю. Буду придерживаться и здесь привычных значений, поэтому: BCKI = 64Fs, LRCI = Fs, DIN = BCKI/2 = 32Fs. LRCI = Fs = 30*768 = 23040 ns. Отсюда: BCLK = 23040/64 = 360 ns, DIN = 23040/32 = 720 ns.

Полное текстовое описание сигналов:

START 0ns;

STOP 10us;

INTERVAL 10us;

RADIX BIN;

INPUTS rstn;

PATTERN 0;

START 10us;

STOP 1ms;

INTERVAL 1ms;

RADIX BIN;

INPUTS rstn;

PATTERN 1;

START 0ns;

STOP 1ms;

INTERVAL 180ns;

RADIX BIN;

INPUTS bcki;

PATTERN 0 1;

START 0ns;

STOP 1ms;

INTERVAL 11520ns;

RADIX BIN;

INPUTS lrci;

PATTERN 0 1;

START 0ns;

STOP 1ms;

INTERVAL 360ns;

RADIX BIN;

INPUTS din;

PATTERN

0 1 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;

OUTPUTS bcko, lrco, dout;

Строка OUTPUTS содержит имена выходных сигналов. Если эту строку не указать, Quartus автоматически добавит выходные сигналы при симуляции.

Получившийся файл векторов входных сигналов:

post-3963-0-92928000-1319376717_thumb.png

Обратите внимание на способ генерирования сигнала RSTN. Это сигнал сброса с активным нулем - стандарт в цифровых схемах. Чтобы его описать, сначала генерируем короткий - до 10 us - нуль, а начиная с 10 us и до 1 ms - единицу.

Сохраняем файл. Переходим в главное окно Quartus. На панели инструментов сверху схемного листа нажимаем кнопку "Start Simulation" или через меню "Processing -> Start Simulation". Появится окно:

post-3963-0-38226700-1319376904_thumb.png

Здесь сказано, что следующие версии Quartus не будут поддерживать встроенный симулятор и Altera рекомендует воспользоваться отдельным инструментом – ModelSim. Устанавливаем галочку "Don’t show this again" и нажимаем "OK".

По завершении симуляции кликом правой кнопкой мыши по названию окна "Simulation Report – Simulation Waveforms" вызываем контекстно меню и в нем выбираем пункт "Detach Window" - "отделить окно". Разворачиваем окно и проверяем соответствие результата моделирования заданию проекта.

post-3963-0-07932400-1319377134_thumb.png

Как можно видеть, получилось то, что и требовалось. Теперь проект можно загружать в ПЛИС.

  • Одобряю 4

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Пожалуйста, Сергей. :) В ближайшее время постараюсь рассказать о работе с "Программером". Также, пока за кадром остались очень удобные функции - использование собственно созданных символов схем, текстовое описание схем. Это интересно и не сложно, если разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Работа с модулем Programmer.

Для загрузки конфигурации в ПЛИС в Quartus предназначен модуль Programmer. Этот модуль может быть запущен как отдельно от проекта, так и в его составе.

При отдельном запуске "Программера" для загрузки конфигурации ПЛИС класса CPLD требуется файл с расширением .POF, который Quartus создает при компиляции проекта.

post-3963-0-33868300-1319462636_thumb.png

Если же запуск "Программера" производится при открытом проекте, Quartus автоматически подключает файл конфигурации.

Рассмотрим работу с "Программером" отдельно от проекта и заодно настроим его на работу с ByteBlasterMV.

Выполняем подключение загрузочного кабеля к JTAG колодке устройства и включаем питание. Запускаем Quartus. На панели инструментов, расположенной сверху, нажимаем кнопку "Programmer", либо через меню "Tools -> Programmer".

post-3963-0-22652400-1319462703_thumb.png

Откроется окно "Программера":

post-3963-0-26578100-1319462733_thumb.png

Если в поле "Mode" установлено значение, отличное от "JTAG", изменяем на него. Нажимаем кнопку "Hardware Setup".

post-3963-0-63474800-1319462794_thumb.png

Нажимаем расположенную справа кнопку "Add Hardware...". В появившемся окне в поле "Hardware type" выбираем из списка значение "ByteBlasterMV or ByteBlaster II", а в поле "Port" - LPT порт ПК.

post-3963-0-68079300-1319462849_thumb.png

Нажимаем "OK" и возвращаемся в предыдущее окно.

post-3963-0-48553000-1319462889_thumb.png

Проверяем наличие в списке "Available hardware items" наименование загрузочного кабеля и порта ПК. Нажимаем "Close" и возвращаемся в окно "Программера".

post-3963-0-09874500-1319462942_thumb.png

Настройка "Программера" для работы с ByteBlasterMV выполнена.

В окне "Программера" нажимаем расположенную слева кнопку "Auto Detect".

post-3963-0-63651100-1319462993_thumb.png

Будет выполнено автоматическое определение подключенной ПЛИС. Поскольку выше было описано создание проекта "i2s_to_rj", в котором используется ПЛИС EPM7064STC44-10, то для логического продолжения изложения материала я сделал подключение именно к этой ПЛИС. В данном случае загружать в нее конфигурацию ее я не буду, так как установлена она в совершенно не подходящую для проекта "i2s_to_rj" плату, а только опишу все действия до выполнения процесса загрузки конфигурации.

Сейчас доступна установка только одной галочки – "Blank-Check". Это функция проверки ПЛИС на отсутствие загруженной в нее конфигурации. Пустой ПЛИС может быть только в случае приобретения у поставщиков. В данном же случае в нее уже загружена конфигурация. Устанавливаем галочку "Blank-Check" и нажимаем кнопку "Start".

post-3963-0-72670300-1319463096_thumb.png

Спустя пару секунд в окне "мессенджера" Quartus будет показан результат проверки. Четвертая строчка сверху в окне "мессенджера" указывает на ПЛИС с уже загруженной конфигурацией – "Info: Device is not blank". Следующие две ошибки связаны с этим сообщением.

В случае подключения к новой ПЛИС и проверки "Blank-Check", сообщения "мессенджера" будут следующими:

post-3963-0-09463700-1319463167_thumb.png

Сама операция проверки на отсутствие загруженной конфигурации в ПЛИС не обязательная и введена для того, чтобы не повредить содержимое. Считать содержимое ПЛИС возможно, но не данным "Программером" и не всегда. Во-первых, ПЛИС может быть защищена от копирования путем установки бита секретности - Security Bit. Во-вторых, смысла от чтения конфигурации не много. Разве что, для последующей загрузки в аналогичное устройство. Декомпиляции файлы конфигурации не подлежат. Однако я настоятельно рекомендую проводить операцию проверки на отсутствие загруженной конфигурации ПЛИС. При этом выполняется проверка устойчивой связи с ПЛИС, что гарантирует отсутствие ошибок при последующей загрузке конфигурации.

После проверки ПЛИС на "Blank-Check" выбираем в списке строчку с текущей ПЛИС и нажимаем слева кнопку "Change File...".

post-3963-0-12841300-1319463273_thumb.png

В открывшемся окне выбираем конфигурационный файл с расширением .POF и нажимаем кнопку "Открыть". К текущей ПЛИС будет добавлен файл конфигурации. Кликом правой кнопки мыши на строке с текущей ПЛИС вызываем контекстное меню и выбираем в списке "Properties". Откроется окно "HEX Data Properties".

post-3963-0-09989900-1319463340_thumb.png

В этом окне можно просмотреть свойства конфигурации. Особенно важны "Security Bit" и "Enable JTAG Support". В данном случае бит секретности отключен, а поддержка JTAG включена. Как я уже упоминал выше, бит секретности предназначен для защиты конфигурации ПЛИС от чтения. Поддержка JTAG в свойствах конфигурации должна быть включена, иначе после загрузки конфигурации в ПЛИС возможность ее последующего программирования посредством ByteBlasterMV будет недоступна и потребуется специальный программатор. Проверяем свойства, нажимаем "OK".

Теперь можно установить галочки "Program/Configure" и "Verify" и нажать кнопку "Start".

post-3963-0-40650600-1319463541_thumb.png

Будет загружена и проверена конфигурация ПЛИС, после чего последняя сразу же начнет выполнять заложенные проектом функции.

В отличие от работы с "Программером" отдельно от проекта, при работе в его составе не требуется подключать файл конфигурации - Quartus это сделает самостоятельно.

post-3963-0-05791600-1319463572_thumb.png

После запуска "Программера" обязательно нажимаем кнопку "Auto Detect". Если подключенная ПЛИС соответствует установленной в проекте, "Программер" не подаст никаких сигналов. В противном случае появится сообщение об ошибке, а тип ПЛИС в окне "Программера" изменится на подключенную.

post-3963-0-38554600-1319463631_thumb.png

При ответе "Нет" на данное сообщение "Программер" вернется в окно с исходными настройками, а при "Да" - изменит тип ПЛИС и отключит текущий файл конфигурации.

Если попытаться загрузить конфигурацию в ПЛИС, не соответствующую проекту, "мессенджер" выдаст ошибку:

Info: Unrecognized device

Error: JTAG ID code specified in JEDEC STAPL Format File does not match any valid JTAG ID codes for device

Error: Operation failed

Процесс загрузки при этом прервется.

Как и в случае работы с "Программером" отдельно от проекта, в данном случае также необходимо проверить ПЛИС на отсутствие загруженной конфигурации, проверить свойства конфигурации, после чего установить галочки "Program/Configure" и "Verify" и нажать кнопку "Start". Однако перед выполнением данных операций следует проверить очень важную установку проекта – неиспользуемые пины ПЛИС. Почему я не рассказал об этой установке во время работы с проектом? Все просто. Обычно, перед нажатием кнопки "Start" для загрузки конфигурации, разработчик плотно задумывается и пытается вспомнить, все ли в проекте учтено. :) По ходу работы с проектом о данной установке можно запросто забыть, а в случае загрузки конфигурации из файла POF отдельно от проекта, эта установка не доступна для изменения. Поэтому данное предупреждение здесь и расположено.

Закрываем окно "Программера", если оно открыто. В меню Quartus выбираем "Assignments –> Device...". Это окно знакомо – здесь мы производили выбор ПЛИС для проекта. Нажимаем кнопку "Device and Pin Options..." и в открывшемся окне переходим на вкладку "Unused Pins". В единственном поле со списком на этой вкладке "Reserve all unused pins" выбираем значение "As input tri-stated".

post-3963-0-03570900-1319463880_thumb.png

Данной установкой все незадействованные пины ПЛИС переводятся в третье состояние и при наличии ошибок трассировки или ошибок при сборке устройства не приведут к выходу компонентов из строя.

Нажимаем "OK" в этом окне, затем в окне "Settings". Поскольку в проект были внесены изменения, требуется компиляция. По ее завершении откроется окно с отчетом. В списке слева разворачиваем пункт "Fitter" и выбираем "Pin-Out File". Справа откроется файл отчета, пролистав который вниз можно увидеть все пины ПЛИС и назначенные им свойства.

post-3963-0-24662500-1319463949_thumb.png

После контроля назначения пинов можно переходить к процессу загрузки конфигурации в ПЛИС.

P.S. К сообщению прикладываю два полезных документа от Altera.

Altera ByteBlasterMV Download Cabel User Guide.pdf

Altera AN 95.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

По мере наличия свободного времени, я буду рассказывать о работе в Quartus, его полезных функциях, особенностях при работе с проектами. И в первую очередь хочу затронуть тему об одной из самых полезных функций –

Создание символов из схем и текстовых описаний.

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

Можно создать новый проект, а можно воспользоваться уже существующим. Я буду рассматривать работу с проектом "i2s_to_rj", так как иногда возникает необходимость внести большие изменения в уже существующий проект. Для примера создадим компонент конвертера I2S64 в RJ64 и поместим его на схемный лист главного файла проекта.

Запускаем Quartus и выполняем открытие проекта через меню "File -> Open Project...". В папке с проектом для открытия будет доступен только один файл с расширением QPF. В данном случае это i2s_to_rj.qpf:

post-3963-0-91488800-1319572690_thumb.png

После открытия проекта, слева, в окне "Project Navigator", отобразится его имя:

post-3963-0-18332400-1319572722_thumb.png

Двойной клик левой кнопки мыши по названию откроет главный файл проекта. Через меню "File -> Save As..." сохраняем главный файл под другим названием. Например, "i2s_rj". Закрываем окно "i2s_rj.bdf" с помощью клика правой кнопки мыши по названию окна и выбора соответствующего пункта в контекстном меню.

post-3963-0-33161900-1319572787_thumb.png

Заново открываем главный файл проекта, нажимаем на клавиатуре комбинацию клавиш "Ctrl+A" ("Выделить все"), затем "Del", и тем самым очищаем схемный лист. Сохраняем изменения, закрываем главный файл проекта.

Через меню "File -> Open..." открываем файл "i2s_rj.bdf".

post-3963-0-74474000-1319572865_thumb.png

Quartus удалил назначение пинов на схеме, но в проекте они остались. Для исключения вероятности возникновения ошибок при компиляции, лучше удалить назначение пинов проекта. Можно будет переназначить их позже.

Чтобы удалить все назначения, запускаем "Pin Planner".

post-3963-0-59038800-1319573007_thumb.png

В графе "Location" таблицы "All Pins" кликаем левой кнопкой мыши по первой строчке (PIN_12) и, нажав на клавиатуре "Shift", кликаем по последней (PIN_39), выделив тем самым все назначенные пины:

post-3963-0-02520200-1319573084_thumb.png

Нажимаем на клавиатуре "Del". Все назначения пинов будут удалены. Закрываем "Pin Planner" и возвращаемся в окно Quartus с открытым файлом "i2s_rj".

Вызываем меню "File", раскрываем пункт "Create / Update" и выбираем пункт "Create Symbol Files for Current File".

post-3963-0-87461200-1319573149_thumb.png

Откроется окно "Create Symbol File", где будет предложено указать имя создаваемого символа. По умолчанию это имя соответствует имени файла, из которого создается символ. Оставляем по умолчанию, нажимаем "Сохранить".

Успешное завершение операции будет подтверждено соответствующим сообщением:

post-3963-0-43155000-1319573217_thumb.png

Закрываем текущий файл (i2s_rj.bdf) и открываем главный файл проекта. Вызываем окно выбора компонентов и в поле "Name" вписываем "i2s_rj". Справа будет показан символ только что созданного нами компонента.

post-3963-0-59379900-1319573262_thumb.png

В отличие от создания символа из схемы, при создании оного из текстового описания рекомендуется сначала проверить файл на отсутствие ошибок. Для этого в меню "Processing" необходимо выбрать пункт "Analyze Current File". При отсутствии ошибок, по окончании проверки будет показано окно с сообщением об успешном анализе файла:

post-3963-0-60057700-1319573323_thumb.png

При наличии же ошибок будет показано сообщение с отрицательным результатом проверки и количеством выявленных ошибок, а в окне "мессенджера" будет указано, что это за ошибки:

post-3963-0-01144100-1319573368_thumb.png

При успешной проверке файла текстового описания, дальнейшие действия по созданию символа аналогичны действиям при создании символа из схемы.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alive    1

Алексей, подскажите, пожалуйста. Хочу прикрутить Тремор к Увертюре. На вегалабе это все уже решено и обсуждено. Взял проект Полковнiка (конвертор + делитель), скомпилированный под EPM7032STC44-10 и залил в EPM7032SLC44-15. Квартус не ругался на несовместимость, но конвертор не работает. В чем здесь дело - в несовпадающей нумерации выводов или грейде? Или что-то еще?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Грейд влияет только на быстродействие, а вот нумерация выводов корпуса не совпадает для TQFP и PLCC. Нужен исходный проект, чтобы внести изменения. Попросите автора в ЛС. Думаю, не откажет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
aitras    1 296
В Quartus есть готовые компоненты серии 74, что облегчит задачу

Подскажите, а где можно найти список всех микросхем 74-й серии? А то я начал разбираться и сразу же зашел в тупик: не могу найти простой счетчик по модулю 10. :huh:

Нашел вот это: http://www.ledlabs.ru/data_74.html

Полный ли здесь список?

Изменено пользователем aitras

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Посмотрел список. Похоже, что полный. Вообще, счетчики и делители в каких-то нестандартных конфигурациях (десятичный, понятно, к этому числу не относится, но все же) удобнее выполнять самостоятельно с помощью текстового описания.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Алексей, подскажите, пожалуйста. Хочу прикрутить Тремор к Увертюре. На вегалабе это все уже решено и обсуждено. Взял проект Полковнiка (конвертор + делитель), скомпилированный под EPM7032STC44-10 и залил в EPM7032SLC44-15. Квартус не ругался на несовместимость, но конвертор не работает. В чем здесь дело - в несовпадающей нумерации выводов или грейде? Или что-то еще?

Сравните нумерацию ножек у STC и SLC корпусов, коллега. Думаю все вопросы отпадут сами собой. Почему не ругалось на совместимость не подскажу.

А в целом тема отличнейшая, автору респект огромный! Помню как лбом пробивал все описанные здесь шаги, несколько корпусов ПЛИС сжег, думаю из-за tri-state.

post-67971-0-72043400-1334344650_thumb.jpg

Изменено пользователем Полковnik

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944
Почему не ругалось на совместимость не подскажу.

Меня этот момент тоже удивляет. Выше приводил пример выбора в проекте одной ПЛИС, а подключения к другой. Итог - возникает сообщение об ошибке.

ПЛИС на фото выглядит устрашающе. При ошибках с назначением ввода/вывода обычно выходят из строя порты. В Вашем же случае возникает такое ощущение, что потенциал питания превышен. Хотя в жизни всякое случается, может и через неисправные порты потенциал направился в ядро.

Еще хочу обратить внимание на такой момент. Часто для упрощения выбирают корпус PLCC. Упрощение это кажущееся. Конечно, можно в будущем заменить ПЛИС без пайки, но есть "но". Во-первых, замена ПЛИС при отсутствии ошибок трассировки вряд ли потребуется. Гарантированных циклов загрузки конфигурации, а это 100 раз, должно хватить на самые разнообразные эксперименты. Во-вторых, корпус PLCC имеет со всех сторон два ряда выводов. К такому корпусу ни питание толком не подвести, ни "землю". Нарушается целостность полигонов и, как следствие, увеличивается излучение помех. QFP корпус в этом отношении сильно лучше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944

Михаил, я не совсем корректно выразился. PLCC используют для удобства совместно с панельками, вот они имеют два ряда выводов. А если PLCC паять прямо на плату, то вообще не вижу преимуществ по сравнению с QFP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sergey367    8

Здравствуйте. Подскажите,такой USB Blaster http://www.ebay.com/...9bba9��подайдет для прошивки EPM3064ALC44-7N.Хочу попробовать сделать делитель потока для AD1853 в моно включении.

Изменено пользователем sergey367

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
sergey367    8

Ссылку забыл вставить http://www.ebay.com/itm/SainSmart-New-USB-Blaster-programmer-Cable-For-FPGA-CPLD-JTAG-Development-Board-/280828165033?pt=LH_DefaultDomain_0&hash=item4162a9bba9

Изменено пользователем sergey367

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
aitras    1 296

Серия MAX3000 поддерживается, значит все ОК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Lexus    944
Подскажите,такой USB Blaster http://www.ebay.com/...9bba9��подайдет для прошивки EPM3064ALC44-7N.

У меня такой программатор есть. Серию 7000S распознает. 3000-й серии во время тестов под рукой не оказалось, проверить не смог. Наотрез отказался распознавать 9000-ю серию. Но последняя серия давно снята с производства и неактуальна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MASTER KRIM    0
Подскажите,такой USB Blaster http://www.ebay.com/...9bba9��подайдет для прошивки EPM3064ALC44-7N.

У меня такой программатор есть. Серию 7000S распознает. 3000-й серии во время тестов под рукой не оказалось, проверить не смог. Наотрез отказался распознавать 9000-ю серию. Но последняя серия давно снята с производства и неактуальна.

Пишу с надеждой разрешить мою ситуацию.

Есть небольшое устройство с EPM7128SQC100-15 на борту. Под это дело приобрёл USB BLASTER Rev.c (как по ссылке выше). Поставил Quartus II 11.0sp1. Попробовал сделать всё так, как у Вас описано. Всё проходит, но вот прочитать уже записанную конфигурацию ни как не удаётся. Вы писАли:

"Работа с модулем Programmer.

Считать содержимое ПЛИС возможно, но не данным "Программером" и не всегда. Во-первых, ПЛИС может быть защищена от копирования путем установки бита секретности - Security Bit. Во-вторых, смысла от чтения конфигурации не много. Разве что, для последующей загрузки в аналогичное устройство."

Вот именно этот случай у меня! (Та получилось, что изходников нет). На данный момент "пытаю" совершенно новенькую ПЛИС, но не под каким "соусом" опция Examine не активна. Что нужно, чтобы это (считывание) произошло?

Помогите, Будьте добры!

(Использую EPM7128SOC100-15 чистую и ПО Quartus II 11.0sp1 (64-bit). Программатор USB-BLASTER. Система WIN7 64.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас