基于单片机和FPGA的扫频仪设计

发布者:SereneSoul55最新更新时间:2011-11-21 关键字:单片机  FPGA  扫频仪 手机看文章 扫描二维码
随时随地手机看文章

    一个网络的频率特性包括幅频特性和相频特性,在系统设计时,各个网络的频率特性对该系统的稳定性、工作频带、传输特性等都具有重要影响。实际操作中,扫频仪大大简化了测量操作,提高了工作效率,达到了测量过程快速、直观、准确、方便的目的,在生产、科研、教学上得到广泛运用。本设计采用数字频率合成技术产生扫频信号,以单片机和FPGA为控制核心,通过A/D和D/A转换器等接口电路,实现扫频信号频率的步进调整、数字显示及被测网络幅频特性与相频特性参数的显示。

1 系统总体方案及设计框图
1.1 系统总体方案

    将输出频率步进可调的正弦扫频信号源作为被测网络的激励Vi,可得被测网络的响应为V0。通过测量各频率点的幅度就可得到V0和Vi的有效值,两者之比就是该点的幅度频率响应;对V0和Vi进行过零比较、整形,再送到FPGA测量相位差,即可得到相频特性。
    设激励信号Vi=x(n)=Acos(ω0n+f),稳态输出信号V0=y(n)。利用三角恒等式,可将输入表示为两个复指数函数之和:,式中,。对于输入为,线性时不变系统稳态输出为。根据线性性质可知,输入g(n)的响应v(n)为:。同理,输入g*(n)的输出v*(n)是v(n)的复共轭。于是得到输出y(n)的表达式:
   
    因此。输出信号和输入信号是频率相同的正弦波,仅有2点不同:1)振幅被加权,即网络系统在ω=ω0的幅度函数值;2)输出信号的相位相当于输入有一个q(ω0)时延,即网络系统在ω=ω0的相位值。该方案幅度和相位测量的控制都通过FPGA实现,能够使测量结果精确。
1.2 系统总体设计框图
    系统通过键盘扫描得到外界设置的扫频范围和频率步进,通过调用DDS控模块控制DAC904,输出扫频信号。由于信号在被测网络阻带内会有很大的衰减,故用程控放大处理经被测网络的扫频信号之后,利用AD637进行有效值采样,LM311进行整形。信号有效值经MAXl270进行AD转换后得到有效值的数字量,整形后的信号经测相模块处理得到相位差值。在FPGA中写入2个RAM存放被测信号的有效值和相位差值。完成一次扫频后通过波形显示模块将幅频、相频曲线显示在示波器上,并将特定频率点的幅度和相位差值在液晶显示器上进行显示。系统实现框图如图1所示。



2 系统功能部分设计
2.1 扫频信号的产生

    直接数字合成(DDFS)信号源。它是一种完全数字化的方法:先将一个周期的正弦波(或者其他波形)的离散样点幅值的数字量预先存储于ROM或者RAM中,按一定的地址增量间隔读出,经D/A转换后成为不同频率的模拟正弦波信号波形,再经低通滤掉毛刺即可得到所需频率的输入信号。按此原理,DDS可以合成任意波形,且可以精确控制相位,频率也非常稳定。利用FPGA制作起来相当容易,且扫频步进实现简单。设FPGA内部的参考频率源的频率为fclk,采用计数容量为2N的相位累加器(N为相位累加器的位数),频率控制字为M,则DDS系统输出信号的频率fout=fclk/2N×M。频率分辨率为:△f=fclk/2N。[page]


    若选取晶振频率为40 MHz,频率控制字为24位,相位累加器的位数为31位,则输出频率范围为0.02 Hz~312 kHz,步进频率为40 MHz/231≈0.02 Hz。
    系统采用高速14-bit电流输出型D/A转换器DAC904制作DDS扫频信号源。通过FPGA给其20 MHz的时钟信号以输出10 Hz~100 kHz的扫频信号。该器件制作成的PCB板中,很好地考虑了接地,使得输出信号在频率为1 MHz可以达到无明显失真。DAC904采用内部基准和双极性接法,输出信号幅值范围为0~5 V。其原理图如图2所示。


2.2 幅频特性测试方案
    使用集成真有效值转换器AD637先检测出信号每个频率点的有效值,再经过A/D采样将得到的数据读到单片机中进行处理即可。该器件外接电路简单,工作频带很宽,与A/D转换器级联,可以对任何复杂波形的有效值、平均值、均方值、绝对值进行采样,测量误差小于±(0.2%读数+0.5 mV),可以达到很高的测量精度。
2.3 相频特性测试方案
    采用计数法实现相位的测量。计数法的思想是将相位量转化为数字脉冲量,然后对数字脉冲进行测量而得到相位差。对转换后的数字脉冲量进行异或运算,产生脉宽为T0、周期为T的另一路方波,若高频计数时钟脉冲周期为TCP,则在一个周期T的时间内的计数数值为:
   
式中,φx为相位差的度数。
    这种方法应用比较广泛,精度较高,电路形式简单,适合FPGA实现。
    实际测量中,当两输入信号频率较高且相位差很小时,得到的脉冲很窄,这会造成较大误差。为了克服上述缺陷,引入等精度测量的思想(如图3),采用多周期同步计数法,利用触发器产生一个宽度为被测信号fa整数倍的闸门信号。利用计数器1测量出闸门信号内通过高频脉冲fm的个数N1,利用计数器2测量出相同时间内闸门信号、异或信号、高频脉冲三者相与后的脉冲数N2。因此,相位差值为△φ=N2/N1x36 0°。测量相位的同时,在FPGA内部引入一D触发器,用一路方波信号控制另一路方波,通过触发器输出的高低以判断信号相位差范围是大于180°还是小于180°。

[page]

2.4 系统显示电路设计
    为了在示波器上显示曲线,需要通过2个D/A转换器向X、Y轴同步送入扫描信号和数据信号。X轴方向的DA转换器输出扫描信号为O~5 V的锯齿波信号,而数据信号为-5~5 V,反应了各个频率点上的信号幅值和相位,由另一片D/A转换器向Y轴方向输出。

3 系统软件设计
    系统软件设计由单片机和FPGA组成。整个系统以用户按键中断为主线,调用不同的处理函数,与FPGA中各个控制模块之间,以总线的进行数据的交换,实现了系统测量频率特性的功能。软件流程图见图4。



4 结束语
    本扫频仪利用数字频率合成技术(DDS)产生扫频信号,通过14位D/A转换器DAC904产生了10 Hz~100 kHz的正弦扫频信号,作用于被测网络。网络的输出信号通过有效值采样电路,以及由比较器LM311配合FPGA内部实现的测相电路,完成了对被测网络频率特性的测量。
    为对系统的性能进行测试,制作了一个中心频率为5 kHz。带宽为±50 Hz的阻容双T网络。测试结果表明,在网络的通带和阻带内,相频特性测量均达到了3°以内的测量精度,幅频特性的测量误差均小于50%。此外,该系统可以通过键盘输入扫频范围,通过示波器显示幅频、相频曲线,并可以在液晶显示器上显示该网络在特定频率点上的幅度、相位特性值。该系统操作简单,成本低廉,测量精确,具有很强的实用性。

 

 

关键字:单片机  FPGA  扫频仪 引用地址:基于单片机和FPGA的扫频仪设计

上一篇:几种常用的单片机系统RAM测试方法
下一篇:基于单片机的生活废(污)水处理系统设计

推荐阅读最新更新时间:2024-03-16 12:46

单片机的一些开发技巧
  很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样、那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本、体积、性能。这里介绍笔者的几个技巧,希望对大家的工作有帮助。   一.C语言中嵌入汇编语言   单片机开发中,通常我们使用C语言编写主程序,这样可以充分借助C语言工具提供的运算库函数及强大的数据处理能力。但C语言的可控性不及汇编语言,在有些对时序要求严格的处理上,我们还需用灵活性更强的汇编语言来编写。上海AVR单片机培训这样就产生了C语言和汇编语言混合编程的问题,一般分成三种方式:1.汇编语言调用C语言函数;2. C语言调用汇编语言;3. C语言中嵌入汇编语言。这里我们主要介绍第3种,即C语言中嵌
[单片机]
<font color='red'>单片机</font>的一些开发技巧
Cortex内核拿下大半江山 MCU之争渐入高潮
      随着NXP发布LPC1700系列Cortex-M3内核的MCU,围绕着ARM新宠Cortex内核的竞争已经进入白热化。   目前Cortex-M3处理器内核的授权客户数已达到28家,包括东芝、ST、Ember、Accent、Actel、ENERGY、ADI、NXP、TI、Atmel、Broadcom、Samsung、Zilog和Renesas,其中ST、TI、NXP、Atmel和东芝已经推出基于Cortex-M3的MCU产品。 在这5家中,通过收购Luminary入局的TI和ST属于最先吃螃蟹的人,到现在已经成果初现;NXP则凭借最新的V2版内核100MHz主频的LPC1700系列大有后来居上之势;至于ATMEL和TO
[嵌入式]
51单片机执行指令的过程
51单片机执行指令的过程 单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器
[单片机]
单片机按键连接方法总结
单片机在各种领域运用相当广泛,而作为人机交流的按键设计也有很多种。不同的设计方法,有着不同的优缺点。而又由于单片机I/O资源有限,如何用最少的I/O口扩展更多的按键是我所研究的问题。接下来我给大家展示几种自己觉得比较好的按键扩展方案,大家可以在以后的单片机电路设计中灵活运用。 1)、第一种是最为常见的,也就是一个I/O口对应一个按钮开关。 这种方案是一对一的,一个I/O口对应一个按键。这里P00到P04,都外接了一个上拉电阻,在没有开关按下的时候,是高电平,一旦有按键按下,就被拉成低电平。这种方案优点是电路简单可靠,程序设计也很简单。缺点是占用I/O资源多。如果单片机资源够多,不紧缺,推荐使用这种方案。 2)、第二种
[单片机]
单片机PWM波(AT89C51、ADC0808)
一、简介 此电路由AT89C51最小系统和ADC0808组成。 二、运行效果 三、代码 /*想要更多项目私wo!!!*/ #include reg52.h #define uint unsigned int #define uchar unsigned char sbit CLK = P2^4; sbit ST = P2^5; sbit EOC = P2^6; sbit OE = P2^7; sbit PWM = P3^0; void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i 120;i++); } } voi
[单片机]
<font color='red'>单片机</font>PWM波(AT89C51、ADC0808)
基于SMS的单片机无线监控系统的设计
1.引言 目前,工程机械不仅力求采用内部网络来解决各个系统间进行数据交换的问题,尤其因为需要经常工作在偏远地区,工程机械希望结合电子通讯等行业,采用发高性价比的设备来实现远程监控功能。针对网络化的要求,汽车行业已经开始引入现场总线,并且形成了统一的标准— J1939标准 ,并且相关的产品系统逐渐进入国内市场;而短消息服务业务 SMS作为 GSM网络的一种基本业务,具有:永远在线;不需拨号;价格较便宜;覆盖范围广等特点,特别适用于小流量的数据传输的应用。 GSM短信业务 、J1939数据采集 、无线监控系统都是近年来研究的热点问题,但是将三者结合起来的设备在国内为数不多。将三者集合起来,不仅可以解决单点的实时监测,更贯穿密集的网络
[单片机]
基于SMS的<font color='red'>单片机</font>无线监控系统的设计
基于FPGA的IPV6数字包的拆装实现
摘要:介绍了一种运用FPGA将IPV数据包的包头和数据部分分离并重新封装的方法。利用该方法,可以使IPV6数据包的拆装处理速度达到2Gbit/s以上。 关键词:FPGA IPV6数据包 拆装 FIFO 笔者在参加国家“863”重大专题项目“高速密码芯片及验证平台系统”的过程中,遇到了将IPV6数据包的包头和数据部分拆开,然后在数据部分送密码芯片进行加/解密处理,最后再将处理后的数据部分与包头重新封装为数据包的课题。以往对IP包进行拆装多利用软件实现,但本项目涉及到配合高速密码芯片(处理速度在2Gbit/s以上)工作的问题,显然利用软件实现IP包的拆装在速度上达不到要求。为此,笔者运用FPGA(型号为Xilinx公司的XC2V
[半导体设计/制造]
在进行单片机设计时需要注意哪些事项
1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,以8051单片机为例最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz微控制器产生的最有影响的高频噪声大约是时钟频率的3倍。 2.低噪声系列单片机 改进的技术将电源、地安排在两个相邻的引脚上,外部去耦电容在PCB设计上更容易安排。 3.时钟监测电路、看门狗技术与低电压复位 时钟监控有效与省电指令STOP是一对矛盾。只能使用其中之一。 看门狗技术是监测应用程序中的一段定时中断低电压复位技术是监测单片机电源电压,当电压低于某一值时产生复位信号。由于单片机技术的发展,单片机本身对电源电压
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved