电路在 Chisel 中表示为节点图。每个节点都是具有零个或多个输入并驱动一个输出的硬件运算符。上面介绍的文字是一种退化的节点,它没有输入并在其输出上驱动一个常数值。创建和连接节点的一种方法是使用文本表达式。例如,我们可以使用以下表达式来表示一个简单的组合逻辑电路:

(a & b) | (~c & d)

语法应该看起来很熟悉,分别表示按位与&| -OR,并~ 表示按位非。名称a通过d 代表一些(未指定)宽度的命名线。

任何简单的表达式都可以直接转换成电路树,在叶子上命名连线,在内部节点形成运算符。表达式的最终电路输出取自树根处的运算符,在本例中为按位或。

简单的表达式可以构建树形状的电路,但要构建任意有向无环图(DAG)形状的电路,我们需要描述扇出。在 Chisel 中,我们通过命名包含子表达式的连线来做到这一点,然后我们可以在后续表达式中多次引用该子表达式。我们通过声明一个变量来命名 Chisel 中的电线。例如,考虑 select 表达式,它在以下多路复用器描述中使用了两次:

val sel = a | b
val out = (sel & in1) | (~sel & in0)

关键字val是 Scala 的一部分,用于命名具有不会改变的值的变量。这里使用它来命名凿线,sel保存第一个按位或运算符的输出,以便输出可以在第二个表达式中多次使用。

电线

Chisel 还支持将电线作为硬件节点,可以为其分配值或连接其他节点。

val myNode = Wire(UInt(8.W))
when (isReady) {myNode := 255.U
} .otherwise {myNode := 0.U
}
val myNode = Wire(UInt(8.W))
when (input > 128.U) {myNode := 255.U
} .elsewhen (input > 64.U) {myNode := 1.U
} .otherwise {myNode := 0.U
}

请注意,与 Wire 的最后一个连接生效。例如,以下两个 Chisel 电路是等效的:

val myNode = Wire(UInt(8.W))
myNode := 10.U
myNode := 0.U
val myNode = Wire(UInt(8.W))
myNode := 0.U

chisel 组合电路相关推荐

  1. 组合电路Verilog的几种描述方式

    组合电路的描述方式主要有四种:真值表,逻辑代数,结构描述,抽象描述. 设计一个三输入多数表决器. 1.真值表方式: 真值表 A B C Y 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 ...

  2. 深入浅出逻辑组合电路(2)

    深入浅出逻辑组合电路(2) 门电路中的冒险现象 通常讨论逻辑电路时,只从抽象的逻辑角度进行描述,不考虑实际电路中必然存在的信 号传输时延和信号电平变化时刻对逻辑功能的影响.逻辑门的传输时延以及多个输入 ...

  3. 【数字逻辑设计】组合电路

    组合电路的功能规范表示当前各种输入值和输出值. 组合电路的时序规范表示从输入到输出延迟的最大值和最小值. 组合电路的递归定义: 每个组件本身都是组合电路. 每个电路结点或者是一个电路的输入,或者仅仅连 ...

  4. (57)FPGA面试题-我们是否应该在敏感列表中包含组合电路的所有输入?

    1.1 FPGA面试题-我们是否应该在敏感列表中包含组合电路的所有输入? 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-我们是否应该在敏感列表中包含组合 ...

  5. 实用一位加法电路-全加器(全加器真值表、全加器的逻辑组合电路)、几种基本组合逻辑电路真值表 补充:逻辑电路基础:与门、或门、非门----计算机组成原理

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 一.全加器的 ...

  6. 组合电路、触发器、时序电路、寄存器

    根据逻辑功能的不同特点,可以将数字电路分成两大类: 组合逻辑电路 时序逻辑电路. 一.组合电路 概念:在组合逻辑电路中,任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关.这就是组合逻辑电路在 ...

  7. 【数字电路基础】时序电路和组合电路的区别、为什么要有触发器

    文章目录 一.时序电路和组合电路的区别 二.电路为什么需要触发器这种结构? 一.时序电路和组合电路的区别 1.组合电路的特点:任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关: 2.时序电路 ...

  8. 吃透Chisel语言.33.Chisel进阶之硬件生成器(二)——Chisel组合逻辑电路生成:以BCD编码表为例

    Chisel进阶之硬件生成器(二)--Chisel组合逻辑电路生成:以BCD编码表为例 上一篇文章我们学习了两种类型的变量在Chisel之中的使用,然后分别介绍了Chisel中四种参数化的方法,对于我 ...

  9. 组合电路中的竞争与冒险

    组合电路中的竞争与冒险 1.竞争与冒险 由于逻辑门存在延迟时间以及信号的传输路径不同,当输人信号电平发生瞬间变化时,电路可能产生与稳态时逻辑功能不一致的错误输出,这种现象就是电路中的竞争与冒险. 例如 ...

最新文章

  1. KubeSphere安装Mysql5.7
  2. 如何做一名专业的软件测试工程师
  3. 新学Node-JS的一点总结
  4. rateLimiter令牌桶限流算法
  5. 微型计算机原理课程设计计算器,微机原理课程设计简易计算器的设计.docx
  6. 【WebRTC---入门篇】(五)Web服务器原理与Nodejs搭建
  7. 云计算体系结构中soa构建层_云计算的服务模式及技术结构
  8. JDK源码解析之 Java.lang.Short
  9. WIN7开启WIFI
  10. Nginx资源合并优化模块nginx-http-concat
  11. java调用js中的方法样例
  12. 【高通SDM660平台 Android 10.0】(21) --- 高通Camera persist使用手册
  13. 实例6,stc8a8k单片机开发板4脚的OLED显示数据(I2C通信)
  14. 微型计算机原理与接口技术——8086指令系统之数据传送指令
  15. 控制科学与工程学科简介
  16. 【毕设项目问题】IDEA打开springboot项目,启动项上有红色叉叉
  17. FPGA中ICAP原语的使用——Multiboot功能的实现
  18. 手机ROM简单制作过程
  19. 水果店怎么摆放吸引客户,水果店堆头怎么摆放吸引人
  20. cax计算机绘图实训报告,cad实习报告精选

热门文章

  1. android备忘录怎么设置闹钟,荣耀备忘录的提醒闹钟怎么设置?
  2. echarts图表中的距离
  3. Dede仿站系列教程
  4. 一本通题解——1191:流感传染
  5. 光纤 PTS 系统解决方案
  6. 学习笔记4.C++浅拷贝和深拷贝
  7. 极大似然估计的直观含义
  8. Android 自定义View实现环形带刻度的进度条
  9. FluorineFX开源库 使用教程(service配置xml说明)
  10. IDEA循环MAP的快捷键和自己常用的循环MAP方式