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

BSACPLD

Свой
  • Постов

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

  • Посещение

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

    5

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


  1. Вот Вам мой MAC в качестве примера :) Можете даже взять его как есть, только при использовании обязательно указание авторства проекта. Также я приложил к сообщению спецификацию RGMII 2.0, там довольно подробно расписано про флаги для определения параметров линка через in-band status. MAC.rar RGMIIv2_0_final_hp.pdf
  2. RFM23B Direct Mode

    Понадобилось тут мне заставить работать RFM23B в Direct Mode. Асинхронный режим заработал без проблем, а вот с синхронным режимом на приемной стороне никак не удается получить нормальный клок. Вместо клока идут периодически пропадающие короткие импульсы. Данные при этом идут абсолютно нормальные. В качестве тестовых данных пока просто передаю повторяющуюся последовательность 0 и 1 (меандр). Пробовал ставить разные виды модуляции (FSK, GFSK), но это не оказало никакого эффекта. Модули настраивал через конфигурационный excel файл и затем включал Direct Mode через регистр 0x71. Подскажите, пожалуйста, где может быть ошибка в настройке или где можно посмотреть рабочий пример работы в Direct Mode.
  3. Пока в качестве временного решения проблемы так и сделал, но хочется разобраться в причине возникновения данной ошибки :) Есть предположение, что виноваты в этом xml конфиги из папки board_info. При использовании xml конфигов взятых из примеров SoC EDS проект получается вообще нерабочий (даже linux не стартует). P.S. Ну почему у альтеры примеры всегда полурабочие... :( Из-за этого я в свое время перешел на создание полностью своих библиотек :) Жаль только здесь такое решение не прокатит...
  4. Вот что вылезает в консоли при загрузке: Unable to update property /sopc/ethernet@0xff702000:mac-address, err=FDT_ERR_NOTFOUND Unable to update property /sopc/ethernet@0xff702000:local-mac-address, err=FDT_ERR_NOTFOUND
  5. Продолжаю мучить Linux для SoC и вот наступил на очередные грабли: 1. Залил на SD карту образ atlas_sdcard_v1.1.img.tgz с RocketBoards.org - работает. 2. Собрал (через makefile) и закинул на карточку систему (обновлял только прошивку FPGA) atlas-soc-ghrd-1.1.zip взятую оттуда же - работает. 3. Как только закинул на карточку dtb файл сгенерённый квартусом - линукс перестал видеть Ethernet. Посмотрел исходный dts файл - секция с Ethernet присутствует и вроде не вызывает никаких подозрений. Преобразовал изначальный dtb в dts и сравнил его с тем, что сгенерил квартус - они кардинально различаются. Собирал в 15.1. То ли я что-то не так делаю, то ли квартус генерит кривой dts/dtb. Подскажите в какую сторону копать. dts.rar
  6. Ура! Нашёл решение :) Нужно было установить для Xming поддержку шрифтов с разными dpi.
  7. Версия 4.8.4 (в консоли на скриншоте). На стороне SOC.
  8. Нашёл решение :) https://forum.qt.io/topic/26245/solved-erro...t-4-8-4-for-arm Все скомпилировалось и запускается, но теперь проблема со шрифтами.
  9. Решил собрать SOC систему с Qt и удалённым дисплеем по SSH. С SSH и удалённым дисплеем проблем не возникло, а вот со сборкой Qt появились проблемы (см. скриншот с ошибкой). Собственно говоря вопрос что я могу не так делать? Или может быть под данный SOC есть готовый бинарный установочник для Qt?
  10. Сейчас вспомнил ещё один нюанс. В принципе можно назначить выход altddio_out на inout, но тип inout может быть только у самого верхнего уровня. Во всей нижестоящей иерархии тип сигнала должен быть output. По поводу дифпар. Для TimeQuest достаточно констрейнить только *_p. Исключением являются псевдодифференциальные пины, которые делаются из двух single-ended буферов.
  11. Для ALTDDIO нужно строго соблюдать соответствие типа порта. Если хотите работать с inout, то поставьте двунаправленный вариант ALTDDIO.
  12. Для начала начните изучать RFC на ARP, ICMP и UDP. https://tools.ietf.org/html/rfc791 https://tools.ietf.org/html/rfc826 https://tools.ietf.org/html/rfc792 https://www.ietf.org/rfc/rfc768.txt Затем когда разберетесь со структурой пакета попробуйте собрать следующую систему: Ethernet PHY <-> IP Ethernet MAC <-> IP CPU <-> IP UART (консоль для отладки) В качестве первого варианта можно реализовать только ARP и ICMP. Полностью руками без готового стека :) Так быстрее придет понимание структуры пакетов :) Для анализа посылаемых/принимаемых пакетов рекомендую использовать Wireshark.
  13. По нему как раз и считал. Дело было не в настройках. Покупные антенны оказались бракованные плюс я поставил слишком маленький конденсатор по цепи питания. Конденсатор заменил на 100мкФ электролит, а вместо покупных антенн поставил самодельные GP антенны. Теперь связь стабильная на 250кбит/с :). Дальность пока не тестировал.
  14. Коллеги, работал ли кто-нибудь с RFM23BP на скоростиях отличных от стандартных? С настройкой скорости передачи вроде разобрался, а вот с приёмной скоростью никак не получается добится приёма данных. В общем если я оставляю дефолтные 40кбит/с, то всё работатет. Если пытаюсь выставить 250кбит/с, то пакеты отпраляются, но не принимаются :( Вот код инициализации RFM23BP: // init_RFM23BP.cpp #include "AVR_CPU.h" #include "main.h" #include "system.h" #include "control_rfm.h" #include "init_RFM23BP.h" #define RFM_ID 0x08 //--------------------------------------------------------------------------- void init_RFM23BP (void) { __delay_cycles (const20ms) ; // Reset ALL registers wr_rfm_byte (0x07, 0x81) ; __delay_cycles (const1ms) ; // Check DEVICE_TYPE if (rd_rfm_byte(0) != RFM_ID) LED_PORT |= (1<<LED1) ; // FREQ = 868.95MHz wr_rfm_byte (0x75, 0x73) ; // sbsel=1, hbsel=1, fb=19 wr_rfm_byte (0x76, HIBYTE(28640)) ; // fc=28640 (868.95MHz) wr_rfm_byte (0x77, LOBYTE(28640)) ; // wr_rfm_byte (0x74, HIBYTE(0)) ; // fo=0 wr_rfm_byte (0x73, LOBYTE(0)) ; // wr_rfm_byte (0x79, 0x00) ; // fhch=0 wr_rfm_byte (0x7A, 0x00) ; // fhs=0 // Modulation wr_rfm_byte (0x70, 0xC0) ; // txdtrtscale=0, enphpwdn=0, manppol=1, enmaninv=1, enmanch=0, enwhite=0 wr_rfm_byte (0x71, 0x23) ; // dtmod=FIFO, modtyp=GFSK, fd=160 (100kHz) //wr_rfm_byte (0x72, 0xA0) ; // wr_rfm_byte (0x34, 64) ; /* // TX data rate wr_rfm_byte (0x58, 0xC0) ; // if >100kbps 0xC0, else 0x80 wr_rfm_byte (0x6E, HIBYTE(16384)) ; // txdr=16384 (250kbps) wr_rfm_byte (0x6F, LOBYTE(16384)) ; // */ // TX power = 10dBm wr_rfm_byte (0x6D, 0x1B) ; /* // RX wr_rfm_byte (0x1C, 0x8B) ; // dwn3_bypass=1, ndec_exp=0, filset=11 wr_rfm_byte (0x20, 48) ; wr_rfm_byte (0x21, HIWORD(LOBYTE(174763))) ; wr_rfm_byte (0x22, LOWORD(HIBYTE(174763))) ; wr_rfm_byte (0x23, LOWORD(LOBYTE(174763))) ; wr_rfm_byte (0x24, 0x0E) ; // rxncocomp=1, cgainx2=1, crgain=1708 wr_rfm_byte (0x25, 0xAC) ; // */ // PLL ON wr_rfm_byte (0x07, 0x03) ; __delay_cycles (const1ms) ; } //--------------------------------------------------------------------------- Если убрать комментарии, то данные перестают приниматься. Подскажите, как правильно настраивать приёмную скорость для данного модуля.
  15. Попробуйте поставить Current Strength в минимальное значение. Это будет эквивалентно изменению slew rate.
  16. Отнюдь. Я работал с парой чужих плат где клоки были заведены на обычные пины. И я всегда обходился без PLL. Доворачивал их с помощью задержек либо в ПЛИС, либо в самой микросхеме PHY. Главное было пропустить их через глобальный буфер и получить временной сдвиг в пределах 1,1-1,9нс.
  17. Попробуйте довернуть клок не с помощью PLL, а с помощью ALTCLKCTRL настроенной в качестве глобального буфера. В этом случае при прохождении клока через глобальный буфер будет получаться задержка порядка 1,2 нс, что должно быть вполне достаточно. Также задержки можно крутить и в 88E1111. Посмотрите в datasheet описание 20 регистра.
  18. Возникла необходимость повернуть кусок разводки с трассами и компонентами на 45 градусов. На 90 и 180 это можно сделать с помощью Circuit Move & Copy. А вот как на 45?
  19. 1367МН015 http://www.mri-progress.ru/products/bis-i-...sintezator-dds/ Правда насколько они покупабельны я не знаю.
  20. Не будет. Если трансивер соответствует стандарту RS485, то он совместим с любым другим трансивером, который соответствует стандарту RS485. Посмотрите для примера: https://avrlab.com/upload_files/MAX3082-1.pdf https://datasheets.maximintegrated.com/en/d...0E-MAX3079E.pdf http://www.ti.com/lit/an/slla070d/slla070d.pdf http://www.musidora.ru/format485.htm Для приведённых трансиверов входное/выходное напряжение дифференциальных линий соответствует стандарту RS485 (-7...+12), стало быть они совместимы.
  21. Если рассматривать задачу в том ключе, в каком её сформировал топикстартер, то самый правильный вариант это взять RS485 трансивер с питанием 3.3В.
  22. Взял код из RFC2435. Скомпилировал и посмотрел, что он выдаёт. Итог: D-Link соответствут RFC2435 и тому, что Вы написали, а Waveserver - нет. P.S. Насчёт заголовка Вы всё правильно сказали.
  23. Можно использовать любую микросхему из серии 74AHC/AHCT или 74VHC/VHCT. Например 3.3В->5В 74AHCT1G125 5В->3.3В 74AHC1G125 Также можно взять специализированный преобразователь 74LVC1T45. P.S. А вообще можно спокойно брать любой RS485 преобразователь с питанием 3.3В.
×
×
  • Создать...