pci_delayed_sync(1).v
上传用户:quan1896
上传日期:2014-05-14
资源大小:211k
文件大小:40k
源码类别:

并行计算

开发平台:

Others

  1. <!-- pf_header_start -->
  2. <html>
  3.   <head>
  4.     <META NAME="keywords" CONTENT="cores, VHDL, Verilog HDL, ASIC, Synthesizable,
  5.       standard cell, IP, Intellectual Property, 32-bit RISC, UART, PCI, SDRAM,
  6.       full custom, system on a chip, SOC, reusable, design, development, synthesis,
  7.       designs, developers, C, Linux, eCos, open, free, open source cores, RTL code,
  8.       system-on-a-chip, circuits, digital, GNU, GPL, core, controller, processor,
  9.       system design, chip design, EDA, design methodology, design tools, ASICs, programmable logic,
  10.       FPGA's, PLDs, CPLDs, verification, Synthesis, HDL, Simulation, IC design software,
  11.       semiconductor design, integrated circuits, system designs, chip designs, EDAs, 
  12.       design methodologies, design tool, ASIC, programmable logics, FPGA, PLD, CPLD, Synthesis, 
  13.       circuit, Synopsys, system design, chip design, programmable logic, FPGA's, PLDs, 
  14.       CPLDs, verification, Simulation">
  15.     <META NAME="description" CONTENT="OPENCORES.ORG endorses development and hosts
  16.       a repository of free, open-source cores (chip designs) and supplemental
  17.       platforms (boards).">
  18.     <STYLE type=text/css>
  19.       BODY {margin: 0;}
  20.       BODY, P, DIV, TD, TR, TH, FORM, OL, UL, LI, B, I, INPUT, TEXTAREA, SELECT,
  21.       FONT {font-size: 10pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  22.       P, TD, FORM, TEXTAREA {font-size: 10pt;}
  23.       H1, H2 {FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica; font-size: 13pt; text-decoration: none}
  24.       .noline {text-decoration: none;}
  25.       .menu_top {text-decoration: none; font-weight: bold;
  26.         font-size: 7pt; color: #000000; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;} 
  27.       .menu_section {text-decoration: none; font-weight: bold;
  28.         font-size: 10pt; color: #ffffff; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;} 
  29.       .menu_item {font-size: 10pt; color: #004488; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  30.       .menu_section_admin {text-decoration: none; font-weight: bold;
  31.         font-size: 10pt; color: #ffff44; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;} 
  32.       .page_title {text-decoration: none; font-weight: bold; color: #c00000; font-size: 13pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  33.       .block_title {text-decoration: none; font-weight: bold; font-size: 11pt; color: #000000; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  34.       .block_subtitle {text-decoration: none; font-weight: bold; font-size: 10pt; color: #000000; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  35.       .title {text-decoration: none; font-weight: bold; font-size: 10pt; color: #000000; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  36.       .large {font-size: 13pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  37.       .medium {font-size: 10pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  38.       .small {font-size: 7pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  39.       .ultrasmall {font-size: 3pt; FONT-FAMILY: Verdana, Tahoma, Arial, Helvetica;}
  40.       .button { font-family:Verdana, Tahoma, Arial, Helvetica; }
  41.       .searchfield {font-family: verdana, arial, helvetica; font-size: 10px; color: #333333; width: 80px; height: 17px;}
  42.     </STYLE>
  43.     <title>OPENCORES.ORG</title>
  44.     <script laguage="Javascript">
  45.       function check(msg) {
  46.         if(confirm(msg)) {
  47.           return true
  48.         } else {
  49.           return false
  50.         }
  51.       }
  52.     </script>
  53.   </head>
  54.   
  55.   <body 
  56.     bgcolor="#e0e0e0" 
  57.     topmargin="0" 
  58.     leftmargin="0" 
  59.     marginwidth="0" 
  60.     marginheight="0" 
  61.     link="#004488" 
  62.     alink="#ff3300"
  63.     vlink="#444444"
  64.   >
  65. <a name="top">
  66. <!-- pf_header_end -->
  67. <center>
  68. <table cellpadding=0 cellspacing=0 border=0 width=96%><tr>
  69. <td width=1 bgcolor=#000000><img width=1 src="/images/dotty.gif"></td>
  70. <td>
  71. <table border=0 cellpadding=0 cellspacing=0 width=100%>
  72. <tr><td background="/images/topbg.gif" bgcolor=#aaddff height=70>
  73. <table width=100% border=0 ><tr><td width=180>
  74. <a href="/"><img border=0 src="/images/oc_logo.gif"></a>
  75. </td><td>
  76. <center>
  77. <!--
  78. <a title="" href="/banner.cgi"><img width=468 height=60 border=0 alt="" src=""></a>
  79. //-->
  80. <script type="text/javascript"><!--
  81. google_ad_client = "pub-9285819221080148";
  82. xgoogle_ad_width = 728;
  83. xgoogle_ad_height = 79;
  84. xgoogle_ad_format = "728x90_as";
  85. google_ad_width = 468;
  86. google_ad_height = 47;
  87. google_ad_format = "468x60_as";
  88. google_ad_type = "text_image";
  89. google_ad_channel ="3274390903";
  90. google_color_border = "aaddff";
  91. xgoogle_color_border = "ffee88";
  92. xgoogle_color_bg = "FFEE88";
  93. google_color_bg = "aaddFF";
  94. google_color_link = "004488";
  95. google_color_url = "b00000";
  96. google_color_text = "000000";
  97. //--></script>
  98. <script type="text/javascript"
  99.   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  100. </script>
  101. </center>
  102. </td><td align=right>
  103. </td>
  104. </tr></table>
  105. </td></tr>
  106. <tr bgcolor=#000000><td><img height=1 src="/images/dotty.gif"></td></tr>
  107. <tr><td bgcolor=#ffffff>
  108. <table border=0 cellpadding=0 cellspacing=0 width=100%><tr>
  109. <td bgcolor=#ffee88 width=60% background="/images/menu1.gif"></td>
  110. <td bgcolor=#ffee88 width=15 background="/images/menu1.gif" align=right><input type=image border=0 src="/images/exp1pf.gif" onclick="javascript:window.location='/pf.cgi?url=/cvsweb.shtml/pci/rtl/verilog/pci_delayed_sync.v?rev=1.3'"></a></td>
  111. <td bgcolor=#ffffff align=right nowrap>
  112. &nbsp; &nbsp; &nbsp; &nbsp; 
  113. <font class=menu_top size=-1>
  114.         
  115.           <a class=menu_top href="/login.cgi/login">LOGIN</a>
  116.           
  117.             &nbsp; ::: &nbsp;
  118.           
  119.         
  120.           <a class=menu_top href="/recover_pass.cgi/recover_pass">RECOVER PASS</a>
  121.           
  122.             &nbsp; ::: &nbsp;
  123.           
  124.         
  125.           <a class=menu_top href="/get_account.cgi/get_account">GET ACCOUNT</a>
  126.           
  127.         
  128. &nbsp; &nbsp;
  129. </font>
  130. </td></tr>
  131. <tr bgcolor=#ffffff>
  132.   <td></td>
  133.   <td></td>
  134.   <td bgcolor=#000000><img src="/images/dotty.gif"></td>
  135. </tr>
  136. </table>
  137. <table border=0 cellpadding=0 cellspacing=0>
  138. <tr>
  139. <td width=10><img width=10 src="/images/dotty.gif"></td>
  140. <td width=120 valign=top>
  141.         
  142.         <table width=100% border=0 cellpadding=2 cellspacing=0>
  143.           <tr><td><img height=2 src="/images/dotty.gif"></td></tr>
  144.         
  145.          <tr><td bgcolor="#347FB8">
  146.            <img src="/images/bullet.gif">
  147.          
  148.            <font class=menu_section>Browse</font>
  149.          
  150.          </td></tr>
  151.           
  152.            <tr><td>
  153.               
  154.                   
  155.                       <li class=small>
  156.                   
  157.               
  158.             
  159.                 <a class=menu_item href="/browse.cgi/by_category"><font class=menu_item>Projects</font></a></li>
  160.             
  161.            </td></tr>
  162.             
  163.           
  164.            <tr><td>
  165.               
  166.                   
  167.                       <li class=small>
  168.                   
  169.               
  170.             
  171.                 <a class=menu_item href="/cvsweb.shtml/"><font class=menu_item>Code (CVS)</font></a></li>
  172.             
  173.            </td></tr>
  174.             
  175.           
  176.            <tr><td>
  177.               
  178.                   
  179.                       <li class=small>
  180.                   
  181.               
  182.             
  183.                 <a class=menu_item href="/forums.cgi"><font class=menu_item>Forums</font></a></li>
  184.             
  185.            </td></tr>
  186.             
  187.           
  188.            <tr><td>
  189.               
  190.                   
  191.                       <li class=small>
  192.                   
  193.               
  194.             
  195.                 <a class=menu_item href="/news.cgi/list/1"><font class=menu_item>News</font></a></li>
  196.             
  197.            </td></tr>
  198.             
  199.           
  200.            <tr><td>
  201.               
  202.                   
  203.                       <li class=small>
  204.                   
  205.               
  206.             
  207.                 <a class=menu_item href="/articles.cgi/list"><font class=menu_item>Articles</font></a></li>
  208.             
  209.            </td></tr>
  210.             
  211.           
  212.            <tr><td>
  213.               
  214.                   
  215.                       <li class=small>
  216.                   
  217.               
  218.             
  219.                 <a class=menu_item href="/polls.cgi/list"><font class=menu_item>Polls</font></a></li>
  220.             
  221.            </td></tr>
  222.             
  223.           
  224.           <tr><td><font size=-2>&nbsp;</font></td></tr>
  225.         
  226.          <tr><td bgcolor="#347FB8">
  227.            <img src="/images/bullet.gif">
  228.          
  229.            <font class=menu_section>OpenCores</font>
  230.          
  231.          </td></tr>
  232.           
  233.            <tr><td>
  234.               
  235.                   
  236.                       <li class=small>
  237.                   
  238.               
  239.             
  240.                 <a class=menu_item href="/faq.cgi/index"><font class=menu_item>FAQ</font></a></li>
  241.             
  242.            </td></tr>
  243.             
  244.           
  245.            <tr><td>
  246.               
  247.                   
  248.                       <li class=small>
  249.                   
  250.               
  251.             
  252.                 <a class=menu_item href="/projects.cgi/web/opencores/cvs_howto"><font class=menu_item>CVS HowTo</font></a></li>
  253.             
  254.            </td></tr>
  255.             
  256.           
  257.            <tr><td>
  258.               
  259.                   
  260.                       <li class=small>
  261.                   
  262.               
  263.             
  264.                 <a class=menu_item href="/projects.cgi/web/opencores/mission"><font class=menu_item>Mission</font></a></li>
  265.             
  266.            </td></tr>
  267.             
  268.           
  269.            <tr><td>
  270.               
  271.                   
  272.                       <li class=small>
  273.                   
  274.               
  275.             
  276.                 <a class=menu_item href="/projects.cgi/web/opencores/media"><font class=menu_item>Media</font></a></li>
  277.             
  278.            </td></tr>
  279.             
  280.           
  281.            <tr><td>
  282.               
  283.                   
  284.                       <li class=small>
  285.                   
  286.               
  287.             
  288.                 <a class=menu_item href="/projects.cgi/web/opencores/tools"><font class=menu_item>Tools</font></a></li>
  289.             
  290.            </td></tr>
  291.             
  292.           
  293.            <tr><td>
  294.               
  295.                   
  296.                       <li class=small>
  297.                   
  298.               
  299.             
  300.                 <a class=menu_item href="/projects.cgi/web/opencores/sponsors"><font class=menu_item>Sponsors</font></a></li>
  301.             
  302.            </td></tr>
  303.             
  304.           
  305.            <tr><td>
  306.               
  307.                   
  308.                       <li class=small>
  309.                   
  310.               
  311.             
  312.                 <a class=menu_item href="/projects.cgi/web/opencores/mirrors"><font class=menu_item>Mirrors</font></a></li>
  313.             
  314.            </td></tr>
  315.             
  316.           
  317.            <tr><td>
  318.               
  319.                   
  320.                       <li class=small>
  321.                   
  322.               
  323.             
  324.                 <a class=menu_item href="/projects.cgi/web/opencores/logos"><font class=menu_item>Logos</font></a></li>
  325.             
  326.            </td></tr>
  327.             
  328.           
  329.            <tr><td>
  330.               
  331.                   
  332.                       <li class=small>
  333.                   
  334.               
  335.             
  336.                 <a class=menu_item href="/projects.cgi/web/opencores/contacts"><font class=menu_item>Contact us</font></a></li>
  337.             
  338.            </td></tr>
  339.             
  340.           
  341.           <tr><td><font size=-2>&nbsp;</font></td></tr>
  342.         
  343.          <tr><td bgcolor="#347FB8">
  344.            <img src="/images/bullet.gif">
  345.          
  346.            <font class=menu_section>Tools</font>
  347.          
  348.          </td></tr>
  349.           
  350.            <tr><td>
  351.               
  352.                   
  353.                       <li class=small>
  354.                   
  355.               
  356.             
  357.                 <font class=menu_item><a href="/search.cgi">Search</a><br><table><tr><form action=/search.cgi/do_search><td><font class=small>&nbsp;&nbsp;</font></td><td><input class=searchfield type=text name=query></td></form></tr></table></font></li>
  358.             
  359.            </td></tr>
  360.             
  361.           
  362.            <tr><td>
  363.               
  364.                   
  365.                       <li class=small>
  366.                   
  367.               
  368.             
  369.                 <a class=menu_item href="/cvsget.shtml"><font class=menu_item>Download Cores (CVSGet)</font></a></li>
  370.             
  371.            </td></tr>
  372.             
  373.           
  374.           <tr><td><font size=-2>&nbsp;</font></td></tr>
  375.         
  376.          <tr><td bgcolor="#347FB8">
  377.            <img src="/images/bullet.gif">
  378.          
  379.            <font class=menu_section>More</font>
  380.          
  381.          </td></tr>
  382.           
  383.            <tr><td>
  384.               
  385.                   
  386.                       <li class=small>
  387.                   
  388.               
  389.             
  390.                 <a class=menu_item href="/projects.cgi/web/wishbone/"><font class=menu_item>Wishbone</font></a></li>
  391.             
  392.            </td></tr>
  393.             
  394.           
  395.            <tr><td>
  396.               
  397.                   
  398.                       <li class=small>
  399.                   
  400.               
  401.             
  402.                 <a class=menu_item href="/projects.cgi/web/perlilog/"><font class=menu_item>Perlilog</font></a></li>
  403.             
  404.            </td></tr>
  405.             
  406.           
  407.            <tr><td>
  408.               
  409.                   
  410.                       <li class=small>
  411.                   
  412.               
  413.             
  414.                 <a class=menu_item href="/projects.cgi/web/edatools/"><font class=menu_item>EDA tools</font></a></li>
  415.             
  416.            </td></tr>
  417.             
  418.           
  419.            <tr><td>
  420.               
  421.                   
  422.                       <li class=small>
  423.                   
  424.               
  425.             
  426.                 <a class=menu_item href="/projects.cgi/web/opentech/"><font class=menu_item>OpenTech CD</font></a></li>
  427.             
  428.            </td></tr>
  429.             
  430.           
  431.           <tr><td><font size=-2>&nbsp;</font></td></tr>
  432.         
  433.         </table>
  434. </td>
  435. <td width=10><img width=10 src="/images/dotty.gif"></td>
  436. <td background="/images/vpd.gif"><img width=1 src="/images/dotty.gif"></td>
  437. <td width=10><img width=10 src="/images/dotty.gif"></td>
  438. <td valign=top>
  439.         
  440.         <table width=100% cellpadding=2 cellspacing=0 border=0>
  441.           <tr><td><img height=2 src="/images/dotty.gif"></td></tr>
  442.         </table>
  443.         
  444. <table width=100% cellspacing=0 cellpadding=0 border=0><tr><td>
  445. <!-- pf_body_start -->
  446.  
  447. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  448. <html>
  449. <head>
  450. <title>pci/rtl/verilog/pci_delayed_sync.v - view - 1.3</title>
  451. <meta name="robots" content="nofollow" />
  452. <meta name="generator" content="FreeBSD-CVSweb 3.0.5" />
  453. <meta http-equiv="Content-Script-Type" content="text/javascript" />
  454. <meta http-equiv="Content-Style-Type" content="text/css" />
  455. <link rel="stylesheet" type="text/css" href="/css/cvsweb.css" />
  456. </head>
  457. <body class="src">
  458. <table class="navigate-header" width="100%" summary="Navigation">
  459.  <tr>
  460.   <td>
  461. <a href="./pci_delayed_sync.v#rev1.3"><img src="/icons/back.gif" alt="[BACK]" border="0" width="20" height="22" /></a><b>Return to <a href="./pci_delayed_sync.v#rev1.3">pci_delayed_sync.v</a> CVS log</b> <img src="/icons/text.gif" alt="[TXT]" border="0" width="20" height="22" /></td>  <td style="text-align: right"><img src="/icons/dir.gif" alt="[DIR]" border="0" width="20" height="22" /> <b>Up to  <a href="/cvsweb.shtml/#dirlist">[Official OpenCores CVS Repository]</a> / <a href="/cvsweb.shtml/pci/#dirlist">pci</a> / <a href="/cvsweb.shtml/pci/rtl/#dirlist">rtl</a> / <a href="/cvsweb.shtml/pci/rtl/verilog/#dirlist">verilog</a></b></td>
  462.  </tr>
  463. </table>
  464. <hr />
  465. <div class="log-markup">
  466. File:&nbsp;
  467.  <a href="/cvsweb.shtml/#dirlist">[Official OpenCores CVS Repository]</a> / <a href="/cvsweb.shtml/pci/#dirlist">pci</a> / <a href="/cvsweb.shtml/pci/rtl/#dirlist">rtl</a> / <a href="/cvsweb.shtml/pci/rtl/verilog/#dirlist">verilog</a> / <a href="/cvsweb.shtml/pci/rtl/verilog/pci_delayed_sync.v">pci_delayed_sync.v</a><br />
  468. <a name="rev1.3"></a><a name="wb2hpi"></a><a name="rel_WB_B3"></a><a name="rel_9"></a><a name="rel_8"></a><a name="rel_7"></a><a name="rel_6"></a><a name="rel_13"></a><a name="rel_12"></a><a name="rel_11"></a><a name="rel_10"></a><a name="asyst_3"></a><a name="asyst_2"></a><a name="HEAD"></a>
  469.  Revision <b>1.3</b>: <a href="/cvsweb.cgi/~checkout~/pci/rtl/verilog/pci_delayed_sync.v?rev=1.3;content-type=text%2Fplain" class="download-link">download</a> - view: <a href="pci_delayed_sync.v?rev=1.3;content-type=text%2Fplain" class="display-link">text</a>, <a href="pci_delayed_sync.v?annotate=1.3">annotated</a> - <a href="pci_delayed_sync.v?r1=1.3#rev1.3">select&nbsp;for&nbsp;diffs</a><br />
  470. <i>Thu Aug 14 13:06:02 2003 UTC</i> (3 years, 9 months ago) by <i>simons</i><br />
  471. Branches: <a href="./pci_delayed_sync.v?only_with_tag=MAIN">MAIN</a><br />
  472. CVS tags: <a href="./pci_delayed_sync.v?only_with_tag=wb2hpi">wb2hpi</a>,
  473. <a href="./pci_delayed_sync.v?only_with_tag=rel_WB_B3">rel_WB_B3</a>,
  474. <a href="./pci_delayed_sync.v?only_with_tag=rel_9">rel_9</a>,
  475. <a href="./pci_delayed_sync.v?only_with_tag=rel_8">rel_8</a>,
  476. <a href="./pci_delayed_sync.v?only_with_tag=rel_7">rel_7</a>,
  477. <a href="./pci_delayed_sync.v?only_with_tag=rel_6">rel_6</a>,
  478. <a href="./pci_delayed_sync.v?only_with_tag=rel_13">rel_13</a>,
  479. <a href="./pci_delayed_sync.v?only_with_tag=rel_12">rel_12</a>,
  480. <a href="./pci_delayed_sync.v?only_with_tag=rel_11">rel_11</a>,
  481. <a href="./pci_delayed_sync.v?only_with_tag=rel_10">rel_10</a>,
  482. <a href="./pci_delayed_sync.v?only_with_tag=asyst_3">asyst_3</a>,
  483. <a href="./pci_delayed_sync.v?only_with_tag=asyst_2">asyst_2</a>,
  484. <a href="./pci_delayed_sync.v?only_with_tag=HEAD">HEAD</a><br />
  485. <pre class="log">
  486. synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.
  487. </pre>
  488. </div>
  489. <hr /><pre>
  490. //////////////////////////////////////////////////////////////////////
  491. ////                                                              ////
  492. ////  File name &quot;delayed_sync.v&quot;                                  ////
  493. ////                                                              ////
  494. ////  This file is part of the &quot;PCI bridge&quot; project               ////
  495. ////  http://www.opencores.org/cores/pci/                         ////
  496. ////                                                              ////
  497. ////  Author(s):                                                  ////
  498. ////      - Miha Dolenc (mihad@opencores.org)                     ////
  499. ////                                                              ////
  500. ////  All additional information is avaliable in the README       ////
  501. ////  file.                                                       ////
  502. ////                                                              ////
  503. ////                                                              ////
  504. //////////////////////////////////////////////////////////////////////
  505. ////                                                              ////
  506. //// Copyright (C) 2001 Miha Dolenc, mihad@opencores.org          ////
  507. ////                                                              ////
  508. //// This source file may be used and distributed without         ////
  509. //// restriction provided that this copyright statement is not    ////
  510. //// removed from the file and that any derivative work contains  ////
  511. //// the original copyright notice and the associated disclaimer. ////
  512. ////                                                              ////
  513. //// This source file is free software; you can redistribute it   ////
  514. //// and/or modify it under the terms of the GNU Lesser General   ////
  515. //// Public License as published by the Free Software Foundation; ////
  516. //// either version 2.1 of the License, or (at your option) any   ////
  517. //// later version.                                               ////
  518. ////                                                              ////
  519. //// This source is distributed in the hope that it will be       ////
  520. //// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
  521. //// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
  522. //// PURPOSE.  See the GNU Lesser General Public License for more ////
  523. //// details.                                                     ////
  524. ////                                                              ////
  525. //// You should have received a copy of the GNU Lesser General    ////
  526. //// Public License along with this source; if not, download it   ////
  527. //// from http://www.opencores.org/lgpl.shtml                     ////
  528. ////                                                              ////
  529. //////////////////////////////////////////////////////////////////////
  530. //
  531. // CVS Revision History
  532. //
  533. // $Log: pci_delayed_sync.v,v $
  534. // Revision 1.3  2003/08/14 13:06:02  simons
  535. // synchronizer_flop replaced with pci_synchronizer_flop, artisan ram instance updated.
  536. //
  537. // Revision 1.2  2003/03/26 13:16:18  mihad
  538. // Added the reset value parameter to the synchronizer flop module.
  539. // Added resets to all synchronizer flop instances.
  540. // Repaired initial sync value in fifos.
  541. //
  542. // Revision 1.1  2003/01/27 16:49:31  mihad
  543. // Changed module and file names. Updated scripts accordingly. FIFO synchronizations changed.
  544. //
  545. // Revision 1.5  2002/09/25 09:54:50  mihad
  546. // Added completion expiration test for WB Slave unit. Changed expiration signalling
  547. //
  548. // Revision 1.4  2002/03/05 11:53:47  mihad
  549. // Added some testcases, removed un-needed fifo signals
  550. //
  551. // Revision 1.3  2002/02/01 15:25:12  mihad
  552. // Repaired a few bugs, updated specification, added test bench files and design document
  553. //
  554. // Revision 1.2  2001/10/05 08:14:28  mihad
  555. // Updated all files with inclusion of timescale file for simulation purposes.
  556. //
  557. // Revision 1.1.1.1  2001/10/02 15:33:46  mihad
  558. // New project directory structure
  559. //
  560. //
  561. // module provides synchronization mechanism between requesting and completing side of the bridge
  562. `include &quot;pci_constants.v&quot;
  563. `include &quot;bus_commands.v&quot;
  564. // synopsys translate_off
  565. `include &quot;timescale.v&quot;
  566. // synopsys translate_on
  567. module pci_delayed_sync
  568. (
  569.     reset_in,
  570.     req_clk_in,
  571.     comp_clk_in,
  572.     req_in,
  573.     comp_in,
  574.     done_in,
  575.     in_progress_in,
  576.     comp_req_pending_out,
  577.     req_req_pending_out,
  578.     req_comp_pending_out,
  579.     comp_comp_pending_out,
  580.     addr_in,
  581.     be_in,
  582.     addr_out,
  583.     be_out,
  584.     we_in,
  585.     we_out,
  586.     bc_in,
  587.     bc_out,
  588.     status_in,
  589.     status_out,
  590.     comp_flush_out,
  591.     burst_in,
  592.     burst_out,
  593.     retry_expired_in
  594. );
  595. // system inputs
  596. input reset_in,         // reset input
  597.       req_clk_in,       // requesting clock input
  598.       comp_clk_in ;     // completing clock input
  599. // request, completion, done and in progress indication inputs
  600. input req_in,           // request qualifier - when 1 it indicates that valid request data is provided on inputs
  601.       comp_in,          // completion qualifier - when 1, completing side indicates that request has completed
  602.       done_in,          // done input - when 1 indicates that requesting side of the bridge has completed a transaction on requesting bus
  603.       in_progress_in ;  // in progress indicator - indicates that current completion is in progress on requesting side of the bridge
  604. // pending indication outputs
  605. output  comp_req_pending_out,   // completion side request output - resynchronized from requesting clock to completing clock
  606.         req_req_pending_out,    // request pending output for requesting side
  607.         req_comp_pending_out,   // completion pending output for requesting side of the bridge - it indicates when completion is ready for completing on requesting bus
  608.         comp_comp_pending_out ; // completion pending output for completing side of the bridge
  609. // additional signals and wires for clock domain passage of signals
  610. reg     comp_req_pending,
  611.         req_req_pending,
  612.         req_comp_pending,
  613.         req_comp_pending_sample,
  614.         comp_comp_pending,
  615.         req_done_reg,
  616.         comp_done_reg_main,
  617.         comp_done_reg_clr,
  618.         req_rty_exp_reg,
  619.         req_rty_exp_clr,
  620.         comp_rty_exp_reg,
  621.         comp_rty_exp_clr ;
  622. wire    sync_comp_req_pending,
  623.         sync_req_comp_pending,
  624.         sync_comp_done,
  625.         sync_req_rty_exp,
  626.         sync_comp_rty_exp_clr ;
  627. // inputs from requesting side - only this side can set address, bus command, byte enables, write enable and burst - outputs are common for both sides
  628. // all signals that identify requests are stored in this module
  629. input [31:0]    addr_in ;   // address bus input
  630. input [3:0]     be_in ;     // byte enable input
  631. input           we_in ;     // write enable input - read/write request indication 1 = write request / 0 = read request
  632. input [3:0]     bc_in ;     // bus command input
  633. input           burst_in ;  // burst indicator    - qualifies operation as burst/single transfer 1 = burst / 0 = single transfer
  634. // common request outputs used both by completing and requesting sides
  635. // this outputs are not resynchronized, since flags determine the request status
  636. output [31:0]   addr_out ;
  637. output [3:0]    be_out ;
  638. output          we_out ;
  639. output [3:0]    bc_out ;
  640. output          burst_out ;
  641. // completion side signals encoded termination status - 0 = normal completion / 1 = error terminated completion
  642. input          status_in ;
  643. output         status_out ;
  644. // input signals that delayed transaction has been retried for max number of times
  645. // on this signal request is ditched, otherwise it would cause a deadlock
  646. // requestor can issue another request and procedure will be repeated
  647. input   retry_expired_in ;
  648. // completion flush output - if in 2^^16 clock cycles transaction is not repeated by requesting agent - flush completion data
  649. output  comp_flush_out ;
  650. // output registers for common signals
  651. reg [31:0]   addr_out ;
  652. reg [3:0]    be_out ;
  653. reg          we_out ;
  654. reg [3:0]    bc_out ;
  655. reg          burst_out ;
  656. // delayed transaction information is stored only when request is issued and request nor completion are pending
  657. wire new_request = req_in &amp;&amp; ~req_comp_pending_out &amp;&amp; ~req_req_pending_out ;
  658. always@(posedge req_clk_in or posedge reset_in)
  659. begin
  660.     if (reset_in)
  661.     begin
  662.         addr_out  &lt;= #`FF_DELAY 32'h0000_0000 ;
  663.         be_out    &lt;= #`FF_DELAY 4'h0 ;
  664.         we_out    &lt;= #`FF_DELAY 1'b0 ;
  665.         bc_out    &lt;= #`FF_DELAY `BC_RESERVED0 ;
  666.         burst_out &lt;= #`FF_DELAY 1'b0 ;
  667.     end
  668.     else
  669.         if (new_request)
  670.         begin
  671.             addr_out  &lt;= #`FF_DELAY addr_in ;
  672.             be_out    &lt;= #`FF_DELAY be_in ;
  673.             we_out    &lt;= #`FF_DELAY we_in ;
  674.             bc_out    &lt;= #`FF_DELAY bc_in ;
  675.             burst_out &lt;= #`FF_DELAY burst_in ;
  676.         end
  677. end
  678. // completion pending cycle counter
  679. reg [16:0] comp_cycle_count ;
  680. /*=================================================================================================================================
  681. Passing of requests between clock domains:
  682. request originates on requesting side. It's then synchronized with two flip-flops to cross to completing clock domain
  683. =================================================================================================================================*/
  684. // main request flip-flop triggered on requesting side's clock
  685. // request is cleared whenever completion or retry expired is signalled from opposite side of the bridge
  686. wire req_req_clear = req_comp_pending || (req_rty_exp_reg &amp;&amp; ~req_rty_exp_clr) ;
  687. always@(posedge req_clk_in or posedge reset_in)
  688. begin
  689.     if ( reset_in )
  690.         req_req_pending &lt;= #`FF_DELAY 1'b0 ;
  691.     else
  692.     if ( req_req_clear )
  693.         req_req_pending &lt;= #`FF_DELAY 1'b0 ;
  694.     else
  695.     if ( req_in )
  696.         req_req_pending &lt;= #`FF_DELAY 1'b1 ;
  697. end
  698. // interemediate stage request synchronization flip - flop - this one is prone to metastability
  699. // and should have setup and hold times disabled during simulation
  700. pci_synchronizer_flop #(1, 0) req_sync
  701. (
  702.     .data_in        (req_req_pending),
  703.     .clk_out        (comp_clk_in),
  704.     .sync_data_out  (sync_comp_req_pending),
  705.     .async_reset    (reset_in)
  706. ) ;
  707. // wire for clearing completion side request flag - whenever completion or retry expired are signalled
  708. wire comp_req_pending_clear = comp_req_pending &amp;&amp; ( comp_in || retry_expired_in) ;
  709. // wire for enabling request flip - flop - it is enabled when completion is not active and done is not active
  710. wire comp_req_pending_ena   = ~comp_comp_pending &amp;&amp; ~comp_done_reg_main &amp;&amp; ~comp_rty_exp_reg ;
  711. // completion side request flip flop - gets a value from intermediate stage sync flip flop
  712. always@(posedge comp_clk_in or posedge reset_in)
  713. begin
  714.     if ( reset_in )
  715.         comp_req_pending &lt;= #`FF_DELAY 1'b0 ;
  716.     else
  717.     if ( comp_req_pending_clear )
  718.         comp_req_pending &lt;= #`FF_DELAY 1'b0 ;
  719.     else
  720.     if ( comp_req_pending_ena )
  721.         comp_req_pending &lt;= #`FF_DELAY sync_comp_req_pending ;
  722. end
  723. // completion side request output assignment - when request ff is set and completion ff is not set
  724. assign comp_req_pending_out = comp_req_pending ;
  725. // requesting side request pending output
  726. assign req_req_pending_out  = req_req_pending ;
  727. /*=================================================================================================================================
  728. Passing of completions between clock domains:
  729. completion originates on completing side. It's then synchronized with two flip-flops to cross to requesting clock domain
  730. =================================================================================================================================*/
  731. // main completion Flip - Flop - triggered by completing side's clock
  732. // completion side completion pending flag is cleared when done flag propagates through clock domains
  733. wire comp_comp_clear = comp_done_reg_main &amp;&amp; ~comp_done_reg_clr ;
  734. always@(posedge comp_clk_in or posedge reset_in)
  735. begin
  736.     if ( reset_in )
  737.         comp_comp_pending &lt;= #`FF_DELAY 1'b0 ;
  738.     else
  739.     if ( comp_comp_clear )
  740.         comp_comp_pending &lt;= #`FF_DELAY 1'b0 ;
  741.     else
  742.     if ( comp_in &amp;&amp; comp_req_pending )
  743.         comp_comp_pending &lt;= #`FF_DELAY 1'b1 ;
  744. end
  745. assign comp_comp_pending_out = comp_comp_pending ;
  746. // interemediate stage completion synchronization flip - flop - this one is prone to metastability
  747. pci_synchronizer_flop #(1, 0) comp_sync
  748. (
  749.     .data_in        (comp_comp_pending),
  750.     .clk_out        (req_clk_in),
  751.     .sync_data_out  (sync_req_comp_pending),
  752.     .async_reset    (reset_in)
  753. ) ;
  754. // request side completion pending flip flop is cleared whenever done is signalled or completion counter expires - 2^^16 clock cycles
  755. wire req_comp_pending_clear = done_in || comp_cycle_count[16];
  756. // request side completion pending flip flop is disabled while done flag is set
  757. wire req_comp_pending_ena   = ~req_done_reg ;
  758. // request side completion flip flop - gets a value from intermediate stage sync flip flop
  759. always@(posedge req_clk_in or posedge reset_in)
  760. begin
  761.     if ( reset_in )
  762.         req_comp_pending &lt;= #`FF_DELAY 1'b0 ;
  763.     else
  764.     if ( req_comp_pending_clear )
  765.         req_comp_pending &lt;= #`FF_DELAY 1'b0 ;
  766.     else
  767.     if ( req_comp_pending_ena )
  768.         req_comp_pending &lt;= #`FF_DELAY sync_req_comp_pending ;
  769. end
  770. // sampling FF - used for sampling incoming completion flag from completing side
  771. always@(posedge req_clk_in or posedge reset_in)
  772. begin
  773.     if ( reset_in )
  774.         req_comp_pending_sample &lt;= #`FF_DELAY 1'b0 ;
  775.     else
  776.         req_comp_pending_sample &lt;= #`FF_DELAY sync_req_comp_pending ;
  777. end
  778. // requesting side completion pending output assignment
  779. assign req_comp_pending_out = req_comp_pending &amp;&amp; ~req_req_pending ;
  780. /*==================================================================================================================================
  781. Passing of delayed transaction done signal between clock domains.
  782. Done is signalled by requesting side of the bridge and is passed to completing side of the bridge
  783. ==================================================================================================================================*/
  784. // main done flip-flop triggered on requesting side's clock
  785. // when completing side removes completion flag, done flag is also removed, so requests can proceede
  786. wire req_done_clear = ~req_comp_pending_sample ;
  787. always@(posedge req_clk_in or posedge reset_in)
  788. begin
  789.     if ( reset_in )
  790.         req_done_reg &lt;= #`FF_DELAY 1'b0 ;
  791.     else
  792.     if ( req_done_clear )
  793.         req_done_reg &lt;= #`FF_DELAY 1'b0 ;
  794.     else
  795.     if ( done_in || comp_cycle_count[16] )
  796.         req_done_reg &lt;= #`FF_DELAY 1'b1 ;
  797. end
  798. pci_synchronizer_flop  #(1, 0) done_sync
  799. (
  800.     .data_in        (req_done_reg),
  801.     .clk_out        (comp_clk_in),
  802.     .sync_data_out  (sync_comp_done),
  803.     .async_reset    (reset_in)
  804. ) ;
  805. always@(posedge comp_clk_in or posedge reset_in)
  806. begin
  807.     if ( reset_in )
  808.         comp_done_reg_main &lt;= #`FF_DELAY 1'b0 ;
  809.     else
  810.         comp_done_reg_main &lt;= #`FF_DELAY sync_comp_done ;
  811. end
  812. always@(posedge comp_clk_in or posedge reset_in)
  813. begin
  814.     if ( reset_in )
  815.         comp_done_reg_clr &lt;= #`FF_DELAY 1'b0 ;
  816.     else
  817.         comp_done_reg_clr &lt;= #`FF_DELAY comp_done_reg_main ;
  818. end
  819. /*=================================================================================================================================
  820. Passing of retry expired signal between clock domains
  821. Retry expiration originates on completing side. It's then synchronized with two flip-flops to cross to requesting clock domain
  822. =================================================================================================================================*/
  823. // main retry expired Flip - Flop - triggered by completing side's clock
  824. wire comp_rty_exp_clear = comp_rty_exp_clr &amp;&amp; comp_rty_exp_reg ;
  825. // retry expired is a special case of transaction removal - retry expired propagates from completing
  826. // clock domain to requesting clock domain to remove all pending requests and than propagates back
  827. // to completing side to qualify valid new requests
  828. always@(posedge comp_clk_in or posedge reset_in)
  829. begin
  830.     if ( reset_in )
  831.         comp_rty_exp_reg &lt;= #`FF_DELAY 1'b0 ;
  832.     else
  833.     if ( comp_rty_exp_clear )
  834.         comp_rty_exp_reg &lt;= #`FF_DELAY 1'b0 ;
  835.     else
  836.     if ( retry_expired_in &amp;&amp; comp_req_pending)
  837.         comp_rty_exp_reg &lt;= #`FF_DELAY 1'b1 ;
  838. end
  839. // interemediate stage retry expired synchronization flip - flop - this one is prone to metastability
  840. pci_synchronizer_flop #(1, 0) rty_exp_sync
  841. (
  842.     .data_in        (comp_rty_exp_reg),
  843.     .clk_out        (req_clk_in),
  844.     .sync_data_out  (sync_req_rty_exp),
  845.     .async_reset    (reset_in)
  846. ) ;
  847. // request retry expired flip flop - gets a value from intermediate stage sync flip flop
  848. always@(posedge req_clk_in or posedge reset_in)
  849. begin
  850.     if ( reset_in )
  851.         req_rty_exp_reg &lt;= #`FF_DELAY 1'b0 ;
  852.     else
  853.         req_rty_exp_reg &lt;= #`FF_DELAY sync_req_rty_exp ;
  854. end
  855. always@(posedge req_clk_in or posedge reset_in)
  856. begin
  857.     if ( reset_in )
  858.         req_rty_exp_clr &lt;= #`FF_DELAY 1'b0 ;
  859.     else
  860.         req_rty_exp_clr &lt;= #`FF_DELAY req_rty_exp_reg ;
  861. end
  862. pci_synchronizer_flop #(1, 0) rty_exp_back_prop_sync
  863. (
  864.     .data_in        (req_rty_exp_reg &amp;&amp; req_rty_exp_clr),
  865.     .clk_out        (comp_clk_in),
  866.     .sync_data_out  (sync_comp_rty_exp_clr),
  867.     .async_reset    (reset_in)
  868. ) ;
  869. always@(posedge comp_clk_in or posedge reset_in)
  870. begin
  871.     if ( reset_in )
  872.         comp_rty_exp_clr &lt;= #`FF_DELAY 1'b0 ;
  873.     else
  874.         comp_rty_exp_clr &lt;= #`FF_DELAY sync_comp_rty_exp_clr ;
  875. end
  876. // completion status flip flop - if 0 when completion is signalled it's finished OK otherwise it means error
  877. reg status_out ;
  878. always@(posedge comp_clk_in or posedge reset_in)
  879. begin
  880.     if (reset_in)
  881.         status_out &lt;= #`FF_DELAY 1'b0 ;
  882.     else
  883.     if (comp_in &amp;&amp; comp_req_pending)
  884.         status_out &lt;= #`FF_DELAY status_in ;
  885. end
  886. // clocks counter - it counts how many clock cycles completion is present without beeing repeated
  887. // if it counts to 2^^16 cycles the completion must be ditched
  888. // wire for clearing this counter
  889. wire clear_count = in_progress_in || ~req_comp_pending_out || comp_cycle_count[16] ;
  890. always@(posedge req_clk_in or posedge reset_in)
  891. begin
  892.     if (reset_in)
  893.         comp_cycle_count &lt;= #`FF_DELAY 17'h0_0000 ;
  894.     else
  895.     if (clear_count)
  896.         comp_cycle_count &lt;= #`FF_DELAY 17'h0_0000 ;
  897.     else
  898.         comp_cycle_count &lt;= #`FF_DELAY comp_cycle_count + 1'b1 ;
  899. end
  900. // completion flush output - used for flushing fifos when counter expires
  901. // if counter doesn't expire, fifo flush is up to WISHBONE slave or PCI target state machines
  902. reg comp_flush_out ;
  903. always@(posedge req_clk_in or posedge reset_in)
  904. begin
  905.     if (reset_in)
  906.         comp_flush_out &lt;= #`FF_DELAY 1'b0 ;
  907.     else
  908.         comp_flush_out &lt;= #`FF_DELAY comp_cycle_count[16] ;
  909. end
  910. endmodule //delayed_sync
  911. </pre>
  912. <hr />
  913. <address><span style="font-size: smaller">FreeBSD-CVSweb &lt;<a href="mailto:freebsd-cvsweb@FreeBSD.org">freebsd-cvsweb@FreeBSD.org</a>&gt;</span></address>
  914. </body>
  915. </html>
  916. <!-- pf_body_end -->
  917. </td>
  918. <td><img width=15 src="/images/dotty.gif"></td>
  919. </tr></table>
  920. <xcenter>
  921. <p>
  922. <table width=100% cellpadding=0 cellspacing=0 border=0>
  923.       <tr><td align=right valign=bottom><a title='Top' href='#top'><img border=0 alt='Top' src='/images/hr_up.gif'></a></td></tr>
  924.       <tr><td background='/images/hpd.gif'><img height=1 border=0 src='/images/dotty.gif'></td></tr><tr><td height=4><img height=4 src='/images/dotty.gif'></td></tr></table>
  925. &nbsp;
  926. <br>
  927. <!--
  928. <table border=0 cellpadding=0 cellspacing=1 bgcolor=#ffffff><tr><td>
  929. <table cellpadding=0 cellspacing=0 border=0 bgcolor=#ffffff><tr><td>
  930. //-->
  931. <script type="text/javascript"><!--
  932. google_ad_client = "pub-9285819221080148";
  933. google_alternate_color = "FFFFFF";
  934. google_ad_width = 728;
  935. google_ad_height = 90;
  936. google_ad_format = "728x90_as";
  937. google_ad_type = "text_image";
  938. google_ad_channel ="3034172958";
  939. google_color_border = "ffffff";
  940. google_color_bg = "ffffff";
  941. google_color_link = "444488";
  942. google_color_url = "b00000";
  943. google_color_text = "666666";
  944. //--></script>
  945. <script type="text/javascript"
  946.   src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
  947. </script>
  948. <!--
  949. </td></tr></table>
  950. </td></tr></table>
  951. //-->
  952. </center>
  953. <img border=0 src="/images/dotty.gif" height=1 width=400>
  954. <img border=0 src="/images/dotty.gif" height=1 width=30>
  955. <img border=0 src="/images/dotty.gif" height=1 width=30>
  956. <img border=0 src="/images/dotty.gif" height=1 width=30>
  957. <img border=0 src="/images/dotty.gif" height=1 width=30>
  958. <img border=0 src="/images/dotty.gif" height=1 width=30>
  959. <img border=0 src="/images/dotty.gif" height=1 width=30>
  960. <img border=0 src="/images/dotty.gif" height=1 width=30>
  961. <img border=0 src="/images/dotty.gif" height=1 width=30>
  962. <img border=0 src="/images/dotty.gif" height=1 width=30>
  963. <img border=0 src="/images/dotty.gif" height=1 width=30>
  964. <img border=0 src="/images/dotty.gif" height=1 width=30>
  965. <img border=0 src="/images/dotty.gif" height=1 width=30>
  966. <img border=0 src="/images/dotty.gif" height=1 width=30>
  967. <img border=0 src="/images/dotty.gif" height=1 width=30>
  968. <img border=0 src="/images/dotty.gif" height=1 width=30>
  969. <img border=0 src="/images/dotty.gif" height=1 width=30>
  970. <img border=0 src="/images/dotty.gif" height=1 width=30>
  971. <img border=0 src="/images/dotty.gif" height=1 width=30>
  972. <img border=0 src="/images/dotty.gif" height=1 width=30>
  973. <img border=0 src="/images/dotty.gif" height=1 width=30>
  974. <img border=0 src="/images/dotty.gif" height=1 width=30>
  975. <img border=0 src="/images/dotty.gif" height=1 width=30>
  976. <img border=0 src="/images/dotty.gif" height=1 width=30>
  977. <img border=0 src="/images/dotty.gif" height=1 width=30>
  978. </td></tr>
  979. </table>
  980. &nbsp;
  981. </td></tr>
  982. <tr bgcolor=#000000><td><img height=1 src="/images/dotty.gif"></td></tr>
  983. </table>
  984. <table background="/images/topbg.gif" width=100% cellpadding=0 cellspacing=0 border=0 bgcolor=#aaddff>
  985. <tr><td align=right>
  986. Copyright (c) 1999-2007 OPENCORES.ORG. All rights reserved. &nbsp;
  987. </td></tr>
  988. <tr><td>
  989. &nbsp;
  990. </td></tr>
  991. </table>
  992. </td>
  993. <td width=1 bgcolor=#000000><img width=1 src="/images/dotty.gif"></td>
  994. <td width=1 bgcolor=#f0f0c8><img width=1 src="/images/dotty.gif"></td>
  995. </tr></table>
  996. </center>
  997. <!-- pf_footer_start -->
  998.   </body>
  999. </html>
  1000. <!-- pf_footer_end -->