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

A*X[clock-1]+B*X[clock-2]+C*X[clock-3]

Есть ряд вопросв, плз, помогите;)

 

1)В verilog операции присваивания выполняются последовательно?

Т.е. если записать

 

a=b;

b=c;

c=d;

То пока а не приравняется к b, то в b небудет писатся c?

 

2) Как наиболее оптимально реализовать запоминание предыдущих n значений.

Сейчас делаю приблизительно так:

 

@always (posedge clk)

begin

xout3=xout2;

xout2=xout1;

xout1=buff;

buff=x;

end

 

Т.е. получается, что из-за 4-х последывательных присваиваний очень замедляется схема.

Существует ли более оптимальный способ реализации такого запоминания?

 

3) Как выполнить операции присвоения одновременно для нескольких "переменных"?

Или в любом случае присвоение выполняется побитово последоваетльно?

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


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

Есть ряд вопросв, плз, помогите;)

 

1)В verilog операции присваивания выполняются последовательно?

Т.е. если записать

 

a=b;

b=c;

c=d;

То пока а не приравняется к b, то в b небудет писатся c?

В Верилоге есть два вида присваиваний - блокирующие и неблокирующие. Вышеприведенные - блокирующие. Неблокирующие выглядят так:

 

a <= b;

b <= c;

c <= d;

 

2) Как наиболее оптимально реализовать запоминание предыдущих n значений.

Сейчас делаю приблизительно так:

 

@always (posedge clk)

begin

xout3=xout2;

xout2=xout1;

xout1=buff;

buff=x;

end

 

Т.е. получается, что из-за 4-х последывательных присваиваний очень замедляется схема.

Существует ли более оптимальный способ реализации такого запоминания?

 

3) Как выполнить операции присвоения одновременно для нескольких "переменных"?

Или в любом случае присвоение выполняется побитово последоваетльно?

Есть простое правило для получения адекватного синтеза: в комбинационных блоках использовать блокирующие присваивания, в регистровых - неблокирующие. Почему так - додумайтесь сами. :)

 

У Вас выше приведен регистровый блок (должны синтезироваться регистры (триггеры)), здесь надо писать:

 

always @(posedge clk) begin

xout3 <= xout2;

xout2 <= xout1;

xout1 <= buff;

buff < =x;

end

 

По фронту все значения перепишутся одновременно - точно, как работают аппаратные триггеры.

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


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

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

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

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

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

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

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

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

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

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