Это мой первый раз, когда я программирую на verilog hdl, и мне сложно понять, что не так с моим кодом. Мне нужно разработать простой ALU в поведенческом коде.
Пока что я создал модуль вычитания и сумматора (мне нужно добавить больше модулей, но я бы хотел, чтобы они работали в модуле ALU, прежде чем я добавлю другие).
У меня есть следующие модули в отдельных файлах .v в одном проекте (уверен, что это поведенческий?):
module adder3bit( sum, co, a, b);
parameter n = 2;
output reg [n:0] sum;
output reg co;
input [n:0] a;
input [n:0] b;
always @(a, b)
{co, sum} = a + b;
endmodule
module subtract3bit(diff, bo, a, b);
parameter n = 2;
output reg [n:0] diff;
output reg bo;
input [n:0] a;
input [n:0] b;
always @(a, b)
{bo, diff} = a - b;
endmodule
Я проверил их и убедился, что они работают.
Теперь пытаюсь вызвать их в основном модуле ALU:
module alu( out, overflow, a, b,sel);
input [2:0] a, b;
input sel;
output [2:0] out;
output overflow;
always @(a,b,sel)
begin
if(sel=='b0)
adder3bit A1(out,overflow,a,b);
if(sel=='b1)
subtract3bit S1( out, overflow, a, b);
end
endmodule
Мой синтаксис может быть неправильным, но он показывает ошибки. Я просто очень плохо знаком с Verilog. Я чувствую, что впервые почувствовал, изучая C. Помощь будет очень признательна.
Я знаю, что он правильно вызывает модули, но я думаю, что это как-то связано с операторами if.
Спасибо, надеюсь узнать что-то новое!