Странно...
Для чего может понадобиться «пустой проект»?
Ну, во-первых, не «пустой», а «почти пустой». Это значит, что в нем уже кое что есть. А во-вторых, с чего-то же нужно начинать?
Среда разработки компании Altera QuartusII позволяет создавать проекты совершенно разной сложности и основываясь на разных микросхемах и FPGA и CPLD. Про FPGA (Field Programmable Gate Array) можно прочитать здесь https://ru.wikipedia.org/wiki/FPGA. А про CPLD (Complex Programmable Logic Device) можно прочитать здесь https://ru.wikipedia.org/wiki/ПЛИС. Микросхемы обоих типов производят несколько компаний, но мы сделали свой выбор в пользу Altera.
Проблема начинающих разработчиков состоит в том, что для того, чтобы начать что-то делать нужно провести очень много подготовительной работы. Нужно развести и изготовить плату, поставить, припаять на нее микросхему, создать проект для среды программирования QuartusII. Все это требует и знаний и умений и времени. Мы же предлагаем простой путь для начинающих разработчиков, студентов и даже школьников. Мы предлагаем очень простую готовую плату «Марсоход». И мы предлагаем уже готовую «заготовку» для Вашего проекта.
Итак откроем «почти пустой проект» программой Quatrus II. Вот что мы увидим:
Только не пугайтесь!
Наш «почти пустой проект» оказался совсем не пустым и кажется ничего не понятно здесь.
Сделаем необходимые пояснения. На нашей плате стоит микросхема компании Altera EPM240T100C5. Ее ножки уже разведены специальным образом на плате и подключены к четырем кнопкам, восьми светодиодам и еще всяким дополнительным разъемчикам. В нашем проекте для микросхемы CPLD мы уже сделали соответствующие назначения и это, пожалуй, самое важное. От каждого входа или выхода тянется линия-указатель к прямоугольной табличке, в которой написаны соответствующие им номера контактов микросхемы.
Вот что у нас здесь есть:
- Четыре входа key[3..0] – к ним подлючены четыре кнопки на плате. Специальные назначения в «проекте-заготовке» делают эти входы триггерами Шмидта. Это позволяет уменьшить «дребезг» контактов при нажатии на кнопки. Кроме того, на эти четыре входа мы уже назначили «weak pull-up resistors». Это слабые подтягивающие к напряжению питания резисторы. Таким образом на входе не нажатой кнопки будет логическая единица, а на входе нажатой кнопки – логический ноль.
- Входы pt_left и pt_right сейчас у нас не используются в «проекте-заготовке». Мы планировали в будущем подключать к ним опто-транзисторы. Если мы надумаем когда нибудь делать робота с глазами – это нам поможет.
- Двунаправленные входы (BIDIR) dp и dn сейчас тоже не используются. Они тоже зарезервированы. Надеюсь мы сможем сделать в будущем USB подключение нашей платы к компьютеру.
- Восемь выходов led[7..0] – к ним на плате подключены светодиоды. На них можно делать какую нибудь простую индикацию.
- Выходы f0[9..0], f1[9..0], f2[9..0] и f3[9..0], f4[9..0], f5[9..0]. На самом деле это шесть групп по 10 выходов. В каждой группе десять выходов соединены вместе, чтобы сделать шесть «сильных» выходов. Сильные выходы нам могут понадобиться в самых разных проектах. Например, мы будем подключать моторчики или шаговые двигатели роботов или машинок.
- Компонент с именем ALTUFM_NONE. Это довольно сложная часть микросхемы Altera EPM240T100С5. Она уже содержит в себе и ПЗУ (Постоянное Запоминающее Устройство) и простейший тактовый генератор. В нашем «пустом» проекте этот генератор дает нам частоту 5МГц.
- Компонент counter. Этот компонент мы создали сами в среде программы QuartusII (Вы и сами скоро сможете делать это). Это счетчик импульсов со входом разрешения тактовых импульсов и входом сброса. Мы поставили этот компонент в проект, чтобы он (проект) хоть что нибудь делал, чтобы была какая нибудь польза от него. Вход разрешения тактовых импульсов мы подключили к кнопке key[3], а вход сброса счетчика мы подключили к кнопке key[2]. Сам счетчик здесь 32-х разрядный, а светодиодов у нас всего восемь. Поэтому светодиоды подключены у нас к линиям счетчика с 20-й по 27-ю включительно. Если подключить к самым младшим линиям счетчика, то светодиоды будут моргать слишком часто. Если подключить их к самым старшим линиям счетчика, то слишком медленно. Так что мы выбрали где-то примерно в середине.
Теперь откомпилируем этот проект в среде QuartusII и прошьем плату. Вот что у нас получилось:
На видео видно, что счетчик обнуляется (светодиоды не горят) в момент сброса, и что счетчик не работает, когда нажимаем кнопку подключенную к clk_en модуля counter.
Скачать этот проект можно здесь:
Теперь Вы можете брать этот проект и исправлять его по своему усмотрению! Это, пожалуй, самый простой способ начать что-то проектировать самому.
Удачи!

Скачал "почти пустой проект" и пытаюсь его прошить в ПЛИС. Прошить не удается. В чем может быть причина? В ПЛИС прошит предыдущий проект. Он работает. Новый не прошивается. Прошивальщик говорит "failed"
"Выходы f0[9..0], f1[9..0], f2[9..0] и f3[9 ..0], f4[9..0], f5[9..0]"?
1. Они дискретные (только 0 \ 1);
или
2. Каждый из них - аналоговый (например 8-ми битный)
?
То же самое интересно по входам.
да вроде бы в 15м квартусе это делается так же, как и в предыдущих версиях, из Assignment Editor. В новой строке столбца "To" пишите имя входа, в этой же строке столбца "Assignment Name" пишите Weak Pull-up - он выбирается из списка..
CPLD на плате Марсоход сохраняет прошивку. FPGA платы Марсоход2 не сохраняет прошивку. Ее можно грузить из внешней шлеш памяти на шилде.
Подскажите пожалуйста, хранит ли ПЛИС последнюю прошивку при выключенном питании? С виду похоже что нет (плата Марсоход2). Может я чего-то не знаю, и для сохранения прошивки нужно что-то сделать?
На свободном поле нажимаете два раза левую кнопку мыши. Должно появиться меню "Symbol". В строке"Name" набираете "altufm_none"
Пояснения про "части микросхемы":
В вашем тексте сказано:
Компонент с именем ALTUFM_NONE. Это довольно сложная часть микросхемы Altera EPM240T100С5 (второй от конча списка описания проекта пункт). Как его вставить в проект?
Сами назначения делаются в "Assignment Editor"
а их отображение включается в "View/Show Location Assignment".
про"вставлять в свой проект части микросхемы " непонял.
Как это делается?
вообще-то частота встроенного генератора у UFM блока у разных микросхем может быть разная (в среднем около 5МГц) по технологическим причинам. А OSC_FREQUENCY влияет только на результат симуляции в ModelSim.
Запускаю "Почти пустой проект" в симуляторе квартуса.
Выдаётся куча предупреждений, что пины не подключены. И на выходе никакого движения.
Сигнал клок есть.
Или этот проект не предназначен для симулирования?
В этой статье есть пара фото, но , к сожалению, видно не очень хорошо
marsohod.org/.../174-phframe3
Вот еще -https://marsoh od.org/forum/7- ---mbftdi/2502- --qq---mbftdi#2 502
P.S. Вопрос был как раз про отдельный разъём питания. Там стоит 0 Ом чип. Вот я и думал по подобию разъёма USB туда тоже диод впаять. Но если можно через USB постоянно питать то так лучше.
Диод уже есть - marsohod.org/.../120-usbcable
Если у Вас MAXII, о тактовую можно подавать на любой пин
Обязательно ли на него нужно подавать тактовый сигнал? Если подавать то на все 4 пина или можно/нужно только на какой то один? На вашей плате я так понял тактовый сигнал вообще подается на простой i/o pin.
Никто правды не знает - marsohod.org/.../91-killmax
В доках Альтеры я наткнулся на цифру 100
Это и вправду так ?
И кроме того, сколько будет стоить микросхемка совсем малой степени интеграции (пара счетчиков, пара регистров на 32 разряда, канал их загрузки), но на тактовую частоту ~1 ГГц?
У меня вот такой вопрос
Хочу повторить проект часов habrahabr.ru/post/125364/
Проект выложен в статье.
Данной платы у меня нет, но есть другая www.ebay.com/.../261070617141
Вопрос в следующем, что лучше
Нарисовать схему под свою плату с нуля используя за основу текущий проект или изменить текущий проект под свою плату?
я иногда использую элемент WIRE для переименования сигнала. С одной стороны провод имеет одно имя а с другой стороны - другое. Причем они просто соединены друг с другом.
Что касается платы Марсоход, то на ней установлен генератор 100Мгц и сигнал тактовой частоты с него подается на пин 75 CPLD (это видно на схеме платы).
В "почти пустом проекте" есть вход pt_right который назначен на этот пин 75. В самых первых платах генератора не было, поэтаму несколько странное название для пина. В своих проектах для Платы Марсоход используйте pt_right как сигнал тактовой частоты.
Еще в MAX II есть встроенный RC генератор около 5Мгц. его сигнал можно взять из компонента ALTUFM.
Спасибо!!
Не делал ли кто этот usb Blaster? mcu-cpld.narod.ru/.../... и какие мысли насчет его работоспособнос ти?
для программировани я CPLD дополнительного генератора не нужно. Тактирование идет из программатора через JTAG.
Что касается платы Марсоход, то на ней установлен генератор 100Мгц и сигнал тактовой частоты с него подается на пин 75 CPLD (это видно на схеме платы).
В "почти пустом проекте" есть вход pt_right который назначен на этот пин 75. В самых первых платах генератора не было, поэтаму несколько странное название для пина. В своих проектах для Платы Марсоход используйте pt_right как сигнал тактовой частоты.
Еще в MAX II есть встроенный RC генератор около 5Мгц. его сигнал можно взять из компонента ALTUFM.
все я понял, спасибо.
в семействе MAX3000 в доке (altera.com/.../epm3032a.pdf) есть пины VCCIO и VCCINT тоже и с GND. В физическом смысле (на плате) их соединять вместе и в чем между ними разница ?
Никогда бы не подумал, спасибо. Скачал Оперой - все отлично открывается.
Возможно это проблема браузера. Если качаете с помощью IE то выкачанный файл получается странный. Разархивируйте, потом переименуйте в *.zip и еще раз разархивируйте.
исправил
только что выкачал проект, открыл, откомпилировал - все нормально... попробуйте удалить сounter и снова вставить в схему
Что делать?
EPM 570.
4 PIN'а заведены на программную землю - для совместимости с EPM570T100 ?
пинам впаять еще ряд PLS и разрезать между ними
дорожки, как сделано в "Частотомере" - будет 12
групп по 5. А в будущем - будем думать.
Ну оно понятно управление движками и тд...
Однако многое на вашей плате уже не собереш,
схему сопряжения с винчестером, VGA цветной адаптер, интерфейс с SDRAM,
фрейм-грабер видео тоже.. - и тд. выводов маловато ((
Надо было поставить подобие мостов - перемычек на плате. Выпускайте 2 ревизию платы
да, Вы правы! ошибка в тексте была. Спасибо, Исправил.
То есть, их вообще нет на рисунке схемы, или имеются в виду pt_left, pt_right?
все это в планах есть, так что будем делать. И инструкции и уроки и новые проекты.
PS Где же вы были, когда я учился на первом курсе? Эх..