在进行一个含多个时钟的设计时,在仿真和综合过程中需要遵循一定的准则,这样会带来很大的好处。通用的准则如下:
- 时钟命名规则
- 分模块设计
1 时钟命名法
Xilinx的开发工具Vivado有“project mode”和“non-project mode”,在“non-project mode”中,我们经常使用脚本进行开发。同样在仿真的时候,也会编写Tcl脚本。在写脚本的过程中,就会经常使用通配符,如果设计者在设计初期对信号命名的时候考虑到这个因素,那么就可以在写脚本的时候省去很多麻烦。所以引入了“时钟命名法”。同时,使用时钟命名法命名后的时钟,后续开发者仅仅通过时钟名称就可以知道该信号的含义。例如,系统时钟可以命名为sys_clk,发生时钟可以命名为tx_clk,接收时钟可以命名为rx_clk等。同理,属于同一时钟域的信号,也可以在命名时使用同样的前缀。例如:有系统时钟驱动的信号,可以用类似于sys_rom_addr、sys_rom_data这样的方式作为起始。
这样的命名过程能极大地较少对信号的混淆,并在各模块之间提供交单的接口,因此提高了工作效率。
2 分块化设计
这是设计含多时钟的模块时常用的一种有效技术,如下所述:
- 每个模块只应当在单个时钟下工作。