模块(Module)从输入端口(input ports)接收输入,经过内部实现的转换逻辑,从输出端口(output ports)输出。
 
在Chisel3中,模块的输入输出端口,通过IO(new Bundle{...})的形式定义,其中定义了各种类型的数据变量。在实现模块内部转换逻辑的时候,也需要使用到各种类型的数据变量。这些变量如何加入到hardware graph中呢?就是通过WireBinding和RegBinding等。
 
 
1. WireBinding
 
定义如下:
case class WireBinding(enclosure: UserModule) extends ConstrainedBinding
 
a. Wire()
 
通过Wire()对一个变量进行Wire绑定,实例如下:
 
 
Wire继承自WireFactory:
object Wire extends WireFactory
 
b. WireFactory
 
 
a. 生成一个t的克隆x;
b. 对x进行绑定:x.bind(WireBinding(Builder.forcedUserModule))
c. 绑定的对象为WireBinding:WireBinding(Builder.forcedUserModule)
d. Builder.forcedUserModule可以理解为当前模块;
 
2. RegBinding
 
定义如下:
case class RegBinding(enclosure: UserModule) extends ConstrainedBinding
 
a. Reg()
 
通过Reg()对变量进行寄存器绑定,实例如下:
 
 
a. 生成一个t的可能reg;
b. 对reg进行绑定:reg.bind(RegBinding(Builder.forcedUserModule))
c. 绑定的对象为RegBinding: RegBinding(Builder.forcedUserModule)
d. Builder.forcedUserModule可以理解为当前模块;
 
3. MemPortBinding
 
Mem中的每一个元素,在使用时都会使用MemPortBinding进行绑定。
 
a. 使用实例如下:
b. 创建Mem()时并不会绑定
 
 
Mem()调用实现如下:
 
Mem类继承自MemBase:
 
MemBase在创建时并不会进行绑定;
 
c. 使用时进行绑定
 
如:stack_mem(sp) := io.dataIn 中,stack_mem(sp)会调用方法:
 
进而调用makePort进行绑定:
 
 
 
 

最新文章

  1. ASP.NET MVC 介绍
  2. 用clip剪裁实现半圆
  3. PHP 小方法之 仿百度蜘蛛采集
  4. webshell
  5. 笔记二、本地git命令
  6. CSS背景颜色、背景图片、平铺、定位、固定
  7. [HTML5 Canvas学习] 基础知识
  8. Delphi Excel FastReport
  9. spring mvc 资源包的映射
  10. 【Java框架型项目从入门到装逼】第六节 - 用ajax请求后台数据
  11. 使用redis,zookeeper实现分布式锁
  12. Ubuntu几个常用命令
  13. JDK1.8环境下依然报错 Unsupported major.minor version 52.0
  14. C语言关于进制转换,补码, 整数的位操作
  15. Android Meterial Design Support Library
  16. users命令详解
  17. 如何在ubuntu安装phpstorm
  18. webpack entry和output配置属性
  19. Android4.0-4.4 加入实体按键振动支持的方法(java + smali版本号)
  20. ubuntu-12.04.5-desktop-amd64.iso:ubuntu-12.04.5-desktop-amd64:安装Oracle11gR2

热门文章

  1. 用Stream流轻易的收集数据
  2. Airtable base
  3. CodeForces-650B Image Preview 二分+模拟
  4. [hdu5266]区间LCA
  5. springData表关系:一对多
  6. jar包名修改工具
  7. ASA failover配置(A/S)
  8. iOS中的系统目录(Documents、tmp、Library)、RunLoop的一些知识点
  9. 流复制-pg_basebackup (没有自定义表空间)
  10. 对比Memcached和Redis,谁才是适合你的缓存?