Comments 29
Спасибо, добавил ссылку
0
Собираюсь организовать цикл статей по AHDL, «с нуля» так сказать, в черновиках уже лежит одна, думал опубликовать, но кармы нет
0
Было бы просто здорово.
+1
Не стоит эксгумировать труп.
-1
не стоит на нем пытаться делать что-нибудь стоящее, а вот начать втыкать в *hdl, вообщем-то стоит, при наличии материала.
0
Зря вы так. На нем все еще пишут. Кроме того, он как Basic в HDL-языках — самое то для начинающих.
0
хех, помню писал как-то свой простенький процессор, на ПЛИСе.
жаль до железа не довёл, а закончил на эмуляторе.
жаль до железа не довёл, а закончил на эмуляторе.
+1
Забавная штука, но для получения зачета я бы отправил вас доделать защиту от дребезга и метастабильности по входам.
+2
От какого дребезга? Контактов? Там же триггеры стоят
+2
Вот из мануала:
A Schmitt Trigger circuit on each switch debounces the signal
A Schmitt Trigger circuit on each switch debounces the signal
+5
Ок, тогда только от метастабильности ;)
0
Так тригер же :)
+1
Работа триггера Шмидта асинхронна к вашему внутреннему тактовому сигналу и потому совершенно не спасает от метастабильности. Момент переключения входного сигнала может попасть непосредственно на фронт тактового сигнала, что приведет к печальным последствиям — значения со входов используются непосредственно в управляющей логике из-за чего проблемам будет подвержен весь проект.
Для учебного проекта, который должен отработать один раз, вероятность наступления такого события невилика (но все равно можно облажаться на зачете), для промышленного — недопустимо.
Для начала можно почитать например
Для учебного проекта, который должен отработать один раз, вероятность наступления такого события невилика (но все равно можно облажаться на зачете), для промышленного — недопустимо.
Для начала можно почитать например
0
Откуда асинхронность, если значение с триггера принимается в расчёт только по приходу фронта сигнала синхронизации? Насколько я понимаю, фронт — моментное состояние, и одновременно с ним существует одно конкретное значение сигнала RESET. А так как кнопку нажимает человек, при частоте 50MHz (её при желании можно поднять до 60) хотя бы на один фронт CLK с большой вероятностью попадёт «чистое» значение с триггера, а не его фронт/спад.
0
Почитайте по ссылке выше, чтобы ознакомится с понятием «метастабильность триггера». Достаточно одного неудачного попадания, чтобы вывести ваш проект из строя на несколько минут-секунд, а то и вплоть до выключения питания.
0
Ну, мгновенных событий не бывает, и изменение сигнала на выходе триггера может совпасть с изменением сигнала clock, что и повлечёт за собой все радости мультивибрирования.
+1
Действительно, что-то я поторопился с выводами.
Вариант решения: благодаря долгому (относительно большой частоты) нажатию кнопки сравнивать предыдущее и текущее значения триггера, и при их совпадении считать значение установившимся со всеми вытекающими. Контролировать срабатывание легко по изменению индикаторов LED.
Вариант решения: благодаря долгому (относительно большой частоты) нажатию кнопки сравнивать предыдущее и текущее значения триггера, и при их совпадении считать значение установившимся со всеми вытекающими. Контролировать срабатывание легко по изменению индикаторов LED.
0
Да я в курсе. Но, в этой же как раз (отличной, надо сказать) статье сказано, что фига с два Вы поборете метастабильность совсем, можно лишь уменьшать её вероятность. В данной задаче… Ну… Всё сильно зависит, конечно, от свойств данного конкретного триггера…
Но вообще да, убедили… Всяко может быть и надо предохраняться.
Но вообще да, убедили… Всяко может быть и надо предохраняться.
0
Черт возьми. Как я мог пропустить такое :) Побежал изучать VHDL
0
Несколько вопросов-замечаний.
1.Список чувствительности для дешифратора покажите пожалуйста.
2. Список чувствительноести в процессе «модели поведения интерпретатора» Process (clk,RESET) неверный. RESET там абсолютно лишний потому что выполняется синхронно под изменением сигнала clk.
1.Список чувствительности для дешифратора покажите пожалуйста.
2. Список чувствительноести в процессе «модели поведения интерпретатора» Process (clk,RESET) неверный. RESET там абсолютно лишний потому что выполняется синхронно под изменением сигнала clk.
+2
Ага. код для дешифратора из приложенных файлов строго говоря тоже не совсем хорош. Выбранный вариант реализации без процесса породит адову конструкцию логических функций. Лучше бы с процессом — Quartus упаковал бы это более компактно, учитывая доступные аппаратные особенности Циклона.
Ну и чисто побрюзжать. Плату вы не разводили. Все что вы сделали это назначили пины проекта на ножки микросхемы. В design flow Альтеры этот этап так и называется — «назначение пинов» (Pin assignement).
Ну и чисто побрюзжать. Плату вы не разводили. Все что вы сделали это назначили пины проекта на ножки микросхемы. В design flow Альтеры этот этап так и называется — «назначение пинов» (Pin assignement).
+2
И сильная экономия получится? Привык не заниматься ненужной оптимизацией, а в моём случае логических элементов и так использовано немного.
Второе — да, для красного словца написал :)
Второе — да, для красного словца написал :)
0
Совершенно неважно, описывать конструкцию с явно заданным процессом или без — логика будет одна и та же. Если писать синхронный процесс, то у квартуса появится шанс упаковать логику в память, но для столь малого объема функции это неэффективно.
0
Спасибо, действительно, рудимент остался
0
Sign up to leave a comment.
VHDL для начинающих. Brainfuck