目录

一、理论基础

二、核心程序

三、测试结果


一、理论基础

Sigma-Delta ADC是一种目前使用最为普遍的高精度ADC结构,在精度达到20位以上的场合,Sigma-Delta是必选的结构。通过采用过采样、噪声整形以及数字滤波技术,降低对模拟电路的设计要求,实现了其他类型的ADC无法达到的高精度和低功耗。通常情形下,各种类型ADC的精度与速度关系如图1所示。

Sigma-Delta ADC的运作过程,就是把待测信号Vin与参考电压(±Vref)之间的差值进行不断的累积并通过反馈令这个差值趋于零。

实质上ADC就是除法器。

Dout=(Vin/Vref) * 2^n

一个分辨率为n位的ADC完成了一个以Vref为除数的除法,并且把结果用n位二进制数来表达。

那么什么是Sigma-Delta ADC?

Sigma-Delta最终实现的,与所有的ADC一样,就是完成除法。模拟集成电路中除法器是不可实现的,但是模拟电路可以非常好的实现加法和减法(用运放及模拟开关对电容进行充放电)。Sigma-Delta ADC正是用加法和减法去实现除法的一种方式。

具体来说,如图2所示,Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环路。调制器以大大高于模拟输入信号带宽的速率运行,以便提供过采样。模拟输入与反馈信号(误差信号)进行差动(delta)比较。该比较产生的差动输出馈送到积分器(sigma)中。然后将积分器的输出馈送到比较器中。比较器的输出同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中。

系统分为两个部分,

第一部分是sigma delta ADC把接收天线接收的交流信号转化成数字信号。

输入频域因为是AM信号,所以在5K~2M HZ之间,ADC的精度要求不限,能满足一般音频处理即可(满足演示要求,建议采样64MHZ上限,8位)此部分设计需要用到FPGA开发板上的2个LVDS输入端口。 此部分ADC分为两个部分modulator和decimator。

第二部分输入为第一部分的数字输出信号,进行一般的软件无线电设计即可。按照一般收音机的设计,将硬件全部由软件(FPGA)来替代。收音机的挑台旋转按钮可用开发板上的开关来设计。

二、核心程序

`timescale 1 ns / 1 ns
module tops(i_clk,i_rst,i_ADC,i_sel,i_adjust1,i_adjust2,o_ADCLK2,o_DACLK2,o_DAC);input             i_clk;
input             i_rst;
input signed[9:0] i_ADC;
input             i_sel;
input             i_adjust1;
input             i_adjust2;
output            o_ADCLK2;
output              o_DACLK2;
output signed[9:0]o_DAC;                  wire CLK2;
pllclk2 pllclk2_u(.areset (i_rst),.inclk0 (i_clk),.c0     (o_ADCLK2),.c1     (CLK2),.locked ());assign o_DACLK2 = ~CLK2;wire signed[7:0]tmps;
AMdemods AMdemods_u(.i_clk     (CLK2),.i_rst     (i_rst),.i_din     (i_ADC[9:2]),.i_sel     (i_sel),.i_adjust1 (i_adjust1),.i_adjust2 (i_adjust2),.o_am      (),.o_dout    (tmps));                  assign o_DAC = {tmps[7],tmps[7],tmps};                     endmodule
A01-120
`timescale 1 ns / 1 nsmodule am_signal(i_clk,i_rst,o_dout);parameter NN  = 22949673;
parameter NN2 = 22949673*20;
parameter AM  = 1;
input i_clk;
input i_rst;
output signed[7:0]o_dout;wire signed[9:0]o_fsin;
wire signed[9:0]o_fcos;
nco_ip nco_ip_u1(.phi_inc_i (NN),.clk       (i_clk),.reset_n   (~i_rst),.clken     (1'b1),.fsin_o    (o_fsin),.fcos_o    (o_fcos),.out_valid ());wire signed[9:0]o_fsin2;
wire signed[9:0]o_fcos2;
nco_ip nco_ip_u2(.phi_inc_i (NN2),.clk       (i_clk),.reset_n   (~i_rst),.clken     (1'b1),.fsin_o    (o_fsin2),.fcos_o    (o_fcos2),.out_valid ());                   reg signed[19:0]tmps;
always @(posedge i_clk or posedge i_rst)
begin  if(i_rst)begintmps <= 20'd0;end
else begintmps <= o_fsin * o_fcos2;end
end                     assign o_dout = tmps[18:11];endmodule 
`timescale 1 ns / 1 ns
module AMdemods(i_clk,i_rst,i_din,i_sel,i_adjust1,i_adjust2,o_am,o_dout);parameter NN2 = 22949673*20;input             i_clk;
input             i_rst;
input signed[7:0] i_din;
input             i_sel;
input             i_adjust1;
input             i_adjust2;
output signed[7:0]o_am;
output signed[7:0]o_dout;   reg signed[7:0]tmps;
am_signal am_signal_u(.i_clk (i_clk),.i_rst (i_rst),.o_dout(o_am));always @(posedge i_clk or posedge i_rst)
beginif(i_rst)begintmps <= 8'd0;end
else beginif(i_sel == 1'b1)tmps <= o_am;else  tmps <= i_din;       end
end                 //AM demodulation
reg[31:0]PHASE;
always @(posedge i_clk or posedge i_rst)
beginif(i_rst)beginPHASE <= NN2;end
else beginif(i_adjust1 == 1'b1)PHASE <= NN2 + 32'd1;elsePHASE <= PHASE;if(i_adjust2 == 1'b1)PHASE <= NN2 - 32'd1;else    PHASE <= PHASE;end
endwire signed[9:0]o_fsin;
wire signed[9:0]o_fcos;
nco_ip nco_ip_u(.phi_inc_i (PHASE),.clk       (i_clk),.reset_n   (~i_rst),.clken     (1'b1),.fsin_o    (o_fsin),.fcos_o    (o_fcos),.out_valid ());        reg signed[17:0]tmps2;
always @(posedge i_clk or posedge i_rst)
begin  if(i_rst)begintmps2 <= 18'd0;end
else begintmps2 <= tmps * o_fcos;end
endfilter filter_u(.i_clk (i_clk),.i_rst (i_rst),.i_din (tmps2[16:9]),.o_dout(o_dout));
endmodule 

三、测试结果

首先使用MATLABAM收音机的基本功能进行验证

下面我们主要介绍FPGA部分,FPGA部分分为三个部分:

这里,我们主要基于DE0开发板进行设计,下面首先分析一下DE0开发板。

整个系统的接口含义如下所示:

表一、顶层模块接口定义

名称

位宽

方向

描述

备注

I_clk

1

输入

时钟

上升沿有效,频率为开发板的晶振

I_rst

1

输入

复位

单周期低电平有效,下降沿有效

I_ADC

10

输入

A/D采样数据

有符号二进制

O_ADCLK2

1

输出

A/D采样时钟

O_DACLK2

1

输出

D/A采样时钟

O_DAC

12

输出

D/A采样数据

偏移二进制

管脚分配如下所示:

基于FPGA的sigma delta ADC软件无线电设计相关推荐

  1. 基于FPGA的简易DDS信号发生器的设计与验证

    基于FPGA的简易DDS信号发生器的设计与验证 一,理论介绍 补充:举例理解 二,代码实现 1,实验目标 2,MATLAB代码 3,verilog代码及实现思路 一,理论介绍 DDS 是直接数字式频率 ...

  2. 基于FPGA的音频处理芯片的设计

    基于FPGA的音频处理芯片的设计 时间:2009-01-07 10:00:18 来源:维库电子市场 作者:刘虹 黄涛 徐成 1 引言 随着数字技术日益广泛的应用,以现场可编程门阵列FPGA(Field ...

  3. 基于FPGA的简易DDS信号发生器的设计(一)

    写这篇文章的本意不是为了探讨AD9767怎么使用,因为9767的控制实在是太简单了,准备好数据直接输出即可,和网上大多数的并行DA输出基本上一模一样,更麻烦的反而是硬件方面.发文的原因是最近一位很细心 ...

  4. 基于FPGA的CAN总线控制器的设计(下)

    今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇.今天带来第三篇,下篇,程序的仿真与测试以及总结.话不多说,上货. 导读 CAN 总线(Controller Area Netw ...

  5. 基于 FPGA 的模拟 I²C协议设计(中)

    今天给大侠带来基于FPGA的 模拟 I²C 协议设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,I²C 协议的具体实现.话不多说,上货. 之前也有相关文章介绍,这里超链接一下,仅供各位大侠参考. 源 ...

  6. 基于FPGA的双路低频信号发生器设计

    基于FPGA的双路低频信号发生器设计 系统结构框 本设计是以Altera公司的可编程芯片做载体,运用Verilog作为软件设计工具,从而实现DDS原理,即信号发生器的核心思想.再加上信号发生器的硬件电 ...

  7. 基于FPGA的除法器原理介绍及设计实现

    基于FPGA的除法器原理介绍及设计实现 引言应用 在FPGA的设计应用领域里,许多电路需要用到除法器,而在硬件描述语言里却没有直接的除法器"%","/"可以直接 ...

  8. 基于FPGA的CAN总线控制器的设计(上)

    今天给大侠带来基于FPGA的CAN总线控制器的设计,由于篇幅较长,分三篇.今天带来第一篇,上篇,CAN 总线协议解析以及 CAN 通信控制器程序基本框架.话不多说,上货. 导读 CAN 总线(Cont ...

  9. 源码系列:基于FPGA的数字电压表(AD)设计

    今天给大侠带来基于FPGA的数字电压表设计,附源码,获取源码,请在"FPGA技术江湖"公众号内回复"数字电压表设计源码",可获取源码文件.话不多说,上货. 设计 ...

最新文章

  1. web服务器负载架构
  2. 关于jedis2.4以上版本的连接池配置,及工具类
  3. java游戏暂停_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...
  4. java list move_Java中List最重要的特性
  5. 【转载】徐国洪:好耶向移动广告技术产品转型
  6. MyBatis的XML配置文件(二)
  7. 让MacOS废纸篓中超过30 天的文件自动清除
  8. Know Difference between Oracle Reserved Words and Keywords
  9. Web前端-课程设计-网易严选
  10. 短视频抖音广告投放数据分析报告, 游戏行业抖音广告投放占比最多
  11. 微信小程序开发——获取APPID
  12. 数字逻辑练习题(二)
  13. oracle14047,Oracle数据库之ORA-14047
  14. 老男孩教育50期学员
  15. 手机:运行内存,机身内存,内存卡的区分
  16. 枚举型、注释(待补充)
  17. 开源项目CIIP(企业信息管理系统框架).2018.1.0910版更新介绍-上周工作总结
  18. Redis的惊鸿一瞥
  19. 修改ubuntu中ens33的
  20. 2019年第十届蓝桥杯C/C++ A组国赛赛后总结(北京旅游总结)

热门文章

  1. phpstorm 激活码
  2. 被裁第26天,已经面了32家公司,基本都是一轮游!29岁一事无成,真该好好反思一下!...
  3. wch南京沁恒CH342,usb转串口芯片,兼容cp2105
  4. 优云实名认证_玩无人机要实名登记了,你支持吗?优云UBOX代飞100小时
  5. php 引用传递、引用返回和取消引用以及unset
  6. 【信管5.2】估算活动资源与持续时间
  7. 计算机操作系统感悟随笔--内存空间管理
  8. ipconfig /flushdns的使用
  9. 【新】华为OD机试 - 射击比赛(Python)| 刷完获取OD招聘渠道
  10. Bootstrap‘s dropdowns require Popper (https://popper.js.org)