Chisel3 - 模块】的更多相关文章

https://mp.weixin.qq.com/s/2vjM-gcauvHnn6KJzlOm4g   Chisel的模块和Verilog的模块很相似,都用来定义模块结构(hierarchical structure).   Chisel的模块定义,包含三部分内容: a. 继承自Module类: b. 定义模块输入输出接口(继承自Bundle): c. 把内部各部分与输入输出接口连接起来:   参考链接: https://github.com/freechipsproject/chisel3/w…
https://mp.weixin.qq.com/s/3uUIHW8DmisYARYmNzUZeg   介绍如何构建由模块组成的硬件模型.   1. 子模块   一个模块可以有一个或多个子模块,创建子模块时,需要使用Module(...)包裹: ​​   Module()实现如下: ​​   bc是一个call-by-name参数,在第一次引用时调用.   1) 在调用bc创建模块之前,先保存Builder的状态. ​​ a. Module()只能用于包裹一个模块的实例化操作: ​​ Build…
https://mp.weixin.qq.com/s/THqyhoLbbuXXAtdQXRQDdA   介绍构建硬件模型的Builder.   1. DynamicContext   ​​ 动态上下文,供构建硬件模型时,存放上下文状态信息.     2. Builder   ​​   Builder使用DynamicContext存储数据.供其他类获取和存储信息使用.   3. ClockAndReset   这里以clock和reset为例.   1) DynamicContext中,定义了c…
https://mp.weixin.qq.com/s/fgCvIFt0RdEajhJVSy125w   介绍模块的输入输出端口的定义与管理.     1. _ports   1) 模块的输入输出端口,在BaseModule中管理: ​​ 2) 添加输入输出端口   使用IO(...)添加: ​​   ​​   3) 使用   所有的端口一起使用: ​​   2. 用户自定义模块端口   用户通过实现Module类中的抽象方法io,实现一个Bundle的匿名子类,于其中定义各个输入输出端口. ​​…
https://mp.weixin.qq.com/s/YGTXky4wff7LXUphUxISQg   介绍创建模块判断逻辑的when命令.   1. when/elsewhen/otherwise   伴生对象when中的工厂方法,会创建一个WhenContext: ​​   WhenContext含有方法elsewhen/otherwise: ​​ 他们又各自创建一个新的WhenContext.   WhenContext的构造方法在类体中: ​​   when(cond){...}   a…
https://mp.weixin.qq.com/s/AxYlRtAXjd55eoGX5l1W-A   模块(Module)从输入端口(input ports)接收输入,经过内部实现的转换逻辑,从输出端口(output ports)输出.   在Chisel3中,模块的输入输出端口,通过IO(new Bundle{...})的形式定义,其中定义了各种类型的数据变量.在实现模块内部转换逻辑的时候,也需要使用到各种类型的数据变量.这些变量如何加入到hardware graph中呢?就是通过WireB…
https://mp.weixin.qq.com/s/LKiXUgSnt3DzgFLa9zLCmQ   简单的寄存器在时钟的驱动下,逐个往下传值.   参考链接: https://github.com/ucb-bar/chisel-tutorial/blob/release/src/main/scala/examples/ShiftRegister.scala   1. 引入Chisel3   ​​   2. 继承自Module类   ​​   3. 定义输入输出接口   ​​ 创建各项输入输出…
https://mp.weixin.qq.com/s/36jreQGpDLCCNfmUwI34lA   模块接口有三种方向:Input/Output/Inout.Chisel在声明模块接口的时候,也需要提供这些信息.   参考链接: https://github.com/freechipsproject/chisel3/wiki/Ports     1. SpeicifiedDirection   声明模块接口方向时,使用的方向类型: ​​ 其中: a. 带下划线的为对象:   2. Actua…
https://mp.weixin.qq.com/s/KqyklKrPLtPm38sftMYlHA   1. 使用Maven获取库   Chisel相关的库基本上都可以使用Maven获取到(https://mvnrepository.com/artifact/edu.berkeley.cs):   ​​   其中Chisel Iotesters是用来进行验证的库,可以看到各个版本及其发布日期: ​​   随便打开一个版本: ​​ 可以看到该版本的基本信息,点击jar可以直接下载库的jar包.下面…
https://mp.weixin.qq.com/s/vlyOIsQxR6bCqDDMtRQLLg   实现队列模块,先入先出(FIFO).   参考链接: https://github.com/freechipsproject/chisel3/blob/master/src/main/scala/chisel3/util/Decoupled.scala     1. QueueIO   ​​ 队列(Queue )输入输出接口,entries为队列的容量.这些接口的方向都是从队列的角度来定义的.…