news 2026/11/3 23:05:42

DE1-SoC开发环境搭建与烧录避坑:Quartus、SoC EDS、MSEL与HPS启动全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DE1-SoC开发环境搭建与烧录避坑:Quartus、SoC EDS、MSEL与HPS启动全流程

简介:面向DE1-SoC开发板初学者、高校实验用户及嵌入式与FPGA工程师的硬件与开发参考文档,围绕板卡认知、硬件结构、FPGA配置和常用外设展开,适合课程实验、项目选型与自学查阅。资源包仅含1个PDF文件,约7.1MB,按开发套件、板卡介绍、开发板使用三部分编排:先交代包装清单、系统光盘和资料获取途径,再解析布局、组件与块图,帮助建立板载资源与接口位置的整体印象;随后说明FPGA配置模式、Cyclone V SoC FPGA配置、状态与复位元素、时钟电路,并覆盖按键、开关、LED、数码管、GPIO扩展、音频编解码、I2C多路复用、VGA、TV解码及红外等外设。已有1323人学习,对接口定义、模块连接和实验环境搭建具有直接参考价值,也便于在板级调试时快速定位相关模块,可作为核对硬件连接、理解ARM与FPGA协同、搭建基础实验和排查板级问题的案头手册。

1. 拿到板子先别插电:DE1-SoC 不是 STM32 那一挂

某实验室一次进了六块 DE1-SoC,新人拆箱后看到 USB 口和排针,下意识按单片机那套流程走:插线、找串口、打开下载工具。结果设备管理器里多出两个说不清道不明的未知设备,串口一个都没冒出来,折腾一下午连个 LED 都没点亮。翻车的根因很简单——DE1-SoC 是 Cyclone V SoC FPGA 开发板,板子上跑的是一颗 800MHz 双核 ARM Cortex-A9 硬核处理器加 85K 逻辑单元的 FPGA,跟平时玩的 STM32 单片机虽然都挂着 ARM 嵌入式硬件的名头,配置链路完全是两码事。这份 DE1-SoC 硬件原理图及开发手册,价值就在于把板级结构、配置模式、外设连接和烧录流程一次讲全。适合手上已经有板子、准备搭 FPGA 与 HPS 联合开发环境的人。

2. 装前清单:Cyclone V SoC 的版本对齐与文件核对

装 FPGA 环境最怕的不是装不上,是装上了发现版本对不上,软件能打开、编译能过,一到联调就报莫名其妙的错。Quartus II、SoC EDS、板卡 System CD 这三样东西存在强绑定关系,先把版本摊开对一遍,比装完再回滚省事得多。

2.1 三件套版本对照表

DE1-SoC 手册第 8 章明确提到 Quartus II v16.0 环境下从 EPCS 器件启动 Nios II 的流程,这个版本号是整个环境的基础。SoC EDS 必须与 Quartus 主版本号一致,混搭会出现 ARM 工具链找不到、GHRD 编译链接失败这类问题。

组件建议版本作用装错的表现
Quartus II16.0(与手册对齐)综合、布局布线、Programmer 烧录器件库里找不到 5CSEMA5F31
SoC EDS16.0ARM 交叉编译、Embedded Command Shell、System Builder 依赖命令行里找不到 arm-altera-eabi-gcc
DE1-SoC System CD与板卡批次对应原理图、GHRD 例程、Linux 镜像、System Builder例程路径和手册对不上

后续的 Quartus Prime Standard 版本也能支持 Cyclone V,但一旦升到 Pro 版就会发现这颗器件根本不在支持列表里——这是很多人第一次踩的版本坑。我一般会保守选 16.0,把手册页码和实际界面一一对得上,少一层解释成本。

提示:先把安装包和 System CD 全部下载到本地并核对 SHA 校验,中途断网重下导致安装包损坏,报错会伪装成"器件库缺失",很难查。

2.2 从 System CD 落盘:目录结构与校验

System CD 是一个压缩包或镜像,直接双击往桌面解压是坏习惯。路径里带空格、带中文、带&,Quartus 的 Tcl 脚本会在某些环节断掉,报错信息还不指向路径。我固定建一个短路径根目录,把内容铺进去。

# 统一放到短路径根目录,避免空格与中文 mkdir -p /data/de1soc/cd cd /data/de1soc/cd # 解压 System CD,解压后应有 demonstrations / documents / tools 三类 unzip DE1-SoC_SystemCD.zip -d . # 核对关键目录是否齐全 ls -d demonstrations documents tools du -sh demonstrations

demonstrations下是 FPGA 例程(Audio、Karaoke、SDRAM Test、TV Box、PS2 Mouse、IR、ADC)与 HPS 例程(Hello、LED/KEY、G-sensor、I2C MUX);documents下是用户手册、原理图 PDF 和器件数据手册;tools下是 System Builder 与烧录相关工具。这三个目录缺任何一个,后面都会卡住。解压完顺手du -sh看一下体量,明显偏小就是包不完整。

注意:路径里的中文和空格属于玄学级故障源,凡是 Quartus、SoC EDS、Nios II 相关的工程,一律放纯英文短路径。

2.3 硬件清点:包装盒里该有的四样和板上丝印

手册第 1 章列得很清楚:开发板本体、快速入门指南、USB Type-A 转 Type-B 线(FPGA 下载与板载 USB-Blaster II 用)、USB Type-A 转 Mini-B 线(UART 串口用)、12V 直流电源适配器。缺 Type-B 那根线是最常见的情况——它不是普通打印机线的替代品,板载 USB-Blaster II 就在 Type-B 口后面。

板子拿到手先对着手册第 2 章的布局图认丝印,别急着上电。重点确认四个位置:SW10 那一排配置模式拨码、HPS_RESET_n 与 HPS_WARM_RST_n 两个复位按键、Micro SD 卡槽、以及两个 40-pin 扩展排针的防反二极管方向。板上 FPGA 侧是 64MB SDRAM(16 位数据总线)加 EPCS128 配置器件,HPS 侧是 1GB DDR3(32 位数据总线)加千兆以太网 PHY,这两套存储体系分属不同域,认错域是后面配错地址的源头。

3. 软件安装:Quartus II 16.0 落地与 USB-Blaster II 认卡

3.1 安装路径、组件勾选与盘符习惯

Quartus II 完整装下来十几个 GB,勾选不当会翻倍。安装向导里器件家族只勾 Cyclone V,其余全取消;工具组件勾上 Quartus II、Nios II EDS、Programmer、SignalTap II 即可,DSP Builder 之类用不到的先不装。安装路径同样守短路径原则,我习惯C:\altera\16.0或/opt/altera/16.0。

# Linux 下静默安装的常见做法,setup.sh 后跟组件与路径参数 ./QuartusSetup-16.0.run --mode unattended \ --installdir /opt/altera/16.0 \ --accept-altera-eula # 装完确认 quartus_sh 可用,这是后续所有脚本的入口 export PATH=/opt/altera/16.0/quartus/bin:$PATH quartus_sh --version

--installdir一旦定下别改,Quartus 内部大量绝对路径写进了配置文件,挪目录等于重装。quartus_sh --version能正常回显版本号,说明主程序与授权读取链路是通的。这一步失败通常是环境变量没生效,或者 shell 里还残着旧版本的 PATH。

装完别直接开工程,先确认器件库落地:在安装目录下找quartus/common/devinfo之类的器件信息目录,里面应该能找到 Cyclone V 对应的条目。器件库缺失的典型表现是新建工程时 Family 下拉框里根本没有 Cyclone V,而界面不会弹任何错。

3.2 USB-Blaster II 驱动与 JTAG 链自检

板载 USB-Blaster II 是这颗板子最省心也最容易翻车的部分。省心在于不用外接下载器,翻车在于 Windows 下驱动签名与端口占用。

# Linux 下先看有没有认到,正常应出现 Altera 相关设备 lsusb | grep -i altera # 确认 USB-Blaster 的 udev 规则存在,否则普通用户无权访问 sudo cp /opt/altera/16.0/quartus/drivers/usb-blaster/*.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && sudo udevadm trigger

lsusb里出现 Altera 字样,说明 USB 层通了,但 JTAG 层未必通。真正的验证手段是打开 Quartus Programmer,Hardware Setup 里选中 USB-Blaster II,然后点 Auto Detect。能扫出5CSEMA5这个器件,才算 JTAG 链完整。Windows 下如果设备管理器里是带感叹号的未知设备,手动更新驱动指向quartus\drivers\usb-blaster-ii目录,不要用系统自动搜索。

提示:Auto Detect 扫不到器件,先查供电(12V 适配器是否插上),再查 MSEL 拨码,最后才怀疑驱动。顺序反了会白折腾很久。

3.3 SoC EDS 与串口终端:115200 8N1

SoC EDS 提供 ARM 侧的交叉编译环境和 Embedded Command Shell。装完必须用它的专用 shell,不要在系统默认终端里直接调arm-altera-eabi-gcc,工具链路径是那个 shell 注入的。

# 启动 SoC EDS 的 Embedded Command Shell 后验证交叉工具链 arm-altera-eabi-gcc --version # 常见做法是同时导出 GHRD 顶层目录,便于反复生成 export TOP_FOLDER=/data/de1soc/cd/demonstrations/SoC_FPGA/DE1_SoC_Default

串口这边,UART to USB 走的是 Mini-B 口,参数固定 115200、8 位数据、无校验、1 位停止位、无流控。Linux 下用minicom -D /dev/ttyUSB0 -b 115200,Windows 下用 PuTTY 选对应 COM 口。连上后按一下回车,如果 U-Boot 已经在跑,应该能看到提示符;一片空白不代表坏了,可能只是板子还没启动到那一步,这个区别后面验证环节会用到。

4. 板级配置:MSEL 拨码、SOF 转 JIC 与 SD 卡镜像

4.1 MSEL[4:0] 与三种配置模式的取舍

Cyclone V 上电后从哪儿取配置数据,由 SW10 上的 MSEL 拨码决定。手册 3.1 节把三种模式讲得很细,落到实操就是三种场景对应三组拨法。

模式典型 MSEL 组合什么时候用
JTAG00000首次调试、反复下载 .SOF 验证逻辑
AS(EPCS128)10010脱机上电自启动,产物是 .JIC
FPP x16(HPS 引导)01010HPS 侧 Linux 启动后再配置 FPGA

具体位序和 ON/OFF 与逻辑电平的对应关系,各批次板子的丝印标注略有差异,拨之前先拍张照记下出厂状态,再对照手册的配置模式表逐位核对。拨完用 Programmer 的 Auto Detect 反向验证:能认出器件,说明当前模式至少没把 JTAG 通道堵死。

注意:拨码开关手感很轻,容易只拨了一半。拨完用手指压一遍确认全部到位,接触不良表现为"有时能扫到有时扫不到"。

4.2 .SOF 转 .JIC 写进 EPCS128

JTAG 模式下载的是 .SOF,掉电即失,适合调试。要让板子脱机上电就跑起来,得把配置数据烧进 EPCS128(128Mbit,即 16MB)。这一步的关键是把 .SOF 转成 .JIC。

图形界面在 Programmer 里走 File → Convert Programming Files,选 JTAG Indirect Configuration File (.jic),Configuration device 选 EPCS128,Flash Loader 指定 Cyclone V 对应器件,然后 Add File 把 .SOF 加进 SOF Data 区,生成。熟练之后我更喜欢用转换设置文件,改一次参数反复用。

# 先生成 convert.cof 转换设置,之后一条命令反复出 JIC quartus_cpf -c de1soc_top.cof # 产物 de1soc_top.jic 用 Programmer 烧到 EPCS128

-c表示按设置文件执行转换,.cof里固化了输入 .SOF、输出 .JIC、目标器件和 Flash Loader 版本。改逻辑后只要重新综合出 .SOF,同名覆盖再跑一次这条命令即可,比每次点一遍向导稳。烧写时 Programmer 里 Mode 选 Active Serial Programming,Program/Configure 勾上,Start 之后看进度条走完。

烧完把 MSEL 拨回 AS 组合,断电再上电。判断是否真烧进去了,看板上的配置完成指示:如果 FPGA 没配起来,用户 LED 和行为会明显不对——这时候别怀疑逻辑写错,先回头确认 .JIC 里的 Flash Loader 器件型号和板上器件一致。

4.3 HPS 侧:System Builder 生成 GHRD 与 SD 卡首次启动

HPS 侧是另一条线。手册第 4 章讲 DE1-SoC System Builder,它的作用是根据板级参数生成一份 Qsys 系统加配套的 GHRD 工程,把 HPS 的引脚复用、时钟、存储接口一次性配好。不跑这一步直接手搓 Qsys,DDR3 时序和引脚分配能让人怀疑人生。

# 在 SoC EDS 的 Embedded Command Shell 中生成 Qsys 系统 cd $TOP_FOLDER/ghrd qsys-generate soc_system.qsys --synthesis=VERILOG --output-directory=.

--synthesis=VERILOG指定输出 Verilog 形式的系统,--output-directory控制产物落点,务必和 Quartus 工程的引用路径一致。生成完成后在 Quartus 里打开顶层工程,全编译应该能过;编译报 HPS 相关引脚冲突,八成是 System Builder 里板卡型号选错了。

系统跑起来需要 SD 卡里有可引导镜像。把 System CD 里的 Linux 镜像写到卡上,Windows 用 Win32DiskImager,Linux/macOS 下用 dd,注意of=后面必须是整盘设备而不是分区。

# 写卡前用 diskutil list / lsblk 确认目标盘,写错盘会把主机系统干掉 sudo dd if=de1soc_linux.img of=/dev/disk4 bs=4m && sync

写完插卡、MSEL 拨到 HPS 引导 FPGA 的组合、上电,串口终端里应该能看到 U-Boot 的启动日志一路走到 Linux 登录提示符。第一次启动可能要一两分钟,别急着断电。

5. 排查:五条翻车记录和对应的救法

5.1 Programmer 扫不到 5CSEMA5

现象:Hardware Setup 里已经选中 USB-Blaster II,Auto Detect 转圈之后报"Unable to scan device chain"。

原因:三种可能,MSEL 拨在非 JTAG 组合把 JTAG 通道让出去了;12V 电源没接只靠 USB 供电;或者驱动装了但被另一个进程占用(比如之前开的 SignalTap 没关)。

解决:先确认 12V 适配器灯亮,再把 MSEL 整体拨到 JTAG 组合,关掉所有 Quartus 相关进程重开 Programmer。三步走完还不行,才去设备管理器里卸掉设备重新指驱动目录。

5.2 LED 能亮但串口一片空白

现象:板上用户 LED 有反应,说明 FPGA 配起来了,但串口终端回车无回显。

原因:波特率或流控不对,或者根本没跑到 Linux 那一层。DE1-SoC 的 UART 固定 115200 8N1 无流控,PuTTY 默认流控是 RTS/CTS,这个默认值会直接把回显吃掉。

解决:流控改 None,重新连。仍然空白就确认当前跑的到底是 FPGA 例程还是 HPS 镜像——纯 FPGA 例程根本不会输出串口,属于正常而非故障。

5.3 JIC 烧完断电重启不生效

现象:Active Serial Programming 显示 100% 成功,拨回 AS 模式断电重启,板子行为跟没烧一样。

原因:转换 .JIC 时 Flash Loader 器件选成了别的容量,或者 SOF Data 里的偏移地址没按默认页对齐;也可能是烧写过程中 MSEL 还停在 JTAG,Programmer 实际写到了错误区域。

解决:重新走一遍 Convert Programming Files,Flash Loader 严格选 5CSEMA5,页偏移保持默认。烧写前先把 MSEL 拨到 AS,烧完直接断电重启,中间不再改拨码。

5.4 Qsys 生成成功但 Quartus 全编译报引脚冲突

现象:qsys-generate无报错,回到 Quartus 编译时一堆 HPS 引脚分配冲突。

原因:System Builder 里板卡型号或 DDR3 参数选错,生成了一套和实物不匹配的引脚约束;或者工程里残着上一版.qsf的旧分配。

解决:用 System Builder 重新生成,覆盖前把工程里旧的引脚分配段清干净。改板级参数这种事,宁可重跑一遍生成器,也不要手工去.qsf里打补丁。

5.5 SD 卡写完插上没反应

现象:dd 或 Win32DiskImager 显示写入成功,插卡上电后串口毫无输出,板子像是没启动。

原因:写到了分区而不是整盘;或者卡本身兼容性差,板子对 Micro SD 卡的识别比较挑。

解决:用lsblk或diskutil list确认of=是/dev/sdX、/dev/disk4这种整盘节点。换一张容量适中、速度等级普通的卡再试,超大容量高速卡反而容易出问题。

6. 装完怎么验证:三道关都过才算跑通

环境装完不能只看"软件能打开",要分三层验证,每一层都有明确的通过标志。这套顺序我每次都强制走一遍,因为跳过任何一层,后面出的问题都会伪装成别的原因。

第一层,JTAG 链。打开 Programmer,Hardware Setup 选中 USB-Blaster II,Auto Detect 扫描。能在链上看到 5CSEMA5 这个器件,并且后面跟着 EPCS128,就说明下载通道和配置器件都活着。

第二层,FPGA 侧。找一个最简单的例程编译下载,比如手册第 3.6.1 节的用户按键、拨码开关和 LED 部分。烧 .SOF 后拨动 SW 开关,看对应的红色用户 LED 是否跟随变化;按一下 KEY,看行为是否符合预期。这一层过不了,问题一定在引脚分配或时钟,别往 HPS 那边找。

第三层,HPS 侧。SD 卡插好、MSEL 拨到 HPS 引导组合、串口 115200 8N1 无流控、上电。串口里应该依次出现 U-Boot 版本信息、DDR3 容量、内核解压日志,最后停在登录提示符。

验证层通过标志失败优先查
JTAG 链Auto Detect 列出 5CSEMA5 与 EPCS12812V 供电、MSEL 拨码、驱动
FPGA 逻辑拨码/按键能驱动对应 LED引脚分配、.qsf 残留
HPS 系统串口输出到 Linux 登录提示符SD 卡写入方式、流控、MSEL

想再确认时钟和存储没暗病,可以跑手册 3.5 节的时钟电路相关例程,配合 SDRAM Test 例程做一轮读写。这类测试跑通,说明 64MB SDRAM 的数据总线和那四路 50MHz 时钟源都是好的,后面写自己的逻辑才有底气。

从那以后我每次拿到一块新板子,都会把这三层验证当固定动作走完,哪怕只是借来临时跑个例程——因为省下的那二十分钟,往往要用两个下午来还。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/3 23:05:28

非科班读LLM底层原理:15章PDF顺序与Transformer拆解

简介:这份 PDF 文档定位为面向非科班读者的大语言模型底层技术入门指南,尤其适合投资人、商科研究者以及希望理解 ChatGPT 原理的零基础学习者,也提醒读者至少具备导数、链式法则、条件概率和向量矩阵等数学常识。内容由多层感知器、CNN、RNN…

作者头像 李华
网站建设 2026/11/3 23:05:14

hindsight:面向LLM应用的Python决策回溯系统

1. 项目概述:hindsight 不是“事后诸葛亮”,而是一套可落地的 AI 决策回溯系统最近在几个技术社区里反复看到 “hindsight” 这个词被高频提及,尤其和Python、OpenAI、Anthropic、Gemini这些主流大模型服务商并列出现。很多人第一反应是查字典…

作者头像 李华
网站建设 2026/11/3 23:04:11

Buzz传播信号系统:三次触点与临界点实验

1. “buzz”不是随便起的网名,它是一套正在被低估的传播信号系统最近在几个技术社区和创意工作坊里,我反复听到这个词被当作动词用:“这个功能上线后得先造点buzz”,“那个视频没buzz起来,数据就卡在3000播放不动了”。…

作者头像 李华
网站建设 2026/11/3 23:04:01

三端口DC-DC变换器赛题拆解:双向功率流、闭环稳压与MPPT

简介:面向备战全国大学生电子设计竞赛的本科生与指导教师,这份PDF围绕2021年C题「三端口DC-DC变换器」整理赛题原文与设计解析,重点说明模式I、模式II的自动转换、最大功率点跟踪、输出电压稳定及效率提升等关键要求。资源包共1个PDF文件&…

作者头像 李华
网站建设 2026/11/3 23:03:05

有限状态机(FSM)在前端开发中的应用与实践

1. 有限状态机基础概念有限状态机(Finite State Machine,FSM)是计算机科学中一个非常重要的数学模型。它由一组状态、初始状态、输入和转换函数组成。简单来说,FSM在任何时候都处于某一个特定的状态,当接收到输入时&am…

作者头像 李华
网站建设 2026/11/3 23:02:30

国产32位MCU选型避坑指南:GD32/MM32/HC32深度实测对比

1. 为什么这份清单现在比去年值十倍——从ST缺货涨价潮说起去年这时候,我还在用ST的STM32F103C8T6做毕业设计,一块板子BOM成本不到18元,贴片厂报价含税含运费,交期稳定在两周。今年三月,客户发来紧急需求:量…

作者头像 李华