配置通道的跨异步时钟设计
对于大规模逻辑设计来说,配置通道的读写访问相比业务流来说,访问次数较少,出于降低功耗的角度考虑,可以使用较低的时钟频率。这样会带来跨异步时钟域的设计需求。业务模块的信号在系统时钟频率下产生变化,变化频率较快;读写寄存器在配置时钟域下频率较慢。关于跨异步时钟域处理的方法,可有三种方案如下:
一、在业务模块内部进行跨时钟域转换
在业务模块,信号的变化以系统时钟频率变化,在配置寄存器进行配置时,可能会发生数值变化,导致亚稳态发生。因此在业务模块的配置总线获取数据前,将数据的时钟域转换为配置时钟域。这样会将配置时钟引入每个业务模块,业务模块将需要对每个需要读写的寄存器进行跨时钟域处理,相对浪费芯片的LUT资源,还会对时钟处理带来风险。优点是提前进行高频时钟向低频时钟的转换处理,寄存器相关的信号功耗会相对降低。
二、在业务模块接口处进行跨时钟域转换
这种方法是业务模块的寄存器总线运行在系统时钟上,在业务模块与寄存器总线仲裁前进行系统时钟域向配置时钟域的转换。这种方法是每个模块的寄存器总线进行跨时钟域处理,配置时钟对于业务模块的干扰较小,消耗的资源较少,但功耗相对于方案一稍高。
三、在配置总线的源头处进行跨时钟域转换
方案三的做法为:各模块与上级模块连接的寄存器总线运行在系统时钟上,顶层模块进行模块时钟域转换,将寄存器总线的系统时钟转换为配置时钟。这种方法最省资源,但各模块的所有信号在系统时钟域上运行,动态功耗最大。
上述三种方案的优缺点列举如下:
|
|
功耗 |
资源 |
|
方案一 |
低 |
高 |
|
方案二 |
中 |
中 |
|
方案三 |
高 |
低 |
综上,在进行大规模逻辑设计时,配置时钟方案的选择通常建议使用方案二进行设计。当然,每个工程的实际情况不同,需要根据实际设计进行方案取舍和设计迭代。