IEEE1588实现时间统一和软件实现最佳主时钟选择。
已实现:FPGA实现时间统一和软件实现最佳主时钟选择。
新需求:原软件实现的最佳主时钟选择由FPGA实现。
(1)单一子网主时钟方法
最佳主时钟算法?后文是否会有?
硬件实现时间同步
(1)主设备模式
周期性发一次SYNC帧,自身设备信息存放在BRAM。
发完SYNC帧后开始接受其他设备的SYNC帧,先判断接受的SYNC帧是否与自身的时钟ID相等,若相等,直接丢掉该SYNC帧。然后判断该SYNC帧;是否为优先级最高的主时钟。若是,转发该SYNC帧,然后进行时间同步,并更新BRAM表。若不是,则转发该SYNC帧并更新BRAM表项。
(2)从设备模式
相比主设备模式少了周期性发送SYNC这一项。其余步骤相同。
(3)系统主时钟无法工作
(a)300ms计时,超出未收到SYNC认为失效,并从BRAM中选出优先级最高的时钟作为主时钟。
(b)当主时钟恢复正常,先与BRAM表中优先级最高的时钟进行时间同步然后周期性发送自身的SYNC帧。
系统框图:
每个设备有19个端口接受FIFO中的SYNC帧,先有数据调度模块负责调度,进入时间同步模块,时间同步模块进行转发SYNC帧(发送SYNC模块)。
软件配置寄存器(需要注意的寄存器):
sync_id_reg:优先级最高的device_id。原设计中这个寄存器由上位机配下来,现由FPGA维护,上位机能够读取。
config_finish_reg:默认0x00000000,软件配置为0xCCCCCCCC,使得FPGA识别配置。FPGA识别后清空0x00000000.在配置改变时软件可以进行二次配置,此时模块将被重置。