Xilinx, Исим обработка целочисленных типов Verilog в моделировании - PullRequest
2 голосов
/ 19 марта 2012

Я довольно новичок в FPGA и Verilog, но у меня проблема с тем, чтобы заставить мой код работать в симуляторе так, как я ожидал.Кажется, симулятор Isim не "работает" на целые числа в моем коде.Ниже приведен фрагмент соответствующего кода.Я пытаюсь разделить импульс clk, переключая SCK_gen каждый раз, когда целое число достигает 10. Когда я запускаю этот код в Isim, SCK_gen никогда не меняет значение.Кроме того, когда я внедряю код на ПЛИС, он ведет себя так, как я и ожидал, я могу наблюдать импульс на 1/10 тактовой частоты.Если кто-нибудь может указать мне правильное направление, я буду благодарен.Спасибо

    //signals
//for SCK_clock
reg SCK_gen, SCK_hold;
integer i;
reg en_SCK;
wire neg_edge_SCK;


//SCK_generator
always @(posedge clk, posedge reset)
    if (reset)
        begin 
            SCK_gen <= 0;
        end
    else
        begin
            i <= i+1;
            SCK_hold <= SCK_gen;
                if(i == 10)
                    begin
                        SCK_gen <= ~SCK_gen;
                        i <= 0;
                    end
        end

//detect neg edge of SCK
assign neg_edge_SCK = SCK_hold & SCK_gen;

1 Ответ

4 голосов
/ 19 марта 2012

Результатом любой операции арифметического или логического равенства является «x», если любой из операндов - «x».Так как i не инициализировано, оператор i <= i+1 не влияет на i, поэтому сравнение (i == 10) всегда будет ложным.

...