2015-11-02 2 views
0

Я программирую с vivado Xilinx в verilog.Почему мы используем REG в FGPA/VHDL/VIVADO?

мне было интересно, почему для некоторых выходов, которые мы используем reg

Например reg [3:0] encoder_output мы используем это потому, что наш 16 до 4 датчика имеет 4 выхода правильно? Я предполагаю, что мы используем reg всякий раз, когда нам нужно «STORE SOMETHING»

Является ли моя идея правильной?

+4

Возможный дубликат [Использование провода или рекорда с вводом или выводом в Verilog] (http://stackoverflow.com/questions/5360508/using-wire-or-reg-with-input-or-output-in-verilog) – Qiu

+0

Не дубликат - другой вопрос касается только механики задания, а не «почему». – EML

ответ

3

На самом деле это не глупый вопрос, несмотря на все downvotes. В начале, Дизайнер создал сети и регистры. Сети были предназначены как соединения между аппаратными элементами и имели значения, приводимые в них; они не придерживались этих ценностей. Сети обычно объявляются как wire. Регистры были элементами хранения данных, а сделал, удерживая значение; они обычно объявляются как reg. Со временем стало ясно, что это разделение (какое-то похожее на «оборудование») не имеет смысла, и, по крайней мере, было сделано одно предложение отказаться от различий в сети/регистре с языком. Это никогда не случалось (если вы не считаете SystemVerilog «Verilog», которого я не знаю).

Итак, ваш вопрос имел смысл 30 лет назад, и ваш ответ был бы «правильным».

Однако на практике не имеет значения, что вы используете. Реальное различие заключается в том, что вы можете назначать только reg из последовательного кода (always/etc) и в wire. Это требование совершенно произвольно и существует только по историческим причинам. Вам просто нужно изучить правила.

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