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

 
 
> Нестабильная зарузку NIOS из onchip mem при герерации тактовой на PLL на Cyclone III
KIM
сообщение Mar 31 2010, 06:25
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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), Жду пока стабилизируется, потом снова подаю. Процессор при этом не ресетю, но пробовал и ресетить, не помогало.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 44)
vadimuzzz
сообщение Mar 31 2010, 06:54
Сообщение #2


Гуру
******

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



я с PLL делал так: ALTCLKCTRL не ставил, PLL "locked" заводил на reset процессора (полярность только правильную сделать). на 120МГц заводил, без сбоев.
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 07:16
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 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 использую. Может в этом дело?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2010, 07:39
Сообщение #4


Гуру
******

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



Цитата(KIM @ Mar 31 2010, 13:16) *
Неполучается. Не всегда проходит инициализация. А вы как PLL генерировали? у меня In normal mode, поставил флаг Self reset on lose lock.
Вообще я в первый раз pll использую. Может в этом дело?

Self reset я не ставил, у меня кварцевый опорник. а что значит - инициализация не проходит? если прога в on-chip слинкована и вектор сброса на on-chip нацелен, она вместе с sof загружается. вообще сильно на тайминги смахивает, точно все законстрейнили?
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 07:43
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 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 слинкована правильно, поскольку он все-таки загружается правильно в большинстве случаев и норм работает.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2010, 07:46
Сообщение #6


Гуру
******

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



но сама ПЛИС сконфигурилась? если flash-programmer`ом в ниос потыкать - проц ему виден?
Go to the top of the page
 
+Quote Post
Stewart Little
сообщение Mar 31 2010, 07:53
Сообщение #7


Лентяй
******

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



Тайминги, тайминги и еще раз тайминги.

Цитата(KIM @ Mar 31 2010, 10:25) *
Тайминг аналайзер не выдает ничего плохого -тактовая нормальная, задержек нигде нет.

Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны.
Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили" smile.gif

Второе, на что нужно обратить внимание - используете ли Вы начальные состояния триггеров по умолчанию? При этом можно нарваться на неприятности, когда проект будет работать корректно сразу после загрузки ПЛИС, а вот после сброса ниоса вдруг поведет себя непредсказуемо.
Нужно все триггеры приводить в начальное состояние принудительно.

Еще вопрос как Вы используете PLL - как компонент в SOPC Builder'е или "снаружи" ниосовской системы?


--------------------
Чтобы слова не расходились с делом, нужно молчать и ничего не делать...
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 08:09
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 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) *
Тайминги, тайминги и еще раз тайминги.

Это еще не означает, что проект будет функционировать правильно. Зато это может означать, что у Вас не заданы необходимые констрейны.
Как в законах Мерфи - "Если Вам кажется, что Ваш проект работает - значит Вы чего-то не заметили" smile.gif


Мой файл 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
Причина редактирования: Оформление кода
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2010, 08:17
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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 (нулем сбрасывается)
инвертор не нужен, напрямую.
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 08:22
Сообщение #10


Участник
*

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



vadimuzzz
Ясно,у меня так и было
Причина редактирования: Избыточное цитирование
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2010, 08:50
Сообщение #11


Гуру
******

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



ну, кроме таймингов на ум ничего не приходит. выкладывайте репорт. картинку в SOPC тоже давайте
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 09:39
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 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
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  usb_nios_input_chip.sta.rar ( 44.61 килобайт ) Кол-во скачиваний: 15
 
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Mar 31 2010, 11:47
Сообщение #13


Гуру
******

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



так, чтобы последние варнинги убрать добавьте derive_clock_uncertainty:
Код
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
]
derive_clock_uncertainty

это даст более точную оценку Fmax.
про board_clk не понял, он имеет какое-то отношение к системе? да, еще он про jtag-овский клок ругается(altera_reserved_tck), у него наверное констрейн уже есть, посмотрите в папке проекта
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 12:36
Сообщение #14


Участник
*

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



Цитата(vadimuzzz @ Mar 31 2010, 15:47) *
про board_clk не понял, он имеет какое-то отношение к системе?


В данный момент не имеет, это у меня генератор на 66 МГц стоит на плате, его я пока не использую, раньше использовал, видимо упоминания остались
Go to the top of the page
 
+Quote Post
KIM
сообщение Mar 31 2010, 14:00
Сообщение #15


Участник
*

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



в общем ситауция не поменялась, все так же то рузится то не грузится. С altera_reserved_tck не разобрался, перевернул все *.sdc в проекте, нигде не указывается, варнинг так и есть. Остальные варнинги пропали, Fmax для pll_clk - 108 Мгц.
Go to the top of the page
 
+Quote Post
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
KIM
сообщение Apr 4 2010, 21:29
Сообщение #31


Участник
*

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



посмотрел внимательно разводку платы и обнаружил 15 ножек питания (3.3V) заведенных на ноги ввода, вывода. Может нестабильность идти от этого? В квартусе стояло необозначенные ноги ставить в As input tri-stated with weak pull-up resistor
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 4 2010, 22:32
Сообщение #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 МГц?
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 4 2010, 22:39
Сообщение #33


Участник
*

Группа: Участник
Сообщений: 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 попробовал
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 4 2010, 23:50
Сообщение #34


Гуру
******

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



Цитата(KIM @ Apr 5 2010, 05:39) *
Я щас попробовал - обозначил те IO ноги на которые питание заведено как выходные, подал на них питание

так нельзя делать, вы два низкоимпедансных источника друг на друга врубили, пожжете буфера.
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 4 2010, 23:57
Сообщение #35


Участник
*

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



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


ясно, спасибо за информацию
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 7 2010, 07:55
Сообщение #36


Участник
*

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


Гуру
******

Группа: Свой
Сообщений: 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. смотрите в первую очередь как сделано питание, судя по тому, что вы описали, там можно ждать ляпов.
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 7 2010, 13:04
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 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. смотрите в первую очередь как сделано питание, судя по тому, что вы описали, там можно ждать ляпов.


Спасибо огромное вам за помощь.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Apr 10 2010, 19:23
Сообщение #39


Знающий
****

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



Цитата(vadimuzzz @ Apr 5 2010, 03:05) *
так нельзя делать, вы два низкоимпедансных источника друг на друга врубили, пожжете буфера.

Нет, не пожжет. У Альтеры такое решение было описано для уменьшения помех по питанию, но делать так, конечно, не стоит.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 11 2010, 01:48
Сообщение #40


Гуру
******

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



Цитата(dvladim @ Apr 11 2010, 02:38) *
Нет, не пожжет. У Альтеры такое решение было описано для уменьшения помех по питанию, но делать так, конечно, не стоит.

можно ссылку? я видел только, что на незадействованные пины подается уровень (подключаются к земле). при этом физически пины на плате никуда не подключены, только внутри кристалла. при этом речь идет не об уменьшении помех по питанию (это мне совсем непонятно, с чего это они уменьшатся?), а об уменьшении ЭМИ при активной работе i/o.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Apr 12 2010, 19:41
Сообщение #41


Знающий
****

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



Цитата(vadimuzzz @ Apr 11 2010, 05:03) *
можно ссылку? я видел только, что на незадействованные пины подается уровень (подключаются к земле). при этом физически пины на плате никуда не подключены, только внутри кристалла. при этом речь идет не об уменьшении помех по питанию (это мне совсем непонятно, с чего это они уменьшатся?), а об уменьшении ЭМИ при активной работе i/o.

Одинаковый уровень с обеих сторон: т.е. на землю в проекте и на плате. Такие ноги работают как дополнительная земля. Ссылку искать не буду.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 12 2010, 22:35
Сообщение #42


Гуру
******

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



да, нашел. оставлю тут для памятки:
What is Altera's recommendation for configuring unused I/O pins?
Do unused pins reserved "as output driving ground" need to be connected to a ground pin on the board?
Can I connect unused I/O pins to VCC or ground via a 0 Ohm resistor?
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 27 2010, 11:41
Сообщение #43


Участник
*

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



Проблема дейсвтительно оказалась в цепи питания, народ, что разводил плату все поправил, теперь все отлично работает. Всем спасибо за участие.
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 27 2010, 12:31
Сообщение #44


Гуру
******

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



Цитата(KIM @ Apr 27 2010, 18:41) *
Проблема дейсвтительно оказалась в цепи питания

можете поподробнее рассказать как не надо делать? для будущих поколений, так сказать smile.gif
Go to the top of the page
 
+Quote Post
KIM
сообщение Apr 27 2010, 12:38
Сообщение #45


Участник
*

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



Цитата(vadimuzzz @ Apr 27 2010, 16:31) *
можете поподробнее рассказать как не надо делать? для будущих поколений, так сказать smile.gif

Я врядли внятно смогу объяснить, я же программист только ) Я сописал "симптомы", наштамповал тестовых прошивок - Nios на разных частотах, с PLL и без PLL и отправил это все дело народу, через две недели привезли рабочие платы. Говорили что то о том что с usb шло 4.7 вольты и присуствови в цепипитания колебания частотой где-то 200 килогец. вот собственно и все
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 Текстовая версия Сейчас: 21st July 2025 - 18:05
Рейтинг@Mail.ru


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