重庆时时彩机人工计划 时时彩计划 时时彩平台计划群 大发时时彩交流群 汪彩时时彩 新疆时时彩走势 重庆时时彩微信群多少 时时彩玩法介绍图 重庆时时彩讨论吧 9时时彩平台怎样 时时彩功夫计划 天津福利彩票时时彩开奖结果 新疆时时彩三星综合走势图 奇特的时时彩跨度算法 买时时彩有什么技巧吗 重庆时时彩前二和值走势图 分分时时彩全天计划 卓越计划时时彩软件 重时时彩三星走势图 重庆时时彩连出大 重庆时时彩人工稳计划 腾龙时时彩缩水工具 时时彩4星稳定条件做号 时时彩后三乘以0.618 时时彩源代码 时时彩稳赚实战大全 时时彩计划软件哪个准 时时彩软件哪个好用 时时彩计划群发软件 天津时时彩app

首页 > 评测 > 评测列表 > MCU

FPGA的新尝试:将它Arduino化?——Vidor4000评测

FPGA   Arduino   英特尔   altera   开发板   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • 用的是Altera的Cyclone10 LP系列的FPGA,是一款对标Lattice的低端产品。所以Arduino也并没有在里面构建什么计算核?#27169;?#20027;要是通信接口等IP。

FPGA是Field Programmable Gate Arrays的缩写,即现场可编程门阵列。可以创建定制硬件,从而消除与厂商相关的成本。不幸的是,大多数芯片设计的复杂性仍然存在,这就是为什?#21019;?#22810;数人更?#19981;?#20351;用现成的芯片,往往接受他们的限制,而不是采取挑战,以获得他们需要的硬件优化,高效的设计。

然而FPGA入门并不简单,抽象的HDL语言,即便?#26434;?#32534;程已经入门了的用户来说,其代码仍然如天书一样晦涩?#35759;?#26356;不用说精通了。Vidor4000是Arduino新推出的一款开发板,试图将FPGA隐藏在相对简单的Arduino中,期望能消除这一障碍!

image1.jpg

Vidor4000采用的新版MKR形式提供给用户,开发板上包含一颗Cyclone 10 10CL016 FPGA ,另外还包括一颗来自Microchip Technology 的SAMD21低功耗芯片,基于Arm Cortex-M0+。

image2.jpg

大部分组件增位于开发板正面,开发板的反面丝印列出了MKR兼容引脚。

Vidor中使用的Intel Cyclone 10CL016 FPGA具有16,000个逻辑单元,504 KB的嵌入式RAM,以及用于DSP操作的硬件乘法器。引脚可以高达150 MHz的速?#20173;?#34892;(有时称为150兆翻转)。这个特殊部分非常适合音频和视频处理。开发板上主要的器件分?#25216;?#21517;称如下

image3.jpg

在很小的尺寸上,Vidor4000提供了MicroHDMI、MIPI Camera及MiniPIC Express等接口,这些接口一般只在一些高档的Cortex A系列开发板上才提供。不过考虑到开发板上有一块FPGA芯片,这些配置也就合情合理了。Vidor4000的主要特性如下:

• 8 MB SRAM

• 2 MB QSPI闪存芯片 - 为用户应用程序分配1 MB

• Micro HDMI连接器

• MIPI相机连接器

• Wi-Fi和BLE由U-BLOX NINA W10系列设备供电

• 所有引脚均由SAMD21(32位ARM CPU)和FPGA驱动的MKR接口

• Mini PCI Express连接器,最多25个用户可编程引脚

• FPGA(Intel/Altera Cyclone 10CL016)包含16K逻辑单元,504 KB嵌入式RAM和56个18×18位HW乘法器

在正式体验之前,我们有必要了解一下FPGA与MCU的区别。FPGA和微处理器之间的根本区别在于,在微处理器中,内部硬件如I2C、SPI等是早已设计好的,产品出厂后不会再发生变化。内部晶体管具有特定的目的和特定的连接,虽然通常存在多路复用器和内部开关以使芯片更?#23376;?#37197;置。但是,它仍然是固定功能电路。另一方面,FPGA可以配置(并重新配置)为几乎任何数字电路。?#23548;视?#29992;上,一般在FPGA设计中嵌入微处理器内核。

硬件特性决定了功能设计(程序开发)最本质的差异。?#26434;贛CU,我们通过寄存器或者配套的SDK来进行功能设计,代码经编译后使用下载器如JTAG等上载到设备上。?#26434;贔PGA来说,现在的主流设?#21697;?#27861;是使用HDL来描述硬件功能,HDL的最?#25112;?#26524;是Bitstream,供FPGA来进行执行。

到目前为止,我?#23884;杂?#20351;用Arduino来开发FPGA仍是一片空白!也许代码会让我们会有更深入的了解。

接下准备Arduino开发环?#24120;?#25353;?#23637;?#26041;的文档,我们需要安装几个支持库。

image4.png

第一个是Arduino MKR Vidro4000硬件平台支持。

image5.png

这几个软件库也是需要的,其中第一个主要用于图形相关的支持,第二个是FPGA外设相关的库,最后一个则是WiFi相关的软件库。

启动Arduino IDE,打开Blink程序,配置开发板类?#22270;吧?#21697;如下

image6.png

配置完成后,按Ctrl+U上传代码到Vidor4000开发板,可以?#21561;?#22914;下的内容显示

 

codeing.jpg

 

代码上传成功后,?#21561;?#24320;发板上的LED开始?#20102;浮?/p>

是不是咱已经开始使用FPGA来点灯了?答案是否!现在的代码和FPGA半毛钱的关系都没有。这一段代码只是用SAM21来点了个灯。

按照一般的方法,要使用FPGA,得先设计HDL代码,然后再编译成Bitstream。不过Arduino将这些繁琐的过程全部放进了软件库内,通过相关的C代码?#35789;?#29616;相关的功能。Arduino对SADM21编程,SAMD21则通过JTAG接口向FPAG发出指令。如下

image7.png

这是SAMD21的JTAG接口,和下图的FPAG的JTAG接口连接以实现通信

image8.png

大致了解了Vidor4000的工作原理后,我们来看一段代码,

 

code.jpg

 

SAMD21和FPGA的一些端口?#23548;?#19978;是连接在一起的。如编号为33的FPGA端口,就和SAM21引出的A0接口连接到一起,这一段代码使用FPGA来输出信号,而使用SAMD21来读取信号,可以看作?#23884;?#32773;的协作吧。

使用C代码来控制FPGA的操作?#29615;?#35013;在类FPAG中,初始化FPGA的方法调用为

FPGA.begin()

其它的一些操控FPGA的方法例如FPAG.pinMode()方法调用可以参考前面一段代码。

看上去很美好!

但是中间牵涉的细节太多!举例来说,最基本的GPIO操作,官方给出的文档?#20849;?#23436;备,还没有一个完整的列表,用户如果需要使用这些功能,只能通过查看原理图来查看;另外内部IP核的封装,依赖官方给出的IP核,而完善这些功能,?#26434;?#19981;熟悉FPGA的用户来说,仍然是一个大问题!

官方给出的库支持中,目前GPIO、I2C、SPI等都在支持之列。另外像WiFi、HDMI及Camera等操作都给出了参考Demo,但是支持的设备有限,例如MIPI Camera只支持Omnivision OV5647 。

?#26434;?#29087;悉FPGA编程的用户,官方也给出了一个Git仓库,提供了Arduino Vidor系列产品兼容的FPGA IP模块,面向已熟悉FPGA开发过程的用户。地址为https://github.com/vidor-libraries/VidorFPGA

不管怎么说,至少FPGA的Arduino已走出了一步,在官方和社区的共同努力下,我们有理由相信,未来的FPGA,必定不会仅仅是阳春白雪,曲高而和寡!

Arduino再次向世界证明:没有Arduino干不了的事!

  • 本文系21ic原创,未经许可禁止转载!

网友评论

时时彩保本1124打法