2015-07-14 4 views
-1

Мне было интересно, что произойдет, если я создам модуль с объявлением определенного вектора размера в качестве входных данных, а затем передал ему вектор меньшего размера, создавая его позже. Например, скажем, я создаю модуль таким образом:Ввод вектора меньшего размера в модуль Verilog

module example(input, ....); 
    input[15:0] input; 
    ... 
    endmodule 

А потом я его экземпляр позже, но передать его меньший размер входного вектора следующим образом:

wire[11:0] foo; 
example bar(foo, ....); 

Так что происходит с input в этом дело? Так как input должен быть 16 бит, то это просто нулевая прокладка foo слева?

+3

Вы можете легко ответить на этот вопрос самостоятельно, выполнив симуляцию. Либо посмотрите на формы сигналов, чтобы увидеть, какое значение имеет значение «вход» внутри модуля, или используйте «$ monitor». – toolic

+2

«input» в вашем примере - это ключевое слово verilog, и оно не может использоваться как имя переменной – Emman

ответ

0

Значение по умолчанию для провода - «Z'(High-Impedance). Поскольку 4 бита входов не связаны, оставшиеся входные биты [12:15] принимает значение по умолчанию в условии, что все остальные биты, подключенные, правильно управляют входом. Как правило, для устранения подобных ошибок в больших RTL-проектах рекомендуется использовать любой статический инструмент для кода.

Смежные вопросы