Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Сформировать импульс по фронту сигнала (ПЛИС)

Вс июл 01, 2012 23:42:16

Здравствуйте, возникла необходимость сформировать импульс длительностью в один период тактовой частоты, по фронту внешнего сигнала.
Решил эту задачу таким образом:
Код:
module front_impulse(reset, clk, sig, strobe);
    input clk,reset,sig;
    output strobe;
   
    reg sDone,strobe;


    always@(posedge clk) begin
        if(reset) begin
            sDone<=0;
            strobe<=0;
        end else begin
            if(sig && !strobe && !sDone) begin
                strobe<=1;
            end
            if( !sig && !strobe && sDone) sDone<=0;
            if(strobe && sig) begin
                strobe<=0;
                sDone<=1;
            end
        end
    end


endmodule


Быть может можно проще это все описать? Схема синхронная, тактовая частота - clk

Re: Сформировать импульс по фронту сигнала (ПЛИС)

Пн июл 02, 2012 01:58:31

Вот немного упростил. Может есть проверенная схема для такого формирователя? Интересно сравнить с моим результатом.
Код:
module front_strobe(reset, clk, sig, strobe);
    input clk,reset,sig;
    output strobe;
   
    reg q1,q2;
    wire d2;
   
    assign strobe = q2 ^ q1;
    assign d2 = q1;
   
    always@(posedge clk) begin

        if(reset || !sig) begin
            q2<=0;
            q1<=0;
        end else begin
            if(!q1) q1<=sig;
            if(!q2) q2<=d2;
        end
    end


endmodule

Re: Сформировать импульс по фронту сигнала (ПЛИС)

Пн июл 02, 2012 05:09:28

http://marsohod.org/index.php/verilog/157-verilogedges
Ответить