011 Verilog原语

    科技2025-10-22  7

    原语

    是构成设计的最基本单元,通过真值表描述其功能,包括基本逻辑门在内有26个预定义功能模型

    n输入逻辑门

    原语描述使用and与门and(yout, xin1, xin2, xin3)nand与非nand(yout, xin1, xin2, xin3)or或门or(yout, xin1, xin2, xin3)nor或非nor(yout, xin1, xin2, xin3)xor异或xor(yout, xin1, xin2, xin3)xnor同或nxor(yout, xin1, xin2, xin3)

    n输出组合门

    UDP(User Defined Primitive,用户自定义原语)

    符号汇总

    符号意义0,1,x逻辑0,1,x为未知值,UDP中没有z?无关逻辑,可以是0,1,xb逻辑0或1-不变化(xy)从x变为y,如(01)为上升沿*输入信号的任何变化r上升沿f下降沿p含x的上升沿,等同于(01)、(0x)、(x1)n含x的下降沿,等同于(10)、(x0)、(1x)

    与门

    primitive and(y, x1, x2); output y; input x1, x2; table // x1 x2 : y 0 0 : 0; 0 1 : 0; 1 0 : 0; 1 1 : 1; endtable endprimitive

    2输入多路复用器

    输入可以是0,1,x,所以考虑所有情况的2输入多路复用器如下:

    primitive mux_two(out, select, a, b); output out; input select, a, b; // y = select ? a : b; table // select a b : out 0 0 0 : 0; 0 0 1 : 0; 0 0 x : 0; 0 1 0 : 1; 0 1 1 : 1; 0 1 x : 1; 1 0 0 : 0; 1 1 0 : 0; 1 x 0 : 0; 1 0 1 : 1; 1 1 1 : 1; 1 x 1 : 1; x 0 0 : 0; x 1 1 : 1; endtable endprimitive

    使用助记符?简化,?=0,1,x

    primitive mux_two(out, select, a, b); output out; input select, a, b; // y = select ? a : b; table // select a b : out 0 0 ? : 0; 0 1 ? : 1; 1 ? 0 : 0; 1 ? 1 : 1; ? 0 0 : 0; ? 1 1 : 1; endtable endprimitive

    透明锁存器(电平敏感)

    其实就是带使能的锁存器

    primitive latch_with_enable(q_out, enable, data); output q_out; input enable, data; reg q_out; // q_out = enable ? data : q_out; // - 表示保持 table // 时序逻辑table格式 // input1 input2 state : output/next_state // enable data state : q_out/next_state 1 1 ? : 1; 1 0 ? : 0; 0 ? ? : -; x 0 0 : -; x 1 1 : -; endtable endprimitive

    D触发器(边沿敏感)

    primitive DFF(q_out, clk, data); output q_out; input clk, data; reg q_out; // q_out = posedge(clk) ? data : q_out; // - 表示保持 table // 时序逻辑table格式 // input1 input2 state : output/next_state // clk data state : q_out/next_state (01) 0 ? : 0; (01) 1 ? : 1; (0?) 1 1 : 1; (?0) ? ? : -; ? (??) ? : -; endtable endprimitive
    Processed: 0.008, SQL: 8