Funt 0 22 августа, 2006 Опубликовано 22 августа, 2006 · Жалоба Есть ряд вопросв, плз, помогите;) 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) Как выполнить операции присвоения одновременно для нескольких "переменных"? Или в любом случае присвоение выполняется побитово последоваетльно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 34 22 августа, 2006 Опубликовано 22 августа, 2006 · Жалоба Есть ряд вопросв, плз, помогите;) 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 По фронту все значения перепишутся одновременно - точно, как работают аппаратные триггеры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться