https://mp.weixin.qq.com/s/36jreQGpDLCCNfmUwI34lA
模块接口有三种方向:Input/Output/Inout。Chisel在声明模块接口的时候,也需要提供这些信息。
参考链接:
https://github.com/freechipsproject/chisel3/wiki/Ports
1. SpeicifiedDirection
声明模块接口方向时,使用的方向类型:
其中:
a. 带下划线的为对象;
2. ActualDirection
使用方法目前不明。
其中:
a. 带下划线的为对象;
b. 不带箭头的联系为关联关系;
3. Input
定义了apply方法的Object,用法如函数调用。这三个函数调用,会为传入参数(Data子类型)的方向性赋值:
使用方法如:
val io = IO(new Bundle { val in = Input(UInt(1.W)) val out = Output(UInt(1.W)) })
再如:
val io = IO(new Bundle { val isWr = Input(Bool()) val wrAddr = Input(UInt(8.W)) val wrData = Input(UInt(32.W)) val boot = Input(Bool()) val valid = Output(Bool()) val out = Output(UInt(32.W)) })
4. Output
参考Input。
5. Flipped
参考Input。
6. Inout
Chisel中并无Inout类型,需使用Analog类型进行模拟。