CN105022608A - 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 - Google Patents
一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 Download PDFInfo
- Publication number
- CN105022608A CN105022608A CN201510373532.4A CN201510373532A CN105022608A CN 105022608 A CN105022608 A CN 105022608A CN 201510373532 A CN201510373532 A CN 201510373532A CN 105022608 A CN105022608 A CN 105022608A
- Authority
- CN
- China
- Prior art keywords
- bit
- frequency division
- division multiple
- timer
- timing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Synchronisation In Digital Transmission Systems (AREA)
- Pinball Game Machines (AREA)
Abstract
一种与16位微处理器应用系统连接的定时器IP核,包括数据输入输出与命令字分解存储控制模块,脉冲50分频器,定时处理控制模块,定时器溢出标志控制模块和输入门控选择控制模块;本发明应用FPGA设计定时器IP核硬连接控制电路,定时器IP核有15个16位定时器,其中14个能够组成7个32位定时器,一个命令字设置一个定时器的工作模式,定时基准时钟分频倍数,工作状态控制;本发明除16位微处理器对定时器进行功能和状态设置、定时参数传输、读定时当前值操作之外,不占用16位微处理器程序执行时间;每个16位/32位定时器具有自动重新装载定时参数功能,提高了定时精度;能够满足数量众多定时器定时与定时控制系统的需求。
Description
技术领域
本发明涉及一种与16位微处理器应用系统连接的定时器IP核及其实现定时器定时控制的方法,尤其涉及一种基于FPGA并行处理的特点,应用FPGA设计硬连接电路组成的能够与16位微处理器应用系统连接的定时器IP核及其实现定时器定时控制的方法。
背景技术
在大规模时间顺序控制或其它需要应用众多定时器的16位微处理器应用系统中,将使用大量的定时器,扩展定时器个数有三种实现方式:第一种方式是应用微处理器中的一个定时器的定时时间作为基准时间,采用定时中断方式编程,设置定时倍数变量,该定时倍数变量也是扩展定时器的标识变量,编程方法主要有2种,第1种方法是执行一次基准定时器中断服务函数定时倍数变量加1,并与设置的基准定时倍数值比较,如果定时倍数变量已达到设置的基准定时倍数值,对定时倍数变量清0,然后执行该扩展定时器定时时间到的程序;或专门设置一个扩展定时器的标识变量,当定时倍数变量已达到设置的基准定时倍数值时,对定时倍数变量清0,置1定时器的标识变量,在主函数的程序中判断该定时器的标识变量是否为“1”,如果是,则清0该定时器的标识变量,执行一次该扩展定时器定时时间到的处理函数;第二种方式是微处理器与定时器扩展芯片连接;
以上二种实现方式存在如下不足之处:
1.应用基准定时器的定时中断方法,CPU响应和退出基准定时器中断服务程序占用CPU运行时间;定时基准时间越小,比如1ms,定时器系统需要扩展的定时器越多,将占用CPU运行时间越长,对其它程序模块的执行速度产生严重的影响,定时精度不高;
2.第二种方式采用微处理器外扩专用定时器芯片,所需的定时器越多,外扩专用定时器芯片就越多,16位微处理器应用系统的电路规模就越大;
第三种方式是采用不可编程的硬件定时,其每个定时器用独立的硬件电路实现;采用这种方式实现定时功能,所需的定时器越多,电路规模就越大,且维护工作量大。
发明内容
本发明的目的在于充分应用FPGA的并行处理功能,提供一种与16位微处理器应用系统连接的基于FPGA的定时器IP核及其实现定时器定时控制的方法,定时器IP核内部有15个16位定时器,也可以应用14个16位定时器设置成为7个32位定时器,每个16位定时器或32位定时器输出溢出信号,能够编程设置门控信号控制定时器的工作,定时器的工作模式,选择十六种定时的分频倍数,该定时器IP核具有定时精度高、只需要经过初始化编程的一条命令设置每个定时器的工作运行方式,定时时间到产生定时溢出信号时,定时器IP核能够自动重新装载定时参数;定时过程不占用16位微处理器程序执行的时间,能够实现对数量多达15个16位定时器或1个16位定时器和7个32位定时器的定时与定时控制等优点,以克服已有定时方式实现技术所存在的不足。
为解决上述技术问题,本发明采取的技术方案是:一种与16位微处理器应用系统连接的定时器IP核,该定时器IP核包括数据输入输出与命令字分解存储控制模块,脉冲50分频器,定时处理控制模块,定时器溢出标志控制模块,输入门控选择控制模块;
所述数据输入输出与命令字分解存储控制模块与16位微处理器应用系统、定时处理控制模块、定时器溢出标志控制模块和输入门控选择控制模块连接;
所述脉冲50分频器还与16位微处理器应用系统和定时处理控制模块连接;
所述定时处理控制模块还与16位微处理器应用系统、定时器溢出标志控制模块和输入门控选择控制模块连接;
所述数据输入输出与命令字分解存储控制模块在输入的片选信号为低电平的条件下,如果写信号有效,按照16位微处理器应用系统给定的定时器或定时器命令字的地址,获得定时器命令字,16位定时器或32位定时器的定时参数,并按照定时器命令字分解成为定时参数、定时器编号、工作模式分频倍数编码和状态控制分别予以存储和输出,还输出写工作模式分频倍数编码信号、写状态控制信号和写定时器参数信号;如果读信号有效向16位微处理器应用系统传输定时器实时定时值;
所述脉冲50分频器对16位微处理器应用系统的时钟脉冲进行分频,其输出作为定时处理控制模块的定时器定时控制操作的基准时钟脉冲;
所述定时处理控制模块按照数据输入输出与命令字分解存储控制模块输出的定时器编号,在写工作模式分频倍数编码信号和写状态控制信号的作用下,存储该定时器的工作模式分频倍数编码值,状态控制;在写定时器参数信号的作用下,存储定时器的定时参数;所述定时处理控制模块定时器IP核外部输入的时钟脉冲CLKⅡ控制定时处理控制模块的运行,按照脉冲50分频器输出的一个基准时钟脉冲周期完成所有定时器的一次定时处理,包括每个定时器的状态控制处理,工作模式的判断处理,按照已启动定时的每个16位/32位定时器设置的基准时钟倍数值对每个16位/32位定时器的实时定时参数值进行加1操作,产生溢出时,对实时定时参数值自动重装载定时参数,并输出溢出标志信号;在数据输入输出与命令字分解存储控制模块输入的片选信号为低电平的条件下,如果读信号有效,按照16位微处理器应用系统给定的定时器的地址,直接读出该定时器的实时定时参数值经数据输入输出与命令字分解存储控制模块传输到16位微处理器应用系统的数据总线,一次能够读出16位定时器的实时定时参数,32位定时器的实时定时参数需要分时二次予以读出;在16位微处理器应用系统输出的复位信号作用下,停止所有定时器的定时操作;
所述定时器溢出标志控制模块输出16位/32位定时器的高电平为有效的溢出信号;定时处理控制模块输出的16位定时器的溢出信号由低电平变换为高电平时,存储该定时器溢出标志为高电平;如果该定时器溢出标志为高电平,清溢出标志由高电平转换为低电平,存储该定时器溢出标志为低电平;在写工作模式分频倍数编码信号的作用下,定时器溢出标志控制模块按照寄存器编号存储32位定时器工作模式的信息,封锁该32位定时器低16位的溢出信息保持为低电平;
所述输入门控选择控制模块在写工作模式分频倍数编码命令字信号作用下,按照定时器编号存储该定时器的工作模式,根据该定时器工作模式所确定的门控功能要求和输入的门控电平,控制输入门控选择控制模块输出的门控信号。
其进一步技术方案是:所述数据输入输出与命令字分解存储控制模块包括16位双向数据选通三态门组,读写信号控制模块,定时参数寄存器,定时器编号寄存器,工作模式分频倍数编码寄存器,状态控制寄存器;
所述16位双向数据选通三态门组分别与16位微处理器应用系统、读写信号控制模块、定时参数寄存器、定时器编号寄存器,工作模式分频倍数编码寄存器,状态控制寄存器和定时处理控制模块连接;
所述读写信号控制模块还与16位微处理器应用系统、定时参数寄存器、定时器编号寄存器,工作模式分频倍数编码寄存器,状态控制寄存器、定时处理控制模块、定时器溢出标志控制模块和输入门控选择控制模块连接;
所述定时参数寄存器还与定时处理控制模块连接;
所述定时器编号寄存器还与16位微处理器应用系统、定时处理控制模块、定时器溢出标志控制模块和输入门控选择控制模块连接;
所述工作模式分频倍数编码寄存器还与16位微处理器应用系统、定时处理控制模块、定时器溢出标志控制模块和输入门控选择控制模块连接;
所述状态控制寄存器还与16位微处理器应用系统、定时处理控制模块和定时器溢出标志控制模块连接;
所述数据输入输出与命令字分解存储控制模块的读写信号控制模块在片选信号为低电平的条件下,如果写信号有效,发出16位双向数据选通三态门组写信号,选通16位微处理器应用系统数据总线的数据输入;产生写定时器编号信号,并判断输入的地址值,如果是定时器参数的地址值,将该地址值写入定时器编号寄存器,产生写定时器参数信号,将数据总线的16位数据写入定时参数寄存器;如果是定时器命令字地址,判断命令字的第15位是否为“0”,如果第15位是“0”,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器,产生写工作模式分频倍数编码命令字信号,将数据总线的第0位、第1位、第6位~第9位写入工作模式分频倍数编码寄存器,产生写状态控制命令字信号,将16位数据总线的第10位、第11位和第14位写入状态控制寄存器;如果第15位是“1”,命令字是状态命令字,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器,产生写状态控制命令字信号,将数据总线的第10位、第11位和第14位写入状态控制寄存器;如果读信号有效,发出16位双向数据选通三态门组读信号,将定时处理控制模块的定时器IP核内部输出数据总线的数据传输到16位微处理器应用系统的数据总线。
其更进一步技术方案是:所述定时处理控制模块包括定时器定时控制操作模块,地址选通控制Ⅰ,16位定时参数双端口存储器,地址选通控制Ⅱ,16位定时实时参数双端口存储器,地址选通控制Ⅲ,6位工作模式分频倍数编码双端口存储器,地址选通控制Ⅳ,3位状态控制双端口存储器;
所述定时器定时控制操作模块分别与脉冲50分频器、定时器溢出标志控制模块、输入门控选择控制模块、地址选通控制Ⅰ、16位定时参数双端口存储器、地址选通控制Ⅱ、16位定时实时参数双端口存储器、地址选通控制Ⅲ、6位工作模式分频倍数编码双端口存储器、地址选通控制Ⅳ、3位状态控制双端口存储器和定时处理控制运行时钟脉冲CLKⅡ连接;
所述地址选通控制Ⅰ还与数据输入输出与命令字分解存储控制模块和16位定时参数双端口存储器连接;
所述16位定时参数双端口存储器还与数据输入输出与命令字分解存储控制模块和16位定时实时参数双端口存储器连接;
所述地址选通控制Ⅱ还与16位微处理器应用系统、数据输入输出与命令字分解存储控制模块和16位定时实时参数双端口存储器连接;
所述16位定时实时参数双端口存储器还与数据输入输出与命令字分解存储控制模块连接;
所述地址选通控制Ⅲ还与数据输入输出与命令字分解存储控制模块和6位工作模式分频倍数编码双端口存储器连接;
所述6位工作模式分频倍数编码双端口存储器还与数据输入输出与命令字分解存储控制模块连接;
所述地址选通控制Ⅳ还与数据输入输出与命令字分解存储控制模块和3位状态控制双端口存储器连接;
所述3位状态控制双端口存储器还与数据输入输出与命令字分解存储控制模块和16位微处理器应用系统的复位信号连接;如果输入的复位信号为有效的复位信号,复位3位状态控制双端口存储器,停止所有定时器的定时。
其再进一步技术方案是:所述定时器溢出标志控制模块包括非门,M0工作模式位寄存器组,溢出清零脉冲控制器,与非门Ⅰ,D触发器Ⅰ,与门Ⅰ,与非门Ⅱ,D触发器Ⅱ,与非门Ⅲ,D触发器Ⅲ,与门Ⅱ,与非门Ⅳ,D触发器Ⅳ,与非门Ⅴ,D触发器Ⅴ,与门Ⅲ,与非门Ⅵ,D触发器Ⅵ,与非门Ⅶ,D触发器Ⅶ,与门Ⅳ,与非门Ⅷ,D触发器Ⅷ,与非门Ⅸ,D触发器Ⅸ,与门Ⅴ,与非门Ⅹ,D触发器Ⅹ,与非门Ⅺ,D触发器Ⅺ,与门Ⅵ,与非门Ⅻ,D触发器Ⅻ,与非门ⅩⅢ,D触发器ⅩⅢ,与门Ⅶ,与非门ⅩⅣ,D触发器ⅩⅣ,与非门ⅩⅤ,D触发器ⅩⅤ;
所述非门的输入端与数据输入输出与命令字分解存储控制模块的状态控制寄存器的M0输出端连接,输出端与M0工作模式位寄存器组的一个输入端连接;
M0工作模式位寄存器组的另三个输入端分别与16位微处理器应用系统的复位信号输出端、数据输入输出与命令字分解存储控制模块的读写信号控制模块的写工作模式分频倍数编码信号输出端和定时器编号寄存器的定时器编号输出端连接,输出端分别与门Ⅰ、与门Ⅱ、与门Ⅲ、与门Ⅳ、与门Ⅴ、与门Ⅵ和与门Ⅶ的一个输入端连接;
溢出清零脉冲控制器的三个输入端分别与数据输入输出与命令字分解存储控制模块的读写信号控制模块的写状态控制信号输出端、状态控制寄存器的清溢出标志输出端和定时器编号寄存器的定时器编号输出端连接,输出端分别和与非门Ⅰ,与非门Ⅱ,与非门Ⅲ,与非门Ⅳ,与非门Ⅴ,与非门Ⅵ,与非门Ⅶ,与非门Ⅷ,与非门Ⅸ,与非门Ⅹ,与非门Ⅺ,与非门Ⅻ,与非门ⅩⅢ,与非门ⅩⅣ,与非门ⅩⅤ的一个输入端连接;输出端还和D触发器Ⅰ,D触发器Ⅱ,D触发器Ⅲ,D触发器Ⅳ,D触发器Ⅴ,D触发器Ⅵ,D触发器Ⅶ,D触发器Ⅷ,D触发器Ⅸ,D触发器Ⅹ,D触发器Ⅺ,D触发器Ⅻ,D触发器ⅩⅢ,D触发器ⅩⅣ和D触发器ⅩⅤ的数据输入端连接;
与非门Ⅰ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅰ的时钟信号输入端连接;
D触发器Ⅰ的数据输出端和与门Ⅰ的另一个输入端连接;
与门Ⅰ的输出端作为16位定时器0的溢出标志输出信号与16位微处理器应用系统连接;
与非门Ⅱ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅱ的时钟信号输入端连接;
D触发器Ⅱ的数据输出端作为16位定时器1/32位定时器0的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅲ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅲ的时钟信号输入端连接;
D触发器Ⅲ的数据输出端和与门Ⅱ的另一个输入端连接;
与门Ⅱ的输出端作为16位定时器2的溢出标志输出信号与16位微处理器应用系统连接;
与非门Ⅳ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅳ的时钟信号输入端连接;
D触发器Ⅳ的数据输出端作为16位定时器3/32位定时器1的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅴ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅴ的时钟信号输入端连接;
D触发器Ⅴ的数据输出端和与门Ⅲ的另一个输入端连接;
与门Ⅲ的输出端作为16位定时器4的溢出标志输出信号与16位微处理器应用系统连接;
与非门Ⅵ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅵ的时钟信号输入端连接;
D触发器Ⅵ的数据输出端作为16位定时器5/32位定时器2的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅶ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅶ的时钟信号输入端连接;
D触发器Ⅶ的数据输出端和与门Ⅳ的另一个输入端连接;
与门Ⅳ的输出端作为16位定时器6的溢出标志输出信号与16位微处理器应用系统连接;
与非门Ⅷ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅷ的时钟信号输入端连接;
D触发器Ⅷ的数据输出端作为16位定时器7/32位定时器3的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅸ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅸ的时钟信号输入端连接;
D触发器Ⅸ的数据输出端和与门Ⅴ的另一个输入端连接;
与门Ⅴ的输出端作为16位定时器8的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅹ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅹ的时钟信号输入端连接;
D触发器Ⅹ的数据输出端作为16位定时器9/32位定时器4的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门Ⅺ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅺ的时钟信号输入端连接;
D触发器Ⅺ的数据输出端和与门Ⅵ的另一个输入端连接;
与门Ⅵ的输出端作为16位定时器10的溢出标志输出信号与16位微处理器应用系统连接;
与非门Ⅻ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器Ⅻ的时钟信号输入端连接;
D触发器Ⅻ的数据输出端作为16位定时器11/32位定时器5的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门ⅩⅢ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器ⅩⅢ的时钟信号输入端连接;
D触发器ⅩⅢ的数据输出端和与门Ⅶ的另一个输入端连接;
与门Ⅶ的输出端作为16位定时器12的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门ⅩⅣ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器ⅩⅣ的时钟信号输入端连接;
D触发器ⅩⅣ的数据输出端作为16位定时器13/32位定时器6的溢出标志输出信号输出端与16位微处理器应用系统连接;
与非门ⅩⅤ的另一个输入端与定时处理控制模块的溢出标志输出端连接,输出端与D触发器ⅩⅤ的时钟信号输入端连接;
D触发器ⅩⅤ的数据输出端作为16位定时器14的溢出标志输出信号输出端与16位微处理器应用系统连接。
相关的另一技术方案是:一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作的方法,它是运用本发明上述的一种与16位微处理器应用系统连接的定时器IP核来实现定时器定时控制操作的方法,其具体步骤为:
s101:清基准时钟脉冲分频倍数u数组存储单元,定时器编号值j;
s102:基准时钟脉冲下降沿触发程序执行1次;
s103:判断定时器编号值j是否等于或大于15,如果j的值等于或大于15,则进入步骤s104,否则进入s105;
s104:设置定时器编号值j=0,返回步骤s102;
s105:判断启/停信号是否等于1,如果启/停信号=1,该定时器定时工作,进入步骤s109,否则该定时器处于停止定时工作状态,进入步骤s106;
s106:判断清定时当前值是否等于0,如果清定时当前值=0,则进入步骤s107,否则进入步骤s108;
s107:清除该定时器定时存储单元的值,进入步骤s108;
s108:定时器编号值j加1, 返回步骤s103;
s109:该定时器的基准时钟脉冲分频倍数加1:u(j)= u(j)+1,进入步骤s110;
s110:判断该定时器工作模式,如果工作模式M1M0=10,门控16位定时器,进入步骤s111;如果工作模式M1M0=00,无门控的16位定时器,进入步骤s116;如果工作模式M1M0=01,无门控的32位定时器,进入步骤s112;如果工作模式M1M0=11,则选择门控的32位定时器,进入步骤s113;
s111:判断该16位定时器的门控信号是否为0,如果门控信号等于0则返回步骤s108,否则进入步骤s116;
s112:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s136,否则返回步骤s108;
s113:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s114,否则返回步骤s108;
s114:判断该32位定时器的门控信号是否为0,如果门控信号等于0则进入步骤s136,否则进入步骤s115;
s115:定时器编号j加2:j=j+2,返回步骤s103;
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s132;如果分频倍数的编码为0001,则进入步骤s117;如果分频倍数的编码为0010,则进入步骤s118;如果分频倍数的编码为0011,则进入步骤s119;如果分频倍数的编码为0100,则进入步骤s120;如果分频倍数的编码为0101,则进入步骤s121;如果分频倍数的编码为0110,则进入步骤s122;如果分频倍数的编码为0111,则进入步骤s123;如果分频倍数的编码为1000,则进入步骤s124;如果分频倍数的编码为1001,则进入步骤s125;如果分频倍数的编码为1010,则进入步骤s126;如果分频倍数的编码为1011,则进入步骤s127;如果分频倍数的编码为1100,则进入步骤s128;如果分频倍数的编码为1101,则进入步骤s129;如果分频倍数的编码为1110,则进入步骤s130;如果分频倍数的编码为1111,则进入步骤s131;
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s132,否则返回步骤s108;
s124:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s132,否则返回步骤s108;
s125:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s132,否则返回步骤s108;
s126:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s132,否则返回步骤s108;
s127:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s132,否则返回步骤s108;
s128:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s132,否则返回步骤s108;
s129:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s132,否则返回步骤s108;
s130:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s132,否则返回步骤s108;
s131:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s132,否则返回步骤s108;
s132:设置该16位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s133;
s133:读出该16位定时器的16位定时当前值并加1,结果存储在该16位定时器16位定时当前值存储单元,进入步骤s124;
s134:判断该16位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s135,否则返回步骤s108;
s135:重新装载该16位定时器的16位定时参数,返回步骤s108;
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s152;如果分频倍数的编码为0001,则进入步骤s137;如果分频倍数的编码为0010,则进入步骤s138;如果分频倍数的编码为0011,则进入步骤s139;如果分频倍数的编码为0100,则进入步骤s140;如果分频倍数的编码为0101,则进入步骤s141;如果分频倍数的编码为0110,则进入步骤s142;如果分频倍数的编码为0111,则进入步骤s143;如果分频倍数的编码为1000,则进入步骤s144;如果分频倍数的编码为1001,则进入步骤s145;如果分频倍数的编码为1010,则进入步骤s146;如果分频倍数的编码为1011,则进入步骤s147;如果分频倍数的编码为1100,则进入步骤s148;如果分频倍数的编码为1101,则进入步骤s149;如果分频倍数的编码为1110,则进入步骤s150;如果分频倍数的编码为1111,则进入步骤s151;
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s152,否则返回步骤s115;
s144:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s152,否则返回步骤s115;
s145:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s152,否则返回步骤s115;
s146:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s152,否则返回步骤s115;
s147:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s152,否则返回步骤s115;
s148:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s152,否则返回步骤s115;
s149:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s152,否则返回步骤s115;
s150:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s152,否则返回步骤s115;
s151:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s152,否则返回步骤s115;
s152: 设置该32位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s153;
s153:读出该32位定时器的32位定时当前值并加1,结果存储在该32位定时器的32位定时当前值存储单元,进入步骤s154;
s154: 判断该32位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s155,否则返回步骤s115;
s155:重新装载该32位定时器的32位定时参数,返回步骤s115。
相关的另一技术方案或是:一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作的方法,它是运用本发明上述的一种与16位微处理器应用系统连接的定时器IP核来实现定时器定时控制操作的另一种方法;其定时器定时控制操作的具体步骤为:
s101:清基准时钟脉冲分频倍数u数组存储单元,定时器编号值j;
s102:基准时钟脉冲下降沿触发程序执行1次;
s103:判断定时器编号值j是否等于或大于15,如果j的值等于或大于15,则进入步骤s104,否则进入s105;
s104:设置定时器编号值j=0,返回步骤s102;
s105:判断启/停信号是否等于1,如果启/停信号=1,该定时器定时工作,进入步骤s109,否则该定时器处于停止定时工作状态,进入步骤s106;
s106:判断清定时当前值是否等于0,如果清定时当前值=0,则进入步骤s107,否则进入步骤s108;
s107:清除该定时器定时存储单元的值,进入步骤s108;
s108:定时器编号值j加1, 返回步骤s103;
s109:该定时器的基准时钟脉冲分频倍数加1:u(j)= u(j)+1,进入步骤s110;
s110:判断该定时器工作模式,如果工作模式M1M0=10,门控16位定时器,进入步骤s111;如果工作模式M1M0=00,无门控的16位定时器,进入步骤s116;如果工作模式M1M0=01,无门控的32位定时器,进入步骤s112;如果工作模式M1M0=11,则选择门控的32位定时器,进入步骤s113;
s111:判断该16位定时器的门控信号是否为0,如果门控信号等于0则返回步骤s108,否则进入步骤s116;
s112:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s136,否则返回步骤s108;
s113:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s114,否则返回步骤s108;
s114:判断该32位定时器的门控信号是否为0,如果门控信号等于0则进入步骤s136,否则进入步骤s115;
s115:定时器编号j加2:j=j+2,返回步骤s103;
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s132;如果分频倍数的编码为001,则进入步骤s117;如果分频倍数的编码为010,则进入步骤s118;如果分频倍数的编码为011,则进入步骤s119;如果分频倍数的编码为100,则进入步骤s120;如果分频倍数的编码为101,则进入步骤s121;如果分频倍数的编码为110,则进入步骤s122;如果分频倍数的编码为111,则进入步骤s123;
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s132,否则返回步骤s108;
s132:设置该16位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s133;
s133:读出该16位定时器的16位定时当前值并加1,结果存储在该16位定时器16位定时当前值存储单元,进入步骤s124;
s134:判断该16位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s135,否则返回步骤s108;
s135:重新装载该16位定时器的16位定时参数,返回步骤s108;
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s152;如果分频倍数的编码为001,则进入步骤s137;如果分频倍数的编码为010,则进入步骤s138;如果分频倍数的编码为011,则进入步骤s139;如果分频倍数的编码为100,则进入步骤s140;如果分频倍数的编码为101,则进入步骤s141;如果分频倍数的编码为110,则进入步骤s142;如果分频倍数的编码为111,则进入步骤s143;
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s152,否则返回步骤s115;
s152: 设置该32位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s153;
s153:读出该32位定时器的32位定时当前值并加1,结果存储在该32位定时器的32位定时当前值存储单元,进入步骤s154;
s154: 判断该32位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s155,否则返回步骤s115;
s155:重新装载该32位定时器的32位定时参数,返回步骤s115。
由于采用以上结构,本发明之一种与16位微处理器应用系统连接的定时器IP核及其实现定时器定时控制的方法具有以下有益效果:
1. 与16位微处理器应用系统连接,编程控制便利
本发明的定时器IP核可以直接与16位微处理器应用系统连接,对定时器IP核中的每个定时器进行功能设置时,16位微处理器只需要向定时器IP核发送1个命令字即可确定该定时器的工作模式,定时基准时钟脉冲分频倍数,启动该定时器的定时工作,以及是否清该定时器的溢出标志和是否清定时当前值;16位微处理器还能够专门发送状态控制命令,状态控制命令只对是否启动/停止定时工作,清溢出标志和清定时当前值进行设置;对于一个32位定时器,需要分两次传输32位定时参数;16位微处理器还可以按照定时器的地址直接读出该定时器的实时定时值,编程控制定时器便利。
2. 提高了定时精度,适合数量众多定时器定时与定时控制的系统需求
本发明的定时器IP核内部有15个16位定时器,根据定时应用的需要设置命令字可以将2个16位定时器组成32位定时器,最多能够设置组成7个32位定时器,每个定时器能够选择设置十六种定时基准时钟脉冲的分频倍数;定时时间到产生定时溢出信号时,本发明的定时器IP核能够自动重新装载定时参数;由于能够通过命令字设置定时器的定时基准时钟脉冲的分频倍数,组成32位定时器,自动重新装载定时参数的功能,提高了定时精度,又能够满足数量众多定时器定时与定时控制的系统需求。
3. FPGA并行处理定时,定时器IP核性价比高
本发明除16位微处理器对定时器进行功能设置、定时参数传输、定时器定时时间到软件清定时溢出标志,读出定时当前值,以及需要清定时当前值的操作之外,将不占用16位微处理器的程序执行时间;本发明应用FPGA设计硬连接电路组成的定时器IP核能够与16位微处理器应用系统连接,每一个定时器能够单独的选择时钟基准,能够自动重新装载定时参数,占用16位微处理器的程序执行的时间大为减少,将其用于开发数量众多定时器定时与定时控制的系统,可获很高的性价比。
下面结合附图和实施例对本发明之一种与16位微处理器应用系统连接的定时器IP核及其实现定时器定时控制的方法的技术特征作进一步的说明。
附图说明
图1:本发明之一种与16位微处理器应用系统连接的定时器IP核的电路结构框图;
图2:本发明之一种与16位微处理器应用系统连接的定时器IP核的封装图;
图3:本发明之一种与16位微处理器应用系统连接的定时器IP核的数据输入输出与命令字分解存储控制模块的电路框图;
图4:本发明之一种与16位微处理器应用系统连接的定时器IP核的定时处理控制模块的电路框图;
图5:本发明之一种与16位微处理器应用系统连接的定时器IP核的定时器溢出标志控制模块的电路框图;
图6-1~6-3:本发明实施例一之一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作程序流程图;
图7-1~7-3:本发明实施例二之一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作程序流程图。
图中:
Ⅰ— 16位微处理器应用系统,Ⅱ— 数据输入输出与命令字分解存储控制模块,Ⅲ— 脉冲50分频器,Ⅳ — 定时处理控制模块,Ⅴ — 定时器溢出标志控制模块,Ⅵ — 输入门控选择控制模块;
1—16位双向数据选通三态门组,2—读写信号控制模块,3—定时参数寄存器,4—定时器编号寄存器,5—工作模式分频倍数编码寄存器,6—状态控制寄存器,7—非门,8—M0工作模式位寄存器组,9—溢出清零脉冲控制器,10—与非门Ⅰ,11—D触发器Ⅰ,12—与门Ⅰ,13—与非门Ⅱ,14—D触发器Ⅱ,15—与非门Ⅲ,16—D触发器Ⅲ,17—与门Ⅱ,18—与非门Ⅳ,19—D触发器Ⅳ,20—与非门Ⅴ,21—D触发器Ⅴ,22—与门Ⅲ,23—与非门Ⅵ,24—D触发器Ⅵ,25—与非门Ⅶ,26—D触发器Ⅶ,27—与门Ⅳ,28—与非门Ⅷ,29—D触发器Ⅷ,30—与非门Ⅸ,31—D触发器Ⅸ,32—与门Ⅴ,33—与非门Ⅹ,34—D触发器Ⅹ,35—与非门Ⅺ,36—D触发器Ⅺ,37—与门Ⅵ,38—与非门Ⅻ,39—D触发器Ⅻ,40—与非门ⅩⅢ,41—D触发器ⅩⅢ,42—与门Ⅶ,43—与非门ⅩⅣ,44—D触发器ⅩⅣ,45—与非门ⅩⅤ,46—D触发器ⅩⅤ,47—定时器定时控制操作模块,48—地址选通控制Ⅰ,49—16位定时参数双端口存储器,50—地址选通控制Ⅱ,51—16位定时实时参数双端口存储器,52—地址选通控制Ⅲ,53—6位工作模式分频倍数编码双端口存储器, 54—地址选通控制Ⅳ,55—3位状态控制双端口存储器。
文中缩略语说明:
FPGA-Field Programmable Gate Array,现场可编程门阵列;
RD-Read信号,读信号;
CS-Chip Select信号,片选信号;
WR-Write,写信号;
RST-Reset,复位信号;
AB-Address Bus,地址总线;
DB-Data Bus,数据总线;
CLK-Clock pulse,时钟脉冲;
TF-定时时间到的溢出标志输出信号;
GATE-门控输入信号;
M0-16/32位定时器编码,M0为“0”,16位定时器;M0为“1”,32位定时器;
M1-门控方式编码,M1为“0”,无门控输入信号控制定时器;M1为“1”,门控输入信号控制定时器;
DB_1-定时器IP核内部输入数据总线;
DB_2-定时器IP核内部输出数据总线;
RD_1-16位双向数据选通三态门组读信号;
RD_2-实时定时值读信号;
WR_1-16位双向数据选通三态门组写信号;
WR_2-写工作模式分频倍数编码信号;
WR_3-写状态控制信号;
WR_4-写定时器参数信号;
WR_5-写定时器编号信号;
CLKⅠ-时钟脉冲;
CLKⅡ-定时处理控制运行时钟脉冲;
S0、S1、S2-第0位、第1位、第2位定时器编号值;
S3-第3位定时器编号值;
GATE0~13-16位定时器0~13的门控输入信号,其中GATE1、GATE3、GATE5、GATE8、GATE10、GATE12分别对应32位定时器0~5的门控输入信号;
TF0~13-16位定时器0~13的定时时间到的溢出标志输出信号,其中TF1、TF3、TF5、TF8、TF10、TF12分别对应32位定时器0~5的定时时间到的溢出标志输出信号;
D触发器-Data flip-flop;
D-Data input,D触发器数据输入端;
Q-Data output,D触发器数据输出端;
CP-Clock Pulse input,时钟信号输入端。
具体实施方式
实施例一
一种与16位微处理器应用系统连接的定时器IP核
如图1所示,该定时器IP核包括数据输入输出与命令字分解存储控制模块Ⅱ,脉冲50分频器Ⅲ,定时处理控制模块Ⅳ,定时器溢出标志控制模块Ⅴ,输入门控选择控制模块Ⅵ;
所述数据输入输出与命令字分解存储控制模块Ⅱ与16位微处理器应用系统Ⅰ、定时处理控制模块Ⅳ、定时器溢出标志控制模块Ⅴ和输入门控选择控制模块Ⅵ连接;
所述脉冲50分频器Ⅲ还与16位微处理器应用系统Ⅰ和定时处理控制模块Ⅳ连接;
所述定时处理控制模块Ⅳ还与16位微处理器应用系统Ⅰ、定时器溢出标志控制模块Ⅴ和输入门控选择控制模块Ⅵ连接;
所述数据输入输出与命令字分解存储控制模块Ⅱ在输入的片选信号为低电平的条件下,如果写信号有效,按照16位微处理器应用系统Ⅰ给定的定时器或定时器命令字的地址,获得定时器命令字,16位定时器或32位定时器的定时参数,并按照定时器命令字分解成为定时参数、定时器编号、工作模式分频倍数编码和状态控制分别予以存储和输出,还输出写工作模式分频倍数编码信号、写状态控制信号和写定时器参数信号;如果读信号有效向16位微处理器应用系统Ⅰ传输定时器实时定时值;
所述脉冲50分频器Ⅲ对16位微处理器应用系统Ⅰ的时钟脉冲进行分频,其输出作为定时处理控制模块Ⅳ的定时器定时控制操作的基准时钟脉冲;
所述定时处理控制模块Ⅳ按照数据输入输出与命令字分解存储控制模块Ⅱ输出的定时器编号,在写工作模式分频倍数编码信号和写状态控制信号的作用下,存储该定时器的工作模式分频倍数编码值,状态控制;在写定时器参数信号的作用下,存储定时器的定时参数;所述定时处理控制模块Ⅳ定时器IP核外部输入的时钟脉冲CLKⅡ控制定时处理控制模块Ⅳ的运行,按照脉冲50分频器Ⅲ输出的一个基准时钟脉冲周期完成所有定时器的一次定时处理,包括每个定时器的状态控制处理,工作模式的判断处理,按照已启动定时的每个16位/32位定时器设置的基准时钟倍数值对每个16位/32位定时器的实时定时参数值进行加1操作,产生溢出时,对实时定时参数值自动重装载定时参数,并输出溢出标志信号;在数据输入输出与命令字分解存储控制模块Ⅱ输入的片选信号为低电平的条件下,如果读信号有效,按照16位微处理器应用系统Ⅰ给定的定时器的地址,直接读出该定时器的实时定时参数值经数据输入输出与命令字分解存储控制模块Ⅱ传输到16位微处理器应用系统Ⅰ的数据总线,一次能够读出16位定时器的实时定时参数,32位定时器的实时定时参数需要分时二次予以读出;在16位微处理器应用系统Ⅰ输出的复位信号作用下,停止所有定时器的定时操作;
所述定时器溢出标志控制模块Ⅴ输出16位/32位定时器的高电平为有效的溢出信号;定时处理控制模块Ⅳ输出的16位定时器的溢出信号由低电平变换为高电平时,存储该定时器溢出标志为高电平;如果该定时器溢出标志为高电平,清溢出标志由高电平转换为低电平,存储该定时器溢出标志为低电平;在写工作模式分频倍数编码信号的作用下,定时器溢出标志控制模块Ⅴ按照寄存器编号存储32位定时器工作模式的信息,封锁该32位定时器低16位的溢出信息保持为低电平;
所述输入门控选择控制模块Ⅵ在写工作模式分频倍数编码命令字信号作用下,按照定时器编号存储该定时器的工作模式,根据该定时器工作模式所确定的门控功能要求和输入的门控电平,控制输入门控选择控制模块Ⅵ输出的门控信号。
如图3所示,所述数据输入输出与命令字分解存储控制模块Ⅱ包括16位双向数据选通三态门组1,读写信号控制模块2,定时参数寄存器3,定时器编号寄存器4,工作模式分频倍数编码寄存器5,状态控制寄存器6;
所述16位双向数据选通三态门组1分别与16位微处理器应用系统Ⅰ、读写信号控制模块2、定时参数寄存器3、定时器编号寄存器4,工作模式分频倍数编码寄存器5,状态控制寄存器6和定时处理控制模块Ⅳ连接;
所述读写信号控制模块2还与16位微处理器应用系统Ⅰ、定时参数寄存器3、定时器编号寄存器4,工作模式分频倍数编码寄存器5,状态控制寄存器6、定时处理控制模块Ⅳ、定时器溢出标志控制模块Ⅴ和输入门控选择控制模块Ⅵ连接;
所述定时参数寄存器3还与定时处理控制模块Ⅳ连接;
所述定时器编号寄存器4还与16位微处理器应用系统Ⅰ、定时处理控制模块Ⅳ、定时器溢出标志控制模块Ⅴ和输入门控选择控制模块Ⅵ连接;
所述工作模式分频倍数编码寄存器5还与16位微处理器应用系统Ⅰ、定时处理控制模块Ⅳ、定时器溢出标志控制模块Ⅴ和输入门控选择控制模块Ⅵ连接;
所述状态控制寄存器6还与16位微处理器应用系统Ⅰ、定时处理控制模块Ⅳ和定时器溢出标志控制模块Ⅴ连接;
所述数据输入输出与命令字分解存储控制模块Ⅱ的读写信号控制模块2在片选信号为低电平的条件下,如果写信号有效,发出16位双向数据选通三态门组1写信号,选通16位微处理器应用系统Ⅰ数据总线的数据输入;产生写定时器编号信号,并判断输入的地址值,如果是定时器参数的地址值,将该地址值写入定时器编号寄存器4,产生写定时器参数信号,将数据总线的16位数据写入定时参数寄存器3;如果是定时器命令字地址,判断命令字的第15位是否为“0”,如果第15位是“0”,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器4,产生写工作模式分频倍数编码命令字信号,将数据总线的第0位、第1位、第6位~第9位写入工作模式分频倍数编码寄存器5,产生写状态控制命令字信号,将16位数据总线的第10位、第11位和第14位写入状态控制寄存器6;如果第15位是“1”,命令字是状态命令字,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器4,产生写状态控制命令字信号,将数据总线的第10位、第11位和第14位写入状态控制寄存器6;如果读信号有效,发出16位双向数据选通三态门组1读信号,将定时处理控制模块Ⅳ的定时器IP核内部输出数据总线的数据传输到16位微处理器应用系统Ⅰ的数据总线。
如图4所示,所述定时处理控制模块Ⅳ包括定时器定时控制操作模块47,地址选通控制Ⅰ48,16位定时参数双端口存储器49,地址选通控制Ⅱ50,16位定时实时参数双端口存储器51,地址选通控制Ⅲ52,6位工作模式分频倍数编码双端口存储器53,地址选通控制Ⅳ54,3位状态控制双端口存储器55;
所述定时器定时控制操作模块47分别与脉冲50分频器Ⅲ、定时器溢出标志控制模块Ⅴ、输入门控选择控制模块Ⅵ、地址选通控制Ⅰ48、16位定时参数双端口存储器49、地址选通控制Ⅱ50、16位定时实时参数双端口存储器51、地址选通控制Ⅲ52、6位工作模式分频倍数编码双端口存储器53、地址选通控制Ⅳ54、3位状态控制双端口存储器55和定时处理控制运行时钟脉冲CLKⅡ连接;
所述地址选通控制Ⅰ48还与数据输入输出与命令字分解存储控制模块Ⅱ和16位定时参数双端口存储器49连接;
所述16位定时参数双端口存储器49还与数据输入输出与命令字分解存储控制模块Ⅱ和16位定时实时参数双端口存储器51连接;
所述地址选通控制Ⅱ50还与16位微处理器应用系统Ⅰ、数据输入输出与命令字分解存储控制模块Ⅱ和16位定时实时参数双端口存储器51连接;
所述16位定时实时参数双端口存储器51还与数据输入输出与命令字分解存储控制模块Ⅱ连接;
所述地址选通控制Ⅲ52还与数据输入输出与命令字分解存储控制模块Ⅱ和6位工作模式分频倍数编码双端口存储器53连接;
所述6位工作模式分频倍数编码双端口存储器53还与数据输入输出与命令字分解存储控制模块Ⅱ连接;
所述地址选通控制Ⅳ54还与数据输入输出与命令字分解存储控制模块Ⅱ和3位状态控制双端口存储器55连接;
所述3位状态控制双端口存储器55还与数据输入输出与命令字分解存储控制模块Ⅱ和16位微处理器应用系统Ⅰ的复位信号连接;如果输入的复位信号为有效的复位信号,复位3位状态控制双端口存储器55,停止所有定时器的定时。
如图5所示,所述定时器溢出标志控制模块Ⅴ包括非门7,M0工作模式位寄存器组8,溢出清零脉冲控制器9,与非门Ⅰ10,D触发器Ⅰ11,与门Ⅰ12,与非门Ⅱ13,D触发器Ⅱ14,与非门Ⅲ15,D触发器Ⅲ16,与门Ⅱ17,与非门Ⅳ18,D触发器Ⅳ19,与非门Ⅴ20,D触发器Ⅴ21,与门Ⅲ22,与非门Ⅵ23,D触发器Ⅵ24,与非门Ⅶ25,D触发器Ⅶ26,与门Ⅳ27,与非门Ⅷ28,D触发器Ⅷ29,与非门Ⅸ30,D触发器Ⅸ31,与门Ⅴ32,与非门Ⅹ33,D触发器Ⅹ34,与非门Ⅺ35,D触发器Ⅺ36,与门Ⅵ37,与非门Ⅻ38,D触发器Ⅻ39,与非门ⅩⅢ40,D触发器ⅩⅢ41,与门Ⅶ42,与非门ⅩⅣ43,D触发器ⅩⅣ44,与非门ⅩⅤ45,D触发器ⅩⅤ46;
所述非门7的输入端与数据输入输出与命令字分解存储控制模块Ⅱ的状态控制寄存器6的M0输出端连接,输出端与M0工作模式位寄存器组8的一个输入端连接;
M0工作模式位寄存器组8的另三个输入端分别与16位微处理器应用系统Ⅰ的复位信号输出端、数据输入输出与命令字分解存储控制模块Ⅱ的读写信号控制模块2的写工作模式分频倍数编码信号输出端和定时器编号寄存器4的定时器编号输出端连接,输出端分别与门Ⅰ12、与门Ⅱ17、与门Ⅲ22、与门Ⅳ27、与门Ⅴ32、与门Ⅵ37和与门Ⅶ42的一个输入端连接;
溢出清零脉冲控制器9的三个输入端分别与数据输入输出与命令字分解存储控制模块Ⅱ的读写信号控制模块2的写状态控制信号输出端、状态控制寄存器6的清溢出标志输出端和定时器编号寄存器4的定时器编号输出端连接,输出端分别和与非门Ⅰ10,与非门Ⅱ13,与非门Ⅲ15,与非门Ⅳ18,与非门Ⅴ20,与非门Ⅵ23,与非门Ⅶ25,与非门Ⅷ28,与非门Ⅸ30,与非门Ⅹ33,与非门Ⅺ35,与非门Ⅻ38,与非门ⅩⅢ40,与非门ⅩⅣ43,与非门ⅩⅤ45的一个输入端连接;输出端还和D触发器Ⅰ11,D触发器Ⅱ14,D触发器Ⅲ16,D触发器Ⅳ19,D触发器Ⅴ21,D触发器Ⅵ24,D触发器Ⅶ26,D触发器Ⅷ29,D触发器Ⅸ31,D触发器Ⅹ34,D触发器Ⅺ36,D触发器Ⅻ39,D触发器ⅩⅢ41,D触发器ⅩⅣ44和D触发器ⅩⅤ46的数据输入端连接;
与非门Ⅰ10的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅰ11的时钟信号输入端连接;
D触发器Ⅰ11的数据输出端和与门Ⅰ12的另一个输入端连接;
与门Ⅰ12的输出端作为16位定时器0的溢出标志输出信号与16位微处理器应用系统Ⅰ连接;
与非门Ⅱ13的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅱ14的时钟信号输入端连接;
D触发器Ⅱ14的数据输出端作为16位定时器1/32位定时器0的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅲ15的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅲ16的时钟信号输入端连接;
D触发器Ⅲ16的数据输出端和与门Ⅱ17的另一个输入端连接;
与门Ⅱ17的输出端作为16位定时器2的溢出标志输出信号与16位微处理器应用系统Ⅰ连接;
与非门Ⅳ18的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅳ19的时钟信号输入端连接;
D触发器Ⅳ19的数据输出端作为16位定时器3/32位定时器1的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅴ20的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅴ21的时钟信号输入端连接;
D触发器Ⅴ21的数据输出端和与门Ⅲ22的另一个输入端连接;
与门Ⅲ22的输出端作为16位定时器4的溢出标志输出信号与16位微处理器应用系统Ⅰ连接;
与非门Ⅵ23的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅵ24的时钟信号输入端连接;
D触发器Ⅵ24的数据输出端作为16位定时器5/32位定时器2的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅶ25的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅶ26的时钟信号输入端连接;
D触发器Ⅶ26的数据输出端和与门Ⅳ27的另一个输入端连接;
与门Ⅳ27的输出端作为16位定时器6的溢出标志输出信号与16位微处理器应用系统Ⅰ连接;
与非门Ⅷ28的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅷ29的时钟信号输入端连接;
D触发器Ⅷ29的数据输出端作为16位定时器7/32位定时器3的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅸ30的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅸ31的时钟信号输入端连接;
D触发器Ⅸ31的数据输出端和与门Ⅴ32的另一个输入端连接;
与门Ⅴ32的输出端作为16位定时器8的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅹ33的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅹ34的时钟信号输入端连接;
D触发器Ⅹ34的数据输出端作为16位定时器9/32位定时器4的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门Ⅺ35的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅺ36的时钟信号输入端连接;
D触发器Ⅺ36的数据输出端和与门Ⅵ37的另一个输入端连接;
与门Ⅵ37的输出端作为16位定时器10的溢出标志输出信号与16位微处理器应用系统Ⅰ连接;
与非门Ⅻ38的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器Ⅻ39的时钟信号输入端连接;
D触发器Ⅻ39的数据输出端作为16位定时器11/32位定时器5的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门ⅩⅢ40的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器ⅩⅢ41的时钟信号输入端连接;
D触发器ⅩⅢ41的数据输出端和与门Ⅶ42的另一个输入端连接;
与门Ⅶ42的输出端作为16位定时器12的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门ⅩⅣ43的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器ⅩⅣ44的时钟信号输入端连接;
D触发器ⅩⅣ44的数据输出端作为16位定时器13/32位定时器6的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接;
与非门ⅩⅤ45的另一个输入端与定时处理控制模块Ⅳ的溢出标志输出端连接,输出端与D触发器ⅩⅤ46的时钟信号输入端连接;
D触发器ⅩⅤ46的数据输出端作为16位定时器14的溢出标志输出信号输出端与16位微处理器应用系统Ⅰ连接。
该定时器IP核有58个引脚,其封装图参见图2;
定时器与命令地址编码参见附表一《实施例一之与16位微处理器应用系统连接的定时器IP核的定时器与命令地址编码表》;
定时器命令字参见附表二:《实施例一之与16位微处理器应用系统连接的定时器IP核的定时器命令字》。
该与16位微处理器应用系统连接的定时器IP核用于实现定时器定时控制操作的方法之程序流程图参见图6-1~图6-3;其具体步骤为:
s101:清基准时钟脉冲分频倍数u数组存储单元,定时器编号值j;
s102:基准时钟脉冲下降沿触发程序执行1次;
s103:判断定时器编号值j是否等于或大于15,如果j的值等于或大于15,则进入步骤s104,否则进入s105;
s104:设置定时器编号值j=0,返回步骤s102;
s105:判断启/停信号是否等于1,如果启/停信号=1,该定时器定时工作,进入步骤s109,否则该定时器处于停止定时工作状态,进入步骤s106;
s106:判断清定时当前值是否等于0,如果清定时当前值=0,则进入步骤s107,否则进入步骤s108;
s107:清除该定时器定时存储单元的值,进入步骤s108;
s108:定时器编号值j加1, 返回步骤s103;
s109:该定时器的基准时钟脉冲分频倍数加1:u(j)= u(j)+1,进入步骤s110;
s110:判断该定时器工作模式,如果工作模式M1M0=10,门控16位定时器,进入步骤s111;如果工作模式M1M0=00,无门控的16位定时器,进入步骤s116;如果工作模式M1M0=01,无门控的32位定时器,进入步骤s112;如果工作模式M1M0=11,则选择门控的32位定时器,进入步骤s113;
s111:判断该16位定时器的门控信号是否为0,如果门控信号等于0则返回步骤s108,否则进入步骤s116;
s112:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s136,否则返回步骤s108;
s113:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s114,否则返回步骤s108;
s114:判断该32位定时器的门控信号是否为0,如果门控信号等于0则进入步骤s136,否则进入步骤s115;
s115:定时器编号j加2:j=j+2,返回步骤s103;
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s132;如果分频倍数的编码为0001,则进入步骤s117;如果分频倍数的编码为0010,则进入步骤s118;如果分频倍数的编码为0011,则进入步骤s119;如果分频倍数的编码为0100,则进入步骤s120;如果分频倍数的编码为0101,则进入步骤s121;如果分频倍数的编码为0110,则进入步骤s122;如果分频倍数的编码为0111,则进入步骤s123;如果分频倍数的编码为1000,则进入步骤s124;如果分频倍数的编码为1001,则进入步骤s125;如果分频倍数的编码为1010,则进入步骤s126;如果分频倍数的编码为1011,则进入步骤s127;如果分频倍数的编码为1100,则进入步骤s128;如果分频倍数的编码为1101,则进入步骤s129;如果分频倍数的编码为1110,则进入步骤s130;如果分频倍数的编码为1111,则进入步骤s131;
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s132,否则返回步骤s108;
s124:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s132,否则返回步骤s108;
s125:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s132,否则返回步骤s108;
s126:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s132,否则返回步骤s108;
s127:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s132,否则返回步骤s108;
s128:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s132,否则返回步骤s108;
s129:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s132,否则返回步骤s108;
s130:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s132,否则返回步骤s108;
s131:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s132,否则返回步骤s108;
s132:设置该16位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s133;
s133:读出该16位定时器的16位定时当前值并加1,结果存储在该16位定时器16位定时当前值存储单元,进入步骤s124;
s134:判断该16位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s135,否则返回步骤s108;
s135:重新装载该16位定时器的16位定时参数,返回步骤s108;
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s152;如果分频倍数的编码为0001,则进入步骤s137;如果分频倍数的编码为0010,则进入步骤s138;如果分频倍数的编码为0011,则进入步骤s139;如果分频倍数的编码为0100,则进入步骤s140;如果分频倍数的编码为0101,则进入步骤s141;如果分频倍数的编码为0110,则进入步骤s142;如果分频倍数的编码为0111,则进入步骤s143;如果分频倍数的编码为1000,则进入步骤s144;如果分频倍数的编码为1001,则进入步骤s145;如果分频倍数的编码为1010,则进入步骤s146;如果分频倍数的编码为1011,则进入步骤s147;如果分频倍数的编码为1100,则进入步骤s148;如果分频倍数的编码为1101,则进入步骤s149;如果分频倍数的编码为1110,则进入步骤s150;如果分频倍数的编码为1111,则进入步骤s151;
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s152,否则返回步骤s115;
s144:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s152,否则返回步骤s115;
s145:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s152,否则返回步骤s115;
s146:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s152,否则返回步骤s115;
s147:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s152,否则返回步骤s115;
s148:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s152,否则返回步骤s115;
s149:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s152,否则返回步骤s115;
s150:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s152,否则返回步骤s115;
s151:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s152,否则返回步骤s115;
s152: 设置该32位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s153;
s153:读出该32位定时器的32位定时当前值并加1,结果存储在该32位定时器的32位定时当前值存储单元,进入步骤s154;
s154: 判断该32位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s155,否则返回步骤s115;
s155:重新装载该32位定时器的32位定时参数,返回步骤s115。
实施例二:
一种与16位微处理器应用系统连接的定时器IP核,该定时器IP核的每个定时器将实施例一的能够选择设置十六种定时基准时钟脉冲的分频倍数变换为每个定时器能够选择设置八种定时基准时钟脉冲的分频倍数,其基本结构同实施例一,所不同之处在于:其变换后的分频倍数以及定时器定时控制操作程序流程不同;
其变换后的分频倍数设置参见附表三:《实施例二与16位微处理器应用系统连接的定时器IP核的定时器命令字》;实施例一的图6_1~6_3的定时器定时控制操作程序流程图变换为实施例二的图7_1~7_3的定时器定时控制操作程序流程图,图6_1中的定时处理控制模块Ⅳ的定时器定时控制操作的具体步骤s116变换为图7_1中的定时处理控制模块Ⅳ的定时器定时控制操作的具体步骤s116,即:
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s132;如果分频倍数的编码为001,则进入步骤s117;如果分频倍数的编码为010,则进入步骤s118;如果分频倍数的编码为011,则进入步骤s119;如果分频倍数的编码为100,则进入步骤s120;如果分频倍数的编码为101,则进入步骤s121;如果分频倍数的编码为110,则进入步骤s122;如果分频倍数的编码为111,则进入步骤s123;
删除图6_1中的步骤s124~s131;将图6_1中的步骤s117~s123变换为图7_1中的步骤s117~s123,具体修改为:
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s132,否则返回步骤s108;
将图6_3中的定时器定时控制操作的具体步骤s136变换为图7_3中的定时器定时控制操作的具体步骤s136,该步骤s136如下:
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s152;如果分频倍数的编码为001,则进入步骤s137;如果分频倍数的编码为010,则进入步骤s138;如果分频倍数的编码为011,则进入步骤s139;如果分频倍数的编码为100,则进入步骤s140;如果分频倍数的编码为101,则进入步骤s141;如果分频倍数的编码为110,则进入步骤s142;如果分频倍数的编码为111,则进入步骤s143;
删除图6_3中的步骤s144~s151;图6_3中的步骤s137~s143变换为图7_3中的定时器定时控制操作的步骤s137~s143:
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s152,否则返回步骤s115。
实施例三:
一种与16位微处理器应用系统连接的定时器IP核,图1中的脉冲50分频器Ⅲ确定了定时器IP核的定时基准时钟,将脉冲50分频器Ⅲ变换为100分频器Ⅲ,适应16位微处理器的时钟频率大于50MHz的情况。
实施例四:
一种与16位微处理器应用系统连接的定时器IP核,图1中的脉冲50分频器Ⅲ确定了定时器IP核的定时基准时钟,将脉冲50分频器Ⅲ变换为200分频器Ⅲ,适应16位微处理器的时钟频率大于200MHz的情况。
附表一:《实施例一之一种与16位微处理器应用系统连接的定时器IP核的定时器与命令地址编码表》
附表二:《实施例一之与16位微处理器应用系统连接的
定时器IP核的定时器命令字》
附表三:《实施例二之与16位微处理器应用系统连接的
定时器IP核的定时器命令字》
Claims (6)
1.一种与16位微处理器应用系统连接的定时器IP核,其特征在于:该定时器IP核包括数据输入输出与命令字分解存储控制模块(Ⅱ),脉冲50分频器(Ⅲ),定时处理控制模块(Ⅳ),定时器溢出标志控制模块(Ⅴ),输入门控选择控制模块(Ⅵ);
所述数据输入输出与命令字分解存储控制模块(Ⅱ)与16位微处理器应用系统(Ⅰ)、定时处理控制模块(Ⅳ)、定时器溢出标志控制模块(Ⅴ)和输入门控选择控制模块(Ⅵ)连接;
所述脉冲50分频器(Ⅲ)还与16位微处理器应用系统(Ⅰ)和定时处理控制模块(Ⅳ)连接;
所述定时处理控制模块(Ⅳ)还与16位微处理器应用系统(Ⅰ)、定时器溢出标志控制模块(Ⅴ)和输入门控选择控制模块(Ⅵ)连接;
所述数据输入输出与命令字分解存储控制模块(Ⅱ)在输入的片选信号为低电平的条件下,如果写信号有效,按照16位微处理器应用系统(Ⅰ)给定的定时器或定时器命令字的地址,获得定时器命令字,16位定时器或32位定时器的定时参数,并按照定时器命令字分解成为定时参数、定时器编号、工作模式分频倍数编码和状态控制分别予以存储和输出,还输出写工作模式分频倍数编码信号、写状态控制信号和写定时器参数信号;如果读信号有效向16位微处理器应用系统(Ⅰ)传输定时器实时定时值;
所述脉冲50分频器(Ⅲ)对16位微处理器应用系统(Ⅰ)的时钟脉冲进行分频,其输出作为定时处理控制模块(Ⅳ)的定时器定时控制操作的基准时钟脉冲;
所述定时处理控制模块(Ⅳ)按照数据输入输出与命令字分解存储控制模块(Ⅱ)输出的定时器编号,在写工作模式分频倍数编码信号和写状态控制信号的作用下,存储该定时器的工作模式分频倍数编码值,状态控制;在写定时器参数信号的作用下,存储定时器的定时参数;所述定时处理控制模块(Ⅳ)定时器IP核外部输入的时钟脉冲CLKⅡ控制定时处理控制模块(Ⅳ)的运行,按照脉冲50分频器(Ⅲ)输出的一个基准时钟脉冲周期完成所有定时器的一次定时处理,包括每个定时器的状态控制处理,工作模式的判断处理,按照已启动定时的每个16位/32位定时器设置的基准时钟倍数值对每个16位/32位定时器的实时定时参数值进行加1操作,产生溢出时,对实时定时参数值自动重装载定时参数,并输出溢出标志信号;在数据输入输出与命令字分解存储控制模块(Ⅱ)输入的片选信号为低电平的条件下,如果读信号有效,按照16位微处理器应用系统(Ⅰ)给定的定时器的地址,直接读出该定时器的实时定时参数值经数据输入输出与命令字分解存储控制模块(Ⅱ)传输到16位微处理器应用系统(Ⅰ)的数据总线,一次能够读出16位定时器的实时定时参数,32位定时器的实时定时参数需要分时二次予以读出;在16位微处理器应用系统(Ⅰ)输出的复位信号作用下,停止所有定时器的定时操作;
所述定时器溢出标志控制模块(Ⅴ)输出16位/32位定时器的高电平为有效的溢出信号;定时处理控制模块(Ⅳ)输出的16位定时器的溢出信号由低电平变换为高电平时,存储该定时器溢出标志为高电平;如果该定时器溢出标志为高电平,清溢出标志由高电平转换为低电平,存储该定时器溢出标志为低电平;在写工作模式分频倍数编码信号的作用下,定时器溢出标志控制模块(Ⅴ)按照寄存器编号存储32位定时器工作模式的信息,封锁该32位定时器低16位的溢出信息保持为低电平;
所述输入门控选择控制模块(Ⅵ)在写工作模式分频倍数编码命令字信号作用下,按照定时器编号存储该定时器的工作模式,根据该定时器工作模式所确定的门控功能要求和输入的门控电平,控制输入门控选择控制模块(Ⅵ)输出的门控信号。
2.如权利要求1所述的一种与16位微处理器应用系统连接的定时器IP核,其特征在于:所述数据输入输出与命令字分解存储控制模块(Ⅱ)包括16位双向数据选通三态门组(1),读写信号控制模块(2),定时参数寄存器(3),定时器编号寄存器(4),工作模式分频倍数编码寄存器(5),状态控制寄存器(6);
所述16位双向数据选通三态门组(1)分别与16位微处理器应用系统(Ⅰ)、读写信号控制模块(2)、定时参数寄存器(3)、定时器编号寄存器(4),工作模式分频倍数编码寄存器(5),状态控制寄存器(6)和定时处理控制模块(Ⅳ)连接;
所述读写信号控制模块(2)还与16位微处理器应用系统(Ⅰ)、定时参数寄存器(3)、定时器编号寄存器(4),工作模式分频倍数编码寄存器(5),状态控制寄存器(6)、定时处理控制模块(Ⅳ)、定时器溢出标志控制模块(Ⅴ)和输入门控选择控制模块(Ⅵ)连接;
所述定时参数寄存器(3)还与定时处理控制模块(Ⅳ)连接;
所述定时器编号寄存器(4)还与16位微处理器应用系统(Ⅰ)、定时处理控制模块(Ⅳ)、定时器溢出标志控制模块(Ⅴ)和输入门控选择控制模块(Ⅵ)连接;
所述工作模式分频倍数编码寄存器(5)还与16位微处理器应用系统(Ⅰ)、定时处理控制模块(Ⅳ)、定时器溢出标志控制模块(Ⅴ)和输入门控选择控制模块(Ⅵ)连接;
所述状态控制寄存器(6)还与16位微处理器应用系统(Ⅰ)、定时处理控制模块(Ⅳ)和定时器溢出标志控制模块(Ⅴ)连接;
所述数据输入输出与命令字分解存储控制模块(Ⅱ)的读写信号控制模块(2)在片选信号为低电平的条件下,如果写信号有效,发出16位双向数据选通三态门组(1)写信号,选通16位微处理器应用系统(Ⅰ)数据总线的数据输入;产生写定时器编号信号,并判断输入的地址值,如果是定时器参数的地址值,将该地址值写入定时器编号寄存器(4),产生写定时器参数信号,将数据总线的16位数据写入定时参数寄存器(3);如果是定时器命令字地址,判断命令字的第15位是否为“0”,如果第15位是“0”,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器(4),产生写工作模式分频倍数编码命令字信号,将数据总线的第0位、第1位、第6位~第9位写入工作模式分频倍数编码寄存器(5),产生写状态控制命令字信号,将16位数据总线的第10位、第11位和第14位写入状态控制寄存器(6);如果第15位是“1”,命令字是状态命令字,产生写定时器编号信号,将16位数据总线的第2位~第5位数据写入定时器编号寄存器(4),产生写状态控制命令字信号,将数据总线的第10位、第11位和第14位写入状态控制寄存器(6);如果读信号有效,发出16位双向数据选通三态门组(1)读信号,将定时处理控制模块(Ⅳ)的定时器IP核内部输出数据总线的数据传输到16位微处理器应用系统(Ⅰ)的数据总线。
3.如权利要求2所述的一种与16位微处理器应用系统连接的定时器IP核,其特征在于:所述定时处理控制模块(Ⅳ)包括定时器定时控制操作模块(47),地址选通控制Ⅰ(48),16位定时参数双端口存储器(49),地址选通控制Ⅱ(50),16位定时实时参数双端口存储器(51),地址选通控制Ⅲ(52),6位工作模式分频倍数编码双端口存储器(53),地址选通控制Ⅳ(54),3位状态控制双端口存储器(55);
所述定时器定时控制操作模块(47)分别与脉冲50分频器(Ⅲ)、定时器溢出标志控制模块(Ⅴ)、输入门控选择控制模块(Ⅵ)、地址选通控制Ⅰ(48)、16位定时参数双端口存储器(49)、地址选通控制Ⅱ(50)、16位定时实时参数双端口存储器(51)、地址选通控制Ⅲ(52)、6位工作模式分频倍数编码双端口存储器(53)、地址选通控制Ⅳ(54)、3位状态控制双端口存储器(55)和定时处理控制运行时钟脉冲CLKⅡ连接;
所述地址选通控制Ⅰ(48)还与数据输入输出与命令字分解存储控制模块(Ⅱ)和16位定时参数双端口存储器(49)连接;
所述16位定时参数双端口存储器(49)还与数据输入输出与命令字分解存储控制模块(Ⅱ)和16位定时实时参数双端口存储器(51)连接;
所述地址选通控制Ⅱ(50)还与16位微处理器应用系统(Ⅰ)、数据输入输出与命令字分解存储控制模块(Ⅱ)和16位定时实时参数双端口存储器(51)连接;
所述16位定时实时参数双端口存储器(51)还与数据输入输出与命令字分解存储控制模块(Ⅱ)连接;
所述地址选通控制Ⅲ(52)还与数据输入输出与命令字分解存储控制模块(Ⅱ)和6位工作模式分频倍数编码双端口存储器(53)连接;
所述6位工作模式分频倍数编码双端口存储器(53)还与数据输入输出与命令字分解存储控制模块(Ⅱ)连接;
所述地址选通控制Ⅳ(54)还与数据输入输出与命令字分解存储控制模块(Ⅱ)和3位状态控制双端口存储器(55)连接;
所述3位状态控制双端口存储器(55)还与数据输入输出与命令字分解存储控制模块(Ⅱ)和16位微处理器应用系统(Ⅰ)的复位信号连接;如果输入的复位信号为有效的复位信号,复位3位状态控制双端口存储器(55),停止所有定时器的定时。
4.如权利要求3所述的一种与16位微处理器应用系统连接的定时器IP核,其特征在于:所述定时器溢出标志控制模块(Ⅴ)包括非门(7),M0工作模式位寄存器组(8),溢出清零脉冲控制器(9),与非门Ⅰ(10),D触发器Ⅰ(11),与门Ⅰ(12),与非门Ⅱ(13),D触发器Ⅱ(14),与非门Ⅲ(15),D触发器Ⅲ(16),与门Ⅱ(17),与非门Ⅳ(18),D触发器Ⅳ(19),与非门Ⅴ(20),D触发器Ⅴ(21),与门Ⅲ(22),与非门Ⅵ(23),D触发器Ⅵ(24),与非门Ⅶ(25),D触发器Ⅶ(26),与门Ⅳ(27),与非门Ⅷ(28),D触发器Ⅷ(29),与非门Ⅸ(30),D触发器Ⅸ(31),与门Ⅴ(32),与非门Ⅹ(33),D触发器Ⅹ(34),与非门Ⅺ(35),D触发器Ⅺ(36),与门Ⅵ(37),与非门Ⅻ(38),D触发器Ⅻ(39),与非门ⅩⅢ(40),D触发器ⅩⅢ(41),与门Ⅶ(42),与非门ⅩⅣ(43),D触发器ⅩⅣ(44),与非门ⅩⅤ(45),D触发器ⅩⅤ(46);
所述非门(7)的输入端与数据输入输出与命令字分解存储控制模块(Ⅱ)的状态控制寄存器(6)的M0输出端连接,输出端与M0工作模式位寄存器组(8)的一个输入端连接;
M0工作模式位寄存器组(8)的另三个输入端分别与16位微处理器应用系统(Ⅰ)的复位信号输出端、数据输入输出与命令字分解存储控制模块(Ⅱ)的读写信号控制模块(2)的写工作模式分频倍数编码信号输出端和定时器编号寄存器(4)的定时器编号输出端连接,输出端分别与门Ⅰ(12)、与门Ⅱ(17)、与门Ⅲ(22)、与门Ⅳ(27)、与门Ⅴ(32)、与门Ⅵ(37)和与门Ⅶ(42)的一个输入端连接;
溢出清零脉冲控制器(9)的三个输入端分别与数据输入输出与命令字分解存储控制模块(Ⅱ)的读写信号控制模块(2)的写状态控制信号输出端、状态控制寄存器(6)的清溢出标志输出端和定时器编号寄存器(4)的定时器编号输出端连接,输出端分别和与非门Ⅰ(10),与非门Ⅱ(13),与非门Ⅲ(15),与非门Ⅳ(18),与非门Ⅴ(20),与非门Ⅵ(23),与非门Ⅶ(25),与非门Ⅷ(28),与非门Ⅸ(30),与非门Ⅹ(33),与非门Ⅺ(35),与非门Ⅻ(38),与非门ⅩⅢ(40),与非门ⅩⅣ(43),与非门ⅩⅤ(45)的一个输入端连接;输出端还和D触发器Ⅰ(11),D触发器Ⅱ(14),D触发器Ⅲ(16),D触发器Ⅳ(19),D触发器Ⅴ(21),D触发器Ⅵ(24),D触发器Ⅶ(26),D触发器Ⅷ(29),D触发器Ⅸ(31),D触发器Ⅹ(34),D触发器Ⅺ(36),D触发器Ⅻ(39),D触发器ⅩⅢ(41),D触发器ⅩⅣ(44)和D触发器ⅩⅤ(46)的数据输入端连接;
与非门Ⅰ(10)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅰ(11)的时钟信号输入端连接;
D触发器Ⅰ(11)的数据输出端和与门Ⅰ(12)的另一个输入端连接;
与门Ⅰ(12)的输出端作为16位定时器0的溢出标志输出信号与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅱ(13)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅱ(14)的时钟信号输入端连接;
D触发器Ⅱ(14)的数据输出端作为16位定时器1/32位定时器0的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅲ(15)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅲ(16)的时钟信号输入端连接;
D触发器Ⅲ(16)的数据输出端和与门Ⅱ(17)的另一个输入端连接;
与门Ⅱ(17)的输出端作为16位定时器2的溢出标志输出信号与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅳ(18)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅳ(19)的时钟信号输入端连接;
D触发器Ⅳ(19)的数据输出端作为16位定时器3/32位定时器1的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅴ(20)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅴ(21)的时钟信号输入端连接;
D触发器Ⅴ(21)的数据输出端和与门Ⅲ(22)的另一个输入端连接;
与门Ⅲ(22)的输出端作为16位定时器4的溢出标志输出信号与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅵ(23)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅵ(24)的时钟信号输入端连接;
D触发器Ⅵ(24)的数据输出端作为16位定时器5/32位定时器2的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅶ(25)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅶ(26)的时钟信号输入端连接;
D触发器Ⅶ(26)的数据输出端和与门Ⅳ(27)的另一个输入端连接;
与门Ⅳ(27)的输出端作为16位定时器6的溢出标志输出信号与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅷ(28)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅷ(29)的时钟信号输入端连接;
D触发器Ⅷ(29)的数据输出端作为16位定时器7/32位定时器3的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅸ(30)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅸ(31)的时钟信号输入端连接;
D触发器Ⅸ(31)的数据输出端和与门Ⅴ(32)的另一个输入端连接;
与门Ⅴ(32)的输出端作为16位定时器8的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅹ(33)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅹ(34)的时钟信号输入端连接;
D触发器Ⅹ(34)的数据输出端作为16位定时器9/32位定时器4的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅺ(35)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅺ(36)的时钟信号输入端连接;
D触发器Ⅺ(36)的数据输出端和与门Ⅵ(37)的另一个输入端连接;
与门Ⅵ(37)的输出端作为16位定时器10的溢出标志输出信号与16位微处理器应用系统(Ⅰ)连接;
与非门Ⅻ(38)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器Ⅻ(39)的时钟信号输入端连接;
D触发器Ⅻ(39)的数据输出端作为16位定时器11/32位定时器5的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门ⅩⅢ(40)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器ⅩⅢ(41)的时钟信号输入端连接;
D触发器ⅩⅢ(41)的数据输出端和与门Ⅶ(42)的另一个输入端连接;
与门Ⅶ(42)的输出端作为16位定时器12的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门ⅩⅣ(43)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器ⅩⅣ(44)的时钟信号输入端连接;
D触发器ⅩⅣ(44)的数据输出端作为16位定时器13/32位定时器6的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接;
与非门ⅩⅤ(45)的另一个输入端与定时处理控制模块(Ⅳ)的溢出标志输出端连接,输出端与D触发器ⅩⅤ(46)的时钟信号输入端连接;
D触发器ⅩⅤ(46)的数据输出端作为16位定时器14的溢出标志输出信号输出端与16位微处理器应用系统(Ⅰ)连接。
5.一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作的方法,其特征在于:它是运用权利要求4所述的一种与16位微处理器应用系统连接的定时器IP核来实现定时器定时控制操作的方法;
所述定时器定时控制操作的具体步骤为:
s101:清基准时钟脉冲分频倍数u数组存储单元,定时器编号值j;
s102:基准时钟脉冲下降沿触发程序执行1次;
s103:判断定时器编号值j是否等于或大于15,如果j的值等于或大于15,则进入步骤s104,否则进入s105;
s104:设置定时器编号值j=0,返回步骤s102;
s105:判断启/停信号是否等于1,如果启/停信号=1,该定时器定时工作,进入步骤s109,否则该定时器处于停止定时工作状态,进入步骤s106;
s106:判断清定时当前值是否等于0,如果清定时当前值=0,则进入步骤s107,否则进入步骤s108;
s107:清除该定时器定时存储单元的值,进入步骤s108;
s108:定时器编号值j加1, 返回步骤s103;
s109:该定时器的基准时钟脉冲分频倍数加1:u(j)= u(j)+1,进入步骤s110;
s110:判断该定时器工作模式,如果工作模式M1M0=10,门控16位定时器,进入步骤s111;如果工作模式M1M0=00,无门控的16位定时器,进入步骤s116;如果工作模式M1M0=01,无门控的32位定时器,进入步骤s112;如果工作模式M1M0=11,则选择门控的32位定时器,进入步骤s113;
s111:判断该16位定时器的门控信号是否为0,如果门控信号等于0则返回步骤s108,否则进入步骤s116;
s112:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s136,否则返回步骤s108;
s113:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s114,否则返回步骤s108;
s114:判断该32位定时器的门控信号是否为0,如果门控信号等于0则进入步骤s136,否则进入步骤s115;
s115:定时器编号j加2:j=j+2,返回步骤s103;
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s132;如果分频倍数的编码为0001,则进入步骤s117;如果分频倍数的编码为0010,则进入步骤s118;如果分频倍数的编码为0011,则进入步骤s119;如果分频倍数的编码为0100,则进入步骤s120;如果分频倍数的编码为0101,则进入步骤s121;如果分频倍数的编码为0110,则进入步骤s122;如果分频倍数的编码为0111,则进入步骤s123;如果分频倍数的编码为1000,则进入步骤s124;如果分频倍数的编码为1001,则进入步骤s125;如果分频倍数的编码为1010,则进入步骤s126;如果分频倍数的编码为1011,则进入步骤s127;如果分频倍数的编码为1100,则进入步骤s128;如果分频倍数的编码为1101,则进入步骤s129;如果分频倍数的编码为1110,则进入步骤s130;如果分频倍数的编码为1111,则进入步骤s131;
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s132,否则返回步骤s108;
s124:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s132,否则返回步骤s108;
s125:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s132,否则返回步骤s108;
s126:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s132,否则返回步骤s108;
s127:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s132,否则返回步骤s108;
s128:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s132,否则返回步骤s108;
s129:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s132,否则返回步骤s108;
s130:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s132,否则返回步骤s108;
s131:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s132,否则返回步骤s108;
s132:设置该16位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s133;
s133:读出该16位定时器的16位定时当前值并加1,结果存储在该16位定时器16位定时当前值存储单元,进入步骤s124;
s134:判断该16位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s135,否则返回步骤s108;
s135:重新装载该16位定时器的16位定时参数,返回步骤s108;
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为0000,进入步骤s152;如果分频倍数的编码为0001,则进入步骤s137;如果分频倍数的编码为0010,则进入步骤s138;如果分频倍数的编码为0011,则进入步骤s139;如果分频倍数的编码为0100,则进入步骤s140;如果分频倍数的编码为0101,则进入步骤s141;如果分频倍数的编码为0110,则进入步骤s142;如果分频倍数的编码为0111,则进入步骤s143;如果分频倍数的编码为1000,则进入步骤s144;如果分频倍数的编码为1001,则进入步骤s145;如果分频倍数的编码为1010,则进入步骤s146;如果分频倍数的编码为1011,则进入步骤s147;如果分频倍数的编码为1100,则进入步骤s148;如果分频倍数的编码为1101,则进入步骤s149;如果分频倍数的编码为1110,则进入步骤s150;如果分频倍数的编码为1111,则进入步骤s151;
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2,如果u(j)=2,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4,如果u(j)=4,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8,如果u(j)=8,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16,如果u(j)=16,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32,如果u(j)=32,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于64,如果u(j)=64,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于128,如果u(j)=128,则进入步骤s152,否则返回步骤s115;
s144:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于256,如果u(j)=256,则进入步骤s152,否则返回步骤s115;
s145:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于512,如果u(j)=512,则进入步骤s152,否则返回步骤s115;
s146:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1024,如果u(j)=1024,则进入步骤s152,否则返回步骤s115;
s147:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于2048,如果u(j)=2048,则进入步骤s152,否则返回步骤s115;
s148:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于4096,如果u(j)=4096,则进入步骤s152,否则返回步骤s115;
s149:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于8192,如果u(j)=8192,则进入步骤s152,否则返回步骤s115;
s150:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于16384,如果u(j)=16384,则进入步骤s152,否则返回步骤s115;
s151:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于32768,如果u(j)=32768,则进入步骤s152,否则返回步骤s115;
s152: 设置该32位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s153;
s153:读出该32位定时器的32位定时当前值并加1,结果存储在该32位定时器的32位定时当前值存储单元,进入步骤s154;
s154: 判断该32位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s155,否则返回步骤s115;
s155:重新装载该32位定时器的32位定时参数,返回步骤s115。
6.一种与16位微处理器应用系统连接的定时器IP核的定时器定时控制操作的方法,其特征在于:它是运用权利要求4所述的一种与16位微处理器应用系统连接的定时器IP核来实现定时器定时控制操作的另一种方法;
所述定时器定时控制操作的具体步骤为:
s101:清基准时钟脉冲分频倍数u数组存储单元,定时器编号值j;
s102:基准时钟脉冲下降沿触发程序执行1次;
s103:判断定时器编号值j是否等于或大于15,如果j的值等于或大于15,则进入步骤s104,否则进入s105;
s104:设置定时器编号值j=0,返回步骤s102;
s105:判断启/停信号是否等于1,如果启/停信号=1,该定时器定时工作,进入步骤s109,否则该定时器处于停止定时工作状态,进入步骤s106;
s106:判断清定时当前值是否等于0,如果清定时当前值=0,则进入步骤s107,否则进入步骤s108;
s107:清除该定时器定时存储单元的值,进入步骤s108;
s108:定时器编号值j加1, 返回步骤s103;
s109:该定时器的基准时钟脉冲分频倍数加1:u(j)= u(j)+1,进入步骤s110;
s110:判断该定时器工作模式,如果工作模式M1M0=10,门控16位定时器,进入步骤s111;如果工作模式M1M0=00,无门控的16位定时器,进入步骤s116;如果工作模式M1M0=01,无门控的32位定时器,进入步骤s112;如果工作模式M1M0=11,则选择门控的32位定时器,进入步骤s113;
s111:判断该16位定时器的门控信号是否为0,如果门控信号等于0则返回步骤s108,否则进入步骤s116;
s112:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s136,否则返回步骤s108;
s113:判断该32位定时器编号j的低2位是否等于00,如果等于00则进入步骤s114,否则返回步骤s108;
s114:判断该32位定时器的门控信号是否为0,如果门控信号等于0则进入步骤s136,否则进入步骤s115;
s115:定时器编号j加2:j=j+2,返回步骤s103;
s116:判断该16位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s132;如果分频倍数的编码为001,则进入步骤s117;如果分频倍数的编码为010,则进入步骤s118;如果分频倍数的编码为011,则进入步骤s119;如果分频倍数的编码为100,则进入步骤s120;如果分频倍数的编码为101,则进入步骤s121;如果分频倍数的编码为110,则进入步骤s122;如果分频倍数的编码为111,则进入步骤s123;
s117:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s132,否则返回步骤s108;
s118:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s132,否则返回步骤s108;
s119:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s132,否则返回步骤s108;
s120:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s132,否则返回步骤s108;
s121:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s132,否则返回步骤s108;
s122:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s132,否则返回步骤s108;
s123:判断该16位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s132,否则返回步骤s108;
s132:设置该16位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s133;
s133:读出该16位定时器的16位定时当前值并加1,结果存储在该16位定时器16位定时当前值存储单元,进入步骤s124;
s134:判断该16位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s135,否则返回步骤s108;
s135:重新装载该16位定时器的16位定时参数,返回步骤s108;
s136:判断该32位定时器的分频倍数的编码,如果分频倍数的编码为000,进入步骤s152;如果分频倍数的编码为001,则进入步骤s137;如果分频倍数的编码为010,则进入步骤s138;如果分频倍数的编码为011,则进入步骤s139;如果分频倍数的编码为100,则进入步骤s140;如果分频倍数的编码为101,则进入步骤s141;如果分频倍数的编码为110,则进入步骤s142;如果分频倍数的编码为111,则进入步骤s143;
s137:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于10,如果u(j)=10,则进入步骤s152,否则返回步骤s115;
s138:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于50,如果u(j)=50,则进入步骤s152,否则返回步骤s115;
s139:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于100,如果u(j)=100,则进入步骤s152,否则返回步骤s115;
s140:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于200,如果u(j)=200,则进入步骤s152,否则返回步骤s115;
s141:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于500,如果u(j)=500,则进入步骤s152,否则返回步骤s115;
s142:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1000,如果u(j)=1000,则进入步骤s152,否则返回步骤s115;
s143:判断该32位定时器的基准时钟脉冲分频倍数u(j)的值是否等于1500,如果u(j)=1500,则进入步骤s152,否则返回步骤s115;
s152: 设置该32位定时器的基准时钟脉冲分频倍数u(j)的值等于0,进入步骤s153;
s153:读出该32位定时器的32位定时当前值并加1,结果存储在该32位定时器的32位定时当前值存储单元,进入步骤s154;
s154: 判断该32位定时器的定时值是否产生溢出,如果产生溢出则进入步骤s155,否则返回步骤s115;
s155:重新装载该32位定时器的32位定时参数,返回步骤s115。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510373532.4A CN105022608B (zh) | 2015-06-30 | 2015-06-30 | 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510373532.4A CN105022608B (zh) | 2015-06-30 | 2015-06-30 | 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105022608A true CN105022608A (zh) | 2015-11-04 |
CN105022608B CN105022608B (zh) | 2017-12-08 |
Family
ID=54412600
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510373532.4A Active CN105022608B (zh) | 2015-06-30 | 2015-06-30 | 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105022608B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105807843A (zh) * | 2016-03-17 | 2016-07-27 | 东莞华芯世纪微电子有限公司 | 一种实现定时/计数器的方法及使用这种方法的装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0001398A2 (de) * | 1977-09-29 | 1979-04-18 | Siemens Aktiengesellschaft | Elektronischer Programmgeber |
US20030191863A1 (en) * | 2001-07-02 | 2003-10-09 | Globespanvirata Incorporated | Communications system using rings architecture |
CN1601504A (zh) * | 2004-08-13 | 2005-03-30 | 成都国腾微电子有限公司 | 串口扩展芯片 |
CN201335972Y (zh) * | 2008-12-05 | 2009-10-28 | 沈阳高精数控技术有限公司 | 基于片上可编程系统的数控系统精插补器 |
CN102323786A (zh) * | 2011-07-01 | 2012-01-18 | 广西工学院 | Arm+fpga组成的定时器装置及其实现方法 |
CN202196296U (zh) * | 2011-07-01 | 2012-04-18 | 广西工学院 | Arm+fpga组成的定时器装置 |
CN204790974U (zh) * | 2015-06-30 | 2015-11-18 | 广西科技大学 | 一种与16位微处理器应用系统连接的定时器ip核 |
-
2015
- 2015-06-30 CN CN201510373532.4A patent/CN105022608B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0001398A2 (de) * | 1977-09-29 | 1979-04-18 | Siemens Aktiengesellschaft | Elektronischer Programmgeber |
US20030191863A1 (en) * | 2001-07-02 | 2003-10-09 | Globespanvirata Incorporated | Communications system using rings architecture |
CN1601504A (zh) * | 2004-08-13 | 2005-03-30 | 成都国腾微电子有限公司 | 串口扩展芯片 |
CN201335972Y (zh) * | 2008-12-05 | 2009-10-28 | 沈阳高精数控技术有限公司 | 基于片上可编程系统的数控系统精插补器 |
CN102323786A (zh) * | 2011-07-01 | 2012-01-18 | 广西工学院 | Arm+fpga组成的定时器装置及其实现方法 |
CN202196296U (zh) * | 2011-07-01 | 2012-04-18 | 广西工学院 | Arm+fpga组成的定时器装置 |
CN204790974U (zh) * | 2015-06-30 | 2015-11-18 | 广西科技大学 | 一种与16位微处理器应用系统连接的定时器ip核 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105807843A (zh) * | 2016-03-17 | 2016-07-27 | 东莞华芯世纪微电子有限公司 | 一种实现定时/计数器的方法及使用这种方法的装置 |
CN105807843B (zh) * | 2016-03-17 | 2019-07-23 | 东莞华芯世纪微电子有限公司 | 一种实现定时/计数器的方法及使用这种方法的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105022608B (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102323786B (zh) | Arm+fpga组成的定时器装置及其实现方法 | |
CN101894591B (zh) | 一种基于lfsr的外部存储接口的随机测试装置 | |
CN109522033B (zh) | 一种基于器件运行自编程和双中断向量表的ecu程序与数据升级方法 | |
CN105930186B (zh) | 多cpu的软件加载方法及基于多cpu的软件加载装置 | |
CN105677593B (zh) | 芯片存储器写操作时序路径自适应调节方法及装置 | |
CN101206614B (zh) | 仿真特殊功能寄存器的仿真器 | |
CN201335972Y (zh) | 基于片上可编程系统的数控系统精插补器 | |
CN103218219A (zh) | 紧凑函数跟踪 | |
CN105022608A (zh) | 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 | |
CN105183430A (zh) | 一种与8位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法 | |
CN105117200A (zh) | 一种与16位微处理器应用系统连接的计数器ip核及其实现计数器计数控制的方法 | |
CN202632773U (zh) | 一种基于sd卡的便携式串行flash烧写装置 | |
CN204790974U (zh) | 一种与16位微处理器应用系统连接的定时器ip核 | |
CN107643907A (zh) | 基于定时器计数模式的计时、延时和定时循环方法以及系统 | |
CN200997136Y (zh) | 内置比较器的微控制器结构 | |
CN204965405U (zh) | 一种与8位微处理器应用系统连接的定时器ip核 | |
CN204856462U (zh) | 一种与16位微处理器应用系统连接的计数器ip核 | |
CN106571156B (zh) | 一种高速读写ram的接口电路及方法 | |
CN202196296U (zh) | Arm+fpga组成的定时器装置 | |
CN204790973U (zh) | 一种与8位微处理器应用系统连接的计数器ip核 | |
CN105117357A (zh) | 一种与8位微处理器应用系统连接的计数器ip核及其实现计数器计数控制的方法 | |
CN206863732U (zh) | 一种NAND Flash控制器的控制装置 | |
CN1329831C (zh) | 微型计算机及其评价装置 | |
CN111710357B (zh) | Mcu的mtp单元读写控制电路 | |
CN203689501U (zh) | 多浮点操作数加/减运算控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |