- 博客(9)
- 收藏
- 关注
原创 Chisel及Scala语言学习笔记(8)
本文介绍了Chisel硬件设计中的三个关键概念:1. 可配置FIR滤波器实现,从固定4抽头结构改进为支持任意数量抽头的动态版本;2. 硬件集合类型Vec的使用,支持运行时修改滤波器系数,实现更灵活的硬件设计;3. Decoupled接口和配套组件(队列、仲裁器等),提供标准化的数据流控制机制。文章详细讲解了FIR滤波器的数学原理、Vec集合的硬件特性以及Decoupled接口的流控机制,并通过代码示例展示了优先级仲裁器、计数器等实用硬件组件的实现方法。这些技术共同构成了Chisel进行高效数字电路设计的基础
2025-11-25 21:03:34
741
原创 Chisel及Scala语言学习笔记(7)
本文介绍了Chisel硬件描述语言中的参数化设计和Scala语言特性在硬件设计中的应用。主要内容包括:1)参数化模块设计,展示如何通过参数传递实现可配置的硬件模板;2)验证机制对比,分析require和assert在参数验证与功能验证中的不同应用;3)Option类型的应用,演示可选参数和默认值的实现方法;4)模式匹配技术,说明其在硬件设计中的多种应用场景;5)隐式参数和转换,介绍如何简化代码并实现自动类型转换。这些特性共同增强了Chisel的灵活性和表达力,使硬件设计更加模块化和可复用。
2025-11-25 19:14:47
564
原创 Chisel及Scala语言学习笔记(6)
本文介绍了ChiselTest的优化改进及其在硬件测试中的应用。主要内容包括:1)ChiselTest语法优化,通过简化测试启动方式、增强类型安全和提供更直观的提示,减少了样板代码;2)Decoupled接口的测试方法,详细说明了队列模块的实现原理和测试流程,包括初始化步骤和高级测试方法;3)并发测试技术,通过fork和join实现输入输出线程的并行执行;4)以GCD计算模块为例,展示了复杂模块的测试方法。这些改进使ChiselTest测试代码更简洁、安全且高效,适用于各种硬件模块的验证场景。
2025-11-23 12:35:36
578
原创 Chisel及Scala语言学习笔记(5)
在数字电路设计中,寄存器(Reg)是保持状态的核心元件,其行为与时钟上升沿同步变更数据,而线网(Wire)则用于组合逻辑。寄存器可通过Reg类型显式声明,支持条件赋值,并在未赋值时维持状态;而Wire必须被持续驱动。两种结构都能在Chisel中通过统一语法实现控制流,但寄存器适用于状态机、计数器等时序逻辑,Wire用于组合电路连接。RegInit可指定复位值,确保确定初始状态。两者在操作上遵循"最后连接语义",支持类型丰富的操作,包括UInt和SInt等,开发者需根据记忆性需求选择适当元
2025-11-18 20:05:43
581
原创 Chisel及Scala语言学习笔记(4)
摘要:本文探讨了Chisel硬件描述语言与Scala软件在控制流处理上的关键差异。在Chisel中,when/elsewhen/otherwise结构用于生成多路选择器硬件,不同于Scala的if/else逻辑;Wire可作为临时变量解决when结构不能返回值的问题;使用"==="而非"=="进行比较;最后通过多项式计算和状态机等实例演示了这些特性的具体应用。这些差异体现了硬件设计中运行时动态选择与软件编译时静态决定的本质区别。
2025-11-11 20:41:24
379
原创 Chisel及Scala语言学习笔记(3)
本文介绍了Chisel硬件描述语言的基础操作和关键概念。主要内容包括:1. 硬件节点特性:使用val定义不可变硬件节点,:=进行连接赋值;未连接的节点会被优化器移除;类型不匹配会报错。2. 基本运算符:演示UInt类型的加减乘运算和测试方法。3. 组合逻辑:Mux实现三目选择,Cat进行位拼接,注意参数顺序和位宽处理。4. 实践练习:完成MAC(乘加)模块和仲裁器(Arbiter)设计,展示ready-valid接口的实现。5. 参数化设计:通过可选的saturate参数生成不同版本的加法器,在编译时决定饱
2025-11-04 20:30:38
877
原创 Chisel及Scala语言学习笔记(2)
Chisel是用Scala嵌入式语言构造硬件的工具。本文介绍了Chisel的基本概念和使用方法:1. 定义Module类创建硬件模块,如Passthrough示例;2. 通过IO和Bundle声明输入输出端口;3. 使用":="运算符进行硬件连接;4. 通过参数化生成不同位宽的模块;5. 使用test函数进行单元测试,包含poke输入和expect验证输出;6. 调试时区分println(代码生成阶段)和printf(仿真阶段)的不同输出效果。文章展示了如何用Chisel从定义简单模块到
2025-10-28 20:54:23
1009
原创 Chisel及Scala语言学习笔记(1)
本文介绍了Scala编程语言的基础语法特性:1. 变量声明使用var(可变)和val(不可变),推荐优先使用val;2. 条件语句if-else可返回值,类似三元运算符;3. 函数定义支持默认参数、重载、嵌套和递归,单行函数可省略大括号;4. 列表(List)操作包括::(前插)、++(连接)及head/tail等;5. for循环支持to/until范围和步长控制;6. 使用import导入其他包,_表示通配符;7. Scala是纯面向对象语言,所有值都是对象,支持类定义和实例化。文中通过具体代码示例展示
2025-10-21 21:35:58
658
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅