bogaev_roman 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба Добрый день, Уважаемые форумчане. Насколько я помню в fpga altera после загрузки прошивки по умолчанию все триггеры находятся в 0, тема даже обсуждалось. Проблема в том, что начальство просит меня тыкнуть пальцем в официальную документацию - может кто-нибудь кинет ссылку или название документа, где это может быть прописано? Память (RAM), насколько я помню, находится в неопределенном состоянии? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба Добрый день, Уважаемые форумчане. Насколько я помню в fpga altera после загрузки прошивки по умолчанию все триггеры находятся в 0, тема даже обсуждалось. Проблема в том, что начальство просит меня тыкнуть пальцем в официальную документацию - может кто-нибудь кинет ссылку или название документа, где это может быть прописано? Память (RAM), насколько я помню, находится в неопределенном состоянии? Спасибо. http://quartushelp.altera.com/14.0/mergedP...p_dont_care.htm может это их убедит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба http://quartushelp.altera.com/14.0/mergedP...p_dont_care.htm может это их убедит Я думаю подойдет и это, спасибо. Хотя по этой настройке вышел на явное указание: Registers in the device core always power up to a low (0) logic level on all Altera devices. However, there are ways to implement logic such that registers behave as if they were powering up to a high (1) logic level. И эта фраза в документе хандбука на квартус в главе Recommended HDL Coding Styles. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vascom 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bogaev_roman 0 5 октября, 2016 Опубликовано 5 октября, 2016 · Жалоба Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции. Естественно, это вопрос скорее теоретический. Возник он исходя из того - а что будет если не завести внешнюю кнопку сброса (ну или чего то подобного по типу пустить счетчик по включению питания) и внешний генератор запустится позже (я сам обычно пускаю сброс основной по ~locked), чем зальется прошивка. Понятно, что такого быть не должно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
likeasm 0 6 октября, 2016 Опубликовано 6 октября, 2016 (изменено) · Жалоба Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции. Вопрос упирается в экономию соединений. Нет reset, значит нет лишних лишних связей. Если начальная установка происходит один раз в конце конфигурации, то лучше reset не тянуть, а вместо этого, если позволяет ПЛИС, инициализировать триггеры средствами языка. Изменено 6 октября, 2016 пользователем likeasm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvladim 0 6 октября, 2016 Опубликовано 6 октября, 2016 · Жалоба Естественно, это вопрос скорее теоретический. Регистры в ПЛИС естественно сбросятся. Вопрос, скорее, в возможном нарушении recovery/removal на триггерах, поскольку внутренний сброс никак не синхронизирован с внешними сигналами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 5 7 октября, 2016 Опубликовано 7 октября, 2016 · Жалоба а атрибуты, которыми указать, что триггер в 1 - есть? у ксайлинсов вроде так. ну и еще по поводу сброса - в современных ПЛИС нету отдельных цепей сброса - то есть будут тратиться ресурсы (глобальный интерконект) нужно ли это? но это общее рассуждение, нужно смотреть конкретное семейство. например Гейслер принципиально не делает сброса (только для очень редких регистров)) - утверждает, что сильно улучшает этим времянку среднестатистическую (для произвольной ПЛИС и вендора). это создавало определенные проблемы и я с ним достаточно долго спорил, потом плюнул и поправил свою копию его либы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 7 октября, 2016 Опубликовано 7 октября, 2016 · Жалоба а атрибуты, которыми указать, что триггер в 1 - есть? у ксайлинсов вроде так. Импульс сброса длительностью 1 такт // Synchronization timers // Don't use asynchronous "dev_clrn" signal with external superviser reg clear_event; initial clear_event = 1'b 1; always @( posedge clock ) clear_event <= 1'b 0; Или еще вариант установки и способ применения. // Synchronization timers // Don't use asynchronous "dev_clrn" signal with external superviser reg clear_event = 1'b 1; always @( posedge clock ) clear_event <= 1'b 0; // Autoreload timer ( 1 ms ) wire sample_1ms; timer_n #( .NBITS ( 15 ), .NTICKS ( 24_999 ) ) u25 ( .clock ( clock ), .clear ( 1'b 0 ), .load ( sample_1ms | clear_event ), .count ( 1'b 1 ), .done ( sample_1ms ) ); // Global clear trigger and interval timer ( 100 ms ) wire clear_done; reg clear; always @( posedge clock, posedge clear_event ) if ( clear_event ) clear <= 1'b 1; else if ( clear_done ) clear <= 1'b 0; timer_n #( .NBITS ( 7 ), .NTICKS ( 100 ) ) u26 ( .clock ( clock ), .clear ( 1'b 0 ), .load ( clear_event ), .count ( sample_1ms & !clear_done ), .done ( clear_done ) ); // Module asynchronous clear trigger and interval timer ( 10 ms ) wire logic_clear_done; reg logic_clear; always @( posedge clock, posedge clear ) if ( clear ) logic_clear <= 1'b 1; else if ( logic_clear_done ) logic_clear <= 1'b 0; timer_n #( .NBITS ( 4 ), .NTICKS ( 10 ) ) u27 ( .clock ( clock ), .clear ( 1'b 0 ), .load ( clear ), .count ( sample_1ms & !logic_clear_done ), .done ( logic_clear_done ) ); Такие сигналы можно заводить на асинхронные входы сброса/установки триггеров, они синхронизированы с клоком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dimidrol 0 8 октября, 2016 Опубликовано 8 октября, 2016 · Жалоба Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998 При старте, во время глобального сброса, значения всех элементов ПЛИС выставляются в соответствии с атрибутом INIT, в статье об этом упоминается относительно Xilinx. Но, скорее всего у Альтеры все то же самое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tiro 0 8 октября, 2016 Опубликовано 8 октября, 2016 · Жалоба Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998 Позвольте предложить еще статью Clifford Cummings Synchronous Resets? Asynchronous Resets? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться