电子项目
一个学习仓库。目标是学习PCB设计和数字电路。涉及Verilog、Arduino、ESP32和树莓派。我会在这里持续更新我的进展。
最终目标是打印出真实的电路或PCB。
为此,我首先从基础入手。Arduino草图用于熟悉物理元件:按钮、LED、信号读取等。Verilog部分则用于更深入地理解数字逻辑——寄存器、计数器、存储器等基本构建模块如何协同工作。
制作处理器是为了让我以最痛苦的方式理解电子元件在底层是如何运作的。
因为显然吃苦是好事。
SAP-1——尽可能简单的计算机(参考):https://karenok.github.io/SAP-1-Computer/
结构
arduino/ 在Arduino上进行的物理硬件实验
processor/ Verilog模块——数字逻辑实验
处理器(Verilog)
使用Digital构建和仿真。完整原理图位于main.dig中。
| 模块 | 文件 | 描述 |
|---|---|---|
| 8位加法器 | adder_8bit.v |
对两个8位值进行加法运算,带进位输入/输出 |
| 8位寄存器 | register_8bit.v |
带写使能和同步复位的时钟寄存器 |
| 程序计数器 | program_counter.v |
每个时钟周期递增,支持停止和复位 |
| 存储器 | memory_256x8.v |
256字节同步RAM |
| 8选1多路选择器 | mux_8_to_1.v |
从8条数据线中选择一条 |
| 8位计数器 | counter_8bit.v |
每个时钟周期向上计数,带加载和复位功能 |
| 单次触发 | do_once.v |
单稳态锁存器——仅允许信号通过一次 |
Arduino草图
1. 开关设备(完全无用)
描述:
一个基本的开关设备,带有一个物理按钮和两个LED(红色和蓝色)。
行为:
- 上电时,红色LED亮起。
- 按下按钮,红色LED熄灭,蓝色LED亮起。
- 松开按钮,状态恢复。
电路: 按钮接引脚9(INPUT_PULLUP),蓝色LED接引脚2,红色LED接引脚7。
我的祖先们一直在等待这个设备被发明出来的时刻。现在我们终于做到了。
2. 按钮测试
将一个引脚设置为高电平。仅此而已。
3. 读取测试
读取一个引脚并将值打印到串口。基础入门内容。
4. 交通控制
描述:
一个三状态自动交通信号灯。按定时器循环切换绿灯→黄灯→红灯。按钮可中断并强制立即变为红灯(行人过街)。
行为:
- 绿灯(状态0):绿灯亮5秒,运行2个周期(共10秒),然后进入黄灯。
- 黄灯(状态1):红灯+绿灯同时亮(混合成黄色),蜂鸣器响2秒,然后进入红灯。
- 红灯(状态2):红灯亮5秒,运行2个周期(共10秒),然后循环回绿灯。
- 任何时候按下按钮:直接跳转到红灯,带500毫秒消抖。
- 按钮按下在延迟期间被检测(
responsiveDelay),因此信号灯始终可被中断。
电路: 按钮接引脚9(INPUT_PULLUP),红色LED接引脚2,绿色LED接引脚3,蓝色LED接引脚4,蜂鸣器接引脚7。
