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

 
 
 
Reply to this topicStart new topic
> Два синхросигнала и гонки
nickbor
сообщение Apr 30 2006, 06:00
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 30-04-06
Пользователь №: 16 614



Профи, помогите хоббиисту пожалуйста. Спаял и кое как запрограммировал свою первую плату на Spartan 2. Вроде как работает, но мучают меня сомнения. Вот, например есть у меня описанный на VHDL счетчик, запитанный от 1-го синхросигнала. По N-му счету он переписывается в регистр. А чтение из регистра производится по 2-му синхросигналу. 1й и 2й синхросигналы от разных кварцев. Может ли такое случится один раз из миллиона, что в момент чтения только полрегистра записалось? Вы уж простите меня за глупый вопрос smile.gif
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 30 2006, 06:16
Сообщение #2


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Мне кажется врядли. Скорее всего чето не так в коде. понимаю чот он простой, но выложи на всякий случай осмотрим. Ты уверен что по синхросигналу переписываешь в регистр blush.gif а не при каждом изменении значения счетчика?
Go to the top of the page
 
+Quote Post
DS
сообщение Apr 30 2006, 07:11
Сообщение #3


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Именно так и будет. Надо обязательно ставить дополнительный регистр и синхронизатор, который переписывает из регистра, синхронного со счетчиком, по второму синхросигналу, но только в тот момент, когда нет записи из счетчика.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
nickbor
сообщение Apr 30 2006, 16:19
Сообщение #4





Группа: Участник
Сообщений: 11
Регистрация: 30-04-06
Пользователь №: 16 614



Счетчик переписывается в регистр по первому синхросигналу.
Спасибо всем, придется придумывать как синхронизовать...
Go to the top of the page
 
+Quote Post
Gate
сообщение Apr 30 2006, 18:12
Сообщение #5


Знающий
****

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



Чтобы все было по науке - смотрите здесь http://www.sunburst-design.com/papers
плюс приаттаченный файл.
Прикрепленные файлы
Прикрепленный файл  asynchronous_signals_in_a_synchronous_world.pdf ( 110.94 килобайт ) Кол-во скачиваний: 139
 


--------------------
"Человек - это существо, которое охотнее всего рассуждает о том, в чем меньше всего разбирается." (с) С.Лем
Go to the top of the page
 
+Quote Post
nickbor
сообщение May 2 2006, 04:01
Сообщение #6





Группа: Участник
Сообщений: 11
Регистрация: 30-04-06
Пользователь №: 16 614



Спасибо, изучаю... Кстати, мой случай христоматийный. Наверняка все сталкивались со случаем, когда идет оцифровка и ввод данных по одному синхросигналу, а шина обмена с процессором - по другому. Есть, конечно, возможность задержать обмен по шине, но встает вопрос, когда выдавать сигнал о задержке, сколько времени он идет, не медленнее ли, чем смена данных и т.п.
Go to the top of the page
 
+Quote Post
DS
сообщение May 2 2006, 06:53
Сообщение #7


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Случай настолько хрестоматийный, что в него влипали даже крупные фирмы. Если я помню правильно, кажется USART 16550 стал 16550A именно по этой причине. Тот, который без А имел проблемы синхронизации.

Если не хотите задерживать обмен, надо ставить доп регистр после счетчика, в который переписывается по 1 синхросигналу, и одновременно взводите этим ипульсом 1й триггер синхронизатора. По фронту второго синхросигнала взводится 2й триггер синхронизатора, который разрешает запись в регистр, тактируемый 2 синхросигналом и сбрасывает асинхронно 1й триггер.
Триггера D-типа, выход первого соединен с D входом второго. С первого - импульс, подаваемый в момент, когда уже завершена запись в буферный регистр. C второго - 2й синхросигнал.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 02:52
Рейтинг@Mail.ru


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