likeasm 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Имеем такой код: reg [39:0] main_buffer_ch1 always @(posedge CFGMCLK) begin if(RxD_data_ready5)//записываем байт от ЭВМ в сдвиговый буфер begin main_buffer_ch1<=main_buffer_ch1<<8;//1 main_buffer_ch1[7:0]<=RxD_data5;//2 end end данный код работает нормально и в железе и в симуляторе, но стоит поменять две строки://1 и //2 местами, то данная конструкция меняет последовательность действий и сдвиг буфера съедает нулями RxD_data5. Мне всегда казалось, что все выполняется параллельно, поправьте если не прав :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Имеем такой код: reg [39:0] main_buffer_ch1 always @(posedge CFGMCLK) begin if(RxD_data_ready5)//записываем байт от ЭВМ в сдвиговый буфер begin main_buffer_ch1<=main_buffer_ch1<<8;//1 main_buffer_ch1[7:0]<=RxD_data5;//2 end end данный код работает нормально и в железе и в симуляторе, но стоит поменять две строки://1 и //2 местами, то данная конструкция меняет последовательность действий и сдвиг буфера съедает нулями RxD_data5. Мне всегда казалось, что все выполняется параллельно, поправьте если не прав :05: Хотите персональные занятия по Верилогу? Свяжитесь со мной по почте или по скайпу... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба поправьте если не прав :05: вы не правы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
thermit 1 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Нужно использовать блокирующее присваивание Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба Нужно использовать блокирующее присваивание ИМХО совет неправильный. Правильный совет : учите матчасть, IEEE-1800-2012 -> 10. Assignment statements -> 10.4 Procedural assignments -> 10.4.2 Nonblocking procedural assignments -> далее по тексту искать "The order of the execution....." (с) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба main_buffer_ch1<=main_buffer_ch1<<8;//1 main_buffer_ch1[7:0]<=RxD_data5;//2 Когда мне надоело бороться с подобными "глюками" я стал писать короче и нагляднее: main_buffer_ch1[39:0]={main_buffer_ch1[31:0],RxD_data5[7:0]}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 23 сентября, 2014 Опубликовано 23 сентября, 2014 · Жалоба И снова если не посылать к стандарту, то под одним always если есть несколько неблокирующих присвоений в одну переменную, то выполниться последние, в вашем коде есть 2 присвоения в младшие биты main_buffer_ch1<=main_buffer_ch1<<8 - в этой строке в младшие 7 бит записываются 0 а в следующей строке main_buffer_ch1[7:0]<=RxD_data5 - записывается данные выполняется последние присвоение. если строки поменять местами , то последним становиться пихание нулей в младшие биты. Так что вы правы все выполняется параллельно, кроме кода A<=10; A<=20; A<=30; ведь надо было как-то понять что же в итоге будет в А? то что выполняется последние присвоение позволяет более изящно описывать синхронный сброс вместо always @(posedge clk) begin if(reset == 1'b1) data <= 0; else begin data <= ..... .... end end пишите always @(posedge clk) begin data <= ..... .... if(reset == 1'b1) data <= 0; end и выполниться последние присвоение в данные 0, если будет ресет, и нет громоздкого else begin end.... Когда мне надоело бороться с подобными "глюками" я стал писать короче и нагляднее: main_buffer_ch1[39:0]={main_buffer_ch1[31:0],RxD_data5[7:0]}; все же лучше (если не требуется обратного) main_buffer_ch1[39:0] <= {main_buffer_ch1[31:0],RxD_data5[7:0]} Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
likeasm 0 24 сентября, 2014 Опубликовано 24 сентября, 2014 · Жалоба Спасибо за ответы :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться