⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpga 设计的四种常用思想与技巧(三).htm

📁 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>&nbsp;</TD>
    <TD width=37 bgColor=#504a8a height=20>&nbsp;</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>&nbsp;</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>&nbsp;</P>
      <P>&nbsp;</P>
      <P>&nbsp;</P></DIV></TD><!--msnavigation-->
    <TD vAlign=top height=52>
      <DIV align=center>
      <CENTER><!-- #BeginEditable "Content" -->
      <P>&nbsp;</P>
      <BLOCKQUOTE>
        <P align=left><A class=font9 href="http://www.pld.com.cn/advance.htm">栏目 
        &gt; 设计进阶</A></P></BLOCKQUOTE>
      <P>&nbsp;</P>
      <P><SPAN class=font12B><STRONG>FPGA 设计的四种常用思想与技巧(三)</STRONG></SPAN></P>
      <P>&nbsp;</P>
      <P>&nbsp;</P>
      <BLOCKQUOTE>
        <P align=left><STRONG>数据接口的同步方法 </STRONG></P>
        <P align=left>&nbsp;</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>&nbsp;</P>
        <P align=left>&nbsp;</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>&nbsp;</P>
        <P>&nbsp;</P></BLOCKQUOTE><!-- #EndEditable -->
      <P 
class=index2>&nbsp;</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&copy; 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>&nbsp;</TD></TR></TBODY></TABLE>
<P class=index2>&nbsp;</P><!-- #EndTemplate --></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -