Pull to refresh

Comments 6

Прочитав последний абзац, хотел бы узнать о том как китайские LibreSDR и аналоги программировать

В статье нашел краткое описание LibreSDR, в основе которого ad9363, а это значит, что можно пользоваться примерами Analog Devices. На wiki AD написано очень много чего интересного, а в их репозиториях есть примеры hdl описаний и прошивок для ARM ядра ZYNQ или софт-процессора Microblaze. Там же есть примеры работы из под Linux для ZYNQ.

По моему опыту - документация на ad936x скудновата. Часто не соответствует написанное тому что получается в железе. Кроме того, подход использовать библиотеки AD для программирования вынуждает использовать, скажем, Nios только для того что инициализировать трансивер.

Даташиты ad936x очень сухие. Сплошные регистры и их дефолтные знчения. Но в Wiki написано уже более дружелюбно, хотя и без конкретных туториалов как мы любим. Для fmcomms2 и fmcomms3 есть примеры Matlab и много Linux, но совсем нет для No-OS, а очень хотелось бы. За поддержкой можно обратиться к No-OS engineer zone page (там очень много информации, хотя и хаотично разбросанной в стиле форума).
По поводу несоответствия нельзя однозначно сказать что документация врёт, хотя я и столкнулся с тем что от 10 МГц микросхема не запускается, а должна (The AD9361 operates using a reference clock that can be provided by two different sources. The first option is to use a dedicated crystal with a frequency between 19 MHz and 50 MHz connected between the XTALP and XTALN pins. The second option is to connect an external oscillator or clock distribution device (such as the AD9548) to the XTALN pin (with the XTALP pin remaining unconnected). If an external oscillator is used, the frequency can vary between 10 MHz and 80 MHz. This reference clock is used to supply the synthesizer blocks that generate all data clocks, sample clocks, and local oscillators inside the device. - AD9361 Data Sheet, CLOCK INPUT OPTIONS).
Для инициализации микросхемы используется SPI, а это значит, что можно пользоваться любым микроконтроллером. Лишь бы памяти хватило. При этом в библиотеках AD необходимо лишь подправить функции для работы с SPI (под капотом примеров AD все заточено под использование ARM, MicroBlaze или NioS). Но нужно ли? Интерфейс передачи данных в/из микросхему(ы) предполагает использование ПЛИС, а раз есть ПЛИС, зачем городить еще один контроллер. Тем более что двайверы уже готовы (While the register map is provided as a convenience for those who want to understand the low level operation of the part, it is not recommended to attempt to create your own software. Analog Devices provides complete drivers for the AD9361 for both bare metal/No-OS and operating systems (Linux). The AD9361 and AD9364 share the same API. The AD9361 and AD9364 drivers can be found at:

  • Linux wiki page

  • No-OS wiki page

    Support for these drivers can be found at:

  • Linux engineer zone page

  • No-OS engineer zone page. - AD9361 Register Map Reference Manual
    UG-671)

Вот именно, раз поток квадратурных компонент один черт ПЛИС разбирает, то непонятно зачем они сделали через библиотеки.

Я думаю, что Analog Devices сделали это для высокоуровневых программистов. Использование готового библиотечного компонента (https://wiki.analog.com/resources/eval/user-guides/ad-fmcomms2-ebz/reference_hdl) не предполагает погружение в низкоуровневый С (тот который язык программирования) или тем более Verilog. Похоже что на лицо стандартный подход зарубежной инженерной школы, когда один инженер создаёт HDL дизайн, другой инженер компилирует программу под ARM, MicroBlaze, NioS, а потом это передаётся высокоуровневым програмистам, которые работают с привычным DMA, передают сформированные I/Q отсчёты и не заботятся о тонкостях радиотехники. Другое дело наш отечественный подход когда это всё требуют от одного человека, но где ж таких найти, которые могут и с ПЛИС поработать, а потом и программку под MicroBlaze состряпать.

Sign up to leave a comment.

Articles