реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Глюк в актив ХДЛ :(, у всех поведение такое же?
Postoroniy_V
сообщение Aug 11 2006, 10:58
Сообщение #1


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



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

Сообщение отредактировал Postoroniy_V - Aug 11 2006, 11:00


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post
dxp
сообщение Aug 11 2006, 11:33
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Postoroniy_V @ Aug 11 2006, 17:58) *
нарвался на неправильное отображение значения сигналов в 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};

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

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


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
iMiKE
сообщение Aug 11 2006, 11:37
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 121
Регистрация: 8-05-05
Из: Новосибирск
Пользователь №: 4 824



А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое?
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Aug 11 2006, 11:45
Сообщение #4


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(dxp @ Aug 11 2006, 15:33) *
.......
Так вот, неправильно симулялось - флажки не прописывались в шину. Причем, когда я попытался вычленить этот кусок, чтобы багу на простом примере продемострировать (на форум хотел заслать, а сам модуль достаточно большой был), то на мелком фрагменте оно не проявилось. Т.е. с чем-то еще "интерферировало".

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

через конкатенацию ВСЁ ок!
уже проверил
дело в том что это только в wavefrom такое проявляется...посмотрите на рисунке что приаттачил
там есть вывод на консоль текущего значения сигналов они там верные smile.gif


Цитата(iMiKE @ Aug 11 2006, 15:37) *
А можете свой проект приложить, в рамках доступного, конечно, охота на деле посмотреть, что там такое?

Уважаемый iMiKE!
Кусок что выложен и есть проект! smile.gif
а больше я выкладывать не вижу смысла biggrin.gif она Вам надо?

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


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01416 секунд с 7
ELECTRONIX ©2004-2016