реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> начальное значение триггеров после прошивки, altera
bogaev_roman
сообщение Oct 5 2016, 07:40
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Добрый день, Уважаемые форумчане. Насколько я помню в fpga altera после загрузки прошивки по умолчанию все триггеры находятся в 0, тема даже обсуждалось. Проблема в том, что начальство просит меня тыкнуть пальцем в официальную документацию - может кто-нибудь кинет ссылку или название документа, где это может быть прописано? Память (RAM), насколько я помню, находится в неопределенном состоянии?
Спасибо.
Go to the top of the page
 
+Quote Post
Realking
сообщение Oct 5 2016, 07:47
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 498
Регистрация: 4-10-04
Из: Нижний Новгород
Пользователь №: 771



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


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

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


--------------------
Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 5 2016, 08:47
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Realking @ Oct 5 2016, 11:47) *

Я думаю подойдет и это, спасибо. Хотя по этой настройке вышел на явное указание:
Цитата
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.gif
Go to the top of the page
 
+Quote Post
Vascom
сообщение Oct 5 2016, 09:08
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534



Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Oct 5 2016, 09:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Vascom @ Oct 5 2016, 13:08) *
Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.

Естественно, это вопрос скорее теоретический. Возник он исходя из того - а что будет если не завести внешнюю кнопку сброса (ну или чего то подобного по типу пустить счетчик по включению питания) и внешний генератор запустится позже (я сам обычно пускаю сброс основной по ~locked), чем зальется прошивка. Понятно, что такого быть не должно.
Go to the top of the page
 
+Quote Post
likeasm
сообщение Oct 6 2016, 11:13
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 156
Регистрация: 15-04-10
Пользователь №: 56 673



Цитата(Vascom @ Oct 5 2016, 12:08) *
Но в целом на это лучше не надеяться и использовать явную установку в "0" или "1" по асинхронному сигналу reset. Тогда код будет одинаково работать на любой FPGA, ASIC и при симуляции.

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

Сообщение отредактировал likeasm - Oct 6 2016, 14:58
Go to the top of the page
 
+Quote Post
dvladim
сообщение Oct 6 2016, 18:42
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(bogaev_roman @ Oct 5 2016, 12:15) *
Естественно, это вопрос скорее теоретический.

Регистры в ПЛИС естественно сбросятся. Вопрос, скорее, в возможном нарушении recovery/removal на триггерах, поскольку внутренний сброс никак не синхронизирован с внешними сигналами.
Go to the top of the page
 
+Quote Post
yes
сообщение Oct 7 2016, 17:34
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



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

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

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

Go to the top of the page
 
+Quote Post
Tiro
сообщение Oct 7 2016, 22:39
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(yes @ Oct 7 2016, 20:34) *
а атрибуты, которыми указать, что триггер в 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;


Или еще вариант установки и способ применения.

CODE

// 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 )
);



Такие сигналы можно заводить на асинхронные входы сброса/установки триггеров, они синхронизированы с клоком.
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Oct 8 2016, 17:56
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998
При старте, во время глобального сброса, значения всех элементов ПЛИС выставляются в соответствии с атрибутом INIT, в статье об этом упоминается относительно Xilinx. Но, скорее всего у Альтеры все то же самое.


--------------------
Go to the top of the page
 
+Quote Post
Tiro
сообщение Oct 8 2016, 18:29
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 781
Регистрация: 3-10-04
Из: Санкт-Петербург
Пользователь №: 768



Цитата(dm.pogrebnoy @ Oct 8 2016, 20:56) *
Вот небольшая статься про сбросы http://www.eetimes.com/document.asp?doc_id=1278998

Позвольте предложить еще статью Clifford Cummings Synchronous Resets? Asynchronous Resets?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:33
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016