Графический дизайн в Quartus II v10.1 для начинающих.

Altera Quartus II v10 для начинающих

Меня долго терзали сомнения , нужно ли об этом рассказывать, но все-таки решил что нужно, по ряду соображений:

  •  Альтера еще не выбросила из пакета графический редактор (за что им "низкий поклон").
  • В тему "ПЛИС" приходят люди из разных смежных областей, в том числе и из схемотехники, поэтому схемотехническое представление может быть, на начальном этапе, более понятным (особенно для тех, кто уже пытался паять какие-то проводки и микросхемы). 
  • Мы (для платы Марсоход) имеем дело с очень маленьким и простым чипом, в котором можно реализовать очень небольшие проекты, не требующие каких-то глубоких знаний и уж тем-более коллективного программирования.
    (В некоторых случаях дело обходится установкой всего-лишь нескольких примитивов) .
  • Далеко не все начинающие программисты на HDL представляют себе, как их проекты выглядят в реальном чипе. (возможно, смогут узнать для себя что-то новое).

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

Часть1.   Пины (A),  Провода (B), Константы (C).

A.

Чип EPM240T100 имеет, кроме земли, питания и JTAG, 80 пинов, которые можно использовать в своих проектах.
В программе "Resource Property Editor" из комплекта Altera Quartus II один пин выглядит так:

PIN в проектах ПЛИС Altera Quartus II

В середине картинки ромбик в квадратике, это , собственно ножка чипа. Проводок с правой стороны - это вход, который может идти в чип напрямую, или через элемент задержки (^T).
Треугольничек с левой стороны - выходной буферный элемент. Он имеет вход данных и разрешения (который с кружочком).
В программе "Assignment Editor" для каждого пина можно назначить определенные свойства:

  • прежде всего "Location" - номер ножки в чипе.

Затем свойства входа:

  • уже упомянутая задержка "Input Pin to Logic Array Delay" (зачем может понадобиться , не знаю). 
  • "Weak Pull Up" включает подтягивающий резистор на питание (обязательно нужно на кнопочках, чтобы не болтались в воздухе и не ловили наводки). 
  • "Bus Hold" - примерно тоже-самое что и "Weak Pull Up", но подтягивает не к питанию, а к прямому выходу этого-же пина. Это удерживает пин в состоянии, которое на нем было последним.
  • "I/O Standart" - возможно только два случая - наличие или отсутствие триггера шмитта (очеyь нужная функция - триггер шмитта нужен практически всегда).

Ну и свойства выхода:

  • "Slow Slew Rate" - уменьшение скорости нарастания выходного сигнала, якобы для уменьшения помех (не пробовал).
  • "Current Strengh" - возможны два значения 16ma или 8ma. По моим измерениям, в
    первом случае сопротивление канала выходного ключа ~20ом, во втором 40ом.

Для того чтобы использовать пин в дизайне , нужно с помощью меню "Symbol" установить
два примитива - "Bidir" и "Tri".
BIDIR PIN в среде Altera Quartus II
Для запуска меню "Symbol" можно нажать два раза левой кнопкой мыши на свободном поле или соответствующую кнопку в меню редактора (там изображен какой-то логический элементик).

Ввод компонента на схеме Altera Quartus II

Нужный нам примитив можно выбрать в библиотеке или ввести его название с строке "Name:", что , на мой взгляд, гораздо удобнее. Кроме того, есть три частных случая :
Входные и выходные пины на схеме Altera Quartus II

"Input" - когда выходной буфер всегда находится в "Z"- состоянии и используется только вход.
"Output" - когда он всегда разрешён, и данные сразу поступают на выход (вход использовать нельзя ).
"Opndrn" - когда, в зависимости от данных, на выходе или "Z" или "0".
Выход с открытым коллектором на схеме Altera Quartus II

Примитивы  "Input" ,"Output" и "Bidir" могут описывать сразу несколько пинов и должны быть поименованы соответственно (key[3..0] , pt_left и т.д.).

B.

Теперь, когда данные можно вводить в чип и выводить наружу - нужны провода.
Провода на схемах Altera Quartus II

Проводники могут быть одиночные ("Node Line") или шины ("Bus Line") и тоже могут иметь свои имена. Если имена проводников совпадают с именами пинов значит они соединены. В некоторых случаях проводники нужно переименовывать. Для этого можно использовать примитив "Wire"
Переименование проводников на схемах Altera Quartus II

Имена шин могут иметь две размерности (в некоторых случаях это удобно) и менять порядок  бит (на выходе одного элемента, например, bus[3..0], а на входе другого bus[0..3] ). Размерность шины должна точно совпадать с размерностью входа или выхода, к которому она подключена.

C.

Иногда, на вход какого-нибудь компонента или на пин, нужно подать какое-то, не меняющееся во времени, значение (константу). Для этого можно использовать примитивы "GND"  и "VCC".
Константы на схемах Altera Quartus II

В случае, если константа нужна большая, чтобы не рисовать много "GND"  и "VCC" можно использовать параметризованную мегафункцию "LPM_CONSTANT" (здесь и далее "мегафункция"- некоторое количество связанных между собой примитивов,
 реализующee определенную функциональность . Обычно называется LPM_XXX).
Константы на схемах Altera Quartus II
Установить константу можно , как и примитивы, с помощью меню "Symbol", но двумя способами:

  1. С помощью визарда. Сдесь все понятно - отвечаешь на вопросы и в итоге получаешь нужный тебе компонент ( на картинке слева ).
  2. Если в меню "Symbol" убрать галочку "Launch MegaWizard Plug-In", то можно установить так-называемую "чистую" мегафункцию. В этом случае все параметры придётся устанавливать "в ручную", в меню "Properties". Эти параметры видны в табличке возле элемента ( на картинке справа ).

Напоследок пара рекомендаций.

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

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

В следующей статье - Часть2. Комбинаторная логика.

 

 

Добавить комментарий