一种星载计算机秒中断间隔可控的校时方法
2020-05-04
北京空间飞行器总体设计部,北京 100094
航天器一般都有自己的时间系统,在实际应用过程中,由于各种原因,航天器的时间往往需要进行多次修正或周期性维护,以达到使用精度要求。这就涉及校时操作[1]。航天器的时间一般由星载计算机维护[2-3]。传统的校时操作一般由CPU软件实现,CPU软件在每一次秒中断中,对由软件维护的秒部时间进行加1操作。亚秒部时间由外部集成电路Intel 82C54芯片[4]维护,计数初值由CPU软件进行配置。当Intel 82C54芯片从计数初值倒计数到1时,会产生一次秒中断,驱动CPU软件执行相应的任务或进行相应的操作。目前星务软件任务调度安排、时序规划等均基于秒中断运行,且运行需要一定的时间。因此相邻两次秒中断的时间间隔不能太小,否则会影响CPU软件的任务调度及正常运行[5-10]。
为了避免校时过程中秒中断间隔过小或过大,软件需要通过复杂的逻辑和算法多次操作外部计时器Intel 82C54芯片才能完成一次校时,占用CPU机时较大。本文提出了一种基于FPGA的秒中断间隔可控的校时方法。
1 传统星载计算机校时方法
传统星载计算机校时一般都会引起秒中断间隔的变化,为了避免校时过程中秒中断间隔过小或过大,软件在每次校时前,需要根据校时的具体数值计算出下一秒Intel 82C54芯片需要计数的个数,写入Intel 82C54芯片的计数初值寄存器。Intel 82C54芯片采用倒计数,当从计数初值倒计数到1时,会产生一次秒中断,并自动重新加载计数初值,继续倒计数。软件在需要校时时,需要在秒中断服务程序中,将计算好的计数初值写入Intel 82C54芯片计数初值寄存器进行更新,并在下次秒中断中将计数初值恢复,这样一次校时操作才算完成。为了保证Intel 82C54芯片输出的秒中断间隔(计数初值范围)在0.5~1.5 s的范围内,CPU需要分4种情况计算计数初值。
假定CPU收到的亚秒部校时值为t(0 表1 CPU计算计数初值的4种情况Table 1 Four situations with CPU calculating the counter’s initial value 在每次校时过程中,CPU软件如果需要读取时间码,还需根据每种情况对Intel 82C54的计数值进行时间换算,换算公式见表1中“亚秒部时间换算公式”一列(注:秒部不需要换算)。 从表1中看出,每次校时时,CPU软件需根据亚秒部校时的具体数值,分为4种情况,根据4种计算公式进行计数初值的计算,校时逻辑十分复杂,校时过程中每次读取时间码都要进行时间换算,很容易出错,且占用CPU机时较多,不利于软件实现其他更加复杂的任务。随着未来航天器智能处理的任务越来越多,CPU机时越来越紧张,因此需要将CPU从繁琐的校时操作和时间维护操作中解放出来,使CPU专注于智能处理任务的实现。 针对CPU软件校时逻辑复杂,容易出错的问题,已经有学者专门针对软件设计过程中遇到的时间获取与时间维护冲突的问题进行了机理分析,并提出了3种有效的解决办法,保证了在各种复杂情况下星上时间获取的正确性,但耗费的CPU机时较多[11]。 本文提出了一种基于FPGA的秒中断间隔可控的校时方法,采用FPGA逻辑电路设计星时计时器,利用秒中断间隔约束条件设计校时触发条件,当满足校时触发条件时,FPGA逻辑电路自动实现校时操作,很好地解决了校时过程中秒中断间隔过小或过大的问题,极大地节约了CPU机时。基于FPGA的秒中断间隔可控的校时方法原理框图如图1所示,主要由星时计时器、校时寄存器、加法器、时钟生成器、校时触发器和比较器组成。 图1 基于FPGA的秒中断间隔可控的校时方法Fig.1 A time-calibration method with controllable second interrupt interval based on FPGA 星时计时器用来记录计时脉冲个数,并产生秒中断信号输出。主要由一个记录计时脉冲个数的计数器组成,通过对计时脉冲进行计数获得时间值。星时计时器分为秒部和亚秒部两部分[12]。亚秒部每收到一个计时脉冲其计数值加1,当亚秒部累计计数值达到规定的模值时向秒部进位,表示累计计时达到1 s,并输出秒中断信号。秒部只有在收到亚秒部的进位时才加1。 校时寄存器用来转换和保存CPU送来的校时数据。校时寄存器也分为秒部和亚秒部两部分,主要功能是将CPU送来的校时数据进行格式转换,并按照秒部校时值和亚秒部校时值两部分保存。秒部校时值采用补码格式的数据保存,以便于进行拨快或拨慢操作。亚秒部校时值采用原码格式的数据保存。 加法器用来实现校时寄存器和计时器当前值的秒部和亚秒部分别相加的功能。当亚秒部相加的结果超过规定的模值时,亚秒部会向秒部产生进位。秒部相加是补码格式的数据相加,秒部相加的结果还需要再加上亚秒部的进位。 时钟生成器用来产生系统时钟和计时脉冲。系统时钟用来驱动星时计时器、校时寄存器、加法器、比较器和校时触发器在统一的时钟下同步工作。计时脉冲由系统时钟生成,其脉冲宽度为一个系统时钟周期,其频率不能大于系统时钟频率的一半。计时脉冲周期就是星时计时器亚秒部时间码的最低分辨率,可根据时间分辨率要求选择合适的计时脉冲周期。 校时触发器用来监视CPU是否有校时操作以及星时校时是否完成。当校时触发器监视到CPU对校时寄存器进行了更新,则会认为CPU进行了校时操作,从而发出校时启动信号,通知比较器需要进行校时操作;当校时触发器收到比较器输出的校时完成信号后,则会撤销校时启动信号,认为本次校时操作已完成。 比较器用来将加法器输出的结果与给定的数值进行比较,并配合校时触发器完成校时过程。比较器在收到校时启动信号后,在每个系统时钟周期都会判断加法器输出结果是否与给定数值(比较门限数值)满足条件关系。如果满足条件关系,则执行校时过程,将校时结果更新到计时器,并发出校时完成信号;如果不满足,则继续等待,等待时间不会超过1 s,直到条件关系满足。 通过修改比较器的比较门限数值,可以灵活地控制校时执行时刻,进而控制秒中断输出间隔。因此比较条件设置是本校时方案的关键。假定校时寄存器亚秒部校时值为x(0 1)如果在任意一个系统时钟内比较器判断满足x+y<0.5 s×f条件,则比较器执行校时操作,将星时计时器亚秒部y值更新为加法器输出的x+y的计算结果值,将星时计时器秒部更新为加法器输出的秒部相加的结果值。本次校时过程前后两次秒中断的间隔为1s-x/f,且可以证明该值在0.5~1 s之间。证明过程如下: ∵满足条件x+y<0.5 s×f(x>0,y>0,f>0) 又 ∵x>0,y>0,f>0 2)如果不满足前述第一个条件x+y<0.5 s×f,则判断是否满足第二个条件x+y>1.0 s×f,如果满足则比较器也立即执行校时操作,将星时计时器亚秒部y值更新为加法器输出的(x+y-1.0 s×f)计算结果值(只保留去掉模值之后的值,此时亚秒部产生了进位,但不产生秒中断,秒中断只有在自然计数到模值时才产生);将星时计时器秒部值更新为加法器输出的两个秒部和亚秒部进位值的和。本次校时过程中前后两次秒中断间隔为2 s-x/f,且可以证明该值在1~1.5 s之间,证明过程同上。 3)如果以上两个条件均不满足,则继续等待至下一个系统时钟周期,再次判断以上两个条件是否满足,依此类推。随着时间的延长,亚秒部计数值y会不断增加,在1 s的时间内,总有一个时刻会使得第二个条件x+y>1.0 s×f满足,至此校时完成。通过以上两个比较条件的设置,可以很好地控制校时发生的时刻,无论亚秒部校时值是多少,都能使得校时过程中前后两次秒中断的间隔控制在0.5~1.5 s之间。 根据上述校时方案,下面以拨快8 s+120 ms为例,介绍一下校时过程。假定时钟生成器产生的计时脉冲频率为1 000 Hz,周期为1 ms,即星时计时器每计数1次代表1 ms时间,则校时具体过程如下: 1)CPU将校时数据8 s+120 ms写入校时寄存器。 2)校时寄存器将数据格式转换后分别保存在秒部和亚秒部校时值寄存器。其中秒部数值“8”采用补码格式保存,即“0x00000008”。亚秒部数值“120”采用原码格式保存,即“0x00000078”。 3)校时触发器监视到CPU进行了校时操作,发出校时启动信号,通知比较器进行校时。 4)加法器将当前星时计时器亚秒部计数值(假定当前星时计时器亚秒部计数值为230)与校时寄存器亚秒部校时值120相加,结果为350;将当前星时计时器秒部计数值(假定当前星时计时器秒部的计数值为3 100)与校时寄存器秒部校时值8相加,结果为3 108。 5)比较器在收到校时启动信号后,将加法器亚秒部输出的结果与350进行比较,判断是否满足第一个比较条件:x+y<0.5 s×f,即120+230 < 0.5×1 000,条件满足,则比较器执行校时操作,将计时器亚秒部计数值230更新为350,将计时器秒部值3 100更新为3 108。本次校时过程前后两次秒中断的间隔为1 s-120/1 000 Hz=0.88 s,该间隔在0.5~1 s之间,星时计时器以后会以3 108 s+350 ms为起点继续对计时脉冲进行计数,至此校时完成。 从上述校时过程看出,CPU软件仅需将校时数值写入FPGA中的校时寄存器即可,其余校时过程全部由FPGA完成,CPU软件大大简化。 该校时方法经过在某型高分辨率遥感卫星星载计算机上实测验证,软件校时所需的CPU机时相比原来缩短90%以上,有效缓解了CPU机时紧张的问题,使得复杂的自主任务规划等算法能够在有限性能的CPU上流畅运行,提高了航天器智能化水平。本校时方法已获得国家发明专利授权[13],相比类似专利[14],在解决秒中断间隔突变问题上更具有优势。 本文提出的基于FPGA的秒中断间隔可控的校时方法极大简化了CPU软件的校时操作,无需像原来一样分4种情况多次操作Intel 82C54芯片才实现一次校时,大大节约了CPU机时。采用本校时方法后,CPU只需向FPGA校时寄存器写入一个校时值即可完成校时操作。本方法校时过程中星时秒部和亚秒部时间码是同时更新的,CPU任何时刻读取的时间码都是有效的,可以直接使用,无需再进行换算,进一步减轻了CPU的负担。本文提出的校时方法已在多台星载计算机上应用,取得了较好的应用效果。2 基于FPGA的秒中断间隔可控校时方法
3 应用验证
4 结束语