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

Настройка LVDS на Cyclone V

Здравствуйте!

Стоит задача генерировать внутри ПЛИС Altera Cyclone V (кит Terasic DE1-SoC) при помощи PLL некоторую частоту, передавать её на выход LVDS и принимать на другой вход этой же ПЛИС (необходимо для отладки частотомера).

По поводу LVDS долго пытался вчитываться в Cyclone V Handbook, но понял только то, что надо использовать функции Квартуса для приёма и передачи сигнала LVDS. Насколько я понял, при назначении в Pin Planner стандарта LVDS Квартус сам назначает пару выбранному пину. Информацию по поводу пар дифференциальных пинов нигде не смог найти. Я выбрал GPIO[12] и GPIO[14] (парные 15 и 13). Дальше создал входной и выходной буферы (ALTIOBUF), которые должны преобразовывать сигнал из моно в дифференциальный и обратно.

LVDS_BUF_IN lvds_in
(
	
	.datain(GPIO[15]),
	.datain_b(GPIO[12]),
	.dataout(clk_in)
	
);

LVDS_BUF_OUT lvds_out
(
	
	.datain(clk_0_2),
	.dataout_b(GPIO[13]),
	.dataout(GPIO[14])
	
);

По поводу выходной пары у Квартуса вопросов не возникло, а на входные пины вылезла ошибка: Error (169008): Can't turn on open-drain option for differential I/O pin GPIO[12]. И аналогичная на 15-й пин.

Если не создавать буфер, на выходную пару вылезает такая же ошибка, я читал, что Квартус не пропускает неправильно настроенные пины LVDS. Я знаю, что в LVDS должен быть на входе резистор между линиями. Может быть, ошибка из-за его отсутствия в программе? И его как-то настроить надо в самой ПЛИС?

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


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

On 9/11/2020 at 12:42 AM, Петр Юркевич said:

Здравствуйте!

Стоит задача генерировать внутри ПЛИС Altera Cyclone V (кит Terasic DE1-SoC) при помощи PLL некоторую частоту, передавать её на выход LVDS и принимать на другой вход этой же ПЛИС (необходимо для отладки частотомера).

По поводу LVDS долго пытался вчитываться в Cyclone V Handbook, но понял только то, что надо использовать функции Квартуса для приёма и передачи сигнала LVDS. Насколько я понял, при назначении в Pin Planner стандарта LVDS Квартус сам назначает пару выбранному пину. Информацию по поводу пар дифференциальных пинов нигде не смог найти. Я выбрал GPIO[12] и GPIO[14] (парные 15 и 13). Дальше создал входной и выходной буферы (ALTIOBUF), которые должны преобразовывать сигнал из моно в дифференциальный и обратно.


LVDS_BUF_IN lvds_in
(
	
	.datain(GPIO[15]),
	.datain_b(GPIO[12]),
	.dataout(clk_in)
	
);

LVDS_BUF_OUT lvds_out
(
	
	.datain(clk_0_2),
	.dataout_b(GPIO[13]),
	.dataout(GPIO[14])
	
);

По поводу выходной пары у Квартуса вопросов не возникло, а на входные пины вылезла ошибка: Error (169008): Can't turn on open-drain option for differential I/O pin GPIO[12]. И аналогичная на 15-й пин.

Если не создавать буфер, на выходную пару вылезает такая же ошибка, я читал, что Квартус не пропускает неправильно настроенные пины LVDS. Я знаю, что в LVDS должен быть на входе резистор между линиями. Может быть, ошибка из-за его отсутствия в программе? И его как-то настроить надо в самой ПЛИС?

прошу прощения, найдите Pin Planner, скажите что у вас стандарт LVDS на выбранных пинах по входу,

может полегчает?

На приемном конце LVDS как можно ближе должен стоять 100 ом (обычно 0402),

программа про него знать не знает (если LVDS, значит должен стоять), внутреннего такого нет.

 

И еще конечно сигналы должны быть разведены дифференциальными парами.

 

Информация про дифф пары - в PIn Planner слева пиктограммы вертикальные

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

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


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

6 часов назад, En_Serg сказал:

прошу прощения, найдите Pin Planner, скажите что у вас стандарт LVDS на выбранных пинах по входу,

может полегчает?

На приемном конце LVDS как можно ближе должен стоять 100 ом (обычно 0402),

программа про него знать не знает (если LVDS, значит должен стоять), внутреннего такого нет.

 

И еще конечно сигналы должны быть разведены дифференциальными парами.

 

Информация про дифф пары - в PIn Planner слева пиктограммы вертикальные

 

Спасибо за ответ! В принципе, уже разобрался. Была проблема в неправильном напряжении питания банка выводов (для LVDS требовалось 2.5, а стояло 3.3). Пришлось искусственно в Квартусе менять. А буферы даже не пригодились, оказалось, что можно просто подключаться к положительному выводу, назначенному как LVDS. При этом Квартус сам разбирается и формирует входной и выходной буферы (с резистором он видимо сам как-то порешал).

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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