查看原文
其他

使用FPGA打造VGA显卡

学研妹 Java学研大本营 2024-01-02

介绍设计电路板的过程,包括基本步骤和技术,以及FPGA的应用和发展方向。

长按关注《Java学研大本营》

FPGA(可编程门阵列)是一种功能强大的电子设备,它由多个逻辑块通过互连线连接在一起。通过按需连接逻辑块,可以创建简单或复杂的电路。你可以将FPGA想象成一个大盒子里的乐高积木,可以按照你的意愿组合出各种类型的数字电路,从简单的异或门(XOR)到中央处理器(CPU),甚至整个系统(如果你有足够的资金购买最大规模的设备)。

FPGAs已被广泛应用于许多领域,其中之一就是模拟旧系统。MiSTer就是一个例子,Jeri Ellsworth的C-One是另一个例子。但事实上,FPGAs无处不在,它们快速、稳定,并且适应大多数应用场景。

本文分享一个建造电路板原型的经历,希望能帮助到大家。

1 设计电路板

在这个原型中,使用的是赛灵思(Xilinx)的Spartan 7系列FPGA。他们的XC7S6型号是最便宜的,拥有6,000个逻辑单元和100个I/O引脚供使用。FTGB196版本具有1mm的引脚间距,尺寸为15mm × 15mm,足够大,易于操作。

FPGAs需要多种不同的电压。在这个设计中,将I/O引脚的工作电压设置为3.3V(因为这对于业余爱好者来说比较标准),但还需要提供5V、1.8V和1.0V的电压。这意味着需要处理4种不同的电压!这些电路的设计可以在网上找到。基本上每个电压都需要一个芯片形式的稳压器和几个平滑电容器,一旦被设计好,你就可以在后续的设计中重复使用它们。

这里使用KiCAD进行设计。

FPGA本身是一个复杂的组件,它具有许多引脚,并按照不同的组织方式分为各种引脚组。FPGA可以被看作是一个整体的元件,但它也可以被分解为子元件。幸运的是,KiCAD提供了这个功能,这非常有用。这意味着你可以在多个图纸上同时显示FPGA,且只显示与该图纸相关的部分。通过这种方式可以保持图纸的整洁和清晰。

在第一块板上,没有太多其他的组件。这里设计了一块焊盘,用于连接一些存储器,这次选择了SRAM。在电路方面,SRAM所需的电路非常简单。另外还有一个USB到UART芯片,它也相对简单。然而,要找到具有正确焊盘的芯片并不容易。最终,费了一番周折才找到了一些合适的芯片。

最后,还有一个Pmod连接器。这是Digilent(一家FPGA制造商)的标准配置,用于外围设备。这里找到了一些插座的焊盘。

2 焊接BGA

FPGA通常采用球网阵列封装(Ball Grid Array,简称BGA),其底部没有引脚或腿,而是一些小小的焊球。将FPGA连接到电路板的常见方法是通过回流焊炉进行烘烤。这是目前大多数电子产品的组装方式。

通常情况下,最好是将整个制造过程交给专业制造商完成。在设计电路板时,需要考虑到机器人焊接,然后将其发送给拥有大型贴片机和大型烤箱的电路板厂,这样工作就完成了。然而,这种方法成本较高,通常仅适用于大批量订单。对于爱好者来说,BGA封装是一个挑战。

幸运的是,市面上有许多便宜或改装的焊炉可用。这里购买了一台价格便宜的焊炉——广受爱好者喜爱的T962A回流焊炉。

在进行回流焊接时,需要使用焊膏。焊膏是一种灰色的粘稠物,其中含有微小的焊球。加热后,焊膏会熔化并流动,通过毛细作用完成剩余的焊接工作。但首先,需要将焊膏涂抹在电路板上的焊盘上。常见的方法是使用金属薄膜模板,这些模板相当昂贵。

这里找到了一个位于英国的供应商,他们愿意使用激光切割聚酯薄膜作为替代品。虽然聚酯薄膜并不是最理想的选择,但对于单个元件来说效果还不错。这里决定只回流焊接FPGA,以保持简单。其他部分可以很容易地手动焊接。

使用这种方法,能学到一个诀窍——如果你使用镀铝膜,一定要在口罩上使用圆形图案,而不是激光切割小矩形并让它们彼此靠近。薄薄的镀铝薄膜无法承受刮擦,否则焊膏会四处飞溅。

焊接之前将FPGA放置在焊膏上是非常令人紧张的一步。我发现在温度图上画一个倒置的“V”形对于回流焊接FPGA效果不错。数据手册列出了推荐的曲线和温度,而这个曲线应该最符合要求。

3 手工焊接和错误

大多数元件都是2012封装(旧货币中的0805)。通常,进行手工焊接需要先在一个焊盘上涂上焊锡,在熔化焊锡的同时放置元件,让它固定,然后再焊接另一个焊盘。较大的元件通常需要经过焊锡、焊剂、焊锡带三个步骤。也可以将所有引脚涂上焊锡,然后去除多余的焊锡,据说这种方法效果非常好。有时你可能会看到一些焊点乍看起来是正确的,但实际上并没有连接。因此,反复再次检查非常重要,可以使用一把放大镜仔细检查焊点。

4 用Pmod进行图形处理

当所有焊接完成并经过测试后,可以使用一个小型JTAG电缆对FPGA进行编程。首先要做的是点亮一个LED。借助赛灵思的Vivado软件,你可以构建小型设计,将其烧录到FPGA上。

一旦LED成功闪烁,下一步就是尝试一些VGA(视频图形阵列)。尽管VGA是一项旧技术,但它非常可靠。由于它是模拟信号,所以需要更多的元件。幸运的是,数字到模拟的转换可以通过Digilent的VGA Pmod来实现。这个小巧可爱的板子只需插入电路板上的两个Pmod连接器即可。剩下的就是生成正确的数字信号。

幸运的是,威尔在这方面已经做了大量工作。你可以看看他关于FPGA图形处理的惊人系列文章。借助他的代码,你可以烧录FPGA。

5 未来研究方向

FPGA是非常神奇的设备。然而,硬件确实很复杂,虽然我们可以在软件中设计很多东西,但仍然存在许多潜在的错误。特别是在FPGA硬件调试方面有一些困难,因为一旦焊接上去,就无法再进行测试,也无法轻松取下来重试。虽然你可以使用测试探针接触它并测试信号,但FPGA处理的许多信号都非常快速且具有极高的带宽。

现在你掌握了一些基础知识,但还有许多其他方面可以研究,例如内存、外设、音频和更好的图像,这需要时间来探索和实现。不过,当最终获得成功时,所有的努力都是值得的!

推荐书单

《微机原理与接口技术——基本原理、实用技术和基于FPGA的SOC技术》

《微机原理与接口技术--基本原理实用技术和基于FPGA的SOC技术(高等院校电子信息科学与工程规划教材)》系统地讲解了微型计算机系统的结构、工作原理、接口技术及其应用,特别是将这些内容与现代EDA技术、FPGA开发技术和SOC片上系统技术有机地融合起来,全方位强化和拓展了这一传统教学领域中的知识与技能传授的深度与广度。本书的基本内容包括80x86微处理器结构、指令系统、汇编语言程序设计、存储器系统、总线技术、中断技术、定时/计数接口技术和DMA技术、并行接口技术、串行接口技术、模拟接口技术和其他实用的接口技术,以及与这些内容相对应的基于超大规模F=PGA的SOC技术。 本书可作为高等院校电子工程、通信、工业自动化、计算机等专业的本科生或研究生教材,也可用作相关专业技术人员的参考书。

购买链接:https://item.jd.com/10067827338575.html

精彩回顾

精通Spring Autowiring,解决Bean数据冲突

5个使用IntelliJ IDEA编写Java代码的优势

只需5步,使用start.spring.io快速入门Spring编程

使用矢量数据库打造全新的搜索引擎

使用IntelliJ IDEA体验Java 21的新功能

长按关注《Java学研大本营》
长按访问【IT今日热榜】,发现每日技术热点
继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存