1.AXI总线
系统主要使用AXI总线进行各模块间通讯。
总线路由
axi-interconnect区分AXI4-FULL和AXI4-LITE。
(原设计的slave全用AXI4-FULL,到功能模块悬空了AWLEN,AWID等AXI4-FULL专有信号,强行当成了AXI4-LITE去用)
libero中的axi-interconnect可选AXI4-LITE作为slave的接口:
修改后,axi-interconnect即标准的将AXI4-FULL转为了AXI4-LITE总线。
继而因位宽不一致产生的问题见:s_axi_lite_interface-CSDN博客
s_axi_lite接口
用于处理axi-lite协议,模块化的将axi-lite总线转为寄存器读写指令。
详见:s_axi_lite_interface-CSDN博客
同时将axi-lite接口,配置寄存器,功能模块分开。以tm模块举例:
2.跨时钟域*
跨时钟域的处理分为3类:单bit控制信号,多bit控制信号,数据信号。
各时钟域内部对时钟进行约束,时钟域之间的伪路径设置false_path约束。
单bit控制信号
采用简单的多级打拍。
多bit控制信号
采用带反馈的脉冲同步方式:
(上图来自参考文献1.28页)
跨时域处理主要发生在axi-interconnect与各功能模块之间。
*如功能模块时钟唯一,且频率合适,也可考虑使用axi-interconnect的slave时钟,即没有跨时域问题。
数据信号
数据流采用异步fifo处理.
3.RTC*
当前方案是利用CPU的授时功能进行校准:
(上图来自参考文献2)
该方法校准精度低,并且不方便补偿晶振偏差,可考虑改为经典的PPS自动校准,配合集中校时、均匀校时。
4.TC
LVDS,USART接收模块
原有基础上功能需求:
- 时钟有效边沿极性可参数配置
- gate极性可参数配置
- 去掉HEAD,TAIL等冗余项
5.TM
LVDS,USART发送模块
原有基础上功能需求:
- 时钟是否常有可参数配置
- gate极性可参数配置
- 去掉HEAD,TAIL等冗余项
6.时钟树
原方案时钟树:
各模块的需求频率:
新设计中简化一些时钟域:
目标时钟/模块 | 源时钟 |
uart(19200,38400,115200,921600) | 14.7456MHz |
tm(8192,16384) | 8.192MHz |
uart(1MHz); tm(10MHz,20MHz); tc; pcie(Gen2 x1) | 80MHz |
apb; rom_rst; uart; can; tm; tc; rtc | 50MHz |
MRAM | 25MHz |
rtc | Rb_50MHz |
7.复位树
对每个时钟域产生异步复位同步释放的复位信号。
参考文献:
1.Microsoft Word - CummingsSNUG2008Boston_CDC_rev1_0.doc (sunburst-design.com)
2.XW_CPU软件需求分析.docx