|
Измерение интервалов меньше 1нс на FPGA |
|
|
|
Oct 28 2009, 14:18
|
Группа: Участник
Сообщений: 10
Регистрация: 28-10-09
Пользователь №: 53 261

|
Доброго времени суток.
Видел на днях висел топик по теме. Сейчас не могу найти. Удалили что-ли. У меня идентичная задача. Надо мерить длительность импульсов на 5 каналах, оцифровывать и передавать дальше в цифровом виде. LSB должен быть 1 нс. Делаю так: Имею 2 PLL 125МГц. Первый PLL дает 125 МГц и 125МГц сдвинутый на 90 градусов. Второй PLL - соответственно на 45 и 135 градусов. Итого, после несложных манипуляций имею 8 линий частоты 125 МГц сдвинутых друг относительно друга на 45 градусов.
По приходе входного импульса защелкиваю состояния этих линий в регистр. Далее декодирую его для получения двоичного кода. В итоге имею LSB 1нс.
Варьируя частоты PLL, впринципе можно опустить это значение до ~358пс. Все упирается в верхнюю частоту PLL.
Если что могу обьяснить поподробнее. Вот только у меня проблема. Что будет если защелкивание состояния этих 8-и линий произойдет по фронту двух из них? (Очевидно что можно попасть или на два фронта или на 0).
Как можно решить такую проблему? И еще. Чтобы расширить динамический диапазон, есть еще обычный счетчик, который работает от тех же 150 МГц. Как быть с моментом когда счетчик меняет состояние?
Заранее благодарю.
|
|
|
|
|
 |
Ответов
|
Oct 28 2009, 15:55
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Какая у вас микросхема? Периодические ли сигналы? Чем обеспечивается крутизна фронтов входных сигналов и отсутствие иголок? Может стоит наоборот, захватывать 5 входных сигналов по 8 клокам, а затем для обеспечения таймингов последовательно передавать от фазы к фазе захваченные сигналы, пока не дойдете до клока основной части схемы? Как вы обходитесь с метастабильностью? Посмотрите на gray code.
|
|
|
|
|
Oct 28 2009, 16:18
|
Группа: Участник
Сообщений: 10
Регистрация: 28-10-09
Пользователь №: 53 261

|
Цитата(Shtirlits @ Oct 28 2009, 19:55)  Какая у вас микросхема? Периодические ли сигналы? Чем обеспечивается крутизна фронтов входных сигналов и отсутствие иголок? Может стоит наоборот, захватывать 5 входных сигналов по 8 клокам, а затем для обеспечения таймингов последовательно передавать от фазы к фазе захваченные сигналы, пока не дойдете до клока основной части схемы? Как вы обходитесь с метастабильностью? Посмотрите на gray code. По порядку. Микросхема Actel ProASIC3. Сигналы случайные, порядка 50 кГц на канал. Крутизна и отсутствие иголок обеспечивается стоящим перед FPGA shaper/discriminator-ом. Насчет "может стоит наоборот...." не совсем понял о чем речь? Можете по подробнее на примере одного входа? С метастабильностью обхожусь пока-что "никак" - именно для этого поднял этот топик. О gray code имею понятие. Но вопрос не в том во что "закодировать", а вопрос в том КАК МЕРИТЬ длительность чтобы код получаемый в результате измерения обладал "устойчивостью" к возможным метастабильным состояниям системы. Обьясню на примере.(Грубо) Если взять обычную цепочку из стабильных элементов задержки, и подать на нее входной импульс, то можно снять с этой цепочки код, т.н. "thermometer code" который даст информацию о времени поступления сигнала с точностью до времени задержки одного элемента. Этот код, абсолютно устойчив к метастабильным состояниям самой цепи задержки - максимальная ошибка - 1 элемент задержки - тоесть 1 LSB в итоге. Можно ли добиться того же результата в случае с фазо-сдвиговым методом? Благодарю
|
|
|
|
|
Oct 28 2009, 18:15
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Можно, просто для решения означенной вами проблемы (когда передний фронт входного импульса попадет на фронт одного сигнала, а задний - на фронт следующего) надо эффективную частоту сэмплирования сделать чуть-чуть меньше, чем минимальная ширина импульса. То есть, если импульс 1 ns, фронты у него пусть по 100 ps, то надо сделать, чтобы расстояние между фронтами сэмплирующих частот не превышало 750 ps, и тогда вы хотя бы раз наносекундный импульс захватите надежно. Но тогда может получиться не один, а два фронта внутри наносекундного импульса - будет большая погрешность измерения. Снизить погрешность можно, дальше снижая расстояние между сэмплами.
И еще. Чип вы выбрали очень неудачный для этой задачи. В Xilinx/Altera у каждой PLL по 6 выходов, что позволяет наплодить почти сколько угодно частот, да и скорость у них гораздо выше.
|
|
|
|
|
Oct 28 2009, 19:39
|
Группа: Участник
Сообщений: 10
Регистрация: 28-10-09
Пользователь №: 53 261

|
Цитата(DmitryR @ Oct 28 2009, 21:15)  Можно, просто для решения означенной вами проблемы (когда передний фронт входного импульса попадет на фронт одного сигнала, а задний - на фронт следующего) надо эффективную частоту сэмплирования сделать чуть-чуть меньше, чем минимальная ширина импульса. То есть, если импульс 1 ns, фронты у него пусть по 100 ps, то надо сделать, чтобы расстояние между фронтами сэмплирующих частот не превышало 750 ps, и тогда вы хотя бы раз наносекундный импульс захватите надежно. Но тогда может получиться не один, а два фронта внутри наносекундного импульса - будет большая погрешность измерения. Снизить погрешность можно, дальше снижая расстояние между сэмплами.
И еще. Чип вы выбрали очень неудачный для этой задачи. В Xilinx/Altera у каждой PLL по 6 выходов, что позволяет наплодить почти сколько угодно частот, да и скорость у них гораздо выше. Дорогой DmitryR, Видимо мы не поняли друг друга. Я имел ввиду не случай описанный вами. Такого в принципе быть не может. Минимальная длительность входного импульса гарантированно больше чем 2нс даже. Я имел ввиду вот что. Если мы измеряем время прихода переднего фронта например. В моей схеме возможна ситуация когда в момент защелкивания состояния 8 линий частота 150МГц с сдвигом 45 градусов и частота 150МГц со сдвигом (180+45) градусов будут менять свой уровень. Это даст ошибку никак не 1 LSB. Вот я о чем собственно говорю. Actel я выбрал по причине наличия FLASH. А о каких конкретно Xilinx/Altera Вы говорите?
|
|
|
|
Сообщений в этой теме
АБС Измерение интервалов меньше 1нс на FPGA Oct 28 2009, 14:18 Shtirlits АБС, я подозреваю вас в том, что вы используете вх... Oct 28 2009, 22:16 АБС Цитата(Shtirlits @ Oct 29 2009, 01:16) АБ... Oct 29 2009, 10:49 lamination Цитата(Shtirlits @ Oct 29 2009, 01:16) ..... Oct 29 2009, 12:52 iosifk Цитата(АБС @ Oct 28 2009, 18:18) По прихо... Oct 29 2009, 06:28 DmitryR Кстати да, оверсэплинг-то делается не так: надо на... Oct 29 2009, 08:29 Shtirlits К сожалению, не нашел быстро документ, который сод... Oct 29 2009, 14:12 АБС Цитата(Shtirlits @ Oct 29 2009, 17:12) К ... Oct 29 2009, 14:40  Shtirlits Цитата(АБС @ Oct 29 2009, 17:40) Так поче... Oct 29 2009, 19:04   DmitryR Цитата(Shtirlits @ Oct 29 2009, 22:04) Ещ... Oct 30 2009, 09:39    Shtirlits Цитата(DmitryR @ Oct 30 2009, 12:39) На с... Oct 30 2009, 09:41     DmitryR На мой взгляд задача измерения интервала сводится ... Oct 30 2009, 10:33   АБС Цитата(Shtirlits @ Oct 29 2009, 22:04) Кс... Oct 30 2009, 12:02    Shtirlits Цитата(АБС @ Oct 30 2009, 15:02) А. Можно... Oct 30 2009, 13:40     АБС Получается что работать с двумя PLL для такой зада... Oct 30 2009, 14:49      Shtirlits Цитата(АБС @ Oct 30 2009, 17:49) Получает... Oct 30 2009, 15:11       АБС Цитата(Shtirlits @ Oct 30 2009, 18:11) Пр... Oct 30 2009, 15:56        Shtirlits Цитата(АБС @ Oct 30 2009, 18:56) ...два П... Oct 30 2009, 16:43         АБС Цитата(Shtirlits @ Oct 30 2009, 19:43) На... Oct 30 2009, 17:28          DmitryR А чем вас точность в 200 ps не устраивает? Oct 30 2009, 18:15           АБС Цитата(DmitryR @ Oct 30 2009, 21:15) А че... Nov 4 2009, 12:17 lamination Цитата(Shtirlits @ Oct 29 2009, 17:12) К ... Oct 29 2009, 16:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|