Перейти к содержанию
    

Как принять данные по LVDS в CIII?

есть АЦП в выходом LVDS. Подключил к Cyclone III. Чтоб получить из этого LVDS пар. код в квартусе создал простой проект с altlvds_rx и pll (см рис). Написал тест имитирующий АЦП. Решил проверить в ModuleSim - принимается какойто мусор.

 

Где можно почитать про altlvds_rx? Не понятно что за входы у altlvds_rx ? Какие клоки на них должны быть, какие фазовые сдвиги и относительно чего? Посмотреть бы временные диаграмы, как в даташите на АЦП. Что за выход в altlvds_rx ? Нужно два канала по 14 бит, у меня 1 канал 28 бит. Как его парсить? Как тока altlvds_rx получит кадр - через какое время этоти данные появятся на выходе? Когда данные на выходе валидны? Хендбук не помог :laughing:

 

 

post-49045-1289816297_thumb.png

post-49045-1289816307_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть АЦП в выходом LVDS. Подключил к Cyclone III. Чтоб получить из этого LVDS пар. код в квартусе создал простой проект с altlvds_rx и pll (см рис). Написал тест имитирующий АЦП. Решил проверить в ModuleSim - принимается какойто мусор.

Он не мусор принимает, там просто данные своеобразно перемешиваются (hi и low попарно), в хендбуке именно на мегафункции все подробно расписано и даже с времянками. Можете поисковиком посмотреть на форуме, вопрос вроде уже поднимался.

http://www.altera.com/literature/ug/ug_altlvds.pdf - последний хандбук на allvds

пример приема 18->36

lvds_in lvds_in(
    .rx_in(link_data),
    .rx_inclock(link_clk),
    .rx_out(link_data_36));
    
always @(posedge link_clk) link_dat<={link_data_36[35],link_data_36[33],link_data_36[31],link_data_36[29],
        link_data_36[27],link_data_36[25],link_data_36[23],link_data_36[21],
        link_data_36[19],link_data_36[17],link_data_36[15],link_data_36[13],
        link_data_36[11],link_data_36[9],link_data_36[7],link_data_36[5],
        link_data_36[3],link_data_36[1],link_data_36[34],link_data_36[32],link_data_36[30],
        link_data_36[28],link_data_36[26],link_data_36[24],link_data_36[22],
        link_data_36[20],link_data_36[18],link_data_36[16],link_data_36[14],
        link_data_36[12],link_data_36[10],link_data_36[8],link_data_36[6],
        link_data_36[4],link_data_36[2],link_data_36[0]};

Изменено пользователем bogaev_roman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он не мусор принимает, там просто данные своеобразно перемешиваются (hi и low попарно), в хендбуке именно на мегафункции все подробно расписано и даже с времянками. Можете поисковиком посмотреть на форуме, вопрос вроде уже поднимался.

Ну я подозреваю что где-то это всё разжёвано, и что где-то на это форуме наверно это уже обсуждалось. Но где? Не могу найти ни в хендбуке ни здесь ((

 

ps Ну если бы ,,,, например посылаю на вход 0xcccc, в следующий кадр ~0xcccc, если бы данные на выходе были бы другие, но всегда одни и теже, например вместо 0xcccc всегда 0хаааа, то понятно, нада правильно выход распарсить, а у меня сейчас всегда данные разные. Не правильно както LVDS_RX рабортает, похоже я не правильно его клокирую

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не правильно както LVDS_RX рабортает, похоже я не правильно его клокирую

Для altrx на 2 сдвиньте тактируемую частоту на 90 градусов вперед и все должно работать. Вы на чем проверяете - функциональное моделирование?

Изменено пользователем bogaev_roman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для altrx на 2 сдвиньте тактируемую частоту на 90 градусов и все должно работать.

А что такое "тактируемая частота"? На входе altlvds_rx три частоты - rx_inclock, rx_readclock, rx_syncclock.Какую из них двигать? в какую сторону?

Вы на чем проверяете - функциональное моделирование?

в ModelSim. Функциональное моделирование прошло вроде успешно. Сейчас делаю временное. После компиляции в квартусе командой Tools->Run EDA Simulation Tool->EDA Gate Level Simulation... Там выбираю модель и Run - запускается в ModelSim симуляция. после остановки симуляции некоторые биты на выходе altlvds_rx почему-то x.

 

http://www.altera.com/literature/ug/ug_altlvds.pdf - последний хандбук на allvds
Я его до дыр зачитал - не вижу я временных диаграмм с rx_inclock, rx_readclock, rx_syncclock и rx_in[]. Не понятно где и какие частоты должны быть, какие сдвиги?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно обвязывал АЦП с LVDS. Я вообще не ставил altlvds, там у АЦП был выход данных и выход с АЦП клока, который стробировал данные. Я просто поставил сдвиговый регистр и на входе поставил стандарт LVDS. Формировал клок по даташиту и все работает, правда мне хватало частоты клока 96 МГц, может у вас боле будет, и такое уже не прокатит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Недавно обвязывал АЦП с LVDS. Я вообще не ставил altlvds, там у АЦП был выход данных и выход с АЦП клока, который стробировал данные. Я просто поставил сдвиговый регистр и на входе поставил стандарт LVDS. Формировал клок по даташиту и все работает, правда мне хватало частоты клока 96 МГц, может у вас боле будет, и такое уже не прокатит.

да я тоже сначало сделал без altlvds_rx. Функциональное моделирование прошло на ура. А временное почему-то не позволяет ни чего посмотреть. боссы говорят - попробуй поднять altlvds_rx.

96 МГц - а это какой клок? У меня есть клок FR (слова клокирует, ну есть еще DCO - клокирует данные, но я его не пользую. я его могу получить из PLL) По переднему и заднему фронту выравнивание слова (см картинку выше). Данные в линии lvds приходят с частотой 100 МГц, т.е. FR получается 50 МГц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что такое "тактируемая частота"? На входе altlvds_rx три частоты - rx_inclock, rx_readclock, rx_syncclock.Какую из них двигать? в какую сторону?

 

в ModelSim. Функциональное моделирование прошло вроде успешно. Сейчас делаю временное. После компиляции в квартусе командой Tools->Run EDA Simulation Tool->EDA Gate Level Simulation... Там выбираю модель и Run - запускается в ModelSim симуляция. после остановки симуляции некоторые биты на выходе altlvds_rx почему-то x.

 

Тактируемая частота - rx_inclock - ее вправо относительно данных, соотношения других частот выдает сам мегавизард, когда выставляется галка напротив use external pll. Я внешнюю частоту не использовал, данные гнал вместе с тактовой (тогда rx_readclock, rx_syncclock вообще нет), ее уже сдвигал на 90 градусов на внутренней pll. То что x - времянки не выполняются, смотрите временные ошибки, из-за них кстати у Вас билиберда да шине данных может быть.

ЗЫ. Вы задачу поясните - что требуется сделать, а то после просмотра схемы и словесного описания появляется ощущение, что altlvds вообще неправильно используется.

Изменено пользователем bogaev_roman

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы задачу поясните - что требуется сделать, а то после просмотра схемы и словесного описания появляется ощущение, что altlvds вообще неправильно используется.

Задача - АЦП прикрутить к ПЛИС. ацп ltc2267 http://cds.linear.com/docs/Datasheet/22687614f%20.pdf Это двухканальное АЦП с двумя выходами lvds для каждого канала, плюс выход фреймов и data clock out, так же lvds. Входная частота ENC 100 МГц. Частота выборки 100 МГц, т.е. биты в lvds (dco) с частотой 700 МГц. Есть готовый проект для подобного АЦП но сделан в 9-ом квартусе. там мегафункции ldvs немного другие. Но на схеме верхнего уровня, в 9-ке приемный модуль выглядит также , как на моем рисунке в 10-ке. Да и настройки внутри altlvds_rx, старался сделать такие же. Поднять lvds тупо скопировав проект из 9-ки не получилось. решил разобраться.

 

Почему внешний pll? - Те, кто уже поднял lvds, в 9-ке, сказали обязательно нужно пользовать внешний pll. Типа потом во внешнем pll легко двигать фазы и легко добиться всяких временных задержек. А с внутренней плл это гемору по горло и не пройдет временное моделирование. поверил на слово. ну и за основу взял их проект.

 

Если я что не так делаю, подскажите что не так, плиз.

 

ps И всё таки, где-то должно быть написано как на выходе модуля altlvds_rx данные выходят. Где какие биты. Я опытным путем уже это выяснил. Но как же документация? Не могу найти где конкретно это описано.

post-49045-1289833013_thumb.jpg

post-49045-1289833020_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Функциональное моделирование прошло вроде успешно. Сейчас делаю временное. После компиляции в квартусе командой Tools->Run EDA Simulation Tool->EDA Gate Level Simulation...

 

А Вы проект только с мегафункцией pll в 10 квартусе создайте. (У меня gate моделирование не прошло).

Многие на 9.1sp2 откатились.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да я тоже сначало сделал без altlvds_rx. Функциональное моделирование прошло на ура. А временное почему-то не позволяет ни чего посмотреть. боссы говорят - попробуй поднять altlvds_rx.

96 МГц - а это какой клок? У меня есть клок FR (слова клокирует, ну есть еще DCO - клокирует данные, но я его не пользую. я его могу получить из PLL) По переднему и заднему фронту выравнивание слова (см картинку выше). Данные в линии lvds приходят с частотой 100 МГц, т.е. FR получается 50 МГц.

Нет, у Вас такое не прокатит, 700 МГЦ по лвдс по моему только через altlvds. У меня АЦП похожий, DCO -96 МГц, FR (в моем случае CNV) - 5 МГц. :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А Вы проект только с мегафункцией pll в 10 квартусе создайте. (У меня gate моделирование не прошло).

Многие на 9.1sp2 откатились.

ээээээ, я тока начал с квартусом работать,,,,,,,,, не понял что значит "только с мегафункцией pll". Я и так создаю с мегафункцией pll и altlvds_rx. Или вы предлагаете в 10-ке использовать только мегафункцию pll, а altlvds_rx не пользоваться и написать свою?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ээээээ, я тока начал с квартусом работать,,,,,,,,, не понял что значит "только с мегафункцией pll".

 

Я предложил прежде чем грешить на lvds, pll проверить на связке 10 квартус - альтера-моделсим.

А если только начали, что мешает проектом предыдущим по полной оторваться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я предложил прежде чем грешить на lvds, pll проверить на связке 10 квартус - альтера-моделсим.
Ага, понял. Вобщем с PLL gate-моделирование проходит. Вытащил на графики входной клок и 3 выходных. По времени все так, как должно быть.

А если только начали, что мешает проектом предыдущим по полной оторваться.
Выставил я во внешнем pll теже задержки, что и в предыдущем проекте - на выходе altlvds_rx спрошные иксы. ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вобщем победил я этот lvds. Без образцового проекта. Внешний PLL идёт лесом. вот как я его настроил (мож кому полезно будет, а может мне подсказка на будущее)

 

Как подобное ацп подключить к ПЛИС СIII:

Я делал в Quartus 10 SP1, на Win 7. Мож в ХР по другому нада

 

1)Визард мегафункция altlvds_rx просто так не вызвать. Идем в Пуск-Панель Управления-Языки и Региональные стандарты. Меняем Формат на Английские США. Некоторые рекомендуют дополнительно поменять разделитель с "," на ".", но у меня и с запятой вроде прокатило. После этого будет запускаться заветный визард.

2)для ацп ltc2267 я использовал тока FR и данные. Это двухканальное АЦП с двума линиями lvds для каждого канала. режим выбрал такой, как выше на рисунке. настройки для altlvds_rx смотри на рисунках. Некоторые вкладки в настройках lvds_rx были полностью заблокированны, поэтому этих рисунков нет.

3) ну собствено и всё. функциональное и временное моделирование в ModelSim прошли успешно. по переднему фронту rx_outclock данные на выходе валидны. Как в железке будет работать - пока не знаю.

 

Данные замешанны так: rx_out[0...6] соответствует битам полученным по линии rx_in[0]. Первый старший. rx_out[7...13] соответствует битам полученным по линии rx_in[1] ну и т.д. Хороший документ, по ALTLVDS quartus_lvdswp.pdf

post-49045-1289909337_thumb.png

post-49045-1289909348_thumb.png

post-49045-1289909358_thumb.png

Изменено пользователем juvf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...