1. 蜂鸟E205开发板初识:硬件资源与上电体验
各位同学,欢迎来到这门实战课。我是你们的讲师,一个在FPGA和RISC-V领域摸爬滚打多年的工程师。
第一节课,咱们不急着写代码。先把手里的板子看明白,搞清楚它身上都有什么宝贝。这就像你拿到一把新扳手,总得先知道哪个头是拧螺丝的,哪个头是敲核桃的,对吧?
1.1 开发板硬件资源一览
蜂鸟E205开发板,说白了就是一块专门为RISC-V处理器设计的FPGA评估板。我当初第一次拿到它的时候,第一反应是——这板子真小,但该有的东西一个不少。
咱们先看看板子上都有哪些核心部件:
| 硬件模块 | 型号/规格 | 我的备注 |
|---|---|---|
| FPGA主芯片 | Xilinx Artix-7 XC7A35T | 性价比极高,适合教学 |
| RISC-V核心 | 蜂鸟E205(软核,烧录在FPGA内) | RV32IMAC指令集 |
| 板载调试器 | FTDI FT2232H | 支持JTAG和UART |
| DDR3内存 | 128MB | 跑Linux够用,裸机绰绰有余 |
| Flash存储器 | 16MB SPI Flash | 存放FPGA配置和程序 |
| 时钟源 | 50MHz有源晶振 | 板载主时钟 |
1.2 核心芯片:FPGA与RISC-V的关系
这里有个概念,很多初学者容易搞混。蜂鸟E205开发板上的RISC-V处理器,并不是一个独立的芯片。它其实是一个软核——说白了就是用硬件描述语言写成的处理器代码,然后烧录到FPGA里跑起来的。
你想想看,FPGA就像一块可以任意塑形的电路板。而RISC-V处理器,就是我们要在这块板子上“捏”出来的一个CPU。这就是为什么我们叫它“软核”。
核心理解:
- FPGA是硬件平台,提供可编程逻辑资源
- RISC-V是处理器架构,以IP核的形式运行在FPGA上
- 两者结合,让我们可以自由修改处理器内部结构
我个人习惯把这种组合叫做“会变形的CPU”。你在做裸机程序时,写的代码最终会在这个软核上执行。但如果你觉得处理器哪里不够用,比如想加个自定义指令,直接改FPGA的代码就行。这在传统芯片设计里是想都不敢想的。
1.3 开发板外设接口一览
板子上的外设接口,是咱们和外界打交道的窗口。我列个清单,你对着板子一个一个找:
- USB-UART接口:串口通信,调试必备。我建议你优先学会用这个。
- JTAG接口:用于下载程序和在线调试。蜂鸟E205的调试器是板载的,插上USB就能用。
- LED指示灯:4个用户可编程LED。咱们第一节课就要点亮它们。
- 按键:4个独立按键,可以用来做输入。
- SD卡槽:扩展存储,跑文件系统时用得上。
- 以太网接口:百兆以太网,网络通信。
- HDMI接口:视频输出,可以接显示器。
- GPIO排针:扩展接口,想接什么接什么。
1.4 上电初体验:让LED闪烁
好了,理论知识讲完了。咱们来点实际的。把板子插上USB线,你会看到板子上的电源指示灯亮起。如果一切正常,板子自带的出厂程序会让几个LED轮流闪烁。
但咱们要做的,是写一个自己的程序,让LED按照我们的意愿闪烁。这里我先演示一下流程,具体的代码细节后面章节会展开。
先看看蜂鸟E205的LED硬件连接:
| LED编号 | FPGA引脚 | 控制逻辑 |
|---|---|---|
| LED0 | J15 | 高电平点亮 |
| LED1 | L16 | 高电平点亮 |
| LED2 | M14 | 高电平点亮 |
| LED3 | N15 | 高电平点亮 |
写一个最简单的C程序,让LED0以1秒为周期闪烁:
#include "e205.h"
void delay(volatile int count) {
while (count--);
}
int main() {
// 设置GPIO方向为输出
GPIO_DIR = 0x01;
while (1) {
GPIO_OUT = 0x01; // 点亮LED0
delay(5000000);
GPIO_OUT = 0x00; // 熄灭LED0
delay(5000000);
}
return 0;
}
这段代码看着简单,但背后涉及的东西不少。GPIO_DIR是什么?为什么delay要写volatile?这些我都会在后面的章节里一一拆解。
好了,第一节课就到这里。你现在的任务就是:把板子插上电,确认它能正常工作。然后,试着理解上面那段代码的大致逻辑。下一节课,咱们会深入讲解如何搭建开发环境,以及如何编译和下载这个程序。