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输入选择器。
Chisel Tutorial(七)——模块的更多相关文章
- Chisel Tutorial(六)——port
下面内容根据2015-7-10版的Chisel 2.2 Tutorial整理 port就是硬件单元对外的接口,须要指明方向(输入还是输出).一个port声明的样例例如以下: class Decoupl ...
- AngularJs(七) 模块的创建
module 目前我选编写的都是在AngularJs-1.5版本,如有疑问可以联系我. 理解模块的生命周期. config 和 run 方法是模块调用时加载的方法.那么module的执行顺序是怎么样呢 ...
- 第七模块:项目实战一 第1章 项目实战:CRM客户关系管理系统开发
01-crm介绍 02-权限系统介绍 03-第一版表结构设计 04-第二版表结构设计 05-orm中创建表结构 06-销售管理系统业务 07-销售管理系统权限信息录入 08-快速实现简单的权限控制的设 ...
- Chisel Tutorial(一)——Chisel介绍
Chisel是由伯克利大学公布的一种开源硬件构建语言,建立在Scala语言之上,是Scala特定领域语言的一个应用,具有高度參数化的生成器(highly parameterized generator ...
- 第七模块 :微服务监控告警Prometheus架构和实践
119.监控模式分类~1.mp4 logging:日志监控,Logging 的特点是,它描述一些离散的(不连续的)事件. 例如:应用通过一个滚动的文件输出 Debug 或 Error 信息,并通过日志 ...
- Java 9 揭秘(4. 模块依赖)
文 by / 林本托 Tips 做一个终身学习的人. 在此章节中,主要学习以下内容: 如何声明模块依赖 模块的隐式可读性意味着什么以及如何声明它 限定导出(exports)与非限定导出之间的差异 声明 ...
- Java Web中乱码问题
response.setContentType("text/html;charset=UTF-8"); 用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式.什么编码读取这个 ...
- Linux内核模块简介
一. 摘要 这篇文章主要介绍了Linux内核模块的相关概念,以及简单的模块开发过程.主要从模块开发中的常用指令.内核模块程序的结构.模块使用计数以及模块的编译等角度对内核模块进行介绍.在Linux系统 ...
- zz android 系统 makefile文件(Android.mk)组织结构
Android.mk脚本结构 下面是main.mk文件包含关系,本文档主要说明的就是这些文件里到底做了什么.(这个文件被根目录下的makefile文件包含) 一. main.mk 1.检查版本 ...
随机推荐
- ZH奶酪:PHP上传图片三个步骤
1. 上传图片三步骤 第一步:首先判断文件类型是否为图片格式,若是则上传文件; 第二步:然后重命名文件(一般都是避免上传文件重名,现在基本上都是以为时间来命名); 第三步:最后把文件上传到指定目录,成 ...
- GLSL语言内置的变量详解
GLSL语言内置的变量,包括内置的顶点属性(attribute).一致变量(uniform).易变变量(varying)以及常量(const),一方面加深印象,另一方面今天的文章可以为以后的编程做查询 ...
- 电脑PE系统工具
自己收集的一些PE电脑维护工具 电脑店PE工具 http://u.diannaodian.com/ 通用PE工具箱 http://www.tongyongpe.com/ 大白菜PE工具 http:// ...
- Electron 调用系统Office软件
通过打开本地空白文件的方式从而打开Office办公软件 const shell = require('electron').shell; const path = require('path'); s ...
- 【转】Spring中IoC的优点与缺点
1. 优点 我们知道,在Java基本教程中有一个定律告诉我们:所有的对象都必须创建:或者说:使用对象之前必须创建,但是现在我们可以不必一定遵循这个定律了,我们可以从Ioc容器中直接获得一个对象然后直接 ...
- 算法笔记_178:历届试题 邮局(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 C村住着n户村民,由于交通闭塞,C村的村民只能通过信件与外界交流.为了方便村民们发信,C村打算在C村建设k个邮局,这样每户村民可以去离自己 ...
- serialize 序列化 +号处理
少说多做,直接运行代码,代码中有注释: <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...
- MySQL优化之——权限管理
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46763767 在mysql数据库中,有mysql_install_db脚本初始化权 ...
- 【翻译自mos文章】使用dbua升级时,须要手工设置CLUSTER_DATABASE參数么?
使用dbua升级时,须要手工设置CLUSTER_DATABASE參数么? 来源于: Is Manual Setting Of CLUSTER_DATABASE Parameter Required F ...
- 媒体类型(MIME类型)
# encoding=utf-8 #python 2.7.10 #xiaodeng #HTTP权威指南 #HTTP协议:超文本传输协议是在万维网上进行通信时所使用的协议方案. #媒体类型: #HTTP ...