数字信号频率测量电路的设计11.docx
《数字信号频率测量电路的设计11.docx》由会员分享,可在线阅读,更多相关《数字信号频率测量电路的设计11.docx(31页珍藏版)》请在冰豆网上搜索。
数字信号频率测量电路的设计11
第11章数字信号频率测量电路的设计
目标
通过本章的学习,应掌握以下知识
●使用系统设计的基本步骤
●设计报告的撰写目的
●设计报告的结构
●结合实际情况选择合适的设计方案
●将使用系统分解成一系列基本电路模块实现复杂问题简单化
●单元电路技术指标对使用系统技术指标的影响
●如何用一系列基本电路组成使用系统
●系统测试方案的制定
●测试数据的分析
●系统设计总结
引言
学习的目的在于使用,同时边工作边学习也是一种非常有效的学习方法,因为具体的工作需求将为学习提出一个明确的目标。
在完成一个使用系统的设计以后,设计者还应该向用户提供一份设计报告,这个设计报告详细地描述使用系统的设计过程。
对于一个学生来说,撰写设计报告的过程还是不断发现问题,解决问题的过程。
如果你想说服用户,那么你必须首先说服自己。
设计报告应该一边工作一边撰写。
任何设计都很难一次成功,设计需要不断地进行完善,设计报告也同样需要不断地修改。
在这个不断地完善和修改的过程中,设计者的工作能力必将获得提高,这点对于一个学生应是最值得关注的。
一份完整的设计报告通常包括摘要、关键词、设计要求、方案论证、系统设计、单元电路设计、系统连调、实验数据分析、设计总结以及参考文献等部分。
摘要部分通常利用100~200个字对所设计的系统进行介绍;关键词更加简练,它利用3~5个词对所设计的系统特点进行描述。
除过摘要、关键词和参考文献部分,本章将通过“数字信号频率测量电路的设计”的设计过程对设计报告其它部分的撰写方法进行介绍。
在完成这个过程的同时,读者也将学习到如何将前面学习的知识使用到实际工作之中。
本章介绍的设计报告撰写格式为一种推荐格式。
无论采用什么样的设计报告撰写格式,设计报告都必须清晰地描述使用系统的设计过程。
11.1设计要求
这里给出的设计要求来源于1997年全国大学生电子设计竞赛试题——简易数字频率计(B题)。
随着技术的发展和学校教学水平的提高,当时具有相当难度的设计要求在今天已经变得不那么困难了,但是利用它仍然能够学习如何综合前面的单元知识,学习如何完成一个使用系统的设计。
本题目在作者现在对参加全国大学生电子设计的同学进行赛前训练过程中仍然使用。
■基本要求
□频率测量
测量范围
信号形式:
方波、正弦波;信号幅度:
0.5V~5.0V;信号频率:
1Hz~1MHz。
测量误差≤0.1%
□周期测量
测量范围
信号形式:
方波、正弦波;信号幅度:
0.5V~5.0V;信号频率:
1Hz~1MHz。
测量误差≤0.1%
□脉冲宽度测量
测量范围
信号形式:
方波;信号幅度:
0.5V~5.0V;脉冲宽度≥100us。
测量误差≤1%
□数字显示电路,显示刷新时间1~10s连续可调;具有自校准功能;制作满足要求的稳压电源。
■扩展要求
□扩展频率测量范围为0.1Hz~10MHz;测量误差≤0.01%(最大计数闸门时间小于等于10s)。
□测量周期方波信号的占空比,占空比变化范围:
10%~90%;测量误差≤1%。
□在1Hz~1MHz频率范围及测量误差≤1%的条件下,完成小信号的频率测量,并提出抗干扰措施。
使用MSP430微控制器芯片并不能完全实现上面给出的全部竞赛要求,还需要一些模拟电路器件的支持。
例如在被测量信号的幅度方面,对于幅度低于最低高电平数值的方波信号,MSP430微控制器芯片将不能识别,这将需要电压放大器的支持;对于存在负电位的正弦波信号,这时还将需要使用比较器芯片将其转换为方波信号。
同样,完成稳压电源设计这样的要求进一步需要更多其它电路器件的支持。
这里只考虑实现对满足MSP430微控制器芯片要求的数字信号,在设计要求频率范围之内的频率测量、周期测量、脉冲宽度测量、占空比测量以及测量控制电路和测量结果显示电路的设计。
11.2设计可行性分析
实现一种系统功能或者技术指标通常具有多种可行的设计方案,每一种设计方案都具有它自己的优点和缺点。
不存在一种最好的设计方案,只有一个最佳的设计方案。
在所有可以采用的方案之中进行选择的过程被称为方案论证。
方案论证的过程是一个折中的过程,设计者需要在所能实现的系统功能、技术指标、成本和所需要技术条件的支持等方面进行权衡。
方案论证体现了设计者知识面的宽度。
鉴于本书专门用来描述MSP430系列微控制器的使用,内容要求使用这种微控制器来实现数字信号时间方面技术指标的测量,因此本节将不涉及到使用其它器件实现设计要求的分析。
从严格意义方面来说,本节不能算成设计方案的论证和选择,因此这里将标题写成“设计可行性分析”。
如果要进行真正的方案论证,所有考虑的方案都需要作这样的分析,然后再进行对比,最后做出选择。
数字信号的脉冲宽度τ为高电平的持续时间,单位为s。
信号的周期T表示一个完整的信号波形所占用的时间,单位为s。
描述信号周期这种时间特性的另一个技术指标为频率,信号频率通常用f表示,它和周期的关系为
f=1/T(11-1)
频率的单位为Hz。
信号频率的物理含义为单位时间包含信号的完整波形的个数。
占空比为脉冲宽度τ和信号的周期T的比值,为一个无量纲的参量。
由于占空比小于等于1,通常采用百分比进行表示。
使用MSP430微控制器的定时器进行数字信号的频率测量具有2种方法,计数法和定时法。
计数法直接对被测量的信号进行计数,适应于较高的被测信号频率;定时法直接测量被测信号的周期,适应于较低的被测信号频率。
由于信号周期和信号频率能够通过式(11-1)进行换算,这样只要获得信号频率,或者周期,两者之中的任意一个,利用C语言的算术运算能力就能够获得另外一个。
脉冲宽度的测量类似于周期的测量。
如果被测信号的前沿触发定时器的计数工作,脉冲宽度测量时,接着的被测信号后沿将停止计数工作;周期测量时,需要等到下一个被测信号前沿才停止计数工作。
在获得信号的脉冲宽度和周期以后,完成一次除法运算就能够获得占空比。
由上面分析可以得出结论,使用MSP430微控制器能够完成数字信号的频率测量、周期测量、脉冲宽度测量和占空比测量。
这些是一些定性的分析,下面还需要进行定量的分析,看是否能够满足技术指标的要求。
首先考虑数字信号频率测量的上限要求。
设计的基本要求中测量频率的上限为1MHz,扩展要求为10MHz。
如前所述,对于较高的信号频率适合采用计数法。
这时被测的数字信号作为定时器的计数信号,因此限制频率测量上限的MSP430微控制器技术指标等同为定时器最高时钟频率fTA。
这项技术指标对于MSP430G2231芯片和最高系统时钟频率相同,为16MHz。
对于MSP430F2619芯片,技术手册中给出的更加详细,当电源电压为3.3V时,为16MHz;当电源电压为2.2V时,为10MHz。
这2种芯片都满足要求。
接着考虑测量误差的要求。
设计的基本要求为测量误差≤0.1%,扩展要求为测量误差≤0.01%。
满足基本要求的测量数据需要至少4位有效数字;满足扩展要求的测量数据需要至少5位有效数字。
5位有效数字需要的计数最大值为99999,这个数值超出了MSP430微控制器内部16位计数器的最大计数范围,65535。
使用定时器中断可以扩展计数范围。
在定时器中断服务程序中完成一个变量的加1操作。
这个变量的数值和计数器内部数值的联合就可以实现计数范围的扩展,如下式所示。
counter=couner_interrupt×0x10000+TAR(11-2)
这里,counter为对数字信号的计数值;couner_interrupt记录了计数过程发生的定时器计数溢出次数;TAR为Timer_A的计数寄存器。
这个方法也可以满足定时法直接测量大信号周期对计数范围的要求。
限制测量误差的再一个因素为计数闸门的稳定度和精度。
如果采用软件的方法,通过延迟函数实现计数闸门,这时的限制因素为MSP430微控制器系统时钟信号的频率稳定度,因为精度可以通过调整循环次数来满足。
在本书第7章给出的数字信号频率测量数据显示,使用DCO时钟源的频率测量数据最多只能达到4位稳定的有效数字,使用晶体时钟源的频率测量数据能够达到6位稳定的有效数字。
这个测量结果显示,MSP430微控制器的时钟信号源将必须采用晶体振荡器。
由于采用定时器中断扩展了计数范围,因此可以采用1种宽度的计数闸门。
当采用10s时间宽度的计数闸门,要获得5位有效数字的测量结果,那么对大于1000Hz的数字信号就可以使用计数法来直接测量频率。
被测信号的频率越高,测量结果的有效数位越多。
对于小于这个频率的信号则必须采用定时法来测量周期。
由于这时计数器对MSP430微控制器的时钟信号进行计数。
被测信号频率越低,则周期越大,测量结果的有效数位越多。
频率为1000Hz信号对应的周期为1000us,要求达到5位有效数字的计数值,MSP430微控制器的系统时钟周期需要小于0.1us,即系统时钟频率需要大于10MHz。
MSP430G2231芯片不支持高频晶体时钟信号源,这个分析结果要求只能使用支持16MHz晶体时钟信号源的MSP430F2619芯片。
如果采用16MHz晶体时钟,采用定时法进行时间测量的最小时间分辨率为0.0625us。
这个最小时间分辨率能够满足脉冲宽度≥100us,测量误差≤1%,即测量误差小于1us,的信号脉冲宽度的测量要求。
综上所述,使用MSP430微控制器能够完成数字信号的频率测量、周期测量、脉冲宽度测量和占空比测量,而且满足具体技术指标的要求。
使用MSP430微控制器在选择10s计数闸门的情况下是不能满足显示电路显示刷新时间1~10s连续可调的要求,因为这里完成1次测量所需要的时间大于10s。
降低计数闸门的时间虽然可以加快测量速度,但是将降低周期测量精度。
在竞赛中,完成扩展要求能够获得更好的成绩,因此可以考虑放弃显示电路显示刷新时间这个要求。
如果不希望放弃显示电路显示刷新时间这个设计要求,芯片的系统时钟频率要求达到100MHz以上,这时满足周期测量精度的计数闸门宽度将可以选择1s,这样就能够同时满足显示刷新时间的要求。
目前MSP430微控制器的最高系统时钟频率为25MHz。
11.3系统设计
系统设计的目的是使复杂问题简单化。
通过系统设计这个步骤,设计者可以把使用系统划分成一系列电路模块。
每个电路模块只实现一种独立的功能。
这样不仅可以简化系统的设计,而且方便多个设计者合作完成任务。
大学生电子设计竞赛为3人1组参加竞赛,竞赛目的之一就是培养学生的协作精神。
把使用系统划分为怎样大小的模块没有固定的模式,需要具体问题具体对待。
对于一个刚开始学习设计使用系统的学生,系统应该分解成已经学习过的电路模块,这样也可以培养理论联系实际的学风,这也是竞赛的目的之一。
11.3.1硬件电路部分
使用MSP430微控制器实现数字信号的各项时域参量测量的核心模块为定时器。
MSP430F2619芯片能够提供2个16位的定时器,Timer_A和Timer_B。
使用这两个定时器的任意一个都能够实现所要求时域参量的测量。
本设计使用Timer_A。
MSP430F2619芯片的附属电路包括复位电路和时钟电路。
前者可以参考图1.3所示的MSP430芯片的最小系统电路图,这里的电阻R1和电容C1构成微控制器的复位电路;后者可以参考图3.3所示的XT2谐振晶体电路图,这里晶体现在需要选择16.0000MHz谐振频率的器件,电容C1和C2的推荐值为15pF。
测量结果的显示使用7段数码管。
MSP430微控制器使用同步串行接口输出数码管的显示代码,仍然使用8位移位寄存器(串行输入,并行输出)74164芯片将同步串行格式数据转换为并行格式的数据来驱动数码管。
由于要同时满足从0.10000Hz到10.000MHz范围的5位有效数字的显示,这里考虑使用科学记数法这样的格式来同时满足显示精度和显示范围的要求。
使用科学记数法,上述频率测量范围以Hz为单位可以表示为1.0000×10-1到1.0000×107。
这样将需要使用5个数码管来显示测量数据的有效数位、1个数码管显示幂的符号、1个数码管显示幂的数值,共计7个数码管就能够完成整个频率范围的显示。
显示测量的周期,以us为单位,使用科学记数法整个测量范围可以表示为1.0000×107到1.0000×10-1。
同样使用7个数码管就能够显示整个周期范围。
这样的显示精度和显示范围也足够显示脉冲宽度和占空比的测量数据。
再考虑到需要显示4种测量数据,因此有必要再添加第8个数码管用来显示数据的种类,这样显示电路将包括8个数码管。
包含8个数码管,具有同步串行接口的显示电路可参考图5.4所示的采用同步串行接口的2位数码管显示电路,将其扩展来实现。
鉴于篇幅关系,这里不给出具体的电路图。
需要注意,作为设计报告,所有的硬件电路图,需要的元器件型号和参数都应该以附录的形式给出。
考虑到需要显示4种测量数据,因此还需要添加按键控制电路。
因为现在只需要在4种测量数据之间进行切换,并不需要输入数据,这里只要使用1个按键即可。
按键动作的识别采用MSP430微控制器的并行输入/输出管脚的中断功能来实现。
1位独立式按键的原理电路如图6.2所示。
11.3.2程序框图
基于微控制器完成电路设计的主要任务是设计控制程序。
正像硬件电路设计首先要把整个电路分解成一系列电路单元一样,控制程序也需要被分解为一系列程序单元。
将硬件电路分解成的电路单元应该是设计者已经掌握的电路模块,例如前面叙述的数码管显示电路、按键输入电路以及MSP430微控制器芯片内部的定时器模块。
这里的程序单元也应该是已经掌握的、具有单一功能的单元。
数字信号频率测量电路的硬件组成比较简单,各个单元之间的关系也比较明了,因此没有给出各个组成电路单元之间的连接关系。
这里不仅讨论所需要的程序单元,还将给出这些程序单元之间的连接关系,即程序框图。
程序单元包含数码管显示电路和按键输入电路对应的控制程序单元,这些部分可以直接使用已经使用过的程序模块。
由于现在被测量信号的频率范围宽,因此需要使用计数法和定时法这两种方法,并且还需要选择合适的方法,因此这部分为这里的叙述重点。
已经决定使用定时器中断的方法扩展计数器的计数范围,这里可以使用10s的固定计数闸门。
要保证测量结果具有5位有效数字,使用计数法时信号频率必须大于等于1kHz。
测量时首先使用计数法进行信号的频率测量,如果计数结果大于等于10000,将认可这个频率测量结果,并将这个结果送去显示;如果不满足计数结果大于等于10000这个条件,则使用定时法再次进行信号的周期测量,周期测量的结果不再进行判断,直接送去显示。
上述的测量过程按照被测信号的实际频率,分别直接获取了信号的频率,或者周期。
设计要求能够完成整个频率范围内的信号频率和周期测量。
这个要求可以使用频率和周期互为倒数的数学关系式通过计算来实现。
为保证计算的精度,存储频率和周期的变量需要采用浮点类型的数据格式。
无论直接获得被测信号的频率,还是周期,它们都将通过数学运算获得另一项技术指标。
脉冲宽度测量的最小值为100us。
按照这个要求,它对应的最小信号周期为100us,换算为信号的最大频率为10kHz。
这个频率处于采用计数法,直接测量信号频率的范围。
这意味着在采用计数法,或者定时法,进行测量的时候都需要测量脉冲宽度。
鉴于这种情况,脉冲宽度的测量应该在完成频率,或者周期,测量之后进行。
由控制按键输入的信息决定,在需要显示脉冲宽度,或者占空比,的情况下进行脉冲宽度测量,并同时计算占空比。
存储脉冲宽度和占空比的变量的数据类型也选择为浮点数据类型。
每个测量循环完成全部4种技术指标存储变量的刷新。
如果当前不测量脉冲宽度,或者占空比,简单地将它们对应的变量赋值0。
数码管显示电路一次只能显示4种测量结果中的1种,这时使用按键电路实现这个选择。
按键处理模块在4中测量数据中选择1种送往下一级软件模块。
按键处理模块同时还要给显示测量数据种类的数码管的显示缓冲存储器赋值,使其能够显示一个代表当前所显示的技术指标的标志。
由于现在使用的显示数据的数据格式为浮点数据类型。
这种数据类型需要被转换为一种方便使用的格式,独立的有效数字部分和幂的部分。
这里同时完成有效数字的数位分离、并向各个显示缓冲存储器赋值。
图11.1数字信号频率测量电路的程序框图
图11.1给出数字信号频率测量电路所需要的控制程序的程序框图。
就像数学中的函数表达式、曲线图和数字表格都可以用来描述同一个关系,但是各有特点。
这里的程序框图和前面的文字也是描述同样的工作过程,但是它们也是各有特点。
利用文字描述工作过程能够更加清晰地解释思考问题方法的优点,程序框图具有工作流程清楚的特点。
芯片复位以后,“MSP430系统初始化”部分完成相关MSP430芯片寄存器的配置。
每个测量循环都是从使用10s闸门的计数法测量信号的频率开始。
如果测量结果具有大于等于5位有效数字的精度,即被测信号频率大于等于1.0000kHz,则将测量结果向信号频率变量frequency赋值。
周期变量period的数值通过数学计算获得。
如果计数值小于10000,这时的测量结果达不到5位有效数字的精度,即被测信号频率小于1.0000kHz,转为使用定时法测量信号的周期,测量完成以后向信号周期变量period,赋值。
频率变量frequency的数值通过数学计算获得。
接着根据输入的键值决定是否需要进行脉冲宽度,或者占空比,的测量。
如果需要,使用定时法测量脉冲宽度,测量完成以后向脉冲宽度变量width赋值。
占空比变量duty的数值通过数学计算获得。
否则直接对这两个变量清零。
每次都将对上述的4个变量内容进行刷新。
接着根据按键选择的显示内容,完成相应技术指标的显示。
然后下一次测量循环。
11.4单元电路设计
数字信号频率测量电路的硬件电路单元包括数码管显示电路、1位按键电路、MSP430微控制器芯片及其附属电路。
MSP430微控制器的附属电路由供电电路、复位电路和高频振荡器XT2的外部谐振晶体电路组成。
这些部分在本书前面的章节都已经描述,这里将不再重复。
本节重点描述MSP430微控制器控制程序的各个组成部分,这也是基于微控制器进行使用电路开发的最主要工作。
控制程序的组成部分为MSP430系统初始化、数码管显示电路的显示内容选择、基于Timer_A的数字信号频率/周期测量和脉冲宽度测量、浮点类型数据格式到科学计数法表示格式转换以及数码管显示的驱动。
11.4.1MSP430系统初始化
MSP430系统初始化部分包括6个部分。
第1部分为关闭“看门狗”,不使用芯片的这个功能当然降低了软件工作稳定性,不过降低了使用程序的开发难度。
首先完成要求的设计任务,然后再设法提高系统工作的稳定性。
第2部分配置MSP430系统的时钟。
这里的时钟信号源选择高频振荡器(XT2),晶体的谐振频率选择16MHz。
这部分的内容可以参考程序示例3.2提供的时钟XT2初始化函数clkxt2_begin()。
该函数配置高频振荡器(XT2)作为系统时钟MCLK和SMCLK的时钟信号源,且分频比都选择为1。
第3部分为1位按键涉及的并行输入/输出端口的初始化。
由于进行数字信号的频率测量需要使用芯片管脚输入被测的数字信号,因此这里按键所使用的管脚必须避开Timer_A的外部计数信号输入管脚。
64管脚的PM封装形式的MSP430F2619芯片Timer_A外部计数信号TACLK输入管脚编号是12,对应并行输入/输出管脚是P1.0;外部计数信号TAINCLK输入管脚编号是21,对应并行输入/输出管脚是P2.1。
这里选择管脚TACLK作为被测信号输入管脚,因此选择并行输入/输出管脚是P1.5作为按键信息输入管脚。
在这里还需要完成管脚P1.5的中断配置。
第4部分配置驱动数码管的接口。
这里使用P1.6作为串行同步时钟输出管脚,P1.7作为串行数据输出管脚。
第5部分为定时器Timer_A的配置。
由于数字信号的频率测量,既需要使用定时器直接对被测信号的计数,又需要使用定时器对MSP430微控制器的系统时钟信号的计数,相关的配置将出现在测量过程之中,这里只需要使能计数器中断。
这个控制程序不仅使用定时器Timer_A的计数溢出中断,也使用了并行输入/输出管脚中断和计数器中断,因此系统初始化的最后部分应该使能MSP430系统中断。
MSP430系统初始化部分将写成一个函数。
这里写成函数形式的目的在于简化后面将要给出的数字信号频率测量电路控制程序的结构。
数字信号频率测量电路控制程序的MSP430系统初始化函数如下。
voidsystem_begin(void)//频率测量系统初始化函数
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
clkxt2_begin();//系统时钟初始化
//按键电路相关管脚配置
P1SEL&=~BIT5;//设置P1.5管脚为并行数字输入/输出管脚
P1DIR&=~BIT5;//设置P1.5管脚为输入管脚
P1IFG=0x00;//清除P1管脚中断标志
P1IES|=BIT5;//设置P1.5管脚的中断触发边沿为下降边沿
P1IE|=BIT5;//使能P1.5管脚的中断
//数码管显示电路相关管脚配置
P1SEL&=~BIT7;//设置P1.7管脚为并行数字输入/输出管脚
P1DIR|=BIT7;//设置P1.7管脚为输出管脚
P1SEL&=~BIT6;//设置P1.6管脚为并行数字输入/输出管脚
P1DIR|=BIT6;//设置P1.6管脚为输出管脚
//Timer_A相关配置
TACTL&=~TAIFG;//清除Timer_A计数溢出中断标志
TACTL|=TAIE;//使能Timer_A计数溢出中断
_EINT();//MSP430系统开中断
seg7_8ms(1,2,3,4,5,6,7,8);//系统初始化完成标志
delay_10s();//延迟10s
}
MSP430系统初始化函数中直接调用时钟XT2初始化函数clkxt2_begin()完成系统时钟所需要的配置工作。
在前面介绍一些外围模块时,已经将相应的模块初始化写成函数的形式,这样在使用系统设计中可以直接调用。
注意,根据具体需要对外围模块的初始化函数进行必要的调整。
这也是前面在外围模块的初始化函数中对所有能够配置的功能全部写出来的原因,即无论芯片的复位状态是否满足要求,都进行相应的配置,这就方便对任意一个控制位进行调整。
Timer_A的配置没有使用函数调用的形式。
这是因为计数法和定时法使用不同的计数信号源,这部分需要在测量过程中进行配置。
再有,被测信号输入管脚也没有进行配置,同样是因为计数法和定时法的要求不同,前者管脚作为外围模块管脚使用,后者作为并行输入/输出管脚使用,因此也将在测量过程中进行配置。
系统初始化函数需要在程序中声明,它调用的函数也需要在程序中声明,并且在程序中还需要编辑进去对应的函数原型。
11.4.2基于Timer_A的计数测量
信号频率和周期测量数据精度要求结果具有5位有效数字,最小值为10000,最大值为99999。
最大值超出了Timer_A的计数器的65535最大计数范围。
使用计数器的溢出中断功能能够扩展计数范围,使得测量结果满足测量精度的要求。
Timer_A的计数器溢出中断服务函数如下。
#pragmavector=TIMERA1_VECTOR//Timer_A计数溢出中断服务程序
__interruptvoidtimera_tar(void)