реклама на сайте
подробности

 
 
4 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Простенький проект CPLD
Allregia
сообщение Nov 29 2010, 12:37
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Есть простенкий проект - буквально пара двоичных счетчиков, регистров и немного вентилей.
Планирую на 3-х вольтовой EPM3032А, БайтБластер уже спаял.

Раньше с програмируемой логикой дел не имел, но слышал что простые вещи можно не писать программу на AHDL/VHDL а просто нарисовать схему, скомпилировать и прошить в альтерку.

Пока Квартус не скачался, поставил MAX+, лицензию у альтеры получил, но что делать дальше - пока не разобрался. С ним даже какие-то примеры куцые идут, или это я баран. Но когда вызываю компилятор, кнопочка "старт" неактивная.
Направьте на путь истинный, плииииз. Куда смотреть, чего читать.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Nov 29 2010, 12:51
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Русскоязычной Европе в помощь...

Прикрепленные файлы
Прикрепленный файл  1.ZIP ( 1.65 мегабайт ) Кол-во скачиваний: 98
Прикрепленный файл  Quartus_Max.zip ( 2.85 мегабайт ) Кол-во скачиваний: 94
 
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 29 2010, 13:50
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Щiро дякую!
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 30 2010, 14:38
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Рано я обрадовался sad.gif
Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально.
Но не в этом дело, я сделал 99% того что мне надо было, но споткнулся на одной ерунде. понияю что вопросы детские, но если кому не лень - посмотрите пожалуйста, в аттаче все файлы проекта, а я пока словами опишу:

-вход тактовой идет на один вход 2XOR
-та-же тактовая идет на 5 подряд включенных инверторов (NOT)
- с выхода 5-го инвертора сигнал идет на второй вход 2XOR, и для контрлля - на вход out1
- выход 2XOR идет на выход out.

на out1 вижу задержанный клок, а на выходе out - по=стоянно висит 0

для проверки, параллельно 2XOR поставил 2AND, с выходом на out2 - там тоже постоянно висит 0.

Что я "не так" делаю ?
Думаю не надо обьяснять. что я хотел получить короткие импульсы от обоих фронтов клока (для чего неважно - это только фрагмент схемы).

P.S. Соррри если не в том разделе, но в "начинающим" я раздела про ПЛИСы не нашел.

Прикрепленные файлы
Прикрепленный файл  dclk.rar ( 11.44 килобайт ) Кол-во скачиваний: 38
 
Go to the top of the page
 
+Quote Post
Victor®
сообщение Nov 30 2010, 15:15
Сообщение #5


Lazy
******

Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76



Цитата(Allregia @ Nov 30 2010, 17:38) *
Рано я обрадовался sad.gif
Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально.
Но не в этом дело, я сделал 99% того что мне надо было, но споткнулся на одной ерунде. понияю что вопросы детские, но если кому не лень - посмотрите пожалуйста, в аттаче все файлы проекта, а я пока словами опишу:

-вход тактовой идет на один вход 2XOR
-та-же тактовая идет на 5 подряд включенных инверторов (NOT)
- с выхода 5-го инвертора сигнал идет на второй вход 2XOR, и для контрлля - на вход out1
- выход 2XOR идет на выход out.

на out1 вижу задержанный клок, а на выходе out - по=стоянно висит 0

для проверки, параллельно 2XOR поставил 2AND, с выходом на out2 - там тоже постоянно висит 0.

Что я "не так" делаю ?
Думаю не надо обьяснять. что я хотел получить короткие импульсы от обоих фронтов клока (для чего неважно - это только фрагмент схемы).

P.S. Соррри если не в том разделе, но в "начинающим" я раздела про ПЛИСы не нашел.


Дело не в CPLD или MAX+PLUS II...
Дело в Вашем подходе к цифровой схемотехнике.
И если в стиле "а-ля 74`" такие фокусы проходили, то в мире CPLD\FPGA это "дурной тон"
(Я о способе выделения фронтов)


--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 30 2010, 15:24
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(Victor® @ Nov 30 2010, 17:15) *
Дело не в CPLD или MAX+PLUS II...
Дело в Вашем подходе к цифровой схемотехнике.
И если в стиле "а-ля 74`" такие фокусы проходили, то в мире CPLD\FPGA это "дурной тон"
(Я о способе выделения фронтов)


Ну я как бы и не скрывал что в CPLD/FPGA я новичек smile.gif
Если такой вариант не подходит, подкажите "как надо" это делат с CPLD? Я волшебное слово знаю - пожалуйста.

(и все же интересно, почему и такое не работает? может там как типа как в Си компиляторах - оптимизатор повыбрасывал с его точки хзрения лишнее?)
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 30 2010, 15:31
Сообщение #7


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Victor® @ Nov 30 2010, 17:15) *
И если в стиле "а-ля 74`" такие фокусы проходили, то в мире CPLD\FPGA это "дурной тон"

В эпоху 7400 это тоже считалось "дурным тоном" или "высшим пилотажем", смотря кто как оценивает.

2 Allregia
Оптимизатор повыбрасывал, вы правы. Можете повыводить на выходы все свои сигналы, тогда они должны остаться.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 30 2010, 15:41
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(ViKo @ Nov 30 2010, 17:31) *
В эпоху 7400 это тоже считалось "дурным тоном" или "высшим пилотажем", смотря кто как оценивает.


Да нет, это как раз считалось вполне нормальным. "Дурным тоном" считалось - когда вместо цепочки инверторов ставили RC-цепочку, вот за это надо бить по рукам.

Цитата
2 Allregia
Оптимизатор повыбрасывал, вы правы. Можете повыводить на выходы все свои сигналы, тогда они должны остаться.


ОК, так как все-таки "правильно" сделать в CPLD выделение фронта ? Частота клока относительно небольшая - 100-120кгц.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 30 2010, 15:55
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Allregia @ Nov 30 2010, 17:41) *
ОК, так как все-таки "правильно" сделать в CPLD выделение фронта ? Частота клока относительно небольшая - 100-120кгц.

Все делать синхронным. Иметь в ПЛИС тактовый сигнал, частоты которого хватит для любых манипуляций со входными сигналами. Задержать сигнал на триггере, тактируемым этим тактовым сигналом (как и все остальные триггеры). Когда входной сигнал уже в 1, а на триггере еще 0 - вот и фронт.
На входе для сигналов требуется ставить так называемые "синхронизаторы" на паре триггеров. Чтобы избежать метастабильных состояний, когда тактовый сигнал по времени совпадает с изменением входного. Издержки синхронного дизайна.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Nov 30 2010, 20:51
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(Allregia @ Nov 30 2010, 18:41) *
Да нет, это как раз считалось вполне нормальным. "Дурным тоном" считалось - когда вместо цепочки инверторов ставили RC-цепочку, вот за это надо бить по рукам.

Готов поспорить. По температурной стабильности RC значительно более стабильна чем цепочка инверторов. И для ASIC это тоже справедливо.

Вы бы объяснили более конкретно что вам нужно. А выделение фронта делается на 2-х разрядном сдвиговом регистре сравнением его с 2'b01 (или 2'b10 в зависимости от требуемого фронта), плюс еще регистр для подавления метастабильности.
Go to the top of the page
 
+Quote Post
Allregia
сообщение Nov 30 2010, 21:53
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(dvladim @ Nov 30 2010, 22:51) *
Вы бы объяснили более конкретно что вам нужно.


Мне нужно сформировать импульсы, длительностью не более 20нс, после обеих фронтов сигнала, который примерно меандр 100кгц.
Можно и менее 20нс, эти импульсы будут исопльзоваться для сброса счетчика, находященося в той-же CPLD.

Цитата
А выделение фронта делается на 2-х разрядном сдвиговом регистре сравнением его с 2'b01 (или 2'b10 в зависимости от требуемого фронта),


Зачем "2-х разрядном"? Нельзя 1-разрядным? Т.е. как тут выше советовали - задержать Д-триггером и потом сложить вход и выход триггера XORом ?
Цитата
плюс еще регистр для подавления метастабильности.


Можно поподробнее - что такое "метастабильность и как ее подавлять? Я может и знаю о чем речь, но не знаю этого термина.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Dec 1 2010, 06:31
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Allregia @ Dec 1 2010, 01:53) *
Мне нужно сформировать импульсы, длительностью не более 20нс, после обеих фронтов сигнала, который примерно меандр 100кгц.
Можно и менее 20нс, эти импульсы будут исопльзоваться для сброса счетчика, находященося в той-же CPLD.

Инверторы, коньюнкторы, исключающее ИЛИ и Ваш личный опыт, Вам и помогут.
Изучение Altera Quartus II посмотрите в http://marsohod.org/index.php/aquartus2
Про верилог, который лучше схематики на все 100%, смотрите для начала в http://marsohod.org/index.php/component/tag/Verilog

Да и просто, специально для начинающих и для Вас тоже, смотрите все в http://marsohod.org/index.php/howtostart
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Dec 1 2010, 08:45
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



Я когда-то тоже начинал с маленьких CPLD. Собственно, и сейчас выше младшего Циклона3 не ушёл. Сначала в графике делал (а-ля 74хх), потом на AHDL перешёл...
Так вот, когда я более-менее созрел до написания правильных синхронных проектов без всей этой комбинаторики на Искл.ИЛИ для пропуска или удвоения импульсов и т.д., то попробовал переписать часть своих старых поделок (кодовый замок, например, на EPM7032S) на верилоге без шаманских заморочек. И что вы думаете? Не влезло! smile.gif Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.
Allregia, Вы, как будто, не совсем сначала перекладываете решение задачи на ПЛМ. Вам надо выделить фронты для сброса счётчика. А счётчик что считает? Не эти же ли импульсы 100 кГц? Если эти, то нет необходимости в столь шустрых сбросах. Если не эти, то нужно синхронизировать сначала 2 сигнала, а потом уже управление им доверять.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 1 2010, 09:04
Сообщение #14


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Евгений Николаев @ Dec 1 2010, 11:45) *
И что вы думаете? Не влезло! smile.gif Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.

Естественно, это ж CPLD, там с триггерами напряжёнка.
Зато многотермовой логики - навалом.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
dvladim
сообщение Dec 1 2010, 18:51
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(Allregia @ Dec 1 2010, 00:53) *
Мне нужно сформировать импульсы, длительностью не более 20нс, после обеих фронтов сигнала, который примерно меандр 100кгц.
Можно и менее 20нс, эти импульсы будут исопльзоваться для сброса счетчика, находященося в той-же CPLD.

Нет, это ерунда какая-то. Переходите к нормальному синхронному дизайну, сброс будет шириной в такт и вопросов о длительности сигнала сброса возникать вообще не будет.

Цитата(Allregia @ Dec 1 2010, 00:53) *
Зачем "2-х разрядном"? Нельзя 1-разрядным? Т.е. как тут выше советовали - задержать Д-триггером и потом сложить вход и выход триггера XORом ?

Можно поподробнее - что такое "метастабильность и как ее подавлять? Я может и знаю о чем речь, но не знаю этого термина.

В поиск. Обсуждалось многократно.

Цитата(Евгений Николаев @ Dec 1 2010, 11:45) *
Так вот, когда я более-менее созрел до написания правильных синхронных проектов без всей этой комбинаторики на Искл.ИЛИ для пропуска или удвоения импульсов и т.д., то попробовал переписать часть своих старых поделок (кодовый замок, например, на EPM7032S) на верилоге без шаманских заморочек. И что вы думаете? Не влезло! smile.gif Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.

Если разработчик сознательно уходит от синхронного дизайна к асинхронному, то он точно знает что делает и чем ему это грозит. Он не будет спрашивать как сделать то или иное, а новичку лучше разобраться с нормальным синхронным дизайном, а уж потом заниматься с асинхронщиной.
Go to the top of the page
 
+Quote Post

4 страниц V   1 2 3 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 9th July 2025 - 14:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01498 секунд с 7
ELECTRONIX ©2004-2016