在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Chisel 中文教程

Chisel 中文教程

一般编程问题

下载此实例

实例介绍

【实例简介】Chisel 中文教程

Chisel Design Digital,从安装和重点开始,像搭建建筑一样,每一个砖块,一个砖块地,便于读者理解。

在最后,提供了一个简单,有用的设计:一个RISC处理器。

【实例截图】

【核心代码】

Contents
1 写 在 前 边 7
2 前 言 9
3 导 论 11
3.1 安装Chisel和FPGA工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.1 macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.2 Linux/Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.1.3 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.4 FPGA 工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.2 Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.3 Chisel Hello World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Chisel的IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.5 访问源码和电子书功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.6 更多读物 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.7 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 基 本 组 成 部 分 21
4.1 信号类型和常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.2 组合电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2.1 复用器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 状态寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.3.1 计数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4 BundleVec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.5 Chisel生成的硬件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
5 搭 建 过 程 和 测 试 33
5.1 使用sbt搭建你的项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.1 源文件结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.1.2 运行sbt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.1.3 工具流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3
5.2 使用Chisel测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.1 PeekPokeTester . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2.2 使用ScalaTest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2.4 printf Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.3 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3.1 一个最小项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3.2 一个测试练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
6 组 成 部 分 47
6.1 chisel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6.2 一个运算逻辑单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4 使用函数的轻量级组成部分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7 组 合 搭 建 模 块 55
7.1 组合电路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2 解码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.3 编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
7.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8 时 序 建 造 模 块 63
8.1 寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
8.2 计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8.2.1 向上和向下计数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
8.2.2 使用计数器产生时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
8.2.3 nerd计数器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.2.4 一个计时器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.2.5 脉冲宽度调制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
8.3 移位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.3.1 使用并行输出的移位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8.3.2 并行读取的移位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
9 输 入 处 理 83
9.1 异步输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9.2 防抖动 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
9.3 输入信号滤波 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
9.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10 有 有 限 状 态 机 91
10.1 基本有限状态机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4
10.2 使用Mealy FSM产生快速输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
10.3 MooreMealy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
10.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
11 状 状 态 机 通 信 101
11.1 一个灯光闪烁器的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
11.2 具有数据通路的状态机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
11.2.1 位一计数的例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
11.3 Ready-Valid 界面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
12 硬 硬 件 生 成 器 115
12.1 一点Scala的内容 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
12.2 使用参数配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
12.2.1 简单参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
12.2.2 使用类型参数的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
12.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
12.2.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
12.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
12.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
12.5 使用函数式编程做硬件生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
13 示 示 例 设 计 129
13.1 FIFO 缓冲器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
13.2 一个串口端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
13.3 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
13.3.1 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
13.3.2 重新设计冒泡FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
13.3.3 Double Buffer FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
13.3.4 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
13.3.5 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
13.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
13.4.1 探索冒泡FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
13.4.2 The UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
13.4.3 探索FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
14 设 设 计 一 个 处 理 器 151
14.1 从ALU开始 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
14.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
14.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
15 贡 贡 献 献chisel 161
15.1 安装开发环境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
15.2 测试 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5
15.3 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
16 总 总 结 165
A chisel项 项 目 167
B Chisel 2 169
C 简 简 称 173

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警