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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III
vadimuzzz
сообщение Mar 31 2010, 14:05
Сообщение #16


Гуру
******

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



еще такой вариант: поиграть выходной частотой PLL, когда начинаются сбои. это в дополнение к вышеупомянутым поправкам. а что в i/o не законстрейнено?
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 1 2010, 06:59
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 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, который отлично работает
Go to the top of the page
 
+Quote Post
dvladim
сообщение Apr 1 2010, 07:16
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(KIM @ Apr 1 2010, 09:59) *
С частотой поиграл: результат примерно следующий - гдето до 70 МГц все вроде нормально, после 70 начинаются нестабильность с загрузкой. Повторяюсь - только с загрузкой, если ниосы прогружаются они работают отлично.

Если вся программа в on-chip памяти, то о какой загрузке ниоса может идти речь? Или у вас прошивка на этой же частоте грузится?
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 1 2010, 07:20
Сообщение #19


Участник
*

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



Цитата(dvladim @ Apr 1 2010, 11:16) *
Если вся программа в on-chip памяти, то о какой загрузке ниоса может идти речь? Или у вас прошивка на этой же частоте грузится?


Вся программа в Onchip памяти, под загрузкой я понимаю инициализацию процессора, передачу управления в функцию main, где первым делом устанавливается в '1' PIO, по которомы снаружи SOPC системы я понимаю, успешно ли иниуиировался процесоор или нет. Так вотесли схема работает на 96 МГц это происходит невсегда. Хотя по таймингам все должно быть нормально. Но если всетаки в main управление попадет, все работает отлично и очень долго
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 1 2010, 08:08
Сообщение #20


Гуру
******

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



добавьте SignalTap( http://www.altera.com/literature/an/an446.pdf ) и посмотрите, чем занимается проц во время сбоя. правда я не знаю, как оно в двухпроцессорной конфигурации выглядит.
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 1 2010, 08:16
Сообщение #21


Участник
*

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



vadimuzzz
Буду пробовать разбираться, спасибо

Сообщение отредактировал Omen_13 - Apr 1 2010, 15:25
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 1 2010, 11:08
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 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 в каких то случаях происходит некорректное считывание команд. Как такое может быть?
Прикрепленные файлы
Прикрепленный файл  good_load.txt ( 12.23 килобайт ) Кол-во скачиваний: 50
Прикрепленный файл  bad_load.txt ( 12.49 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 1 2010, 11:54
Сообщение #23


Гуру
******

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



Цитата(KIM @ Apr 1 2010, 17:08) *
Мне кажется тут причина в том что из Onchip mem в каких то случаях происходит некорректное считывание команд. Как такое может быть?

потому что изначально была некорректная запись (при инициализации)? сделайте objdump программ(в настойках ниос-иде есть галка), чтобы идентифицировать куски кода в районе ресета. потом нужно как-то ухитриться сделать дамп памяти on-chip во время сбоя. тут, возможно, придется сделать контроллер памяти с доступом извне SOPC-системы, чтобы была доступна в момент зависания. или дать одному из ядер доступ к памяти второго(наверное, лучше ее 2-портовой сделать) и ждать пока оно (второе) зависнет. пока неясно, то ли содержимое памяти - лажа, то ли ядро неправильно читает. а, еще надо добавить data master port зависшего ядра в диаграмму signaltap, добавит определенности с памятью.
Go to the top of the page
 
+Quote Post
dim99
сообщение Apr 2 2010, 18:24
Сообщение #24


Частый гость
**

Группа: Свой
Сообщений: 120
Регистрация: 8-02-09
Из: Мытищи
Пользователь №: 44 580



Есть один вариант:
когда делал двухъядерную систему в каком-то талмуде говорилось про адреса ядер Nios II и соответствующей on-chip памяти.

Так вот у меня все заработало только тогда, когда вставил одинаковые адреса у ядер и памяти.

Попробуйте сделать, возможно поможет.
Go to the top of the page
 
+Quote Post
Аматер
сообщение Apr 2 2010, 21:28
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Я запускал ниос самый навороченный из внутренней памяти. Частоту на него подавал с PLL, 100 MHz. PLL запускал от внешнего генератора 50 MHz. Все было нормально.
Кстати попытался в том же проекте использовать ALTCLKCTRL но эта функция у меня почему то по частоте не проходила на 200 MHz. Пробовал ниос вообще не сбрасывать, он все равно работал, но сейчас сбрасываю для надежности. В проекте ставил простейший класический анализ времени.
Пытался использовать SignalTap, но он почему то глючил по черному на 100 MHz.

Сообщение отредактировал Аматер - Apr 2 2010, 21:30
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 3 2010, 10:17
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 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 памяти? Или имеете ввиду разрядность памяти?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 3 2010, 10:42
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 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?
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 3 2010, 11:13
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 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) нехватает
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 3 2010, 11:56
Сообщение #29


Гуру
******

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



Цитата
У меня питание идет от USB. может ему элементарно не хватает?
Всмысле для FPGA (ep3c55) нехватает

это может быть совсем не элементарно, пусковой ток у такого кристалла м.б. большим, а обнаружить - довольно сложно за короткий промежуток времени на старте. но таки да, последние сведения внушают сомнения. постарайтесь выяснить у того, кто делал плату, как выполнена схема питания: блокировочные кондеры, стабилизаторы, бусины, не превышен ли лимит шины USB(питание все оттуда берется?). не исключено, что проблема именно с питанием PLL, поэтому я и предложил подать клок высокой частоты с внешнего генератора, а также посмотреть целостность выходного сигнала PLL (можно путем сравнения в рабочем режиме и в случае сбоя).
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 3 2010, 17:10
Сообщение #30


Участник
*

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



Цитата(vadimuzzz @ Apr 3 2010, 15:56) *
поэтому я и предложил подать клок высокой частоты с внешнего генератора


подаю клок 66 Мг с генератора, та же фигня с инициализацией


Цитата(KIM @ Apr 3 2010, 21:09) *
не превышен ли лимит шины USB(питание все оттуда берется?).



ДА,полностью оттуда
Go to the top of the page
 
+Quote Post

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

 


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


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