Теперь нужно добавить в него файлы, описывающие логику проекта.




Шаг 7.

Заходим в меню File/New и видим вот такой диалог. Здесь нам нужно решить какой именно файл мы собираемся создать, какого типа. Вы можете выбрать Block diagram/Schematic file - тогда логику проекта будем рисовать в виде схемы. Запустится специальный графический редактор и можно будет вставить в проект разные логические элементы, триггера, регистры, счетчики, сумматоры, мультиплексоры и много еще чего. Потом все эти элементы соединяются проводками - они буквально "рисуются" в этом графическом редакторе. Очень удобно. Я расскажу об этом как нибудь в другой раз.

Сейчас в этом диалоге мы можем выбрать создание файла на языках описания аппаратуры: AHDL, VHDL, Verilog и других. Выбирае Verilog - пункт списка Verilog HDL File.

Шаг 8.

Вот наш новый файл создан! Здесь мы будем набирать текст нашей программы.

Шаг 9.

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

Шаг 10.

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

Шаг 11.

Вот появился диалог позволяющий задать имя записываемого файла. Я предпочитаю давать имена файлов по названию модулей, описанных в них. Конечно, это не обязательно, вы можете выбрать себе любое другое имя файла. Сейчас я хочу задать имя файла test_wires.v

Шаг 12.

Файл записан. Вы можете видеть наше имя файла на закладке.

Шаг 13.

Вот здесь пожалуйста внимательней.

Сейчас мы скажем среде программирования Quartus II, что этот наш текущий файл test_wires.v является самым главным файлом проекта. Попробую объяснить. Проект всегда включает в себя самый главный модуль, который может включать в себя многие другие модули в других файлах. Сейчас мы явно скажем, кто у нас тут самый главный . Заходим в меню Project/Set As Top Level Entity. Все - готово.

Шаг 14.

Пожалуй можно пробовать компилировать наш проект. Видите кнопочку треугольничек на панели инструментов? Ну или можно зайти в меню Processing/Start Compilation.

Перед компиляцией сделаем еще одну очень важную настройку нашего проекта.

Шаг 15.

Выберем пункт меню Assignments/Device. Здесь можно задать многие параметры компиляции проекта, связанные конкретно с чипом.

Шаг 16.

Появился вот такой диалог - на нем куча всяких настроек. Например, можно выбрать тип микросхемы, для которой будет делаться компиляция проекта. Мы уже выбрали микросхему раньше. Сейчас можете проверить - должно быть EPM240T100C5. Нас же сейчас интересует кнопка Device and Pin Options. Нажмем ее.

Шаг 17.

Появился еще более страшный диалог. Не пугайтесь. Выбираем закладку Unused Pins.

Шаг 18.

Сейчас нам нужно сделать очень важную настройку. Мы должны сказать компилятору, что делать с неиспользуемыми ножками микросхемы. Поясню. В написанной нами программе всего 4 входа подключенных к кнопочкам, и два выхода, подключенных к светодиодам. Итого наш проект будет использовать 6 контактов микросхемы ПЛИС. А у нее, например всего 80 контактов, которые мы можем использовать по своему разумению. Компилятор подключит 6 контактов, а что делать с остальными? По умолчанию все неиспользуемые контакты микросхемы подключаются к нулю по питанию. Конечно, все зависит от печатной платы, куда впаяна микросхема. Если на плате, например, ошибочно, неиспользуемый контакт микросхемы подключен к питанию платы, то произойдет короткое замыкание. Не очень приятно. Что-нибудь может сгореть на плате. Поэтому всегда необходимо устанавливаю эту настройку. Ставим As input tri-stated. Это обозначает, что неиспользуемые входы будут входами с высоким входным сопротивлением. Это обезопасит микросхему и плату.

Шаг 19.

Вот теперь компилируем!

Шаг 20.

Мы видим, что проект успешно откомпилирован! Поздравляю!

Тем не менее, это еще не все. Пожалуйста обратите внимание на Warnings - предупреждения, а особенно на Critical Warnings - критические предупреждения. Я вообще, всегда рекомендую внимательно читать предупреждения компилятора. Конечно, хорошо бы знать английский язык, но я думаю вы довольно быстро освоитесь. Посмотрим, что же нам выдал компилятор?

Шаг 21.

Читаем: "Critical Warning: No exact pin location assignments for 6 pins of a total 6 pins".

Это обозначает, что в проекте всего было 6 контактов и всем шести контактам не были сделаны назначения по расположению на чипе. На самом деле компилятор выполнил свою работу, но расположил контакты, как попало, как ему было удобно. Так дело не пойдет. У нас уже есть плата Марсоход и кнопочки присоединены к конкретным ножкам микросхемы. Светодиоды так же подключены на плате. Точное расположение контактов нужно смотреть на схеме нашей платы Схема платы Марсоход (52.82 Кбайт) или в нашем документе PINOUT файл (48.32 Кбайт). Нам нужно сказать компилятору, куда подключать какую ногу микросхемы.

Шаг 22.

Выберем пункт меню Assignments/Assignment Editor.

Шаг 23.

В открывшемся окне делаем нужные нам назначения согласно схеме нашей платы. В колонке To вписываем имя входа или выхода. В колонке Assignment Name выбираем из списка нужную нам настройку Location. В колонке Value вписываем номер контакта микросхемы - его смотрим в PIN OUT файле или на схеме платы.

Шаг 24.

Кроме назначения местоположения всех контактов нашего проекта нужно сделать еще одну важную настройку. Наши кнопочки подключены одним контактом к нашей ПЛИС, а вторым контактом к нулевому проводу (к земле). Таким образом, при нажатии кнопки, контакт микросхемы ПЛИС будет подключен к земле. А вот что будет, когда кнопка не нажата? Вход микросхемы будет болтаться неподсоединенный и это конечно плохо. Вход микросхемы нужно "притянуть" к напряжению питания резистором, чтобы не нажатая кнопка давала на входе микросхемы четкую логическую единицу. Можно было бы припаять такой резистор снаружи чипа - но не нужно. Микросхема ПЛИС позволяет по вашему желанию подключить внутренний резистор к любому входу. Именно это мы и сделаем. Мы назначаем всем входам проекта с именем key* настройку "Weak Pull Up resistor". Должно получиться вот так:

Вот теперь можете компилировать проект и все будет нормально!

Шаг 25.

После успешной компиляции проекта его можно зашить в чип платы Марсоход. Для этого запускаем программу программатора. Выберите пункт меню Tools/Programmer.

Шаг 26.

Вот так выглядит окно программатора на экране. Видите в левом верхнем углу "No Hardware" - похоже программатор еще не установлен. Подключите программатор к вашему ПК. Если у вас UsbBlaster, то нужно будет установить драйвера к нему. Они находятся в папке C:/Altera/91/Quartus/Drivers. Если у вас ByteBlaster (в том числе сделанный самостоятельно), то драйвера не нужны. Теперь нажмите кнопку Hardware Setup.

Шаг 27.

В открывшемся диалоговом окне выберите тип программатора, который у вас установлен.

Шаг 28.

Теперь нужно проставить нужные "галочки" в Program/Configure и Verify. Строка CFM имеет отношение к собственно программированию ПЛИС. Строка UFM имеет отношение к программированию флеш памяти внутри чипа ПЛИС. Их можно программировать по отдельности.

Колонка Verify обозначает проверить после прошивки.

Шаг 29.

Нужно подключить плату Марсоход к UsbBlaster и подать питание на плату.

Шаг 30.

Нажимаем в програматоре кнопку Start - и, все готово! Плата Марсоход прошита с только что откомпилированным проектом! Урра!

После прошивки, подключаем питание и пробуем, что у нас получилось:

Обратите внимание, как все работает.

Прежде всего, у нас горят два светодиода, когда мы ничего не нажимаем. Как я уже говорил, не нажатая кнопочка обозначает логическую единицу на входе микросхемы. Входы притянуты внутренним резистором чипа к напряжению питания (Weak Pull-Up Resistors).

Левые две кнопки key3, key2 объединены в логическую функцию ИЛИ. Именно поэтому светодиод led1 гаснет только если нажать обе эти кнопки.

Правые две кнопки key1, key0 объединены в логическую функцию И. Именно поэтому светодиод led0 гаснет если нажать хотя бы одну кнопку.

Вот так это все работает.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: