差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
fpga_arduino_8051 [2019/10/04 15:20] gongyu |
fpga_arduino_8051 [2019/10/04 15:49] (当前版本) gongyu |
||
---|---|---|---|
行 31: | 行 31: | ||
现在FP51-1T已经成功移植到STEP-MAX10开发板并且提供了Arduino板卡支持包。 \\ | 现在FP51-1T已经成功移植到STEP-MAX10开发板并且提供了Arduino板卡支持包。 \\ | ||
下面我们使用STEP FPGA开发板来体验一下这个神奇的操作吧! | 下面我们使用STEP FPGA开发板来体验一下这个神奇的操作吧! | ||
- | =====使用Arduino开发STEP-MAX10 FPGA===== | + | |
- | ====准备工作==== | + | #### 使用Arduino开发STEP-MAX10 FPGA |
+ | |||
+ | ##### 准备工作 | ||
* 小脚丫FPGA开发板 STEP-MAX10 08系列 | * 小脚丫FPGA开发板 STEP-MAX10 08系列 | ||
* Intel Quantus Prime软件 | * Intel Quantus Prime软件 | ||
* Arduino IDE | * Arduino IDE | ||
- | ===准备1:STEP-MAX10 FPGA开发板 — FPGA型号Intel MAX10-08系列=== | + | |
+ | ###### 准备1:STEP-MAX10 FPGA开发板 — FPGA型号Intel MAX10-08系列 | ||
STEP-MAX10是小脚丫FPGA系列中基于Intel/Altera公司的FPGA芯片MAX10M08的FPGA开发板,它同样也采用了DIP40封装,小巧、携带方便,板载资源也是十分丰富,包含: | STEP-MAX10是小脚丫FPGA系列中基于Intel/Altera公司的FPGA芯片MAX10M08的FPGA开发板,它同样也采用了DIP40封装,小巧、携带方便,板载资源也是十分丰富,包含: | ||
* 4路轻触按键 | * 4路轻触按键 | ||
行 47: | 行 50: | ||
<WRAP centeralign> **小脚丫STEP-MAX10实物图片** </WRAP> | <WRAP centeralign> **小脚丫STEP-MAX10实物图片** </WRAP> | ||
- | ===准备2:Intel Quantus Prime软件=== | + | |
+ | ###### 准备2:Intel Quantus Prime软件 | ||
Quartus Prime是Altera被Intel收购之后推出的免费、强大的设计软件,包括了从设计输入到综合直至优化、验证以及仿真等各个阶段所需的一切功能。Quartus Prime Lite是大批量器件系列的理想设计工具,可以免费下载使用。 | Quartus Prime是Altera被Intel收购之后推出的免费、强大的设计软件,包括了从设计输入到综合直至优化、验证以及仿真等各个阶段所需的一切功能。Quartus Prime Lite是大批量器件系列的理想设计工具,可以免费下载使用。 | ||
Quartus Prime下载安装、使用☞: [[Quartus Prime]] | Quartus Prime下载安装、使用☞: [[Quartus Prime]] | ||
- | ===准备3:Arduino IDE软件=== | + | |
+ | ###### 准备3:Arduino IDE软件 | ||
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)两大核心部分。Arduino IDE基于processing IDE开发,对于初学者来说极易掌握,同时有足够的灵活性。Arduino语言是基于wiring语言开发的,是对 avr-gcc库的二次封装,不需要太多的单片机基础和编程基础,只需简单学习后,你就可以快速的进行开发。 \\ | Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)两大核心部分。Arduino IDE基于processing IDE开发,对于初学者来说极易掌握,同时有足够的灵活性。Arduino语言是基于wiring语言开发的,是对 avr-gcc库的二次封装,不需要太多的单片机基础和编程基础,只需简单学习后,你就可以快速的进行开发。 \\ | ||
Arduino IDE的下载安装 | Arduino IDE的下载安装 | ||
行 58: | 行 63: | ||
---- | ---- | ||
- | ====操作步骤==== | + | #### 操作步骤 |
- 获取PulseRain FP51-1T MCU软核 | - 获取PulseRain FP51-1T MCU软核 | ||
- Arduino IDE安装板卡和软件支持包 | - Arduino IDE安装板卡和软件支持包 | ||
行 68: | 行 73: | ||
<WRAP centeralign> **M10 BSP for Arduino IDE(Copy from PulseRain) ** </WRAP> | <WRAP centeralign> **M10 BSP for Arduino IDE(Copy from PulseRain) ** </WRAP> | ||
- | ====步骤1:获取PulseRain FP51-1T MCU软核==== | + | ##### 步骤1:获取PulseRain FP51-1T MCU软核 |
- | ===1.Clone 软核源代码=== | + | |
+ | ###### 1.Clone 软核源代码 | ||
FP51-1T的工程源代码已经开源在Github上,你可用如下的命令得到代码 \\ | FP51-1T的工程源代码已经开源在Github上,你可用如下的命令得到代码 \\ | ||
行 87: | 行 93: | ||
(**注意转发源码时请保留源码开头的版权声明**) \\ | (**注意转发源码时请保留源码开头的版权声明**) \\ | ||
- | #### 2.软核外设介绍 | + | ###### 2.软核外设介绍 |
FP51-1T是一个兼容8051体系的高性能8位MCU,通过巧妙地RISC架构实现,大部分指令都可以单周期实现,主频可以跑到96MHz。为方便调试,在软核内部集成了OCD(On Chip Debugger - 片上调试)模块,PC主机只要通过RS232接口就可以实现程序的下载、单步执行、设置断点等调试功能。另外,该软核通过Wishbone总线挂载了多个外设模块,如Timer、UART、SPI/I2C、PWM、Voice CODEC、microSD socket、 SRAM、onchip ADC等,用户可以裁剪和添加这些外设。 \\ | FP51-1T是一个兼容8051体系的高性能8位MCU,通过巧妙地RISC架构实现,大部分指令都可以单周期实现,主频可以跑到96MHz。为方便调试,在软核内部集成了OCD(On Chip Debugger - 片上调试)模块,PC主机只要通过RS232接口就可以实现程序的下载、单步执行、设置断点等调试功能。另外,该软核通过Wishbone总线挂载了多个外设模块,如Timer、UART、SPI/I2C、PWM、Voice CODEC、microSD socket、 SRAM、onchip ADC等,用户可以裁剪和添加这些外设。 \\ | ||
{{ ::fp51-1t结构图.png?800 |FP51-1T MCU结构图}} | {{ ::fp51-1t结构图.png?800 |FP51-1T MCU结构图}} | ||
行 111: | 行 117: | ||
如果不熟悉FPGA的开发可以先学习入门教程[[step-max10入门教程]]。 \\ | 如果不熟悉FPGA的开发可以先学习入门教程[[step-max10入门教程]]。 \\ | ||
- | ### 步骤2:Arduino IDE安装板卡支持包和软件库 | + | ##### 步骤2:Arduino IDE安装板卡支持包和软件库 |
- | #### 1.安装板卡支持包 | + | ###### 1.安装板卡支持包 |
Arduino IDE可以支持第三方板子的开发,但是需要安装第三方板卡的支持包。 \\ | Arduino IDE可以支持第三方板子的开发,但是需要安装第三方板卡的支持包。 \\ | ||
打开Arduino IDE,打开 **文件**——**首选项**——**附加开发板管理器网址**,添加如下链接: \\ | 打开Arduino IDE,打开 **文件**——**首选项**——**附加开发板管理器网址**,添加如下链接: \\ | ||
行 125: | 行 131: | ||
该BSP主要包括三部分:FP51 Core、[[http://sdcc.sourceforge.net/|SDCC]] Compiler和Target Downloade Tools | 该BSP主要包括三部分:FP51 Core、[[http://sdcc.sourceforge.net/|SDCC]] Compiler和Target Downloade Tools | ||
- | #### 2.安装软件库 | + | ###### 2.安装软件库 |
Arduino之所以开发简单快速,是因为Arduino官方和众多的开源硬件爱好者贡献了大量的应用软件库,对于常见外设接口或模块的软件库都可以从网上下载到,而且能非常方便的嵌入到我们的程序中。\\ | Arduino之所以开发简单快速,是因为Arduino官方和众多的开源硬件爱好者贡献了大量的应用软件库,对于常见外设接口或模块的软件库都可以从网上下载到,而且能非常方便的嵌入到我们的程序中。\\ | ||
PulseRain 为FT51-1T MCU提供了常用外设接口的软件库如I2C,microSD,CODEC,PWM,ESP8266等,而且有详细的文档说明 ☞[[https://www.pulserain.com/m10 |]]。 \\ | PulseRain 为FT51-1T MCU提供了常用外设接口的软件库如I2C,microSD,CODEC,PWM,ESP8266等,而且有详细的文档说明 ☞[[https://www.pulserain.com/m10 |]]。 \\ | ||
行 134: | 行 140: | ||
用户在程序中如果需要用到某个库,只需要在**项目**——**加载库**,选择相应的库,即可将该库的头文件包含到应用程序中。 | 用户在程序中如果需要用到某个库,只需要在**项目**——**加载库**,选择相应的库,即可将该库的头文件包含到应用程序中。 | ||
- | ### 步骤3:在Arduino IDE中开发应用程序 | + | ##### 步骤3:在Arduino IDE中开发应用程序 |
在Arduino IDE **工具**一栏,选择 **开发板**为**StepFPGA M10**, 搭建好软硬件环境,我们可以开始开发自己的应用程序了,这里我们编写一段应用程序实现以下功能: | 在Arduino IDE **工具**一栏,选择 **开发板**为**StepFPGA M10**, 搭建好软硬件环境,我们可以开始开发自己的应用程序了,这里我们编写一段应用程序实现以下功能: | ||
*在串口以115200 bps 输出 Hello World!然后输出PS2键盘的Scancode | *在串口以115200 bps 输出 Hello World!然后输出PS2键盘的Scancode | ||
行 149: | 行 155: | ||
{{::fp51arduino编译结果.png?500|}} | {{::fp51arduino编译结果.png?500|}} | ||
- | ### 步骤4:配置软核到STEP-MAX10 FPGA开发板 | + | ##### 步骤4:配置软核到STEP-MAX10 FPGA开发板 |
- | #### 1.串口一键下载 | + | ###### 1.串口一键下载 |
Arduino开发板之所以能够使用串口实现一键下载,是因为在主控制器内部有Bootloader,而在我们的软核内部没有使用软件bootloader,而是在软核中嵌入了OCD (onchip debugger)模块,相当于MCU内部的硬件BOOT模块,通过外接串口同样可以实现串口一键下载。只不过程序下载到FPGA内部的SRAM区,掉电数据会丢失,如果想程序掉电不丢失还是需要将Arduino IDE 生成的.hex文件通过Quatus prime烧录到MAX10内部的Flash区。 \\ | Arduino开发板之所以能够使用串口实现一键下载,是因为在主控制器内部有Bootloader,而在我们的软核内部没有使用软件bootloader,而是在软核中嵌入了OCD (onchip debugger)模块,相当于MCU内部的硬件BOOT模块,通过外接串口同样可以实现串口一键下载。只不过程序下载到FPGA内部的SRAM区,掉电数据会丢失,如果想程序掉电不丢失还是需要将Arduino IDE 生成的.hex文件通过Quatus prime烧录到MAX10内部的Flash区。 \\ | ||
行 162: | 行 168: | ||
\\ | \\ | ||
- | #### 2.片上闪存的配置(Onchip Flash Memory) | + | ###### 2.片上闪存的配置(Onchip Flash Memory) |
Step FPGA M10采用Single Compressed Image设置, 在该设置下, 其片上闪存的地址如下图所示: | Step FPGA M10采用Single Compressed Image设置, 在该设置下, 其片上闪存的地址如下图所示: | ||
{{ :max10闪存配置.png |}} \\ | {{ :max10闪存配置.png |}} \\ | ||
行 171: | 行 177: | ||
这样在生成FPGA Image时,ufm.hex 会被自动包含在最后生成的Image里面。 | 这样在生成FPGA Image时,ufm.hex 会被自动包含在最后生成的Image里面。 | ||
- | #### 3.烧录程序到MAX10 FPGA内部Flash | + | ###### 3.烧录程序到MAX10 FPGA内部Flash |
用户可以用Intel Quartus Prime打开synth / Mustang_fast.qpf , 并点击"Start a new compilation", \\ | 用户可以用Intel Quartus Prime打开synth / Mustang_fast.qpf , 并点击"Start a new compilation", \\ | ||
行 179: | 行 185: | ||
使用Quartus Prime下载.pof文件到FPGA内部Flash中。 \\ | 使用Quartus Prime下载.pof文件到FPGA内部Flash中。 \\ | ||
- | ### 步骤5:定制自己的硬件外设 | + | ##### 步骤5:定制自己的硬件外设 |
如果用户需要增加新的外设的话, 具体步骤如下(以LCD为例) \\ | 如果用户需要增加新的外设的话, 具体步骤如下(以LCD为例) \\ | ||
1. 编写RTL模块, 并且simulate, 比如 \\ | 1. 编写RTL模块, 并且simulate, 比如 \\ | ||
行 201: | 行 206: | ||
C:\Users\...\AppData\Local\Arduino15\packages\StepFPGA_M10\tools\M10_compiler\...\SDCC\include\mcs51\8051.h \\ | C:\Users\...\AppData\Local\Arduino15\packages\StepFPGA_M10\tools\M10_compiler\...\SDCC\include\mcs51\8051.h \\ | ||
- | ====相关设计资源==== | + | #### 相关设计资源 |
- | \\ | + | * {{::step_fpga_m10_user_guide_cn.pdf|STEP FPGA FP51-1T MCU中文用户手册 }} \\ |
- | Copy from PulseRain Technology \\ | + | * {{::datasheet_fp8051_1t.pdf|FP51-1T Datasheet}} \\ |
- | {{::step_fpga_m10_user_guide_cn.pdf|STEP FPGA FP51-1T MCU中文用户手册 }} \\ | + | * {{::pulserain_8_bit_mcu_trm.pdf|FP51-1T Technical Reference Manual}} \\ |
- | {{::datasheet_fp8051_1t.pdf|FP51-1T Datasheet}} \\ | + | * [[https://github.com/PulseRain/Mustang/tree/step_fpga|Repository for FPGA]] \\ |
- | {{::pulserain_8_bit_mcu_trm.pdf|FP51-1T Technical Reference Manual}} \\ | + | * [[https://github.com/PulseRain/Arduino_M10_IDE/tree/step_fpga|Repository for Arduino IDE package]] \\ |
- | [[https://github.com/PulseRain/Mustang/tree/step_fpga|Repository for FPGA]] \\ | + | * [[https://github.com/PulseRain/M10_high_speed_config_rtl|TRM for M10 High Speed Configuration]] \\ |
- | [[https://github.com/PulseRain/Arduino_M10_IDE/tree/step_fpga|Repository for Arduino IDE package]] \\ | + | * [[https://github.com/PulseRain|Repository for Peripherals]] \\ |
- | [[https://github.com/PulseRain/M10_high_speed_config_rtl|TRM for M10 High Speed Configuration]] \\ | + | |
- | [[https://github.com/PulseRain|Repository for Peripherals]] \\ | + |