【问题标题】:Verilog Error: output or inout port "Q" must be connected to a structural net expressionVerilog 错误:输出或输入端口“Q”必须连接到结构网络表达式
【发布时间】:2014-07-21 02:03:13
【问题描述】:

我不断收到错误每次我尝试编译我不知道为什么。任何人都可以帮忙吗?我是新来的Verilog。 P>

module D_FF(Clk, D, Reset_n, Q);

    input D, Clk, Reset_n;
    output Q;
    reg Q;

    lab4_GDL f1(.Clk(~Clk), .D(D), .Q(Qm));

    lab4_GDL f2(.Clk(Clk), .D(Qm), .Q(Q));

    always @(posedge Clk, negedge Reset_n)
    begin
        if (Reset_n == 0)
            Q <= 0;
        else
            Q <= D;

    end
endmodule

编辑:这是什么问题问我们做的: P>

在此部分中,将实现对AlteraDE2板上的存储器/寄存器电路。该电路具有以下规格:

  1. 在DE2板上开关SW15-0的当前值应始终在四个七段显示器HEX3-0十六进制显示。电路的这一部分将是组合逻辑。

  2. 使用KEY0作为低电平有效的异步复位和KEY1作为时钟输入,则应该能够将值存储在一个SW15-0in 16位寄存器。寄存器应该是采用嵌入式d触发器在Altera的FPGA 16位正边沿触发的寄存器。 您可以实例化d触发器或写你的登记行为的Verilog模型。该寄存器的内容应始终在四个七段显示器HEX7-4显示。

写的Verilog文件,提供必要的功能。使用KEY0作为低电平有效的异步复位,和利用KEY1作为时钟输入。您应该能够从过去的实验室重新使用十六进制到7段显示模块。当按下复位HEX7-4将显示全零。

这最后的实验室,它指太: em>的 STRONG> P>

module updown (SW, KEY, LEDR, LEDG, GPIO_0, HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7);
parameter n=32;     // number of bits in updown counter
input [0:0] SW;     // Updown switch 1=up, 0=down
input [0:0] KEY;    // KEY[1] = Clock, KEY[0] = Reset_n
input [0:0] GPIO_0; 
output [0:6] HEX0, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7;
output [n-1:0] LEDR;    // Display binary count (active high) on Red LEDs
output [1:0] LEDG;  // Display Clock on LEDG[1], Reset_n on LEDG[0]
wire Clock, Reset_n, Updown;
reg [n-1:0] Count;

assign Clock = GPIO_0[0];
assign Reset_n = KEY[0];
assign Updown = SW[0];
assign LEDR = Count;
assign LEDG[1:0] = {Clock, Reset_n};

always @(posedge Clk, negedge Reset_n) //clock = Clk
    if (Reset_n == 0)       // active-low asynchronous reset
        Q <= 0;
    else        
        Q <= D; 

我lab4_GDL如下: EM> 强>

// A gated RS latch
module lab4_GDL(Clk, D, Q);
    input Clk, D;
    output Q;

    wire R_g, S_g, Qa, Qb /* synthesis keep */;
    assign R = ~D;
    assign R_g = ~(R & Clk);
    assign S_g = ~(D & Clk);
    assign Qb = ~(R_g & Qa);
    assign Qa = ~(S_g & Qb);

    assign Q = Qa;

endmodule 

【问题讨论】:

    标签: verilog


    【解决方案1】:

    没有看到lab4_GDL的代码,我的猜测是lab4_GDL模块的Q端口是一个输出端口。您不应将输出连接到上层模块中的reg

    【讨论】:

      【解决方案2】:

      例如,lab4_GDL 输出端口 Q 必须连接到 wire,但永远不能连接到 reg 类型。

      之后,如果您想将其输出值存储在某个寄存器中,您必须在时钟always 块内将Q 连接的wire 中的目标reg 归因。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多