FPGA & CPU
简介
这一系列文章是我这些年学习软件和硬件的一些总结和相关资料(最终的目的是用 FPGA 实现一个可用的 CPU 并为其提供基础的 OS 和编译环境,这一系列文章还有几年才能完成,持续更新中…)。下文列出了一些我觉得比较好的书籍,当然不一定适合所有人
HDL 和程序的区别
一般而言,HDL 不是 C++/Java 意义上的程序,不是执行一系列的指令然后产生一个结果,而是硬件结构的模型,这个模型接收到输入信号就会在线路上产生输出信号
在最快的集成电路中,单个晶体管的开关时间可以小于 10ps。由这些晶体管构成一个完整复杂的器件,从检测到输入到产生输出的时间还不到 2ns,这样的器件每秒能产生 1 亿或者更多的结果,这是 FPGA 比 CPU 在某些领域快的主要原因
资源
书籍
- 电学常识:《电路》 / 《模拟电子技术基础》 & 公开课 / 《数字电子技术基础》 & 公开课 /
- 离散数学:离散数学概论公开课 / 《离散数学及其应用》 /
- C++ :C++ Primer (5th)&6th / C++ Concurrency in Action (2ed) /
- DS & Algs:DSAAC++ (4th) / 算法(第4版) / 《算法设计与分析》 & 公开课 / 算法导论(3th)&4th /
- FPGA 与 Verilog 入门:《搭建你的数字积木》 & github / 数字设计:原理与实践 / 《FPGA原理和结构》 / Verilog 数字系统设计教程 / 《Verilog HDL实用精解》 /
- 数字电路 & HDL & CPU 入门:
- 数字设计和计算机体系结构,这本书有 MIPS、ARM 和 RISC-V 三个版本
- 编译器入门:Crafting Interpreters /
- 操作系统:CSAPP(2ed) / xv6-riscv-book /
- 其他相关书籍:
- 计算机系统要素——从零开始构建现代计算机 & 资料下载
- 计算机体系结构:量化研究方法 / 计算机组成与设计:硬件/软件接口, MIPS & ARM & RISC-V 三个版本
- CPU 自制入门 / 手把手教你设计CPU:RISC-V处理器 /
网站与开源代码
- 学习 Verilog 的网站:hdlbits / asic-world /
- 开源的综合与布线工具:yosys / nextpnr / slang。可以下载编译好的工具 Free OSS CAD Suite,其中包含了 iverilog、yosys 等工具
- 游戏我的世界(minecraft)中提供的综合工具:MinecraftHDL /
开发环境
-
开源 Verilog 学习工具(OSX):Icarus Verilog / Verilator / GTKWave & dwfv / Vim & verible / yosys / nextpnr / slang
- 直接安装 Free OSS CAD Suite 即可;其他 HDL 工具可以参考 chipsalliance
- verible 提供了很多小工具以方便 HDL 开发(通过
--helpfull
查看帮助信息)verible-verilog-syntax
。语法解析工具,可以用于语法分析与检查(--printtokens / --printtree
)verible-verilog-lint
。Verilog Lint 工具verible-verilog-format
。代码格式化工具,如果代码有错误则格式失败,此时需要使用 syntax 或者 lint 工具先确定并解决代码错误- 其他工具还有代码混淆工具 / Lag Svr 等,细节请参考官网
-
免费电路仿真工具
-
FPGA 开发板。Altera / Xilinx 都可以,软件的使用流程大致相同,学会一个,另一个就很简单了
- Altera 免费:Quartus Prime 精简版 Free / Quartus II Web Edition Free /
- Xilinx:Vivado /