|
|
  |
Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III |
|
|
|
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(питание все оттуда берется?). ДА,полностью оттуда
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|