Перейти к содержанию
    

Простенький проект CPLD

Есть простенкий проект - буквально пара двоичных счетчиков, регистров и немного вентилей.

Планирую на 3-х вольтовой EPM3032А, БайтБластер уже спаял.

 

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

 

Пока Квартус не скачался, поставил MAX+, лицензию у альтеры получил, но что делать дальше - пока не разобрался. С ним даже какие-то примеры куцые идут, или это я баран. Но когда вызываю компилятор, кнопочка "старт" неактивная.

Направьте на путь истинный, плииииз. Куда смотреть, чего читать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рано я обрадовался :(

Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально.

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

 

-вход тактовой идет на один вход 2XOR

-та-же тактовая идет на 5 подряд включенных инверторов (NOT)

- с выхода 5-го инвертора сигнал идет на второй вход 2XOR, и для контрлля - на вход out1

- выход 2XOR идет на выход out.

 

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

 

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

 

Что я "не так" делаю ?

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

 

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

dclk.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рано я обрадовался :(

Не, вчера все пошло - я просто не вьехал в несколько идиотский интерфейс и идеологию самой программы (мах+), в "проектами" она работает мягко говоря оригинально.

Но не в этом дело, я сделал 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 это "дурной тон"

(Я о способе выделения фронтов)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело не в CPLD или MAX+PLUS II...

Дело в Вашем подходе к цифровой схемотехнике.

И если в стиле "а-ля 74`" такие фокусы проходили, то в мире CPLD\FPGA это "дурной тон"

(Я о способе выделения фронтов)

 

Ну я как бы и не скрывал что в CPLD/FPGA я новичек :)

Если такой вариант не подходит, подкажите "как надо" это делат с CPLD? Я волшебное слово знаю - пожалуйста.

 

(и все же интересно, почему и такое не работает? может там как типа как в Си компиляторах - оптимизатор повыбрасывал с его точки хзрения лишнее?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И если в стиле "а-ля 74`" такие фокусы проходили, то в мире CPLD\FPGA это "дурной тон"

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

 

2 Allregia

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

2 Allregia

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

 

ОК, так как все-таки "правильно" сделать в CPLD выделение фронта ? Частота клока относительно небольшая - 100-120кгц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ОК, так как все-таки "правильно" сделать в CPLD выделение фронта ? Частота клока относительно небольшая - 100-120кгц.

Все делать синхронным. Иметь в ПЛИС тактовый сигнал, частоты которого хватит для любых манипуляций со входными сигналами. Задержать сигнал на триггере, тактируемым этим тактовым сигналом (как и все остальные триггеры). Когда входной сигнал уже в 1, а на триггере еще 0 - вот и фронт.

На входе для сигналов требуется ставить так называемые "синхронизаторы" на паре триггеров. Чтобы избежать метастабильных состояний, когда тактовый сигнал по времени совпадает с изменением входного. Издержки синхронного дизайна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

Вы бы объяснили более конкретно что вам нужно. А выделение фронта делается на 2-х разрядном сдвиговом регистре сравнением его с 2'b01 (или 2'b10 в зависимости от требуемого фронта), плюс еще регистр для подавления метастабильности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы бы объяснили более конкретно что вам нужно.

 

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

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

 

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

 

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

плюс еще регистр для подавления метастабильности.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне нужно сформировать импульсы, длительностью не более 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я когда-то тоже начинал с маленьких CPLD. Собственно, и сейчас выше младшего Циклона3 не ушёл. Сначала в графике делал (а-ля 74хх), потом на AHDL перешёл...

Так вот, когда я более-менее созрел до написания правильных синхронных проектов без всей этой комбинаторики на Искл.ИЛИ для пропуска или удвоения импульсов и т.д., то попробовал переписать часть своих старых поделок (кодовый замок, например, на EPM7032S) на верилоге без шаманских заморочек. И что вы думаете? Не влезло! :) Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.

Allregia, Вы, как будто, не совсем сначала перекладываете решение задачи на ПЛМ. Вам надо выделить фронты для сброса счётчика. А счётчик что считает? Не эти же ли импульсы 100 кГц? Если эти, то нет необходимости в столь шустрых сбросах. Если не эти, то нужно синхронизировать сначала 2 сигнала, а потом уже управление им доверять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И что вы думаете? Не влезло! :) Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.

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

Зато многотермовой логики - навалом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

 

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

 

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

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

 

Так вот, когда я более-менее созрел до написания правильных синхронных проектов без всей этой комбинаторики на Искл.ИЛИ для пропуска или удвоения импульсов и т.д., то попробовал переписать часть своих старых поделок (кодовый замок, например, на EPM7032S) на верилоге без шаманских заморочек. И что вы думаете? Не влезло! :) Все эти триггеры, регистры синхронизаций, антидребезга и т.п. съедают поболее ячеек, чем комбинаторика.

Если разработчик сознательно уходит от синхронного дизайна к асинхронному, то он точно знает что делает и чем ему это грозит. Он не будет спрашивать как сделать то или иное, а новичку лучше разобраться с нормальным синхронным дизайном, а уж потом заниматься с асинхронщиной.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...