最近做了一个模块,是通过网口将时码发送到模块,然后通过STM32转发给FPGA,最后在FPGA内部转换成标准的IRIG-B(DC)码输出。
FPGA与STM32的通信使用了一个双口BRAM,利用STM32的FSMC功能进行通信。
STM32会发送一个状态码,状态码保持不变的时候,FPGA在当前时码上自动加1秒,转换成B码发送;如果状态码改变,FPGA读取STM32发送的时码,转换成B码发送。
B码格式如下图。
FPGA工程附在后面,使用的VIVADO2018,FPGA用的7K325T。
另外工程还写了一个TESTBENCH,可直接进行形为仿真,仿真结果如下:
PS:工程这里上传不了,只能单独上传资源,有什么问题可以留言或者私信我,看到就回
直接点这里。
或者:https://download.csdn.net/download/pp_0604/16064393
上面的链接版本有点BUG,可以下载新版的连接
https://download.csdn.net/download/pp_0604/47261490
2021.07.06
发现一个小BUG,初始化的默认时间发送的是30小时,超过了24小时,会导致接收设备识别错误。
2022.07.04
新做了一个ZYNQ开发板上使用的B码工程。
FPGA部分修改:
1.优化了部分代码。
2.增加了错误时标的输出格式,一共2种,一种是第5秒的时候会跳秒;第二种是一直发送秒全为0的时标。
3.增加了年的设置,同时发送军标格式的年和网标格式的年(因为有些设备识别军标格式,有些设备识别网标格式,并且可能会有冲突,会导致接收出错,需要根据对应设备进行修改代码)。
ARM部分修改:
1.使用ZYNQ内部的AXI总线进行通信,不再使用FSMC。
2.使用网口与PC进行通信。
资源链接见下,(因为ARM部分是我同事做的,我只负责了FPGA部分,所以是付费链接):
https://download.csdn.net/download/pp_0604/85893650