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

начальное значение триггеров после прошивки, altera

Добрый день, Уважаемые форумчане. Насколько я помню в fpga altera после загрузки прошивки по умолчанию все триггеры находятся в 0, тема даже обсуждалось. Проблема в том, что начальство просит меня тыкнуть пальцем в официальную документацию - может кто-нибудь кинет ссылку или название документа, где это может быть прописано? Память (RAM), насколько я помню, находится в неопределенном состоянии?

Спасибо.

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


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

Добрый день, Уважаемые форумчане. Насколько я помню в fpga altera после загрузки прошивки по умолчанию все триггеры находятся в 0, тема даже обсуждалось. Проблема в том, что начальство просит меня тыкнуть пальцем в официальную документацию - может кто-нибудь кинет ссылку или название документа, где это может быть прописано? Память (RAM), насколько я помню, находится в неопределенном состоянии?

Спасибо.

 

http://quartushelp.altera.com/14.0/mergedP...p_dont_care.htm

 

может это их убедит

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


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

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. :biggrin:

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


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

Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.

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


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

Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.

Естественно, это вопрос скорее теоретический. Возник он исходя из того - а что будет если не завести внешнюю кнопку сброса (ну или чего то подобного по типу пустить счетчик по включению питания) и внешний генератор запустится позже (я сам обычно пускаю сброс основной по ~locked), чем зальется прошивка. Понятно, что такого быть не должно.

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


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

Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.

Вопрос упирается в экономию соединений. Нет reset, значит нет лишних лишних связей. Если начальная установка происходит один раз в конце конфигурации, то лучше reset не тянуть, а вместо этого, если позволяет ПЛИС, инициализировать триггеры средствами языка.

Изменено пользователем likeasm

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


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

Естественно, это вопрос скорее теоретический.

Регистры в ПЛИС естественно сбросятся. Вопрос, скорее, в возможном нарушении recovery/removal на триггерах, поскольку внутренний сброс никак не синхронизирован с внешними сигналами.

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


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

а атрибуты, которыми указать, что триггер в 1 - есть? у ксайлинсов вроде так.

ну и еще по поводу сброса - в современных ПЛИС нету отдельных цепей сброса - то есть будут тратиться ресурсы (глобальный интерконект)

нужно ли это?

 

но это общее рассуждение, нужно смотреть конкретное семейство.

 

например Гейслер принципиально не делает сброса (только для очень редких регистров)) - утверждает, что сильно улучшает этим времянку среднестатистическую (для произвольной ПЛИС и вендора). это создавало определенные проблемы и я с ним достаточно долго спорил, потом плюнул и поправил свою копию его либы.

 

 

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


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

а атрибуты, которыми указать, что триггер в 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 )
);

 

Такие сигналы можно заводить на асинхронные входы сброса/установки триггеров, они синхронизированы с клоком.

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


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

Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998

При старте, во время глобального сброса, значения всех элементов ПЛИС выставляются в соответствии с атрибутом INIT, в статье об этом упоминается относительно Xilinx. Но, скорее всего у Альтеры все то же самое.

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


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

Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998

Позвольте предложить еще статью Clifford Cummings Synchronous Resets? Asynchronous Resets?

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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