我从零开始用VHDL构建了一个新的8位CPU(从指令集架构开始)。我觉得大多数教育用软核在抽象层面上隐藏了太多内容。例如,如果我可以通过一个调用优化过的算术库的单一赋值来完成a+b,那么我为什么要学习涟漪进位加法器呢?如果我可以像使用编程语言那样用一个简单的PROCESS语句来完成所有控制逻辑,那我为什么还要学习触发器呢?当然,抽象是硬件描述语言的主要卖点,但如果我严格保持结构性,只依赖于ieee.std_logic_1164,是否可行呢?
结果是可行的,并且效果很好。没有使用算术库,除了DFF组件外没有其他PROCESS。当然,与优化过的核心相比,这个设计在资源使用上有点“资源消耗大”(例如,内存是由触发器构建的,而不是利用FPGA内部存储器的块RAM),但你实际上可以实时追踪数据路径中的每个信号。
我还用C99编写了一个汇编器,没有使用外部库(请多包涵,我觉得我的代码非常原始)。我将Sci1(Scintilla)、GHDL和GTKWave打包成一个单一的安装程序,这样你就可以编写汇编代码并立即查看波形,而无需花费数小时配置模拟器。目前仅支持Windows,但我总有一天会在Linux上实现这个功能。我在Tang Primer 25K和Cyclone IV上进行了测试,并且包含了我的Gowin、Quartus和Vivado项目文件。这应该能让你在FPGA上轻松运行。
所有内容都遵循GPL3协议。
(编辑:我没有使用人工智能。对于VHDL来说,这并不是浪费时间,因为我的设计太新颖了——但即使是进行测试也会浪费我的时间,因为那些大型语言模型对于x86/ARM训练得太好了,而我的标志逻辑源自6502/6800,甚至我的涟漪进位加法器在减法时也不会翻转进位位。关键是——人工智能无法提供帮助。它只是一味抱怨我的汇编器的C代码不符合2026年的标准。)
返回首页
最新
我创建了一个包,使用 Raph Levien 的 Vello 作为在 WebGPU 上为 React 提供的超快速 2D 渲染器。它使用 WASM 连接到 Rust 代码。
ChunkHound的目标很简单:提供以本地为优先的代码库智能,帮助您按需获取深入的核心开发级见解,生成始终最新的文档,并能够从小型代码库扩展到企业级的单体代码库——同时保持免费、开源和与提供商无关(支持VoyageAI、OpenAI、Qwen3、Anthropic、Gemini、Grok等)。<p>我非常希望听到您的反馈,如果您已经提供了反馈,感谢您成为这段旅程的一部分!