|
Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III |
|
|
|
Mar 31 2010, 06:25
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Народ помогите плиз. Есть девайс. На нем- cyclone III и USB котроллер cy7c68013 (очень распрастраненный Cypress, может выдавать на Cyclone тактовую в 12, 24 или 48 мегагерц) На циклоне реализован NIOS, программа небольшая и я решил обойтись без бутлоалера - грузить всю прогу сразу в onchip mem. Все работало при заведении тактовой с USB, однако хотелось бы ее увеличить, тем более что тайминг аналайзер сказал что тактовая до 110 Мг подойдет. Как начал использовать PLL - начали появляться странности - нестабильная прогрузка NIOSa. То есть в 90% случаев он загружается нормально, а в остальных то ли виснет толи непойму что. Но явно не корректно заружается. Тактовую на PLL увеличиваю в два раза - получается 96 Мгц. Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Если NIOS грузиться девайс может работать по несколько суток без единой ошибки - проверял. В чем может быть проблема с загрузкой? Ногу PLL "locked" анализирую - приостанавливаю подачу тактовой на NIOS (мегафукнция ALTCLKCTRL), Жду пока стабилизируется, потом снова подаю. Процессор при этом не ресетю, но пробовал и ресетить, не помогало.
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 44)
|
Mar 31 2010, 07:16
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 10:54)  я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Цитата(KIM @ Mar 31 2010, 11:01)  Сейчас попробуем, хотя я так тоже пробовал, не сразу я до ALTCLKCTRL дошел, но для чистоты эксперимента, еще разок. Неполучается. Не всегда проходит инициализация. А вы как PLL генерировали? у меня In normal mode, поставил флаг Self reset on lose lock. Вообще я в первый раз pll использую. Может в этом дело?
|
|
|
|
|
Mar 31 2010, 07:43
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 11:39)  Self reset я не ставил, у меня кварцевый опорник. а что значит - инициализация не проходит? если прога в on-chip слинкована и вектор сброса на on-chip нацелен, она вместе с sof загружается. Все правильно, прога слинкована в onchip.я для проверки загрузки прилепил к процессору PIO на выход,первой командой в функции main стоит установление этого PIO в единицу (по умолчанию он в 0), так вот он не устанавливается, то есть на этапе загрузки что то по-видимому происходит с процессором, он не доходит до этого места. программа в Onchip слинкована правильно, поскольку он все-таки загружается правильно в большинстве случаев и норм работает.
|
|
|
|
|
Mar 31 2010, 07:53
|

Лентяй
     
Группа: Свой
Сообщений: 2 203
Регистрация: 11-10-04
Из: Санкт-Петербург
Пользователь №: 843

|
Тайминги, тайминги и еще раз тайминги. Цитата(KIM @ Mar 31 2010, 10:25)  Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили"  Второе, на что нужно обратить внимание - используете ли Вы начальные состояния триггеров по умолчанию? При этом можно нарваться на неприятности, когда проект будет работать корректно сразу после загрузки ПЛИС, а вот после сброса ниоса вдруг поведет себя непредсказуемо. Нужно все триггеры приводить в начальное состояние принудительно. Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы?
--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
|
|
|
|
|
Mar 31 2010, 08:09
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата вообще сильно на тайминги смахивает, точно все законстрейнили Тайминг аналайзер квартуса ни выдает ничего плохого. после PLL у меня тактовая получается 96, максимальная по тайминг аналайзеру - 108, в разделе multiconer timing alalyser summary все норм. Кроме того, если процессора все таки загрузиться, я его гонял больше суток по два раза - ни одной ошибки в рассчетах (там криптографию он считает, ошибки бы сразу вылезли если что) Цитата(vadimuzzz @ Mar 31 2010, 11:46)  но сама ПЛИС сконфигурилась? если flash-programmer`ом в ниос потыкать - проц ему виден? Да. проц видет, system_id получает Цитата(Stewart Little @ Mar 31 2010, 11:53)  Тайминги, тайминги и еще раз тайминги. Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны. Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили"  Мой файл SDC: Код create_clock -name input_clk -period 15.151 [get_ports board_clk] create_clock -name usb_clk -period 20833 [get_ports usb_clk]
create_generated_clock -source usb_clk \ -multiply_by 2 \ -divide_by 1 \ -name pll_clk pll:GLOBAL_PLL|altpll:altpll_component|pll_altpll:auto_generated|wire_pll1_clk[0] Цитата(Stewart Little @ Mar 31 2010, 11:53)  Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы? "Снаружи" nios системы Цитата(vadimuzzz @ Mar 31 2010, 10:54)  я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев. вопрос про полярность выходв PLL "locked" и NIOS_CPU "reset": для того чтобы ввести процессор в Reset : Reset <= '0'; чтобы вывести из ресета - Reset <= '1'; если PLL залочена то locked в '0' Если разлочена - то в '1'. Соответствено чтобы ресетнуть процессор когда pll теряет lock надо: reset <= not lock. Все правильно?
Сообщение отредактировал Omen_13 - Apr 1 2010, 15:20
Причина редактирования: Оформление кода
|
|
|
|
|
Mar 31 2010, 08:17
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата Тайминг аналайзер квартуса ни выдает ничего плохого warnings есть? Цитата вопрос про полярность выходв PLL "locked" и NIOS_CPU "reset": для того чтобы ввести процессор в Reset : Reset <= '0'; чтобы вывести из ресета - Reset <= '1'; если PLL залочена то locked в '0' Если разлочена - то в '1'. locked - active high (1 в захвате) reset_n у проца - active low (нулем сбрасывается) инвертор не нужен, напрямую.
|
|
|
|
|
Mar 31 2010, 08:22
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
vadimuzzzЯсно,у меня так и было
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Mar 31 2010, 09:39
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(KIM @ Mar 31 2010, 12:22)  warnings есть? Есть варнинги, щас отпишу, проект пересобиру картика из SOPC: Цитата(vadimuzzz @ Mar 31 2010, 12:50)  ну, кроме таймингов на ум ничего не приходит. выкладывайте репорт. картинку в SOPC тоже давайте отчет тайминг аналайзера: Я не указывал раньше - тут два процессора. Оба инитсятся из Onchip mem. То что указывал раньше про один проц - справедливо для обоих процов. Бывает что оба не инитятся, бывает что только один. Еще раз повторюсь что в Onchip все правильно слинковано поскольку частенько при включении все нормально инитится и работает. В общем - нет стабильности
Сообщение отредактировал Omen_13 - Apr 1 2010, 15:23
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 31 2010, 12:36
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 15:47)  про board_clk не понял, он имеет какое-то отношение к системе? В данный момент не имеет, это у меня генератор на 66 МГц стоит на плате, его я пока не использую, раньше использовал, видимо упоминания остались
|
|
|
|
|
Mar 31 2010, 14:00
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
в общем ситауция не поменялась, все так же то рузится то не грузится. С altera_reserved_tck не разобрался, перевернул все *.sdc в проекте, нигде не указывается, варнинг так и есть. Остальные варнинги пропали, Fmax для pll_clk - 108 Мгц.
|
|
|
|
|
Apr 1 2010, 06:59
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Mar 31 2010, 18:05)  еще такой вариант: поиграть выходной частотой PLL, когда начинаются сбои. это в дополнение к вышеупомянутым поправкам. С частотой поиграл: результат примерно следующий - гдето до 70 МГц все вроде нормально, после 70 начинаются нестабильность с загрузкой. Повторяюсь - только с загрузкой, если ниосы прогружаются они работают отлично. Вот щас всю ночь стояло работало - ниодной ошибки. Работало на 96 МГц. Цитата(vadimuzzz @ Mar 31 2010, 18:05)  а что в i/o не законстрейнено? Там ничего что моголо бы повлиять на загрузку. Только выходы на JTAG (altera_reserved_tms, altera_reserved_tdi) и мой вовоод вывод на USB, который отлично работает
|
|
|
|
|
Apr 1 2010, 07:20
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(dvladim @ Apr 1 2010, 11:16)  Если вся программа в on-chip памяти, то о какой загрузке ниоса может идти речь? Или у вас прошивка на этой же частоте грузится? Вся программа в Onchip памяти, под загрузкой я понимаю инициализацию процессора, передачу управления в функцию main, где первым делом устанавливается в '1' PIO, по которомы снаружи SOPC системы я понимаю, успешно ли иниуиировался процесоор или нет. Так вотесли схема работает на 96 МГц это происходит невсегда. Хотя по таймингам все должно быть нормально. Но если всетаки в main управление попадет, все работает отлично и очень долго
|
|
|
|
|
Apr 1 2010, 08:16
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
vadimuzzzБуду пробовать разбираться, спасибо
Сообщение отредактировал Omen_13 - Apr 1 2010, 15:25
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Apr 1 2010, 11:08
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(KIM @ Apr 1 2010, 12:16)  Буду пробовать разбираться, спасибо Вот что происходит если проц не инитится: CODE
Signal Legend:
Key Signal Name
0 = cpu_system:CPU|cpu:the_cpu|Nios II Inst Address 1 = cpu_system:CPU|cpu:the_cpu|Nios II Disassembly
Data Table:
Signals-> 0 1
sample
0 <empty> <empty> 1 <empty> <empty> 2 0x80824 flushi bt 3 <empty> <empty> 4 <empty> <empty> 5 <empty> <empty> 6 0x80828 br 0x8082c 7 <empty> <empty> 8 <empty> <empty> 9 <empty> <empty> 10 <empty> <empty> 11 <empty> <empty> 12 <empty> <empty> 13 <empty> <empty> 14 0x8082c br 0x80820 15 <empty> <empty> 16 <empty> <empty> 17 <empty> <empty> 18 <empty> <empty> 19 <empty> <empty> 20 <empty> <empty> 21 <empty> <empty> 22 <empty> <empty> 23 <empty> <empty> 24 0x80820 nextpc bt 25 <empty> <empty> 26 <empty> <empty> 27 0x80824 flushi bt 28 <empty> <empty> 29 <empty> <empty> 30 <empty> <empty> 31 0x80828 br 0x8082c 32 <empty> <empty> 33 <empty> <empty> 34 <empty> <empty> 35 <empty> <empty> 36 <empty> <empty> 37 <empty> <empty> 38 <empty> <empty> 39 0x8082c br 0x80820 40 <empty> <empty> 41 <empty> <empty> 42 <empty> <empty> 43 <empty> <empty> 44 <empty> <empty> 45 <empty> <empty> 46 <empty> <empty> 47 <empty> <empty> 48 <empty> <empty> 49 0x80820 nextpc bt 50 <empty> <empty> 51 <empty> <empty> 52 0x80824 flushi bt 53 <empty> <empty> 54 <empty> <empty> 55 <empty> <empty> 56 0x80828 br 0x8082c 57 <empty> <empty> 58 <empty> <empty> 59 <empty> <empty> 60 <empty> <empty> 61 <empty> <empty> 62 <empty> <empty> 63 <empty> <empty> 64 0x8082c br 0x80820 65 <empty> <empty> 66 <empty> <empty> 67 <empty> <empty> 68 <empty> <empty> 69 <empty> <empty> 70 <empty> <empty> 71 <empty> <empty> 72 <empty> <empty> 73 <empty> <empty> 74 0x80820 nextpc bt 75 <empty> <empty> 76 <empty> <empty> 77 0x80824 flushi bt 78 <empty> <empty> 79 <empty> <empty> 80 <empty> <empty> 81 0x80828 br 0x8082c 82 <empty> <empty> 83 <empty> <empty> 84 <empty> <empty> 85 <empty> <empty> 86 <empty> <empty> 87 <empty> <empty> 88 <empty> <empty> 89 0x8082c br 0x80820 90 <empty> <empty> 91 <empty> <empty> 92 <empty> <empty> 93 <empty> <empty> 94 <empty> <empty> 95 <empty> <empty> 96 <empty> <empty> 97 <empty> <empty> 98 <empty> <empty> 99 0x80820 nextpc bt 100 <empty> <empty> 101 <empty> <empty> 102 0x80824 flushi bt 103 <empty> <empty> 104 <empty> <empty> 105 <empty> <empty> 106 0x80828 br 0x8082c 107 <empty> <empty> 108 <empty> <empty> 109 <empty> <empty> 110 <empty> <empty> 111 <empty> <empty> 112 <empty> <empty> 113 <empty> <empty> 114 0x8082c br 0x80820 115 <empty> <empty> 116 <empty> <empty> 117 <empty> <empty> 118 <empty> <empty> 119 <empty> <empty> 120 <empty> <empty> 121 <empty> <empty> 122 <empty> <empty> 123 <empty> <empty> 124 0x80820 nextpc bt 125 <empty> <empty> 126 <empty> <empty> 127 0x80824 flushi bt 128 <empty> <empty> 129 <empty> <empty> 130 <empty> <empty> 131 0x80828 br 0x8082c 132 <empty> <empty> 133 <empty> <empty> 134 <empty> <empty> 135 <empty> <empty> 136 <empty> <empty> 137 <empty> <empty> 138 <empty> <empty> 139 0x8082c br 0x80820 140 <empty> <empty> 141 <empty> <empty> 142 <empty> <empty> 143 <empty> <empty> 144 <empty> <empty> 145 <empty> <empty> 146 <empty> <empty> 147 <empty> <empty> 148 <empty> <empty> 149 0x80820 nextpc bt 150 <empty> <empty> 151 <empty> <empty> 152 0x80824 flushi bt 153 <empty> <empty> 154 <empty> <empty> 155 <empty> <empty> 156 0x80828 br 0x8082c 157 <empty> <empty> 158 <empty> <empty> 159 <empty> <empty> 160 <empty> <empty> 161 <empty> <empty> 162 <empty> <empty> 163 <empty> <empty> 164 0x8082c br 0x80820 165 <empty> <empty> 166 <empty> <empty> 167 <empty> <empty> 168 <empty> <empty> 169 <empty> <empty> 170 <empty> <empty> 171 <empty> <empty> 172 <empty> <empty> 173 <empty> <empty> 174 0x80820 nextpc bt 175 <empty> <empty> 176 <empty> <empty> 177 0x80824 flushi bt 178 <empty> <empty> 179 <empty> <empty> 180 <empty> <empty> 181 0x80828 br 0x8082c 182 <empty> <empty> 183 <empty> <empty> 184 <empty> <empty> 185 <empty> <empty> 186 <empty> <empty> 187 <empty> <empty> 188 <empty> <empty> 189 0x8082c br 0x80820 190 <empty> <empty> 191 <empty> <empty> 192 <empty> <empty> 193 <empty> <empty> 194 <empty> <empty> 195 <empty> <empty> 196 <empty> <empty> 197 <empty> <empty> 198 <empty> <empty> 199 0x80820 nextpc bt 200 <empty> <empty> 201 <empty> <empty> 202 0x80824 flushi bt 203 <empty> <empty> 204 <empty> <empty> 205 <empty> <empty> 206 0x80828 br 0x8082c 207 <empty> <empty> 208 <empty> <empty> 209 <empty> <empty> 210 <empty> <empty> 211 <empty> <empty> 212 <empty> <empty> 213 <empty> <empty> 214 0x8082c br 0x80820 215 <empty> <empty> 216 <empty> <empty> 217 <empty> <empty> 218 <empty> <empty> 219 <empty> <empty> 220 <empty> <empty> 221 <empty> <empty> 222 <empty> <empty> 223 <empty> <empty> 224 0x80820 nextpc bt 225 <empty> <empty> 226 <empty> <empty> 227 0x80824 flushi bt 228 <empty> <empty> 229 <empty> <empty> 230 <empty> <empty> 231 0x80828 br 0x8082c 232 <empty> <empty> 233 <empty> <empty> 234 <empty> <empty> 235 <empty> <empty> 236 <empty> <empty> 237 <empty> <empty> 238 <empty> <empty> 239 0x8082c br 0x80820 240 <empty> <empty> 241 <empty> <empty> 242 <empty> <empty> 243 <empty> <empty> 244 <empty> <empty> 245 <empty> <empty> 246 <empty> <empty> 247 <empty> <empty> 248 <empty> <empty> 249 0x80820 nextpc bt 250 <empty> <empty> 251 <empty> <empty> 252 0x80824 flushi bt 253 <empty> <empty> 254 <empty> <empty> 255 040412h 0C408301C40412h
чтонибудь говорит кроме того что налицо зацикливание? Сейча поставил триггер на ресет вектор (0x00000000), выкладываю два файла - запись того что происходит в начале инициализации вслучае, если она в дальнейшем прошла успешно, и в случае, если проц завис. Мне кажется тут причина в том что из Onchip mem в каких то случаях происходит некорректное считывание команд. Как такое может быть?
|
|
|
|
|
Apr 1 2010, 11:54
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(KIM @ Apr 1 2010, 17:08)  Мне кажется тут причина в том что из Onchip mem в каких то случаях происходит некорректное считывание команд. Как такое может быть? потому что изначально была некорректная запись (при инициализации)? сделайте objdump программ(в настойках ниос-иде есть галка), чтобы идентифицировать куски кода в районе ресета. потом нужно как-то ухитриться сделать дамп памяти on-chip во время сбоя. тут, возможно, придется сделать контроллер памяти с доступом извне SOPC-системы, чтобы была доступна в момент зависания. или дать одному из ядер доступ к памяти второго(наверное, лучше ее 2-портовой сделать) и ждать пока оно (второе) зависнет. пока неясно, то ли содержимое памяти - лажа, то ли ядро неправильно читает. а, еще надо добавить data master port зависшего ядра в диаграмму signaltap, добавит определенности с памятью.
|
|
|
|
|
Apr 3 2010, 10:17
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 1 2010, 15:54)  потому что изначально была некорректная запись (при инициализации)? сделайте objdump программ(в настойках ниос-иде есть галка), чтобы идентифицировать куски кода в районе ресета. потом нужно как-то ухитриться сделать дамп памяти on-chip во время сбоя. тут, возможно, придется сделать контроллер памяти с доступом извне SOPC-системы, чтобы была доступна в момент зависания. или дать одному из ядер доступ к памяти второго(наверное, лучше ее 2-портовой сделать) и ждать пока оно (второе) зависнет. пока неясно, то ли содержимое памяти - лажа, то ли ядро неправильно читает. а, еще надо добавить data master port зависшего ядра в диаграмму signaltap, добавит определенности с памятью. Для начала я существенно упростил проект, точнее сделал новый, чтобы попытаться понять причину подобных глюков (тот проект был большой, у меня минут 5-6 компилися обычно на core i7). Теперь в проекте присутствует только проц, ончип память, таймер, один PIO на светодиод.(см. картинку) Прога магиет светодиодом. Глюки полцчились абсолютно такие же. Если частота идет с генератора, все норм, если с PLL - то периодически проц не инициируется. Может у меня плата как нить неправильно разведена, мож какие наводки, питание где нить барахлит или что нить в этом роде? Сделал дампы памяти в случае если проц проинитился успешно и в случае, если завис (делал при помощи Quartus In-System Memory Content Editor) - они одинаковые, то есть память инитися нормально. В чем может быть дело? В ошибках при чтении из памяти? Еще заметил одну особенность - если FPGA прогрелась (постояла с включенным питанием подольше - 1-2 минуты), заметно чаще происходит успешная инициализация проца. Цитата(dim99 @ Apr 2 2010, 22:24)  Есть один вариант: когда делал двухъядерную систему в каком-то талмуде говорилось про адреса ядер Nios II и соответствующей on-chip памяти.
Так вот у меня все заработало только тогда, когда вставил одинаковые адреса у ядер и памяти.
Попробуйте сделать, возможно поможет. Не совсем понятно что значит адреса ядер и памяти? Ядро ниос - он же мастер, у него нет адреса, у памяти есть. Или выимеете ввиду что в утилите elf2hex нужно правильный диапазон указывать при генерации заливки для Onchip памяти? Или имеете ввиду разрядность памяти?
Эскизы прикрепленных изображений
|
|
|
|
|
Apr 3 2010, 10:42
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(KIM @ Apr 3 2010, 17:17)  Теперь в проекте присутствует только проц, ончип память, таймер, один PIO на светодиод.(см. картинку) Прога магиет светодиодом. Глюки полцчились абсолютно такие же. Если частота идет с генератора, все норм, если с PLL - то периодически проц не инициируется. Может у меня плата как нить неправильно разведена, мож какие наводки, питание где нить барахлит или что нить в этом роде? как питание делали, особенно PLL? осциллографом/анализатором выходной сигнал смотрели? Цитата Сделал дампы памяти в случае если проц проинитился успешно и в случае, если завис (делал при помощи Quartus In-System Memory Content Editor) - они одинаковые, то есть память инитися нормально. В чем может быть дело? В ошибках при чтении из памяти? в сигналтап добавьте к дизассемблеру еще и сигналы data master, поглядеть как он читает. Цитата Еще заметил одну особенность - если FPGA прогрелась (постояла с включенным питанием подольше - 1-2 минуты), заметно чаще происходит успешная инициализация проца. правда, на питание похоже. а если клок дать с внешнего генератора, мегагерц 100?
|
|
|
|
|
Apr 3 2010, 11:13
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 3 2010, 14:42)  как питание делали, особенно PLL? осциллографом/анализатором выходной сигнал смотрели? Не я делал, я только всего лишь программист ( Цитата(vadimuzzz @ Apr 3 2010, 14:42)  как питание делали, особенно PLL? осциллографом/анализатором выходной сигнал смотрели?
в сигналтап добавьте к дизассемблеру еще и сигналы data master, поглядеть как он читает.
правда, на питание похоже. а если клок дать с внешнего генератора, мегагерц 100? У меня питание идет от USB. может ему элементарно не хватает? Всмысле для FPGA (ep3c55) нехватает
|
|
|
|
|
Apr 3 2010, 11:56
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата У меня питание идет от USB. может ему элементарно не хватает? Всмысле для FPGA (ep3c55) нехватает это может быть совсем не элементарно, пусковой ток у такого кристалла м.б. большим, а обнаружить - довольно сложно за короткий промежуток времени на старте. но таки да, последние сведения внушают сомнения. постарайтесь выяснить у того, кто делал плату, как выполнена схема питания: блокировочные кондеры, стабилизаторы, бусины, не превышен ли лимит шины USB(питание все оттуда берется?). не исключено, что проблема именно с питанием PLL, поэтому я и предложил подать клок высокой частоты с внешнего генератора, а также посмотреть целостность выходного сигнала PLL (можно путем сравнения в рабочем режиме и в случае сбоя).
|
|
|
|
|
Apr 3 2010, 17:10
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 3 2010, 15:56)  поэтому я и предложил подать клок высокой частоты с внешнего генератора подаю клок 66 Мг с генератора, та же фигня с инициализацией Цитата(KIM @ Apr 3 2010, 21:09)  не превышен ли лимит шины USB(питание все оттуда берется?). ДА,полностью оттуда
|
|
|
|
|
Apr 4 2010, 21:29
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
посмотрел внимательно разводку платы и обнаружил 15 ножек питания (3.3V) заведенных на ноги ввода, вывода. Может нестабильность идти от этого? В квартусе стояло необозначенные ноги ставить в As input tri-stated with weak pull-up resistor
|
|
|
|
|
Apr 4 2010, 22:32
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(KIM @ Apr 5 2010, 04:29)  посмотрел внимательно разводку платы и обнаружил 15 ножек питания (3.3V) заведенных на ноги ввода, вывода. Может нестабильность идти от этого? В квартусе стояло необозначенные ноги ставить в As input tri-stated with weak pull-up resistor че-то не понял, прямо с шины 3.3В заходит на i/o пины? зачем это? "As input tri-stated with weak pull-up resistor" - это не страшно, туда можно что угодно подавать. просто вход, подтянутый к плюсу через большой резистор. если проблема с питанием, это должны быть неудачно расположенные конденсаторы, а может стабилизаторы хиленькие, ток не тянут. я правильно понял, что система нестабильно работает и от внешнего генератора на 66 МГц?
|
|
|
|
|
Apr 4 2010, 22:39
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 5 2010, 02:32)  че-то не понял, прямо с шины 3.3В заходит на i/o пины? зачем это? "As input tri-stated with weak pull-up resistor" - это не страшно, туда можно что угодно подавать. просто вход, подтянутый к плюсу через большой резистор. если проблема с питанием, это должны быть неудачно расположенные конденсаторы, а может стабилизаторы хиленькие, ток не тянут. я правильно понял, что система нестабильно работает и от внешнего генератора на 66 МГц? Незнаю зачем, нор это так. Да, от 66 МГц тоже самое проявляется. Я щас попробовал - обозначил те IO ноги на которые питание заведено как выходные, подал на них питание, а остальные - то есть все необозначенные - принудительно поставил в GND. И вроде стабильно стало, только USB контроллер работать перестал (видимо что то необозначенное опустилось в GND и подвесило его както) ЩАсс ним разбирус и буду теститровать дальше. Но по светодиодам видно что процы инитятся норм. Уже раз 30 попробовал
|
|
|
|
|
Apr 4 2010, 23:57
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 5 2010, 03:50)  так нельзя делать, вы два низкоимпедансных источника друг на друга врубили, пожжете буфера. ясно, спасибо за информацию
|
|
|
|
|
Apr 7 2010, 07:55
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Посмтотрел внимательнее, оказывается ноги вводла вывода, на которые заведено питание 3.3В - это ногиVREFB1N0 - VREFB8N1 (всего 16 ног). Так и должно быть? В даташите на циклон указано Цитата If you use a VREF group for voltage-referenced I/O standards, connect the VREF pin for that group to the appropriate voltage level. If you do not use all the VREF groups in the I/O bank for voltage referenced I/O standards, you can use the VREF pin in the unused voltage referenced groups as regular I/O pins. То есть правильно что они на питание заведены. А в квартусе получется их просто надо не обозначать? И еще обнарудилось что все выходы тактовой из pll - PLL#_CLKOUTn и PLL#_CLKOUTp (всего 8 пинов) заведены на землю. Может это как то влиять на корректную работу PLL?
|
|
|
|
|
Apr 7 2010, 11:19
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(KIM @ Apr 7 2010, 15:10)  Посмтотрел внимательнее, оказывается ноги вводла вывода, на которые заведено питание 3.3В - это ногиVREFB1N0 - VREFB8N1 (всего 16 ног). Так и должно быть? То есть правильно что они на питание заведены. А в квартусе получется их просто надо не обозначать? нет, это значит, что они могут быть использованы как VREF, если другие пины в этом банке используют соотв. стандарт i/o. применяется в интерфейсах памяти. м.б. использованы как обычные i/o пины. 3,3В - в любом случае лажа, т.к. даже если они и задуманы как VREF, там другие напряжения. Цитата И еще обнарудилось что все выходы тактовой из pll - PLL#_CLKOUTn и PLL#_CLKOUTp (всего 8 пинов) заведены на землю. Может это как то влиять на корректную работу PLL? опять же эти пины могут быть задействованы как PLL#_CLKOUT, а могут - как обычные i/o. сделаете PLL#_CLKOUTn - будет нехорошо, выходы закорочены на землю. если "As input tri-stated with weak pull-up resistor" - то не опасно, хотя смысл такой схемы стремится к 0. смотрите в первую очередь как сделано питание, судя по тому, что вы описали, там можно ждать ляпов.
|
|
|
|
|
Apr 7 2010, 13:04
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 7 2010, 15:34)  нет, это значит, что они могут быть использованы как VREF, если другие пины в этом банке используют соотв. стандарт i/o. применяется в интерфейсах памяти. м.б. использованы как обычные i/o пины. 3,3В - в любом случае лажа, т.к. даже если они и задуманы как VREF, там другие напряжения.
опять же эти пины могут быть задействованы как PLL#_CLKOUT, а могут - как обычные i/o. сделаете PLL#_CLKOUTn - будет нехорошо, выходы закорочены на землю. если "As input tri-stated with weak pull-up resistor" - то не опасно, хотя смысл такой схемы стремится к 0. смотрите в первую очередь как сделано питание, судя по тому, что вы описали, там можно ждать ляпов. Спасибо огромное вам за помощь.
|
|
|
|
|
Apr 11 2010, 01:48
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(dvladim @ Apr 11 2010, 02:38)  Нет, не пожжет. У Альтеры такое решение было описано для уменьшения помех по питанию, но делать так, конечно, не стоит. можно ссылку? я видел только, что на незадействованные пины подается уровень (подключаются к земле). при этом физически пины на плате никуда не подключены, только внутри кристалла. при этом речь идет не об уменьшении помех по питанию (это мне совсем непонятно, с чего это они уменьшатся?), а об уменьшении ЭМИ при активной работе i/o.
|
|
|
|
|
Apr 27 2010, 11:41
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Проблема дейсвтительно оказалась в цепи питания, народ, что разводил плату все поправил, теперь все отлично работает. Всем спасибо за участие.
|
|
|
|
|
Apr 27 2010, 12:38
|
Участник

Группа: Участник
Сообщений: 53
Регистрация: 25-10-06
Пользователь №: 21 655

|
Цитата(vadimuzzz @ Apr 27 2010, 16:31)  можете поподробнее рассказать как не надо делать? для будущих поколений, так сказать  Я врядли внятно смогу объяснить, я же программист только ) Я сописал "симптомы", наштамповал тестовых прошивок - Nios на разных частотах, с PLL и без PLL и отправил это все дело народу, через две недели привезли рабочие платы. Говорили что то о том что с usb шло 4.7 вольты и присуствови в цепипитания колебания частотой где-то 200 килогец. вот собственно и все
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|