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

 
 
> Стартовая инициализация регистров., Есть ли необходимость задавать стартовое значение ?
Flip-fl0p
сообщение Sep 13 2017, 07:12
Сообщение #1


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Приветствую Уважаемые посетители форума.
Возникло некоторое недопонимание процесса инициализации регистров.
Ни для кого не секрет, что по-умолчанию в ПЛИС от Intel(Altera) регистры инициализируются нулями.
Для примера возьмем простейший 8 разрядный регистр.
На технологической карте(то, как физически схема располагается в ПЛИС) этот регистр выглядит таким вот образом:


Тут все просто и понятно: входные буфера (ячейки ввода\вывода) и собственно сами регистры. Всё как и должно быть.
По желанию разработчик может задать регистрам стартовое значение.
Например на языке VHDL это можно сделать следующим образом:
Код
SIGNAL REG : STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0) := (OTHERS => '0');

В случае, если регистры инициализируются нулями, на технологической карте ничего не меняется.
Но вот если мы хотим инициализировать регистры единицами:
Код
SIGNAL REG : STD_LOGIC_VECTOR(WIDTH-1 DOWNTO 0) := (OTHERS => '1');

то технологическая карта выглядит совершенно по-другому:


Если копать ещё глубже и смотреть какие блоки физически задействованы(через Resource Property editor), то там ясно видно, что данные действительно проходят через дополнительный слой логики. Наиболее вероятно, что данный слой логики появился как раз для того, чтобы инициализировать регистры единицами.
Если честно, я бы и не обратил на это внимание если бы не отчет TimeQuest: регистр, который инициализируется единицами будет работать на меньшей частоте, чем регистр который инициализуиреся нулями.
В связи с этим возник закономерный вопрос, так ли необходима стартовая инициализация регистра ? Не правильнее ли разрабатывать проект таким образом, что после старта ПЛИС логика начального сброса (например сигнал locked от PLL) будет удерживать схему в сбросе, и как следствие система автоматически примет то начальное состояние, которая и должна.
Хотелось бы услышать мнение более опытных коллег.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 25)
alexadmin
сообщение Sep 13 2017, 07:40
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(Flip-fl0p @ Sep 13 2017, 10:12) *
Если честно, я бы и не обратил на это внимание если бы не отчет TimeQuest: регистр, который инициализируется единицами будет работать на меньшей частоте, чем регистр который инициализуиреся нулями.
В связи с этим возник закономерный вопрос, так ли необходима стартовая инициализация регистра ? Не правильнее ли разрабатывать проект таким образом, что после старта ПЛИС логика начального сброса (например сигнал locked от PLL) будет удерживать схему в сбросе, и как следствие система автоматически примет то начальное состояние, которая и должна.
Хотелось бы услышать мнение более опытных коллег.


Судя по картинке, в данном конкретном случае регистр инициализируется все так же нулями. А перед ним и после него стоят инверторы wink.gif
Можно делать как больше нравится, однозначного ответа тут нет. Кто-то все явно инициализирует в ноль, чтоб наверняка. Кто-то приделывает схему сброса (такой вариант, кстати, используется для asicов, там инициализации нет вроде как в стандартных бибилиотеках). В каких-то случаях и вовсе неважно начальное состояние.
Кстати, стоит иметь в виду что в квартусе есть опция power-up don't care, которая разрешает квартусу устанавливать начальное значение любым, если оно явно не указано.
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 07:45
Сообщение #3


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682




Добрый день, где то в альтеровской документации читал, что сами регистры физически всегда инициализируются нулями. Но для того чтобы на их выходе была лог. '1' - к выходу регистра подключается инвертор. Также как и ко входу регистра подключается инвертор, чтобы логика работы не изменилась. Вроде как на Вашу картину похоже.



А в своих проектах я обычно делаю следующее:
1. асинхронный сброс всех регистров в 0. (при попытке асинхронного в 1 - Квартус пишет ворнинг, что не может так сделать!)
2. После асинхронного сброса через какое то количество тактов идет уже синхронный сброс, который сбрасыват/устанавливает требуемые мне значения регистров - 0 или 1 в зависимости от того, что мне нужно

Сообщение отредактировал gin - Sep 13 2017, 07:45
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 13 2017, 07:53
Сообщение #4


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



del
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 13 2017, 08:02
Сообщение #5


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата
Не первая тема, ЕМНИП, на эту тему.
Кратко: сброс нужен там, где он действительно нужен.

Согласен, что не первая тема. Где-то видел похожую тему про начальную инициализацию, но к моему стыду никак не могу найти её на форуме, я уж и так запрос составлял и эдак. Не находится crying.gif
Цитата
Кратко: сброс нужен там, где он действительно нужен.

Неоднократно встречал эту фразу. Но хотелось бы чуть более развернутого пояснения. А где сброс действительно нужен ?
Пока у меня устоялось мнение, что начальный сброс нужен тем элементам памяти, от которых зависит работа внешних устройств.
Т.е если, например, вывод ПЛИС нужен для управления каким-то важным блоком, то регистр, управляющий этим выводом, должен быть обязательно сброшен, иначе при старте системы существует вероятность подать неправильный сигнал на этот блок.

Сообщение отредактировал Flip-fl0p - Sep 13 2017, 08:03
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 08:09
Сообщение #6


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



По поводу нужности или не нужности сброса:
Я придерживаюсь мнения, что он нужен всем без исключения триггерам в ПЛИС. Тогда можно говорить о том, что в каждый момент времени состояние и логика точно определены. Очень опасно сбрасывать только часть триггеров, а часть оставлять без сброса. Это может привести к непредсказуемой работе в дальнейшем.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 13 2017, 08:12
Сообщение #7


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(gin @ Sep 13 2017, 11:09) *
По поводу нужности или не нужности сброса:
Я придерживаюсь мнения, что он нужен всем без исключения триггерам в ПЛИС. Тогда можно говорить о том, что в каждый момент времени состояние и логика точно определены. Очень опасно сбрасывать только часть триггеров, а часть оставлять без сброса. Это может привести к непредсказуемой работе в дальнейшем.

А если есть какой-то автомат, где, например, есть состояние IDLE, в котором значения всех регистров определены ? Тогда получается достаточно сбросить только автомат в начальное состояние, а он в свою очередь сбросит всю остальную схему.

Сообщение отредактировал Flip-fl0p - Sep 13 2017, 08:13
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 13 2017, 08:15
Сообщение #8


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(gin @ Sep 13 2017, 11:09) *
По поводу нужности или не нужности сброса:
Я придерживаюсь мнения, что он нужен всем без исключения триггерам в ПЛИС. Тогда можно говорить о том, что в каждый момент времени состояние и логика точно определены. Очень опасно сбрасывать только часть триггеров, а часть оставлять без сброса. Это может привести к непредсказуемой работе в дальнейшем.

Если у вас есть поток данных, сопровождаемых флагом valid, то для valid сброс нужен, а для самих данных нет. Вам же не важно, что там болтается на шине, когда valid не активен. В том числе и в начальный момент времени.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 13 2017, 08:18
Сообщение #9


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(andrew_b @ Sep 13 2017, 11:15) *
Если у вас есть поток данных, сопровождаемых флагом valid, то для valid сброс нужен, а для самих данных нет. Вам же не важно, что там болтается на шине, когда valid не активен. В том числе и в начальный момент времени.

Ну я немного утрировал для краткости. Естественно в случае присутствия сигнала Valid достаточно будет сбросить только его. Что именно сбрасывать зависит от конкретного протокола общения устройств. Мне просто важно знать, правильно ли я понимаю фразу "сбрасывать только то, что должно быть сброшено".
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Sep 13 2017, 08:18
Сообщение #10


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

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Flip-fl0p @ Sep 13 2017, 11:02) *
Согласен, что не первая тема. Где-то видел похожую тему про начальную инициализацию, но к моему стыду никак не могу найти её на форуме, я уж и так запрос составлял и эдак
Помнится была большая тема с участием SM, правда, уж сколько-то лет назад. Полистайте эти темы:
https://electronix.ru/forum/index.php?act=S...%F1%E1%F0%EE%F1
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 08:29
Сообщение #11


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Цитата(Flip-fl0p @ Sep 13 2017, 11:12) *
А если есть какой-то автомат, где, например, есть состояние IDLE, в котором значения всех регистров определены ? Тогда получается достаточно сбросить только автомат в начальное состояние, а он в свою очередь сбросит всю остальную схему.


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

Сообщение отредактировал gin - Sep 13 2017, 08:30
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 13 2017, 08:55
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата(gin @ Sep 13 2017, 11:29) *
Т.е. сбросом (и желательно асинхронным) вы гарантируете предсказуемость работы вашего устройства.

Не всегда и не везде. Замечу что асинхронный сброс все же требует синхронного снятия, о чем многие забывают. Опять же регистры пересинхронизаторы могут вызывать ошибки работы при заведении на них сброса.

Go to the top of the page
 
+Quote Post
Mad_max
сообщение Sep 13 2017, 09:05
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



У всех ПЛИСин есть скрытый сброс, все синхронные элементы после загрузки конфигурации сбрасываются в 0, если не определенно иное состояние в RTL описании по сигналу сброса.
Синхронный сброс имплементируется путем добавления комбинационной схемы по входу синхронного элемента, соответственно, логично, что раз есть дополнительный уровень логики,
то тайминг ниже.
Раньше в RTL описании всегда по сигналу сброса синхронным элементам присваивалось стартовое состояние, что бы при моделирование не было третьих состояний, сейчас
симуляторы понимают какое значение должно быть в нулевой момент времени. То есть, вроде, можно и не определять состояния синхронных элементов по сигналу сброса, не нагружать
fanout цепи сброса и не понижать общий тайминг.
С другой стороны, если посмотреть различные методологии и coding styles, например, RMM или DO-254, то там настоятельно рекомендуют определять состояния синхронных элементов
по сигналу сброса. Аргументируя это тем, что так как синтезатор и симулятор неопределенное состояние трактуют по разному, то может получится различный результат при моделирование
RTL описания и netlist. Исключение рекомендуют делать только в случае широкого пиплайна данных где много синхронных элементов.

Пор технику сброса, статья старенькая, но с тех пор ровным счетом ни чего не поменялось.
http://www.eetimes.com/document.asp?doc_id=1278998

Так же всегда нужно держать в уме такую пакость, связанную с неопределенным состоянием синхронных элементов в дизайне, как X propogation.
Рекомендую к прочтению
http://infocenter.arm.com/help/index.jsp?t...009a/index.html

Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 09:06
Сообщение #14


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Цитата(Golikov A. @ Sep 13 2017, 11:55) *
Не всегда и не везде. Замечу что асинхронный сброс все же требует синхронного снятия, о чем многие забывают. Опять же регистры пересинхронизаторы могут вызывать ошибки работы при заведении на них сброса.


В общем, я делаю так:

1. Пока нет сигнала locked от pll - на все триггеры идет асинхронный сброс.
2. Как появился locked - асинхронный сброс снимается.
3. Устанавливается синхронный сброс (устанавливает значения для всех триггеров, для кого то 0, для кого то 1).
4. Через n-ое количество тактов синхронный сброс снимается.

Вот такая у меня логика для сигналов сбросов. Пока работает стабильно
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 13 2017, 09:07
Сообщение #15


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Golikov A. @ Sep 13 2017, 11:55) *
Не всегда и не везде. Замечу что асинхронный сброс все же требует синхронного снятия, о чем многие забывают. Опять же регистры пересинхронизаторы могут вызывать ошибки работы при заведении на них сброса.

Про сброс то я знаю. С этим проблем нет. Просто неожиданно было натолкнуться на то, что инициализация регистров единицами добавляет лишний слой логики. Придется учитывать этот нюанс при проектировании.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 13 2017, 09:17
Сообщение #16


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(gin @ Sep 13 2017, 11:09) *
По поводу нужности или не нужности сброса:


"Краткий курс" Часть 11, Литература:

11.1. Synchronous Resets? Asynchronous Resets? I am so confused! How will I ever know which to use? Clifford E. Cummings, Don Mills. www.sunburst-design.com

11.2. Get Smart About Reset: Think Local, Not Global. WP272 (v1.0) January 8, 2008 www.xilinx.com




--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 09:17
Сообщение #17


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Вот как выглядит альтеровский триггер (в Arria 10)
Собственно видно, что у него есть только асинхронный сброс - поэтому квартус при всем желании не сможет асинхронно установить его в 1, только сбросить в 0
А вот синхронно можно установить как в 0, так и 1. Причем дополнительных слоев логики использовано для этого не будет. Все уже реализовано в самом триггере.

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 13 2017, 09:48
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
Как появился locked - асинхронный сброс снимается.

Тут я еще раз обращаю внимание что снимать его надо синхронно.

Цитата
Просто неожиданно было натолкнуться на то, что инициализация регистров единицами добавляет лишний слой логики

В общем случае это не верно. Это происходит в альтере так как все элементы по старту в 0. А в ксалинксе есть возможность задать как 0, так и 1 по старту, поэтому там такого не происходит.

Так же от архитектуры зависит и предпочитаемый сброс. В ксалинксе изначально элементы настроены на синхронный сброс и установку, при этом асинхронный держат только сброс. У альтеры ситуация обратная, синхронно они вроде только сбрасываются, зато имеют асинхронный сет и ресет. И как следствие альтера тянет специальную сеть асинхронного сброса, которую не тянет ксалинкс (вроде бы).

Так что я бы все же рекомендовал следовать наставлениям венедра. Альтера предлагает сбрасывать все и асинхронно, ксалинкс рекомендует сбрасывать только что надо и синхронно, если я правильно помню.



Цитата(gin @ Sep 13 2017, 12:17) *
Вот как выглядит альтеровский триггер (в Arria 10)
Собственно видно, что у него есть только асинхронный сброс - поэтому квартус при всем желании не сможет асинхронно установить его в 1, только сбросить в 0
А вот синхронно можно установить как в 0, так и 1. Причем дополнительных слоев логики использовано для этого не будет. Все уже реализовано в самом триггере.


Теперь еще можно добавить что в разных семействах по разному, кажется в циклоне 4 было иначе. Так что выше сказанное я бы теперь переформулировал что надо следовать рекомендации производителя под конкретный чип.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Sep 13 2017, 09:58
Сообщение #19


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Flip-fl0p @ Sep 13 2017, 10:12) *
Приветствую Уважаемые посетители форума.
Возникло некоторое недопонимание процесса инициализации регистров.
Хотелось бы услышать мнение более опытных коллег.


На самом деле вопрос сформулирован не правильно.
Разработка - это риск. Задача инженера - свести риск к минимуму. А значит по моему опыту необходимо строить проект следующим образом.
Все сигналы внутри проекта должны быть активны логической 1. И в том числе - сброс. Все регистры по исходному и по сбросу должны быть 0. Если нужна инверсия, то она делается на входе буфером или на выходе буфером. А все другие подходы увеличивают вероятность ошибки.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
lembrix
сообщение Sep 13 2017, 10:19
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 13-04-17
Из: Зеленоград
Пользователь №: 96 508



Доводы против использования инициализации регистров вместо сброса:
1. Только для реконфигурируемых схем, ASIC не поддерживается.
2. Нет гарантии поддержки инициализации всеми синтезаторами.
3. Нет возможности сброса схемы в процессе работы.
4. Нет задержки на время стабилизации клока от PLL.
5. Нет возможности задержки выхода схемы из сброса.
6. Не поддерживается ALTERA Partial Reconfiguration.
7. Некоторые стандарты требуют сброса в явном виде.

Сообщение отредактировал lembrix - Sep 13 2017, 10:21
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 10:37
Сообщение #21


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Цитата(Golikov A. @ Sep 13 2017, 12:48) *
Тут я еще раз обращаю внимание что снимать его надо синхронно.


Да именно так. В момент асинхронного сброса у меня всегда присутствует синхронный. После снятия асинхронного - какое то время синхронный продолжает быть активным. Потом и он снимается.
В итоге получается - установка сброса асинхронная, а его снятие - синхронное.

Цитата(Golikov A. @ Sep 13 2017, 12:48) *
Так что выше сказанное я бы теперь переформулировал что надо следовать рекомендации производителя под конкретный чип.


Вот тут 100 процентов согласен с вами.


Цитата(iosifk @ Sep 13 2017, 12:58) *
Разработка - это риск. Задача инженера - свести риск к минимуму


Хорошая фраза, даже в подпись добавить можно
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Sep 13 2017, 12:40
Сообщение #22


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата
Теперь еще можно добавить что в разных семействах по разному, кажется в циклоне 4 было иначе. Так что выше сказанное я бы теперь переформулировал что надо следовать рекомендации производителя под конкретный чип.

А таковы вообще присутствуют ?
Мне, например, ни разу не попадались....
Go to the top of the page
 
+Quote Post
Jackov
сообщение Sep 13 2017, 12:41
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(gin @ Sep 13 2017, 13:37) *
В момент асинхронного сброса у меня всегда присутствует синхронный. После снятия асинхронного - какое то время синхронный продолжает быть активным. Потом и он снимается.

Тогда зачем асинхронный сброс? Держите синхронный сброс какое-то количество тактов после стабилизации тактового сигнала, потом снимайте.
Я триггеры сбрасываю асинхронно, в качестве сигнала сброса применяю LOCK с PLL, пропущенный через два, иногда три, (для подавления метастабильностей) триггера. Тем самым и обеспечивается синхронное снятие сброса.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Sep 13 2017, 12:54
Сообщение #24


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

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Flip-fl0p @ Sep 13 2017, 15:40) *
А таковы вообще присутствуют ?
Мне, например, ни разу не попадались....


ug1026-ultrascale-migration-guide.pdf - вот, например. Там есть раздел Use of Control Signals.
Go to the top of the page
 
+Quote Post
gin
сообщение Sep 13 2017, 13:38
Сообщение #25


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

Группа: Участник
Сообщений: 183
Регистрация: 17-12-10
Пользователь №: 61 682



Цитата(Jackov @ Sep 13 2017, 15:41) *
Тогда зачем асинхронный сброс? Держите синхронный сброс какое-то количество тактов после стабилизации тактового сигнала, потом снимайте.
Я триггеры сбрасываю асинхронно, в качестве сигнала сброса применяю LOCK с PLL, пропущенный через два, иногда три, (для подавления метастабильностей) триггера. Тем самым и обеспечивается синхронное снятие сброса.


Если пропадет клок, то без асинхронного сброса нельзя никак. То есть пропал клок - сбросили, снова появился - сначала сняли асинхронный сброс, потом синхронный. И работаем дальше
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 13 2017, 17:29
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Вообще есть стандарт

Код
reg [2:0] synced_reset_n;
wire s_reset_n;
assign s_reset_n = synced_reset_n[2];

always @(posedge clk or negedge reset_n)
begin
if(reset_n == 1'b0)
     synced_reset_n <= 3'b000;
else
     synced_reset_n <= {synced_reset_n[1:0], 1'b1};  
end


s_reset_n - синхронное снятие, асинхронная установка, плюс гарантированная пауза состояния сброса.



посмотрел описание библиотек ксалинкса, нашел все варианты и синхронного, и асинхронного, и снятия, и установки%)

В спартане 6 IO триггера вообще одновременно со всеми видами сброса и установки.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:44
Рейтинг@Mail.ru


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