多时钟处理技术
1. 时钟关系
- 频率不同
- 频率相同,相位不同
2. 面临问题
- su和hold违背
- 亚稳态
3. 处理技术
3.1 时钟命名规则
为了保证综合脚本可以使用通配符来对所有时钟进行操作。
在同步时钟中,可以用以下的命名规则:系统时钟 sys_clk、发送时钟 tx_clk、接受时钟 rx_clk。
不同步时钟中,一个时钟域的信号应该有同样的前缀,比如系统时钟驱动的信号:sys_rom_addr、sys_rom_data。
3.2 分模块设计
- 每个模块只在单独的clk下工作
- 跨时钟域的信号经过额外的同步模块,将信号传到现在的时钟域,详见第4节。
- 同步器模块尽量小,不一定要太多级数(简单的同步器就是两级reg,来存并且稳定数据)
4 跨时钟域信号传输
- 控制信号(同步器)
控制信号直接传输可能会导致多个并行触发器进入亚稳态,常用的解决方法是多级同步器(两级及以上)
只有在时钟频率非常高的设计中才要求使用三级同步器电路,一般两级即可。
缺点:增加了电路整体delay - 数据信号(①握手信号; ②异步FIFO)
5 跨同步时钟域问题
起源于同一时钟的多个时钟,相位和频率之间的关系是固定的,可以分为以下类型:
5.1 同频0相位差clk(单时钟设计)
(个人理解同频是period一致)
进行STA分析就可以保证数据正确传输
5.2 同频恒定相位差clk(反相clk or 对上级clk相位移动)
delay约束会变紧,保证组合逻辑的延时满足su和hold即可
5.3 非同频、可变相位差clk(整数 or 有理数倍时钟)
a. 整数倍时钟
时钟最小相位差=频率较快的时钟period,快时钟传输数据,且满足最小相位差下的su/hold,就