这套资料在干嘛?

这是「移远 FPGA 大赛」HX4S20C 开发板随板附带的官方 DEMO 实验教程——最开始的官方入门教程,共 36 个实验。从安路 TD 软件怎么用、点个灯、数码管,一路做到 VGA、HDMI、千兆网、北斗 GPS。每篇都从电路原理讲到代码实现和上板现象,零基础也能跟着做完。做竞赛题之前,先把这 36 个实验过一遍。

这块板子与这套资料

HX4S20C 是大赛指定的 FPGA 开发板,主芯片为安路 EG4S20BG256,属于紫光同创之外国产 FPGA 中很典型的入门型号:约 2 万逻辑单元,板载 50MHz 有源晶振、LED、按键、开关、多位数码管,还预留了 VGA、HDMI、千兆网口、SD 卡座、音频接口和 AD/DA 子卡位置。官方把每个外设都写成一个 DEMO 实验,配好了工程、Verilog 源码和引脚约束,就是让你照着跑通、再改出自己的想法。

这套 PDF 原文由大赛官方随板发放,讲解偏简略,经常直接甩一段代码和一个约束表。所以本站的每一篇都做了二次精讲:先讲清楚电路原理(为什么这么接、信号长什么样),再逐段拆代码(每个 always 块在干嘛),最后才是上板流程和现象。原文的代码、引脚约束、参数全部原样保留,原文里 OCR 或笔误导致的问题也会明确标注出来,不会悄悄替你改掉。

怎么用这套教程

  1. 先过 demo-00(安路 TD 软件使用流程):学会新建工程、添加 Verilog 文件、综合、分配引脚、生成码流、用 TD 烧录工具下载到板子这一整套操作。后面所有实验都重复这套流程,只是文件和引脚不同。
  2. 按编号顺序做实验:01~11 是基础(点亮、输入、数码管、计数器、锁相环、消抖),每篇工作量在半小时到两小时之间;12 以后进入接口和综合系统,可以按兴趣跳着做,但建议每个都亲手敲一遍代码,不要只复制粘贴。
  3. 每篇做完做自测:每篇文章结尾都有折叠的自测题,能独立答上来才算过关。答不上来就回到对应小节再看一遍原理部分。

学习路线建议

如果时间紧,按这六组来划分优先级:点亮与输入(呼吸灯、流水灯、按键、开关)让你建立「写代码=控制硬件」的手感;显示输出(数码管三篇、点阵、LCD 两篇、彩屏、VGA、HDMI)是竞赛展示的门面,时序概念会在这里反复出现;时序与逻辑(计数器、多路选择器、乘法器、消抖、交通灯状态机、锁相环)是笔试和面试的高频考点;通信与接口(串口、PS/2、SD 卡、千兆网、北斗 GPS)做综合题时的数据来源;信号与模拟(AD/DA 三篇、乐曲演奏、电子琴、卡拉OK)是拉开差距的加分项;最后的综合系统(直流电机测控、VGA 五子棋、打字游戏)建议组队完成,当作赛前大练兵。

做实验前需要准备什么

硬件:HX4S20C 开发板、USB 下载线(同时也是串口线,串口实验直接用它)、5V 电源;做 AD/DA、VGA、HDMI 相关实验还要插上对应的子卡或连接线。软件:安路 TD 集成开发环境(版本要和大赛通知一致,demo-00 里有安装步骤)、串口助手(XCOM 或 Putty 均可)、代码编辑器(VS Code 加 Verilog 插件体验最好)。知识:至少把 Verilog 的 module、always、assign、阻塞与非阻塞赋值这几样弄明白,不需要会写复杂状态机,教程会带着你一步步建立。 三个新手最常见的坑提前说:第一,引脚约束一定要用官方给的那份,自己乱填轻则不亮、重则短路发热,发现板子芯片烫手立刻断电检查约束;第二,代码写完要先综合看报告再上板,综合报的 warning 不全是无害的,latch 和位宽截断的 warning 要逐个看懂;第三,烧录成功但现象不对时,先按复位键、再查时钟和复位极性(这块板复位是低有效),九成问题出在这两处。

现象和教程不一样怎么办

先别急着怀疑板子。绝大多数「现象不对」都是三类问题:时钟没进来(晶振到 GCLK 管脚的约束没生效)、复位极性写反(这块板按下按键是低电平,代码里如果是高有效就一直停在复位)、引脚约束和实际硬件对不上(尤其注意不同实验里同名信号的引脚可能不同,比如按键和 LED 在几个实验里有两套分配,官方引脚分配表里都标了红色冲突说明)。排查顺序建议是:先看综合报告里 pin 分配是否和约束文件一致,再用 SignalTap 之类在线逻辑分析仪抓内部信号,最后才考虑硬件问题。每个实验的讲解篇里也写了该实验特有的排错点,遇到问题先翻对应章节的 [!warning] 提示。

📚 目录

篇目一句话介绍
🧭 安路 TD 软件使用流程:从新建工程到烧录码流以 1 秒闪烁灯为例,完整走通安路 TD 新建工程、写代码、锁引脚、下载固化的全流程,并附带 ModelSim 仿真入门。
💡 呼吸灯实验:让 LED 亮灭之间有渐变用 PWM 思路在 FPGA 上实现呼吸灯:1KHz 周期计数器加占空比递增递减,让 LED 由灭渐亮再由亮渐灭。
🔘 按键控制 LED 灯实验:FPGA 的第一个输入用四个按键切换四种 LED 显示模式——左右流水灯、闪烁与常亮,学习 FPGA 按键输入与状态切换的基本写法。
🔢 七段译码器设计:让数码管显示数字用 case 语句实现共阳七段数码管的十六进制译码器,从真值表到 Verilog 到上板,完整走通组合逻辑设计流程。
🖥️ 静态数码管显示设计用顶层加两个子模块的分层设计,实现 6 位数码管从 0 到 F 每 0.5 秒递增的十六进制循环显示。
🔄 8 位动态扫描设计:一眼看成一个数字的把戏用高速轮流点亮 8 位数码管的动态扫描技术,让每位显示不同数字,理解视觉暂留与扫描频率的设计要点。
🧮 十进制计数器:按键一下,数字加一用 4 位二进制计数器实现 0~9 循环计数,经七段译码后在数码管显示,带复位、加载与使能三个按键控制。
⏫ 八位十进制计数器:从一位到八位的进阶在十进制计数器基础上级联扩展到多位,配合动态扫描译码模块,在数码管上实现多位十进制累加显示。
🎛️ 按键及开关测试:把开发板的输入摸个遍通过把按键与拨码开关状态直接点亮 LED 的实验,弄清开发板输入信号的电平特性与两级寄存器打拍。
🚏 多路选择器:数字电路里的铁路道岔用四选一多路选择器在不同频率的蜂鸣器信号间切换选通,顺带认识有源与无源蜂鸣器的驱动差别。
📡 锁相环测试:用 PLL 给系统变出高频率时钟通过 TD 的 IP Generator 配置 PLL,从 50MHz 输入时钟生成 6.25M、25M、70M 三路时钟,并用示波器验证输出。
✋ 消抖动电路设计:按键抖动的治法用两个独立计数器同时统计按键高、低电平脉宽,超过阈值才翻转输出,实现稳健的按键消抖。
✖️ 四位乘法器设计:移位相加的 Art用移位相加原理在 FPGA 上实现四位乘法器,按键输入乘数,数码管实时显示乘积结果
🎵 硬件乐曲演奏器:让 FPGA 唱歌给你听用锁相环、乐谱 ROM 与数控分频器在 FPGA 上自动播放《梁祝》,数码管同步显示简谱码
🎹 PS/2 键盘控制电子琴设计解析 PS/2 键盘协议时序与通码,用 FPGA 把标准键盘变成一台可弹奏的电子琴
📺 VGA 图形显示:一行一行画出来的画面解析 VGA 行场扫描时序与 640×480@60Hz 标准,用 FPGA 生成同步信号显示彩色棋盘格
🔌 串口通信设计:FPGA 与 PC 的第一条数据通道理解 UART 帧格式与波特率,用 FPGA 实现串口数据环回,打通与上位机的通信链路
🔄 直流电机综合测控:PWM 调速与测速闭环用 FPGA 数字比较器生成 PWM 对直流电机调速转向,红外测速实现转速闭环测量
💾 SD 卡读写实验:FPGA 的小硬盘用 SPI 模式读写 SD 卡扇区,从命令协议到初始化状态机的完整入门。
🕹️ PS/2 + VGA 打字游戏:输入输出综合实战PS/2 键盘输入与 VGA 显示联动,用状态机实现弹球式打字小游戏。
🎤 卡拉OK机设计:混响是怎么做出来的用 WM8731 音频编解码芯片混合麦克风与线路输入,I2C 配置出卡拉OK机。
✨ 流水灯实验:FPGA 世界的 Hello World用循环移位寄存器实现双向流水灯,理解分频计数与方向标志的经典套路。
🚦 交通灯实验:状态机第一次上路红黄绿灯按 25 秒周期轮转,用四状态有限状态机实现十字路口交通灯。
⌨️ 4×4 矩阵键盘扫描:16 个键只占 8 根线行列反转扫描原理详解,用 8 根线识别 16 个键并在数码管显示键值。
⚫ 基于 VGA 显示的五子棋:在 FPGA 上下一盘棋用 PS2 键盘控制光标、VGA 显示器显示 10×10 棋盘,在 FPGA 上实现双人五子棋对战。
🔲 16×16 点阵显示实验:用 LED 拼出汉字讲解 LED 点阵行列扫描与数控分频移屏原理,在 FPGA 上驱动 16×16 点阵循环显示汉字。
📟 LCD2004 字符液晶显示实验讲解 LCD2004 字符液晶的内部结构与 11 条控制指令,用 HDL 驱动液晶显示欢迎信息。
〰️ DA902 显示正弦波:数字量变成模拟波形在 FPGA 内定制正弦波 ROM 数据,经锁相环分频读取,由 12 位 DA902 转成模拟正弦信号用示波器观察。
⚡ 12 位高速 AD807-DA902 数据直通实验用 12 位 ADS807 采样外部模拟信号,数据直通 12 位 DA902 还原输出,示波器对比观察。
🌊 双通道 10 位 DA9763 波形发生器用双通道 10 位 DA9763 芯片,FPGA 输出两路数据生成锯齿波等模拟波形,示波器观察验证。
📱 2.8 寸液晶彩屏实验:点亮一块彩色 TFT用 HX4S20 开发板驱动 2.8 寸 TFT 彩屏,以 16 位并口方式在屏幕上显示彩条,理解彩色液晶屏的控制时序。
🖼️ HDMI 显示彩条实验:数字视频接口初体验了解 HDMI 与 TMDS 传输原理,用安路 EG4 内嵌的 TMDS 硬核在 HX4S20 开发板上输出 720P 彩条到显示器。
🌐 千兆网络传输图片:FPGA 上的以太网基于安路三速以太网 IP 与 UDP 协议,用 PC 通过千兆网口向 FPGA 发送图像数据并在 VGA 上显示出来。
🛰️ 北斗 GPS 实验:接收卫星定位数据用 ATK-MO1218 北斗 GPS 模块通过 UART 向 FPGA 发送 NMEA 报文,解析 GGA 语句并把经纬度、时间显示在 VGA 上。
🀄 LCD12864 液晶显示汉字与自定义字符(并口)以 ST7920 控制器的 LCD12864 为对象,用 8 位并口时序显示汉字、西文字符,并自定义 CGRAM 图标。
🔁 基于 FPGA 的 HDMI 输入输出直通PC 的 HDMI 画面从开发板 HDMIA 进、HDMIB 出,理解 HDMI 输入解码与输出环出的完整链路与调试方法。

通关标准:

  • 能独立用 TD 软件完成「新建工程 → 写 Verilog → 综合 → 分配引脚 → 上板」全流程
  • 能说清每个实验背后的电路原理(呼吸灯的 PWM、数码管的扫描、VGA 的时序、UART 的帧格式……)
  • 遇到新外设时,会看引脚约束表、会查时序、会把官方例程改成自己的设计