Грендайзер 0 28 июня, 2018 Опубликовано 28 июня, 2018 · Жалоба Добрый день. Возник такой вот вопросик. Есть отладочные платки на с Spartan-3 и простеньким АЦП. Плата с АЦП тактируется с помощью платы с ПЛИС. Тактовая частота спартана 100МГц, а частота тактирования АЦП 30МГц (данная частота получается с помощью связки DCM -> OFDDRCPE что в коргене обозначатся как Clock Forwarding/Board deskew). Данные с АЦП сперва идут на DDC а затем на CIC. Всю дальнейшую обработку хотелось бы вести на частоте 100МГц. Однако, очевидно, что т.к. частоты не кратны, одна относительно другой будет "плыть". Так вот вопрос какправильно перейтти с частоты 30Мгц на 100МГц, т.е. как корректно защёлкивать данные идущие с частотой 30МГц частотой 100МГц (пока лишь приходит мысль воткнуть ещё одну DCM и сделать на ней частоту в 90МГц или 120МГц)?. Однако этот вариант имеет свои минусы. И 2 вопрос, как будит выглядить UCF файл для такого случая (т.е. когда клоки идут С плис, а данные НА плис). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 июня, 2018 Опубликовано 28 июня, 2018 · Жалоба Добрый день. Возник такой вот вопросик. Есть отладочные платки на с Spartan-3 и простеньким АЦП. Плата с АЦП тактируется с помощью платы с ПЛИС. Тактовая частота спартана 100МГц, а частота тактирования АЦП 30МГц (данная частота получается с помощью связки DCM -> OFDDRCPE что в коргене обозначатся как Clock Forwarding/Board deskew). Данные с АЦП сперва идут на DDC а затем на CIC. Всю дальнейшую обработку хотелось бы вести на частоте 100МГц. Однако, очевидно, что т.к. частоты не кратны, одна относительно другой будет "плыть". Так вот вопрос какправильно перейтти с частоты 30Мгц на 100МГц, т.е. как корректно защёлкивать данные идущие с частотой 30МГц частотой 100МГц (пока лишь приходит мысль воткнуть ещё одну DCM и сделать на ней частоту в 90МГц или 120МГц)?. Однако этот вариант имеет свои минусы. И 2 вопрос, как будит выглядить UCF файл для такого случая (т.е. когда клоки идут С плис, а данные НА плис). А двуклоковое FIFO разве не является самым простым решением ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 28 июня, 2018 Опубликовано 28 июня, 2018 · Жалоба А двуклоковое FIFO разве не является самым простым решением ?На кой там фифо? Вот так нужно: Само собой обратный сигнал не нужен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 28 июня, 2018 Опубликовано 28 июня, 2018 · Жалоба На кой там фифо? . А хватит ли скорости такого вот Handshake ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 28 июня, 2018 Опубликовано 28 июня, 2018 · Жалоба А хватит ли скорости такого вот Handshake ?А чего бы не хватить. У нас частоты 3 к 1. Т.е. у нас 3,33 такта быстрой частоты чтобы защёлкнуть медленную. Пересинхронизация занимает максимум 3. Т.е. всё отлично пролазит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 29 июня, 2018 Опубликовано 29 июня, 2018 · Жалоба Добрый вечер. По поводу фифо думал, но честно говоря не понял как избежать его переполнения. Что же касается 2-ого варианта, то я так понял, что sender должен быть реализован в плис, т.к. АЦП никаких сигналов кроме данных выдавать не умеет. Но в этом случае нужно, что бы sender говорил, мол у меня есть данные, забирай. Но при каком условии он должен это сообщать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 29 июня, 2018 Опубликовано 29 июня, 2018 · Жалоба Приветствую! Добрый вечер. По поводу фифо думал, но честно говоря не понял как избежать его переполнения. Что же касается 2-ого варианта, то я так понял, что sender ... Странно - Вы пишете что АЦП пишет на 30 MHz а обрабатывать (читать) Вы хотите на 100 MHz - как в таком случае может переполнится фифо? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 30 июня, 2018 Опубликовано 30 июня, 2018 · Жалоба Немного не так выразился. Я хотел сказать, что фифо наоборот, опустеет. Если я туда пишу на частоте 30 МГц, то будет момент, когда в фифо ничего не останется. В этом случае, период стробов на выходе будет гулять. Впрочем я вот сейчас подумал, что если у меня там всёравно дециматор будет стоять, то наверно это ведь не так и страшно, лишь бы он (дециматор) успел выполнить свою задачу между приходом этих стробов. В этом случае, фифо и впрямь самый простой и надёжный способ. Но вот по поводу второго варианта, я так и не допёр. И ещё, подскажите, как правильно в моём случае задать констрейны? В примерах есть лишь вариант, когда плис вместе с тактами выдаёт данные, но вот когда она даёт клок а принимает данные, такого я не нашёл. Подозреваю, что ограничения должны задаваться относительно 100 МГц но как в этом случае учесть задержки в блоке ddr с которого и выходят 30 МГц? Или просто посмотреть задержку в даташите и прибавить к общей? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Что же касается 2-ого варианта, то я так понял, что sender должен быть реализован в плис, т.к. АЦП никаких сигналов кроме данных выдавать не умеет. Но в этом случае нужно, что бы sender говорил, мол у меня есть данные, забирай. Но при каком условии он должен это сообщать? Значит сигналом поступления данных будет фронт клока от АЦП. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Значит сигналом поступления данных будет фронт клока от АЦП. Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 30 МГц с помощью стандартной схемы определения фронтов (которая будит тактироваться клоком 100 МГц)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Приветствую! Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 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 и не не мучатся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MegaVolt 25 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 30 МГц с помощью стандартной схемы определения фронтов (которая будит тактироваться клоком 100 МГц)?Да именно так. Только сделанная правильно с присутствием синхронизатора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Приветствую! Да именно так. Только сделанная правильно с присутствием синхронизатора. Если АЦП выдает данные каждый такт то вышеприведенная схема с синхронизатором работать не будет . Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Грендайзер 0 4 июля, 2018 Опубликовано 4 июля, 2018 (изменено) · Жалоба АЦП у Вас работает непрерывно? Выдает на каждый такт 30MHz новый отсчет? Тогда просто суете эти данные на вход FIFO клок на запись которого эти же 30MHz... Именно так я и сделал. Если АЦП выдает данные каждый такт то вышеприведенная схема с синхронизатором работать не будет. Поясните пожалуйста за синхронизатор. В книге 100_Power_Tips_for_FPGA_Designer написано что одна частота "относительно" болшьше другой. У меня разница всего в 3 раза. В этом случае я не совсем понимаю как синхронизатор должен выглядеть. Вот есле как на картинке, то мне то же кажется что не заработает. Можно наверное конечно 3-ий триггер добавить... но всёравно не понятно... Изменено 4 июля, 2018 пользователем Грендайзер Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 4 июля, 2018 Опубликовано 4 июля, 2018 · Жалоба Приветствую! ... Поясните пожалуйста за синхронизатор. ...Синхронизатор на картинке в посте#3 рассчитан так что данных на шине sender должны стоят стабильно пока не придет обратный handshake сигнал от receiver. А для этого по картинке требутся как минимум 2 такта быстрой и 2 такта медленной частоты. Но ведь АЦП выдает на гора отсчет кажый такт! Схема выделения фронта приведенная Вам будет работать если добавить еще 1-2 регистра в цепочку на входе для подавления метастабильности. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться