这是我的verilog代码,我不断收到错误,我必须将输出(s和carry)连接到结构网表达式。这是代码:
module p2(SW,KEY0,KEY1,LEDR,HEX0,HEX1,HEX2);
input [7:0] SW;
input [7:0] LEDR;
input KEY1,KEY0;
output[6:0] HEX0,HEX1,HEX2;
reg[7:0] s;
reg carry;
accumulator acm (SW[7:0],s,carry,KEY0,KEY1);
endmodule
module accumulator (A, accum,overflow, clk, clr);
input [7:0] A;
input clk, clr;
output [7:0] accum;
output reg overflow;
reg [7:0] accum;
always@(clk) begin
if(clk) begin
{overflow,accum} <= accum + A;
end
else if(~clr) begin
accum = 8'b00000000;
end
end
endmodule
答案 0 :(得分:2)
你的编译器可能会说:
输出或输入端口“accum”/“overflow”必须连接到结构网表达式
这意味着s
和carry
都应该定义为电线,而不是regs。
顺便说一下,我建议你稍微更改accumulator
代码:
always@(posedge clk or negedge clr) begin
if(~clr) begin
accum <= 'b0;
overflow <= 'b0;
end else begin
{overflow,accum} <= accum + A;
end
end
@Filipe:可以定义没有驱动程序的输出端口。但是在这种情况下(就像这里),所有逻辑都可能被合成,因为根据每个输入信号不会有输出。