【问题标题】:Design Ring Oscillator using Quartus 2使用 Quartus 2 设计环形振荡器
【发布时间】:2018-09-04 10:05:12
【问题描述】:

我设计了一个环形振荡器,使用 Alter 的 Quartus 2 在 FPGA 上实现。我想告诉该工具不要优化环形振荡器。为此,我需要一个用于我的 FPGA (Altera DE2-07) 的综合工具。你能告诉我怎样才能防止逻辑优化吗?

谢谢。

module ringOscitry (
   en,
   w1,
   w2,
   w3,
   w4
);

input en;
output w1,w2,w3,w4;  //RTL

assign w4 = en & w3;
assign w1 = ~ w4;
assign w2 = ~ w1;
assign w3 = ~ w2;

endmodule



module ringosi(enable, w1, w2, w3, w4);
    input enable;
    output w1, w2, w3, w4;

    and u1(w4, enable, w3);
    not #5 u2(w1, w4); //Gate_level
    not #5 u3(w2, w1);
    not #5 u4(w3, w2);
endmodule



module top(en,w1,w2,w3,w4);
input en;
output w1,w2,w3,w4;
ringOscitry  c1 (en, w1, w2, w3, w4);
ringosi  c2 (enable, w1,w2, w3,w4);

endmodule 

enter image description here

【问题讨论】:

  • Generating a reset signal的可能重复
  • 也许您可以发布您的代码,以便我们查看它并了解为什么首先会发生优化。
  • @RichMaes 我已经为您的详细信息发布了电路图和verilog代码,在此先感谢

标签: verilog fpga quartus


【解决方案1】:

所以环形振荡器的设计无法承受,我建议以下相对于防止优化。

在您的 RTL 内部,

(* altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON;}  *)
output reg w1;
(* altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON;}  *)
output reg w2;
(* altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON;}  *)
output reg w3;
(* altera_attribute = {"-name SYNCHRONIZER_IDENTIFICATION FORCED_IF_ASYNCHRONOUS; -name DONT_MERGE_REGISTER ON; -name PRESERVE_REGISTER ON;}  *)
output reg w4;

然后将您的组合逻辑重新编写成这样。这段代码让我畏缩......但我想你知道你在做什么相对于这个振荡器。我相信上面的指令会阻止 w1-w4 的优化。祝你好运。

always @ (*)
begin
    w4 <= en & w3;
    w3 <= ~w4;
    w2 <= ~w1;
    w1 <= ~w1;
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    相关资源
    最近更新 更多