реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Трансмиттер ALTGX выдаёт константу
myq
сообщение May 19 2011, 13:15
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
XVR
сообщение May 20 2011, 07:43
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Кусок инициализирующего кода:
Вы в курсе, что ваш инициализирующий код не синтезируемый? Или вы трансмитер исключительно в Modelsim'е проверяли?
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение May 20 2011, 09:53
Сообщение #3


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(myq @ May 19 2011, 22:15) *
................


wait( pll_locked) repeat( 300) @ (posedge tx_clkout); Почему тут юзается tx_clkout? ведь там фиг знает что может быть..
tx_digitalreset <= 0;
wait( ~busy) repeat( 3) @ (posedge tx_clkout);
rx_analogreset <= 0;
wait( rx_freqlocked) #4000000 rx_digitalreset <= 0;
end

вы бы прицепили gxb сгенерёный, я бы попробовал.


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
myq
сообщение May 20 2011, 12:07
Сообщение #4


Местный
***

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



Цитата(XVR @ May 20 2011, 11:43) *
Вы в курсе, что ваш инициализирующий код не синтезируемый? Или вы трансмитер исключительно в Modelsim'е проверяли?


да, пока только в симуляции.


Цитата(Postoroniy_V @ May 20 2011, 13:53) *
вы бы прицепили gxb сгенерёный, я бы попробовал.


цепляю весь тестовый проект, ноу хау в нём никакого нет, только донт-ноу хау sm.gif

Там только квартусовое всё. Скрипты под симулятор не успел написать, пользовался NativeLink.
Прикрепленные файлы
Прикрепленный файл  q.rar ( 50.22 килобайт ) Кол-во скачиваний: 44
 


--------------------
IPSA SCIENTIA POTESTAS EST
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение May 20 2011, 12:28
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



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.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
myq
сообщение May 20 2011, 12:58
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
myq
сообщение May 23 2011, 09:47
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
torik
сообщение May 23 2011, 10:17
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



А подскажите, как эту хрень вообще моделировать?
Можно в моделсиме посмотреть временные диаграммы, готорые генерит ALTGX по дифф.линии? И можно ли завести TX на RX в тестбенче?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
myq
сообщение May 23 2011, 10:21
Сообщение #9


Местный
***

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



Цитата(torik @ May 23 2011, 14:17) *
А подскажите, как эту хрень вообще моделировать?
Можно в моделсиме посмотреть временные диаграммы, готорые генерит ALTGX по дифф.линии? И можно ли завести TX на RX в тестбенче?


да, внешний тестбенч файл (внешний, т.к. его компилирует не ква, а симулятор) может соединять всё, что угодно. диф.линии там генерятся, и видны прекрасно. более того, их можно руками генерить/анализировать.


--------------------
IPSA SCIENTIA POTESTAS EST
Go to the top of the page
 
+Quote Post
warrior-2001
сообщение May 23 2011, 10:50
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 375
Регистрация: 9-10-08
Из: Таганрог, Ростовская обл.
Пользователь №: 40 792



Если есть возможность - попробуйте то же самое, но на более старых версиях квартуса. У меня 10.1 - полёт нормальный. И на модели и в железе всё работает.


--------------------
Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые могут избегать ее. Гении ее устраняют.
Go to the top of the page
 
+Quote Post
myq
сообщение May 23 2011, 13:47
Сообщение #11


Местный
***

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



Да снёс недавно уже.
Там ещё есть странная вещь. Есть такая фича как RX local divider. По handbook'у она доступна в 30- 50- и 75-тысячниках. По квартусу - в 50, 75 и 110-тысячниках. Опять расхождение. Убедился, что оба квартуса в этой ситуации ведут себя одинаково - стёр более старый.
К тому же в 11.0 обещали точную тайминг модель 4-х циклонов GX.


--------------------
IPSA SCIENTIA POTESTAS EST
Go to the top of the page
 
+Quote Post
myq
сообщение May 25 2011, 09:05
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Aug 18 2011, 05:23
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



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

А Вы пробовали симуляцию приемопередатчика "Gate Level Simulation"?
У меня в "RTL Simulation" вроде всё работает, в "Gate Level" сигнал "busy" не уходит в 0...

В результате, логика (моя) не выводит из ресетов приемник, он естественно не работает.
Передатчик работает нормально.
Go to the top of the page
 
+Quote Post
mekashikuta
сообщение Aug 19 2011, 04:46
Сообщение #14





Группа: Участник
Сообщений: 14
Регистрация: 10-08-11
Пользователь №: 66 648



Доброе утро ! Пытаюсь заставить заработать Arria II. Подаю сигналы сброса в той же последовательности что и было сказано выше, однако на выходе ресивера имею константу 16'h9C9C. В том случае если увеличиваю длительность tx_digitalreset и сбрасываю его одновременно с rx_digitalreset, то на модели начинает работать, в плате нет. если управлять tx_digitalreset по описанию в handbook, то даже на модели вижу на выходе rx_dataout 16'h9C9C. Мб кто нить сталкивался с этим ?
Go to the top of the page
 
+Quote Post
myq
сообщение Aug 22 2011, 15:25
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 16th June 2025 - 20:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01492 секунд с 7
ELECTRONIX ©2004-2016