Jump to content

    

DmitryR

Свой
  • Content Count

    1497
  • Joined

  • Last visited

Everything posted by DmitryR


  1. Насколько я помню, Write Enable действует только на одну команду. То есть после стирания перед записью надо опять сделать Write Enable.
  2. CIA-601 - Это CAN-FD. CANOpen-FD - это CIA 1301. Я бы его тоже с удовольствием повертел в руках.
  3. Для этого есть много вариантов, от битовых полей до C++. Что же касается кэша - добивать нолями каждую структуру до размера его линии не только бессмысленно, но и вредно, и конечно ни один компилятор этого не делает. Да и не может, потому что кэши бывают внезапно разными даже у процессоров с одним и тем же набором инструкций.
  4. Начните осваивать BSP Editor. Там прямо вначале куча настроек, которые сильно влияют на размер.
  5. Я так понимаю, что вы жалуетесь на parser_put(). Я вижу, что функция parser_put принимает отдельные аргументы, а на экране отладчика у вас показаны поля некой структуры rx_packet, которая непонятно какое отношение имеет к этой функции. Во-первых язык программирования Си никак не связан с ОС Линукс, и результаты компиляции не зависят от того, применяется она или нет. Затем, pragma pack - это зло, которое делает программы непереносимыми. А в данном случае оно на структуру, состоящую из одних целых, никакого влияния не окажет.
  6. Power Estimator даёт быстрый и относительно точный ответ. У меня в проектах больше пары PLL никогда не использовались, поэтому на 2,5В хватало крошечного LDO.
  7. Хочу перенести проект с Cyclone IV GX на Cyclone 10 GX. Очевидно, надо заново сгенерировать IP. Однако IP Upgrade Tool пустой, и ни одна мегафункция не открывается - QIP открываются как обычные текстовые файлы, Verilog вообще не открывается O_o Это как-то обходится, или Intel теперь предлагает при переходе на новые чипы всё вручную переделывать?
  8. Хочу смастерить проприетарное решение на основе физического уровня PON. Вроде начиная с Cyclone V это поддерживается. Однако нигде в документах не могу найти subj: как быстро трансивер в OLT сможет переключаться между сигналами ONU. Есть у кого-нибудь идеи, как это можно выяснить, кроме как купив три платы и попробовав?
  9. Проверьте, сконфигурирован ли NIOS на скорость (включены ли кэши и прочая аппаратура), и положите исполняемый код в ТСМ.
  10. Драйвер отключается в BSP Edtor убиранием соответствующей галочки в закладке "Drivers".
  11. А это всё, там нет никакой инициализации. Записывается 1 в CSR, и он начинает работать.
  12. const float adc_vref = 3.0f; const volatile int* const adc_sample_array = (int*) ADC_SAMPLE_STORE_CSR_BASE; float adc_voltage; *(unsigned*)ADC_SEQUENCER_CSR_BASE = 1; adc_voltage = adc_vref * adc_sample_array[0] / 4095; Драйвер ADC выкинул, экономия 600 байт.
  13. На странице Linker Script в BSP Editor, в какую область памяти размещён BSS?
  14. Потому что неиспользуемые ресурсы продолжают жрать статику. Надо чип выбрать так, чтобы он был максимально заполнен.
  15. А что у вас конкретно делается на Verilog? Мы тоже традиционно делали ПЛИС+ARM, только ARM всегда стоял отдельно, и я сейчас начинаю понимать, что при современных процессорах ПЛИС в некоторых проектах больше не нужна. Например у TI есть процессоры (AM57xx), имеющие как ядро общего назначения, так и весьма мощный DSP (и плюс ещё несколько маленьких ядер для RTOS до кучи), и я прикинул, что когда не нужна быстрая реакция на события, этот DSP всё решит запросто.
  16. А теперь почитайте документацию на все используемые блоки.
  17. Надо сделать так, чтобы он бы found. Вставить то есть. Ибо без него вы не сможете сделать даже программную перезагрузку, и тем более не сможете сказать чипу, что он должен загрузиться из второй партиции. Блок этот правда называется не Remote Update, а Dual Configuration или Dual Boot, в этом подстава.
  18. Попробуйте первый бластер. У меня случалось, что дебаггер к ниосу через второй бластер вообще не подключался, а через первый - запросто.
  19. Я бы скорее поставил на то, что вы пишете что-то не то или не туда, в результате чего PLL теряет работоспособность и обратно залочится уже не может.
  20. Так после того, как PLL перенастроена, она вроде перестаёт что-либо генерировать. Её надо сбросить и дождаться, пока она залочится с новыми параметрами, или я не прав?
  21. Это несомненно возможно, только мне не это надо. Надо, чтобы это зависело от parameter. А в верилоге условная компиляци работает только от define (ifdef/ifndef), параметр как аргумент эти директивы принимать не могут.
  22. Я в итоге к этому решению и склоняюсь, но оно имеет массу недостатков: код получается совсем не такой уж и компактный, плюс непереносимость на другую архитектуру. Мы это переживём, так как работаем только с Альтерой, но чувство прекрасного это ранит.
  23. Спасибо, мне это всё понятно. Но define - это устаревшая конструкция, а использование generate в данном случе приводит к удвоению объёма кода. Возьмите хотя бы SPI - там в зависимости от параметров CPHA и CPOL меняются фронты, по которым происходят захват и выдача данных. Другое дело, что в реальных реализациях клок там чаще всего так или иначе эмулируется, но с точки зрения теории это уже детали.
  24. Пробовал, но это не важно, так как я хочу написать универсальный библиотечный код, который будет гарантированно правильно компилироваться везде. Никак, но этого и не требуется. Вы не поняли вопрос.