|
Увязка клоков и констрейны |
|
|
|
Jul 4 2018, 16:13
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(Грендайзер @ Jun 28 2018, 14:48)  Добрый день. Возник такой вот вопросик. Есть отладочные платки на с Spartan-3 и простеньким АЦП. Плата с АЦП тактируется с помощью платы с ПЛИС. Тактовая частота спартана 100МГц, а частота тактирования АЦП 30МГц (данная частота получается с помощью связки DCM -> OFDDRCPE что в коргене обозначатся как Clock Forwarding/Board deskew). Данные с АЦП сперва идут на DDC а затем на CIC. Всю дальнейшую обработку хотелось бы вести на частоте 100МГц. Однако, очевидно, что т.к. частоты не кратны, одна относительно другой будет "плыть". Так вот вопрос какправильно перейтти с частоты 30Мгц на 100МГц, т.е. как корректно защёлкивать данные идущие с частотой 30МГц частотой 100МГц (пока лишь приходит мысль воткнуть ещё одну DCM и сделать на ней частоту в 90МГц или 120МГц)?. Однако этот вариант имеет свои минусы. И 2 вопрос, как будит выглядить UCF файл для такого случая (т.е. когда клоки идут С плис, а данные НА плис). А позвольте поинтересоваться, а на кой Вам «всю дальнейшую обработку хотелось бы вести на частоте 100МГц»? Какой Вы профит от этого хотите поиметь? Геморрой Вы, как можно заметить, уже поимели... И поимеете еще больше, когда на 100МГц начнут сыпаться констрейны... Можно конечно предположить, что Вы таки хотели бы сэкономить аппаратные ресурсы, работая на кратно большей частоте и перейдя от параллельной к последовательной форме реализации своих алгоритмов. Но пока из Ваших текстов видно, что Вы даже в принципе не подозреваете о такой возможности... Да и ради одного банального DDC нет особого смысла страдать такой фигней. И можно предположить, что после CIC Вам таки совсем все равно, 100 у Вас МГц тактовая, или 30... Так зачем Вам 100МГц?
|
|
|
|
|
Jul 4 2018, 18:09
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата(Самурай @ Jul 4 2018, 19:13)  Так зачем Вам 100МГц? Ну во первых сама по себе задача увязки клоков весьма важна и интересна. Во вторых я и впрямь хочу поэкономить ресурсы, т.к. плиса у меня маленькая, а помимо указанных блоков там будет стоять несколько КИХов, которые пожрут почти все умножители нуууу и ещё кое какая переферия. Что же касается констрейнов, то как мне кажется, в моём случае 100МГц частота вполне съедобная. К сожалению всё равно не понимаю, как синхронизатор поможет, если на выходе триггера присутствует неправильное значение. Ну да Бог с ним... Я так понял, что всё же фифо самый простой и надёжный вариант. Подскажите ещё такой вот вопросик. Допустим у меня есть 2 разных тактовых сигнала. При том один больше второго. Допустим я хочу отловить фронт более медленного. Допустимо ли завести более медленный сигнал на информационный вход триггера (пусть клоки синхронны) в схеме определения фронтов?
|
|
|
|
|
Jul 5 2018, 07:55
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(RobFPGA @ Jul 4 2018, 16:14)  Если АЦП выдает данные каждый такт то вышеприведенная схема с синхронизатором работать не будет . Удачи! Rob. Какие ваши аргументы? Цитата(RobFPGA @ Jul 4 2018, 18:05)  Синхронизатор на картинке в посте#3 рассчитан так что данных на шине sender должны стоят стабильно пока не придет обратный handshake сигнал от receiver. А для этого по картинке требутся как минимум 2 такта быстрой и 2 такта медленной частоты. Но ведь АЦП выдает на гора отсчет кажый такт! Я же сразу написал что обратная цепочка не требуется. Т.е. строб о появлении новых данных пересинхронизируется на выход и защёлкивает ещё не изменившиеся данные. Цитата(Грендайзер @ Jul 4 2018, 21:09)  К сожалению всё равно не понимаю, как синхронизатор поможет, если на выходе триггера присутствует неправильное значение. Каждый новый триггер в цепочке уменьшает вероятность неверного значения на выходе. Причём зависимость степенная. И соответсвенно при двух триггерах вероятность пролезания метастабильного состояние через 2 триггера практически невероятна. Через 3 триггера считается достаточным для военных применений  Цитата Ну да Бог с ним... Я так понял, что всё же фифо самый простой и надёжный вариант. Ну ежели ресурсов немеряно то наверное да. Мой варант проще и предсказуемее фифо. Цитата Подскажите ещё такой вот вопросик. Допустим у меня есть 2 разных тактовых сигнала. При том один больше второго. Допустим я хочу отловить фронт более медленного. Допустимо ли завести более медленный сигнал на информационный вход триггера (пусть клоки синхронны) в схеме определения фронтов? Да
|
|
|
|
|
Jul 5 2018, 13:06
|
Местный
  
Группа: Участник
Сообщений: 368
Регистрация: 18-04-11
Из: Город-герой Москва
Пользователь №: 64 451

|
Цитата(MegaVolt @ Jul 5 2018, 10:55)  И соответсвенно при двух триггерах вероятность пролезания метастабильного состояние через 2 триггера практически невероятна. Не, про метостабильное состояние это понятно... не понятно другое. Вот картинка. Допустим частота clk1 < частота clk2. В какой то момент триггер d2 вошёл в это самое метостабильное состояние. Допустим, что время этого состояния было не долгим (скажем < чем период clk2). Теперь, кто сказал, что после выхода триггера из этого состояния в точке С будет присутствовать верный уровень... тут ведь как карта ляжет... Например если на момент нихода фронта clk2 в точке B была '1'. Триггер вошёл в метостабильное состояние... а после выхода у него на выходе (в точке С) появился '0'. Тогда триггрер d3 в момент прихода следующего фронта clk2 защёлкнет '0', а должен был защёлкнуть '1'. Ну и пошло поехало... Или я в чём то неправ?
Сообщение отредактировал Грендайзер - Jul 5 2018, 13:07
Эскизы прикрепленных изображений
|
|
|
|
|
Jul 5 2018, 13:52
|
Профессионал
    
Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643

|
Приветствую! Цитата(Грендайзер @ Jul 5 2018, 16:06)  ... Или я в чём то неправ? Вы все стремитесь в будущее забывая о том что было раньше - попробуете проанализировать ситуацию с учетом того что сначала была тьма 0 во всех точках и тут решили подать свет 1-цу - да неудачно так что событие это в точке B пришлось на начало обеда фронт clk2. Что будет в точка схемы и на выходе через такт, 2, 3... ? Увидим ли мы на выходе полумрак? Удачи! Rob.
|
|
|
|
|
Jul 5 2018, 14:28
|
Знающий
   
Группа: Свой
Сообщений: 779
Регистрация: 3-01-05
Из: Минск
Пользователь №: 1 783

|
Цитата(Грендайзер @ Jul 5 2018, 16:06)  Не, про метостабильное состояние это понятно... не понятно другое. Вот картинка. Допустим частота clk1 < частота clk2. В какой то момент триггер d2 вошёл в это самое метостабильное состояние. Допустим, что время этого состояния было не долгим (скажем < чем период clk2). Теперь, кто сказал, что после выхода триггера из этого состояния в точке С будет присутствовать верный уровень... тут ведь как карта ляжет... Например если на момент нихода фронта clk2 в точке B была '1'. Триггер вошёл в метостабильное состояние... а после выхода у него на выходе (в точке С) появился '0'. Тогда триггрер d3 в момент прихода следующего фронта clk2 защёлкнет '0', а должен был защёлкнуть '1'. Ну и пошло поехало... Или я в чём то неправ? Да всё верно. Наличие местастабильности вызовет нестабильность точки перехода из 1 в 0 в один период шустрой частоты. Примерно так: ____------ _-_-_-_-_-_ выход в хорошем случае: _______----- выход в плохом случае ________--- В фифо точно так же есть синхронизатор только он более громоздкий из-за того что нужно передавать не 1 бит а указатель. И эта проблема не лечиться никак. Кроме работы на кратных частотах.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|