YADAN Board 是一块核心为 Anlogic FPGA 的可编程硬件设计学习平台,原理图可点击该链接浏览或者下载:Schematic_YADAN_v1_0_1_20211228_B.pdf
(如果 GitHub 加载较慢也可以点 这个链接 在 Gitee 上下载)
当我们需要学习嵌入式入门知识时,我们可以移植一颗 SoC (可选 YADAN Core 内核的 YADAN SoC 或 Zero-riscy 内核的 PULPino SoC)到 FPGA,在其基础上学习嵌入式软件开发。YADAN Board 兼容 Arduino UNO 接口,我们能像使用 Arduino 一样轻松上手。
当我们需要深入学习数字系统设计时,也能够在 YADAN Board 的 FPGA 上容易地搭建数字系统。从译码器等简单的数字逻辑电路、到 CPU 内核、到接入总线的外设、到 SoC,在实践中一步一步学习数字系统设计和芯片架构。
使用 YADAN Board 进行学习或开发需要使用 Arduino IDE、TangDynasty 等开发工具,通常,这些工具能在 Windows 7 及更高版本的电脑上运行。
YADAN Board 主要拥有以下资源:
(1) 主控采用Anlogic高性能FPGA芯片EG4S20NG88
♢ 等效 23520 个四输入查找表
♢ 最大 156.8K 分布式 RAM
♢ 64 块 9Kb 嵌入式 RAM 和 16 块 32Kb 嵌入式 RAM
♢ 64Mbit SDRAM,最高 200MHz 工作频率
♢ 16 个全局时钟,3 个 PLL
♢ 1MSPS 12-bit SAR 型 ADC
(2) 板载2片SPI Flash
♢ 一片 FPGA 配置 Flash, 六线连接 FPGA
♢ 一片用户 Flash, 六线连接 FPGA
(3) 板载六线TF卡接口
(4) 板载1个USB转串口
(5) USB-C供电及程序下载
(6) 板载2个独立微动按键输入
(7) 板载1个LED灯输出
(8) 拓展接口
♢ 兼容 Arduino接口
♢ 0.5mmFPC-24P 标准 DVP Camera 接口
YADAN Board 的硬件布局如图 1.1 所示,硬件接口介绍见表 1.1。
表 1.1 YADAN Board 的硬件接口介绍
硬件功能分组 |
接口名 |
引脚号 |
---|---|---|
CLK |
CLK_24MHz |
P34 |
用户 SPI Flash |
FLASH_CS |
P71 |
用户 SPI Flash |
FLASH_MISO |
P72 |
用户 SPI Flash |
FLASH_WP |
P74 |
用户 SPI Flash |
FLASH_HOLD |
P75 |
用户 SPI Flash |
FLASH_CCLK |
P76 |
用户 SPI Flash |
FLASH_MOSI |
P77 |
TF 卡接口 |
SD_D0 |
P62 |
TF 卡接口 |
SD_D1 |
P61 |
TF 卡接口 |
SD_D2 |
P70 |
TF 卡接口 |
SD_D3 |
P66 |
TF 卡接口 |
SD_CLK |
P63 |
TF 卡接口 |
SD_CMD |
P64 |
Micro-USB 转串口 |
UART_TX |
P52 |
Micro-USB 转串口 |
UART_RX |
P54 |
微动按键 |
K_51 |
P51 |
微动按键 |
K_50 |
P50 |
LED |
LED_23 |
P23 |
LED |
DONE_8 |
P8 |
兼容 Arduino UNO 的接口 |
0 / RXD |
P2 |
兼容 Arduino UNO 的接口 |
1 / TXD |
P3 |
兼容 Arduino UNO 的接口 |
2 |
P4 |
兼容 Arduino UNO 的接口 |
3 |
P5 |
兼容 Arduino UNO 的接口 |
4 |
P10 |
兼容 Arduino UNO 的接口 |
5 |
P11 |
兼容 Arduino UNO 的接口 |
6 |
P12 |
兼容 Arduino UNO 的接口 |
7 |
P13 |
兼容 Arduino UNO 的接口 |
8 |
P14 |
兼容 Arduino UNO 的接口 |
9 |
P16 |
兼容 Arduino UNO 的接口 |
10 |
P17 |
兼容 Arduino UNO 的接口 |
11 |
P18 |
兼容 Arduino UNO 的接口 |
12 |
P19 |
兼容 Arduino UNO 的接口 |
13 (LED_BUILTIN) |
P23 |
兼容 Arduino UNO 的接口 |
A5 |
P87 (ADC_CH6) |
兼容 Arduino UNO 的接口 |
A4 |
P86 (ADC_CH5) |
兼容 Arduino UNO 的接口 |
A3 |
P60 |
兼容 Arduino UNO 的接口 |
A2 |
P59 |
兼容 Arduino UNO 的接口 |
A1 |
P57 |
兼容 Arduino UNO 的接口 |
A0 |
P55 |
兼容 Arduino UNO 的接口 |
SCL |
P86 |
兼容 Arduino UNO 的接口 |
SDA |
P87 |
DVP 接口 |
d0 |
P27 |
DVP 接口 |
d1 |
P28 |
DVP 接口 |
d2 |
P32 |
DVP 接口 |
d3 |
P30 |
DVP 接口 |
d4 |
P29 |
DVP 接口 |
d5 |
P31 |
DVP 接口 |
d6 |
P33 |
DVP 接口 |
d7 |
P37 |
DVP 接口 |
d8 |
P38 |
DVP 接口 |
d9 |
P40 |
DVP 接口 |
PCLK |
P35 |
DVP 接口 |
HREF |
P41 |
DVP 接口 |
VSYNC |
P45 |
DVP 接口 |
XCLK |
P39 |
DVP 接口 |
PWDN |
P42 |
DVP 接口 |
CAMSIOC |
P48 |
DVP 接口 |
CAMSIOD |
P49 |
DVP 接口 |
CAMRST |
P47 |
本节将介绍开发板电路上一些常用的部分,完整的原理图可以在这里找到:Schematic_YADAN_v1_0_1_20211228_B.pdf
(如果 GitHub 加载较慢也可以点 这个链接 在 Gitee 上下载)
开发板上有一个 24MHz 时钟连接到 FPGA 的 P34 引脚,原理图如图 1.2。
YADAN Board 提供了用户可定义的 2 个按键,允许用户与开发板进行交互。每个按键都连接有上拉电阻,不按下的时候提供 3.3V 高电平,按下时提供 0V 低电平,可供 FPGA 检测用户是否按下按键。原理图如图 1.3。
YADAN Board 还提供有 2 个 LED,其中一个在电路板标识为 LED,另一个标识为 DONE,分别连接在 P23 和 P8 引脚上。原理图如图 1.4 和图 1.5。
从原理图上可以看出,P23 引脚输出高电平时可以使标识为 LED 的 LED 点亮,P23 引脚输出低电平时该 LED 熄灭;而标识为 DONE 的 LED 的电路是相反的,P8 引脚输出低电平时该 LED 才会点亮,而 P8 引脚输出高电平时该 LED 熄灭。
标识为 DONE 的 LED 的另一个作用是指示 FPGA 的下载状态,即,当 PC 给 FPGA 下载程序的过程中该 LED 会被点亮,下载完成后 P8 引脚即可作为普通的 GPIO 引脚使用。
YADAN Board 的 GPIO 引脚外形与 Arduino UNO 兼容,表 1.1 中列出了YADAN Board 的 GPIO 引脚与对应的 Arduino UNO 引脚的位置关系。
除此之外,YADAN Board 还有一个 8 针扩展接口。当我们有使用 TF 卡的需求时,可通过该接口连接 TF 卡,当不使用 TF 卡时,可以把它作为普通的 GPIO 使用。原理图如图 1.6。
YADAN Board 提供一个 DVP 摄像头接口,可连接 OV2640 等摄像头。我们可以使用摄像头进行图像采集,并借助 FPGA 进行后续的图像处理、图像识别等操作。硬件原理图如图1.7。
YADAN Board 提供两片 SPI 接口的 FLASH。其中第一片用于 FPGA 配置,目前不对用户开放,第二片的型号为 WINBOND 25Q16,可供用户访问。若部署 SoC,SoC 可使用第二片作为 Flash 存储器,该内容会在后文介绍 SoC 的部分详细介绍。用户 Flash 接口的原理图如图 1.8。
YADAN Board 是一块核心为 Anlogic FPGA 的可编程硬件设计学习平台,我们既能直接写硬件描述语言 (HDL) 在里边实现特定的数字系统、甚至是 CPU 与 SoC,又能部署 SoC 后将其视为常规 SoC 来写软件开发。