Jump to content

    

Вопрос студента по Verilog

Запутался в типах данных. Подскажите пожалуйста.

 

Есть иерархия модулей. module_top_tb -> module_top -> module_1.

module module1
(

    ...
    output reg [7:0] Reg1
);

reg [9:0] rxReg = 10'h000;

always @(posedge rx_en) begin Reg1[7:0] <= Reg2[8:1]; end

endmodule

При симуляции просматриваю Reg1 - данные из Reg2 там присутствуют. По фронту обновляются.

В следующем модуле я пытаюсь объединить несколько модулей и вывести Reg1 в модуль выше.

module module_top

(

    ...
    output [7:0] reg_updoad_data_o
);

module1 module1_1
(
    ...
    .Reg1  ( reg_upload_data_o  )
);

endmodule

И при симуляции получаю ошибку: "Port size (8) does not match connection size (1) for port 'Reg1'". Соответственно это Z состояние.

Подскажите пожалуйста, в чем ошибка?

Share this post


Link to post
Share on other sites

у вас не объявлен

reg_upload_data_o

Он виден только внутри module_top.

Но если вы создадите wire [7:0] upload_data, и подключите его к выходам модулей, то получите другую ошибку - соединение двух выходов.

 

Share this post


Link to post
Share on other sites

Приветствую!

  "reg_upload_data_o" и "reg_updoad_data_o" как бы не одно и тоже  :biggrin:

Соответственно  по умолчанию создается однобитный wire reg_upload_data_o. 

Чтобы такого не было - добавляйте в начало файла `default_nettype none чтобы необъявленные переменные не создавались автоматом.

Удачи! Rob.

 

 

Share this post


Link to post
Share on other sites
3 часа назад, RobFPGA сказал:

Приветствую!

  "reg_upload_data_o" и "reg_updoad_data_o" как бы не одно и тоже  :biggrin:

Соответственно  по умолчанию создается однобитный wire reg_upload_data_o. 

Чтобы такого не было - добавляйте в начало файла `default_nettype none чтобы необъявленные переменные не создавались автоматом.

Удачи! Rob.

 

 

Огромное спасибо и за решение проблемы, и за новую системную функцию.

Кстати немного затрудняюсь в их поиске. Есть ли авторские материалы по этой теме? Или только документацию читать?

Share this post


Link to post
Share on other sites

Приветствую!

1 hour ago, 3FoH9l said:

Кстати немного затрудняюсь в их поиске. Есть ли авторские материалы по этой теме? Или только документацию читать?

Ищите по словам verilog compiler directive. Вот как пример  . Ну спецификации на язык и доки на используемые tools конечно же читать.

Удачи! Rob.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this