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

Ethereal

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о Ethereal

  • Звание
    Частый гость
    Частый гость
  • День рождения 13.09.1986

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

1 338 просмотров профиля
  1. SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTR{idVendor}=="09fb", ATTR{idProduct}="6001", MODE="0666", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}", SYMLINK+="usbblaster", GROUP="usbblaster", RUN+="/bin/chmod 0666 %c" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}="6002", MODE="0666", SYMLINK+="usbblaster", GROUP="usbblaster" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}="6003", MODE="0666", SYMLINK+="usbblaster", GROUP="usbblaster" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}="6010", MODE="0666", SYMLINK+="usbblaster", GROUP="usbblaster" SUBSYSTEM=="usb", ATTR{idVendor}=="09fb", ATTR{idProduct}="6810", MODE="0666", SYMLINK+="usbblaster", GROUP="usbblaster" Тот, которым я пользуюсь, 6001. Попробовал. Так как появились сомнения для чего это было, то отвечу сразу несколькими тестами. 1. quartus_pgm из SAP 16.1 продолжает падать. Дополнительно проверил. Он падает в том числе, если к программатору подключена ПЛИС, а я пытаюсь влить туда pof для EPC. 2. При использовании jtagd Q 9.1 quartus_pgm 9.1 продолжает не видеть устройство. sudo /opt/altera/9.1/quartus/quartus/bin/jtagd --debug --foreground rpm: Command not found. JTAG daemon started Using config file /etc/jtagd/jtagd.conf Remote JTAG permitted when password set USB-Blaster bulk queueing implied, async mode /opt/altera/9.1/quartus/quartus/bin/jtagconfig rpm: Command not found. No JTAG hardware available 3. При использовании jtagd SAP 16.1 и quartus_pgm 9.1 sudo /opt/altera/intelFPGA/16.1/qprogrammer/bin/jtagd --foreground --debug JTAG daemon started Using config file /etc/jtagd/jtagd.conf Remote JTAG permitted when password set USB-Blaster "USB-Blaster" firmware version 4.00 USB-Blaster endpoints out=02(64), in=81(64); urb size=1024 USB-Blaster added "USB-Blaster [1-7.3]" USB-Blaster port (/dev/bus/usb/001/003) opened USB-Blaster "USB-Blaster" firmware version 4.00 USB-Blaster endpoints out=02(64), in=81(64); urb size=1024 USB-Blaster reports JTAG protocol version 0, using version 0 USB-Blaster closed /opt/altera/9.1/quartus/quartus/bin/jtagconfig rpm: Command not found. 1) USB-Blaster [1-7.3] 120930DD EP2S60 /opt/altera/9.1/quartus/quartus/bin/quartus_pgm --cable=USB-Blaster --mode=JTAG --operation="pv;test.pof" rpm: Command not found. Info: ******************************************************************* Info: Running Quartus II Programmer Info: Version 9.1 Build 350 03/24/2010 Service Pack 2 SJ Full Version Info: Copyright © 1991-2010 Altera Corporation. All rights reserved. Info: Your use of Altera Corporation's design tools, logic functions Info: and other software and tools, and its AMPP partner logic Info: functions, and any output files from any of the foregoing Info: (including device programming or simulation files), and any Info: associated documentation or information are expressly subject Info: to the terms and conditions of the Altera Program License Info: Subscription Agreement, Altera MegaCore Function License Info: Agreement, or other applicable license agreement, including, Info: without limitation, that your use is for the sole purpose of Info: programming logic devices manufactured by Altera and sold by Info: Altera or its authorized distributors. Please refer to the Info: applicable agreement for further details. Info: Processing started: Wed Dec 6 15:44:56 2017 Info: Command: quartus_pgm --cable=USB-Blaster --mode=JTAG --operation=pv;test.pof Info: Using programming cable "USB-Blaster [1-7.3]" Info: Started Programmer operation at Wed Dec 6 15:44:57 2017 Error: Can't configure device. Expected JTAG ID code 0x0100A0DD for device 1, but found JTAG ID code 0x120930DD. Error: Operation failed Info: Ended Programmer operation at Wed Dec 6 15:44:57 2017 Error: Quartus II Programmer was unsuccessful. 2 errors, 0 warnings Error: Peak virtual memory: 69 megabytes Error: Processing ended: Wed Dec 6 15:44:57 2017 Error: Elapsed time: 00:00:01 Error: Total CPU time (on all processors): 00:00:00
  2. Update: Квартус 9.1 прошивает с jtagd от SAP 16.1.
  3. Добрый день. Поставил под убунту 16.04 LTS Altera Standalone Programmer. Поставил две версии - 16.1 и 15.1. Настроил jtagd по многочисленным мануалам в сети. jtagconfig работает нормально. /opt/altera/intelFPGA/16.1/qprogrammer/bin/jtagconfig 1) USB-Blaster [1-7.3] 0100A0DD EPC(16|4|8|E16|E4|E8) При запуске pgmt программа валится с ошибкой /opt/altera/intelFPGA/16.1/qprogrammer/bin/qpgmt *** Fatal Error: Illegal Instruction Module: qpgmt Stack Trace: 0xca9d8: std::vector<DEV_PART_DESC*, std::allocator<DEV_PART_DESC*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<DEV_PART_DESC**, std::vector<DEV_PART_DESC*, std::allocator<DEV_PART_DESC*> > >, unsigned long, DEV_PART_DESC* const&) + 0x148 (ddb_dev) 0xf08a2: DEV_FAMILY_INFO_MGR_BODY::DEV_FAMILY_INFO_MGR_BODY() + 0x1e2 (ddb_dev) 0xca3d1: DEV_FAMILY_INFO_MGR_BODY::get_instance() + 0x21 (ddb_dev) 0xbb319: DEV_FAMILY_MANAGER::DEV_FAMILY_MANAGER() + 0x9 (ddb_dev) End-trace При запуске quartus_pgm вcе ок пока он работает в режиме поиска устройств. /opt/altera/intelFPGA/16.1/qprogrammer/bin/quartus_pgm -l Info: ******************************************************************* Info: Running Quartus Prime Programmer Info: Version 16.1.0 Build 196 10/24/2016 SJ Standard Edition Info: Copyright © 2016 Intel Corporation. All rights reserved. Info: Your use of Intel Corporation's design tools, logic functions Info: and other software and tools, and its AMPP partner logic Info: functions, and any output files from any of the foregoing Info: (including device programming or simulation files), and any Info: associated documentation or information are expressly subject Info: to the terms and conditions of the Intel Program License Info: Subscription Agreement, the Intel Quartus Prime License Agreement, Info: the Intel MegaCore Function License Agreement, or other Info: applicable license agreement, including, without limitation, Info: that your use is for the sole purpose of programming logic Info: devices manufactured by Intel and sold by Intel or its Info: authorized distributors. Please refer to the applicable Info: agreement for further details. Info: Processing started: Wed Dec 6 13:07:21 2017 Info: Command: quartus_pgm -l 1) USB-Blaster [1-7.3] Info: Quartus Prime Programmer was successful. 0 errors, 0 warnings Info: Peak virtual memory: 419 megabytes Info: Processing ended: Wed Dec 6 13:07:21 2017 Info: Elapsed time: 00:00:00 Info: Total CPU time (on all processors): 00:00:00 /opt/altera/intelFPGA/16.1/qprogrammer/bin/quartus_pgm --cable=USB-Blaster -a Info: ******************************************************************* Info: Running Quartus Prime Programmer Info: Version 16.1.0 Build 196 10/24/2016 SJ Standard Edition Info: Copyright © 2016 Intel Corporation. All rights reserved. Info: Your use of Intel Corporation's design tools, logic functions Info: and other software and tools, and its AMPP partner logic Info: functions, and any output files from any of the foregoing Info: (including device programming or simulation files), and any Info: associated documentation or information are expressly subject Info: to the terms and conditions of the Intel Program License Info: Subscription Agreement, the Intel Quartus Prime License Agreement, Info: the Intel MegaCore Function License Agreement, or other Info: applicable license agreement, including, without limitation, Info: that your use is for the sole purpose of programming logic Info: devices manufactured by Intel and sold by Intel or its Info: authorized distributors. Please refer to the applicable Info: agreement for further details. Info: Processing started: Wed Dec 6 13:07:57 2017 Info: Command: quartus_pgm --cable=USB-Blaster -a Info (213045): Using programming cable "USB-Blaster [1-7.3]" 1) USB-Blaster [1-7.3] 0100A0DD EPC(16|4|8|E16|E4|E8) Info: Quartus Prime Programmer was successful. 0 errors, 0 warnings Info: Peak virtual memory: 419 megabytes Info: Processing ended: Wed Dec 6 13:07:57 2017 Info: Elapsed time: 00:00:00 Info: Total CPU time (on all processors): 00:00:00 При попытке что-то зашить. /opt/altera/intelFPGA/16.1/qprogrammer/bin/quartus_pgm --cable=USB-Blaster --mode=JTAG --operation="pv;test.pof" *** Fatal Error: Illegal Instruction Module: quartus_pgm Stack Trace: 0xca9d8: std::vector<DEV_PART_DESC*, std::allocator<DEV_PART_DESC*> >::_M_fill_insert(__gnu_cxx::__normal_iterator<DEV_PART_DESC**, std::vector<DEV_PART_DESC*, std::allocator<DEV_PART_DESC*> > >, unsigned long, DEV_PART_DESC* const&) + 0x148 (ddb_dev) 0xf08a2: DEV_FAMILY_INFO_MGR_BODY::DEV_FAMILY_INFO_MGR_BODY() + 0x1e2 (ddb_dev) 0xca3d1: DEV_FAMILY_INFO_MGR_BODY::get_instance() + 0x21 (ddb_dev) 0xc2a79: DEV_PART_MANAGER::DEV_PART_MANAGER() + 0x9 (ddb_dev) 0x28695d: PGM_CHAIN_ELEMENT::create_chain_element(PGM_CHAIN_ELEMENT*, bool, FIO_PATH*, bool, PGMIO_CONFIG_SCHEME, bool) + 0xc1d (pgm_pgmio) 0x2327f: PGME_PROGRAMMER::lookup_device(PGM_CHAIN_ELEMENT*, PGMIO_CONFIG_SCHEME, bool, bool) + 0x21 (pgm_pgme) 0x2121b: QPGM_FRAMEWORK::create_element(std::string, std::string, unsigned int, unsigned int) + 0x5fb (quartus_pgm) 0x23ab1: QPGM_FRAMEWORK::process_operation(std::string*) + 0x1e93 (quartus_pgm) 0x24bfe: QPGM_FRAMEWORK::post_check_arguments() + 0x2d6 (quartus_pgm) 0x1c08f: qexe_standard_main(QEXE_FRAMEWORK*, QEXE_OPTION_DEFINITION const**, int, char const**) + 0x1bc (comp_qexe) 0x1fccc: qpgm_main(int, char const**) + 0x5e (quartus_pgm) 0x407e0: msg_main_thread(void*) + 0x10 (ccl_msg) 0x602c: thr_final_wrapper + 0xc (ccl_thr) 0x4089f: msg_thread_wrapper(void* (*)(void*), void*) + 0x62 (ccl_msg) 0xa559: mem_thread_wrapper(void* (*)(void*), void*) + 0x99 (ccl_mem) 0x8f92: err_thread_wrapper(void* (*)(void*), void*) + 0x27 (ccl_err) 0x63f2: thr_thread_wrapper + 0x15 (ccl_thr) 0x42c37: msg_exe_main(int, char const**, int (*)(int, char const**)) + 0xa3 (ccl_msg) 0x1fd56: main + 0x26 (quartus_pgm) 0x20830: __libc_start_main + 0xf0 (c.so.6) End-trace Я нагуглил похожую проблему у другого человека, но он ставил квартус, а не стэндалон, и он написал, что у него все решилось откатом к 15.1 версии квартуса. Но у меня с ней возникают те же проблемы с иллегал инструкциями. Программатор работает, из винды все прошивается. Прошивка собрана квартусом 9.1. Проверить квартусом пока не смог, потому что jtagconfig квартуса 9.1 не видит программатор (подозреваю, что я там что-то недонастроил, но пока не могу понять, что именно). Кто-нибудь сталкивался с подобными проблемами, и если да, то как решили? Заранее спасибо за помощь.
  4. Спасибо, попробую этот же код на 13. На 11 забавно :) Info: Running Quartus II 64-Bit Analysis & Synthesis Info: Version 11.1 Build 173 11/01/2011 SJ Full Version Info: Processing started: Tue Mar 29 18:31:38 2016 Info: Command: quartus_map --read_settings_files=on --write_settings_files=off test_bits -c test_bits Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected Info (12021): Found 1 design units, including 1 entities, in source file tst_bit_struct.v Info (12023): Found entity 1: tst_bit_struct Info (12127): Elaborating entity "tst_bit_struct" for the top level hierarchy Info (10648): Verilog HDL Display System Task info at tst_bit_struct.v(34): lp_message_bit_size = 8 Info (10648): Verilog HDL Display System Task info at tst_bit_struct.v(35): lp_message_byte_size = 1
  5. Добрый день. Возник такой вопрос. Есть файл project_types.v, в котором описана структура: typedef struct packed { bit [ 7: 0]test_01; bit [ 7: 0]test_02; bit [ 7: 0]test_03; bit [ 7: 0]test_04; bit [ 7: 0]test_05; bit [ 7: 0]test_06; bit [ 7: 0]test_07; bit [ 7: 0]test_08; bit [ 7: 0]test_09; bit [ 7: 0]test_10; bit [ 7: 0]test_11; bit [ 7: 0]test_12; bit [ 7: 0]test_13; bit [ 7: 0]test_14; bit [ 7: 0]test_15; } message_not_alligned; typedef struct packed { message_not_alligned data; bit [7: 0]some_var; } message_alligned; Файл инклюдится в другом файле "retranslate.v" module retranslator(...); `include "project_types.v" localparam lp_message_bit_size = $bits(message_alligned); localparam lp_message_byte_size = lp_message_bit_size / 8; localparam lp_byte_count = lp_message_byte_size * lp_max_message_count; ... Модуль сохраняет приходящие друг за другом message в память побайтно. Проблема в том, что в данном случае lp_message_bit_size = 8 lp_message_byte_size = 1 А не 128 и 16, как, по идее, должно быть. Если сделать такую замену typedef struct packed { message_not_alligned data; bit [1: 0]some_var; } message_alligned; , то будет lp_message_bit_size = 2. Если some_var на части typedef struct packed { message_not_alligned data; bit some_var_high; bit [6: 0]some_var_high; } message_alligned; то будет снова 8. А вот если сделать, например, так: typedef struct packed { message_not_alligned data; bit [7: 0 * $bits(message_not_alligned)]some_var; } message_alligned; то lp_message_bit_size = 128 lp_message_byte_size = 16. Моделсим (ASE) правильно определяет размеры структур. Q II 9.1 SP2 и Q II 11.1 дают одинаково неправильные результаты. Если не затруднит, не подскажете, с чем может быть связано, как с этим бороться, и какие еще тонкости могут вылезти? Заранее спасибо.
  6. А в шестых виртексах у MMCM есть режим синхронной компенсации? То что я нашел - это zero hold. Оно, конечно, позволяет сделать clock path примерно равным нулю, но data path delay при этом не компенсируется. Или нужно руками фазу подгонять?
  7. BUFR. Пробовал ставить BUFIO для IDDR, и BUFR/BUFG для фифо (туда же BUFIO клок не дойдет?). Но при этом PAR вылетает с ошибкой. Спасибо, попробую.
  8. А так получается с региональным клоком. Setup path: Requirement: 0.750ns Data Path Delay: 0.753ns (Levels of Logic = 1) Clock Path Delay: 3.487ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns Hold path: Requirement: 0.750ns Data Path Delay: 0.877ns (Levels of Logic = 1)(Component delays alone exceeds constraint) Clock Path Delay: 6.155ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns А так с региональным клоком и IODELAY на все линии, кроме самого клока. Setup: Requirement: 0.750ns Data Path Delay: 5.231ns (Levels of Logic = 2) Clock Path Delay: 5.690ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns Hold: Requirement: 0.750ns Data Path Delay: 4.384ns (Levels of Logic = 2)(Component delays alone exceeds constraint) Clock Path Delay: 6.403ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns
  9. Пробовал руками ставить IODELAYE1 в разрыв между IBUFDS и IDDR в режиме "DEFAULT". Кроме почти восьмикратного увеличения времени компиляции получилась еще большая разбежка по времени. Вообще, я сейчас думаю, что может неправильно вставил. На схемах указано, что делей вставляется между IBUF и IDDR. Но, возможно, что для дифференциального входа порядок иной? Или вообще не нужно руками ставить? Еще пробовал использовать DCM и затактировать вход его выходом. В итоге получил предупреждение, что клок ничего не тактирует и игнор всех констреинтов в .ucf.
  10. Здравствуйте. Имеется проект на шестом виртексе с параллельными АЦП на 400 МГц. Выходная шина АЦП 10 бит, сопровождаются тактом 200 МГц с привязкой к центру UI. Сигналы дифференциальные. Передача идет с удвоенной скоростью. tsu, th относительно переднего фронта синхросигнала 1нс В проекте, соответственно реализован приемник. Дифференциальная шина пропускается сначала через IBUFDS. С выхода IBUFDS она идет на IDDR и далее на синхронизатор на FIFO. Клок от АЦП пропускается через IBUFDS и далее идет на клок IDDR, на котором защелкивается входная шина. В .ucf описаны констрейны: NET InputAdcClockPos TNM_NET = TnmAdcClockPos; TIMESPEC TsAdcClockPos = PERIOD TnmAdcClockPos 200 Mhz HIGH 50%; TIMEGRP GrpRiseAdcClockPos = RISING TnmAdcClockPos; TIMEGRP GrpFallAdcClockPos = FALLING TnmAdcClockPos; OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpRiseAdcClockPos; OFFSET = IN 750 ps VALID 1500 ps BEFORE InputAdcClockPos TIMEGRP GrpFallAdcClockPos; Описал с запасом на разбег в длинах проводников, хотя он там настолько влиять не должен. При этом PAR долго разводит, а потом фейлит констрейны. После этого клок стал пропускать не через IBUFDS, а IBUFGDS, и стало намного лучше в части скорости работы, но фейл с констрейнами остался. Например. Slack (setup path): -1.144ns (requirement - (data path - clock path - clock arrival + uncertainty)) Source: InputAdcDataPos<3> (PAD) Destination: GenDdr[3].IDDR_inst (FF) Destination Clock: AdcClock rising at 0.000ns Requirement: 0.750ns Data Path Delay: 5.235ns (Levels of Logic = 1) Clock Path Delay: 3.366ns (Levels of Logic = 2) Clock Uncertainty: 0.025ns где AdcClock - это клок на выходе IBUFGDS. Tsu всей шины на переднем фронте болтается в районе 1.86нс. Th в районе минус 0.1. Не подскажете, чем можно вылечить данную проблему? Заранее спасибо.
  11. Добрый день. Мы используем в своем устройстве вот такой вот процессор. Для возможности удаленной загрузки и отладки (есть макетная плата, на которой можно все отдебажить через JTAG, но в устройстве JTAG недоступен) было решено добавить возможность загрузки процессора хостом через HPI (хост получает прошивку через последовательный интерфейс). Пины установлены в BOOTMODE = 0001b. COFF читается собственной утилитой и формирует бинарный файл из секций Vectors, Initialized data и Executable code с дополнительным описанием, куда именно в память должна грузиться секция. Проблема возникает непосредственно с запуском. Программа написана на сях с использованием DSP/BIOS. В документации на сборку кода (spru186w Assembly language tools UG) указано, что входной точкой программы по умолчанию является c_int00. В документации на сам процессор указано, что процессор после формирования DSP INT начинает выполнять код по адресу 0x00800000. CCS при сборке располагает точку входа по адресу 00824b40. Участок map-файла приведен ниже .sysinit 0 00824800 00000520 00824800 00000340 data_proccfg.obj (.sysinit) 00824b40 000000c0 bios.a64P : boot.o64P (.sysinit) 00824c00 000000a0 : mem_init.o64P (.sysinit) 00824ca0 00000060 : tsk_init.o64P (.sysinit) 00824d00 00000020 : obj_init.o64P (.sysinit) Правильно ли я понимаю, что надо отмапать подсекцию boot.o64P по адресу 800000? Что-то вроде SECTIONS { .text: { bios.a64P(.boot.o64P) *(.text) } } или SECTIONS { boot_section: { bios.a64P(.boot.o64P) } : 0x00800000 } Заранее спасибо.
  12. Спасибо, я почитал описание, вроде, то что нужно. Я правильно понимаю, что асми после создания инстанса само вешается на нужные ножки, не напрягая разработчика лишними телодвижениями с залезанием в пин планер и ручным назначением пинов? То есть там только юзер интерфейс для отправляемых/получаемых данных и сопутствующие сигналы, и все?
  13. Добрый день. Возник такой вопрос. Можно ли получить доступ к ASDI, CS, nCS сигналам доступа к конфигурационной микросхеме последовательного типа из ПЛИС. В даташите вроде как помечено. что они работают во время загрузки, а в пользовательском режиме доступа к ним нет (и Ква, что характерно, назначать эти пины не позволяет). Вместе с тем, встречал упоминания о том, что в EPCS можно удаленно (в плане без джитага и всяких наворотов, типа микроконтроллеров, которые занимаются такой операцией) перезалить прошивку, и выделить часть области памяти под собственные нужды (конфигурационные параметры, и прочее). При этом нигде не написано, как это сделать. В юзергайдах видел, что такую возможность, вроде бы, предоставляет Ниос, но пихать процессор в проект только ради такого удовольствия мне не очень хочется. Хотелось бы воспользоваться или соответствующим ИП, или собственным велосипедом. Stratix 3. EPCS64.
  14. Добрый день. Начал я тут работать с плавающей точкой, после чего неожиданно возник непредвиденный вопрос - как задать FP-константу в квартусе? Вернее, как задать FP-константу, которую FP-блоки будут воспринимать именно, как число с плавающей точкой, а не как целое, полученное из вещественного округлением? В Modelsim ASE все решается очень просто. localparam shortreal A = 1.0; localparam bit [31:0]B = $shortrealtobits(A); После этого в B оказывается битовое представление вещественного числа с плавающей точкой. Но Ква2 ругается на функцию трансляции числа. Какие существуют варианты задания константы автоматическим образом? Конечно, можно дисплеем посмотреть хекс B в моделсиме, после чего руками его вбить в Квартусе, но хотелось бы, чтобы оно делалось без лишнего участия с моей стороны. Заранее спасибо.
  15. Внешних (для ПЛИС) сигналов в коде быть не должно. In нужно пропустить через >=2 последовательных регистра (в качестве примера смотрите код Timmy), и уже этот сигнал использовать в логике подавления. Иначе при попадании клока на фронт входного сигнала модуль может застопориться даже при нормальном коде.
×
×
  • Создать...