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、顶层模块还可以被例化吗?
顶层模块也是模块,可以在更上一层的顶层模块例化,像普通模块一样被例化。因此设计的时候,可以分模块设计。