可以同时应用于不同终端设备的波特率发生器
2019-03-18崔建国宁永香
崔建国,宁永香
(山西工程技术学院,山西 阳泉 045000)
0 引语
嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统。
一些比较复杂的嵌入式系统,基于性能的需求可能需要连接不同的终端设备,如磁带机、打印机、语声合成器、显示器等,而不同设备接口在传输数据时所要求的频率往往不同,所以嵌入式系统需要为每种终端设备提供不同的波特率发生器。
比如嵌入式系统常利用串口连接不同终端设备,这里的串口一般是指UART口,不同的UART口可能需要不同的波特率发生器为其提供工作时钟频率。一般利用定时/计数器如8253电路或单片机(如51系列单片机)作为波特率发生器。
我们通常不可能在不同的终端设备之间或不同的UART口之间使用同一个波特率发生器,但我们另外可以加若干个波特率发生器到计算机或不同终端里的UART中去。
设计一个简单的波特率发生器,它仅使用一个CMOS集成电路就可提供7种不同波特率信号,这个波特率发生器主要基于一块14级CMOS二进制计数器/振荡器电路,型号为CD4060。
1 CD 4060简介
这种波特率发生器之所以可以产生如此多的时钟信号,主要使用一块14级CMOS二进制计数器/振荡器电路CD4060,CD4060内部结构如图1所示[1]。
图1 CD4060内部电路功能框图
由图可知CD4060具有10个计数输出端,而且其内置了振荡电路,振荡器通过管脚9、10、11外接R/C元件或石英晶体就可以形成可控多谐振荡,振荡器已在内部连接到计数器的时钟输入端,复位端R(12脚)为低电平时,计数器清零或复位(Q4~Q14输出皆为“0”),且振荡器使用无效;复位端R(12脚)为高电平时,由于外接的振荡定时元件控制产生一定频率的时钟脉冲信号,由时钟脉冲CP下降沿触发计数(如图1的CP端),计数器开始计数,一个周期后在相应的管脚可以输出4分频到10分频,12分频到14分频的脉冲信号,其中Q14中的“14”即为14分频输出,其它类推[2]。
2 基于CD4060的波特率发生器
为了降低设计成本,我们设计的波特率发生器仅采用一个集成电路CD4060、三个电阻、两个电容和一个预置电位器组成,电路结构可划分为可控多谐振荡电路、计数器电路、波特率信号输出电路以及复位电路四部分,如图2所示。
图2 基于CD4060的波特率发生器电气原理图
上文已经指出CMOS集成电路4060是一个十四级二进制计数器,它带有一个内部振荡器,其振荡频率仅需由9、10、11脚外接R/C元件来确定,电阻R1、预置电位器P1、电容C1串连接于管脚9、10之间;电阻R2连接4060管脚11以及电位器P1之间。
主振荡频率可以由以下公式计算:
式中:f为赫兹,R为欧姆,C为法拉。
2.1 波特率发生器的工作过程
计数器的工作过程应该是这样的,由于4060的12脚为计数器复位端,计数器首先应置12脚为高电平以实现计数器清零或复位,这样可以使计数器的10个输出皆输出“0”电平,且振荡器使用无效。
第二步使复位端(12脚)置“0”,计数器开始计数,一个周期后在相应的管脚就可以输出从4分频到10分频,12分频到14分频的脉冲信号,形成我们所要求的波特率,例如Q4即为4分频的波特率输出端,Q10为10分频的波特率信号输出端……。
2.2 复位电路的设计
由R/C电路构成的微分电路的结构及其输入输出波形分析如图3所示,图3可以看出,如果微分电路的输入电压为方波,则其输出为尖顶波。
图3 微分运算电路结构图与输入输出波形分析图
在计数器4060的12脚设计一个计数器复位电路,如图2所示电路中的电容C2与电阻R3构成的复位电路实际组成了一个微分运算电路。
图2电路中的复位电路工作原理可以这样描述,电源VCC上电时,电容C2充电,由于电容有端电压不能突变的特性,故在电阻R3上出现电压,使得计数器复位或清零;几个毫秒后,C2充满电,电阻R3上电流降为0,电压也为0,使得计数器进入工作状态,开始计数。
为了方便控制计数器的工作,设计一个人工复位按钮,即在电容器C2两端添加一个轻触按钮S,如图2所示。计数器正式工作期间,按下轻触按钮S,电容C2放电,在电阻R3上出现电压,使得计数器复位。松开按钮S,电容C2又充电,几个毫秒后,计数器又进入工作状态,开始计数[3]。
复位电路也可以如图4所示设计,这种复位电路能够为计数器4060的12脚提供很准确的“0”电平,因此复位效果更好。
图4 由晶体管构成的复位电路
2.3 波特率发生器的输出
当电源接通后,经过复位电路提供复位信号,计数器开始工作,这时计数器4060的各输出端就可以输出波特率时钟信号,如电路图2所示,按照图中所示参数,波特率发生器的不同输出端的频率如表1所示。
表1 波特率发生器各个管脚输出波特率表
各个输出不同波特率的线已经在电路图2中标出,我们可以用一个连接线连接不同的输出端子,以选择所需的波特率输出。
3 调试
本振荡器可以用电位器P1调整到适当的频率。我们可以用示波器测量4060第9脚的输出或Q4~Q10的任意一脚的输出信号频率。其频率在第9脚上为38.4 kHz,Q4~Q10脚上应为图2或波特率表所标出的波特率。
我们常常会需要时钟频率为波特率的16倍,意思就是在接收终端设备的传输数据时,采用波特率的16倍频率作为接收时钟,例如异步工作的8251等串口芯片,简单解释如下。
标准UART(通用异步收发传输器)的RXD前端有一个"1到0跳变检测器",当其连续接收到8个RXD上的低电平时,该检测器就认为RXD线出现了起始位,进入接收数据状态,在接收状态,接收控制器对数据位7、8、9三个脉冲采样,并遵从三中取二的原则确定最终值。采用这一方法的根本目的仍然还是为了增强抗干扰,以提高数据传送的可靠性,采样信号总是在每个接收位的中间位置,这样可以避开数据位两端的边沿失真,也可以防止接收时钟频率和发送时钟频率不完全同步引起的误差[4]。
所以,为了得到这一时钟频率,我们可以将图2中电容C1容量由原来的470n更换为现在的27nF,4060第9脚的振荡频率应调到614.4 kHz。
4 结语
CD4060内置振荡源、具有10个计数输出端,本设计巧妙利用这个十四级二进制计数器, 将其主振荡频率通过各分频输出端口,得到4分频到10分频,12分频到14分频的脉冲信号,从而得到了不同的波特率输出,本文所设计的波特率发生器可以同时为7个不同的终端设备提供波特率信号,避免了不同的终端设备之间或不同的UART口之间使用同一个波特率发生器的弊端。
设计电路比较简单,但非常实用,可以很方便地应用在嵌入式系统里,性价比颇高。