Postoroniy_V 0 11 августа, 2006 Опубликовано 11 августа, 2006 (изменено) · Жалоба нарвался на неправильное отображение значения сигналов в WAVEFORM-е при определёном описании модулей на верилоге `timescale 1 ns / 1 ps module test ( input RESET, input CLK ); reg ALE; reg[7:0] bus1DATAout, bus2DATAout, bus3DATAout, bus4DATAout; always @(posedge CLK) if (!RESET) begin ALE <=#1 0; end else begin ALE<=#1 ~ALE; if (ALE) begin bus1DATAout[7:4] <=#1 4'h0; bus1DATAout[3:0] <=#1 4'ha; bus2DATAout[7:4] <=#1 4'h0; bus2DATAout[3:0] <=#1 4'ha; bus3DATAout[7:4] <=#1 4'h0; bus3DATAout[3:0] <=#1 4'ha; bus4DATAout[7:4] <=#1 4'h0; bus4DATAout[3:0] <=#1 4'ha; end //if else begin bus1DATAout[7:4] <=#1 4'ha; bus1DATAout[3:0] <=#1 4'h0; bus2DATAout[7:4] <=#1 4'ha; bus2DATAout[3:0] <=#1 4'h0; bus3DATAout[7:4] <=#1 4'ha; bus3DATAout[3:0] <=#1 4'h0; //bus4DATAout[7:4] <=#1 4'ha; //bus4DATAout[3:0] <=#1 4'h0; bus4DATAout<=#1 8'ha0; end end initial while(1) begin @(ALE); $display("Time- %t",$time); $display("bus1 - 0x%x",bus1DATAout); $display("bus2 - 0x%x",bus2DATAout); $display("bus3 - 0x%x",bus3DATAout); $display("bus4 - 0x%x",bus4DATAout); $stop; end endmodule :blink: а вот что в waveform получается если же присваивать целиком всему регистру тоесть вместо bus4DATAout[7:4] <=#1 4'ha; bus4DATAout[3:0] <=#1 4'h0; написать bus4DATAout<=#1 8'ha0; то эта "мегафича" не проявляется p.s. версия - 7.1 build 1583.SP2.09 Изменено 11 августа, 2006 пользователем Postoroniy_V Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 50 11 августа, 2006 Опубликовано 11 августа, 2006 · Жалоба нарвался на неправильное отображение значения сигналов в WAVEFORM-е при определёном описании модулей на верилоге если же присваивать целиком всему регистру тоесть вместо bus4DATAout[7:4] <=#1 4'ha; bus4DATAout[3:0] <=#1 4'h0; написать bus4DATAout<=#1 8'ha0; то эта "мегафича" не проявляется p.s. версия - 7.1 build 1583.SP2.09 Тоже сталкивался с подобной ситуацией, правда, там чуть по-другому было: я там в общую шину 16 бит упаковывал шину данных 14 бит и два служебных сигнала (признаки) - в старшие биты. Делал это с помощью конкатенации сигналов: reg [13:0] data; reg [15:0] bus; reg flag1; reg flag2; ... always @(*) bus = {flag1, flag2, data}; Так вот, неправильно симулялось - флажки не прописывались в шину. Причем, когда я попытался вычленить этот кусок, чтобы багу на простом примере продемострировать (на форум хотел заслать, а сам модуль достаточно большой был), то на мелком фрагменте оно не проявилось. Т.е. с чем-то еще "интерферировало". А попробуйте свой вариант через конкатенацию? Интересно, как проявится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iMiKE 0 11 августа, 2006 Опубликовано 11 августа, 2006 · Жалоба А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Postoroniy_V 0 11 августа, 2006 Опубликовано 11 августа, 2006 · Жалоба ....... Так вот, неправильно симулялось - флажки не прописывались в шину. Причем, когда я попытался вычленить этот кусок, чтобы багу на простом примере продемострировать (на форум хотел заслать, а сам модуль достаточно большой был), то на мелком фрагменте оно не проявилось. Т.е. с чем-то еще "интерферировало". А попробуйте свой вариант через конкатенацию? Интересно, как проявится. через конкатенацию ВСЁ ок! уже проверил дело в том что это только в wavefrom такое проявляется...посмотрите на рисунке что приаттачил там есть вывод на консоль текущего значения сигналов они там верные :) А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое? Уважаемый iMiKE! Кусок что выложен и есть проект! :) а больше я выкладывать не вижу смысла она Вам надо? p.s. из того выложено легким движением руки сами можете "собрать и увидеть" глюк :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться