module adder6(
output[5:0] sum,
output c_out,
input[5:0] a, b,
input c_in);
wire [1:0] c_o;
adder4 a(.sum([3:0]),c_o[0],.a(a[3:0]), .b(b[3:0),c_in); //4-bits adder
full_adder fa1(sum[4],c_o[1],a[4],b[4],c_o[0]); //1-bit adder
full_adder fa2(sum[5],c_out,a[5],b[5],c_o[1]); //1-bit adder
endmodule
module adder4(
output[3:0] sum,
output c_out, // carry out
input[3:0] a, b, // operands
input c_in); // carry in
wire [2:0] c_o;
full_adder fa1(sum[0],c_o[0],a[0],b[0],c_in);
full_adder fa2(sum[1],c_o[1],a[1],b[1],c_o[0]);
full_adder fa3(sum[2],c_o[2],a[2],b[2],c_o[1]);
full_adder fa4(sum[3],c_out,a[3],b[3],c_o[2]);
endmodule
module full_adder(
output sum,
output c_out, // carry out
input a,
input b,
input c_in); // carry in
wire sum1;
wire c_in1;
wire c_out2;
half_adder ha1(sum1,c_in1,a,b);
half_adder ha2(sum,c_out2,sum1,c_in);
or(c_out,c_out2,c_in1);
endmodule
module half_adder(
output sum,
output c_out, // carry out
input a,
input b);
assign sum=a^b;
assign c_out=a&&b;
endmodule
Я должен сделать 6-битный сумматор из 4-битного сумматора и двух полных сумматоров. Я уверен, что проблема в том, что проблема в модуле adder6, так как я уже протестировал 4-разрядный сумматор отдельно, и он работает. Но я не могу найти ошибку. Я не уверен, если я сделал правильные соединения в adder4 функции, которые я использовал в adder6 модуля. (Обновление 1):6-битный полный сумматор возвращается с ошибкой
module adder6_test;
// Inputs
reg [5:0] a;
reg [5:0] b;
// Outputs
wire [6:0] sum;
// Instantiate the Unit Under Test (UUT)
adder6 uut (
.sum(sum),
.a(a),
.b(b)
);
initial begin
// Initialize Inputs
a = 0;
b = 0;
// Wait 100 ns for global reset to finish
#100;
// Add stimulus here
a = 50;
b = 14;
#10;
a = 2;
b = 33;
#10;
a = 63;
b = 63;
end
endmodule
(обновление 2): Ошибка: ОШИБКА: HDLCompiler: 806 - "C: /Users/Iulia/Downloads/lab1_skel/ex4_skel/adder6.v" Строка 10 : Синтаксическая ошибка около ")".
// Verilog Test Fixture Template
`timescale 1 ns/1 ps
module TEST_gate;
reg <signal1>;
reg [2:0] <signal2>;
wire [3:0] <signal3>;
wire <signal4>;
<module_name> <instance_name> (
<port1>,
<port2>
);
integer <name1>;
integer <name2>;
// The following code initializes the Global Set Reset (GSR) and Global Three-State (GTS) nets
// Refer to the Synthesis and Simulation Design Guide for more information on this process
reg GSR;
assign glbl.GSR = GSR;
reg GTS;
assign glbl.GTS = GTS;
initial begin
GSR = 1;
GTS = 0; // GTS is not activated by default
#100; // GSR is set for 100 ns
GSR = 0;
end
// Initialize Inputs
`define auto_init
`ifdef auto_init
initial begin
end
`endif
endmodule
Теперь я получаю эти ошибки: ОШИБКА: HDLCompiler: 806 - "C: /Users/Iulia/Downloads/lab1_skel/ex4_skel/adder6_test.v" Строка 6: Синтаксическая ошибка возле "<".
ОШИБКА: HDLCompiler: 806 - «C: /Users/Iulia/Downloads/lab1_skel/ex4_skel/adder6_test.v» Строка 7: Синтаксическая ошибка около «<».
ОШИБКА: HDLCompiler: 806 - "C: /Users/Iulia/Downloads/lab1_skel/ex4_skel/adder6_test.v" Строка 8: Синтаксическая ошибка около "<".
(Update 3) Я модифицировал модуль adder6 и мне удалось избавиться от ошибок. Я использовал 7-битную сумму, и я устранил перенос. Но теперь он не вычисляет сумму. При а = 63 и B = 63 сумма X. Это новый модуль adder6:
module adder6(
output[6:0] sum,
input[5:0] a,
input[5:0] b);
wire c_out0;
wire c_out1;
adder4 add4(sum[3:0],c_out0,a[3:0],b[3:0],c_in);
full_adder fa3(sum[4],c_out1,a[4],b[4],c_out0);
full_adder fa4(sum[5],sum[6],a[5],b[5],c_out1);
endmodule
Было бы полезно, если вы пишете, что именно ваша проблема (т.е. что вы имеете в виду под «возвращать ошибки»?). – Qiu
@toolic, да, это мой код, все ошибки, которые я получаю, я уверен, что это из-за синтаксиса, который я использовал для adder4 ... Я не понимаю, почему я все еще получаю их. В случае, если вы забыли: D вы помогли мне вчера сделать 4-битный сумматор, я получил некоторые неправильные результаты, пока вы не заметили, что у меня было два выхода. –
@IuliaDobra: вы ** не можете ** использовать '<' в качестве 1-го символа имени вашего сигнала. – Qiu