Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: NIOS для начинающих
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
juvf
Цитата(Reanimator++ @ May 14 2011, 15:39) *
Тогда проверяйте что имя файла прописанное в свойствах ончип в сопц билдере (параметр memory initialization file) сопадает с именем того .hex файла который вы подсовываете квартусу после ниос иде.
В принципе если ничего не трогать то они автоматом совпадают, как у naliwator-а.

Это я обнаружил. В общем по умолчанию для ончип-а sopc билдер дал имя onchip_memory2_0. Начал урок по своему загрузчику из an458.pdf - переименовал ончип в boot_rom. Потом в квартусе при компиляции среди over 9000 ворнингов не сразу заметил что квартус пытается подцепить onchip_memory2_0.hex. Ни как не мог ему объяснить что теперь нужен boot_rom.hex. Стояла галка Use smart compilation. Снял её и квартус сразу понял что теперь нужен boot_rom.hex. Ну ещё был ворнинг что найден boot_rom.v в разработке, но этот файл не является файлом проекта. Ручками удалил из проекта onchip_memory2_0.v и добавил boot_rom.v. Ворнингов стало на пару меньше, но пока при ресете он чип не инится моим хексом(или хекс кривой). Хотя в инфо вроде все красиво:
Код
Info: Instantiated megafunction "cpuNew:inst3|boot_rom:the_boot_rom|altsyncram:the_altsyncram" with the following parameter:
    Info: Parameter "byte_size" = "8"
    Info: Parameter "init_file" = "boot_rom.hex"
    Info: Parameter "lpm_type" = "altsyncram"
    Info: Parameter "maximum_depth" = "9000"
    Info: Parameter "numwords_a" = "9000"
    Info: Parameter "operation_mode" = "SINGLE_PORT"
    Info: Parameter "outdata_reg_a" = "UNREGISTERED"
    Info: Parameter "ram_block_type" = "AUTO"
    Info: Parameter "read_during_write_mode_mixed_ports" = "DONT_CARE"
    Info: Parameter "width_a" = "32"
    Info: Parameter "width_byteena_a" = "4"
    Info: Parameter "widthad_a" = "14"
juvf
Обратно поставил галочку Use smart compilation - при компиляции снова получаю ворнинги
Код
Warning: Can't find design file epcs_flash_controller_boot_rom.hex
Warning: Can't find design file onchip_memory2_0.hex
Warning: Can't find design file epcs_flash_controller_boot_rom.hex
Warning: Can't find design file onchip_memory2_0.hex
Warning: Can't find design file epcs_flash_controller_boot_rom.hex
Warning: Can't find design file onchip_memory2_0.hex
Info: *******************************************************************
Info: Running Quartus II Analysis & Synthesis
    Info: Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version
    Info: Processing started: Mon May 16 10:13:05 2011
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off TestFrontEnd -c topLevel
Info: Parallel compilation is enabled and will use 4 of the 4 processors detected
Info: Found 1 design units, including 1 entities, in source file boot_rom.v
    Info: Found entity 1: boot_rom
Info: Found 2 design units, including 2 entities, in source file sdram.v
    Info: Found entity 1: sdram_input_efifo_module
    Info: Found entity 2: sdram
Info: Found 1 design units, including 1 entities, in source file pllsdram.v
    Info: Found entity 1: pllSdram
Info: Found 2 design units, including 2 entities, in source file epcs_flash_controller_0.v
    Info: Found entity 1: epcs_flash_controller_0_sub
    Info: Found entity 2: epcs_flash_controller_0
Info: Found 1 design units, including 1 entities, in source file cpu_0_test_bench.v
    Info: Found entity 1: cpu_0_test_bench
Info: Found 7 design units, including 7 entities, in source file uart_0.v
    Info: Found entity 1: uart_0_log_module
    Info: Found entity 2: uart_0_tx
    Info: Found entity 3: uart_0_rx_stimulus_source_character_source_rom_module
    Info: Found entity 4: uart_0_rx_stimulus_source
    Info: Found entity 5: uart_0_rx
    Info: Found entity 6: uart_0_regs
    Info: Found entity 7: uart_0
От куда этот onchip_memory2_0.hex? Почему квартус его хочет? в sopc билдере ончип раньше именовался onchip_memory2_0, но сейчас именуется boot_rom и инициализируется файлом по умолчанию boot_rom.hex.
И при компиляции всегда компиляется весь проект. Поечему? Скомпилял проект, тут же нажал компилять - опять все по новой. А должен вроде смарт понять что не было изменений и не компилять ни чего.

naliwator в моем выхлопе нет таких пунктов как у тебя
Код
Running Quartus II MIF/HEX Update
тоже не понятно почему?
naliwator
Цитата(juvf @ May 16 2011, 07:08) *
переименовал ончип в boot_rom.
Ну ещё был ворнинг что найден boot_rom.v в разработке, но этот файл не является файлом проекта. Ручками удалил из проекта onchip_memory2_0.v и добавил boot_rom.v.

Вы поменяли исходные файлы проекта, поэтому
Цитата
Код
Info: Running Quartus II Analysis & Synthesis
    Info: Version 10.1 Build 197 01/19/2011 Service Pack 1 SJ Full Version
    Info: Processing started: Mon May 16 10:13:05 2011

и вы не можете видеть
Цитата
Код
Running Quartus II MIF/HEX Update

Собственно, почему на кошках не хотите потренироваться?
juvf
Цитата
Собственно, почему на кошках не хотите потренироваться?
Да на кошках наверно с полпинка заведется. У меня тяжелый проект, которому нужно сделать ончип загрузчик. Можно сделать кошку и в неё заново проект собирать, все пины переназначать..... Но с этим нужно разобраться.

В общем получилось. Как - не могу понять. В прицепе можно на этом остановиться и писать программу дальше. Но..... Сейчас в сопц ончип именуется onchip_memory2_0. Соответственно в проекте есть файл onchip_memory2_0.v и ниос иде делает onchip_memory2_0.hex который скармливаю в sof файл. удалил из проекта файлы boot_rom.v. Удалил с диска файлы boot_rom.v и boot_rom.hex. Но теперь другие ворнинги:
Код
Warning: Can't find design file boot_rom.v
Warning: Can't find design file boot_rom.hex


Не могу понять как в квартусе управлять проектом? Почему квартус ищет файлы boot_rom? Где-то в записях какихто исходников очевидно есть ссылки на них. Но где? Как ими управлять этими ссылками/настройками?
naliwator
Цитата(juvf @ May 16 2011, 12:15) *
Удалил с диска файлы boot_rom.v и boot_rom.hex. Но теперь другие ворнинги:
Код
Warning: Can't find design file boot_rom.v
Warning: Can't find design file boot_rom.hex


Не могу понять как в квартусе управлять проектом? Почему квартус ищет файлы boot_rom? Где-то в записях какихто исходников очевидно есть ссылки на них. Но где? Как ими управлять этими ссылками/настройками?

Assignments -> Settings -> Files
Reanimator++
Перед тем как делать большой проект лучше разобраться ху из ху. Вы путаете кислое с пресным.
Файл onchip_memory2_0.v является выхлопом генератора SOPC билдера и представляет из себя код нужной вам памяти на верилоге (иногда шифрованый). Собственно на его создании участие SOPC билдера заканчивается, дальше этот файл цепляет квартус и пытается компилировать.
Где-то внутри этого файла стоит ссылка на файл onchip_memory2_0.hex, либо любой другой, который вы укажете в SOPC билдере - см рисунок. При компиляции квартус пытается искать именно этот файл. А не какой либо другой. По умолчанию имя .hex файла равно имени .v файла и равно имени модуля в SOPC. Nios IDE по умолчанию генерит файл, прописанный в SOPC билдере. Просто сделайте чтобы они совпадали.
juvf
Цитата(naliwator @ May 16 2011, 14:31) *
Assignments -> Settings -> Files

Первым делом туда полез

Цитата(Reanimator++ @ May 16 2011, 15:05) *
Перед тем как делать большой проект лучше разобраться ху из ху. Вы путаете кислое с пресным.
Файл onchip_memory2_0.v является выхлопом генератора SOPC билдера и представляет из себя код нужной вам памяти на верилоге (иногда шифрованый). Собственно на его создании участие SOPC билдера заканчивается, дальше этот файл цепляет квартус и пытается компилировать.
Где-то внутри этого файла стоит ссылка на файл onchip_memory2_0.hex, либо любой другой, который вы укажете в SOPC билдере - см рисунок. При компиляции квартус пытается искать именно этот файл. А не какой либо другой. По умолчанию имя .hex файла равно имени .v файла и равно имени модуля в SOPC. Nios IDE по умолчанию генерит файл, прописанный в SOPC билдере. Просто сделайте чтобы они совпадали.

Это я все понимаю. вот мои настройки ончипа. Но почему квартус просит файлы boot_rom.v и boot_rom.hex? Может, чтоб куартус забыл про boot_rom нужно сделать clearProject или rebuildAll? Но не могу такого найти в квартусе.
Reanimator++
А в сопц билдере генерацию делали после всех изменений?
Что написано в самом .v файле? Я там нашел строку - the_altsyncram.init_file = "onchip_memory.hex",
juvf
Цитата(Reanimator++ @ May 16 2011, 15:22) *
А в сопц билдере генерацию делали после всех изменений?
Что написано в самом .v файле? Я там нашел строку - the_altsyncram.init_file = "onchip_memory.hex",

Конечно делал. Есть у меня такая строчка. Вот ещё что интересно - сделал поиск по всем файлам проекта текст "boot_rom.hex" .... вот что нашлось (см рис). В epcs_flash_controller.v нет boot_rom.hex, там найден epcs_flash_controller_boot_rom.hex
*.rpt - это выходные отчеты. *.qmsg - тоже. Почему квартус их просит? ???
vadimuzzz
Цитата(juvf @ May 16 2011, 16:50) *
*.rpt - это выходные отчеты. *.qmsg - тоже. Почему квартус их просит? ???

он не просит, а пишет туда о проблемах. не может найти требуемые файлы.
juvf
Цитата(vadimuzzz @ May 16 2011, 15:53) *
он не просит, а пишет туда о проблемах. не может найти требуемые файлы.
Ну это понятно, я и говорю выходные. Например вот что есть в файле topLevel.map.rpt
Код
D:/Work/Quartus/testBoot/db/cmpr_ifc.tdf                                   ;
; D:/Work/Quartus/testBoot/db/cntr_p1j.tdf                      ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/cntr_p1j.tdf                                   ;
; D:/Work/Quartus/testBoot/db/cmpr_efc.tdf                      ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/cmpr_efc.tdf                                   ;
; boot_rom.v                                                    ; yes            ; Auto-Found Verilog HDL File           ; boot_rom.v                                                                 ;
; D:/Work/Quartus/testBoot/db/altsyncram_7gb1.tdf               ; yes            ; Auto-Generated Megafunction           ; D:/Work/Quartus/testBoot/db/altsyncram_7gb1.tdf                            ;
; boot_rom.hex                                                  ; yes            ; Auto-Found Memory Initialization File ; boot_rom.hex
Кто-нибудь может из этого понять от куда ноги растут? От куда boot_rom берётся?
naliwator
Цитата(juvf @ May 13 2011, 10:40) *
Пробую свой загрузчик сделать по an458.pdf. Вроде все элементы танца сделал, всё залил - в итоге при включении борды моя прога не работает.

Решил постепенно понять что к чему. Создал простой проект хелловорд. разместил все секции в ончип. ресет ниоса на epcs контроллер (на загрузчик по умолчанию). вектор прерыванию на ончип. все собрал, залил в борду. Работает, т.е. при включении в консоль выхлапывает халоворд. Теперь нужно чтоб этот халоворд был аппаратно вшит в ончип. Т.е. делаю следующее

1 в SOPC билдере вектор ресета на ончип
2 указываю ончип инициализировать файлом boot_rom.hex
3 собираю ниос

Это хвост модификаций вашего проекта.
Отследите, где и какая память до сих пор ссылается на него.
juvf
Цитата(naliwator @ May 16 2011, 16:06) *
Это хвост модификаций вашего проекта.
Отследите, где и какая память до сих пор ссылается на него.

как бы отследить то? В сопц ни кто не ссылается. По крайней мере в окошках не видно. Удалил всю папку dd - не помогло. по файлам текст поискал - нашел boot_rom только в выходных файлах. sad.gif
naliwator
Цитата(juvf @ May 16 2011, 16:41) *
как бы отследить то? В сопц ни кто не ссылается. По крайней мере в окошках не видно. Удалил всю папку dd - не помогло. по файлам текст поискал - нашел boot_rom только в выходных файлах. sad.gif

Вкладка Tasks -> Analysis & Synthesis -> View Report
далее ищите RAM Summary. Вас должно интересовать, что за память и какой MIF используется.
juvf
Цитата(naliwator @ May 16 2011, 18:57) *
Вкладка Tasks -> Analysis & Synthesis -> View Report
далее ищите RAM Summary. Вас должно интересовать, что за память и какой MIF используется.
Сегодня утром включил комп, запустил компиляцию - нету этих boot_rom больше. Решил всётаки разобраться что это было. переименовал ончипПамять в bootRom. переключил ресеты на bootRom, проверил чтоб инициализация была bootRom.hex. Пересобрал проект - вроде всё гладко. Пересобрал BSP и прогу для ниоса, сгенерировал новый hex, опять пересобрал в квартусе проект, залил sof и вуаля - всё работает и нет ворнингов. Ну вот оно вроде счатье. Удалил уже ни кому не нужные onchip_memory2_0.v и onchip_memory2_0.hex. При очередной сборке посыпались варнинги что нету onchip_memory2_0.hex. Опять тоже самое, опять какой-то хвост. опять все перепроверил, поползал по всем файлам, удалил папку dd, проверил репорт компиляции - не могу понять от куда квартус решил что ему нужно onchip_memory2_0.hex?

naliwator, сейчас в RAM Summary нет ни каких упоминаний про onchip_memory2_0.hex. Более того, квартус пытается найти их до того, как запустится Analysis & Synthesis, см рис. Походу баг в квартусе (10.1 + sp1). Попробуйте кто-нибудь переименовать ончип, сгенерировать новые v и hex, а потом удалить старые как не нужные.

Походу дальше нет смысла искать от куда эти ворненги, главное что борда заработала.
Всем спасибо за помощь!!!
naliwator
Цитата(juvf @ May 17 2011, 10:21) *
naliwator, сейчас в RAM Summary нет ни каких упоминаний про onchip_memory2_0.hex. Более того, квартус пытается найти их до того, как запустится Analysis & Synthesis, см рис. Походу баг в квартусе (10.1 + sp1). Попробуйте кто-нибудь переименовать ончип, сгенерировать новые v и hex, а потом удалить старые как не нужные.

Походу дальше нет смысла искать от куда эти ворненги, главное что борда заработала.
Всем спасибо за помощь!!!


Попробовал.
1. Переименовал память и .hex файл, сгенерировал систему.
2. Удалил с компьютера .v и .hex файлы предшествовавшей памяти.
3. Запустил полную компиляцию. Действительно, компилятор пытается найти удалённый .hex файл.
4. Удалил bsp проект с диска и собрал всё заново.
5. Получил .hex файл с новым именем, приложил его к проекту.
6. Запустил компиляцию. Печально, компилятор снова ссылается на не существующий .hex файл и запускает полную компиляцию вместо умной.
7. Смотрю в отчёт компилятора и нахожу, что в настройках компиляции остаются не существующие файлы.
8. Пробую удалить назначения проекта (Remove Assignents) и запускаю компиляцию - безрезультатно.
9. Папка инкрементной компиляции может хранить списки соединений (netlist) успешных компиляций. Эту папку рекомендовано удалять, когда нужно вернуться к исходникам. Удаляю папку. Компилирую. Закрываю Quartus II.
10. Открываю Quartus II и проект. Жму компиляцию - умная компиляция работает, т.к. .hex файл не был изменён, то время - 0, предупреждений - нет.
11. Меняю .hex файл, подсовываю проекту. Жму компиляцию - умная компиляция работает, предупреждений - нет.
juvf
ага, тоже заработало. только в 10-ом пункте после удаления папки инкрементной_db во время компиляции по прежнему были ворненги. закрыл открыл квартус - пропали. Вчера чистил проект удалил db папку, возможно и inc_db тоже удалил, но не перезапускал квартус. Спасибо за помощь!!!
juvf
не могу найти описание векторов прерывания в NIOS II. Например в SOPC билдере в процессоре указал вектор сброса на onchip-memory со смещением 0х00. Адрес onchip-memory = 0х1810000. Контроллер прерываний не добавлял. Что разместится по адресам 0х1810000 ... 0х1810020? Есть у альтеры описание векторов прерывания?
naliwator
Цитата(juvf @ May 23 2011, 13:32) *
не могу найти описание векторов прерывания в NIOS II.


Посмотрите здесь.

Цитата
Например в SOPC билдере в процессоре указал вектор сброса на onchip-memory со смещением 0х00. Адрес onchip-memory = 0х1810000. Контроллер прерываний не добавлял. Что разместится по адресам 0х1810000 ... 0х1810020? Есть у альтеры описание векторов прерывания?


Всё верно, внутренний контроллер прерываний поддерживает до 32 источников прерываний. Приоритет 0 - наивысший.
juvf
Цитата(naliwator @ May 23 2011, 15:40) *
Посмотрите здесь.


Посмотрел..... не нашел... Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит? Как работает внутренний контроллер прерываний?
naliwator
Цитата(juvf @ May 23 2011, 13:58) *
Как работает внутренний контроллер прерываний?

Устройство работы
Процессор Nios II может откликаться на исключения, включая программные исключения и аппаратные прерывания. Когда процессор Nios II отвечает на исключение, он выполняет следующие задачи:
1. Сохраняет регистр status в estatus. Это означает, что если разрешены аппаратные прерывания, то установлен бит PIE в регистре estatus.
2. Запрещает аппаратные прерывания.
3. Сохраняет следующий адрес исполнения в ea (r29).
4. Передаёт контроль на соответствующий адрес исключения, то есть:
Программное исключение или внутреннее аппаратное прерывания – на основной адрес исключения процессора Nios II.
Внешнее аппаратное прерывание – заданный для этого устройства адрес прерывания.

Работа внутреннего контроллера прерываний
В IIC доступно до 32 независимых сигналов аппаратных прерываний. Эти сигналы прерываний позволяют программно задавать приоритет прерываний, даже если сами по себе сигналы прерываний не имеют свойства приоритета.
В IIC исключения Nios II являются невекторными. Поэтому один адрес исключений принимает контроль над всеми типами исключений. Основной направитель (funnel) исключений по этому адресу должен определять тип программного исключения или аппаратного прерывания.
juvf
это я прочитал. это понятно. не понятно причем тут адреса вектора сброса 0х1810000...0х1810020?

Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит?
Stewart Little
Цитата(juvf @ May 23 2011, 13:58) *
Посмотрел..... не нашел... Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит? Как работает внутренний контроллер прерываний?

"Да Вы лентяй, Антуан!" (це)
1. Читайте описание программной модели Nuios II: http://www.altera.com/literature/hb/nios2/n2cpu_nii51003.pdf (или ищите перевод на сайте ув. naliwator'а).
2. Как работает внутренний контроллер прерываний, описано тут : http://www.alterawiki.com/wiki/IRQ_Code

bb-offtopic.gif Если бы Вы хотя бы часть того времени, что потратили на писанину сюда, отвели бы на чтение мануалов, пользы для дела было бы больше.
juvf
Цитата
1. Читайте описание программной модели Nuios II: http://www.altera.com/literature/hb/nios2/n2cpu_nii51003.pdf
эээ..... ну я так понял что в этих 32-х байтах вектора сброса исполняемый код. У меня есть машинный код, а как можно посмотреть ассемблер этого кода? Не могу в Nios II IDE найти View->Disassembler ((
naliwator
Цитата(juvf @ May 23 2011, 15:10) *
эээ..... ну я так понял что в этих 32-х байтах вектора сброса исполняемый код. У меня есть машинный код, а как можно посмотреть ассемблер этого кода? Не могу в Nios II IDE найти View->Disassembler ((

juvf
Window->Show View->Disassembler
MaxLucky
Доброго время суток!

Не подскажете, как избавится от time-limited ядра NIOS в Q11.0. А то, для Q9.1 все было хорошо, а здесь не катит rolleyes.gif .
Заранее благодарен.
naliwator
Цитата(MaxLucky @ May 27 2011, 14:39) *
Не подскажете, как избавится от time-limited ядра NIOS в Q11.0. А то, для Q9.1 все было хорошо, а здесь не катит rolleyes.gif .

Смотрите лицензию.
MaxLucky
Лицензия, конечно, вещь не очень дорогая (для NIOSа), если удалось бы уговорить начальство. Но самому выкладывать 500$ + НДС как-то грустно. В принципе, меня устроило бы и ограничение по времени для тестирования, но Q11.0 не позволяет создавать .rbf файл и прочие, только .sof.
Kuzmi4
2 MaxLucky
эконом вариант бесплатный laughing.gif
naliwator
Цитата(MaxLucky @ May 27 2011, 15:01) *
Лицензия, конечно, вещь не очень дорогая (для NIOSа), если удалось бы уговорить начальство. Но самому выкладывать 500$ + НДС как-то грустно. В принципе, меня устроило бы и ограничение по времени для тестирования, но Q11.0 не позволяет создавать .rbf файл и прочие, только .sof.

Поиск по форуму пробовали?
MaxLucky
Цитата(Kuzmi4 @ May 27 2011, 15:13) *
2 MaxLucky
эконом вариант бесплатный laughing.gif


Ну, эконом вариант - это только светодиодами помигать.
До недавнего времени проектировал все с использованием FSM, на ниос то времени не находилось, то обычная лень не давала blush.gif
Однако, с разрастанием проекта, как это, скорее всего, у всех бывает пришел к тому, что мозг уже не вмещает все машинки и надо как-то оптимизировать.

Цитата(naliwator @ May 27 2011, 15:21) *
Поиск по форуму пробовали?


Пробовал. Проблема в том, что те лицензии которые (для NIOS) есть под Q11.0 не хотят работать. То ли это новая фича Qsys мешает, то ли еще что.
juvf
Почему SOPC не может сам назначить правильно адреса? На рисунке адреса назначенные автоматически. Приходится руками все адреса назначать. В др. проекте такого не было.
Stewart Little
Цитата(juvf @ Jun 1 2011, 08:51) *
Почему SOPC не может сам назначить правильно адреса? На рисунке адреса назначенные автоматически. Приходится руками все адреса назначать. В др. проекте такого не было.

Может. Меню System - Auto Assign Base Addresses, если мне склероз не изменяет.
juvf
Цитата(Stewart Little @ Jun 1 2011, 14:19) *
Может. Меню System - Auto Assign Base Addresses, если мне склероз не изменяет.

Я так и делаю. На левом рисунке адреса назначены после Auto Assign Base Addresses. SOPC Builder почему-то на каждый SPI выделил по 0х20 адресов. А при компиляции ругается, что мало, что нужно по 0х40. Сейчас руками все адреса назначил и замки повесил. Но почему же сопс сам не правильно выделает адреса?
vadimuzzz
Цитата(juvf @ Jun 2 2011, 09:35) *
Я так и делаю. На левом рисунке адреса назначены после Auto Assign Base Addresses. SOPC Builder почему-то на каждый SPI выделил по 0х20 адресов. А при компиляции ругается, что мало, что нужно по 0х40. Сейчас руками все адреса назначил и замки повесил. Но почему же сопс сам не правильно выделает адреса?

на других версиях квартуса не смотрели? я видел такую фигню однажды (версию не помню), когда отрезал медленную периферию через Pipeline Bridge, он тоже внутри адресного пространства бриджа не мог автоматом выставить. вам, кстати, тоже имеет смысл попробовать: отрежьте все SPI мостом, это положительно скажется на Fmax
juvf
Цитата(vadimuzzz @ Jun 2 2011, 08:39) *
на других версиях квартуса не смотрели? я видел такую фигню однажды (версию не помню), когда отрезал медленную периферию через Pipeline Bridge, он тоже внутри адресного пространства бриджа не мог автоматом выставить.

Смотрел. этот эффект заметил в 10.1. Сейчас перешел на 11 - эффект есть. Другой проект, попроще - такого эффекта, на этих же квартусах, нет.
Цитата
вам, кстати, тоже имеет смысл попробовать: отрежьте все SPI мостом, это положительно скажется на Fmax

ээээ...... а как это делается?
vadimuzzz
Цитата(juvf @ Jun 2 2011, 10:21) *
ээээ...... а как это делается?

вкратце: добавляете Pipeline Bridge, периферию цепляете к его master-порту, а data-master процессора к слейву моста.
подробности см. в Embedded Design Handbook, Section III/Ch. 6/Increasing system frequency
juvf
есть массив int array[1024] в который положил оцифрованный сигнал. как в NIOS IDE посмотреть этот сигнал на графике?
vadimuzzz
не слыхал про такое. как насчет сбросить массив на комп (например, через hostfs), а потом просмотреть график любой знакомой прогой?
juvf
Цитата(vadimuzzz @ Jun 7 2011, 13:27) *
не слыхал про такое. как насчет сбросить массив на комп (например, через hostfs), а потом просмотреть график любой знакомой прогой?

Наверно так и придется. Просто видел такое в Code Compose Studio. Там это называется "Data visualization". Думал что для эклипса по любому должен быть плуг. Но что-то не нашел его ((
vadimuzzz
еще вариант нагуглился:
Цитата
you can use gnuplot
via a gdb command.
Put the content of the plot1d.gdb from
http://sourceware.org/gdb/wiki/PlottingFromGDB) in your .gdbinit.
If you want to visualize an array called 'myarray' you activate the gdb
console in Eclipse and type:
plot1d *((myarray)+STARTIDX)@LENGTH

Of course, you have to substitute STARTIDX (first index to plot) and
LENGTH (number of elements to plot).
It is not very user-friendly, but at least a starting point.
Stewart Little
Цитата(juvf @ Jun 7 2011, 09:54) *
есть массив int array[1024] в который положил оцифрованный сигнал. как в NIOS IDE посмотреть этот сигнал на графике?

Боюсь, что никак. Для этого ModelSim есть.
gosu-art
Можно ли в nios console делать возврат каретки (alt_putstr("Connection_enable\r") как в гипертерминале?
gosu-art
Цитата(gosu-art @ Jun 28 2011, 15:09) *
Можно ли в nios console делать возврат каретки (alt_putstr("Connection_enable\r") как в гипертерминале?

crying.gif Ну так как нить можно включить или нет! А то не работает \r.
vadimuzzz
Цитата(gosu-art @ Jun 28 2011, 18:09) *
Можно ли в nios console делать возврат каретки (alt_putstr("Connection_enable\r") как в гипертерминале?

а что имеется в виду под "как в гипертерминале"?
gosu-art
Цитата(vadimuzzz @ Jul 5 2011, 05:55) *
а что имеется в виду под "как в гипертерминале"?


Ну по крайней мере там эта штука работает, тут нет. rolleyes.gif Мне просто скорость передающего и принимающего канала отображать нужно в консоли. А как то не удобно каждый раз с новой строки начинать - информации накапливается много.

UPD:

Нажмите для просмотра прикрепленного файла

Может это из-за small c library?
vadimuzzz
Цитата(gosu-art @ Jul 5 2011, 11:14) *
Ну по крайней мере там эта штука работает, тут нет. rolleyes.gif Мне просто скорость передающего и принимающего канала отображать нужно в консоли. А как то не удобно каждый раз с новой строки начинать - информации накапливается много.

телепат из меня не очень, но подозреваю автоматическое добавление символа перевода строки <LF> к символу возврата каретки <CR>. на ум приходит 2 варианта: отключить эту опцию в настройках гипертерминала, тогда это не будет работать ни там, ни там (в определенном смысле это и будет "как в гипертерминале" sm.gif). соответственно в коде будете писать "\r\n", будет работать везде. второй вариант - доработать функцию alt_putstr, чтобы она делала такую замену. все-таки ниосовские тулзы изначально линуксовые, а в UNIX-подобных системах принято использовать "\n". так что я бы рекомендовал первый вариант.

Цитата(gosu-art @ Jul 5 2011, 11:14) *
Может это из-за small c library?

нет
gosu-art
Мне нужно, чтобы вывод следующей строки заменил предыдущую! Получается работа происходит только в одной строке.


vadimuzzz
Цитата(gosu-art @ Jul 5 2011, 15:51) *
Мне нужно, чтобы вывод следующей строки заменил предыдущую! Получается работа происходит только в одной строке.

я же говорю, что я не телепат!
Код
#include <stdio.h>
#include <unistd.h>
int main()
{
    int i;
    for(i=0;i<=100;i++)
    {
        printf("\r% 3d%%",i);
        fflush(stdout);
        sleep(1);
    }
    return 0;
}

так работает? (sleep замените на что-нибудь свое.)

upd: это багофича эклипсовского console view. можно обойти таким костылем: запустить nios2-terminal в отдельном окне и соответственно отключить console view в эклипсе.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.