浏览代码

synchro: allow synchronizer to use I/O input registers

Using I/O input registers improves skew, possibly at the expense of
metastability, but the latter can usually be dealt with by adding
another synchronizer stage if necessary. Do allow overriding this
option, however.
H. Peter Anvin 3 年之前
父节点
当前提交
e170347f76
共有 5 个文件被更改,包括 8 次插入1 次删除
  1. 二进制
      fpga/output_files/max80.jbc
  2. 二进制
      fpga/output_files/max80.jic
  3. 二进制
      fpga/output_files/max80.pof
  4. 二进制
      fpga/output_files/max80.sof
  5. 8 1
      fpga/synchro.sv

二进制
fpga/output_files/max80.jbc


二进制
fpga/output_files/max80.jic


二进制
fpga/output_files/max80.pof


二进制
fpga/output_files/max80.sof


+ 8 - 1
fpga/synchro.sv

@@ -9,7 +9,10 @@
 // them into a synchronizer chain. No inferring RAMs or anything like that,
 // and pack them close together.
 //
-module synchronizer #(parameter width = 1, parameter stages = 2)
+module synchronizer
+  #(parameter width = 1,
+    parameter stages = 2,
+    parameter ioregs = 1)
    (
     input rst_n,
     input clk,
@@ -26,6 +29,8 @@ module synchronizer #(parameter width = 1, parameter stages = 2)
 `ifdef ALTERA_RESERVED_QIS
    (*
     syn_preserve = 1,
+    dont_replicate = 1,
+    useioff = ~ioregs,
     altera_attribute =
 	{"-name SYNCHRONIZER_IDENTIFICATION FORCED ; ",
 	 "-name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ", tostr(stages-1)}
@@ -36,6 +41,8 @@ module synchronizer #(parameter width = 1, parameter stages = 2)
 `ifdef ALTERA_RESERVED_QIS
    (*
     syn_preserve = 1,
+    dont_replicate = 1,
+    useioff = 1,
     altera_attribute =
 	{"-name SYNCHRONIZER_IDENTIFICATION AUTO ; ",
 	 "-name SYNCHRONIZATION_REGISTER_CHAIN_LENGTH ", tostr(stages-1)}