📄 fpga 设计的四种常用思想与技巧(三).htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://www.pld.com.cn/advance/skill/design_skill3.htm -->
<HTML><HEAD><TITLE>template</TITLE><!-- #BeginTemplate "../../Templates/main.dwt" --><!-- DW6 -->
<META http-equiv=Content-Type content="text/html; charset=gb2312"><!-- #BeginEditable "doctitle" --><!-- #EndEditable --><LINK
href="FPGA 设计的四种常用思想与技巧(三).files/Style.css" type=text/css rel=stylesheet>
<META content="tb, default" name="Microsoft Border">
<STYLE type=text/css>.style1 {
COLOR: #a6a6b9
}
BODY {
FONT-SIZE: 9pt; COLOR: #333333
}
TD {
FONT-SIZE: 9pt; COLOR: #333333
}
TH {
FONT-SIZE: 9pt; COLOR: #333333
}
A:hover {
COLOR: #0000ff
}
</STYLE>
<META content="MSHTML 6.00.2900.2668" name=GENERATOR></HEAD>
<BODY vLink=#000066 aLink=#fe818d link=#0000ff bgColor=#ffffff leftMargin=2
topMargin=2 rightMargin=2 MARGINWIDTH="2" MARGINHEIGHT="2">
<TABLE height=36 cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD class=tbgc width=116
background="FPGA 设计的四种常用思想与技巧(三).files/mast_logo.gif" rowSpan=2> </TD>
<TD width=37 bgColor=#504a8a height=20> </TD>
<TD width=303 bgColor=#504a8a height=20>
<DIV align=right><FONT class=font10 color=#ffffff><SPAN class=font10><B
class=font10_white>可编程逻辑器件 中文网站</B></SPAN></FONT></DIV></TD>
<TD width=304 bgColor=#504a8a height=20>
<DIV align=right><FONT color=#6699cc><FONT class=index2
color=#fafafa><SPAN class=index2>推荐使用1024x768分辨率</SPAN></FONT><SPAN
class=index2><FONT class=index2 color=#cccccc>
</FONT></SPAN></FONT></DIV></TD></TR>
<TR>
<TD class=font10 vAlign=center bgColor=#000066 colSpan=3>
<DIV align=left><FONT class=verysmall color=#000066 size=1><SPAN
class=verysmall2>xilinx,lattice,altera,actel,Quicklogic,EDA软件,PLD,CPLD,FPGA,VHDL,verilog,IP
core,ABEL,单片机,8051,数字信号处理,DSP,MCU,PCI接口,数字逻辑电路,设计技巧,参考设计,电子元器件销售,解密,license,crack,synplify,modlesim,开发板,学习资料,学习套件</SPAN></FONT></DIV></TD></TR></TBODY></TABLE>
<TABLE class=font10 cellSpacing=0 cellPadding=0 width=778 align=center
border=0><TBODY>
<TR vAlign=center align=middle bgColor=#000066>
<TD class=font9 width=119 height=17>
<DIV align=center><B><A class=index
href="http://www.pld.com.cn/index.htm">主 页</A></B></DIV></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/introduction1.htm">新手入门</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/advance.htm">设计进阶</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/hdl.htm">HDL语言</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/manufacturer.htm">PLD厂商</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/freeip.htm">参考设计</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B class=index><A class=index
href="http://www.pld.com.cn/software.htm">开发软件</A></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/application.htm">应用文章</A></FONT></B></TD>
<TD class=font9 width=80 height=17><B><FONT color=#cccccc><A class=index
href="http://www.pld.com.cn/BBS/index.asp">PLD论坛</A></FONT></B></TD></TR><!--msnavigation--></TBODY></TABLE>
<TABLE class=font10 cellSpacing=0 cellPadding=0 width=778 align=center
border=0><TBODY>
<TR>
<TD width=119 bgColor=#e8e8e8> </TD>
<TD colSpan=8>
<MARQUEE class=font9 scrollAmount=5 scrollDelay=100 width="100%"
bgColor=#ffffff border="0" align="middle"><FONT
color=#000066>欢迎来到可编程逻辑器件中文网站! www.PLD.com.cn </FONT></MARQUEE></TD></TR><!--msnavigation--></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
<TBODY>
<TR>
<TD vAlign=top width=119 bgColor=#e8e8e8>
<DIV align=left><!-- #BeginEditable "column" --><!-- #EndEditable -->
<P> </P>
<P> </P>
<P> </P></DIV></TD><!--msnavigation-->
<TD vAlign=top height=52>
<DIV align=center>
<CENTER><!-- #BeginEditable "Content" -->
<P> </P>
<BLOCKQUOTE>
<P align=left><A class=font9 href="http://www.pld.com.cn/advance.htm">栏目
> 设计进阶</A></P></BLOCKQUOTE>
<P> </P>
<P><SPAN class=font12B><STRONG>FPGA 设计的四种常用思想与技巧(三)</STRONG></SPAN></P>
<P> </P>
<P> </P>
<BLOCKQUOTE>
<P align=left><STRONG>数据接口的同步方法 </STRONG></P>
<P align=left> </P>
<P align=left>数据接口的同步是 FPGA/CPLD
设计的一个常见问题,也是一个重点和难点,很多设计不稳定都是源于数据接口的同步有问题。 </P>
<P align=left>在电路图设计阶段,一些工程师手工加入 BUFT
或者非门调整数据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样,生成了很多相差 90
度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样位置。这两种做法都十分不可取,因为一旦芯片更新换代或者移植到其它芯片组的芯片上,采样实现必须从新设计。而且,这两种做法造成电路实现的余量不够,一旦外界条件变换
( 比如温度升高 ) ,采样时序就有可能完全紊乱,造成电路瘫痪。 </P>
<P align=left>下面简单介绍几种不同情况下数据接口的同步方法:</P>
<P align=left>1. 输入、输出的延时 ( 芯片间、 PCB 布线、一些驱动接口元件的延时等 )
不可测,或者有可能变动的条件下,如何完成数据同步? </P>
<P align=left>对于数据的延迟不可测或变动,就需要建立同步机制,可以用一个同步使能或同步指示信号。另外,使数据通过 RAM 或者
FIFO 的存取,也可以达到数据同步目的。 </P>
<P align=left>把数据存放在 RAM 或 FIFO 的方法如下:将上级芯片提供的数据随路时钟作为写信号,将数据写入 RAM 或者
FIFO ,然后使用本级的采样时钟 ( 一般是数据处理的主时钟 ) 将数据读出来即可。这种做法的关键是数据写入 RAM 或者 FIFO
要可靠,如果使用同步 RAM 或者 FIFO
,就要求应该有一个与数据相对延迟关系固定的随路指示信号,这个信号可以是数据的有效指示,也可以是上级模块将数据打出来的时钟。对于慢速数据,也可以采样异步
RAM 或者 FIFO ,但是不推荐这种做法。 </P>
<P align=left>数据是有固定格式安排的,很多重要信息在数据的起始位置,这种情况在通信系统中非常普遍。通讯系统中,很多数据是按照 “
帧 ”
组织的。而由于整个系统对时钟要求很高,常常专门设计一块时钟板完成高精度时钟的产生与驱动。而数据又是有起始位置的,如何完成数据的同步,并发现数据的
“ 头 ” 呢? </P>
<P align=left>数据的同步方法完全可以采用上面的方法,采用同步指示信号,或者使用 RAM 、 FIFO
缓存一下。找到数据头的方法有两种,第一种很简单,随路传输一个数据起始位置的指示信号即可,对于有些系统,特别是异步系统,则常常在数据中插入一段同步码
( 比如训练序列 ) ,接收端通过状态机检测到同步码后就能发现数据的 “ 头 ” 了,这种做法叫做 “ 盲检测 ” 。 </P>
<P align=left>上级数据和本级时钟是异步的,也就是说上级芯片或模块和本级芯片或模块的时钟是异步时钟域的。 </P>
<P
align=left>前面在输入数据同步化中已经简单介绍了一个原则:如果输入数据的节拍和本级芯片的处理时钟同频,可以直接用本级芯片的主时钟对输入数据寄存器采样,完成输入数据的同步化;如果输入数据和本级芯片的处理时钟是异步的,特别是频率不匹配的时候,则只有用处理时钟对输入数据做两次寄存器采样,才能完成输入数据的同步化。需要说明的是,用寄存器对异步时钟域的数据进行两次采样,其作用是有效防止亚稳态
( 数据状态不稳定 )
的传播,使后级电路处理的数据都是有效电平。但是这种做法并不能保证两级寄存器采样后的数据是正确的电平,这种方式处理一般都会产生一定数量的错误电平数据。所以仅仅适用于对少量错误不敏感的功能单元。
</P>
<P align=left>为了避免异步时钟域产生错误的采样电平,一般使用 RAM 、 FIFO
缓存的方法完成异步时钟域的数据转换。最常用的缓存单元是 DPRAM
,在输入端口使用上级时钟写数据,在输出端口使用本级时钟读数据,这样就非常方便的完成了异步时钟域之间的数据交换。 </P>
<P align=left>2. 设计数据接口同步是否需要添加约束? </P>
<P align=left>建议最好添加适当的约束,特别是对于高速设计,一定要对周期、建立、保持时间等添加相应的约束。 </P>
<P align=left>这里附加约束的作用有两点: </P>
<P align=left>a.
提高设计的工作频率,满足接口数据同步要求。通过附加周期、建立时间、保持时间等约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率,满足接口数据同步要求。
</P>
<P align=left>b. 获得正确的时序分析报告。几乎所有的 FPGA
设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析报告。
</P>
<P align=left>Xilinx 和数据接口相关的常用约束有 Period 、 OFFSET_IN_BEFORE 、
OFFSET_IN_AFTER 、 OFFSET_OUT_BEFORE 和 OFFSET_OUT_AFTER 等; Altera
与数据接口相关的常用约束有 Period 、 tsu 、 tH 、 tco 等。 </P>
<P align=left> </P>
<P align=left> </P>
<P align=center><A
href="http://www.pld.com.cn/advance/skill/design_skill2.htm">上一页</A> <A
href="http://www.pld.com.cn/advance/skill/design_skill.htm">(1)</A> <A
href="http://www.pld.com.cn/advance/skill/design_skill2.htm">(2)</A> (3)
</P>
<P align=center> </P>
<P> </P></BLOCKQUOTE><!-- #EndEditable -->
<P
class=index2> </P></CENTER></DIV></TD></TR><!--msnavigation--></TBODY></TABLE>
<TABLE class=font9 height=35 cellSpacing=0 cellPadding=0 width=778 align=center
bgColor=#000000 border=0>
<TBODY>
<TR>
<TD align=middle width="4%" bgColor=#000066 height=10>
<DIV align=left><FONT face="Arial, Helvetica, sans-serif"
color=#ffffff><B><SPAN class=font9></SPAN></B></FONT></DIV></TD>
<TD align=middle width="96%" bgColor=#000066 height=10>
<DIV class=index>
<DIV align=left><B><A class=index
href="http://www.pld.com.cn/others/aboutus.html" target=_blank><FONT
face="Arial, Helvetica, sans-serif"><SPAN class="index2 style1">about
us</SPAN></FONT></A> <FONT color=#cccccc><SPAN
class=index2>|</SPAN></FONT><SPAN class=font9><FONT
face="Arial, Helvetica, sans-serif" color=#cccccc> Site Map </FONT><FONT
color=#cccccc>| </FONT></SPAN></B></DIV></DIV></TD></TR>
<TR vAlign=center bgColor=#f3f3f3>
<TD align=middle colSpan=2 height=18>
<P><FONT color=#666666><SPAN class=font9>copyright© 1999-2003 all rights
reserved www.PLD.com.cn</SPAN></FONT></P></TD></TR>
<TR bgColor=#f3f3f3>
<TD align=middle colSpan=2 height=23><FONT color=#666666>e-mail: pld<SPAN
class=email><IMG height=10 src="FPGA 设计的四种常用思想与技巧(三).files/@.gif"
width=7>fpga.com.cn</SPAN></FONT></TD></TR>
<TR bgColor=#ffffff>
<TD align=middle colSpan=2 height=23> </TD></TR></TBODY></TABLE>
<P class=index2> </P><!-- #EndTemplate --></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -