1 Shared Logic配置选择
当需要例化多个Aurora IP核时,时钟共享成为关键问题。正确的做法是:
-
在IP核生成界面,选择Shared Logic为"in example"
-
生成IP核后,导入example design中的support文件
-
将support目录下的所有文件添加到工程中

2 端序模式选择
根据系统架构要求,必须选择小端模式(Little Endian)以确保与AXI4-Stream兼容IP核的无缝连接。


3 顶层模块信号分析


4 时钟分配策略
-
GT Clock:多个Aurora核共享同一个QUAD的时钟
-
Init Clock:共用单端初始化时钟
-
User Clock:由每个Aurora核的tx_out_clk产生,各自独立
根据我们需求
首先init_clk需要使用单端的,不使用差分信号,这里我们需要进行修改:


由于我们是要例化4个Aurora IP核 分别对应一个lane 但是共有一个QUAD的时钟,故,我们需要在程序内部,将Aurora IP核部分例化为4个。
GT clk是共用的 Init clk也是共用的
因为 init clk是共用的 故gt_reset也是共用的
但是user clk是由每个Aurora IP核的tx out clk产生的 故它不是共用的,那么reset也就不是共用的了。
5 信号精简与优化
为了保持代码整洁,建议注释掉暂时不用的信号:

6 复位信号处理
这里我们需要注意:送入support的reset和gt_reset信号经过了这个模块之后的GT_RESET 和 SYS_RESET才是真正给Aurora IP核使用的。

这个内部是什么操作呢?
我们打开程序可以看到,这是一个4位去抖模块。

时序要求分析:
-
去抖模块需要连续4个时钟周期的高电平才确认复位有效
-
Aurora协议要求gt_reset至少保持6个init_clk周期有效
-
因此,实际输入的GT_RESET_IN需要至少保持10个时钟周期的高电平
时序图如下
也就是说GT_RESET_IN必须保持4个高电平,GT_RESET_OUT才会被检测到高电平;

那根据Aurora对gt_reset的要求,必须保持6个init clk才有效,
那么GT_RESET_IN就应该至少保持10个高电平。
1万+

被折叠的 条评论
为什么被折叠?



