-使用Arduino玩转FPGA——原来FPGA可以如此简单

既想在FPGA里面灵活地设计底层电路,又希望像Arduino一样快速地开发应用程序,鱼与熊掌,可否兼得呢?

FPGA作为一种非常底层的硬件可编程逻辑芯片,实现数字逻辑电路可谓非常灵活,但是对于习惯了C语言和MCU编程的同学来说,从底层电路写到上层应用还是要费一番工夫的。

我们知道在MCU(Microcontroller Unit)中运行的是CPU硬核,比如Intel的8051核,ARM的Cortex-M核,Arduino板上用的AVR核等,各大半导体厂商在CPU Core的基础上集成了各种各样的外设模块,以适用于不同的应用需求。用户需要关心的就是这款MCU有哪些资源,寄存器如何配置。如果我想根据自己的应用需求来定制一款MCU,但是半导体厂商又不理我怎么办呢?办法总是有的,那就回到MCU出生之前的状态。通过将处理器内核移植到FPGA中,使用FPGA内部的逻辑资源和存储资源来构建一个软MCU,再通过内部总线挂载需要的外设电路就构成了一个定制化的MCU,我们称之为软核。

软核中的野马战斗机—FP51-1T

目前,在FPGA中移植软核已经是一种常见的做法,但是大多数MCU软核都是FPGA厂商定制的,比如Altera的Nios II、Xilinx的MicroBlaze和Lattice的MICO32/MICO8,这些软核并不完全开源并且对用户做了诸多限制。

国外有一家名叫PulseRain Technology的公司开发并开源了一款高性能的MCU软核FP51-1T,该软核虽然基于8位的8051体系,但是它巧妙地实现了RISC架构,并且优化了指令集,大部分指令都可以单时钟周期实现,主频可以飙到100MHz以上,以二战时彪悍的野马战斗机P51来命名这款软核再合适不过了。

为方便调试,在软核内部集成了OCD(On Chip Debugger-片上调试)模块,PC主机只要通过RS232接口就可以实现程序下载、单步执行、断点调试等功能。这款软核最大的灵活性在于通过Wishbone总线挂载了Timer、SPI/I2C、UART、PWM、voice CODEC、microSD、 Serial SRAM等外设接口,为方便软件开发,PulseRain Technology提供了兼容Arduino的板卡支持包和软件开发库,将该软核移植到FPGA就可以使用Arduino来开发FPGA了。

使用Arduino玩转FPGA——原来FPGA可以如此简单

FP51-1T结构图

FP51-1T软核采用最小资源配置及移植到Altera MAX10系列FPGA资源占用情况:

  • 8051 1T MCU Core
  • 16KB Code Memory,16KB Data Memory
  • 2 Timer
  • 1 Watchdog Timer / LED Controller
  • 1 RS-232 UART,1 JTAG UART
  • OCD

使用Arduino玩转FPGA——原来FPGA可以如此简单

PulseRain FP51-1T 提供两种授权方式,一种开源授权(GPL v3),另一种商业授权,所有开源的代码已放在GitHub的仓库,但是如果要应用于商业目的的话还是要获得Commercial License FP51-1T MCU Core详细介绍☞FP51-1T MCU Core: A Mustang in FPGA PulseRain推出的M10开发板使用Arduino开发详细介绍

☞ PulseRain M10: Play FPGA like Arduino 现在FP51-1T已经成功移植到STEP-MAX10开发板并且提供了Arduino板卡支持包。 

- 本文内容来自网络,如有侵权,请联系本站处理。

2023-02   阅读(177)   评论(0)
 标签: embedded FPGA Arduino

涨知识
SPI

SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。

评论:
相关文章

ESP32 使用DAC模拟输出完成两路呼吸灯

ESP32的DAC函数可以实现真正的模拟输出。


在 ESP32 上使用 LEDC (PWM)

ESP32 没有Arduino输出 PWM 的 analogWrite(pin, value) 方法,取而代之的 ESP32 有一个 LEDC 来实现PWM功能。


《米思齐实战手册:Arduino图形化编程指南》

本书由少年创学院联合创始人兼院长、知名创客程晨撰写,以Arduino作为硬件平台,介绍了使用米思齐(Mixly)软件进行程序开发的方法。


Arduino UNO R4 WiFi 官方介绍文档

本文档作为UNO R4 WiFi的技术概览,您将找到一系列资源和指南链接,帮助您开始下一个项目。


OneButton: 用于使用单个按钮进行多用途输入的Arduino库

Arduino OneButton库是一个用于简化按钮操作的库,它可以轻松地处理按钮的单击、双击和长按等操作。适用于Arduino开发板以及ESP32等其他基于Arduino的开发板。


Arduino Bootloader

本文从Arduino Uno入手,看看怎样在这个"简单"的8bit单片机搭建一个属于自己的bootloader


Arduino IDE第三方开发包的制作

许多硬件厂商都希望自己的开发板能被Arduino IDE集成开发环境所支持。这里就以小脚丫开发板所使用的开发包为例,介绍一下第三方开发包的制作方法。


ESP32 SD卡读写

ESP32 可以通过 SDMMC 和 SPI 两种方式读取SD/TF卡数据。


搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。