Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
16 years ago

Multiplexer Output Glitching

Hi all,

I'm having trouble multiplexing a number of signals without the output glitching. The following 4 to 1 multiplexer with all the inputs connected to 1 shows the issue:

module multiplexertest (
    input wire a,b,c,d,
    input wire s,t,
    output wire q
);
    assign q = (s) ?
                ((t) ? d : c) :
                ((t) ? b : a);
endmodule
`timescale 1 ns /  100 ps
module multiplexertest_TB ();
    reg a,b,c,d;
    reg s,t;
    wire q;
    multiplexertest multiplexertest_inst
    (
        .a(a) ,    // input  a_sig
        .b(b) ,    // input  b_sig
        .c(c) ,    // input  c_sig
        .d(d) ,    // input  d_sig
        .s(s) ,    // input  s_sig
        .t(t) ,    // input  t_sig
        .q(q)     // output  q_sig
    );
    initial begin
        a = 1;
        b = 1;
        c = 1;
        d = 1;
        s = 0;
        t = 0;
    end
    always 
       # 40 s = !s;
endmodule
Two input multiplexers don't seem to suffer from this issue though that may just be luck.

Now I can fully understand that the glitches are generated due to the LUT within the LE which causing this but I would have thought that there should be a way around it. I need the fastest possible input to output performance so registering the data is something I'm trying to avoid doing.

26 Replies