本文介绍了在Verilog中未解析对';FULLIDAL';的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在尝试运行模拟时遇到一些问题。在我的第三个模块中,我的前两个模块的实例似乎有问题。代码编译正常,但在尝试运行模拟时遇到问题。
我不确定问题出在我的代码中还是我的测试工作台中。
module fulladder ( input [15:0] x, input [15:0] y, output [15:0] O ); assign O = y + x; endmodule module shifter ( input [15:0] in, input [2:0] N, output [15:0] O ); reg [7:0] out_reg; assign O = out_reg; always @(N or in) begin case (N) 7 : out_reg <= { in[7:0],7'b0}; 6 : out_reg <= { in[7:0],6'b0}; 5 : out_reg <= { in[7:0],5'b0}; 4 : out_reg <= { in[7:0],4'b0}; 3 : out_reg <= { in[7:0],3'b0}; 2 : out_reg <= { in[7:0],2'b0}; 1 : out_reg <= { in[7:0],1'b0}; 0 : out_reg <= in[7:0]; endcase end endmodule module my_multiplier(Rst, Ld, clk, A, B, O); input clk; input [7:0]A, B; input Rst, Ld; output [15:0] O; reg Done; reg [15:0] Otemp; reg [15:0] O; reg [7:0] Atemp; reg [1:0] state; reg [1:0] C; parameter S0 = 2'b00, S1 = 2'b01, S2 = 2'b10, S3 = 2'b11; always @(posedge clk or posedge Rst) begin case(state) S0: begin Done <= 0; if (Ld == 1) begin C <= 0; Atemp <= A; state <= S1; end else state <= S0; end S1: if (B[C] == 1) begin shifter ( A, C, Atemp); O <= Otemp; C <= C + 1; state <= S2; end else begin Atemp <= 0; O <= Otemp; C <= C + 1; state <= S2; end S2: begin O <= Otemp; if (C == 3) state <= S3; else state <= S2; end S3: begin Done <= 1; state <= S0; end default state <= S0; endcase fulladder (Atemp, O, Otemp); end endmodule module my_multiplier_tb; reg clk_tb; reg [7:0]A_tb, B_tb; reg Rst_tb, Ld_tb; wire [15:0] O_tb; my_multiplier dut( Rst_tb, Ld_tb, clk_tb, A_tb, B_tb, O_tb ); always #5 clk_tb = ~clk_tb; initial begin A_tb = 8'd8; B_tb = 8'd7; #15 Ld_tb = 1; // set Load to begin multiplication #10 Ld_tb = 0; // wait 1 clock cycle #300 $monitor($time, " A=%d, B=%d, O=%d", A_tb, B_tb, O_tb); $finish; end endmodule 推荐答案问题在my_multiplier模块中,您有多个语法错误。如果您在edaplayground 上注册了一个免费帐户并在那里发布了您的代码,您可能会在那里看到更多有用的编译错误。
不能将模块实例放置在always块中。这两行必须移到always:之外 fulladder (Atemp, O, Otemp); shifter ( A, C, Atemp);完成后,需要添加实例名称,如下面的i0和i1:
fulladder i0 (Atemp, O, Otemp); shifter i1 ( A, C, Atemp);更多推荐
在Verilog中未解析对';FULLIDAL';的引用
发布评论