使用verilog实现模块级联

一个verilog程序可以包含多个模块,以满足一个复杂的程序设计。调用多个模块是通过端口关联来进行实现的,这种调用实际上是 一种硬件电路的嵌入,调用的方式是模块实例化,其中端口关联有两种方式:一种是位置关联,一种是名称关联,形式为“.端口名(变量名)“,实现端口与变量的关联。下面通过两个半加器来实现一个全加器来加以说明调用的方式:

moudle HalfAdd(X,Y,SUM,C_out);

    input    X,Y;

    output SUM,C_out;

    xor u_xor(SUM,X,Y);

    and u_and(C_out,X,Y);

endmoudle


moudle FullAdd(X,Y,C_in,SUM,C_out);

    input X,Y;

    output C_in,Sum,C_out;

    wire HalfAdd_A_SUM;

    wire HalfAdd_A_COUT;

    wire HalfAdd_B_COUT;

    or u_or(C_out,HalfAdd_A_COUT,HalfAdd_B_COUT);


    HalfAdd u_HalfAdd_A(.X(X),.Y(Y),.SUM(HalfAdd_A_SUM),.C_out(HalfAdd_A_COUT));

    HalfAdd u_HalfAdd_B(.X(X),.Y(Half_A_SUM),.SUM(SUM),C_out(HalfAdd_B_COUT)));


endmoudle


你可能感兴趣的:(使用verilog实现模块级联)