时序分析11-I/O时序分析与约束实例1

典型的系统分析和约束实例:摄像头采集,SDRAM存储,VGA显示
摄像头的input delay约束
VGA的output delay约束
SDRAM的input和output约束

参考代码
http://www.corecourse.cn/forum.php?mod=viewthread&tid=27930&highlight=7670

1,全编译
在这里插入图片描述
2,打开TimeQuest,并选中PLL的时钟右键移除
在这里插入图片描述
在这里插入图片描述
接下来修改时钟,可以看到CLK是50MHz,可以不用修改,摄像头cmos的时钟需要修改,对于OV7670摄像头:PCLK=24MHz,OV5640摄像头:PCLK=48MHz
这里选用48MHz
选中时钟,右键
在这里插入图片描述

在这里插入图片描述
修改后的时钟
在这里插入图片描述
生成SDC文件
在这里插入图片描述
在这里插入图片描述
然后关闭软件,回到Quartus软件添加SDC文件再重新编译
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
接下来设置PLL时钟
有两种方式,第一种方式,上节博文也讲过了,那就是Create Generated Clock
在这里插入图片描述
我们现在采用第二种方式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PLL_C0:clk_sdr_ctrl,作为SDRAM控制器的基本工作时钟100M
PLL_C1:sdram_clk,作为SDRAM存储器芯片的接口工作时钟
PLL_C2:clk_24m,最终通过Cmos_xclk这个管脚输出
PLL_C3:ClkDisp,最终通过Disp_PCLK这个管脚输出,作为ADV7123芯片的同步时钟

然后保存SDC文件,再重新编译
在这里插入图片描述

下面进行output delay约束
首先创建生成时钟
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置最大输出延迟
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置最小输出延迟
在这里插入图片描述
最大输入延迟
在这里插入图片描述
在这里插入图片描述
数据手册没有给最小输入延迟,所以可以不设置
保存到SDC文件

在这里插入图片描述

建立时钟中
Data arrival time = Launch edge + T0->T1 + T1->T2 + Tco + T3->T4 + T4->T5
Data arrival time = Launch edge + Tclk1(int) + Tclk1(ext) + Tco + Tdata(pcb) + Tdata(int)

Data require time = Latch edge + T0->T6 - Tsu
Data require time = Latch edge + Tclk2(int) - Tsu

Slack(su) = Data require time - Data arrival time >=0,即
Latch edge + Tclk2(int) - Tsu - (Launch edge + Tclk1(int) + Tclk1(ext) + Tco + Tdata(pcb) + Tdata(int)) >= 0
(Latch edge - Launch edge) - ( Tclk1(ext) + Tdata(pcb) + Tco) >= -Tclk2(int) + Tsu + Tclk1(int) + Tdata(int)

最大输入延迟input delay max = Tclk1(ext) + Tdata(pcb) + Tco

保持时间中
Data arrival time = Launch edge + T0->T1 + T1->T2 + Tco + T3->T4 + T4->T5
Data arrival time = Launch edge + Tclk1(int) + Tclk1(ext) + Tco + Tdata(pcb) + Tdata(int)

Data require time = Latch edge + T0->T6 + Th
Data require time = Latch edge + Tclk2(int) + Th

Slack(hold) = Data arrival time - Data require time >=0,即

Launch edge + Tclk1(int) + Tclk1(ext) + Tco + Tdata(pcb) + Tdata(int) - ( Latch edge + Tclk2(int) + Th) >=0
(Launch edge - Latch edge) + (Tclk1(ext) + Tco + Tdata(pcb) ) >= -Tclk1(int) - Tdata(int) + Tclk2(int) + Th
最小输入延迟input delay min = Tclk1(ext) + Tco + Tdata(pcb)

总结,
时钟和数据方向相同的情况
input delay max = Tco + Tdata(pcb) - Tclk2(ext)
input delay min = Tco + Tdata(pcb) - Tclk2(ext)

时钟和数据方向相反的情况
最大输入延迟input delay max = Tco + Tdata(pcb) + Tclk1(ext)
最小输入延迟input delay min = Tco + Tdata(pcb) + Tclk1(ext)

对于时钟是由外部器件提供的情况,如图
在这里插入图片描述
此时的时钟在外部PCB板上
T0->T1 : Tclk1(ext)
T0->T2 :Tclk2(ext)
skew(ext) = Tclk2(ext) - Tclk1(ext)
若时钟在内部
时钟和数据方向相同的情况
input delay max = Tco + Tdata(pcb) - Tclk2(ext)
input delay min = Tco + Tdata(pcb) - Tclk2(ext)
此时,Tclk1(ext) = 0,等式中加入
input delay max = Tco + Tdata(pcb) - (Tclk2(ext) - Tclk1(ext))
input delay min = Tco + Tdata(pcb) - (Tclk2(ext) - Tclk1(ext))
又因为
skew(ext) = Tclk2(ext) - Tclk1(ext)
input delay max = Tco + Tdata(pcb) - skew(ext)
input delay min = Tco + Tdata(pcb) - skew(ext)

在这里插入图片描述
时钟和数据方向相反的情况,
最大输入延迟input delay max = Tco + Tdata(pcb) + Tclk1(ext)
最小输入延迟input delay min = Tco + Tdata(pcb) + Tclk1(ext)
此时,Tclk2(ext) = 0
input delay max = Tco + Tdata(pcb) - (Tclk2(ext) - Tclk1(ext))
input delay min = Tco + Tdata(pcb) - (Tclk2(ext) - Tclk1(ext))
又因为
skew(ext) = Tclk2(ext) - Tclk1(ext)
input delay max = Tco + Tdata(pcb) - skew(ext)
input delay min = Tco + Tdata(pcb) - skew(ext)

在这里插入图片描述

总结,
时钟和数据方向相同的情况
input delay max = Tco + Tdata(pcb) - skew(ext)
input delay min = Tco + Tdata(pcb) - skew(ext)

时钟和数据方向相反的情况
input delay max = Tco + Tdata(pcb) - skew(ext)
input delay min = Tco + Tdata(pcb) - skew(ext)

即,对于输入延迟,不管时钟和数据方向相同的情况还是时钟和数据方向相反的情况
input delay max = Tco + Tdata(pcb) - skew(ext)
input delay min = Tco + Tdata(pcb) - skew(ext)

那么对于输出延迟
若时钟也在外部
在这里插入图片描述

T0->T1 : Tclk1(ext)
T0->T2 :Tclk2(ext)
skew(ext) = Tclk2(ext) - Tclk1(ext)

若时钟在内部
时钟和数据方向相同的情况
最大输出延迟output delay max = Tdata(pcb) -Tclk2(ext) + Tsu
最小输出延迟output delay min = Tdata(pcb) - Tclk2(ext) - Th

在这里插入图片描述
此时,Tclk1(ext) = 0,等式中
output delay max = Tdata(pcb) - (Tclk2(ext) - Tclk1(ext)) + Tsu
output delay min = Tdata(pcb) - (Tclk2(ext) - Tclk1(ext)) - Th
又因为
skew(ext) = Tclk2(ext) - Tclk1(ext)
output delay max = Tdata(pcb) - skew(ext) + Tsu
output delay min = Tdata(pcb) - skew(ext) - Th

同理,时钟和数据相反的情况也是如此
output delay max = Tdata(pcb) - skew(ext) + Tsu
output delay min = Tdata(pcb) - skew(ext) - Th

总结
对于输出延迟,不管时钟和数据相同还是时钟和数据相反的情况
output delay max = Tdata(pcb) - skew(ext) + Tsu
output delay min = Tdata(pcb) - skew(ext) - Th

总结
对于输出延迟,不管时钟和数据相同还是时钟和数据相反的情况
output delay max = Tdata(pcb) - skew(ext) + Tsu
output delay min = Tdata(pcb) - skew(ext) - Th
对于输入延迟,不管时钟和数据方向相同的情况还是时钟和数据方向相反的情况
input delay max = Tdata(pcb) - skew(ext) + Tco
input delay min = Tdata(pcb) - skew(ext) + Tco

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值