Chisel Tutorial(七)——模块

下面内容根据2015-7-10版的Chisel 2.2 Tutorial整理

Chisel中的模块与Verilog HDL中模块的概念十分相似,都是用层次结构描写叙述电路。Chisel中的module是一个类,其定义遵循下面几点:

  • 继承自Module类
  • 有一个命名为io的port
  • 在其构造函数中连接子电路

例如以下是一个2选1选择器的模块定义:

class Mux2 extends Module{
  val io = new Bundle{
  val sel = UInt(INPUT, 1)
  val in0 = UInt(INPUT, 1)
  val in1 = UInt(INPUT, 1)
  val out = UInt(OUTPUT, 1)
  }
  io.out := (io.sel & io.in1) | (~io.sel & io.in1)
}

在模块的内部使用到了Chisel中的一个操作符“:=”用来将右边的输出与左边的输入连接起来。

模块的层次

如今能够使用子模块构建模块,从而实现电路的层次结构。以下是一个4输入选择器的样例,是通过三个2输入选择器构建的。

class Mux4 extends Module{
  val io = new Bundle{
  val in0 = UInt(INPUT, 1)
  val in1 = UInt(INPUT, 1)
  val in2 = UInt(INPUT, 1)
  val in3 = UInt(INPUT, 1)
  val sel = UInt(INPUT, 2)
  val out = UInt(OUTPUT, 1)
  }
  val m0 = Module(new Mux2())
  m0.io.sel := io.sel(0)
  m0.io.in0 := io.in0
  m0.io.in1 := io.in1

  val m1 = Module(new Mux2())
  m1.io.sel := io.sel(0)
  m1.io.in0 := io.in2
  m1.io.in1 := io.in3

  val m2 = Module(new Mux2())
  m2.io.sel := io.sel(1)
  m2.io.in0 := m0.io.out
  m2.io.in1 := m1.io.out

  io.out := m2.io.out

}

上例中创建了三个Mux2子模块,然后将这个三个模块连接起来,构成了一个4输入选择器。

时间: 2024-11-10 13:41:20

Chisel Tutorial(七)——模块的相关文章

USB加密锁htfs 2001全模块(七模块全部正常使用)

soft\8\GC-PowerStation.v5.2.2\HYPROTECH HTFS 2001\ILOG_CPLEX_V9.0\ILOG_OPL_STUDIO_V3.7\ILOG_SOLVER_V6.0\Laker 32 v3 Linux 1CD\PCBM_LP_Provisional_V701A\PDSOFT2.5 中科辅龙 最新版\Thermoflow v13.0 Edition 2004\ 免狗的最低1500元Thermoflow v13.0 Edition 2004加密锁_USB运行

Chisel Tutorial(六)——port

下面内容根据2015-7-10版的Chisel 2.2 Tutorial整理 port就是硬件单元对外的接口,须要指明方向(输入还是输出).一个port声明的样例例如以下: class Decoupled extends Bundle{ val ready = Bool(OUTPUT) val data = UInt(INPUT, 32) val valid = Bool(INPUT) } INPUT.OUTPUT指定方向,后面指出宽度.对于Bool类型.其宽度就是1,所以不须要明白指出.除了上

Chisel Tutorial(四)——函数

以下内容依据2015-7-10版的Chisel 2.2 Tutorial整理 我们可以把一些重复的逻辑定义为函数,然后在多处使用,例如:如下定义了一个简单的函数: def clb(a:UInt, b:UInt, c:UInt, d:UInt) = (a & b) | (~c & d) 函数clb有四个参数a.b.c.d,此处的def是Scala中定义的关键字,用来定义函数,每个参数后面跟一个冒号,然后是数据类型.在参数之后定义返回类型,也可以不定义,Chisel会自动推测,上例中就没有定义

AngularJs(七) 模块的创建

module 目前我选编写的都是在AngularJs-1.5版本,如有疑问可以联系我. 理解模块的生命周期. config 和 run 方法是模块调用时加载的方法.那么module的执行顺序是怎么样呢. config方法是在module 被加载后调用的方法.run 方法是在所有的模块都被加载后调用的方法. <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ng-app="exampleApp

Python学习---第七模块问题集

问题:win系统下,python 3+.Django 2.0.3环境,在Django运行时报错,信息如下: Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x000002203F3FEC80> Traceback (most recent call last): File "C:\Program Files\Python\Python36\lib\si

Python学习----第七模块笔记(Web开发进阶之Django数据库操作)

4.Django ORM 4.1.连接数据库 创建Django工程后运行该工程,会在工程根目录下创建db.sqlite3文件,为Django自带的sqlite3数据库(Django自带的功能也需要数据库支持),如果没有在settings.py文件中进行配置的话,数据将会保存在该数据库中. Django使用MySQL: # 修改settings.py中DATABASES = {}的内容为 DATABASES = { 'default': { 'ENGINE': 'django.db.backend

最新破解版Coade CADWorx 2012 1CD(全模块)

Synergee gas V4.50 Schlumberger PIPESIM v2010.1 (v2009.1) Coade caesar V5.30.3 (V5.30.1,v5.2,v5.1) Coade PVelite v2012(v2010) Flaresim v3.04 SIMSCI pipephase v9.5(v9.4) SIMSCI visualflow v5.4(v5.4) SIMSCI PROII v9.1 SIMSCI inplant v4.2 Pvtsim V20.0(v

Bentley.Hammer.XM.v08.09.400.34 1CD(水锤和瞬态分析软件)好用版\

Bentley.HAMMER.XM.v08.09.400.34.zipCOADE.CAESAR.II.V5.1_COADE.CAESAR.II管道应力分析软件.iso ICEM Surf 使用教程_手册大全.rarSurfacer使用教程-簡体.pdf开目kmbom4.7.8.rar开目PDM3310_BOM48104.rarBentley.Hammer.XM.v08.09.400.34 1CD(水锤和瞬态分析软件)好用版\COADE PVElite v2006_HAO_PVElite v200

全功能HTRI 7.0换热器计算软件

全功能HTRI 7.0换热器计算软件 HTRI.Xchanger.suite.V6.00换热器计算    能够对圆筒炉和方箱炉的性能进行模拟计算. Xfh 使用Hottel的区域法来计算加热炉各部位的热辐射和工艺侧的性能.与内含的燃烧室和对流室模型一起能够对燃烧式加热炉进行全面的性能评价.能够对板框式换热器进行设计, 核算和模拟计算, 可以使用自定义板型或者内置的制造厂数据库内的板型:Xist 支持包括所有的标准TEMA类型的计算,并且集成了流动导致的震动计算, 管子排布工具等等.进行空冷器和经