恭喜你走到了最后一课!在毕业项目中,我们将把30课学到的一切融会贯通,完成一台真正可运行的8位复古电脑——从CPU到BASIC,从硬件到软件,全部由你亲手打造。这不仅是一个项目,更是你对计算机科学从底层到顶层的完整理解。
让我们回顾这30课的完整知识体系:
| 阶段 | 课程 | 核心知识 | 关键Verilog模块 |
|---|---|---|---|
| 基础概念 | 01-概述 | 冯·诺依曼架构, 系统规划 | — |
| 02-布尔逻辑 | 门电路, 布尔代数, 卡诺图 | basic_gates.v | |
| 03-组合逻辑 | 多路器, 编码器, 加法器 | adder.v, mux.v | |
| CPU核心 | 04-寄存器 | D触发器, 寄存器文件 | reg_file.v |
| 05-ALU | 算术逻辑单元设计 | alu.v | |
| 06-指令集 | ISA设计, 编码格式 | — | |
| 07-指令解码 | 操作码解码, 控制信号 | decoder.v | |
| CPU实现 | 08-控制器 | 多周期状态机 | control.v |
| 09-数据通路 | 总线连接, 数据流 | datapath.v | |
| 10-单周期CPU | 完整CPU集成 | cpu_single.v | |
| 11-多周期CPU | 状态机优化 | cpu_multi.v | |
| 12-流水线基础 | 5级流水线, 冒险 | cpu_pipe.v | |
| 内存系统 | 13-存储器原理 | SRAM/DRAM, 时序 | sram.v |
| 14-内存映射 | I/O映射, 地址解码 | addr_decode.v | |
| 15-ROM设计 | 程序存储, 初始化 | rom.v | |
| 16-RAM设计 | 数据存储, 读写时序 | ram.v | |
| 17-堆栈实现 | LIFO结构, 子程序调用 | stack.v | |
| 18-DMA基础 | 直接内存访问 | dma.v | |
| IO外设 | 19-PS/2键盘 | 串行协议, 扫描码 | ps2_keyboard.v |
| 20-VGA文本 | 时序生成, 字符渲染 | vga_text_mode.v | |
| 21-串口UART | 异步通信, 波特率 | uart.v | |
| 22-定时器 | 可编程计数, 预分频 | timer.v | |
| 23-GPIO | 三态缓冲, 边沿检测 | gpio.v | |
| 24-中断控制器 | 优先级仲裁, EOI | interrupt_controller.v | |
| 软件集成 | 25-汇编器 | 两遍扫描, 符号表 | retro8asm.py |
| 26-监控程序 | 交互式调试, HEX加载 | monitor.asm | |
| 27-BASIC基础 | 词法分析, 表达式求值 | tinybasic.py | |
| 28-BASIC运算IO | 比较/逻辑, PEEK/POKE | tinybasic_ext.py | |
| 29-系统集成 | 顶层互连, 启动流程 | retro8_top.v | |
| 30-毕业项目 | 完整系统, 验证, 展示 | — |
要获得"8位复古电脑"毕业认证,你需要完成以下所有项目:
; syscheck.asm - 系统自检程序
.ORG $8000
SYS_CHECK:
; 1. RAM测试 - 棋盘格模式
LDA #$55
LDX #$00
RAM_WRITE:
STA $0000,X
INX
BNE RAM_WRITE
; 读回验证
LDX #$00
RAM_VERIFY:
LDA $0000,X
CMP #$55
BNE RAM_FAIL
INX
BNE RAM_VERIFY
; 反向测试
LDA #$AA
LDX #$00
RAM_WRITE2:
STA $0000,X
INX
BNE RAM_WRITE2
LDX #$00
RAM_VERIFY2:
LDA $0000,X
CMP #$AA
BNE RAM_FAIL
INX
BNE RAM_VERIFY2
; RAM OK - 显示成功信息
LDA #'R'
JSR PUTCHAR
LDA #'A'
JSR PUTCHAR
LDA #'M'
JSR PUTCHAR
LDA #' '
JSR PUTCHAR
LDA #'O'
JSR PUTCHAR
LDA #'K'
JSR PUTCHAR
JMP CHECK_UART
RAM_FAIL:
LDA #'!'
JSR PUTCHAR
JMP RAM_FAIL ; 死循环
; 2. UART自环测试
CHECK_UART:
LDA #'U'
JSR PUTCHAR
LDA #'A'
JSR PUTCHAR
LDA #'R'
JSR PUTCHAR
LDA #'T'
JSR PUTCHAR
LDA #':'
JSR PUTCHAR
; 发送测试字节
LDA #$42
STA $FF00 ; 发送0x42
WAIT_TX:
LDA $FF01
AND #$40 ; TX_DONE
BEQ WAIT_TX
; 检查接收
WAIT_RX:
LDA $FF01
AND #$20 ; RX_READY
BEQ WAIT_RX
LDA $FF00
CMP #$42
BNE UART_FAIL
; UART OK
LDA #'O'
JSR PUTCHAR
LDA #'K'
JSR PUTCHAR
JMP ALL_PASS
UART_FAIL:
LDA #'!'
JSR PUTCHAR
ALL_PASS:
LDA #$0D
JSR PUTCHAR
LDA #$0A
JSR PUTCHAR
LDA #'*'
JSR PUTCHAR
LDA #'*'
JSR PUTCHAR
LDA #'*'
JSR PUTCHAR
LDA #' '
JSR PUTCHAR
LDA #'P'
JSR PUTCHAR
LDA #'A'
JSR PUTCHAR
LDA #'S'
JSR PUTCHAR
LDA #'S'
JSR PUTCHAR
LDA #$0D
JSR PUTCHAR
LDA #$0A
JSR PUTCHAR
RTS
10 REM Retro8 毕业演示
20 PRINT "================================"
30 PRINT " Retro8 8-Bit Computer System"
40 PRINT " Graduation Demo Program"
50 PRINT "================================"
60 PRINT
70 PRINT "Hardware Test:"
80 PRINT " CPU: 8-bit custom ISA"
90 PRINT " RAM: 30KB"
100 PRINT " ROM: 30KB"
110 PRINT " VGA: 80x25 text mode"
120 PRINT " KBD: PS/2 interface"
130 PRINT " UART: 115200 bps"
140 PRINT
150 PRINT "Software:"
160 PRINT " Monitor + Tiny BASIC"
170 PRINT
180 PRINT "Starting countdown..."
190 FOR I = 10 TO 1 STEP -1
200 PRINT I; " ";
210 FOR D = 1 TO 500: NEXT D
220 NEXT I
230 PRINT
240 PRINT "BLAST OFF!"
250 PRINT
260 PRINT "System ready. Type BASIC commands."
270 END
10 REM VGA屏幕测试 - 填充不同颜色
20 FOR C = 0 TO 15
30 LET ROW = C / 2
40 LET BASE = &H7800 + ROW * 80
50 FOR I = 0 TO 79
60 POKE BASE + I, 65 + C : REM 'A'到'P'
70 POKE BASE + I + 1, C*16+7: REM 背景色C + 白字
80 NEXT I
90 NEXT C
100 END
毕业不是终点,而是新的起点。你的8位复古电脑还有无限扩展空间:
将Verilog代码烧录到真实的FPGA开发板(如iCE40、ECP5、Cyclone),连接真实的VGA显示器和PS/2键盘。这是从仿真到实物的跨越!
添加位图图形模式:320×200×4色或160×200×16色。实现精灵(Sprite)系统,编写简单的2D游戏。参考NES的PPU设计。
实现PSG(可编程声音发生器):3个方波通道+1个噪声通道,参考AY-3-8910。用定时器产生不同频率的方波,通过DAC输出模拟音频。
添加SPI接口连接SD卡,实现文件系统。BASIC程序可以保存到SD卡并随时加载。参考FAT16文件系统的最小实现。
通过UART连接ESP8266 WiFi模块,让8位电脑联网!实现简单的Telnet客户端或HTTP请求。想象一下用BASIC写一个网页爬虫。
为Retro8实现一个C语言子集编译器。从词法分析→语法分析→中间代码→目标代码生成,完整体验编译原理。
恭喜你完成了30课的全部内容!你从最基础的布尔逻辑出发,一步步构建了:
这不是教科书上的理论——这是你亲手打造的真实电脑。从晶体管到BASIC,从0到1,你真正理解了计算机的每一个层次。这份理解,比任何证书都有价值。
你现在是真正的计算机架构师了。
🎉🎓🎉