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

 
 
> Увязка клоков и констрейны
Грендайзер
сообщение Jun 28 2018, 10:48
Сообщение #1


Местный
***

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



Добрый день. Возник такой вот вопросик. Есть отладочные платки на с Spartan-3 и простеньким АЦП. Плата с АЦП тактируется с помощью платы с ПЛИС. Тактовая частота спартана 100МГц, а частота тактирования АЦП 30МГц (данная частота получается с помощью связки DCM -> OFDDRCPE что в коргене обозначатся как Clock Forwarding/Board deskew). Данные с АЦП сперва идут на DDC а затем на CIC. Всю дальнейшую обработку хотелось бы вести на частоте 100МГц. Однако, очевидно, что т.к. частоты не кратны, одна относительно другой будет "плыть". Так вот вопрос какправильно перейтти с частоты 30Мгц на 100МГц, т.е. как корректно защёлкивать данные идущие с частотой 30МГц частотой 100МГц (пока лишь приходит мысль воткнуть ещё одну DCM и сделать на ней частоту в 90МГц или 120МГц)?. Однако этот вариант имеет свои минусы. И 2 вопрос, как будит выглядить UCF файл для такого случая (т.е. когда клоки идут С плис, а данные НА плис).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Грендайзер
сообщение Jun 29 2018, 21:27
Сообщение #2


Местный
***

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



Добрый вечер. По поводу фифо думал, но честно говоря не понял как избежать его переполнения. Что же касается 2-ого варианта, то я так понял, что sender должен быть реализован в плис, т.к. АЦП никаких сигналов кроме данных выдавать не умеет. Но в этом случае нужно, что бы sender говорил, мол у меня есть данные, забирай. Но при каком условии он должен это сообщать?
Go to the top of the page
 
+Quote Post
MegaVolt
сообщение Jul 4 2018, 10:24
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783



Цитата(Грендайзер @ Jun 30 2018, 00:27) *
Что же касается 2-ого варианта, то я так понял, что sender должен быть реализован в плис, т.к. АЦП никаких сигналов кроме данных выдавать не умеет. Но в этом случае нужно, что бы sender говорил, мол у меня есть данные, забирай. Но при каком условии он должен это сообщать?

Значит сигналом поступления данных будет фронт клока от АЦП.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 4 2018, 11:12
Сообщение #4


Местный
***

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



Цитата(MegaVolt @ Jul 4 2018, 13:24) *
Значит сигналом поступления данных будет фронт клока от АЦП.

Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 30 МГц с помощью стандартной схемы определения фронтов (которая будит тактироваться клоком 100 МГц)?
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 4 2018, 12:07
Сообщение #5


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

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



Приветствую!
Цитата(Грендайзер @ Jul 4 2018, 14:12) *
Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 30 МГц с помощью стандартной схемы определения фронтов (которая будит тактироваться клоком 100 МГц)?
А мы уж тем более не понимаем что и как у Вас там работает
АЦП у Вас работает непрерывно? Выдает на каждый такт 30MHz новый отсчет?
Тогда просто суете эти данные на вход FIFO клок на запись которого эти же 30MHz. На выходе этого FIFO на частоте чтения 100MHz будет периодически появляется сигнал valid говорящий что есть новый сэмпл от АЦП. Можете сразу обрабатывать - можете подождать пока накопится некоторое количество и обработать пачкой это как удобнее будет.

Удачи! Rob.

P.S.
Что касается времянки - оцените для начала задержки на пути
ODDR -> clk_pin -> board_net -> ADC_clk -> ADC_data -> board_net -> data_pin -> in_reg
И если она будет соизмерима с периодом 30MHz тогда можно возится с board_deskew схемой тактирования.
Ну а если меньше то можно тупо зафиксировать регистры в IOB и не не мучатся.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 4 2018, 14:45
Сообщение #6


Местный
***

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



Цитата(RobFPGA @ Jul 4 2018, 15:07) *
АЦП у Вас работает непрерывно? Выдает на каждый такт 30MHz новый отсчет?
Тогда просто суете эти данные на вход FIFO клок на запись которого эти же 30MHz...

Именно так я и сделал.

Цитата
Если АЦП выдает данные каждый такт то вышеприведенная схема с синхронизатором работать не будет.

Поясните пожалуйста за синхронизатор. В книге 100_Power_Tips_for_FPGA_Designer написано что одна частота "относительно" болшьше другой. У меня разница всего в 3 раза. В этом случае я не совсем понимаю как синхронизатор должен выглядеть. Вот есле как на картинке, то мне то же кажется что не заработает. Можно наверное конечно 3-ий триггер добавить... но всёравно не понятно...

Сообщение отредактировал Грендайзер - Jul 4 2018, 14:50
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 4 2018, 15:05
Сообщение #7


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

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



Приветствую!
Цитата(Грендайзер @ Jul 4 2018, 17:45) *
... Поясните пожалуйста за синхронизатор. ...
Синхронизатор на картинке в посте#3 рассчитан так что данных на шине sender должны стоят стабильно пока не придет обратный handshake сигнал от receiver. А для этого по картинке требутся как минимум 2 такта быстрой и 2 такта медленной частоты. Но ведь АЦП выдает на гора отсчет кажый такт!

Схема выделения фронта приведенная Вам будет работать если добавить еще 1-2 регистра в цепочку на входе для подавления метастабильности.

Удачи! Rob.
Go to the top of the page
 
+Quote Post
Грендайзер
сообщение Jul 4 2018, 15:15
Сообщение #8


Местный
***

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



Цитата(RobFPGA @ Jul 4 2018, 18:05) *
Схема выделения фронта приведенная Вам будет работать если добавить еще 1-2 регистра в цепочку на входе для подавления метастабильности.

Я так и думал. Правда не понятно другое. Если в цепочке триггеров произойдёт метастабильность (а она произоёдёт, ведь фронты то "плывут" относительно друг друга), то после того как триггер из этого состояния выйдет, есть вполне реальная вероятность что в какой то момент времети после метостабильности на выходе триггера будет присутствовать не верный уровень, который в итоге "пролезет" и на выход схемы. Наверно если бы отношение частот было хотя бы на порядок больше то это явление наверно было бы довольно редко, но в данном случае отношение всего 3... и как мне кажется схема будет работать не очень надёжно 05.gif

Сообщение отредактировал Грендайзер - Jul 4 2018, 15:16
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение Jul 4 2018, 15:35
Сообщение #9


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

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



Приветствую!

Цепочка последовательная триггеров на входе как раз и служит чтобы на выход этой цепочки не попал непонятно какой сигнал а только 0 или 1. Каждый триггер в цепочке уменьшает вероятность этого печального события. Причем чем выше быстрая частота тем длинне цепочка требуется.

Но это не имеет отношения к плаванью фронтов. Фронты и так будут плыть так как 30MHz и 100MHz не кратные и не синхронизированы.
То есть на выходе тут будут импульсы со скважностью 3 и реже 4 .

Удачи! Rob.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Грендайзер   Увязка клоков и констрейны   Jun 28 2018, 10:48
- - Flip-fl0p   Цитата(Грендайзер @ Jun 28 2018, 13:48) Д...   Jun 28 2018, 10:53
|- - MegaVolt   Цитата(Flip-fl0p @ Jun 28 2018, 13:5...   Jun 28 2018, 11:16
|- - Flip-fl0p   Цитата(MegaVolt @ Jun 28 2018, 14:16) На ...   Jun 28 2018, 11:26
|- - MegaVolt   Цитата(Flip-fl0p @ Jun 28 2018, 14:2...   Jun 28 2018, 11:28
|- - RobFPGA   Приветствую! Цитата(Грендайзер @ Jun 30 2...   Jun 29 2018, 22:20
|- - MegaVolt   Цитата(Грендайзер @ Jul 4 2018, 14:12) Не...   Jul 4 2018, 12:36
|- - RobFPGA   Приветствую! Цитата(MegaVolt @ Jul 4 2018...   Jul 4 2018, 13:14
|- - MegaVolt   Цитата(RobFPGA @ Jul 4 2018, 16:14) Если ...   Jul 5 2018, 07:55
|- - Грендайзер   Цитата(MegaVolt @ Jul 5 2018, 10:55) И со...   Jul 5 2018, 13:06
|- - RobFPGA   Приветствую! Цитата(Грендайзер @ Jul 5 20...   Jul 5 2018, 13:52
|- - MegaVolt   Цитата(Грендайзер @ Jul 5 2018, 16:06) Не...   Jul 5 2018, 14:28
- - Грендайзер   Немного не так выразился. Я хотел сказать, что фиф...   Jun 30 2018, 10:49
- - Самурай   Цитата(Грендайзер @ Jun 28 2018, 14:48) Д...   Jul 4 2018, 16:13
|- - Грендайзер   Цитата(Самурай @ Jul 4 2018, 19:13) Так з...   Jul 4 2018, 18:09
- - Грендайзер   Коллеги, очень признателен за помощь. Теперь кое ч...   Jul 6 2018, 07:17


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

 


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


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