2作者: charlesfrisbee20 天前
我主要想快速原型化硬件想法,尽量缩短从编写电路到看到它运行之间的时间。市面上已经有基于通用语言的成熟的嵌入式硬件描述语言(HDL),例如 Chisel (Scala)、Amaranth (Python)、SpinalHDL。它们都有自己的模拟器,但这些模拟器运行在 JVM 或 Python 工具链中。我想要一个可以直接在浏览器中打开并开始构建的东西,无需任何安装。如果有人熟悉 Steam 上的游戏 Turing Complete,它就是我灵感的很大一部分来源。我只是厌倦了手动连接门电路。 Simten 是一种纯 TypeScript 编写的硬件描述语言。电路是一个类型化的值,你可以逐周期地在 Node.js 或浏览器中进行模拟,并提供一个交互式视图,你可以深入其中并在周期之间来回切换。无需安装任何东西即可运行,并且电路可以作为实时组件嵌入到网页中。当你想要进一步开发设计时,它仍然会为现有的基本模块(非常早期、扁平化的模块)导出 Verilog。另外,由于它是 TS,你可以做一些很酷的事情,比如使用 npm 中的现有库并在编译时将它们集成到模拟中,例如加载数据,将其烘焙到 ROM 中,然后运行它。主页顶部的 figlet 示例展示了这一点。 还有一个 MCP,允许你使用 Claude 进行构建并将本地内容推送到浏览器(我知道大多数人可能不想学习它的语法)。 就我目前用它所做的而言: * 门级 snake/pong(实际上比听起来要难!) * 一个 rv32i (risc-v) CPU,能够运行使用 GCC/rustc 编译的 C/C++/Rust * 通过开源 FPGA 工具链运行输出的 verilog(以及一些特定板的附加组件),例如 Verilog -> Yosys -> nextPNR -> 在我的 ULX3S 上刷写并运行 我很想听听你的想法,以及人们是否会真正使用它。我曾想过它的交互式方面可能在计算机科学课程中很有用。这样学生就可以看到流水线冒险逐周期地发生,而不是教科书中的静态示例。 * [https://simten.dev/circuit](https://simten.dev/circuit) (用于编写/模拟电路的 Playground) * [https://simten.dev/cpu/rv32i](https://simten.dev/cpu/rv32i) (可以单步执行的 RISC-V CPU) * [https://github.com/simtenHQ/simten](https://github.com/simtenHQ/simten) — 仓库
1作者: fuglede_20 天前
各位 HN 的朋友们!我和我的朋友 Claude(标题中明显的 CSS 渐变效果就是证明)一起做了一个小游戏,用来向我的孩子们解释我们在工作中做的一些事情。 在这个游戏中,你们轮流将硬币向下移动,直到无法再移动为止。如果你学过组合博弈论,你可能会遇到 Nim 游戏,你可以把这个游戏看作是 Nim 游戏的一个变种,只不过每个格子只能有一个硬币。然而,关于如何玩这个游戏的理论不像 Nim 游戏那样成熟;玩足够多的硬币时,我发现很难在脑海中判断一个局面是好是坏。 关于 Welter 游戏的一个有趣事实是,它的获胜局面构成了特定纠错码的码字,这种码被称为恒重二元字典序码(Constant Weight Binary Lexicode)(Conway 和 Sloane,1986)。这意味着擅长玩这个游戏就等于擅长解码这种码的信息。不过,可能直接玩游戏更有趣。