ЛР5 > Назначение контактов ввода/вывода в проекте

Цель: Освоить использование утилит Pin Planner и Back-annotation для назначения контактов

 1. Порядок выполнения работы

Шаг 1: С помощью утилиты Pin Planner выполните назначения контактов и стандарта ввода/вывода.

 

 Структура курса лабораторных работ: Основы Quartus II

 1. Знакомство со средой проектирования Quartus II. Создание проекта
 2. Моделирование проекта в среде Quartus II
 3. Компиляция проекта в среде Quartus II. Анализ результатов компиляции 
 4. Версии проекта в Quartus II. Создание назначений
 5. Назначение контактов ввода/вывода в Quartus II
 6. Временной анализ проекта в Quartus II
 7. Специализированные модули. Реализация КИХ-фильтра в Quartus II 

1. В меню Assignments выберите команду Pin Planner.

Напоминаем, вы можете открепить окно Pin Planner от основного окна САПР QuartusII и увеличить масштаб изображения.

2. Убедитесь, что в открывшемся окне микросхема отображается в режиме Top View. Если это не так, то выберите команду Package Top в меню View.

3. Убетитесь, что в панели инструментов утилиты Pin Planner выбран режим Show I/O Banks (кнопка  активна). Если это не так, то  выберите его. Этот же режим можно задать из меню View.

4. Выберите режим интерактивной проверки назначений контактов ввода\вывода Live I/O. Для этого нажмите кнопку на панели инструментов или выберите команду Enable Live I/O Check из меню Processing в окне Pin Planner.

5. В меню View (окно Pin Planner), выберите команду Live I/O Check Status Window.

Эта команда открывает небольшое окно, в котором отображается информация об ошибках и предупреждениях при назначении контактов ввода/вывода. Обращайте на него внимание в процессе выполнения задания. Если появляется указание на ошибку или выдается предупреждение, проверьте окно Messages в основном окне Quartus II. Вы уже должны обратить внимание на три предупреждения. Эти предупреждения (unset junction operating temperature и Reserve All Unused Pins setting) могут быть проигнорированы.

6. В окне Groups List (Pin Planner), выделите входную шину dataa. Затем, удерживая нажатой левую кнопку мышки, перенесите шину dataa из окна Groups List в секцию IOBANK_2.

Изображение секции IOBANK_2 должно измениться, и будет указывать на то, что банк I/O Bank 2 содержит 8 назначенных контактов из 43. Назначение сигналов банку ввода/вывода позволяет трассировщику разместить данные сигналы в любом месте в пределах указанного банка.

7. В окне Groups List, нажмите правую клавишу мыши на шине dataa и выберите команду Node Properties из контекстного меню.

8.  В диалоговом окне Node Properties в строке I/O standard для шины dataa установите значение 2.5 V. Нажмите OK.

Обратите внимание, что в окне полного перечня контактов отображаются внесенные изменения стандарта ввода/вывода для каждого сигнала шины dataa. Назначение контактов и стандарта ввода/вывода можно выполнять и в данном окне (All Pins list). Следует заметить, что отдельные назначения, сделанные в окне All Pins list имеют приоритет перед групповыми назначениями, сделанными в окне Groups list. Лучший способ выполнения назначений для шин или групп сигналов – это задать назначения для названия группы (т.e. data[7..0]) в окне Groups list.

9. Используя окно Package View или окно All Pins List, назначьте для шины datab банк IOBANK_2.

10. Установите значение I/O Standard для шины datab равное 1.8 V с помощью диалогового окна Node Properties.

Вы должны заметить появление сообщений об ошибке в окне утилиты Live I/O Check Status Window и окне сообщений САПР QuartusII. Не пытайтесь пока устранить проблему. Наша задача – проверить реакцию компилятора.

11. Назначьте для выходной шины q банк IOBANK_3 и установите I/O standard равный 1.8 V.

12. Назначьте шинам адреса read и write банк IOBANK_3 и установите I/O standard равный 1.8 V.

13. В окне All Pins List назначьте сигналу clk1 контакт Pin H16 и установите I/O standard равный 1.8 V.

14. В окне All Pins list назначьте сигналу wren банк IOBANK_3 и установите I/O standard равный 1.8V.

Ваше окно Pin Planner должно выглядеть подобным образом.

Шаг 2: Проверьте назначения контактам ввода/вывода.

Сейчас, когда вы сделали основные назначения контактам ввода/вывода, можно проверить корректность этих назначений, без выполнения полной компиляции проекта. Таким способом можно быстро и легко найти ошибки при назначениях контактам ввода/вывода и исправить их. Для более строгой проверки назначений контактам ввода/вывода используйте утилиту I/O Assignment Analysis совместно с утилитой Live I/O Check.

1. В меню Processing главного окна Quartus II, в разделе Start выберите команду Start Analysis & Synthesis или нажмите кнопку , расположенную в панели инструментов главного окна Quartus II. Нажмите OK после завершения компиляции.

Компилятор может отключить утилиту Live I/O Check и включить ее позже.  Если, после выполнения компиляции, утилита Live I/O Check не включилась, то ее можно повторно включить в окне Pin Planner.

2. В меню Processing, в разделе Start выберите команду Start I/O Assignment Analysis или нажмите кнопку в панели инструментов Pin Planner. Нажмите OK после завершения анализа.

Результат анализа успешный? Проверьте сообщения в окне Messages или сообщения Fitter
Messages в отчете компилятора Compilation
Report. Эти сообщения показаны на рисунке выше. Утилита I/O Assignment Analysis обнаружила ошибки, о которых выдавалось сообщение утилитой Live I/O check в процессе выполнения назначений

3. Проанализируйте сообщения I/O Analysis Messages и определите причину ошибок. Раскройте собщения об ошибках для более подробного анализа причины того, почему все сигналы шины dataa не могут быть успешно размещены.

Для определения причин невозможности размещения контактов ввода/вывода необходимо: тщательный анализ сообщений об ошибках и наличие знаний об архитектуре семейства Cyclone II (ячеек ввода/вывода ПЛИС). Пункты 4-6 данного упражнения показывают, каким образом можно исправить ошибки.

4. Вернитесь в Pin Planner и раскройте группы сигналов dataa и datab в окне Groups list. Если необходимо, сместите страницу, чтобы видеть колонку I/O Standard в окне Groups list или в окне All Pins list.

Обратите внимание, вы назначили для входных шин dataa и datab банк I/O Bank 2, но при этом задали разные уровни напряжений VCCIO (1.8 & 2.5). ПЛИС Cyclone II, как и все микросхемы FPGA фирмы Altera, работают с единым уровнем напряжения  VCCIO для одного банка контактов ввода/вывода I/O bank.

5. В окне Groups List измените назначение I/O standard для группы сигналов datab на 2.5 V. Убедитесь, что все сигналы шины datab имеют соответствующее назначение.

Обратите внимание на изменения в окне Live I/O Check Status.

6. Повторите анализ назначений с помощью утилиты I/O Assignment Analysis. Нажмите OK после завершения.

Обратите внимание, как быстро и легко можно проверить назначения контактам ввода/вывода без выполнения полной компиляции проекта!

7. Чтобы посмотреть, как трассировщик разместил назначенные контакты ввода/вывода, нажмите кнопку в панели инструментов Pin Planner или в меню View выберите команду Show -> Show Fitter Placements. Нажмите OK, чтобы отключить утилиту Live I/O check.

Утилита Live I/O check должна быть отключена при просмотре результатов размещения. В окне статуса появится подтверждение об отключении.

Вы увидете назначенные трассировщиком контакты, выделенные зеленым цветом в окне Pin Planner, как показано выше.

Шаг 3: Сохраните назначенные контакты ввода/вывода с помощью утилиты Back-annotate.

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

1. В меню Assignments выберите команду Back-Annotate Assignments, чтобы открыть диалоговое окно Back-Annotate Assignments. Диалоговое окно может немного отличаться от приведенного ниже.

2. В разделе Assignments to back-annotate, отметьте опцию Pin & device assignments (обычно, установлена по умолчанию) как показано выше. Нажмите OK.

Обратите внимание, все отмеченные зеленым цветом контакты ввода/вывода, теперь еще имеют красную штриховку. Это указывает на то, что контакты, которые были назначены трассировщиком, сейчас еще являются назначенными пользователем, и сохраняются как назначения в файле .QSF.

Шаг 4: Перенесите назначения контактов ввода/вывода в исходную версию проекта.

Сейчас вы должны перенести назначения контактов ввода/вывода из текущей версии проекта в исходную (с которой работали раньше). Для этого, вначале, вы сохраните ваши назначения как файл формата .CSV, а затем импортируете их в исходную версию проекта – pipemult.

1. Когда окно Pin Planner активно, в меню File выберите команду Export.

2. В открывшемся диалоговом окне Export задайте имя файла io_assignments.csv и нажмите Export.

  3. С помощью выпадающего меню в верхней части основного окна Quartus II измените активную версию проекта на pipemult.

4. В меню Assignments выберите команду Import Assignments.

5. В открывшемся диалоговом окне Import Assignments нажмите кнопку поиска в строке File name: и выберите файл io_assignments.csv. Отключите опцию Copy existing assignments into pipemult.qsf.bak before importing. Нажмите Open, затем OK.

6. Откройте окно Pin Planner и проверьте правильность переноса назначений.

Напоминаем, что отмеченные зеленым цветом контакты – результат размещения трассировщиком при предыдущей компиляции версии проекта pipemult. Окрашенные красным цветом контакты – импортированы из версии проекта pipemult_lc. Окрашенные зеленым и заштрихованные красным цветом контакты – это совпадающие назначения для обеих версий проектов. После следующей компиляции отмеченные зеленым цветом контакты будут удалены.

7. Отключите режим просмотра контактов, размещенных трассировщиком, с помощью кнопки , или соответствующей команды в меню View (раздел Show).

Шаг 5: Выберите другой тип микросхемы и выполните перенос назначений контактов ввода/вывода для неё.

Сейчас вы увидите, что произойдет с назначенными контактами при изменении их функционального назначения в случае переноса проекта в другую микросхему. Вы можете добавить другой тип микросхемы к проекту в любой момент, если хотите позже выполнить перенос. Утилита Pin Planner Pin Migration View позволяет отслеживать возможные проблемы, возникающие для назначенных контактов ввода/вывода при переносе проекта.

1. Создайте новую версию проекта, используя базовую версию pipemult. Назовите её pipemult_migration. Назначьте её активной  с помощью диалогового окна Revisions или с помощью соответствующего меню в панели инструментов. Откройте окно Pin Planner.

2. В окне Package View обратите внимание на контакт L12 и определите – назначен ли сигнал для этого контакта. Если контакт белого цвета – значит, назначения сигнала нет. Перейдите к следующему пункту. Если для этого контакта назначен какой-либо сигнал – перейдите к пункту 7.

3. В окне All Pins list нажмите кнопку New Node , или опуститесь вниз списка контактов и нажмите левую кнопку мышки в ячейке <<new node>> в столбце Node Name.

4. Задайте имя сигнала reserved_pin.

5. Нажмите дважды левую кнопку мыши в ячейке Location рядом новым сигналом, и выберите PIN_L12 из выпадающего списка.

6. В ячейке Reserved установите тип зарезервированного сигнала As input tri-stated. Нажмите левую кнопку мышки в любом свободном месте или нажмите клавишу tab, для сохранения созданного зарезервированного назначения.

В окне Package View вы увидите, что контакт L12 стал окрашенным в синий цвет. Это указывает на тот факт, что данный контакт зарезервирован.

7. В меню View выберите команду Pin Migration View.

Откроется окно Pin Migration View. В нем будет отражена информация о контактах только для заданного типа микросхемы, т.к. мы еще не выбрали микросхему для переноса проекта.

8. Нажмите кнопку Device, чтобы открыть диалоговое окно Settings, категорию Device.

9. Нажмите кнопку Migration Devices и установите опцию Show all speed grades.

10. Выберите микросхему EP2C8F256I8 (убедитесь, что это именно так, т. к.  названия микросхем очень похожи) и нажмите дважды левую кнопку мышки на ней, или нажмите кнопку > для переноса её в список выбранных микросхем. Нажмите OK. Нажмите OK, чтобы закрыть диалоговое окно.

11. В окне Pin Migration View появилась информация о конактах для выбранной микросхемы. Установите опцию Show migration differences в нижней части окна, и посмотрите строку для контакта L12.

Обратите внимание, данный контакт перенесен из банка 4 старой микросхемы в банк 3 для новой микросхемы. Поэтому, ячейка Migration Result остается незаполненной, указывая на то, что сигнал для этого контакта не может быть перенесен на тот же контакт в другой микросхеме. Давайте проверим это с помощью утилиты I/O Assignment Analysis.

12. Закройте окно Pin MigrationView. В меню Processing, в разделе Start выберите команду Start I/O Assignment Analysis или нажмите кнопку в панели инструментов Pin Planner. Нажмите OK после завершения анализа.

Что же получилось? Утилита I/O Assignment Analysis выдала сообщение об ошибках потому, что  назначение сигнала контакту L12 не может быть выполнено одновременно для двух выбранных типов микросхем.  Если сейчас внимательно посмотреть на контакт L12 в окне Package View, вы увидите знак X на данном контакте, обозначающий NC или  no connect. Даже в том случае, когда сигнал может быть назначен этому контакту в одной микросхеме, утилита Pin Planner препятствует вводу назначения, т.к. в микросхеме EP2C8F256I8 этот контакт имеет другое функциональное назначение.

13.  Перейдите к версии проекта pipemult и закройте окно Pin Planner.