电赛在即,再给大家提供一个小技能,并一些有用的Verilog代码,对于做高频电路题目的同学有一定的参考。
以前介绍过我们用小脚丫FPGA的一根GPIO管脚制作的FM发射机,今天再介绍一个用FPGA搭配3个电阻、1个电容制作的1bit SDR接收机,接上喇叭,可以收听中、长波电台,连ADC都没有用到。
该项目由Alberto Garlassi分享在Hackaday.io上,并在Github上开源了其Verilog代码,巧的是,他使用的FPGA正好是我们小脚丫FPGA上用到的Lattice XO2系列。
原理图用KiCad绘制,可以看出左侧的3颗电阻以及1颗电容。
在Hackaday上的一些简介:
创建这个项目是为了学习 Verilog 并享受 FPGA 和 SDR 带来的乐趣。主要目标是使用尽可能少的组件接收AM广播电台。所选择的FPGA莱迪思 MachXO2 也是可以使用的最简单的组件之一。我能够用20米长的电线作为天线,从位于三大洲的数千公里处接收电台。最小的BOM包括一块30欧元的 Lattice MachXO2分线板、三个电阻器、一个电容器和一个扬声器。为了获得更好的性能,最好添加一个晶体振荡器,灵敏度和音频质量比使用内部振荡器更好。
天线直接连接到输入引脚,因为您知道静电荷会损坏电路板。当您厌倦了破纪录的元件数量时,最好添加一个串联电容器和两个限流二极管。使用 RC 滤波器、串联电容器和有源扬声器,音频更实用。
无线电架构非常标准,直接变频接收器。我们有一个 ADC、一个混频器、两个用于正交信号的 CIC 滤波器、一个采用信号平方和的平方根的 AM 解调器,以及一个用于音频输出的 PWM。频率调谐由NCO获得,它是一个 64 位累加器,其增量由UART控制,可以从控制PC发送一些字符并更改频率。为此,该板有一个备用的UART通道。主通道用于编程,需要将USB转串口转换器的第二通道通过在电路板下侧焊接桥接器连接到FPGA。
ADC 使用 LVDS 比较器作为输入,但它的工作方式与 Sigma-Delta 转换器不同,例如http://www.latticesemi.com/-/media/LatticeSemi/Documents/ReferenceDesigns/SZ2/FPGA-RD-02047-1-5-Simple-Sigma-Delta-ADC.ashx?document_id=35762
在这种情况下,反馈信号通过使用低RC时间常数来跟踪输入。在射频下,这是不切实际的,反馈用于通过一个大的RC常数将比较器保持在开关电平附近。采样是通过叠加到所需信号上的随机 RF 噪声来执行的。我们在 80 MHz 下对 6 KHz 带宽信号进行过采样。对此的简要解释:如果输入是真正随机的,那么它在一定时间内的平均值将几乎为零。但它与来自远处发射机的非常小的无线电信号相加,这足以对输出产生轻微影响。https://en.wikipedia.org/wiki/Oversampling
CIC 滤波器抽取为 4096,因此 ADC 分辨率的理论增加为 6 位。
最好在较低的 CIC 抽取后使用 FIR 滤波器。是可以做到的,不是所有的FPGA都用到了。莱迪思没有针对它的 IP,MachXO2 缺少 DSP 模块,而且从未打算用于它。
另一个低组件数收音机:https://www.i2phd.org/armradio/index.html
自制的 1 位 ADC GPS 接收器,基于下面的文章:http://s53mv.s5tech.net/navsats/theory.html
以上是作者对此项目的介绍,如果使用Intel版本的小脚丫FPGA核心板,可以使用其DSP模块获得更高的性能,有兴趣的同学可以尝试一下。
在Github上有完整的工程内容,基于Lattice XO2 FPGA的以及基于Intel Cyclone 3 FPGA版本。
如下是主要代码的截图:
有我们这款电赛综合技能训练板的同学,可以在这个板子上验证一下,即便不适用高速ADC,使用板上的高速比较器(TP1961-TR),也可以轻松测试一下。
责任编辑:haq
全部0条评论
快来发表一下你的评论吧 !