将struct转换为逻辑

时间:2014-05-28 00:19:13

标签: verilog system-verilog

这与我以前的question有关。请考虑以下模块声明:

module DFF(d, q, CLK, RESET);
 parameter W = 2;
 input  [W-1:0] d;                      
 input  CLK;                                
 input  RESET;      
 output logic [W-1:0]   q; 

//....
endmodule

在d和q是struct类型的情况下实例化它的正确方法是什么?这是我的结构类型:

typedef struct { logic s1; logic s2} T_STATE;

我想为T_STATE变量类型实例化DFF:

T_STATE d, q;
DFF dff_inst (.d(d), .q(q), .CLK(CLK), .RESET(RESET));

我未能成功尝试以下事项:

typedef logic [$bits(T_STATE) - 1 : 0] T_STATE_LOGIC; 
DFF dff_inst (.d(T_STATE_LOGIC'(d)), .q(T_STATE_LOGIC'(q)), .CLK(CLK), .RESET(RESET));

DFF dff_inst (.d({d}), .q({q}), .CLK(CLK), .RESET(RESET));

我需要代码可以合成。

1 个答案:

答案 0 :(得分:4)

使其成为打包位的结构。

变化:

typedef struct { logic s1; logic s2} T_STATE;

为:

typedef struct packed { logic s1; logic s2;} T_STATE;

您的DDF可以实例化为:

DFF dff_inst (.d(d), .q(q), .CLK(CLK), .RESET(RESET));

注意:您在结构定义中缺少s2的分号。