Перейти к содержанию
    

juvf

Свой
  • Постов

    1 611
  • Зарегистрирован

  • Посещение

  • Победитель дней

    2

Весь контент juvf


  1. осваиваю verilog. дешифратор сходу написал в Си стиле module dec2to4(in, out); input [1:0]in; output reg [3:0]out; always @ (in) out = 1 << in; endmodule Но случайно наткнулся на библию по HDL, в нём пример module dec2to4(in, out); input [1:0]in; output reg [3:0]out; always @ (in) case(in) 2'b00: out = 1; 2'b01: out = 2; 2'b10: out = 4; default: out = 8; endcase; endmodule из библии пример подлиннее. в принципе для 2to4 не на много длинные. Но если нужен дешифратор 5to32, то в таком дешифраторе case станет тяжелым. Гораздо проще одной строкой записать out = 1 << in; Есть ли принципиальная разница между этими двумя дешифраторами? Может мой дешифратор будет переключаться дольше или вентилей/памяти отест больше? Чем библейский дешифратор лучше?
  2. А можно книжку заново закинуть? А то пишет файл удален
  3. Наверно так и придется. Просто видел такое в Code Compose Studio. Там это называется "Data visualization". Думал что для эклипса по любому должен быть плуг. Но что-то не нашел его ((
  4. есть массив int array[1024] в который положил оцифрованный сигнал. как в NIOS IDE посмотреть этот сигнал на графике?
  5. I2C в USI

    Да, мне нужен мастер. Я споткнулся на старте. Генерирую старт путём записи в буфер уси 0x00. Встает прерывание- "обнаружен старт" и scl идет в 0. а дальше что делать? засунуть в буфер байт для отправки содержащий адрес и R/~W и ждать ответа пока его USI выплюнет и ждать ответа ask? как перенаправлять порт IO? Я так понял руками все делать нужно. Не могли бы вы показать свой слэйв как пример?
  6. И что получится? мех переместится но шелкографию и краской закрасят КП. У нас сделан отдельно слой мех и отдельно топоверлэй с шелкографией. Спасибо, возьму на заметку.
  7. а кто как сборки делает? на TopOverlay не всегда все рефдесы влазят, приходится их отключать или выносить, иногда ключ приходится внутрь мкс помещать. да и контур на TopOverlay всегда больше чем сам компонент, контур идет вокруг КП. Для сборки лучше экспортировать слой Mechanical. На нем четкие границы РЭК. Но на нём нет позиционных обозначений......... Можно как нибудь сделать так, чтоб позиционное обозначение было на двух слоях, на TopOverlay и на Mechanical?
  8. отзыв (не претензия) по гую: А почему шрифт размыт? Понятно, что автор его под себя размыл, но как может такой "размытый" шрифт нравится? Запускал под win 7. Может шрифт только под 7-ой размыт, тогда автору не мешало бы убрать тени, создающие эффект размытости или что-то еще исправить. имхо.
  9. Смотрел. этот эффект заметил в 10.1. Сейчас перешел на 11 - эффект есть. Другой проект, попроще - такого эффекта, на этих же квартусах, нет. ээээ...... а как это делается?
  10. Я так и делаю. На левом рисунке адреса назначены после Auto Assign Base Addresses. SOPC Builder почему-то на каждый SPI выделил по 0х20 адресов. А при компиляции ругается, что мало, что нужно по 0х40. Сейчас руками все адреса назначил и замки повесил. Но почему же сопс сам не правильно выделает адреса?
  11. I2C в USI

    Посмотрел описание на Atmega168 - вроде есть I2C. На этом процессор сделал девайс. Дошло дело до i2c и ...... А чёто нету аппаратного и2ц в этом камне. Кто-нибудь пробовал на USI поднять I2C? в инете вроде много реализаций и2с на уси, и в алгоритмах, и в примерах, и на си и на асме. Но все они ручные. Т.е. ручками делаем СТАРТ, потом delay, потом байт задвигаем в регистр, опять delay, анализ..... delay, ... delay, ... delay, ..... А что осталось от "аппаратного" i2c? Всё руками. Проще полностью программный и2ц написать. Во всех примерах, что я нашел, тактируется этот кагбэ аппаратный и2ц руками (software). Но есть возможность тактировать от таймера. Кто-нибудь поднимал и2ц на уси с тактированием от таймера? Есть примеры?
  12. Почему SOPC не может сам назначить правильно адреса? На рисунке адреса назначенные автоматически. Приходится руками все адреса назначать. В др. проекте такого не было.
  13. Да. Практически скопипастил. даже имена переменных не переделывал. :laughing:
  14. ага, CycloneIII. Нашел я этот алгоритм. с полпинка определил все заголовки. В общем разбомбил я эту тему. Всё прекрасно грузится. А чтоб не забыть, как это делать, написал шпаргалку. Может она ещё кому полезна будет.
  15. эээ..... ну я так понял что в этих 32-х байтах вектора сброса исполняемый код. У меня есть машинный код, а как можно посмотреть ассемблер этого кода? Не могу в Nios II IDE найти View->Disassembler ((
  16. это я прочитал. это понятно. не понятно причем тут адреса вектора сброса 0х1810000...0х1810020? Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит?
  17. Посмотрел..... не нашел... Что разместится по адресам 0х1810000 ... 0х1810020? Конкретно.... по адресу 0х1810010 было значение 0х74. Потом стало 0х34. Что это значит? Как работает внутренний контроллер прерываний?
  18. не могу найти описание векторов прерывания в NIOS II. Например в SOPC билдере в процессоре указал вектор сброса на onchip-memory со смещением 0х00. Адрес onchip-memory = 0х1810000. Контроллер прерываний не добавлял. Что разместится по адресам 0х1810000 ... 0х1810020? Есть у альтеры описание векторов прерывания?
  19. По шагам его изучил. Там читается узсы начиная с 0 и ищется первое входждение 0х56. Это синхробайт. потом 4 байта пропускаются, след 4 - это длинна, причем in bit-reversing. вот что лежит в реальной рабочей epcs S1230000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC S123002056EFEFEFEFEFEFCFDFDF9FDFCF8F9F9FBFBFBFBF9FFF9F9FFFFFDFDF9F9FBFBFD5 S1230040BF9FBFBFBF9F9FDFDFF47AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC S1230060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C S1230080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C S12300A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C S12300C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C S12300E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C S1230100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FA 56EFEFEF - это синхронизация, EFEFEFCF - это нам не интересно, DFDF9FD - а это типа длинна. первый мл, и биты наоборот. Перекодирую и получаю длинны в битах fbf9fbfb. / на 8 = 528433023 (dec) байт. у меня флешка epcs4, 512 Кб, от куда там 528433023? Не понятно пока, как дефолтный загрузчик вычисляет адрес программы?
  20. в общем по инструкции ан458 не получилось собрать копировщик и темпаче дебажить. Закинул инструкцию за баню и сделал новый проект в эклипсе. скопипастил туда advanced_boot_loader.c. Копировщик с полпинка собрался и прикрутился к sof файлу и даже запускается по ресету. И даже дебаг копировщика запустился в полпинка. Теперь нужно найти заголовок программы в epcs. Дефолтный копировщик читает в епцс по начальному адресу заголовор pof. По нему определяет адрес конца аппаратной конфигурации и сразу за ним читает заголовок программы. После этого копирует программу в ОЗУ и передает управление в точку входа основной программы. Как бы найти где этот заголовок программы в епцс? Не могу найти расшифровку заголовка pof? Не могу определить размер конфигурации в epcs ((
  21. До того как грузить код в SDRAM, нужно проверить - исправна ли это ОЗУ, не залипают ли ноги. Эту проверку я хочу встроить в загрузчик.
  22. Не получается ни как загрузчик сделать. Пишу от отчаянья. Тренируюсь уже на кошках. Нужно разместить загрузчик в ончип, который при запуске скопирует программу из EPCS в SDRAM и передаст ей управление. Делаю всё по пдф an458.pdf Скачал демо-загрузчик с альтеры. Только платформу свою сделал. Делаю все как доктора прописали: 1) создал в SOPC cвой процессор со своей периферией, рис1. Вектор сброса и прерываний в cpu на boot_rom, офсет ресета = 0, офсет прерываний = 0х20, размер boot_rom 8 Кбайт. Сгенерировал *.sopc 2) поместил в папру проекта папку с примером загрузчика boot_copier_sw 3) открыл файл <project>/boot_copier_sw/bsp/advanced_boot_copier/boot_copier_bsp_settings.tcl в текстовом редакторе. исправил следующие настройки set ONCHIP 1 set EXCEPTION_OFFSET 0x20 set RESET_OFFSET 0x00000000 set BOOT_ROM_SIZE 0x2000 set SDRAM_SIZE 0x07FFFFF // я так понял что это размер моей внешней SDRAM в байтах set FLASH_SIZE 0x080000 // а это размер EPCS. У меня EPCS4, соответственно выставил 512 Кбайт заменил имена периферии на свои, peripheral_subsystem_jtag_uart на jtag_uart, peripheral_subsystem_sys_clk_timer на timerSys. из-за строчки "add_memory_region ext_flash ext_flash $EXT_FLASH_REGION_START $EXT_FLASH_REGION_SIZE" была ошибка, не мог сделать регион .ext_flash. т.к. я внешнюю cfi не собираюсь использовать, то я эту строку закомментировал. 4) подправил <project>/boot_copier_sw/app/advanced_boot_copier/advanced_boot_copier.c указал метод #define BOOT_METHOD BOOT_EPCS_FROM_ONCHIP_ROM исправил имя порта с лампочками PERIPHERAL_SUBSYSTEM_LED_PIO_BASE на своё IOLED_BASE 5) запустил из <project>/boot_copier_sw/app/advanced_boot_copier скрипт ./create-this-app и получил заветный выхлоп удачной сборки Info: (advanced_boot_copier.elf) 8788 Bytes program size (code + initialized data). Info: 184 Bytes free for stack + heap. Info: Creating advanced_boot_copier.objdump nios2-elf-objdump --disassemble --syms --all-header advanced_boot_copier.elf >advanced_boot_copier.objdump [advanced_boot_copier build complete] To download and run the application: 1. Make sure the board is connected to the system. 2. Run 'nios2-configure-sof <SOF_FILE_PATH>' to configure the FPGA with the hardware design. 3. If you have a stdio device, run 'nios2-terminal' in a different shell. 4. Run 'make download-elf' from the application directory. To debug the application: Import the project into Nios II IDE. Refer to Nios II IDE Documentation for more information. Только вот смущает 8788 Bytes program size, вроде для этого проекта по инструкции нужно выделить 8 Кбайт, а код занимает немного больше. ??? Ну да ладно, альтеровцам виднее. 6) Теперь тестовый проект Hello World. Перехожу в <project>/boot_copier_sw/app/hello_world и запускаю ./create-this-app. Здесь ни чего сложного, ни чего править не нужно вывод Info: (hello_world.elf) 46 KBytes program size (code + initialized data). Info: 8138 KBytes free for stack + heap. Info: Creating hello_world.objdump nios2-elf-objdump --disassemble --syms --all-header --source hello_world.elf >hello_world.objdump [hello_world build complete] 7) Packing the Test Application in a Boot Record скрипт make_flash_image_script.sh почему-то не заработал. не может создать копию эльфа в hello_world.elf.tmp.elf, пишет ERROR: trying to strip entry section from elf file hello_world.elf.tmp.elf Permission denited! в скрипте закоментировал это копирование и из файл менеджера сам сделал копию. запустил скрипт....... тут интересный момент. вот в оригинале как сказано в переводе Егорова Вот тут загвоздка! что за адреса flash_base and flash_end? Я задовал в системе адреса контроллера епцс. Больше я адресов с флеш ни каких не делал. Выставил начальный и конечные адреса епцс-флеш-контроллера. Получаю ошибку (WARNING) elf2flash: ELF file will not fit in flash. No flash file created ERROR: converting srec file hello_world.elf.tmp.srec to binary. А какое ещё адрес выставлять? ну по умолчанию в скрипте были flash_base=0x00000000; flash_end=0x00FFFFFF; чем-то напоминает на внутренние адреса в EPCS-FLASH. т.е. нужно указать минимальный адрес и максимальный той epcs-флешке, которая стоит на плате. Запускаю скрипт.... вижу завтеное "Script completed successfully." 8) Booting CFI or EPCS Flash From On-Chip Memory Выполняю "elf2hex advanced_boot_copier.elf 0x1810000 0х1811FFF --width=32 --create-lanes=0 ../../../boot_rom.hex" и получаю нужный boot_rom.hex 9)В квартусе запускаю компиляцию. Умный компилятор только подхватил мой boot_rom.hex для инициализации onchip-memory boot_rom 10)команда "bin2flash --input=hello_world.elf.flash.bin --output=hello_world.flash --location=0x00060000" 11)команда "nios2-flash-programmer --base=<flash_base> --epcs hello_world.flash", выход команды Using cable "USB-Blaster [USB-1]", device 1, instance 0x01 Resetting and pausing target processor: OK : Checksumming existing contents 00060000 : Verifying existing contents 00060000 : Reading existing contents Checksummed/read 19kB in 0.4s 00060000 ( 0%): Erasing Erased 64kB in 0.6s (106.6kB/s) 00060000 ( 0%): Programming Programmed 46KB +18KB in 1.4s (45.7KB/s) Did not attempt to verify device contents Leaving target processor paused 12)команда "nios2-download -r -g" светодиоды не маргнули, а должны вроде.... 13)команда "nios2-terminal" 14)жму ресет - тишина. Ни мигание лампочек, ни в терминале текста :( Где я оступился? Кому-нибудь удавалось свой загрузчик написать?
  23. ага, тоже заработало. только в 10-ом пункте после удаления папки инкрементной_db во время компиляции по прежнему были ворненги. закрыл открыл квартус - пропали. Вчера чистил проект удалил db папку, возможно и inc_db тоже удалил, но не перезапускал квартус. Спасибо за помощь!!!
  24. Сегодня утром включил комп, запустил компиляцию - нету этих 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, а потом удалить старые как не нужные. Походу дальше нет смысла искать от куда эти ворненги, главное что борда заработала. Всем спасибо за помощь!!!
×
×
  • Создать...