CN102323786B - Arm+fpga组成的定时器装置及其实现方法 - Google Patents

Arm+fpga组成的定时器装置及其实现方法 Download PDF

Info

Publication number
CN102323786B
CN102323786B CN 201110184570 CN201110184570A CN102323786B CN 102323786 B CN102323786 B CN 102323786B CN 201110184570 CN201110184570 CN 201110184570 CN 201110184570 A CN201110184570 A CN 201110184570A CN 102323786 B CN102323786 B CN 102323786B
Authority
CN
China
Prior art keywords
timer
module
numbering
fpga
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.)
Expired - Fee Related
Application number
CN 201110184570
Other languages
English (en)
Other versions
CN102323786A (zh
Inventor
李克俭
蔡启仲
潘绍明
付杰
吴笔迅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangxi University of Science and Technology
Original Assignee
Guangxi University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangxi University of Science and Technology filed Critical Guangxi University of Science and Technology
Priority to CN 201110184570 priority Critical patent/CN102323786B/zh
Publication of CN102323786A publication Critical patent/CN102323786A/zh
Application granted granted Critical
Publication of CN102323786B publication Critical patent/CN102323786B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种ARM+FPGA组成的定时器装置,以嵌入式ARM微处理器为控制模块、FPGA为定时处理模块,包括ARM控制模块、存储器模块、FPGA定时器模块、双口RAM模块和电源模块;ARM控制模块分别与存储器模块和双口RAM模块连接,FPGA定时器模块与双口RAM模块连接;ARM控制模块在执行大规模时间控制程序或可编程控制器用户程序时,定时器满足运行的条件下,ARM控制模块向双口RAM模块传输运行状态信息,不满足运行的条件下,向双口RAM模块传输停止运行信息;当程序读取软触头存储单元信息时,ARM控制模块从双口RAM模块读取该触头状态信息。该装置及其实现定时器的方法定时精度高、不占用PLC用户程序执行时间。

Description

ARM+FPGA组成的定时器装置及其实现方法
技术领域
本发明涉及一种定时器装置及定时方法,尤其涉及一种用于大规模时间控制装置或可编程控制器(PLC)的定时器装置及其实现方法。
背景技术
在大规模时间控制或可编程控制器(PLC)的应用系统中,将使用大量的定时器,通常实现的方式有五种:第一、二种方式是应用微处理器中的一个定时器的定时时间作为基准时间,每个定时器的定时参数存储在一个存储单元中,采用定时中断方式编程,编程方法主要有2种,第1种方法是在基准定时器中断服务程序中编制定时器判断处理程序,该基准定时器按照基准时间定时发出中断的信号,在基准定时器中断服务程序中,定时器判断处理程序对每个定时器进行判断,对于未启动和未使用的定时器,程序执行跳过该定时器的处理程序,对于已启动定时的定时器对应的存储单元内容减1,再判断是否已减为0,如果不为0,在下次执行基准定时器中断服务程序中再减1,并进行判断;如果定时器对应的存储单元内容已减为0,表示该定时器的定时时间已到,设置该定时器定时时间到的标志,并恢复该定时器的存储单元的定时参数。第2种方法是在定时中断服务程序中设置已中断的标志,在主程序中执行查询程序,首先检测中断标志,如果没有基准定时器的中断标志,则程序执行跳过定时器判断处理程序,如果有基准定时器的中断标志,执行定时器判断处理程序,其程序与第一种基本相同,在执行完定时器判断处理程序后,将基准定时器的中断标志清0;第三、四种方式是采用微处理器外扩专用定时器芯片,也有2种方法——即:中断或查询方法,第1种中断方法的中断信号与CPU外部中断引脚连接,编制定时器判断处理程序;第2种查询方法的外扩专用定时器芯片的定时器输出与CPU的I/O引脚连接,程序循环读取该引脚的信号,如果没有检测到基准定时时间到的信息,则程序执行跳过定时器判断处理程序,如果检测到基准定时时间到的信息,则执行一次定时器判断处理程序。以上四种实现方式存在如下不足之处:
1、无论某个定时器在用户程序中是否被使用,在定时器判断处理程序中都需要对每个定时器的工作状态进行一次判断,对已启动定时工作的定时器每次执行定时器判断处理程序还需要执行一次计数,一次判断,一次状态设置指令; 
2、应用基准定时器的定时中断方法,CPU响应和退出基准定时器中断服务程序占用CPU运行时间;第四种方式的查询方法虽然不需要响应和退出中断操作,但系统程序循环一次需要查询和判断一次;定时基准时间越小,比如1ms,定时器系统的定时器越多,将占用CPU运行时间越长,对其它程序模块的执行速度产生严重的影响,定时精度不高;
3、第三、四种方式采用微处理器外扩专用定时器芯片,所需的定时器越多,外扩专用定时器芯片就越多,电路规模就越大;
第五种方式是采用不可编程的硬件定时,其每个定时器用独立的硬件电路实现;采用这种方式实现定时功能,所需的定时器越多,电路规模就越大,且维护工作量大。
发明内容
本发明的目的在于充分应用FPGA的并行处理功能,提供一种以嵌入式ARM微处理器为控制模块、FPGA为定时处理模块的ARM+FPGA定时器装置及其实现方法,该装置具有定时精度高、运行控制基本不占用ARM程序执行的时间,能够实现对数量众多定时器的定时与定时控制等优点,以克服已有定时方式实现技术所存在的不足。
为解决上述技术问题,本发明所采用的技术方案是:一种ARM+FPGA组成的定时器装置,所述定时器装置以嵌入式ARM微处理器为控制核心、以FPGA进行定时处理,包括:
ARM控制模块、存储器模块、FPGA定时器模块、双口RAM模块和电源模块,ARM控制模块分别与存储器模块和双口RAM模块连接,FPGA定时器模块与双口RAM模块连接;
所述ARM控制模块以嵌入式ARM微处理器为控制核心,构建嵌入式实时操作系统,进行多任务管理和通信管理,实现对定时器装置中各模块及其信息的处理和控制;
所述存储器模块用于存储操作系统及嵌入式ARM微处理器程序的目标代码映像文件、执行用户程序的处理信息、以及为定时器装置的运行和通信数据处理提供空间;
所述双口RAM模块分别与所述FPGA定时器模块和所述ARM控制模块连接,以实现所述ARM控制模块与所述FPGA定时器模块之间的数据传输;
所述FPGA定时器模块以定时控制单元为核心,通过双口RAM模块从ARM控制模块获得定时器运行和定时时间参数的信息或停止运行信息,在基准时钟周期工作脉冲的作用下,对定时器存储单元内容进行循环读取、判断、处理,实现定时器功能;
所述电源模块为ARM控制模块、存储器模块、双口RAM模块和FPGA定时器模块提供变压后的电源。
其进一步的技术方案是:所述ARM控制模块包括嵌入式ARM微处理器、人机交互电路、控制电路、复位电路、JTAG调试接口电路,嵌入式ARM微处理器作为控制核心,分别与人机交互电路、控制电路、复位电路和JTAG调试接口电路连接;
ARM控制模块在嵌入式ARM微处理器中构建嵌入式实时操作系统,进行多任务管理和通信管理,实现对ARM控制模块和FPGA定时器模块各种信息的处理和控制;
人机交互电路完成ARM控制模块和FPGA定时器模块的控制命令、控制参数的输入;以及ARM控制模块和FPGA定时器模块各种参数的人机界面控制;
控制电路完成ARM控制模块的数据采集与控制驱动;
复位电路为ARM控制模块电路提供复位信号;
JTAG调试接口电路提供调试接口与外接电路相连实现编程装置对ARM控制模块的硬件和软件的调试。
所述存储器模块包括Nor FLASH存储器、Nand FLASH存储器和SDRAM存储器,Nor FLASH存储器、Nand FLASH存储器和SDRAM存储器分别通过ARM控制模块的数据总线、地址总线和控制总线与ARM控制模块的嵌入式ARM微处理器连接,实现ARM微处理器对存储器的操作控制,Nor FLASH存储器用来存储操作系统及嵌入式ARM微处理器程序的目标代码映像文件,Nand FLASH存储器存放执行用户程序的处理信息,以及失电需要保持的信息,包括定时器装置处理的信息,SDRAM存储器为ARM控制模块运行和通信数据处理提供空间,包括定时器装置处理的信息。
所述FPGA定时器模块包括时间基准脉冲信号发生器、定时单元和定时控制单元;定时控制单元是FPGA定时器模块的控制核心,分别与时间基准脉冲信号发生器和定时单元连接,FPGA定时器模块通过定时控制单元与双口RAM模块连接,并通过双口RAM模块与ARM控制模块连接;
所述时间基准脉冲信号发生器产生定时需要的基准时钟周期工作脉冲;
所述定时单元是由32位字长存储单元组成的定时存储器,包括多个1ms定时器存储单元、10ms定时器存储单元、100ms定时器存储单元和定时器软触头存储单元;
所述定时控制单元通过双口RAM模块从ARM控制模块获得定时器运行和定时时间参数的信息或停止运行信息,在基准时钟周期工作脉冲的作用下,定时控制单元对定时单元的存储单元内容进行循环读取判断,如果定时单元中该定时器的定时参数等于或大于双口RAM模块中的该定时器的定时参数时,设置运行状态标志,置位定时器软触头存储单元该定时器软触头的位单元,清定时单元中该定时器的定时单元内容;如果小于定时单元中该定时器的定时参数则进行加1操作,设置运行状态标志,以及设置定时器软触头存储单元的该定时器软触头的位单元状态;其循环读取判断操作是按照时间基准周期循环操作一次,并将定时器软触头存储单元的内容传输到双口RAM模块中。
所述双口RAM模块通过ARM控制模块的一组数据总线、地址总线和控制总线与ARM控制模块的嵌入式ARM微处理器连接,双口RAM模块还通过FPGA定时器模块与双口RAM模块之间另一组数据总线、地址总线和控制总线与FPGA定时器模块连接;双口RAM模块是ARM控制模块与FPGA定时器模块之间数据传输的桥梁,能够实现ARM控制模块和 FPGA定时器模块同时对双口RAM模块进行操作;ARM控制模块在执行大规模时间顺序逻辑控制程序或可编程控制器用户程序的编译程序时,将每个定时器的定时参数传输到双口RAM模块相对应的存储单元中;在执行大规模时间顺序逻辑控制程序或可编程控制器用户程序时,当定时器满足定时运行的条件下,ARM控制模块向双口RAM模块传输运行状态信息,当定时器不满足运行的条件下,ARM控制模块向双口RAM模块传输停止运行信息;当大规模时间顺序逻辑控制程序或可编程控制器用户程序读取定时器软元件触头信息时,ARM控制模块从双口RAM模块读取该触头状态信息。
其更进一步的技术方案是:所述双口RAM模块与FPGA定时器模块或者是分别独立的两个模块;或者是所述双口RAM模块嵌入构成FPGA定时器模块的FPGA2中,所述FPGA2模块是一块同时带有双口RAM模块和FPGA定时器模块结构的模块。
其相关的另一技术方案是:一种应用ARM+FPGA组成的定时器装置实现定时器的方法,该方法是以ARM控制模块中的嵌入式ARM微处理器为控制核心、以FPGA定时器模块进行定时控制处理,用双口RAM模块作为ARM控制模块与FPGA定时器模块之间数据传输的桥梁,实现数据通信;在嵌入式ARM微处理器初始化处理过程中,对双口RAM的每个存储单元清零和FPGA中的定时单元清零;
ARM控制模块在对用户程序进行编译过程中,将用户程序使用的每个编号定时器设置的定时参数以及使用状态信息传输到双口RAM模块中,ARM控制模块执行用户程序某一个编号定时器的输出时,将该编号定时器的运行状态信息传输到双口RAM模块中;ARM控制模块在对用户程序进行编译过程中,将检测该编号定时器实时定时参数读取指令按照编译出现这类指令出现的先后顺序将该编号定时器的编号传输给双口RAM;
由所述ARM控制模块处理的状态信息具体包括: 
D31:使用标志位,该编号定时器在用户程序中被使用,设置为“1”,否则为“0”;
D30:该编号定时器软元件得电失电标志位,得电设置为“1”,否则为“0”;
D27~D0:该编号定时器的定时参数设置值;
由所述FPGA定时器模块处理设置的状态信息包括:
D29:定时工作标志位,正在进行定时操作设置为“1”,否则为“0”
D28:定时维持标志位:定时时间已到,该编号定时器软元件仍然得电设置为“1”,否则为“0”。
所述应用ARM+FPGA组成的定时器装置实现定时器的方法的进一步技术方案是:ARM控制模块在对用户程序进行编译过程中,嵌入式ARM微处理器编译用户程序对某一个编号定时器处理操作的具体步骤为:
s101:判断是否是某一个编号定时器软元件输出指令?如果是某一个编号定时器软元件输出指令,则进入步骤s102,如果不是某一个编号定时器软元件输出指令,则进入步骤s106;
s102:如果是某一个编号定时器软元件输出指令,获得并判断该定时器软元件的编号值,
若编号值的属于“200~255”的范围,则进入步骤s105,
若编号值的属于“100~199”的范围,则进入步骤s103,
若编号值的属于“000~099”的范围,则进入步骤s104;
定时器软元件的编号值为“200~255”的范围内,1ms为最小定时时间单位的定时器;定时器软元件的编号值为“100~199”的范围内,10ms为最小定时时间单位的定时器;定时器软元件的编号值为“000~099”的范围内,100ms为最小定时时间单位的定时器;
s103:将该编号定时器的定时设置值扩大10倍,使得10ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s104:将该编号定时器的定时设置值扩大100倍,使得100ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s105:根据该编号定时器软元件的编号将定时设置值传输给双口RAM该定时器参数的存储单元;
s106:继续按顺序编译其他指令;
s107:判断是否是该编号定时器定时动态参数读取输出指令?如果是该编号定时器定时动态参数读取输出指令,则进入步骤s108,如果不是该编号定时器定时动态参数读取输出指令,则进入步骤s109;
s108:按照编译该编号定时器的先后顺序将该定时器的编号传输给双口RAM后进入s109;
s109:继续按顺序编译其他指令。
所述ARM控制模块在用户程序执行过程中通过对双口RAM的操作实现对FPGA定时器的控制,具体包括:
ARM控制模块处理:包括双口RAM模块操作控制,通过对双口RAM的控制实现FPGA定时器模块的控制;其中,ARM控制模块通过ARM控制模块的一组数据总线、地址总线和控制总线从双口RAM读取、写入信息以实现对双口RAM模块的控制,ARM控制模块向双口RAM模块传输运行状态命令,以对FPGA定时器发送控制命令,ARM控制模块从双口RAM模块读取定时器实时定时参数和触头存储区读入定时器的触头信息,用户程序应用其触头状态信息进行逻辑运算和判断处理;
FPGA定时器模块控制处理:包括定时器控制、定时器动态参数传输控制;FPGA定时器模块的定时器控制单元是采用循环处理定时器信息的方式,从ARM控制模块发送给双口RAM模块的信息获得控制信息,根据定时器的运行参数执行对所有的定时器的控制处理;
所述ARM控制模块对FPGA定时器控制的具体步骤为:
s201:执行该编号定时器软元件输出指令;
s202:判断该编号定时器软元件是否得电?如果该编号定时器软元件得电,则进入步骤s203,如果该编号定时器软元件未得电,则进入步骤s205;
s203:从双口RAM读入该编号定时器的32位信息;
s204:设置标志位D31,D30为“11”,并进入s207;
s205:从双口RAM读入该编号定时器的32位信息;
s206:设置标志位D31,D30为“10”;
s207:将该编号定时器的D31~D0的信息发送到双口RAM;
s208:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s209:执行该编号定时器实时定时参数读出指令;
s210:判断是否满足该编号定时器实时定时参数读取条件?如果满足读取该编号定时器实时定时参数条件,则进入步骤s211,如果不满足读取该编号定时器实时定时参数条件,则进入步骤s212;
s211:从双口RAM该编号定时器实时定时参数存储区读入该编号定时器的定时实时参数值,并进入s212;
s212:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s213:执行某编号定时器触头读出指令,将该编号定时器编号除以32取整+0100H获得该编号定时器触头信息在双口RAM的地址,从双口RAM中读入该编号定时器触头信息所在的存储单元内容;
s214:将该编号定时器编号除以32取余,其值为该定时器触头信息所在存储单元的位单元位数,从该定时器触头信息所在的存储单元中取该位信息; 
s215:执行该编号定时器触头参与运算的指令;
s216:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令。
所述FPGA定时器模块控制处理中,定时控制单元对所有定时器控制的具体步骤如下:
s301:清定时器单元地址计数器和溢出位标志TF; 
s302:1ms基准时钟周期工作脉冲上升沿触发程序执行1次;从步骤s303~步骤s316是循环处理所有定时器的程序,每循环一次处理一个编号定时器的操作,直到设置的每个编号定时器被处理一次,其执行过程是在FPGA模块的基准时钟周期工作脉冲作用下执行; 
s303:按照定时器单元地址计数器的值从双口RAM读取某一个编号定时器32位长度存储单元内容,即读出32位字长的某一个编号定时器信息;
s304:获得并判断标志位D31、D30、D29和D28的位值:
若D31、D30、D29和D28为“0×××”、“1000”、“1001”、“1010”或“1011”,则进入步骤s305,
若D31、D30、D29和D28为“1100 ”或“1101”,则进入步骤s306,
若D31、D30、D29和D28为“1110”,则进入步骤s307,
若D31、D30、D29和D28为“1111” 则进入步骤s315;
若D31、D30、D29和D28为“0×××”,则说明该编号定时器在用户程序中没有被使用,
若D31、D30、D29和D28为“1000”或“1001”或“1010”或“1011”,说明该编号定时器软元件处于失电状态,
若D31、D30、D29和D28为“1100 ”或“1101”,则说明该编号定时器软元件处于由失电进入得电状态,
若D31、D30、D29和D28为“1110”说明该编号定时器软元件处于得电定时状态,但定时时间未到,
若D31、D30、D29和D28为“1111”说明该编号定时器定时已到,且该编号定时器软元件仍然处于得电状态;
s305:清该编号定时器的触头位单元为“0”,并进入步骤s308; 
s306:设置该编号定时器在FPGA定时单元中的参数存储单元的D29位为“1”,并进入步骤s310; 
s307:判断该编号定时器在FPGA定时单元中的参数存储单元的D27~D0是否大于或等于双口RAM模块该定时器的D27~D0内容?如果大于或等于进入步骤s312,否则,进入步骤s311;
s308:将该编号定时器在FPGA定时单元中的参数存储单元的D29、D28单元设置为“00”;
s309:清该编号定时器在FPGA定时单元中的参数存储单元的D0~D27为“0”,进入步骤s315;
s310:清该编号定时器在FPGA中的软触头存储单元的触头位单元为“0”;
s311:将该编号定时器在FPGA定时单元中的参数存储单元的D27~D0进行+1操作后再传回D27~D0;
s312:将该编号定时器在FPGA定时单元中的参数存储单元的D28位单元设置为“1”;
s313:置该编号定时器在FPGA中的软触头存储单元的触头位单元为“1”;
s314:清该编号定时器在FPGA定时单元中的参数存储单元的D27~D0为全0;
s315:将该编号定时器单元地址计数器+1;
s316:判断定时器单元地址计数器的溢出位TF是否为1?如果是,则进入步骤s317,否则,进入步骤s303;TF为定时器单元地址计数器溢出标志位;
s317:循环将每一个编号定时器在FPGA中的软触头存储单元内容传输给双口RAM触头存储单元;
s318:循环将每一个编号定时器在FPGA定时单元中的参数存储单元的D29、D28设置值传输给双口RAM中各对应编号定时器定时参数存储单元的D29、D28位;
s319:置TF8单元为0108H,置TF9单元为0200H,0108H是双口RAM模块中定时器的编号存储区起始地址,0200H是双口RAM模块中定时器的实时参数值存储区起始地址;
s320:根据TF8单元内容指向的双口RAM的定时器编号存储区读入该编号定时器软元件编号;
s321:判断该编号定时器编号是否等于FFFFH?如果相等则进入步骤s301,否则进入步骤s322;
s322:根据该编号定时器编号从FPGA中定时单元中的参数存储单元读出D27~D0的参数;
s323:判断该编号定时器软元件编号的值,若该编号定时器软元件编号在200~255范围内,则进入步骤s326,若该编号定时器软元件编号在100~199范围内,则进入步骤s324,若该编号定时器软元件编号在000~099范围内,则进入步骤s325;
s324:将该编号定时器的定时实时值缩小十倍;
s325:将该编号定时器的定时实时值缩小百倍;
s326:根据TF8单元的值将该编号定时器实时定时参数传输到TF9单元内容指向的双口RAM该编号定时器实时定时参数的存储单元;
s327:TF8+1→TF8,TF9+1→TF9。
本发明之ARM+FPGA组成的定时器装置及其实现定时器的方法具有以下有益效果:
    1、定时精度高
本发明FPGA定时器模块Ⅳ的时间基准脉冲信号发生器41采用晶体振荡器产生的脉冲作为FPGA的基准时钟周期工作脉冲,其频率稳定,时间基准脉冲信号发生器输出的脉冲周期精度高,FPGA在基准时钟周期工作脉冲作用下运行,能够确保在一个基准时钟周期工作脉冲的周期内完成对所有定时器的计数、判断和数据传输的执行,能够确保其高精度的定时。
2、定时器运行不占用ARM用户程序执行的时间
ARM控制模块Ⅰ对用户程序没有使用的定时器不需要作任何操作,对于用户使用的每个定时器,当程序执行某个定时器软元件输出指令时,判断该定时器的工作状态,然后从双口RAM模块该定时器参数存储单元中读入该定时器参数到ARM控制模块Ⅰ中,设置运行状态标志,再传输到双口RAM模块该定时器参数存储单元中,ARM用户程序执行时,相当于将每个定时器只进行读写和判断操作;另一方面,定时器的定时运行操作、定时器软触头状态的设置由FPGA定时器模块Ⅳ完成,不占用ARM程序执行的时间,而且既无中断响应和中断返回时间,也不需要对用户程序没有使用的定时器作任何操作。
3、适合需要数量众多定时器定时与定时控制的系统需求
本发明除ARM 控制模块Ⅰ对双口RAM模块定时器参数存储单元进行读写和判断操作之外,将不占用ARM的程序执行时间;只要FPGA定时器模块Ⅳ在满足时间基准时钟周期内能够完成对FPGA定时器模块Ⅳ中的所有定时器的计数、判断和数据向双口RAM模块传输的操作,其定时器装置设置的定时器数量能够达到数百个,乃至千余个,且定时精度高,而且不需要在ARM的程序中编制定时中断服务程序,只是将每个定时器作为普通存储单元进行读写和判断操作,适合需要数量众多定时器定时与定时控制的系统需求,以及对定时精度要求很高的系统,尤其适应于大规模时间控制装置或可编程控制器(PLC)控制系统。
4、FPGA并行处理定时,装置性价比高
本发明以嵌入式ARM微处理器为控制模块,FPGA为定时处理模块构成ARM+FPGA定时器装置,无论定时器装置有多少编号定时器,定时器基准时间为多少,占用嵌入式ARM微处理器的用户程序执行的时间大为减少的,将其用于开发大规模的并行运算的逻辑运算器及其控制器以及大规模的定时器和计时器,可获很高的性价比。
下面结合附图和实施例对本发明之ARM+FPGA组成的定时器装置及其实现定时器的方法的技术特征作进一步的说明。
附图说明
图1:本发明之ARM+FPGA组成的定时器装置的结构框图;
图2:本发明实施例一之ARM+FPGA组成的定时器装置的电路框图;
图3:本发明实施例一之ARM+FPGA组成的定时器装置的FPGA定时器部件结构图;
图4:本发明之ARM+FPGA组成的定时器装置的定时器之32位长度的存储单元;
图5:本发明之ARM+FPGA组成的定时器装置的双口RAM模块存储区分配;
图6:实施例二之ARM+FPGA组成的定时器装置的结构框图;
图7:实施例二之ARM+FPGA组成的定时器装置的电路框图;
图8:本发明实施例二之ARM+FPGA组成的定时器装置的FPGA定时器部件结构图;
图9: 本发明之应用ARM+FPGA组成的定时器装置实现定时器的方法中,ARM控制模块编译用户程序对某一个编号定时器处理操作流程图;
图10:本发明之应用ARM+FPGA组成的定时器装置实现定时器的方法中,ARM控制模块对某一个编号定时器处理操作流程图; 
图11:本发明之应用ARM+FPGA组成的定时器装置实现定时器的方法中,定时控制单元对所有定时器控制的流程图。
图中:
Ⅰ—ARM控制模块,10—嵌入式ARM微处理器,11—人机交互电路,12—控制电路,13—复位电路,14—JTAG调试接口电路;
Ⅱ—存储器模块,21—Nor FLASH存储器,22—Nand FLASH存储器,23—SDRAM存储器;
Ⅲ—双口RAM模块,Ⅲa—实施例一的双口RAM模块,Ⅲb—实施例二的双口RAM模块;
Ⅳ—FPGA定时器模块,Ⅳb—实施例一的FPGA定时器模块,Ⅳb—实施例二的FPGA定时器模块;
41—时间基准脉冲信号发生器,42—定时单元, 421—1ms定时器存储单元,422—10ms定时器存储单元,423—100ms定时器存储单元,424—定时器软触头存储单元,43—定时控制单元;
Ⅴ—电源模块;其余编号意义参见说明书实施例。
文中缩略语意义:
PLC :Programmable Logical Controller,可编程逻辑控制器,简称可编程控制器;
ARM :Advanced RISC Machines,一种微处理器;
FPGA:现场可编程门阵列,是在原PAL、GAL、CPLD基础上发展的产物,是作为专用集成电路(ASIC)领域中的一种未定制电路,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点;
Nor FLASH :一种非易失闪存技术,Nor FLASH存储器指采用Nor FLASH技术的闪存存储器;
Nand FLASH :一种非易失闪存技术,Nand FLASH存储器指采用Nand FLASH技术的闪存存储器;
SDRAM :Synchronous Dynamic Random Access Memory,SDRAM存储器为同步动态随机存取存储器;
JTAG :Joint Test Action Group,一种国际标准测试协议。
具体实施方式
实施例一:
一种ARM+FPGA组成的定时器装置,如图1所示,所述定时器装置包括ARM控制模块Ⅰ、存储器模块Ⅱ、FPGA定时器模块Ⅳ、双口RAM模块Ⅲ和电源模块Ⅴ;ARM控制模块Ⅰ分别与存储器模块Ⅱ和双口RAM模块Ⅲ连接,FPGA定时器模块Ⅳ与双口RAM模块Ⅲ连接,电源模块Ⅴ将外部电源通过电压电路转换成为合乎要求的电压,为ARM控制模块Ⅰ、存储器模块Ⅱ、双口RAM模块Ⅲ和FPGA定时器模块Ⅳ提供变压后直流电源;
如图2所示,所述ARM控制模块Ⅰ包括嵌入式ARM微处理器10、人机交互电路11、控制电路12、复位电路13、JTAG调试接口电路14,嵌入式ARM微处理器10作为控制核心,分别与人机交互电路11、控制电路12、复位电路13和JTAG调试接口电路14连接;
ARM控制模块Ⅰ在嵌入式ARM微处理器10中构建嵌入式实时操作系统,进行多任务管理和通信管理,实现对ARM控制模块Ⅰ和FPGA定时器模块Ⅳ中的各种信息处理和控制;
人机交互电路11完成ARM控制模块Ⅰ和FPGA定时器模块Ⅳ的控制命令、控制传输的输入;以及ARM控制模块Ⅰ和FPGA定时器模块Ⅳ各种参数的人机界面控制;
控制电路12完成ARM控制模块Ⅰ的数据采集与控制驱动;
复位电路13为ARM控制模块Ⅰ电路提供复位信号;
JTAG调试接口电路14提供调试接口与外接电路相连实现编程装置对ARM控制模块Ⅰ的硬件和软件的调试。
所述存储器模块Ⅱ包括Nor FLASH存储器21、Nand FLASH存储器22和SDRAM存储器23,Nor FLASH存储器21、Nand FLASH存储器22和SDRAM存储器23分别通过ARM控制模块Ⅰ的数据总线X1、地址总线Z1和控制总线Y1与ARM控制模块Ⅰ的嵌入式ARM微处理器10连接,实现ARM微处理器对存储器的操作控制,Nor FLASH存储器21用来存储操作系统及嵌入式ARM微处理器10程序的目标代码映像文件,Nand FLASH存储器22存放执行用户程序的处理信息,以及失电需要保持的信息,包括定时器装置处理的信息,SDRAM存储器23为ARM控制模块Ⅰ运行和通信数据处理提供空间,包括定时器装置处理的信息。
如图3所示,所述FPGA定时器模块Ⅳ包括时间基准脉冲信号发生器41、定时单元42和定时控制单元43;FPGA定时器模块Ⅳ采用晶体振荡器产生的脉冲作为FPGA的工作周期时钟脉冲,晶体振荡器产生的工作周期时钟脉冲与时间基准脉冲信号发生器41和定时控制单元43连接,时间基准脉冲信号发生器41与定时控制单元43连接作为基准时钟周期工作脉冲,定时控制单元43是FPGA定时器模块的控制核心,分别与工作周期时钟脉冲、时间基准脉冲信号发生器41和定时单元42连接,FPGA定时器模块Ⅳ通过定时控制单元43与双口RAM模块Ⅲ连接,并通过双口RAM模块Ⅲ与ARM控制模块Ⅰ连接;
时间基准脉冲信号发生器41产生定时需要的基准时钟周期工作脉冲,本实施例中,FPGA定时器模块Ⅳ采用晶体振荡器产生的脉冲作为FPGA的基准时钟周期工作脉冲;
定时单元42是由32位字长存储单元组成的定时存储器,包括多个1ms定时器存储单元421、10ms定时器存储单元422、100ms定时器存储单元423和定时器软触头存储单元424;
定时控制单元43通过双口RAM模块Ⅲ从ARM控制模块Ⅰ获得定时器运行和定时时间参数的信息或停止运行信息,在工作周期时钟脉冲的作用下,对定时器定时单元42的存储单元内容进行循环读取判断,如果定时单元42中该定时器的定时参数等于或大于双口RAM模块Ⅲ中的该定时器的定时参数时,设置运行状态标志,置位定时器软触头存储单元424该定时器软触头的位单元,清定时单元42中该定时器的定时单元内容;如果小于定时单元42中该定时器的定时参数则进行加1操作,设置运行状态标志,以及设置定时器软触头存储单元424的该定时器软触头的位单元状态;其循环读取判断操作是按照时间基准周期循环操作一次,并将定时器软触头存储单元424的内容传输到双口RAM模块Ⅲ中。
所述双口RAM模块Ⅲ通过ARM控制模块Ⅰ的一组数据总线X1(D0~D31)、地址总线Z1(A0~A12)和控制总线Y1(包括写、读、片选)与ARM控制模块Ⅰ的 嵌入式ARM微处理器10连接,双口RAM模块Ⅲ还通过FPGA定时器模块Ⅳ与双口RAM模块Ⅲ之间的另一组数据总线X2(D0~D31)、地址总线Z2(A0~A12)和控制总线Y2(包括写、读、片选)与FPGA定时器模块Ⅳ连接;
双口RAM模块Ⅲ是ARM控制模块Ⅰ与FPGA定时器模块Ⅳ之间数据传输的桥梁,能够实现ARM控制模块Ⅰ和 FPGA定时器模块Ⅳ同时对双口RAM模块Ⅲ进行操作;ARM控制模块在执行大规模时间控制程序或可编程控制器用户程序的编译程序时,将每个定时器的定时参数传输到双口RAM模块Ⅲ相对应的存储单元中,在执行大规模时间控制程序或可编程控制器用户程序时,当定时器满足定时运行的条件下,ARM控制模块向双口RAM模块Ⅲ传输运行状态信息,当定时器不满足运行的条件下,ARM控制模块向双口RAM模块Ⅲ传输停止运行信息,当大规模时间控制程序或可编程控制器用户程序读取定时器软元件触头信息时,ARM控制模块从双口RAM模块Ⅲ读取该触头状态信息。
实施例二:
一种ARM+FPGA组成的定时器装置,其基本结构与实施例一相同,也是以嵌入式ARM微处理器为控制模块、FPGA为定时处理模块,包括ARM控制模块Ⅰ、存储器模块Ⅱ、FPGA定时器模块Ⅳ、双口RAM模块Ⅲ和电源模块Ⅴ;ARM控制模块Ⅰ分别与存储器模块Ⅱ和双口RAM模块Ⅲ连接,FPGA定时器模块Ⅳ与双口RAM模块Ⅲ连接,电源模块Ⅴ为ARM控制模块Ⅰ、存储器模块Ⅱ、双口RAM模块Ⅲ和FPGA定时器模块Ⅳ提供电源;本实施例二与实施例一不同之处是:实施例一中,双口RAM模块Ⅲ与由FPGA1构成的定时器模块Ⅳ是独立的两个模块;而本实施例中,所述双口RAM模块Ⅲ嵌入构成FPGA定时器模块Ⅳ的FPGA2中,FPGA2是一块同时带有双口RAM模块Ⅲ和FPGA定时器模块Ⅳ的模块(参见图6~图8);本实施例结构的好处在于:充分利用了FPGA的资源;不单设双口RAM模块,使定时器装置硬件电路结构更加简洁。
实施例三:
应用上述ARM+FPGA组成的定时器装置来实现定时器的方法,是以ARM控制模块中的嵌入式ARM微处理器为控制核心、以FPGA定时器模块进行定时控制处理,用双口RAM模块作为ARM控制模块与FPGA定时器模块之间数据传输的桥梁,实现数据通信;在嵌入式ARM微处理器初始化处理过程中,对双口RAM的每个存储单元清零和FPGA中的定时单元清零;
ARM控制模块在对用户程序进行编译过程中,将用户程序使用的每个编号定时器设置的定时参数以及使用状态信息传输到双口RAM模块中,ARM控制模块执行用户程序某一个编号定时器的输出时,将该编号定时器的运行状态信息传输到双口RAM模块中;ARM控制模块在对用户程序进行编译过程中,将检测该编号定时器实时定时参数读取指令按照编译出现这类指令出现的先后顺序将该编号定时器的编号传输给双口RAM; 
ARM控制模块在对用户程序进行编译过程中,将用户程序使用的每个编号定时器设置的定时参数以及使用状态信息传输到双口RAM模块中,ARM控制模块执行用户程序某一个编号定时器的输出时,将该编号定时器的运行状态信息传输到双口RAM模块中;ARM控制模块在对用户程序进行编译过程中,将检测该编号定时器实时定时参数读取指令按照编译出现这类指令出现的先后顺序将该编号定时器的编号传输给双口RAM;
由所述ARM控制模块处理的状态信息具体包括(参见图4): 
D31:使用标志位,该编号定时器在用户程序中被使用,设置为“1”,否则为“0”;
D30:该编号定时器软元件得电失电标志位,得电设置为“1”,否则为“0”;
D27~D0:该编号定时器的定时参数设置值;
由所述FPGA定时器模块处理设置的状态信息包括(参见图4):
D29:定时工作标志位,正在进行定时操作设置为“1”,否则为“0”
D28:定时维持标志位:定时时间已到,该编号定时器软元件仍然得电设置为“1”,否则为“0”。
所述ARM控制模块在对用户程序进行编译过程中,嵌入式ARM微处理器编译用户程序对某一个编号定时器处理操作的具体步骤(参见图9)为:
s101:判断是否是某一个编号定时器软元件输出指令?如果是某一个编号定时器软元件输出指令,则进入步骤s102,如果不是某一个编号定时器软元件输出指令,则进入步骤s106;
s102:如果是某一个编号定时器软元件输出指令,获得并判断该定时器软元件的编号值,
若编号值的属于“200~255”的范围,则进入步骤s105,
若编号值的属于“100~199”的范围,则进入步骤s103,
若编号值的属于“000~099”的范围,则进入步骤s104;
定时器软元件的编号值为“200~255”的范围内,1ms为最小定时时间单位的定时器;定时器软元件的编号值为“100~199”的范围内,10ms为最小定时时间单位的定时器;定时器软元件的编号值为“000~099”的范围内,100ms为最小定时时间单位的定时器;
s103:将该编号定时器的定时设置值扩大10倍,使得10ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s104:将该编号定时器的定时设置值扩大100倍,使得100ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s105:根据该编号定时器软元件的编号将定时设置值传输给双口RAM该定时器参数的存储单元;
s106:继续按顺序编译其他指令;
s107:判断是否是该编号定时器定时动态参数读取输出指令?如果是该编号定时器定时动态参数读取输出指令,则进入步骤s108,如果不是该编号定时器定时动态参数读取输出指令,则进入步骤s109;
s108:按照编译该编号定时器的先后顺序将该定时器的编号传输给双口RAM后进入s109;
s109:继续按顺序编译其他指令,此处的其他指令包括编译其它信息处理指令或编译其它控制功能程序指令。
图9是ARM的编译用户程序对某一个定时器处理操作流程图,其他定时器的程序也与此相同,图9中执行定时器软元件输出指令和定时器实时定时参数值读取指令在用户程序中出现的位置是根据用户程序的编制确定,不受图9顺序的制约。
ARM控制模块在用户程序执行过程中,通过对双口RAM的操作实现对FPGA定时器的控制,具体包括:
ARM控制模块处理:包括双口RAM模块操作控制,通过对双口RAM模块的控制实现对FPGA定时器模块的控制;其中,ARM控制模块通过ARM控制模块的一组数据总线X1、地址总线Z1和控制总线Y1从双口RAM模块读取、写入信息以实现对双口RAM模块的控制,ARM控制模块向双口RAM模块传输运行状态命令,以对FPGA定时器模块发送控制命令,ARM控制模块从双口RAM模块读取定时器实时定时参数和触头存储区读入定时器的触头信息,用户程序应用其触头状态信息进行逻辑运算和判断处理;
FPGA定时器模块控制处理:包括定时器控制、定时器动态参数传输控制;FPGA定时器模块的定时器控制单元是采用循环处理定时器信息的方式,从ARM控制模块发送给双口RAM模块的信息获得控制信息,根据定时器的运行参数执行对所有的定时器的控制处理;
其中ARM控制模块对FPGA定时器控制的具体步骤为(参见图10):
s201:执行编号定时器软元件输出指令;
s202:判断该编号定时器软元件是否得电?如果该编号定时器软元件得电,则进入步骤s203,如果该编号定时器软元件未得电,则进入步骤s205;
s203:从双口RAM读入该编号定时器的32位信息;
s204:设置标志位D31,D30为 “11”,并进入s207;
s205:从双口RAM读入该编号定时器的32位信息;
s206:设置标志位D31,D30为“10”;
s207:将该编号定时器的D31~D0的信息发送到双口RAM;
s208:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s209:执行该编号定时器实时定时参数读出指令;
s210:判断是否满足该编号定时器实时定时参数读取条件?如果满足读取该编号定时器实时定时参数条件,则进入步骤s211,如果不满足读取该编号定时器实时定时参数条件,则进入步骤s212;
s211:从双口RAM该编号定时器实时定时参数存储区读入该编号定时器的定时实时参数值,并进入s212;
s212:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s213:执行某编号定时器触头读出指令,将该编号定时器编号除以32取整+0100H获得该编号定时器触头信息在双口RAM的地址,从双口RAM中读入该编号定时器触头信息所在的存储单元内容;
s214:将该编号定时器编号除以32取余,其值为该定时器触头信息所在存储单元的位单元位数,从该定时器触头信息所在的存储单元中取该位信息; 
s215:执行该编号定时器触头参与运算的指令;
s216:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令。
图10是ARM控制模块对某一个编号定时器处理操作流程图,其他编号定时器的程序也与此相同,图10中执行该编号定时器软元件输出指令、该编号定时器实时定时参数值读取指令和应用该编号定时器触头的指令在程序中出现的位置是根据用户程序的编制确定,不受图10顺序的制约。
所述FPGA定时器模块控制处理中,定时控制单元对所有定时器控制的具体步骤(参见图11-a和图11-b)如下:
s301:清定时器单元地址计数器和溢出位标志TF(注:定时器单元地址计数器是针对所有定时器的而言,比如256个定时器,定时器单元地址计数器从0开始加1计数,每循环一次处理一个编号定时器,直到定时器单元地址计数器加到255,再加1为256,此时溢出位标志TF由0变化到1,产生溢出信号);
s302:1ms基准时钟周期工作脉冲上升沿触发程序执行1次;从步骤s303~步骤s316是循环处理所有定时器的程序,每循环一次处理一个编号定时器的操作,直到设置的每个编号定时器被处理一次,其执行过程是在FPGA模块的基准时钟周期工作脉冲作用下执行; 
s303:按照定时器单元地址计数器的值从双口RAM读取某一个编号定时器32位长度存储单元内容,即读出32位字长的某一个编号定时器信息;
s304:获得并判断标志位D31、D30、D29和D28的位值:
若D31、D30、D29和D28的位值为“0×××”、“1000”、“1001”、“1010”或“1011”,则进入步骤s305,
若D31、D30、D29和D28的位值为“1100 ”或“1101”,则进入步骤s306,
若D31、D30、D29和D28的位值为“1110”,则进入步骤s307,
若D31、D30、D29和D28的位值为“1111” 则进入步骤s315;
若D31、D30、D29和D28的位值为“0×××”,则说明该编号定时器在用户程序中没有被使用,
若D31、D30、D29和D28的位值为“1000”或“1001”或“1010”或“1011”,说明该编号定时器软元件处于失电状态,
若D31、D30、D29和D28的位值为“1100 ”或“1101”,则说明该编号定时器软元件处于由失电进入得电状态,
若D31、D30、D29和D28的位值为“1110”说明该编号定时器软元件处于得电定时状态,但定时时间未到,
若D31、D30、D29和D28的位值为“1111”说明该编号定时器定时已到,且该编号定时器软元件仍然处于得电状态;
s305:清该编号定时器的触头位单元为“0”,并进入步骤s308; 
s306:设置该编号定时器在FPGA定时单元中的参数存储单元的D29位为“1”,并进入步骤s310; 
s307:判断该编号定时器在FPGA定时单元中的参数存储单元的D27~D0是否大于或等于双口RAM模块该定时器的D27~D0内容?如果大于或等于进入步骤s312,否则,进入步骤s311;
s308:将该编号定时器在FPGA定时单元中的参数存储单元的D29、D28单元设置为“00”;
s309:清该编号定时器在FPGA定时单元中的参数存储单元的D0~D27为“0”,进入步骤s315;
s310:清该编号定时器在FPGA中的软触头存储单元的触头位单元为“0”;
s311:将该编号定时器在FPGA定时单元中的参数存储单元的D27~D0进行+1操作后再传回D27~D0;
s312:将该编号定时器在FPGA定时单元中的参数存储单元的D28位单元设置为“1”;
s313:置该编号定时器在FPGA中的软触头存储单元的触头位单元为“1”;
s314:清该编号定时器在FPGA定时单元中的参数存储单元的D27~D0为全“0”;
s315:将该编号定时器单元地址计数器+1;
s316:判断定时器单元地址计数器的溢出位TF是否为1?如果是,则进入步骤s317,否则,进入步骤s303;TF为定时器单元地址计数器溢出标志位;
s317:循环将每一个编号定时器在FPGA中的软触头存储单元内容传输给双口RAM触头存储单元;
s318:循环将每一个编号定时器在FPGA定时单元中的参数存储单元的D29、D28设置值传输给双口RAM中各对应编号定时器定时参数存储单元的D29、D28位;
s319:置TF8单元为0108H,置TF9单元为0200H,0108H是双口RAM模块中定时器的编号存储区起始地址,0200H是双口RAM模块中定时器的实时参数值存储区起始地址;
s320:根据TF8单元内容指向的双口RAM的定时器编号存储区读入该编号定时器软元件编号;
s321:判断该编号定时器编号是否等于FFFFH?如果相等则进入步骤s301,否则进入步骤s322;
s322:根据该编号定时器编号从FPGA中定时单元中的参数存储单元读出D27~D0的参数;
s323:判断该编号定时器软元件编号的值,若该编号定时器软元件编号在200~255范围内,则进入步骤s326,若该编号定时器软元件编号在100~199范围内,则进入步骤s324,若该编号定时器软元件编号在000~099范围内,则进入步骤s325;
s324:将该编号定时器的定时实时值缩小十倍;
s325:将该编号定时器的定时实时值缩小百倍;
s326:根据TF8单元的值将该编号定时器实时定时参数传输到TF9单元内容指向的双口RAM该编号定时器实时定时参数的存储单元;
s327:TF8+1→TF8,TF9+1→TF9。

Claims (10)

1.一种ARM+FPGA组成的定时器装置,其特征在于:所述定时器装置以嵌入式ARM微处理器为控制核心、以FPGA进行定时处理,包括:
ARM控制模块(Ⅰ)、存储器模块(Ⅱ)、FPGA定时器模块(Ⅳ)、双口RAM模块(Ⅲ)和电源模块(Ⅴ),ARM控制模块(Ⅰ)分别与存储器模块(Ⅱ)和双口RAM模块(Ⅲ)连接,FPGA定时器模块(Ⅳ)与双口RAM模块(Ⅲ)连接;
所述ARM控制模块(Ⅰ)以嵌入式ARM微处理器(10)为控制核心,构建嵌入式实时操作系统,进行多任务管理和通信管理,实现对定时器装置中各模块及其信息的处理和控制;
所述存储器模块(Ⅱ)用于存储操作系统及嵌入式ARM微处理器(10)程序的目标代码映像文件、执行用户程序的处理信息、以及为定时器装置的运行和通信数据处理提供空间;
所述双口RAM模块(Ⅲ)分别与所述FPGA定时器模块(Ⅳ)和所述ARM控制模块(Ⅰ)连接,以实现所述ARM控制模块(Ⅰ)与所述FPGA定时器模块(Ⅳ)之间的数据传输;
所述FPGA定时器模块(Ⅳ)包括时间基准脉冲信号发生器(41)、定时单元(42)和定时控制单元(43);定时控制单元(43)是FPGA定时器模块(Ⅳ)的控制核心,分别与时间基准脉冲信号发生器(41)和定时单元(42)连接,FPGA定时器模块(Ⅳ)通过定时控制单元(43)与双口RAM模块(Ⅲ)连接,并通过双口RAM模块(Ⅲ)与ARM控制模块(Ⅰ)连接;
时间基准脉冲信号发生器(41)产生定时需要的基准时钟周期工作脉冲;
定时单元(42)是由32位字长存储单元组成的定时存储器,包括多个1ms定时器存储单元(421)、10ms定时器存储单元(422)、100ms定时器存储单元(423)和定时器软触头存储单元(424);
定时控制单元(43)通过双口RAM模块(Ⅲ)从ARM控制模块(Ⅰ)获得定时器运行和定时时间参数的信息或停止运行信息,在基准时钟周期工作脉冲的作用下,定时控制单元(43)对定时单元(42)的存储单元内容进行循环读取判断,如果定时单元(42)中该定时器的定时参数大于或等于双口RAM模块(Ⅲ)中的该定时器的定时参数时,设置运行状态标志,置位定时器软触头存储单元(424)该定时器软触头的位单元,清定时单元(42)中该定时器的定时单元内容;如果小于定时单元(42)中该定时器的定时参数则进行加1操作,设置运行状态标志,以及设置定时器软触头存储单元(424)的该定时器软触头的位单元状态;其循环读取判断操作是按照时间基准周期循环操作一次,并将定时器软触头存储单元(424)的内容传输到双口RAM模块(Ⅲ)中;
所述FPGA定时器模块(Ⅳ)以定时控制单元为核心,通过双口RAM模块(Ⅲ)从ARM控制模块(Ⅰ)获得定时器运行和定时时间参数的信息或停止运行信息,在基准时钟周期工作脉冲的作用下,对定时器存储单元内容进行循环读取、判断、处理,实现定时器功能;
所述电源模块(Ⅴ)为ARM控制模块(Ⅰ)、存储器模块(Ⅱ)、双口RAM模块(Ⅲ)和FPGA定时器模块(Ⅳ)提供变压后的电源。
2.根据权利要求1所述的ARM+FPGA组成的定时器装置,其特征在于:所述ARM控制模块(Ⅰ)包括嵌入式ARM微处理器(10)、人机交互电路(11)、控制电路(12)、复位电路(13)、JTAG调试接口电路(14),嵌入式ARM微处理器(10)作为控制核心,分别与人机交互电路(11)、控制电路(12)、复位电路(13)和JTAG调试接口电路(14)连接;
ARM控制模块(Ⅰ)在嵌入式ARM微处理器(10)中构建嵌入式实时操作系统,进行多任务管理和通信管理,实现对ARM控制模块(Ⅰ)和FPGA定时器模块(Ⅳ)各种信息的处理和控制;
人机交互电路(11)完成ARM控制模块(Ⅰ)和FPGA定时器模块(Ⅳ)的控制命令、控制参数的输入;以及ARM控制模块(Ⅰ)和FPGA定时器模块(Ⅳ)各种参数的人机界面控制;
控制电路(12)完成ARM控制模块(Ⅰ)的数据采集与控制驱动;
复位电路(13)为ARM控制模块(Ⅰ)电路提供复位信号;
JTAG调试接口电路(14)提供调试接口与外接电路相连实现编程装置对ARM控制模块(Ⅰ)的硬件和软件的调试。
3.根据权利要求1所述的ARM+FPGA组成的定时器装置,其特征在于:所述存储器模块(Ⅱ)包括Nor FLASH存储器(21)、Nand FLASH存储器(22)和SDRAM存储器(23),Nor FLASH存储器(21)、Nand FLASH存储器(22)和SDRAM存储器(23)分别通过ARM控制模块(Ⅰ)的数据总线(X1)、地址总线(Z1)和控制总线(Y1)与ARM控制模块(Ⅰ)的嵌入式ARM微处理器(10)连接,实现ARM微处理器对存储器的操作控制,Nor FLASH存储器(21)用来存储操作系统及嵌入式ARM微处理器(10)程序的目标代码映像文件,Nand FLASH存储器(22)存放执行用户程序的处理信息,以及失电需要保持的信息,包括定时器装置处理的信息,SDRAM存储器(23)为ARM控制模块(Ⅰ)运行和通信数据处理提供空间,包括定时器装置处理的信息。
4.根据权利要求1所述的ARM+FPGA组成的定时器装置,其特征在于:所述双口RAM模块(Ⅲ)通过ARM控制模块(Ⅰ)的一组数据总线(X1)、地址总线(Z1)和控制总线(Y1)与ARM控制模块(Ⅰ)的 嵌入式ARM微处理器(10)连接,双口RAM模块(Ⅲ)还通过FPGA定时器模块(Ⅳ)与双口RAM模块(Ⅲ)之间另一组数据总线(X2)、地址总线(Z2)和控制总线(Y2)与FPGA定时器模块(Ⅳ)连接;双口RAM模块(Ⅲ)是ARM控制模块(Ⅰ)与FPGA定时器模块(Ⅳ)之间数据传输的桥梁,能够实现ARM控制模块(Ⅰ)和 FPGA定时器模块(Ⅳ)同时对双口RAM模块(Ⅲ)进行操作;ARM控制模块(Ⅰ)在执行大规模时间顺序逻辑控制程序或可编程控制器用户程序的编译程序时,将每个定时器的定时参数传输到双口RAM模块(Ⅲ)相对应的存储单元中;在执行大规模时间顺序逻辑控制程序或可编程控制器的用户程序时,当定时器满足定时运行的条件下,ARM控制模块(Ⅰ)向双口RAM模块(Ⅲ)传输运行状态信息,当定时器不满足运行的条件下,ARM控制模块(Ⅰ)向双口RAM模块(Ⅲ)传输停止运行信息;当大规模时间顺序逻辑控制程序或可编程控制器用户程序读取定时器软元件触头信息时,ARM控制模块(Ⅰ)从双口RAM模块(Ⅲ)读取该触头状态信息。
5.根据权利要求1所述的ARM+FPGA组成的定时器装置,其特征在于:所述双口RAM模块(Ⅲ)和FPGA定时器模块(Ⅳ)是分别独立的两个模块。
6.根据权利要求1所述的ARM+FPGA组成的定时器装置,其特征在于:所述双口RAM模块(Ⅲ)嵌入FPGA定时器模块(Ⅳ)中,构成一块同时带有双口RAM模块(Ⅲ)和FPGA定时器模块(Ⅳ)结构的模块。
7.一种应用权利要求1所述ARM+FPGA组成的定时器装置实现定时器的方法,其特征在于:
该方法是以ARM控制模块中的嵌入式ARM微处理器为控制核心、以FPGA定时器模块进行定时控制处理,用双口RAM模块作为ARM控制模块与FPGA定时器模块之间数据传输的桥梁,实现数据通信;在嵌入式ARM微处理器初始化处理过程中,对双口RAM的每个存储单元清零和FPGA中的定时单元清零;
ARM控制模块在对用户程序进行编译过程中,将用户程序使用的每个编号定时器设置的定时参数以及使用状态信息传输到双口RAM模块中,ARM控制模块执行用户程序某一个编号定时器的输出时,将该编号定时器的运行状态信息传输到双口RAM模块中;ARM控制模块在对用户程序进行编译过程中,将检测该编号定时器实时定时参数读取指令按照编译出现这类指令出现的先后顺序将该编号定时器的编号传输给双口RAM;
由所述ARM控制模块处理的状态信息具体包括: 
D31:使用标志位,该编号定时器在用户程序中被使用,设置为“1”,否则为“0”;
D30:该编号定时器软元件得电失电标志位,得电设置为“1”,否则为“0”;
D27~D0:该编号定时器的定时参数设置值;
由所述FPGA定时器模块处理设置的状态信息包括:
D29:定时工作标志位,正在进行定时操作设置为“1”,否则为“0”
D28:定时维持标志位:定时时间已到,该编号定时器软元件仍然得电设置为“1”,否则为“0”。
8.如权利要求7所述应用权利要求1所述ARM+FPGA组成的定时器装置实现定时器的方法,其特征在于:
所述ARM控制模块在对用户程序进行编译过程中,嵌入式ARM微处理器编译用户程序对某一个编号定时器处理操作的具体步骤为:
s101:判断是否是某一个编号定时器软元件输出指令?如果是某一个编号定时器软元件输出指令,则进入步骤s102,如果不是某一个编号定时器软元件输出指令,则进入步骤s106;
s102:如果是某一个编号定时器软元件输出指令,获得并判断该定时器软元件的编号值,
若编号值的属于“200~255”的范围,则进入步骤s105,
若编号值的属于“100~199”的范围,则进入步骤s103,
若编号值的属于“000~099”的范围,则进入步骤s104;
定时器软元件的编号值为“200~255”的范围内,1ms为最小定时时间单位的定时器;定时器软元件的编号值为“100~199”的范围内,10ms为最小定时时间单位的定时器;定时器软元件的编号值为“000~099”的范围内,100ms为最小定时时间单位的定时器;
s103:将该编号定时器的定时设置值扩大10倍,使得10ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s104:将该编号定时器的定时设置值扩大100倍,使得100ms为最小定时时间单位的定时器在FPGA定时器模块中以1ms为最小定时时间单位;
s105:根据该编号定时器软元件的编号将定时设置值传输给双口RAM该定时器参数的存储单元;
s106:继续按顺序编译其他指令;
s107:判断是否是该编号定时器定时动态参数读取输出指令?如果是该编号定时器定时动态参数读取输出指令,则进入步骤s108,如果不是该编号定时器定时动态参数读取输出指令,则进入步骤s109;
s108:按照编译该编号定时器的先后顺序将该定时器的编号传输给双口RAM后进入s109;
s109:继续按顺序编译其他指令。
9.如权利要求7所述应用权利要求1所述ARM+FPGA组成的定时器装置实现定时器的方法,其特征在于:
ARM控制模块在用户程序执行过程中,通过对双口RAM的操作实现对FPGA定时器的控制,具体包括:
ARM控制模块处理:包括双口RAM模块操作控制,通过对双口RAM模块的控制实现对FPGA定时器模块的控制;其中,ARM控制模块通过ARM控制模块的一组数据总线(X1)、地址总线(Z1)和控制总线(Y1)从双口RAM模块读取、写入信息以实现对双口RAM模块的控制,ARM控制模块向双口RAM模块传输运行状态命令,以对FPGA定时器模块发送控制命令,ARM控制模块从双口RAM模块读取定时器实时定时参数和触头存储区读入定时器的触头信息,用户程序应用其触头状态信息进行逻辑运算和判断处理;
FPGA定时器模块控制处理:包括定时器控制、定时器动态参数传输控制;FPGA定时器模块的定时器控制单元是采用循环处理定时器信息的方式,从ARM控制模块发送给双口RAM模块的信息获得控制信息,根据定时器的运行参数执行对所有的定时器的控制处理;
所述ARM控制模块对FPGA定时器控制的具体步骤为:
s201:执行该编号定时器软元件输出指令;
s202:判断该编号定时器软元件是否得电?如果该编号定时器软元件得电,则进入步骤s203,如果该编号定时器软元件未得电,则进入步骤s205;
s203:从双口RAM读入该编号定时器的32位信息;
s204:设置标志位D31,D30为 “11”,并进入s207;
s205:从双口RAM读入该编号定时器的32位信息;
s206:设置标志位D31,D30为“10”;
s207:将该编号定时器的D31~D0的信息发送到双口RAM;
s208:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s209:执行该编号定时器实时定时参数读出指令;
s210:判断是否满足该编号定时器实时定时参数读取条件?如果满足读取该编号定时器实时定时参数条件,则进入步骤s211,如果不满足读取该编号定时器实时定时参数条件,则进入步骤s212;
s211:从双口RAM该编号定时器实时定时参数存储区读入该编号定时器的定时实时参数值,并进入s212;
s212:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令;
s213:执行某编号定时器触头读出指令,将该编号定时器编号除以32取整+0100H获得该编号定时器触头信息在双口RAM的地址,从双口RAM中读入该编号定时器触头信息所在的存储单元内容;
s214:将该编号定时器编号除以32取余,其值为该定时器触头信息所在存储单元的位单元位数,从该定时器触头信息所在的存储单元中取该位信息; 
s215:执行该编号定时器触头参与运算的指令;
s216:继续按顺序执行其他指令,包括其它信息处理指令或执行其它控制功能程序指令。
10.如权利要求9所述应用权利要求1所述ARM+FPGA组成的定时器装置实现定时器的方法,其特征在于:所述FPGA定时器模块控制处理中,定时控制单元对所有定时器控制的具体步骤如下:
s301:清定时器单元地址计数器和溢出位标志TF; 
s302:1ms基准时钟周期工作脉冲上升沿触发程序执行1次;从步骤s303~步骤s316是循环处理所有定时器的程序,每循环一次处理一个编号定时器的操作,直到设置的每个编号定时器被处理一次,其执行过程是在FPGA模块的基准时钟周期工作脉冲作用下执行; 
s303:按照定时器单元地址计数器的值从双口RAM读取某一个编号定时器32位长度存储单元内容,即读出32位字长的某一个编号定时器信息;
s304:获得并判断标志位D31、D30、D29和D28的位值:
若D31、D30、D29和D28的位值为“0×××”、“1000”、“1001”、“1010”或“1011”,则进入步骤s305,
若D31、D30、D29和D28的位值为“1100 ”或“1101”,则进入步骤s306,
若D31、D30、D29和D28的位值为“1110”,则进入步骤s307,
若D31、D30、D29和D28的位值为“1111” 则进入步骤s315;
若D31、D30、D29和D28的位值为“0×××”,则说明该编号定时器在用户程序中没有被使用,
若D31、D30、D29和D28的位值为“1000”、“1001”、“1010”或“1011”,说明该编号定时器软元件处于失电状态,
若D31、D30、D29和D28的位值为“1100 ”或“1101”,则说明该编号定时器软元件处于由失电进入得电状态,
若D31、D30、D29和D28的位值为“1110”说明该编号定时器软元件处于得电定时状态,但定时时间未到,
若D31、D30、D29和D28的位值为“1111”说明该编号定时器定时已到,且该编号定时器软元件仍然处于得电状态;
s305:清该编号定时器的触头位单元为“0”,并进入步骤s308; 
s306:设置该编号定时器在FPGA定时单元中的参数存储单元的D29位为“1”,并进入步骤s310; 
s307:判断该编号定时器在FPGA定时单元中的参数存储单元的D27~D0是否大于或等于双口RAM模块该定时器的D27~D0内容?如果大于或等于进入步骤s312,否则,进入步骤s311;
s308:将该编号定时器在FPGA定时单元中的参数存储单元的D29、D28单元设置为“00”;
s309:清该编号定时器在FPGA定时单元中的参数存储单元的D0~D27为“0”,进入步骤s315;
s310:清该编号定时器在FPGA中的软触头存储单元的触头位单元为“0”;
s311:将该编号定时器在FPGA定时单元中的参数存储单元的D27~D0进行+1操作后再传回D27~D0;
s312:将该编号定时器在FPGA定时单元中的参数存储单元的D28位单元设置为“1”;
s313:置该编号定时器在FPGA中的软触头存储单元的触头位单元为“1”;
s314:清该编号定时器在FPGA定时单元中的参数存储单元的D27~D0为全“0”;
s315:将该编号定时器单元地址计数器+1;
s316:判断定时器单元地址计数器的溢出位TF是否为1?如果是,则进入步骤s317,否则,进入步骤s303;TF为定时器单元地址计数器溢出标志位;
s317:循环将每一个编号定时器在FPGA中的软触头存储单元内容传输给双口RAM触头存储单元;
s318:循环将每一个编号定时器在FPGA定时单元中的参数存储单元的D29、D28设置值传输给双口RAM中各对应编号定时器定时参数存储单元的D29、D28位;
s319:置TF8单元为0108H,置TF9单元为0200H,0108H是双口RAM模块中定时器的编号存储区起始地址,0200H是双口RAM模块中定时器的实时参数值存储区起始地址;
s320:根据TF8单元内容指向的双口RAM的定时器编号存储区读入该编号定时器软元件编号;
s321:判断该编号定时器编号是否等于FFFFH?如果相等则进入步骤s301,否则进入步骤s322;
s322:根据该编号定时器编号从FPGA中定时单元中的参数存储单元读出D27~D0的参数;
s323:判断该编号定时器软元件编号的值,若该编号定时器软元件编号在200~255范围内,则进入步骤s326,若该编号定时器软元件编号在100~199范围内,则进入步骤s324,若该编号定时器软元件编号在000~099范围内,则进入步骤s325;
s324:将该编号定时器的定时实时值缩小十倍;
s325:将该编号定时器的定时实时值缩小百倍;
s326:根据TF8单元的值将该编号定时器实时定时参数传输到TF9单元内容指向的双口RAM该编号定时器实时定时参数的存储单元;
s327:TF8+1→TF8,TF9+1→TF9。
CN 201110184570 2011-07-01 2011-07-01 Arm+fpga组成的定时器装置及其实现方法 Expired - Fee Related CN102323786B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110184570 CN102323786B (zh) 2011-07-01 2011-07-01 Arm+fpga组成的定时器装置及其实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110184570 CN102323786B (zh) 2011-07-01 2011-07-01 Arm+fpga组成的定时器装置及其实现方法

Publications (2)

Publication Number Publication Date
CN102323786A CN102323786A (zh) 2012-01-18
CN102323786B true CN102323786B (zh) 2013-06-19

Family

ID=45451538

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110184570 Expired - Fee Related CN102323786B (zh) 2011-07-01 2011-07-01 Arm+fpga组成的定时器装置及其实现方法

Country Status (1)

Country Link
CN (1) CN102323786B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104678820B (zh) * 2013-11-29 2017-08-04 北汽福田汽车股份有限公司 嵌入式前后台系统及其的控制方法
CN103885841B (zh) * 2014-04-16 2017-10-10 国网上海市电力公司 一种便携式主站的实时控制系统及方法
CN105183430B (zh) * 2015-06-30 2018-01-19 广西科技大学鹿山学院 一种与8位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法
CN105117357B (zh) * 2015-06-30 2018-01-16 广西科技大学 一种与8位微处理器应用系统连接的计数器ip核及其实现计数器计数控制的方法
CN105022608B (zh) * 2015-06-30 2017-12-08 广西科技大学 一种与16位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法
DE102016214117A1 (de) 2016-08-01 2018-02-01 Siemens Aktiengesellschaft Ermitteln einer Ausführungszeit eines Anwenderprogramms
CN109682987A (zh) * 2018-12-29 2019-04-26 深圳市越疆科技有限公司 一种电机低速测量方法及电机测速系统
CN110174870B (zh) * 2019-05-17 2020-10-30 珠海格力电器股份有限公司 Plc定时方法、plc定时器及plc控制器
CN111143273B (zh) * 2019-11-12 2023-07-04 广东高云半导体科技股份有限公司 一种片上系统
CN113946524A (zh) * 2021-10-15 2022-01-18 卡斯柯信号有限公司 一种基于fpga的读写双口ram系统和方法
CN114280977B (zh) * 2021-11-29 2024-02-02 苏州浪潮智能科技有限公司 一种基于fpga的大规模定时方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030189940A1 (en) * 2001-07-02 2003-10-09 Globespan Virata Incorporated Communications system using rings architecture
CN201335972Y (zh) * 2008-12-05 2009-10-28 沈阳高精数控技术有限公司 基于片上可编程系统的数控系统精插补器
CN101764797B (zh) * 2009-12-17 2012-06-27 哈尔滨海能达科技有限公司 一种时分多通道lapd处理器及其设计方法
CN101968642B (zh) * 2010-08-26 2012-11-14 浙江理工大学 一种基于fpga高速通讯方法的横机数控系统
CN202196296U (zh) * 2011-07-01 2012-04-18 广西工学院 Arm+fpga组成的定时器装置

Also Published As

Publication number Publication date
CN102323786A (zh) 2012-01-18

Similar Documents

Publication Publication Date Title
CN102323786B (zh) Arm+fpga组成的定时器装置及其实现方法
JP6535459B2 (ja) プログラマブル・ロジック・コントローラ、基本ユニット、制御方法およびプログラム
CN102254218B (zh) Arm+fpga组成的计数器装置及其实现方法
CN101154183A (zh) 一种微控制器嵌入式在线仿真调试系统
CN105137800A (zh) 一种基于sopc技术的plc协同控制装置
CN106773954B (zh) 一种微控制器芯片中的工作模式控制系统
CN101206614B (zh) 仿真特殊功能寄存器的仿真器
CN103941650A (zh) 逻辑与运动集成控制器
CN103858115A (zh) 外围设备触发产生器
Chmiel et al. Central processing units for PLC implementation in Virtex-4 FPGA
CN103713884A (zh) 多线程通过数组处理数据的方法、系统及多线程处理器
CN102540952A (zh) 可编程控制器以及操作方法
CN102621960A (zh) 一种基于ARM-Linux的编译型PAC
CN205003526U (zh) 一种基于sopc技术的plc协同控制装置
CN107817765A (zh) 基于arm11和fpga全功能数控系统
CN202120300U (zh) Arm+fpga组成的计数器装置
CN202196296U (zh) Arm+fpga组成的定时器装置
CN203133571U (zh) 数控系统的双核处理控制电路
CN201749350U (zh) 小型plc的人机界面装置
CN101694644B (zh) 一种嵌入式闪存控制器
CN103440120B (zh) 电能计量信号处理器的指令译码屏蔽系统与方法
EP2781977B1 (en) Method and system for managing distributed computing in automation systems
CN104698960A (zh) 一种液压机自动化控制系统用数据交换技术
CN105183430A (zh) 一种与8位微处理器应用系统连接的定时器ip核及其实现定时器定时控制的方法
CN105183432A (zh) 一种面向健康管理的SoC系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130619

Termination date: 20170701