|
Нестабильная зарузку 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), Жду пока стабилизируется, потом снова подаю. Процессор при этом не ресетю, но пробовал и ресетить, не помогало.
|
|
|
|
|
 |
Ответов
|
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)  так нельзя делать, вы два низкоимпедансных источника друг на друга врубили, пожжете буфера. ясно, спасибо за информацию
|
|
|
|
Сообщений в этой теме
KIM Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III Mar 31 2010, 06:25 vadimuzzz я с PLL делал так: ALTCLKCTRL не ставил, PLL ... Mar 31 2010, 06:54 KIM Цитата(vadimuzzz @ Mar 31 2010, 10:54) я ... Mar 31 2010, 07:16  vadimuzzz Цитата(KIM @ Mar 31 2010, 13:16) Неполуча... Mar 31 2010, 07:39   KIM Цитата(vadimuzzz @ Mar 31 2010, 11:39) Se... Mar 31 2010, 07:43    vadimuzzz но сама ПЛИС сконфигурилась? если flash-programmer... Mar 31 2010, 07:46 Stewart Little Тайминги, тайминги и еще раз тайминги.
Цитата(KIM... Mar 31 2010, 07:53 KIM Цитатавообще сильно на тайминги смахивает, точно в... Mar 31 2010, 08:09 vadimuzzz ЦитатаТайминг аналайзер квартуса ни выдает ничего ... Mar 31 2010, 08:17 KIM vadimuzzz
Ясно,у меня так и было Mar 31 2010, 08:22  KIM Цитата(KIM @ Mar 31 2010, 12:22) warnings... Mar 31 2010, 09:39 vadimuzzz ну, кроме таймингов на ум ничего не приходит. выкл... Mar 31 2010, 08:50 vadimuzzz так, чтобы последние варнинги убрать добавьте deri... Mar 31 2010, 11:47 KIM Цитата(vadimuzzz @ Mar 31 2010, 15:47) пр... Mar 31 2010, 12:36 KIM в общем ситауция не поменялась, все так же то рузи... Mar 31 2010, 14:00 vadimuzzz еще такой вариант: поиграть выходной частотой PLL,... Mar 31 2010, 14:05 KIM Цитата(vadimuzzz @ Mar 31 2010, 18:05) ещ... Apr 1 2010, 06:59      dim99 Есть один вариант:
когда делал двухъядерную систем... Apr 2 2010, 18:24 Аматер Я запускал ниос самый навороченный из внутренней п... Apr 2 2010, 21:28 KIM Посмтотрел внимательнее, оказывается ноги вводла в... Apr 7 2010, 07:55 vadimuzzz Цитата(KIM @ Apr 7 2010, 15:10) Посмтотре... Apr 7 2010, 11:19  KIM Цитата(vadimuzzz @ Apr 7 2010, 15:34) нет... Apr 7 2010, 13:04 dvladim Цитата(vadimuzzz @ Apr 5 2010, 03:05) так... Apr 10 2010, 19:23 vadimuzzz Цитата(dvladim @ Apr 11 2010, 02:38) Нет,... Apr 11 2010, 01:48 dvladim Цитата(vadimuzzz @ Apr 11 2010, 05:03) мо... Apr 12 2010, 19:41 vadimuzzz да, нашел. оставлю тут для памятки:
What is Altera... Apr 12 2010, 22:35 KIM Проблема дейсвтительно оказалась в цепи питания, н... Apr 27 2010, 11:41 vadimuzzz Цитата(KIM @ Apr 27 2010, 18:41) Проблема... Apr 27 2010, 12:31  KIM Цитата(vadimuzzz @ Apr 27 2010, 16:31) мо... Apr 27 2010, 12:38
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|