mwip kernel module on Zynq 7000 series and AD 9361

5 ビュー (過去 30 日間)
Ratin Rahman
Ratin Rahman 2022 年 3 月 15 日
コメント済み: Ratin Rahman 2022 年 3 月 22 日
Hello, one of my colleagues uses Simulink to create an elf file that interfaces with the Zynq 7000 series and AD9361 for RF transmit / receive application. However it always resets the transmit frequency to 2.44 ghz to calibrate which is problematic for us, and I am trying to look for the IOCTL that is being called from AD9361 kernel module (thru printk/debugfs etc), But I dont see them, I only see mwipcore traces like "mwipcore 43c20000.mwbypasstx: [MMAP] size:10000 pgoff: 0 when that elf file is launched.
Question: how does the elf file interact with the 9361 device thru mwipcore? Is it thru memap interface that mwipcore opens? I know the AD 9361 IIO devices are controlled via sysfs and sysfs uses SPI to fetch/set registers, thru the 9361 kernel module. But I am not sure if the matlab application is going thru that path. The reference platform is from Matlab/AD and I create the kernel/ram disk image thru buildroot from Matlabs repo. Also why would the 9361 transmit block on simulink not honor the tx frequency thats passed along to initialize it , it always calibrates using 2.44 ghz? Is something hard coded? Thanks

回答 (1 件)

Neil MacEwen
Neil MacEwen 2022 年 3 月 15 日
Hi Ratin,
mwipcore doesn't interact with the AD9361 at all, it is used to configure the user IPCore that has been built into the FPGA bitstream by the targeting workflow. IT's basically for AXI-lite read and writes. mwbypasstx is a custom core that we include on the bitstream to allow bypassing of any custom IP core in the case when a user is doing streaming to the host.
The calibration that you see on startup is probably the calibration of the LVDS digital interface clocking between the FPGA and the AD9361, so the center frequency should have no bearing on that process. Is that the calibration you are referring to? What are you seeing that tells you the center frequency is changing?
We're looking to see if anything in our code that may change the center frequency, but we can't see anything as yet. MATLAB code calls directly into the AD9361 IIO driver, so you may be able to find a clue in there.
Thanks,
Neil
  2 件のコメント
Ratin Rahman
Ratin Rahman 2022 年 3 月 17 日
編集済み: Ratin Rahman 2022 年 3 月 17 日
Hi Neil, Thanks for your reply. Before running the app created with Simulink:
cat /sys/bus/iio/devices/iio:device0/out_altvoltage1_TX_LO_frequency
915000000
Then I run the program, which reads some values from an init file, including the transmit frequency. Which is somewhere in the 2.1 Ghz range and its a double value. This gets passed in to AD936x Transmitter block (labled txFreq below).
Trace:
--- Initial Radio Configuration (from tmp init.dat ---
--- Current AXI4-Lite Input ---
-----------------------------
--- Initial Radio Configuration (from tmp init.dat ---
::::::::::::::::::::::::::::::::::::
The application simply initialized AD936x Transmitter block at this point, the data has not pushed yet. The enable happens after 10 interation, 1 msec timeslot, so after 10 millisecond.
Then at this point I let it go idle and cat the TX_Lo again and I get 2.4Ghz
$ cat /sys/bus/iio/devices/iio:device0/out_altvoltage1_TX_LO_frequency
2400000000
There is a waveform that shows up on the spectrum analyzer as well during calibration, and looks to be a calibration sequence.
Ratin Rahman
Ratin Rahman 2022 年 3 月 22 日
Bump - could it be doing BIST? I saw this
define BIST_ENABLE (1 << 0) /* BIST Enable */
In the driver.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMulticore Processor Targets についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by