高度电路中时序设计之二

4 共同时钟系统的时序设计

共同时钟接收端和发送端的时钟由同一个时钟源产生,且到达接收端和发送端的延时相同的情况,共同时钟系统框图如下图所示。

上图中,CLKA 和 CLKB 由同一个时钟驱动器输出,在时钟驱动器的输出端,两时钟信号的频率和相位相同,分别发往发送端器件和接收端器件,二者的走线延迟相等,能同时到达发送端与接收端器件。共同时钟系统的特点是,收、发两端的时钟来自同一个时钟驱动源,由于这两个时钟的走线长度相等,在收、发器件的时钟输入端,时钟信号的相位完全同步。共同时钟系统的时序图如下图所示。

与源同步系统的区别在于,在某一特定时刻,共同时钟系统发送端和接收端的时钟沿是同步的,时序计算中无需考虑 CLK 信号的走线延时,即,式(5.6)和式(5.7)中,Tflight-clk参数值为 0。上图中各参数的定义如下:

D1:TCO,发送端器件输出数据相对时钟的延时。

D2:DATA 信号的走线延时。

D3:Tsu,在接收端,DATA 信号的建立时间。

D4:Th,在接收端,DATA 信号的保持时间。

可以认为共同时钟系统是源同步系统在Tflight-clk=0条件下的特例,因此,共同时钟系统的时序计算公式为:

TCO(max)+(Tflight-data)max+TSU(min)+C_JIT+D_CLK<Tcycle (5.25)

TCO(min)+(Tflight-data)min-C_JIT-D_CLK>TH(min)(5.26)

理解要点:
共同时钟系统时序计算公式为:
TCO(max)+(Tflight-data)max+TSU(min)+C_JIT+D_CLK<Tcycle
TCO(min)+(Tflight-data)min-C_JIT-D_CLK>TH(min)

5 源同步系统与共同时钟系统的比较

高速电路设计所涉及的时序系统,大多数可归为源同步系统或共同时钟系统。

源同步系统和共同时钟系统在时序设计上最大的区别在于对系统最高运行时钟频率的限制。

二者的建立时间计算公式分别为:

源同步系统:

TCO(max)+(Tflight-data-Tflight-clk)max+TSU(min)+C_JIT+D_CLK<Tcycle (5.27)

共同时钟系统:

TCO(max)+(Tflight-data)max+TSU(min)+C_JIT+D_CLK<Tcycle (5.28)

时钟频率F为时钟周期Tcycle的倒数,因此系统运行最高时钟频率Fmax为式(5.27)和式(5.28)左边各参数和的倒数。

对共同时钟系统而言,左边各参数均为正数(也有少数器件的TCO(max)参数为负数),因此其最高时钟频率Fmax存在上限值,而系统性能在很大程度上取决于时钟频率,为提高系统性能,只能减小器件的TCO(max)、TSU(min)参数,缩短信号走线长度,提高设计的信号完整性,而这些措施都将增加系统的成本。

相比共同时钟系统,源同步系统计算公式的左边增加了时钟走线延时的负值,即只要时钟走线延时足够大,在理论上,系统的最高运行时钟频率可达到无穷大。时钟窗的时序计算方法同样能证实这一点,即,只要发送端时钟窗大于接收端时钟窗,通过调整 CLK 或 DATA 的走线延时,系统的时序必然能得到满足。因此,基于源同步的系统设计,系统的性能更容易得到提高,高速电路设计中的许多高速总线,如 SPI4.2、DDR SDRAM 的数据接口等,采用的时序系统都是源同步。

理解要点:
共同时钟系统与源同步系统的主要区别在于其对系统运行最高时钟频率的限制,为提高系统的运行速率,建议采用源同步的时钟拓扑结构。

相关推荐
努力创造奇迹33 分钟前
STM32 HAL库内部 Flash 读写实现
stm32·单片机·嵌入式硬件
狄加山6751 小时前
STM32 时钟树
stm32·单片机·嵌入式硬件
螺丝钉的扭矩一瞬间产生高能蛋白3 小时前
基于FreeRTOS和STM32的微波炉
stm32·单片机·嵌入式硬件
程序员JerrySUN3 小时前
驱动开发硬核特训 · Day 11(下篇):从 virtio_blk 看虚拟总线驱动模型的真实落地
linux·驱动开发·嵌入式硬件
努力创造奇迹3 小时前
STM32 HAL库 内部传感器驱动实现
stm32·单片机·嵌入式硬件
杰克逊的日记4 小时前
FPGA阵列
fpga开发·集成电路
omnibots4 小时前
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(输入类外设之触摸屏 Touch)
嵌入式硬件·架构·iot
爱吃羊的老虎5 小时前
【verilog】Verilog 工程规范编码模板
fpga开发
逼子格6 小时前
十二种存储器综合对比——《器件手册--存储器》
单片机·嵌入式硬件·硬件工程·硬件工程师·存储器·硬件工程师真题
爱吃羊的老虎6 小时前
【verilog】在同一个 always 块中写了多个“看起来独立”的 if / if-else,到底谁先谁后,怎么执行?会不会冲突?
fpga开发