У меня возникли проблемы с созданием экземпляра модуля в verilog. Я использую платформу Altera Quartus для разработки и моделирования кода verilog.Создание экземпляра модуля Verilog
Я следовал этому примеру (среди нескольких других): http://www.asic-world.com/verilog/verilog_one_day4.html
Я написал модуль (максимум), который находит максимум между двумя подписанными входами.
Другой модуль, который я разрабатываю, представляет собой систолический массив для выравнивания генетической последовательности. Детали не важны, однако, когда я пытаюсь создать экземпляр максимального модуля, я получаю сообщение об ошибке.
Это мой код до сих пор:
module maximum (a, b, out);
input signed [15:0] a;
input signed [15:0] b;
output reg signed [15:0] out;
always @* begin
if (a>b)
assign out = a;
else
assign out = b;
end
endmodule
и я создаю экземпляр в другом модуле systolic_PE (все это находится в том же файле seqalign.v)
maximum m0(.a(tempB), .b(diag), .out(tempA));
И я получаю ошибку :
«Синтаксическая ошибка Verilog HDL по seqalign.v (139) около текста« m0 »; ожидая «< =» или «=»»
Я проверил все, что я сделал до сих пор, и я не могу показаться, чтобы увидеть что-то я пропустил .. кто-то может быть достаточно любезен, чтобы вести меня?
Также на стороне записки: Instantiation of a module in verilog
Я пытался создать экземпляр моего модуля в случае заявление, так что я пытался за пределами, если оператор в всегда @ (posedge CLK) блок, и я получаю ошибка
ошибка синтаксиса HDL в seqalign.v (88) рядом с текстом «(», ожидая «»
Прежде всего, не используйте 'assign' внутри всегда блока: http://stackoverflow.com/q/23687172/1959732 – Greg
Удалите реализацию и оставайтесь с пустым модулем в одиночку и повторите попытку. –
Спасибо, Грег, я изменил его сейчас. – Melvin