带2个复位的D触发器:综合错误

克莱德·范迪克(Clidre Vandijk)

我正在合成一个数字模块,我需要一个具有2个异步复位的D型触发器。(原因是我将使用可用时钟来驱动一次复位,而我将使用第二次复位来复位数字模块的所有寄存器)我准备了以下代码:

module dff_2rst(q,qn,clk,d, rst,clear);
    input  clk,d, rst, clear ;
    output q,qn;
    reg q,qn;
    always @(posedge clk or posedge rst or posedge clear)    //asynchronous reset    
    begin 
    (* full_case, parallel_case *)  
    case({rst, clear})  
        2'b00: begin 
                q <= d; 
                qn<=~d;
               end
        default: begin     
                    q <= 1'b0;  
                    qn <=1'b1;
                end 
    endcase
    end



endmodule     

但我收到以下错误:

The statements in this 'always' block are outside the scope of the synthesis policy. Only an 'if' statement is allowed at the top level in this always block. (ELAB-302)
*** Presto compilation terminated with 1 errors. ***

我也尝试过

if(~rst & ~clear)

但我也有错误

您有更正我代码的想法吗?非常感谢!

摩根

在Verilog RTL中编写异步复位,设置(清除)触发器的标准方法是:

always @(posedge clk or posedge rst or posedge clear) begin
  if (rst) begin
    // Aysnc Reset
    q <= 'b0 ;
  end
  else if (clear) begin
    // Async Clear 
    q <= 'b0 ;
  end
  else begin
    // Sync logic here
    q <= d;
  end
end

assign qn = ~n;

qn的小技巧要求qn是导线,当前定义为reg。reg q,qn;应该只是reg q;

同样对于更干净的代码,新的标头类型也更干净,并且避免重复:

module dff_2rst(
    input      clk,
    input      d,
    input      rst,
    input      clear,
    output reg q,
    output     qn );

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带2个复位的D触发器:综合错误

来自分类Dev

使用D触发器,使能和异步复位的4位寄存器

来自分类Dev

带功能的触发器上的错误1064

来自分类Dev

2个触发器同时启动

来自分类Dev

带触发器的增量跟踪

来自分类Dev

使用带参数的SQLite触发器

来自分类Dev

MySQL触发器带增量部分

来自分类Dev

带触发器的平台上

来自分类Dev

错误创建触发器

来自分类Dev

错误创建触发器

来自分类Dev

Oracle - 触发器错误

来自分类Dev

统一OnTriggerStay2D()两个触发器

来自分类Dev

带参数的Azure函数上的两个计时器触发器

来自分类Dev

Verilog具有同步复位(R)的边沿触发T触发器的结构描述

来自分类Dev

Postgres触发器-使用2个不同的表

来自分类Dev

如何使用触发器连接 2 个表?

来自分类Dev

用触发器更新 2 个表

来自分类Dev

如何通过编程(带触发器)active()修复Google工作表中最后一个被占用的行的错误?

来自分类Dev

重叠的Collider2D触发器

来自分类Dev

带JK触发器的Verilog中的分频器

来自分类Dev

MySQL 错误 1442 使用 2 个触发器更新 2 个不同数据库上的 2 个表的字段

来自分类Dev

插入MySQL触发器(错误)

来自分类Dev

放下触发器显示错误

来自分类Dev

触发器的Postgresql语法错误

来自分类Dev

创建触发器mysql错误

来自分类Dev

MySQL触发器出现错误

来自分类Dev

带有触发器的mysql错误

来自分类Dev

SQL触发器给出错误

来自分类Dev

SQL触发器导致错误1054