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

Nieve

Участник
  • Публикаций

    13
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Москва
  1. Довольно сложно, я бы даже сказал невыполнимо взять и договориться всем разработчикам. Если говорить о входны сигналах, то часто ставят префикс "i" или "in", соответственно "o" или "out" у выходных. А вообще у Иосифа Григорьевича в "Краткий курс HDL. Часть 3. О написании кода <вообще> ..." есть примеры и рекомендации.
  2. Использование "case" предпочтительнее (когда это возможно), т.к. при синтезе получается 1 MUX, а при использовании конструкций типа "if ... else" синтезится N-ое количество последовательных MUX-ов. Помимо увеличения логики в схеме, увеличиваются задержки на каждом из элементов.
  3. Да, причем в оригинале. Скажу лишь одно, применял подобную схему во многих проектах (FPGA, ASIC) и никогда проблем со сбросом не наблюдалось. Спасибо за Ваше уточнение, а я обязательно проанализирую Ваше замечание. Насколько я понял, тут имеется в виду ситуация, когда сигнал сброса формируется по одной частоте, а схема работает по другой. В таком случае, после подачи сигнала сброса на триггер, он действительно может "свалиться" в метастабильное состояние.
  4. Не совсем. Сначала триггер синхронизируется по тактовой частоте, а только потом уже используется для асинхронного сброса.
  5. И где же тут "недосинхронизация" ?
  6. Еще давно, когда только начинал изучать Verilog, коллега поделился мудростью. Применял подобную схему в своих проектах, никогда проблем не возникало.
  7. Асинхронный сброс module count ( input clk_i, input reset_i, output out_o ); reg rst_rg; reg [2:0] cnt; always @(posedge clk_i) begin rst_rg <= reset_i; end always @(posedge clk_i or negedge rst_rg) begin if (!rst_rg) cnt <= 3'b0; else cnt <= cnt + 1'b1; end assign out_o = cnt[0]; // Just an example endmodule
  8. SPI. проверка.

    Замкнуть на себя и проверить конечно можно, но вопрос в том что Вы и есть разработчик? В таком случае есть шанс что Вы не увидите ошибку. Лучше всего взять уже проверенное устройство и подключить к Вашему, перед этим сверить настройки Вашего SPI и "проверенного".
  9. 1. В таком случае как быть если схема зависла и необходимо ее сбросить? Или необходимо задать другие значения? В таком случае сначала "подать" сброс, а затем, по сигналу загрузки, записать входные данные. 2. Шаблон FSM не всегда является универсальным. Рекомендую использовать FSM "по clk" либо комбинационной логикой " @(*) ". 3. Я о другом. В модуле "generator" выходные сигналы делайте "wire-ми", чтобы могли их связывать с другими модулями (например верними уровнями) или для того, чтобы вывести этот сигнал на ножку ПЛИС и снять значения с "осцила".
  10. 1. У вас в схеме нет сигнала "reset", рекомендуется его сипользовать для начальной инициализации. 2. Не рекомендую вносить в список чувствительности текущее состояние FSM. 3. В модуле "generator", сигнал "out" задан как "output reg", а в модуле "tb" как "wire".
  11. Здравствуйте! У вас в TestBench переменная "addr" задана как "wire" + присваивается значение константы - "0". В самом модуле "spi_slave" вы начинаете с этой переменной работать. Получается что с одной стороны вы переменной "addr" присваиваете присваиваете постоянное значение, а с другой, меняете его.
  12. Как вариант сделать синтез в ISE / Quartus. САПР сам соберет схему.
  13. Verilog и "C" абсолютно разные вещи. Как максимум они визуально друг на друга похожи конструкциями типа "if else", "for" и т.д., но на этом их "сходство" заканчивается.