Chamando um Módulo em Verilog

Sep 28 2020

Acabei de começar a aprender programação de hardware usando Verilog e me sinto perdido porque não consigo entender o que os erros significam. Aqui, estou chamando o móduloreg31

module nbit_register(input clk, input [31:0]in, input reset, input L,
input load, input shift, output reg[31:0] out);
always@(*)begin
if(load==1) 

  reg32 add(clk, in, reset,L, out);
  
   else
        out={ in[30:0],1'b0};
   end
    
   endmodule

Mas, recebo este erro:

erro: erro de sintaxe próximo a "reg32"

É assim que o módulo se parece

module reg32(
    input clk,
    input [31:0] in,
    input rst,
    input  L,
    output  [31:0] out
    );

Alguém pode apontar o erro aqui?

Respostas

1 Light Sep 28 2020 at 15:34

Porque você deseja "selecionar" e fazer o módulo reg32"funcionar" em uma iframificação.

Imagem de uma placa de PCB de telefone celular. A unidade de alto-falante está lá fora, mesmo se estiver no modo silencioso. Portanto, instancie reg32separadamente e use sua própria lógica para lidar com as redes conectadas reg32.

wire [31:0] add_out;
reg32 add(clk, in, reset,L, add_out); // here the 4 inputs are connected to top inputs
                                      // directly. but if you want, you can use 'load'
                                      // to control them similar to the code below.

always@(*)begin
  if(load==1)
    out = add_out;
  else
    out = { in[30:0],1'b0};
  end

Se você está trabalhando principalmente com software, precisa estar familiarizado com o pensamento de uma forma de "hardware".