1 概述
研究自制sdr设备有一段时间了,由于版主忘性大, 特开贴记录这段时间积累的问题和设想的技术方案。
2 方案
射频前端和adc板卡分别由李师傅和李师傅设计制作,版主面对数据接口和控制接口进行编程。
硬件:zedboard
工具:vivado套件
环境:win10
2.1 adc数据读取
根据设想,adc数据由pl部分采集并交替缓存在两块FIFO中,FIFO填满时分别通过两个irq中断通知ps前来访问。
因为还没弄明白ps的计算能力,所以现在还不确定是把40MHz的数据直接给ps处理还是在pl中下变频后再给ps。
需要考虑的问题一是ps的计算能力,二是数字中频有十兆带宽,如果看不到频谱感觉有点亏,所以要想办法既能看到这10M的频谱,又能减少ps的计算量。解决这个问题的一个方案是使用vivado自带的FFT ip核,实现N=2**m(m=3~16)点FFT的变换,算下来分辨率能达到610Hz,也许够用。
FIFO使用bram搭建。
ps中运行arm-Linux系统。
需要解决的技术问题有
- 如何将中断号和FIFO基地址写入设备树;
- 在驱动程序中获取中断号和基地址;
- 注册中断处理函数;
- 在中断处理函数中读FIFO并缓存至内核空间;
- 提供用户程序的系统调用。
参考链接
2.2 控制接口
八字没一撇的事先不提了。
3 用户程序设计
可以仿照hdsdr、sdrsharp和websdr来做,提供直接采样数字中频频谱、数字下变频后的窄带频谱、音频频谱、功率表、中频带宽滤波器、解调器、中频和音频录制等。