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

Глюк в актив ХДЛ :(

нарвался на неправильное отображение значения сигналов в 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 получается post-951-1155293468_thumb.jpg

 

если же присваивать целиком всему регистру тоесть вместо

bus4DATAout[7:4] <=#1 4'ha;
bus4DATAout[3:0] <=#1 4'h0;

написать

bus4DATAout<=#1 8'ha0;

то эта "мегафича" не проявляется

p.s. версия - 7.1 build 1583.SP2.09

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

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


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

нарвался на неправильное отображение значения сигналов в 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};

Так вот, неправильно симулялось - флажки не прописывались в шину. Причем, когда я попытался вычленить этот кусок, чтобы багу на простом примере продемострировать (на форум хотел заслать, а сам модуль достаточно большой был), то на мелком фрагменте оно не проявилось. Т.е. с чем-то еще "интерферировало".

 

А попробуйте свой вариант через конкатенацию? Интересно, как проявится.

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


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

А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое?

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


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

.......

Так вот, неправильно симулялось - флажки не прописывались в шину. Причем, когда я попытался вычленить этот кусок, чтобы багу на простом примере продемострировать (на форум хотел заслать, а сам модуль достаточно большой был), то на мелком фрагменте оно не проявилось. Т.е. с чем-то еще "интерферировало".

 

А попробуйте свой вариант через конкатенацию? Интересно, как проявится.

через конкатенацию ВСЁ ок!

уже проверил

дело в том что это только в wavefrom такое проявляется...посмотрите на рисунке что приаттачил

там есть вывод на консоль текущего значения сигналов они там верные :)

 

 

А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое?

Уважаемый iMiKE!

Кусок что выложен и есть проект! :)

а больше я выкладывать не вижу смысла :biggrin: она Вам надо?

 

p.s. из того выложено легким движением руки сами можете "собрать и увидеть" глюк :)

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


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

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

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

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

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

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

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

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

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

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