现有一块adc连接到fpga上,需要在fpga上实现高速数据的读取,那么第一步自然就是完成可靠的硬件连线,其中需要注意的是:
1. 注意信号的完整性,尽可能的避免边沿退化;这两区分两个概念:
i. 高速信号,指的是信号翻转,由高电平到低电平或者反之所耗得时间非常小;可能一个1mhz的ttl信号或者lvds信号,只要边沿足够陡,那也算是高速信号!
ii. 高频信号,一般指的是周期性信号的周期时间足够小;
iii. 也就是说高速信号不一定是高频的;数字信号一般都是高速信号,所以必须要保证其边沿的完整性,如果边沿发生退化或者变形,那么将相当于加入了额外的时序上的偏差;
2. 保持时钟信号和数据信号路径等长,不管是单端还是差分信号,需要用绕线等形式迫使两类线几乎等长;这个在之前的时序分析中非常重要,如果真的不能够做到等长,甚至差的还挺多的,也必须提前获得该差值,并将则合成时间差,在后面的时序分析中将会有用;
保证以上两点后,就可以着手时序的分析了,那么首先我们会得到目标器件adc的时序,如下图所示:
图 1 某adc的时序图
从上图中我们首先得到几个信息:
1. 这是个同步时序,由两类信号组成,时钟信号dco和数据信号fco以及d(忽略它们是差分信号,下面的分析会把它画成单端信号,简化好画一点)
2. 这是个ddr信号,ddr指的是数据是同步于时钟信号的上升、下降边沿,所以该类同步信号需要引入虚拟时钟概念,后面继续介绍;
3. 信号是不是边沿对齐,而是偏移了90度!也就是说dco边沿翻转后,数据信号没有第一时间翻转,而是延后了四分之一个周期,这是高速信号惯用的伎俩,后面会发现,这个延时让时序更好分析;
将fco信号和d信号的实际意义扔一边,在设计者看来,他们都仅仅是数据而已,将上面的时序图简化成下图:
图 2 简化后的时序图
可以看到,实际上所有的数据信号都是同步于dco的边沿,但是并不是对齐的,而是相差了90度,同时还是个ddr系统(上下边沿都是launch edge)
一般来说ddr系统会引入一个虚拟时钟的概念,就是说dco是实际存在的时钟,设计和虚构出一个2倍频的dcox2时钟,并将其相移180度以后,我们重新得到了下图:
图 3 引入虚拟时钟后的数据时序图
引入虚拟时钟后,我们重新规划launch edge,将其规划到dcox2-shift180的上升沿,其所对应的的latch edge仍然还是在dco上。
到目前为止,我们已经很清楚的规划了adc的时钟和数据输出的关系,至于如何用sdc语言描述,见下文;接下来就要考虑到这些信号实际上是各自经过pcb走线后来到fpga的引脚,从fpga引脚由进入到fpga内部,然后又经过各自的fpga内部走线延时以后来到了他们目标的寄存器,如下图所示:
图 4 傻瓜化后的adc和fpga的信号流向图
从上图可以获知:
1. adc内部看起来有一个源时钟,这个源时钟我们不用管怎么产生,它分成了两路,其中一路经过倍频+移相后触发了adc上的reg0(就是说其上升沿作为launch edge),另一路直接输出到adc引脚dco;
2. 数据由reg0产生后输出至adc引脚d,经过一个延时后来到fpga的相应输入引脚d`,与此同时,dco引脚也经由pcb来到了fpga的输入引脚dco`;
3. 这两个信号进入fpga后,都各自分成了两路,分别经过各自的延时来到其目标:
a) dco`引脚输入后,进过tclk2,来到了reg1的clk引脚
b) dco`引脚输入后,进过tclk3,来到了reg2的clk引脚
c) d`引脚输入后,进过tdata2,来到了reg1的d引脚
d) d`引脚输入后,进过tdata3,来到了reg2的d引脚
4. reg1和reg2有所区别,一个是上升沿触发,一个是下降沿触发(clk前加了个小圈圈),这是因为latch edge本来就是上升沿又有下降沿的;后期实际上也可以给dco`也引入虚拟时钟,这里不表;
5. 不管是reg1还是reg2,想要锁存latch数据就必须满足建立时间和保持时间,这个在下文的图中也有所体现;
说了那么多,都不如实际的时序图来的实际,下面放图:
图 5 实际时序分析
上图由三个颜色的时序,分别是:
1. 紫色代表dat,也就是数据到达时间,它由tco(图中没有体现,可以参考手册)、tdata1和tdata2三者构成,是不是和我们的dat定义不一样?公式是死的,只需要理解其意思就可以。和公式相比少了tclk(源时钟到reg0的clk的延时),是因为我们不需要考虑这个延时,我们是根据adc数据手册的时序图反推回里面的结构图,所以所有延时在反推的过程中已经都被体现或者被折合!
2. 绿色伙同棕色线,表达出两个意思drtsu和drth,分别代表数据建立所需时间和数据保持所需时间;
3. 将两者按照定义做减法,就能够得到建立时间裕量和保持时间裕量!
如上图所示,棕色线所划分的时间窗中,reg1.d已经是新的数据,而且在这个时间窗内并没有变化,所以就同时满足了建立时间裕量大于0和保持时间裕量大于0两个关系,这样的时序是稳定的!
但是这个只是图示而已,所有的tdata1、2、3以及tclk1、2、3都是我们目前假设的,在实际进行约束时,那些量时需要设计者提前设定,而那些量是自动生成的那?答案是:
1. tdata1和tclk1是由pcb实际布线所决定的,如果能够按照等长布线规则,就能够让两者相互抵消;
2. dco和dcox2-shift180的时序是由器件决定的;
3. tdata2、3,tclk2、3是fpga在布线时自动产生的!
所以说这里我们只需要告诉fpga,dco`和d`之间的时序关系就可以了,要获得这两者之间的时序关系,我们就必须获得dco和d之间的原始关系,以及他们是如何被布线延时变成dco`和d`的;如何去描述上面所说的这种关系呢?利用sdc文件!
也就是说sdc文件就是要准确的告诉fpga,所有输入(输出先不管)信号在进入fpga时会是个什么样子,然后根据这个信息,fpga会自动布线,使得reg1和reg2能够获得正确的数据;如果万一sdc文件所描述的时序关系非常的恶劣,将会导致不管fpga怎么优化布线和布局,都不能够实现正确时时序时,就会输出报错,这个在以后的文章timequest ta中会有详细的分析;那么接下来就开始写sdc文件吧;
#设置各种延时常数
#这里假设adc片上的延时都为0
set adc_clks_max 0
set adc_clks_min 0
set adc_clkd_max 0
set adc_clkd_min 0
# 同时根据adc手册去设置launch edge到有效数据之间的延时,这里假设他为x
set adc_tco_max x
set adc_tco_min x
#这里设置时钟信号和数据信号在pcb板上的延时差,即使是等长布线,我们也要可以给
#定两个值,这样可以给fpga布线更多的压力,使得后期布线会往一个最理想的方向进行,
#分别是
set adc_bd_min xx
set adc_bd_max xx
#设置两个时钟,第一个时钟为dco,它会从fpga的dco引脚输入
#另一个时钟是虚拟时钟,根据设置,它是dco的两倍频,而且有180度的相移
#这两个时钟之间是同步的,一个是很是存在的,另一个是虚拟的!
create_clock -name dco-period 5-waveform {1.25 3.75} [get_ports {dco}]
create_clock -name dco_virtual-period 2.5 -waveform {0 1.25}
#最后将所有的数据引脚同步到dco_virtual的上升沿,根据上面的延时常数设置输入延时和
#输出延时,这条语句非常关键,它告诉fpga所有的输入信号,在进入fpga之前,相对于
#时钟存在怎么样的关系!
set_input_delay -clock dco_virtual -max [expr $adc_clks_max + $adc_tco_max + $adc_bd_max - $adc_clkd_min] [get_ports {d*}]
set_input_delay -clock dco_virtual -min [expr $adc_clks_min + $adc_tco_min + $adc_bd_min - $adc_clkd_max] [get_ports {}d*}]
sdc文件解释
1. 蓝色底部分代表定义一些延时参数,这些延时参数都是根据实际的pcb布线或者是adc的书籍参数来设定的
2. 绿色底部分设定同步时钟,如果有必要的话还要设置虚拟时钟;
3. 紫色底部分将所有的输入信号同步到时钟,在这里这个时钟是虚拟时钟,因为我们假设虚拟时钟的上升沿是launch edge,这里其实可以也可以同步到dco上,但就要设置下降沿同步,会显得比较麻烦;但是一样都是可以实现的!
通过上面的语句,fpga就知道了,这些属于信号之间的关系:d和dco之间的关系,d和dcox2-shift180(就是dco_virtual)之间关系;
灵敏电流计原理_灵敏电流计内部结构图
手持吸尘器哪个牌子好,很多家庭主妇首选了它
抢下台积电客户!三星拿下IBM和ST的微控制器订单;华为申请注册“元 OS ”商标……
怎样将USB集线器添加到Toshiba Satelite
大招科技:增值业务联合运营 券商低投入高效率
FPGA设计-时序约束实例分析
哪种是更好的电视技术
CDN和边缘计算之间存在着什么联系
科通技术正式成为Power Integrations中国区代理商
吴亦凡倾情代言华为荣耀8 Lite青春版:颜值大赞!2月21日和荣耀V9一起发布
Xilinx发布射频级模拟技术,实现5G无线技术新突破
iphone13pro多少钱,iphone13pro配色哪个好看
电瓶修复—充电器修复问题连载5(终结篇)
锁相环中的鉴相器了解不?
苹果新专利曝光 iPhone可能成为汽车钥匙
洲明集团2021共进会天津站隆重召开
今日传感财经:红外传感器概念盘中报涨;影像传感器概念报涨;MEMS传感器概念报跌
日本出现“附带蓄电池的公寓” 利用电动车辆用过的电池
Intel Skylake将转战嵌入式市场
专精特新企业北科天绘入选安徽新能源汽车和智能网联汽车产业优势企业