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

 
 
 
Reply to this topicStart new topic
> Как правильно писать в регистр
Dootch
сообщение Jul 18 2017, 03:42
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 12-02-10
Из: Хабаровск
Пользователь №: 55 441



Добрый день.
Собираю на ПЛИС Cyclone V E схему, которая измеряет разность времен прихода двух импульсов А и B. Длительность импульсов около 200 мкс, частота 1 Гц.
Время измеряется в единицах опорной частоты 100 МГц, подаваемой на счетчик. Схема приведена на рисунке.




Сигналы записи состояний счетчика в регистр я формирую синхронно с опорной частотой. Для того, чтобы состояние счетчика записывалось всегда корректно, как я понял необходимо указать компилятору что данные с счетчика на входе регистров должны быть стабильны к моменту прихода сигнала записи.
Вопрос как это сделать?
Возможно для корректной работы нужно изменить схему, но что-то никаких идей нет.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 18 2017, 06:23
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Ну как минимум, не стоит подобным образом баловать с тактовой сетью. На таковой цепи должны быть лишь такты - лучше это правило не нарушать. Думою Вам сперва сюда http://fpgacenter.com/examples/basic/edge_detector.php надо глянуть.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jul 18 2017, 06:38
Сообщение #3


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

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



А Вы сделайте импульсы, которые измеряете не входами синхронизации, а входами разрешения работы, предварирельно пропустив эти сигналы через 2-3 разрядный сдвиговый регистр для избавления от метастабильности. Тогда проект серьёзно упрощается.


Цитата(Грендайзер @ Jul 18 2017, 09:23) *
Ну как минимум, не стоит подобным образом баловать с тактовой сетью. На таковой цепи должны быть лишь такты - лучше это правило не нарушать. Думою Вам сперва сюда http://fpgacenter.com/examples/basic/edge_detector.php надо глянуть.

Вот я постоянно, слышу про то, что не стоит заводить такие сигналы в тактовую сеть. Но никак не могу найти причину почему так делать нельзя. Нет ли у вас ссылки на эту информацию ?
Go to the top of the page
 
+Quote Post
Shivers
сообщение Jul 18 2017, 06:38
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Здесь нужен счетчик с разрешением счета и сбросом. Условие счета и условие сброса формируются из входных импульсов. К примеру A&!B - счет, !A&!B - сброс, A&B - сохранение результата в регистре.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 18 2017, 06:48
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Цитата(Flip-fl0p @ Jul 18 2017, 09:38) *
Вот я постоянно, слышу про то, что не стоит заводить такие сигналы в тактовую сеть. Но никак не могу найти причину почему так делать нельзя. Нет ли у вас ссылки на эту информацию ?

Ну прям ссылку я сейчас не найду, но эта фраза взята из апноутов (как альтеры так и ксайлинкса). Причина здесь вообщем то очевидна. При изменении условий работы кристалла (изменение температуры или напряжения питания) нестабильность такого "клока" будет весьма трудно предсказать особенно если он проходит на своём пути комбинационную логику. А вообще данный способ не запрещён и в ряде случаев его можно использовать, но опять таки не желательно. Это и логично, ПЛИС всё же универсальный инструмент.
P.S. Забыл упомянуть, все тактовые буферы так же согласованы со специальными тактовыми ногами и самой линией, а вы туда такую рассогласованность пихаете триггером...

Сообщение отредактировал Грендайзер - Jul 18 2017, 06:56
Go to the top of the page
 
+Quote Post
Dootch
сообщение Jul 18 2017, 06:57
Сообщение #6


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

Группа: Свой
Сообщений: 76
Регистрация: 12-02-10
Из: Хабаровск
Пользователь №: 55 441



Спасибо, а если увеличить число измеряемых импульсов до восьми?
В общем случае кажется нужно прописать некий констрейн.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 18 2017, 07:03
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451



Констрйн Вам надо прописать лишь для тактового сигнала, а вот схему стоит изменить, т.к. в данном случае, Вам синтезатору придётся ещё дополнительными констрейнами объяснять, что у Вас на пустом месте ещё один тактовый домен появился...
Go to the top of the page
 
+Quote Post
Dootch
сообщение Jul 18 2017, 07:58
Сообщение #8


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

Группа: Свой
Сообщений: 76
Регистрация: 12-02-10
Из: Хабаровск
Пользователь №: 55 441



Цитата(Грендайзер @ Jul 18 2017, 11:03) *
Констрйн Вам надо прописать лишь для тактового сигнала, а вот схему стоит изменить, т.к. в данном случае, Вам синтезатору придётся ещё дополнительными констрейнами объяснять, что у Вас на пустом месте ещё один тактовый домен появился...


Для количества измеряемых импульсов больше двух в голову приходит только такая схема:
И счетчик и регистры получают на синхронизацию один и тот же тактовый сигнал,
регистры имеют вход разрешения работы на который поступает сформированный по предложенной Вами схеме edge detector сигнал, правда схема edge detector немного изменена (добавлен второй триггер перед инвертором)
Go to the top of the page
 
+Quote Post
Алга
сообщение Jul 18 2017, 08:38
Сообщение #9


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

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



Если изменить структурную схему:
Сигналы А и б являются сигналами старт/стоп и формируют временное окно,
которое поступает на вход енабле счетчика. Опорная частота 100Мнц на тактовый вход счетчика.
Выходы счетчика есть результат- разница по времени между импульсами А и Б
Go to the top of the page
 
+Quote Post
Dootch
сообщение Jul 18 2017, 08:44
Сообщение #10


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

Группа: Свой
Сообщений: 76
Регистрация: 12-02-10
Из: Хабаровск
Пользователь №: 55 441



Цитата(Алга @ Jul 18 2017, 12:38) *
Если изменить структурную схему:
Сигналы А и б являются сигналами старт/стоп и формируют временное окно,
которое поступает на вход енабле счетчика. Опорная частота 100Мнц на тактовый вход счетчика.
Выходы счетчика есть результат- разница по времени между импульсами А и Б


Я в начале топика для простоты указал, что сигналов два, на самом деле их 8. Прошу прощения за неточность.
Идея в том, что счетчик крутится по кругу непрерывно, а из значений регистров вычисляется временной интервал между любой парой сигналов.
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Jul 18 2017, 08:53
Сообщение #11


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

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



Может, сделать просто один общий сквозной счетчик, а его значения сохранять в восемь регистров по фронту соответствующего импульса? Для каждого из регистров потом выставлять флаг готовности, а когда "И" от всех даст 1, можно забирать результаты.
Go to the top of the page
 
+Quote Post
Алга
сообщение Jul 18 2017, 09:10
Сообщение #12


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

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



Как здесь звучало-
сделать 8 front edge detector, которые поступают на вход enable
соответствующего регистра. Опорная частота 100Мнц поступает на счетчик и все регистры.
Go to the top of the page
 
+Quote Post
Magnum
сообщение Jul 18 2017, 09:37
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Ещё желательно указать вероятность неприхода одного из импульсов, дабы исключить зависание в вечном ожидании, и откуда они берутся, возможно потребуется схема подавления дребезга, если сигналы с механического замыкателя.
Go to the top of the page
 
+Quote Post

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

 


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


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