verali 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Добрый день! Являюсь новичком в Verilog и SV. До этого только подключал ip блоки к проекту, используя SV и писал простенькие testbench. Возникли трудности в банальном описании сброса. Внешний сброс приходит с процессора, доступ к которому сейчас не имею. Хочу проверить работоспособность "железа" путем автоматического сброса - допустим после 100 клоков сигнал reset переходит из 0 в 1 и далее никак не изменяется. Первая идея была использовать счетчик, который, досчитывая до 100, ставит сигнал reset в 1. Но, этот счетчик со временем обнулится, и сброс произойдет снова, что мне не подходит. Вопрос: возможно ли синтезировать данный сброс или надо искать другой путь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба вам железе или в симуляции? потому что в симуляции просто делаются reset = 0; #100; reset = 1; где #100 - задержка в 100 ваших единиц, нсек обычно. если в железе то что вам мешает счетчик остановить:)? if(counter < 100) begin reset_n <= 1'b0; counter <= counter + 1'b1; end else reset_n <= 1'b1; досчитает до 100, поднимет ресет и встанет, начальное значение надо только не забыть не во всех платформах оно 0 по умолчанию Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demon3200 0 31 января, 2017 Опубликовано 31 января, 2017 · Жалоба Хочу проверить работоспособность "железа" путем автоматического сброса - допустим после 100 клоков сигнал reset переходит из 0 в 1 и далее никак не изменяется. Если нужна симуляция сброса можно попробовать такой вариант: integer i; initial begin reset = 0; for(i = 0; i < 100; i = i+1) @(posedge clk); reset = 1; end После 100 клоков reset навсегда перейдет в 1. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 5 февраля, 2017 Опубликовано 5 февраля, 2017 · Жалоба module reset_modul ( clk ,reset ); output reset; wire reset; input clk; wire clk; reg [15:0] a=16'b0110000000000000; always @(posedge clk) a<=a>>1; assign reset=a[0]; endmodule Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба Всем привет, подниму тему. Написал модуль сброса: module StartUp ( input clk, output wire reset ); reg [4 : 0] delay; assign reset = !delay[4]; always @(posedge clk) if (reset) delay <= delay + 1; endmodule При старте должен выдавать положительный на выход и позже сбрасывается в 0. Этот модуль не работает, синтезатор пишет: @N: CL189 :"D:\Dropbox\Sources\Codes\Libraries\Verilog\StartUp.v":8:1:8:6|Register bit delay[4] is always 1. @N: CL159 :"D:\Dropbox\Sources\Codes\Libraries\Verilog\StartUp.v":2:7:2:9|Input clk is unused. Подскажите почему не работает? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 5 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 13 минут назад, RadiatoR сказал: Подскажите почему не работает? вам же написали - когда delay[4]=1 , тогда reset = 0 и ветка с клоком не работает никогда, наверное по этому синтезатор выкинул эти неиспользуемые вещи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 22 минуты назад, RadiatoR сказал: Всем привет, подниму тему. Написал модуль сброса: module StartUp ( input clk, output wire reset ); reg [4 : 0] delay; assign reset = !delay[4]; always @(posedge clk) if (reset) delay <= delay + 1; endmodule Подскажите почему не работает? Ну и при этом не факт, что регистр delay по исходному равен нулю... Такое может быть при загрузке ПЛИС, но может и не быть... При этом, вы хотите, чтобы модуль сработал только один раз после включения. Т.е. при холодном старте. А вот потом, в процессе работы кто-то захочет перезапустить устройство. Т.е. сделать горячий старт. Но увы, здесь как говорится "но пасаран"! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 7 minutes ago, iosifk said: А вот потом, в процессе работы кто-то захочет перезапустить устройство. Ножка ресет у меня выведена. Мне приходится каждый раз тыкать кнопку (это пока всего лишь отладка) чтобы всё завести. Я ожидаю, что delay[4], как и весь delay будет на старте равен 0. Возможно я ошибаюсь и это не так. Собственно я оцениваю по отладочным светодиодам. У меня их 16 штук и все они assigned к разным регистрам. И все они после конфигурации фпга не горят, из чего я делаю вывод, что после конфигурации все регистры в 0. В топе у меня сделано так: wire initReset, reset; StartUp startup(.clk(clk), .reset(initReset)); assign reset = initReset | rst; rst - это внешний ресет reset - уже синхронный, который используется для всех остальных модулей Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 1 минуту назад, RadiatoR сказал: Ножка ресет у меня выведена. Мне приходится каждый раз тыкать кнопку (это пока всего лишь отладка) чтобы всё завести. Я ожидаю, что delay[4], как и весь delay будет на старте равен 0. Возможно я ошибаюсь и это не так. Собственно я оцениваю по отладочным светодиодам. У меня их 16 штук и все они assigned к разным регистрам. И все они после конфигурации фпга не горят, из чего я делаю вывод, что после конфигурации все регистры в 0. Сложно то как! Светодиоды? Это примерно как записку для похода в магазин высекать на каменной плите и потом тащить ее на горбу с собой... А как проекты побольше будут? А как компилятор линии к светодиодам проложит? Сейчас - так, а в следующей итерации проекта - по другому... И тогда - "вот только что работало, час назад, а как начальник пришел - перестало"... А симулятор для чего сделан? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 16 minutes ago, iosifk said: А как проекты побольше будут? С fpga я столкнулся не по основному направлению. За исключением текущего проекта на ~70LE имею на нее виды только в рамках хобби. 16 minutes ago, iosifk said: А как компилятор линии к светодиодам проложит? Не понял этот момент. Как внешний ресет, который создается также как и линии во время конфигурации как-то влияет на саму конфигурацию? 16 minutes ago, iosifk said: А симулятор для чего сделан? ModelSim (использовал только его) без принудительного ресета через initial не знает начального состояния регистров и не симулирует. Это логично, я понимаю. На самом деле код у меня не сложный. Особо с проблемами я не сталкиваюсь и пишу с первого раза. Не комильфо, не в рамках стандартной парадигмы разработки, понимаю, но если сталкиваюсь с проблемами - они либо для меня понятны и симулятор не требуется, либо симулятор не помогает. Как и произошло сейчас (без initial блока не пройдет симуляция). А в этом проекте я использую lattice с внутренним hard SPI блоком. Мне нечего скормить ModelSim в качестве описания этого SPI, вот и использовал для отладки светодиоды. К слову с SPI я разобрался. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба PS упрощу вопрос: на практике есть решение с внутренним стартовым сбросом или же это решается внешними средствами? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
one_eight_seven 6 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 1 minute ago, RadiatoR said: PS упрощу вопрос: на практике есть решение с внутренним стартовым сбросом или же это решается внешними средствами? Спасибо. Смотря что вы имеете в виду. Практически все supervisor'ы со счётчиками внутри не имеют наружного сигнала сброса, и сбрасываются при подаче питания. Многие микроконтроллеры имеют несколько источников сброса: PowerUp Reset, сброс c помощью внешнего вывода RST (который может быть отключён, и больше не будет выполнять Power-Up Clear, а будет генерировать лишь прерывание). А также возможности программного сброса, который тоже настраивается либо на PowerUp Clear либо на простое направление счётчика программ на вектор сброса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrGalaxy 9 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба RadiatoR, Можно глупый вопрос? Вот так не пробовали: reg [4 : 0] delay = 4'b0000; ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RadiatoR 2 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба С ресетом мк я знаком. С ними проще - железо детерминировано и цепи сброса сформированы. А с фпга как? Такое решение (внутреннее) мне не попадалось. Вот и задался написать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 28 июля, 2020 Опубликовано 28 июля, 2020 · Жалоба 9 минут назад, RadiatoR сказал: PS упрощу вопрос: на практике есть решение с внутренним стартовым сбросом или же это решается внешними средствами? Все зависит от разработки. Скажем домофон "завис", ну так плюнули, начали в дверь стучать... Или другой вариант - висит контроллер связи и периферия, которая от него работает не доступна. Вот тогда микроконтроллер может подать сигнал на сброс и повторную программную инициализацию. Я же написал "холодный сброс" и "горячий сброс". А что касается " нечего скормить ModelSim в качестве описания этого SPI", то на несинтезируемых конструкциях имитатор SPI делается за 10 мин. Хотя я уверен, что модель SPI производитель предоставляет. Ведь даже изготовители микросхем памяти дают модели памяти для совместной симуляции проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться