Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА: Графический (блочный) дизайн

Графический (блочный) дизайн 10 года 7 мес. назад #2400

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1
Понятно, что серьезные проекты в Quartus'е не рисуют, а пишут на разных HDL'ах, но мне кажется, что для начальных экспериментов графический дизайн вполне имеет право на жизнь. Особенно, если раньше уже приходилось сидеть с паяльником.

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

Кстати, повторю здесь полезную ссылку по теме - marsohod.org/11-blog/145-quartussch - позволяет быстро начать реализовывать простейшие, но уже работающие вещи.

Итак, решил попробовать собрать некоторую конструкцию, в которой используется куча микросхем 155/555 серии, а также несколько корпусов посерьезнее. Чтобы не возиться с мелочевкой, захотелось впихнуть ее в MAX 7000S. Понятно, что серия устаревшая, зато работает от 5В и есть вариант в корпусе PLC100, который и паять на макетке легко, и ножек как раз хватает для моего проекта.

Набросал большую часть схемы вообще в лоб, пользуясь примитивами - эмуляторами реальных микросхем, которые достались Quartus'у еще от MaxPlus2 (предыдущий софт Altera для работы с CPLD). Буквально за вечер сделал и запустил то, на что раньше ушло бы минимум дней 5 с паяльником. И это с учетом того, что пришлось установить и начать осваивать Quartus !

В какой-то момент не захотел делать явную глупость - использовать 4 мультиплексора, тогда как, если не привязываться к реальным микросхемам, можно сгенерить один мультиплексор нужного размера. И вот тут ожидала проблема, которую пока не смог решить.

Итак, первая часть:

Вставляю символ из megafunctions -> gates -> busmux. У этой мегафункции есть один параметр - WIDTH, определяющий, естественно, разрядность шин. Устанавливаю Value этого параметра в 4. Есть еще Type, устанавливал в разные значения, вроде ни на что не влияло (оставил в auto).

Через правый клик мышки выбираю "Generate pins for Symbol ports". И вот тут уже видна проблема - вместо 4-х пинов на каждую шину сфорировано только по одному, да еще и со странным именем datax[WIDTH-1..0]. Я догадываюсь, что вместо "WIDTH-1" должно быть "3", чтобы иметь 4 пина datax[3..0] для шины шириной 4, но почему-то Quartus не сгенерил символ, а просто вставил полуфабрикат. Естественно, проект по этой причине не компилируется... Как не бился, так и не смог победить. Заметно дальше удалось продвинуться, использовав Megafunction wizard, но и там натолкнулся на ряд проблем. Впрочем, все по порядку. Люди, скажите, что я не так делаю ???

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от newold86.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2403

Вот мой проект, все замечательно компилируется.



Что у вас не так?
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2405

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1
Просто чудеса какие-то... У Вас - именно так, как я и представлял. А вот у меня - не так...
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2406

newold86 пишет: Просто чудеса какие-то... У Вас - именно так, как я и представлял. А вот у меня - не так...

А на что именно ругается компилятор?
Нельзя просто заменить "WIDTH-1" в имени пина на нужную вам цифру ("3")?
Спасибо сказали: newold86

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от umarsohod.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2408

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1

umarsohod пишет: Нельзя просто заменить "WIDTH-1" в имени пина на нужную вам цифру ("3")?


Хм... Попробовал - все заработало... Так как я генерировал пины автоматически, то также автоматически решил, что имена сформированы максимально правильно, и такая простейшая вещь (просто переименовать) мне не пришла в голову, сразу полез в дебри.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2420

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1
После очередного плодотворного вечера возвращаюсь к старым вопросам...

Небольшое отступление - полностью запустил свое устройство, даже поверить не могу. Почти 40 мелких корпусов засунул в один, и все работает ! Только вот пока все реализовано очень некрасиво, так что пока стыдно показывать. Например, так и не смог задействовать все тот же несчастный мультиплексор (вместо него нарисовал схему из мелких элементов) по странной причине - не могу к нему нормально подключиться ! Например, что делать в случае, если я хочу часть входов шины подключить к внешним пинам, а оставшиеся - внутри ? Первая же проблема - если на приводившейся здесь выше простейшей схеме уменьшить количество входных пинов, приходящих к одной из шин (например, вместо aaa[3..0] написать aaa[2..0]), то уже перестает компилироваться - говорит, что разрядность не совпадает.

Ранее мне посоветовали:

SOVA пишет: Если в графике, то с помощью примитива WIRE. С левой стороны пишем входящую цепь, с правой стороны - провод управляющей шины.


Только вот заставить работать я это так и не смог. Во первых, как написать с разных сторон разные цепи ? WIRE не дает возможности присвоить своим сторонам разные имена (или я не там смотрел). Попробовал обойти кривым способом - добавил после WIRE небольшой провод (node tool), и назвал его datab[0]. Однако, во-первых, не могу поверить, что это нужно делать таким странным способом, и, во вторых, самое главное - это не работает. При компиляции говорится, что datab[0] (как и все остальные) мультиплексора никуда не подключены. Буду очень благодарен за советы !

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2422

Пример нужной вам схемы:



В зависимости от состояния io[0], на светодиодах будут или сигналы со счетчика q[3..0],
или состояния кнопок, клок и земля.
Вложения:
Спасибо сказали: newold86

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2423

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1
Как всегда, все просто... Но до чего же неэлегантно :(

Похоже, нужно взяться за HDL, но пока еще помучаюсь с графикой...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2424

  • newold86
  • newold86 аватар Автор темы
  • Не в сети
  • Осваиваюсь на форуме
  • Осваиваюсь на форуме
  • Сообщений: 29
  • Спасибо получено: 1
Есть вот такая простейшая схемка:





После компиляции получается вот такое в RTL Viewer:





Вопрос - что такое 1'h1-- ?
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Графический (блочный) дизайн 10 года 7 мес. назад #2425

newold86 пишет:
Вопрос - что такое 1'h1-- ?


На вход мультиплексора "datab[0]" подана единичка.
Спасибо сказали: newold86

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Время создания страницы: 0.401 секунд
Работает на Kunena форум