我设计了一个基于半字节的Verilog CPU,用于构建科学计算器

Hacker News Top 工具

摘要

该项目使用FPGA在硬件中实现了一个功能齐全的科学计算器,包括自定义软CPU、微码固件和支持工具。它提供了一个基于Web的模拟器和开源的Verilog代码。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/05/15 18:33

gdevic/FPGA-Calculator

来源:https://github.com/gdevic/FPGA-Calculator

从逻辑门到计算器

该项目使用 FPGA 在硬件上实现了一个功能齐全的科学计算器。它包含一个自定义软 CPU、微码固件以及配套工具。

完整故事请参见博客

在网页浏览器中尝试:

  • 无调试器版本 (https://baltazarstudios.com/files/calculator/Calculator.html)
  • 有调试器版本 (https://baltazarstudios.com/files/calculator-d/Calculator.html)

截图

项目结构

文件夹描述
verilog/CPU、ALU、I/O 及测试台架的 SystemVerilog 源文件
ucode/软 CPU 的微码(固件)
quartus/用于 FPGA 综合的 Quartus 项目文件
modelsim/ModelSim 仿真设置
Qt/基于 Qt 的仿真器和调试器(使用 Verilator)
calctest/硬件验证的命令行测试框架(使用 Verilator)
tools/微码的汇编器和脚本编译器
Pathfinding/算法研究与验证项目

快速开始

体验计算器最快的方式是构建 Qt 仿真器:

# 在 WSL2 中
cd /mnt/c/Projects/FPGA-Calculator/verilog
make qt

然后打开 Qt/Calculator.pro 到 Qt Creator 中,并选择 “Desktop Qt MSVC2022 64 Bit” 进行构建。

详细说明请参见 verilog/Qt/ 文件夹。

所需工具

根据您的目标安装以下工具:

工具用途备注
VerilatorVerilog 仿真Qt 仿真器必需
Qt桌面/WebAssembly/Android 应用版本 6.9+
QuartusFPGA 综合Cyclone II 需要 13.0 SP1 版本
ModelSim波形仿真可选
Visual Studio 2022Qt 的 C++ 编译器社区版
Python 3汇编器及工具

Verilator 设置

Verilator 运行在 WSL2(适用于 Linux 的 Windows 子系统)中。项目源文件位于 Windows 分区,并从 WSL2 访问。

目标Verilator 版本备注
桌面 (Qt/MSVC)5.x (最新)推荐
WebAssembly4.228必需(无线程支持)
# 安装依赖
sudo apt-get install build-essential autoconf flex libfl-dev bison

# 克隆并构建 Verilator
git clone https://github.com/verilator/verilator
cd verilator
git checkout v5.042    # 用于桌面,或 v4.228 用于 WebAssembly
autoconf
./configure
make -j8
make test

# 设置环境变量(添加到 .bashrc 中持久化)
export VERILATOR_ROOT=$(pwd)

可选安装 GtkWave 用于查看波形:

sudo apt install gtkwave

构建目标

目标命令描述
Qt 仿真器verilog/ 中执行 make qt构建 Qt 桌面应用程序
Calctestverilog/ 中执行 make calctest,然后 calctest/ 中执行 make命令行测试框架
ModelSimverilog/ 中执行 make test_selfCPU 自测,用于 ModelSim
FPGA 硬件verilog/ 中执行 make revB为 RevB 板组装微码

各子文件夹中的 README 文件提供了详细的构建说明:

寻路项目

独立的研究与验证项目:

文件夹描述
Pathfinding/Proto/BCD 算术黄金参考,用于硬件验证(子模块)
Pathfinding/Proof/使用基本算术实现复杂运算的概念验证
Pathfinding/Methods/计算器算法的 C++ 实现(已弃用)
Pathfinding/Input/数值输入状态机仿真
Pathfinding/Mockup/键盘布局设计与用户交互测试

许可证

本项目采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 (https://creativecommons.org/licenses/by-nc-sa/4.0/)。

您可以自由地:

  • 共享 — 以任何媒介或格式复制和分发本材料
  • 改编 — 修改、转换或基于本材料进行创作

但必须遵守以下条款:

  • 署名 — 您必须给出适当的署名,并指出是否进行了修改
  • 非商业性使用 — 您不得将本材料用于商业目的
  • 相同方式共享 — 贡献必须使用相同的许可协议分发

相似文章

Show HN: Nibble

Hacker News Top

Nibble 是一种类 C 的系统编程语言,用 3000 行 C 代码实现,无需外部依赖或堆分配即可生成 LLVM IR。它支持 defer、递归、多种类型、结构体、指针,并包含图形演示。

构建 TD4 4 位 CPU

Hacker News Top

本文详细介绍了基于《如何构建 CPU》一书及开源 PCB 设计,亲自动手组装并测试 TD4 4 位 CPU 的过程。