Перейти к содержанию
    

Вопрос по методам инициализации?

Собственно вопрос в следующем:

Как можно присвоить переменной типа wire значение переменной типа reg

т.е.

reg[15:0] xxx;

wire[15:0] yyy;

reg g;

как ууу = xxx ?

 

1) я использую метод с применением bufif0.т.е.

в блоке объявления переменных

bufif0( yyy, xxx, g);

Затем в task -ах я просто присваививаю значения переменной xxx и автоматический у меня инициализируется переменная типа wire , т.е ууу .

 

2) провести это присвоение в рамках процесса always , используя assign, а еще как?

Изменено пользователем Вано

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно вопрос в следующем:

Как можно присвоить переменной типа wire значение переменной типа reg

т.е.

reg[15:0] xxx;

wire[15:0] yyy;

reg g;

как ууу = xxx ?

 

1) я использую метод с применением bufif0.т.е.

в блоке объявления переменных

bufif0( yyy, xxx, g);

Затем в task -ах я просто присваививаю значения переменной xxx и автоматический у меня инициализируется переменная типа wire , т.е ууу .

 

2) Как можно есче провести это присвоение в рамках процесса always или еще как?

 

assign ууу = xxx;

И всё!!!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно вопрос в следующем:

Как можно присвоить переменной типа wire значение переменной типа reg

т.е.

reg[15:0] xxx;

wire[15:0] yyy;

reg g;

как ууу = xxx ?

 

1) я использую метод с применением bufif0.т.е.

в блоке объявления переменных

bufif0( yyy, xxx, g);

Затем в task -ах я просто присваививаю значения переменной xxx и автоматический у меня инициализируется переменная типа wire , т.е ууу .

 

2) Как можно есче провести это присвоение в рамках процесса always или еще как?

 

assign ууу = xxx;

И всё!!!!!

По-моему, вы ошибаетесь.

 

always @( fas_ff_fe or fas_db )

if(fas_ff_fe)

begin

 

assign yyy=xxx;

end

Это работать будет наобхорот , если xxx=yyy, а обратно не будет, в этом и проблема что переменной wire не присвоишь assign переменную типа reg, наоборот можно.

Изменено пользователем Вано

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

always @( fas_ff_fe or fas_db )

if(fas_ff_fe)

begin

 

assign yyy=xxx;

end

Это работать будет наобхорот , если xxx=yyy, а обратно не будет, в этом и проблема что переменной wire не присвоишь assign переменную типа reg, наоборот можно.

мда, вообще-то assign это отдельный блок его в always ставить нельзя - синтаксическая ошибка, но только в теле module

 

вам правду говорят на счёт assign

 

module a (input clk, input e);
wire a;
reg b;
reg c;
reg t;

assign a=b;
//assign b=a; - ошбка: b - тип регистр
always @*
begin
  c=a;
  //a=t - ошибка: а тип провод 
end

always @(posedge clk) 
  b<=e;

initial
  t=1'b1;
wire f;
initial
  begin
   //f=1'b1; - ошибка: f - тип провод
  end
endmodule

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...