|
Трансмиттер ALTGX выдаёт константу |
|
|
|
May 19 2011, 13:15
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Доброго всем дня. Cyclone IV GX, q11.0 + modelsim ALTGX: Basic mode, 3 gb/s, 8b/10b, 16bit, transmitter+receiver, 1 lane. Сначала не заводился ресивер, выяснилось, что reset'ы всем подблокам ALTGX надо слать не одновременно, а в хитрой последовательности, указанной в handbook. Но, когда ресивер заработал, выяснилось, что трансмиттер шлёт константу в коде 8b/10b, т.е. битовую последовательность равную одному и тому же значению до кодирования, при этом я передаю реально - значение счётчика, т.е. должно меняться, но не меняется. Один дизайнер уже сталкивался с этим на Alteraforum.com ему помогла доп. задержка между взведением pll_locked и сбросом tx_digitalreset (хотя эта задержка не требуется по хэндбуку). Я пошёл дальше и игрался с задержкой вплость до огромной - 3000 тактов на частоте 75 МГц, результата нет. Пробовал и RTL и Timing симуляцию. Ссылка на кросспост - http://www.alteraforum.com/forum/showthread.php?p=119921 там моё сообщение третье. Кусок инициализирующего кода: Код initial begin gxb_powerdown <= 0; pll_areset <= 0; rx_analogreset <= 0; rx_digitalreset <= 0; tx_digitalreset <= 0; #10000 gxb_powerdown <= 1; pll_areset <= 1; rx_analogreset <= 1; rx_digitalreset <= 1; tx_digitalreset <= 1; #1000000 pll_areset <= 0; gxb_powerdown <= 0; wait( pll_locked) repeat( 300) @ (posedge tx_clkout); tx_digitalreset <= 0; wait( ~busy) repeat( 3) @ (posedge tx_clkout); rx_analogreset <= 0; wait( rx_freqlocked) #4000000 rx_digitalreset <= 0; end Строчка wait( pll_locked) repeat( 300) @ (posedge tx_clkout); и даёт дополнительную, но необязательную по хэндбуку задержку. Кто поможет, как завести трансмиттер.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
May 20 2011, 12:07
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Цитата(XVR @ May 20 2011, 11:43)  Вы в курсе, что ваш инициализирующий код не синтезируемый? Или вы трансмитер исключительно в Modelsim'е проверяли? да, пока только в симуляции. Цитата(Postoroniy_V @ May 20 2011, 13:53)  вы бы прицепили gxb сгенерёный, я бы попробовал. цепляю весь тестовый проект, ноу хау в нём никакого нет, только донт-ноу хау  Там только квартусовое всё. Скрипты под симулятор не успел написать, пользовался NativeLink.
Прикрепленные файлы
q.rar ( 50.22 килобайт )
Кол-во скачиваний: 44
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
May 20 2011, 12:58
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Цитата(Postoroniy_V @ May 20 2011, 13:53)  wait( pll_locked) repeat( 300) @ (posedge tx_clkout); Почему тут юзается tx_clkout? ведь там фиг знает что может быть.. с одной стороны после pll_locked там уже не абы-что, а с другой - это же просто пауза, нам подходит любой клок, по которому можно сделать паузу. эта пауза не требуется по хэндбуку, но она помогла в похожей ситуации юзеру с alteraforum Цитата(warrior-2001 @ May 20 2011, 16:28)  cal_blk_clk pll_inclk tx_datain : (xx:0) tx_digitalreset : (0:0) tx_clkout : (0:0) tx_dataout : (0:0) - вот тот минимум сигналов, который позволяет работать с трансмиттером. Данные на tx_datain : (xx:0) нужно обязательно синхронизировать частотой tx_clkout : (0:0)! А вот pll_locked : (0:0) может и не появляться. Его наличие зависит от значений скорости канала и cal_blk_clk. Иногда pll просто не используется и на выходе pll_locked : (0:0) всегда ноль. Так что ошибочно ждать этого сигнала всегда. Лучше на него не завязываться вовсе, а использовать pll_locked любой внешней pll. и самое печальное, что эти сигналы поданы, а выход печален. он есть, это последовательность нулей и единиц, кодирующая ту или иную константу. константа меняется, если менять задержки сбросов.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
May 23 2011, 09:47
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Пытаюсь играться с ALTGX дальше. Затягиваю tx_digitalreset вверху надолго, RX инициализируется, опускаю tx_digitalreset. RX показывает смену символов (8b/10B) , в т.ч. COMMA (K28.5) и установку в очередной раз константы. Прочитал ещё раз handbook, выяснил, что для симуляции рекомендуется не использовать некоторые сбросы, например, gxb_powerdown. Там целая статья на тему - чем отличается поведение в симуляции от реальности. Забавно правда? Предчувствую необходимость написания очередного письма в Альтеру.
Вообще, странно. RX, более сложная половина трансивера, работает вроде нормально, а TX - заметно более простая часть - никак не сделает то, что от неё требуется.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
May 23 2011, 10:21
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Цитата(torik @ May 23 2011, 14:17)  А подскажите, как эту хрень вообще моделировать? Можно в моделсиме посмотреть временные диаграммы, готорые генерит ALTGX по дифф.линии? И можно ли завести TX на RX в тестбенче? да, внешний тестбенч файл (внешний, т.к. его компилирует не ква, а симулятор) может соединять всё, что угодно. диф.линии там генерятся, и видны прекрасно. более того, их можно руками генерить/анализировать.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
May 25 2011, 09:05
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Разобрался. Полез уже во внутренности ALTGXа. Оказалась банальная опечатка в тексте тестбенча.
Офф. - Но по ALTGX-ам вопросы ещё остаются. При включении режима SSC, хватит ли полосы захвата PLL на полосу SSC ( до -0.5% от частоты) ? - SSC доступно только в 30k, 50k, 75k (как по хэндбуку) или для 50, 75, 110, как и RX local divider (как по квартусу) ? - В Arria II GX, похоже, нет этих RX local divider, можно ли делать Speed Auto-Negotiation без переконфигурирования PLL ? Будем разбираться.
Спасибо за советы всем, кто отвечал.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
|
Aug 19 2011, 04:46
|
Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648

|
Доброе утро ! Пытаюсь заставить заработать Arria II. Подаю сигналы сброса в той же последовательности что и было сказано выше, однако на выходе ресивера имею константу 16'h9C9C. В том случае если увеличиваю длительность tx_digitalreset и сбрасываю его одновременно с rx_digitalreset, то на модели начинает работать, в плате нет. если управлять tx_digitalreset по описанию в handbook, то даже на модели вижу на выходе rx_dataout 16'h9C9C. Мб кто нить сталкивался с этим ?
|
|
|
|
|
Aug 22 2011, 15:25
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 11-05-04
Из: World wide
Пользователь №: 3

|
Цитата(Koluchiy @ Aug 18 2011, 09:23)  Здравствуйте.
А Вы пробовали симуляцию приемопередатчика "Gate Level Simulation"? У меня в "RTL Simulation" вроде всё работает, в "Gate Level" сигнал "busy" не уходит в 0...
В результате, логика (моя) не выводит из ресетов приемник, он естественно не работает. Передатчик работает нормально. Gate-level не пробовал. С тех пор много воды утекло. Altera выпустила Errata: Отказ от SSC -> отказ от 3-х протоколов, в том числе и нужный мне. Мы заказали Arria 2 GX младшую. Будем с ней играться. Цитата(mekashikuta @ Aug 19 2011, 08:46)  Доброе утро ! Пытаюсь заставить заработать Arria II. Подаю сигналы сброса в той же последовательности что и было сказано выше, однако на выходе ресивера имею константу 16'h9C9C. В том случае если увеличиваю длительность tx_digitalreset и сбрасываю его одновременно с rx_digitalreset, то на модели начинает работать, в плате нет. если управлять tx_digitalreset по описанию в handbook, то даже на модели вижу на выходе rx_dataout 16'h9C9C. Мб кто нить сталкивался с этим ? Я из описания понял, что для работы в железе достаточно дёргать только общую gxb_powerdown и всё (в отличии от симуляции). Сами ещё не пробовали, плату делаем под Аррию как раз.
--------------------
IPSA SCIENTIA POTESTAS EST
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|