时钟设计我们从宏观和微观两个方面来考虑,所谓宏观就是指考虑整个FPGA周边器件对FPGA时钟资源及时钟域使用的影响进行考虑,所谓微观指FPGA内部时钟设计的一些问题。
首先说说微观上的时钟设计考虑:
1、外部时钟输入要使用专用的全局时钟入口;
2、系统对时钟要求比较高时,尽量采用差分时钟输入;
3、学会使用BUFG,BUFGDS,DCM等原语来设计时钟模块;
4、尽量有专门的时钟模块;
5、不同时钟域时钟的产生都通过DCM来实现;
6、同一时钟域中,比如本时钟域时钟为100M,但是又需要一个2M的节拍来驱动某些逻辑,则用100M时钟产生2M的EN信号,然后还用100M时钟来做同步设计,保证时钟域的完整性和同步。代码如下
always @ (posedge clk100M or negedge rst_n) begin
if (!rst_n) begin
.....
end
else if (clk2M_en) begin
......
end
end
思想:所有驱动时钟引入全局时钟网络,不能引入全局网络的时钟作为普通控制信号处理
宏观上时钟设计注意事项:
1、综合考虑芯片周边器件布局,一般会在硬件设计前就做好整个项目周边器件管脚的分配并且通过综合,这样基本上各个器件的接口所在的时钟域就确定下来了,这样就能知道设计者做好对内部时钟资源的分配;
2、全局时钟资源不够时考虑使用局部时钟资源,但要做好布局约束;
有事待续
文章评论(0条评论)
登录后参与讨论