|
|
  |
Простенький проект CPLD |
|
|
|
Nov 29 2010, 12:37
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Есть простенкий проект - буквально пара двоичных счетчиков, регистров и немного вентилей. Планирую на 3-х вольтовой EPM3032А, БайтБластер уже спаял.
Раньше с програмируемой логикой дел не имел, но слышал что простые вещи можно не писать программу на AHDL/VHDL а просто нарисовать схему, скомпилировать и прошить в альтерку.
Пока Квартус не скачался, поставил MAX+, лицензию у альтеры получил, но что делать дальше - пока не разобрался. С ним даже какие-то примеры куцые идут, или это я баран. Но когда вызываю компилятор, кнопочка "старт" неактивная. Направьте на путь истинный, плииииз. Куда смотреть, чего читать.
|
|
|
|
|
Nov 30 2010, 14:38
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Рано я обрадовался  Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально. Но не в этом дело, я сделал 99% того что мне надо было, но споткнулся на одной ерунде. понияю что вопросы детские, но если кому не лень - посмотрите пожалуйста, в аттаче все файлы проекта, а я пока словами опишу: -вход тактовой идет на один вход 2XOR -та-же тактовая идет на 5 подряд включенных инверторов (NOT) - с выхода 5-го инвертора сигнал идет на второй вход 2XOR, и для контрлля - на вход out1 - выход 2XOR идет на выход out. на out1 вижу задержанный клок, а на выходе out - по=стоянно висит 0 для проверки, параллельно 2XOR поставил 2AND, с выходом на out2 - там тоже постоянно висит 0. Что я "не так" делаю ? Думаю не надо обьяснять. что я хотел получить короткие импульсы от обоих фронтов клока (для чего неважно - это только фрагмент схемы). P.S. Соррри если не в том разделе, но в "начинающим" я раздела про ПЛИСы не нашел.
Прикрепленные файлы
dclk.rar ( 11.44 килобайт )
Кол-во скачиваний: 38
|
|
|
|
|
Nov 30 2010, 15:15
|

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

|
Цитата(Allregia @ Nov 30 2010, 17:38)  Рано я обрадовался  Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально. Но не в этом дело, я сделал 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
|
|
|
|
|
Nov 30 2010, 15:41
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(ViKo @ Nov 30 2010, 17:31)  В эпоху 7400 это тоже считалось "дурным тоном" или "высшим пилотажем", смотря кто как оценивает. Да нет, это как раз считалось вполне нормальным. "Дурным тоном" считалось - когда вместо цепочки инверторов ставили RC-цепочку, вот за это надо бить по рукам. Цитата 2 Allregia Оптимизатор повыбрасывал, вы правы. Можете повыводить на выходы все свои сигналы, тогда они должны остаться. ОК, так как все-таки "правильно" сделать в CPLD выделение фронта ? Частота клока относительно небольшая - 100-120кгц.
|
|
|
|
|
Nov 30 2010, 20:51
|
Знающий
   
Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737

|
Цитата(Allregia @ Nov 30 2010, 18:41)  Да нет, это как раз считалось вполне нормальным. "Дурным тоном" считалось - когда вместо цепочки инверторов ставили RC-цепочку, вот за это надо бить по рукам. Готов поспорить. По температурной стабильности RC значительно более стабильна чем цепочка инверторов. И для ASIC это тоже справедливо. Вы бы объяснили более конкретно что вам нужно. А выделение фронта делается на 2-х разрядном сдвиговом регистре сравнением его с 2'b01 (или 2'b10 в зависимости от требуемого фронта), плюс еще регистр для подавления метастабильности.
|
|
|
|
|
Nov 30 2010, 21:53
|
Профессионал
    
Группа: Свой
Сообщений: 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ом ? Цитата плюс еще регистр для подавления метастабильности. Можно поподробнее - что такое "метастабильность и как ее подавлять? Я может и знаю о чем речь, но не знаю этого термина.
|
|
|
|
|
Dec 1 2010, 06:31
|
Знающий
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Dec 1 2010, 08:45
|

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

|
Я когда-то тоже начинал с маленьких CPLD. Собственно, и сейчас выше младшего Циклона3 не ушёл. Сначала в графике делал (а-ля 74хх), потом на AHDL перешёл... Так вот, когда я более-менее созрел до написания правильных синхронных проектов без всей этой комбинаторики на Искл.ИЛИ для пропуска или удвоения импульсов и т.д., то попробовал переписать часть своих старых поделок (кодовый замок, например, на EPM7032S) на верилоге без шаманских заморочек. И что вы думаете? Не влезло!  Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика. Allregia, Вы, как будто, не совсем сначала перекладываете решение задачи на ПЛМ. Вам надо выделить фронты для сброса счётчика. А счётчик что считает? Не эти же ли импульсы 100 кГц? Если эти, то нет необходимости в столь шустрых сбросах. Если не эти, то нужно синхронизировать сначала 2 сигнала, а потом уже управление им доверять.
--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
|
|
|
|
|
Dec 1 2010, 18:51
|
Знающий
   
Группа: Свой
Сообщений: 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) на верилоге без шаманских заморочек. И что вы думаете? Не влезло!  Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика. Если разработчик сознательно уходит от синхронного дизайна к асинхронному, то он точно знает что делает и чем ему это грозит. Он не будет спрашивать как сделать то или иное, а новичку лучше разобраться с нормальным синхронным дизайном, а уж потом заниматься с асинхронщиной.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|