FPGA顶层模块对下层模块的例化注意事项

1、顶层模块的输入输出包括那些?

答:顶层模块的输入,是所有底层模块的输入的总和。顶层模块的输出,是所有底层模块的总和。

2、顶层模块对无初始值的子模块的例化格式是什么?

答:子模块名   u_子模块名(

  .子模块输入1      ( 值或者是其他模块的时序信号,或者是其他模块的输出或输入),

       .子模块输入2      ( 值或者是其他模块的时序信号,或者是其他模块的输出或输入),

  .子模块输入3        (),

       .子模块输出1      ( 值,或者是 子模块本身的变量)

       );

      例如:module key_debounce(

                 input    mod_clk,

      input    mod_rst_n,

      input    key,

      output   reg   key_flag,

      output   reg  key_value

    );

    顶层模块例化:

    key_debounce  u_key_debounce(

    .mod_clk    (sys_clk),  //顶层模块定义的输入变量

    .mod_rst_n   (sys_rst_n),   //同上

    .key      (key),             //子模块本身的输入

    .key_flag    (key_flag),    //子模块本身的输出

    .key_flag    (1'b1)           //强制输出为1,可能引起编译不通过

    .key_value   (key_value)   //子模块本身的输出

3、顶层模块对含有parameter参数的子模块的例化方式是什么?

答:在子模块中定义了parameter   MAX = 25000 ;

          parameter MIN = 10000;

       如果顶层模块将其重新赋值并覆盖子模块的赋值,则

        time_count  #(//与其他输入输出不同之处在于是#还是u_子模块名

  .MAX             (50000),

  .MIN    (10000)    

  )  

   u_time_count(

    子模块输入输出例化,

  );

  顶层模块也可以不用管该parameter,该parameter会使用子模块定义的值

4、顶层模块还可以被例化吗?

   顶层模块也是模块,可以在更上一层的顶层模块例化,像普通模块一样被例化。因此设计的时候,可以分模块设计。

   

原文地址:https://www.cnblogs.com/cjyc/p/11252378.html