介绍模块的输入输出端口的定义与管理。
1. _ports
1) 模块的输入输出端口,在BaseModule中管理:
2) 添加输入输出端口
使用IO(...)添加:
3) 使用
所有的端口一起使用:
2. 用户自定义模块端口
用户通过实现Module类中的抽象方法io,实现一个Bundle的匿名子类,于其中定义各个输入输出端口。
通过把这个匿名子类的对象传入IO()方法,将其与模块绑定,并将其加入模块的_ports中。
3. 隐含的clock和reset
用户自定义模块时继承的Module类,实为chisel3.core.LegacyModule:
LegacyModule是ImplicitModule的子类,其中定义了默认的时钟和复位端口,这也是其ImplicitModule中Implicit的含义。
也是通过IO()添加到模块的_ports中。
4. 附录