可编程定时器8253
‘壹’ 7. 可编程定时器/计数器8253的6种工作方式中,既可以软件启动又可以硬件启动的是方式_____
方式2和方式3
‘贰’ 8253有几个功能相同的定时器
intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)。
8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
‘叁’ 可编程计数器/定时器8253有哪几种工作方式
可编程计数器与定时器8253有6种工作方式:(1) 方式0为计数结束产生中断;(2) 方式1为可编程单稳触发器;(3) 方式2为分频器;(4) 方式3为方波频率发生器;(5) 方式4为软件触发选通脉冲;(6) 方式5为硬件触发选通脉冲。
计数结束产生中断:当CLK端输入计数脉冲时,计数器能进行减1计数,减为0时,OUT端可输出高电平。可利用此高电平向CPU发中断请求,以实现定时中断处理。
可编程单稳触发器:当计数器工作时,利用GATE端输入的上升沿脉冲使OUT端开始变低电平,并开始作减1计数,若减至0,OUT端变高电平,形成一个单稳负脉冲,可利用此负脉冲作为某一电子应用电路的启动信号。
分频器:利用计数器的减1计数功能在OUT输出端产生一个其正、负脉冲宽度分别为(n-1)与1个输入脉冲时钟周期的分频脉冲信号。
方波频率发生器:利用计数器的减1计数功能在OUT端产生一个对称或基本对称的方波信号。可作为方波频率发生器使用。
软件触发选通脉冲是利用写入计数初值这个软件操作来触发计数器工作的。
硬件触发选通脉冲是利用GATE端输入信号来触发的。
‘肆’ 8253是什么意思
8253芯片intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。输出锁存器的值是通过程序设置的。输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
‘伍’ 8253定时器计数器的计数基于什么原理
定时和计数是日常生活和生产中最常见和最普遍的问题。
定时器和计数器功能基本上都是使用相同的逻辑实现的,而且这两个功能都包含输入的计数信号,本质上都是对脉冲计数。计数器用来计数并指示在任意间隔内输入信号(事件)的个数,而定时器则对规定间隔内输入的信号个数进行计数,用来指示经历的时间。
在单片机中,定时/计数器作定时功能用时,对机器周期计数(由单片机的晶体振荡器经过12分频后得到),因每次计数的周期是固定的,所以根据它计数的多少就可以很方便的计算出它计数的时间。如图1所示。
图1 计数与定时
二、溢出的基本概念
从一个生活中的例程看起:一个水盆在水龙头下,水龙头没关紧,水一滴滴地滴入盆中。盆的容量是有限的,水滴持续落下,盆中的水持续变满,最终有一滴水使得盆中的水满了,这就是“溢出”。
如果一个空的盆要1万滴水滴进去才会满,开始滴水之前可以先放入一部分水,叫做计数初值。如果现在要计数9000,那么可以先放入1000滴水,也就是计数初值为1000,再计数9000就可以溢出产生中断。
单片机中通常采用计数初值的办法,如果每个脉冲是1微秒,则计满256个脉冲需时256微秒,如果现在要定时100微妙,只要在计数器里面先放进156,然后计数100就可以就可以溢出产生中断了。如图2所示。
图2 定时器/计数器的溢出
三、定时/计数的主要方法
实现定时或计数,主要有三种方法。
(1)软件延时
软件延时利用微处理器执行一个延时程序段实现。因为微处理器执行每条指令都需要一定时间,通过指令的循环实现软件延时。软件定时具有不使用硬件的特点,但却占用了大量CPU时间。另外,软件定时精度不高,在不同系统时钟频率下,执行一条指令的时间不同,同一个软件延时程序的定时时间也会不同。
(2)硬件定时
硬件定时采用数字电路中的分频器将系统时钟进行适当分频产生需要的定时信号,也可以采用单稳电路或简易定时电路(如常用的555定时器)由外接RC(电阻、电容)电路控制定时时间。这样的定时电路较简单,利用不同分频倍数或改变电阻阻值、电容容值使定时时间在一定范围内改变。
(3)可编程的硬件定时
可编程定时器/计数器最大特点是可以通过软件编程来实现定时时间的改变,通过中断或查询方法来完成定时功能或计数功能。这种电路不仅定时值和定时范围可用程序改变,而且具有多种工作方式,可以输出多种控制信号,具备较强的功能。
‘陆’ 可编程计数/定时芯片8253有几个通道各有几种可供选择的工作方式
可编程计数/定时芯片8253,有3个独立的16位计数器。每个计数器可按照二进制或二 ----- 十进制计数。每个计数器的计数数率可高达2MHZ。每个计数器都可以由程序确定按照6种不同的方式工作。
‘柒’ 定时计数器的8254和8253有什么区别
8254 是Intel 公司生产的可编程间隔定时器。 是8253 的改进型, 比8253 具有更优良的性能。
8254 具有以下基本功能:
有3 个独立的16 位计数器。
每个计数器可按二进制或十进制(BCD) 计数。
每个计数器可编程工作于6 种不同工作方式。
8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz) 。
8254 有读回命令(8253 没有) , 除了可以读出当前计数单元的内容外, 还可以读出状态寄存器的内容。
计数脉冲可以是有规律的时钟信号, 也可以是随机信号。
‘捌’ 8253的输出端可产生方波,请问8259、8255分别能产生什么波形
8253是可编程定时器集成IC,可产生不同频率,不同占空比的方波,稍复杂的应用就是产生脉宽调制波PWM。
8259是可编程中断控制集成IC,一般用于响应外部中断,结合定时器也可用于方波测量,不过直接用定时器效果更好。
8255是可编程并行接口,一般用于IO口扩展,结合定时器也可用于方波或PWM的产生,但是,使用不方便。
上述三种IC都属于集成数字电路。
产生正弦波、三角波等,不能直接采用数字电路。一般采用模拟电路或微处理器加AD产生,也可通过上述电路产生PWM后通过积分器输出。
‘玖’ 定时计数器8254和8253的区别
8254 是Intel 公司生产的可编程间隔定时器。 是8253 的改进型, 比8253 具有更优良的性能。
8254 具有以下基本功能:
(1) 有3 个独立的16 位计数器。
(2) 每个计数器可按二进制或十进制(BCD) 计数。
(3) 每个计数器可编程工作于6 种不同工作方式。
(4) 8254 每个计数器允许的最高计数频率为10MHz(8253 为2MHz) 。
(5) 8254 有读回命令(8253 没有) , 除了可以读出当前计数单元的内容外, 还可以读出状态寄存器的内容。
(6) 计数脉冲可以是有规律的时钟信号, 也可以是随机信号。
‘拾’ 基于FPGA的可编程定时器/计数器8253的设计与实现
基于FPGA的可编程定时器/计数器8253的设计与实现
摘??? 要:本文介绍了可编程定时器/计数器8253的基本功能,以及一种用VHDL语言设计可编程定时器/计数器8253的方法,详述了其原理和设计思想,并利用Altera公司的FPGA器件ACEX 1K予以实现。
关键词:FPGA;IP;VHDL
引言
在工程上及控制系统中,常常要求有一些实时时钟,以实现定时或延时控制,如定时中断,定时检测,定时扫描等,还要求有计数器能对外部事件计数。要实现定时或延时控制,有三种主要方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。其中可编程定时器电路的定时值及其范围可以很容易地由软件来确定和改变,功能较强,使用灵活。Intel的定时器/计数器为可编程定时器PIT,型号为8253,改进型为8254,就是为完成上述功能而设计出来的一种电路。
随着ASIC的发展,在实际工程中通用的8253PIT芯片表现出如下的不足:1. 计数频率不够,8253计数速率最高2MHz,即使是其改进型8254也往往不能满足一些需要较高计数频率的工程。2. 8253PIT没有复位信号,输出的初始状态不受控制。针对8253的这些局限性,在实际工程中往往需要重新设计8253,并把8253的部分功能作为一个独立的IP模块嵌入到设计中,以实现完成某种特定功能的ASIC。
8253的基本功能和内部结构
主要功能
* 每片内部包含有3个独立的16位计数通道;
* 每个计数器都可以按照二进制或二—十进制计数;
* 每个计数器的计数速率可高达2MHz;
* 每个计数通道有6种工作方式,可由程序设置和改变;
* 所有的输入/输出电平信号都与TTL兼容。
内部结构
8253的内部结构如图1所示。
1. 数据总线缓冲器。这是8253与CPU数据总线连接的8位双向三态缓冲器,CPU通过数据总线缓冲器将控制命令字和计数初值写入8253芯片,或者从8253计数器中读取当前计数值。
2. 读/写逻辑。这是8253内部操作的控制部分。首先有片选信号CS的控制部分,当CS为高时,数据总线缓冲器处在三态,系统的数据总线脱开,故不能进行编程,也不能进行读写操作。其次,由这部分选择读写操作的端口(3个计数器及控制字寄存器),并控制数据传送的方向。
3. 控制字寄存器。在8253初始化编程时,由CPU写入控制字以决定通道的工作方式。此寄存器只能写入而不能读出。实际上,8253的3个计数器通道都有各自的控制字寄存器,存放各自的控制字,初始化编程时,这3个控制字分三次共用一个控制端口地址写入各自的通道.它们是利用最高两位的状态不同来区分的。
4. 计数器通道。包括计数器0、计数器1、计数器2。它们的结构完全相同,彼此可以按照不同的方式独立工作。每个通道包括:一个8位的控制寄存器;一个16位的计数初值寄存器;一个计数执行部件,他是一个16位的减法计数器;一个16位的输出锁存器。
每个通道都对输入脉冲CLK按二进制或二—十进制,从预置值开始减1计数。当预置值减到零时,从OUT输出端输出一信号。计数过程中,计数器受到门控信号GATE的控制。
8253的设计
根据8253的内部结构,设计8253主要分为两大部分:总线控制部分和定时/计数部分。
总线控制部分设计
这一部分主要完成数据的读/写,以及控制字的写入。用VHDL设计这部分前,应该了解8253的端口选择(见表1)和控制字(见图2)。
设计的关键在于对8253端口控制字的掌握。写信号到来时,首先要判断是控制字还是计数初始值。如果是初始值,其中先写低字节,再写高字节部分是重点,需要一个信号来判断写入的是新数据还是上一数据没写完的高字节部分.其他计数器的读/写大同小异。只要对8253的端口控制字了解清楚以及对读/写的时序有一定的了解,这一部分的逻辑很容易用VHDL语言描述出来.该进程可对外发出控制信号,表示控制字及数据写入完毕,可以进行计数器的计数操作了。该控制信号可以作为下面介绍的计数部分的触发信号。
计数器部分设计
8253有3个独立的计数器,每个计数器有6种工作模式,完成不同的功能。现以方式4为例介绍VHDL设计,其他的可以在方式4基础上加以修改。
这种工作方式,当写入控制字后输出为高。当写入计数值后,再过一个时钟周期,计数执行部件获得计数初值,并开始减1计数。当计数到0后输出变低电平,此低电平一直维持一个时钟周期,然后又自动变为高电平,并一直维持高电平,计数器停止计数。这种方式计数是一次性的,只有输入新的计数值之后,才能开始新的计数。
下面介绍方式4的设计过程:
CPU写入控制字后,输出outs立即复位,方式4中复位后outs为高电平。CPU写入计数初值的下一个CLK脉冲,计数初值被送到计数执行部件并开始减1计数,又经过N个时钟周期后才输出一个负脉冲。当GATE=1时,允许计数,GATE=0时,禁止计数。这样就实现了方式4基本的软件触发功能。
if clk1'event and clk1='0' then ——时钟脉冲下降沿到来
if gate1='1' then ——门控位为1,允许计数
if ce1>"0000000000000001" then
ce1<=ce1-1;
——减1计数,ce为计数执行部件
elsif ce1="0000000000000001" then
out1<='0'; ——初值减到1时输出低电平
???? ce1<=ce1-1; ——继续减1
elsif ce1="0000000000000000" then
out1<='1'; ——初值减到0时输出高电平
??? end if;
?? elsif gate1='0' then
——门控位为0,禁止计数
??? null;
?? end if;
? end if;
上面的小程序虽不完整但是却描述出了方式4的软件触发基本功能。若在计数过程中改变计数值,新值写入后的下一个CLK周期时,此计数值被写入计数执行部件并从新的计数值开始计数.如果写入的计数值是两个字节,那么写入第一个字节时计数不受影响,写入第二个字节后的下一个时钟周期,计数执行部件获得新值,并从新值开始重新计数,叫做软件再触发.软件再触发功能只要在上面的程序中加入相应的判断信号和控制信号即可实现。
完整的8253写过程流程
实际上完整的8253就是一个拥有多个进程的复杂结构体。读总线过程、写总线过程、每个计数器的6种工作方式都是一个独立的进程.进程之间是并行的,只要进程的敏感信号发生变化,该进程就被触发一次,而进程内部是按照时序顺序执行的。以写过程为例,写总线进程本身是靠敏感信号wr和cs来触发的,无论写入控制字还是写入计数初值后,写总线进程都会对外发出信号以表示某个计数器的控制字写入完毕或者某个计数器的某个工作方式的计数初值已经写入,可以进行计数了。而这些信号又相应的作为其他进程的敏感信号,进程之间的通信就是依靠这些信号来完成的。这些进程之间都是并发执行的,具体哪个进程被执行取决于控制字。图3给出了写过程的流程,读过程与之类似。
设计结果验证
本设计开发软件采用Altera公司的集成开发软件MAX+PLUS II 10.2完成。并用该公司的ACEX 1K系列FPGA芯片予以验证。
之所以选用ACEX 1K系列芯片,是因为它是一种低成本高密度的FPGA芯片系列,是首选的中规模器件产品。它具有如下特点:
* ACEX 1K采用查找表(LUT)和EAB(嵌入式阵列块)相结合的结构,特别适用于实现复杂逻辑功能存储器功能,例如通信中应用的数字信号处理、多通道数据处理、数据传递和微控制等。
* 典型门数为1万到10万门,有多达49152位的RAM(每个EAB有4096位RAM)。
* 器件内核采用2.5V电压,功耗低,能够提供高达250MHz的双向I/O功能,完全支持33MHz和66MHz的PCI局部总线标准。
* 具有快速连续式、延时可预测的快速通道互连;具有实现快速加法器、计数器、乘法器和比较器等算术功能的专用进位链,以及实现高速多扇入逻辑功能的专用级连接。
通过仿真、综合,并下载到FPGA中进行验证,本设计可以很好地实现其功能。■
参考文献
1 曾繁泰,陈美金. VHDL程序设计
2 林明权. VHDL数字控制系统设计范例