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

E-mail Печать PDF

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. Комбинаторная логика.

 

 

Tags:
 

Комментарии 

 
0 #29 Ю р и й 05.01.2012 13:49
Цитирую pixar:
Цитирую Ю р и й:
Возьмите обычную ЛН-ку и соедините у нее вход с выходом - будет генерить?
.

ну не откладывая надолго, взял код с
http://www.alteraforum.com/forum/showthread.php?t=709&page=2
пост #15 , вывел на наружные ноги , добавил внутри же инвертор .
залил в DEO0_nano , соединил взод с выходом проводом 30 см длиной - получил 50 МГц . Мерял Rigol_1052.
Если есть надобность , могу оставить один буфер+один инветор, перемычку сделать 5 мм и померять Теком.
200МГц может и выйдет.

Абсолютно не возражаю, но это уже не "генератор внутри ПЛИС"
Цитировать
 
 
0 #28 pixar 05.01.2012 11:12
Цитирую Ю р и й:
Возьмите обычную ЛН-ку и соедините у нее вход с выходом - будет генерить?
.

ну не откладывая надолго, взял код с
http://www.alteraforum.com/forum/showthread.php?t=709&page=2
пост #15 , вывел на наружные ноги , добавил внутри же инвертор .
залил в DEO0_nano , соединил взод с выходом проводом 30 см длиной - получил 50 МГц . Мерял Rigol_1052.
Если есть надобность , могу оставить один буфер+один инветор, перемычку сделать 5 мм и померять Теком.
200МГц может и выйдет.
Цитировать
 
 
0 #27 Ю р и й 05.01.2012 07:00
Цитирую pixar:
http://www.altera.com/literature/ug/ug_low_level.pdf LCELL implement
http://www.alteraforum.com/forum/showthread.php?t=709&page=2

TrueRNG http://ite.gmu.edu/~kgaj/publications/conferences/GMU_FPGA_2004_slides.pdf

а главное - не могу ссылку найти, но видел сам - какие то немцы продавали USB девайс на CoolRunner на основе последней ссылки. Описывалось , как там у них много разных RO по разному от температуры зависят и друг друга стробируют и как от этого чисто случайное число возникает из ниоткуда.


На мой взгняд, не всему что "написано" слдует искренне верить.
Возьмите обычную ЛН-ку и соедините у нее вход с выходом - будет генерить?
Все что здесь описано, это не генератор, а усилитель помех по питанию.
Я-бы даже для генрации слечайных чисел такое использовать не рискнул.
Цитировать
 
 
0 #26 pixar 05.01.2012 01:11
http://www.altera.com/literature/ug/ug_low_level.pdf LCELL implement
http://www.alteraforum.com/forum/showthread.php?t=709&page=2

TrueRNG http://ite.gmu.edu/~kgaj/publications/conferences/GMU_FPGA_2004_slides.pdf

а главное - не могу ссылку найти, но видел сам - какие то немцы продавали USB девайс на CoolRunner на основе последней ссылки. Описывалось , как там у них много разных RO по разному от температуры зависят и друг друга стробируют и как от этого чисто случайное число возникает из ниоткуда.
Цитировать
 
 
0 #25 Ю р и й 04.01.2012 11:11
Цитирую pixar:
Цитирую Ю р и й:
Именно внутри ПЛИС генератор сделать нельзя, частотозадающие элементы все-равно будут снаружи.

Гочему нельзя ? А как же все true random generator cores, работающие на внутренних генераторах?


Очень хотелось-бы посмотреть пример реализации на ПЛИС.
Цитировать
 
 
0 #24 pixar 04.01.2012 09:47
Цитирую Ю р и й:
Именно внутри ПЛИС генератор сделать нельзя, частотозадающие элементы все-равно будут снаружи.

Гочему нельзя ? А как же все true random generator cores, работающие на внутренних генераторах?
Цитировать
 
 
0 #23 Ю р и й 04.01.2012 06:58
Цитирую Chettuser:
Здравствуйте,
Больше не нашёл куда написать, проблема такая:
Хочу создать тактовый генератор 200 МГц на EPM240(или 3032).
Можно ли собрать внутри ПЛИС что то наподобие этого: http://www.radioman-portal.ru/pages/1602/ ?


Именно внутри ПЛИС генератор сделать нельзя, частотозадающие элементы все-равно будут снаружи.
Об RC -генераторах здесь http://marsohod.org/index.php/ourblog/11-blog/105-freqdependancy
о кварцевых здесь http://marsohod.org/index.php/ourblog/11-blog/133-quarz
Цитировать
 
 
0 #22 Chettuser 03.01.2012 11:53
Здравствуйте,
Больше не нашёл куда написать, проблема такая:
Хочу создать тактовый генератор 200 МГц на EPM240(или 3032).
Можно ли собрать внутри ПЛИС что то наподобие этого: http://www.radioman-portal.ru/pages/1602/ ?
Цитировать
 
 
0 #21 zvladm 24.07.2011 03:26
:cry: а как попасть на вторую часть марлезонского балета, т.е. часть 2
Цитировать
 
 
0 #20 Петр 22.07.2011 03:23
Добрый день!

Подскажите, пожалуйста, существуют ли какие-нибудь опции, влияющие на скорость компиляции проекта? А то так долго...
Цитировать
 

GitHub YouTube Twitter

Подписка RSS

marsohod.org - лента

Последние комментарии: