找回密码
 注册
关于网站域名变更的通知
查看: 377|回复: 4
打印 上一主题 下一主题

不费力的FPGA编程

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-6-7 09:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

# R6 p, Q0 @" b1 j( l2 t
现场可编程门阵列(FPGA)曾经因价格高昂而让许多编程爱好者可望却不可及,而近年来其价格已大幅降低,而且开始出现在各种小型项目中。FPGA具备可重构硬件的特点,可实现多种不同的使用方式,例如实现新异的CPU。不过从创客的角度来看,其主要吸引力来自处理大量输入/输出信号的电路能力。

* ?1 R0 ^7 {( i* I0 E
我们可以很好地同步处理多个输入(例如一组麦克风或其他传感器输入),同时在不损失定时精度的前提下生成大量输出信号。我很羡慕那些基于FPGA的项目,其能力远超传统微控制器,例如,驱动9000个智能LED。不过我本人并不愿意钻研FPGA,因为除了价格之外,还存在另外一个入门障碍——学习怎样对它进行编程。传统上来说,FPGA编程使用的是专业的硬件描述语言(例如Verilog或VHDL)。不过SparkFun Electronics和Alchitry进行了全新的生产合作,承诺实现轻松的编程入门和硬件集成。于是我决定冒险一试,看看是否能实现这一目标。
& S' x2 s8 I4 Y0 q1 W0 z/ |, w' O
作为一个测试项目,我决定建造动态雕塑,这在一定程度上受到了乔治•卡茨(George Cutts)电动雕塑作品《巨变》(Sea Change)的启发。去年我独自去纽约时,在户外的暴风国王艺术中心看到了这座雕塑。《巨变》使用了两个旋转的组件,这两个组件通过运动结合在一起。那么,我能用更多的单独控制可移动部件来实现它吗?

- D* b. A' v% V- Z2 n1 }
, z5 C+ _& s5 a& Z
我花130美元购买了一个Alchitry Au套件,作为我项目的基础。套件包括核心的Alchitry开发板,配有3.3万个逻辑单元的Xilinx Artix 7 FPGA是它的特色。该开发板有8个内置LED,内存为256兆字节(MB),还有102个输入/输出插脚(运行电压为3.3伏)。此外,它还有一个Qwiic连接器,采用基于SparkFun的I2C协议物理接口的开放标准。有了这个连接器,它可轻松连接任一制造商生产的使用Qwiic接口的微控制器或传感器。
# y* n& J/ @0 a
软件方面,套件使用了Alchitry Labs。Alchitry Labs是一种集成开发环境(IDE),可运行Xilinx Vivado程序包,由Vivado程序包创建实际的FPGA配置文件。需要强调的是,Vivado只能在Windows系统中运行(借助虚拟机,让它在我的Mac电脑上运行也没问题),另外免费版Vivado有一项强制报告功能,要求用户发回相关的设计信息(例如逻辑单元的使用数量),可能会有很多人觉得很不方便。( R* F# w1 ~4 M# @: {  {
Alchitry Labs设计用于Alchitry Au和Alchitry Cu开发板编程。Alchitry Cu相对不那么复杂,价格较低,其FPGA只有7680个逻辑单元和79个输入/输出插脚,但有一个开源工具链支持。FPGA编程是通过Lucid语言完成的,该语言能够为新手提供一些安全防护,可以提供有用的高层次抽象概念。项目中预设了要求定义的必要功能(例如重置按钮、板载LED或串行接口)。点击库模块可添加附加组件,例如串行外设接口(SPI)、I2C、脉冲宽度调制及HDMI编码和解码等。3 }$ y! _' ]4 ?$ x: U, R
* o- t5 L1 A8 m/ |. W( P
教程内容很丰富,但过于庞杂,需要整理。例如,我找到的使用伺服控制器的文档是针对Alchitry现在已停售的Mojo开发板的,输入/输出插脚的应用方式略有不同,但不是很难理解。其中很多内容都是基于Au套件附带的I/O Element开发板编写的,我用一组(极小的)指拨开关输入数字,得出的基本数学运算结果很快就在I/O Element板上的4个7段显示器上显示出来。4 M/ l3 q0 M; x% X5 I% U% E1 n
虽然我是一个FPGA新手,但是这些教程让我成功经历了从硬件编程到软件编写的思维转变。你不是在写一个程序,而是一个需要工具链处置的规范,更多要考虑的是组合优化,而不是时序逻辑。
' ^/ Y5 o- C, x2 w
我的雕塑包含18个垂直分布的伺服机,每一个伺服机都连接了一个水平杆,水平杆的两端分别安装了黑色和红色的方块,能够根据需要前后摆动。为什么是18个?使用连接了普通微控制器的外部伺服板,能够驱动16个伺服机,我想驱动更多系统,但是17这个数字好像太小气。增加伺服机本身就是一个挑战。每个伺服机首次通电都要先消耗1安电流,然后降到实际运行中的几百毫安。即使一次处理18安电流也不小了,我工作台的最大输出只有10安。我设计组装了一种应急电源,将这些伺服机分为2串,一串9个,然后为每串的5伏电源线增加手动开关,一次给一串电源通电。! V% F2 Z% X# S, M% \9 ^: _
幸运的是,这些伺服机将接受3.3伏的控制信号,我可以直接把它们连接到Au套件所包含的模型板上。模型板上有FPGA开发板,FPGA开发板能够控制伺服机。FPGA通过连接RedBoard Turbo微控制器上的Qwiic接口来接受指令,按照SparkFun使用的I2C协议运行一个计时器项目。RedBoard上安装了一个LCD键盘,并提供控制伺服图案的用户界面。最终,我做出了一个颇为吸引人的作品,但更重要的是,我现在有了在更多项目中使用FPGA的信心。目标达成。- @+ v& f$ z4 d% i" \+ P! A9 v+ i

该用户从未签到

2#
发表于 2021-6-7 10:30 | 只看该作者
现场可编程门阵列(FPGA)曾经因价格高昂而让许多编程爱好者可望却不可及,而近年来其价格已大幅降低,而且开始出现在各种小型项目中。2 t( Q+ s. p0 p' S/ n) Y  r! x

该用户从未签到

3#
发表于 2021-6-7 10:35 | 只看该作者
教程内容很丰富,但过于庞杂,需要整理3 ^( X! B4 g, x; L! ?: v

该用户从未签到

4#
发表于 2021-6-7 10:49 | 只看该作者
FPGA具备可重构硬件的特点,可实现多种不同的使用方式! i+ F$ D7 t. a2 i  z' f

该用户从未签到

5#
发表于 2021-6-7 10:59 | 只看该作者
不费力的FPGA 编程
  S9 L& M( r6 h0 W9 D1 Y) n& ?5 d
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-5 01:11 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表