verilog-module练习

可以做为参考---->>     https://www.zhihu.com/column/c_1131528588117385216

  • 可以在一个module内部,实例化instantiating另一个module,只要这另一个module和本module在同一个project即可

    the compiler knows where to find the module

  • 端口信号传递,by position,by name

 

  • Module shift

verilog-module练习
module top_module ( input clk, input d, output q );
//内部是三个相同的module,内部是输入传到输出,这个昨弄??
    wire q1,q2,q3;  //缓存一下中间的信号
    my_dff dff1(.clk(clk),.d(d),.q(q1));
    my_dff dff2(.clk(clk),.d(q1),.q(q2));
    my_dff dff3(.clk(clk),.d(q2),.q(q3));
    assign q=q3;
    //吼吼吼,成功了
endmodule

 

  • 用 generate 语句进行多个模块的重复例化
module full_adder4(
    input [3:0]   a ,   //adder1
    input [3:0]   b ,   //adder2
    input         c ,   //input carry bit
 
    output [3:0]  so ,  //adding result
    output        co    //output carry bit
    );
 
    wire [3:0]    co_temp ;
    //第一个例化模块一般格式有所差异,需要单独例化
    full_adder1  u_adder0(
        .Ai     (a[0]),
        .Bi     (b[0]),
        .Ci     (c==1b1 ? 1b1 : 1b0),
        .So     (so[0]),
        .Co     (co_temp[0]));
 
    genvar        i ;
    generate
        for(i=1; i<=3; i=i+1) begin: adder_gen
        full_adder1  u_adder(
            .Ai     (a[i]),
            .Bi     (b[i]),
            .Ci     (co_temp[i-1]), //上一个全加器的溢位是下一个的进位
            .So     (so[i]),
            .Co     (co_temp[i]));
        end
    endgenerate
 
    assign co    = co_temp[3] ;
 
endmodule
  • Module shift8

verilog-module练习
module top_module ( 
    input clk, 
    input [7:0] d, 
    input [1:0] sel, 
    output [7:0] q 
);
    //wire [7,0] tmp1,tmp2,tmp3;//傻了,这vector中间是冒号是冒号是冒号是冒号!
    wire [7:0] tmp1,tmp2,tmp3;
    my_dff8  m1(clk,d,tmp1);
    my_dff8  m2(clk,tmp1,tmp2);
    my_dff8  m3(clk,tmp2,tmp3);
    always @(*)
        case (sel)
            //2‘b00:q=d;
            //2‘b01:q=tmp1;
            //2‘b02:q=tmp2;
            //2‘b03:q=tmp3;   //这都是啥,太低级的错误了,看来需要休息一下了
            2d00:q=d;
            2d01:q=tmp1;
            2d02:q=tmp2;
            2d03:q=tmp3;
        endcase
endmodule

-----------有点不太清醒了,明天再看看----------20210729-------------------

 

verilog-module练习

上一篇:AQS独占模式(基于ReentrantLock公平锁) — 源码解析


下一篇:关于console.log带样式输出