FPGA初学者,回归经典

您所在的位置:网站首页 fpga开发版 FPGA初学者,回归经典

FPGA初学者,回归经典

2023-08-31 17:49| 来源: 网络整理| 查看: 265

随着时代的发展,芯片行业的兴起的气势已经不亚于当年互联网兴起时气势,越来越多的莘莘学子涌入半导体行业的大潮。越来越多的学子以找到一份芯片行业的工作为大学毕业目标,尽管不同的芯片公司对于求职者的需求不尽相同,FPGA 或许可以成为你的敲门砖。

本期Jaya 带来一款适合学生,FPGA 小白的开发板正点原子出品的超越者Spartan-6 FPGA开发板。作为学生或者初入社会的学子,如果想要进入半导体行业,那么你需要一些技能。半导体的行业,与传统的电子行业会有一些区别。比如传统的电子行业,相对来说回比较简单,一般来说工程师的角色一般包含软件工程师和硬件工程师,测试工程师三大类别,再往下细分的话,软件可能会包含固件开发工程师,Kernel 内核工程师,linux 上层工程师等等等等,硬件可能会有layout 工程师,系统工程师,射频工程师等等等等。但是芯片行业来说这个结构会复杂很多。一般可能会包含模拟IC设计工程师,数字IC设计工程师,版图工程师,硬件工程师,软件工程师,测试工程师等等。模拟和数字的设计工程师,负责构建起芯片的蓝图,版图工程师会将模拟部分的图纸实现,验证软件硬件的工程师,主要会完成以芯片为中心的验证,原型开发,方案设计等。而作为进入芯片行业的敲门砖之一,FPGA,Verilog相关的技术是你值得掌握的。

现如今芯片产业蓬勃发展,有志之士都在这条康庄大道努力拼搏,作为学生或者有心进入芯片行当的你是否也想在芯片行业上展身手呢?什么?你说你不会?没关系,不会可以学,本期的开发板就是这样一款面向纯新手的经典款,那么请出我们本期的主题来自正点原子的超越者FPGA开发板:

如果你看了上面的简单的说明不知所云,那么来!请继续往下看,Jaya会用最简单的语言来说明,只要稍微有一点电子基础的童鞋都是可以看懂的!

首先你需要明白什么使FPGA,所谓的FPGA就是Field Programmable Gate Array,即现场可编程门阵列,它是一种半定制的数字集成电路。简单的说就是用我们数字电路学科学过的与或非门来搭建电路,总所周知只有有了与或非门,理论上我们就可以实现任何的逻辑,FPGA的区别是不过使用语言的方式将这个与或非门的组合进行描述,这个语言就叫做硬件描述语言,比如VHDL,Verilog,System Verilog,再通过综合器将我们的硬件描述语言转换成硬件电路的实际实现发送给FPGA。这样FPGA就可以按照我们所描述的方式进行运行了。 你可能会说这个过程和单片机编程一样啊!作为初学者,可以暂时的这么认为,因为毕竟都需要经过手写代码,机器转换成器件能看懂的语言,然后再给机器执行。但是Jaya 会明确的告诉你单片机和FPGA有着本质的区别,FPGA的综合说到底,是将你的语言转换成电路,一个电路,只要有电信号就会按照逻辑直接跑到过去。而单片机的编译是将代码转成成机器码,然后由Core来机型逐行的执行。所以单片机的程序会有一个时序的关系,只有上一行执行了才会再执行下一行。而FPGA则不会由时许的关系,所有的电路都是同时执行,输入端给一个信号,输出端就会立刻给出反馈。

OK,简单的科普FPGA的知识后,我们先来简单的开个箱,箱子咱就不看了,就是正常的厚纸壳箱,我们直接将内部的器件拆出来给大家看!

先来一张全家福,套件中的器件包含: 1.    Jtag的转接座 2.    两根杜邦线 3.    一个Mini USB 转 USB TypeA的USB线 4.    12V 1A的电源适配器 5.    一根DB9 to DB9的串口线 6.    Jtag排线 7.    屏幕的FPC 异面线。 8.    4.3寸带触摸的LCD 显示屏 9.    超越者Spartan-6 FPGA开发板本体 10.    红外遥控器

下面我们来看下主板,说实话的Jaya的主观感受还是很不错的,整块板卡来说看起来十分精致,整体的布局紧凑,但是并不会显得很散乱,正点原子作为设计开发板的大厂,基础的功底还是做的很扎实的,对接口,器件的布局,摆放的恰当好处。对于板卡的保护做的也很到位,上下均有两层亚克力进行保护,top面的亚克力进行过切合,使得板子获得应有的保护,但是又不会被挡住接口,可以说是在正常使用的前提下,为开发板提供了最强的保护。

在板卡的背面十分干净,只有一个TF 卡槽,一个用于播放声音的Speaker,亚克力底板还很友善的为Speaker开了孔,方便声音传出。剩下的部分除了焊点和固定孔就是Spartan-6 FPGA 所需要的去耦电容。小伙伴可能会问,为什么去耦电容一定要摆在背面,明明正面的Spartan-6 FPGA周围还有很多空隙,如果摆在正面背面就没有物料岂不是看起来会更加整洁?其实呢这个去耦电容摆在背面主要是有几点原因啦,一般来说去耦电容的摆放位置是很有讲究的,一般要靠近管脚摆放,靠近管脚摆放,才能让电源管脚获得最好的去耦效果。比如像是常见的QFN 封装,SOP 封装,LQFP的封装管脚都在外侧,很好理解就把去耦电容摆在芯片的旁边就会好了,但是对于Spartan-6 XC6SLX16,这颗FT(G)256封装的BGA 芯片,管脚的就近点就是在PCB的背面。另外,即使就近原则并没有那么严格,BGA芯片的走线也不会很容的把去耦电容摆放在芯片的周围。这个的原因是这样的,一般来说一层信号层最多可以拉出BGA芯片的3圈的引脚,而电源一般都会比较靠里一点。所以把内侧的电源信号跨越无数的管脚拉到芯片的边上也是一件费力不讨好的事情。(PS:底面亚克力的防滑垫是小编自己贴的,桌面有点滑,在插线或者其他动作的时候板子老是乱动)

接下来呢我们来看下整块开发板上最核心的器件,那么就是位于板卡中央的Xinlinx 的Spartan-6 FPGA 芯片,Spartan-6 作为2010年的老将来说,可以说它拥有这强大的生命力,到目前位置依然有很多Spartan-6 的应用场景。Spartan-6 使用的是45nm的制成,拥有知道可达2027年的供货周期,可以说在电子产品迭代如此之快的今天,芯片的性能恨不得半年的就翻一倍的情况下,Spartan-6 依然坚挺。这就铸造可以芯片的经典印象。就好比单片机中的8051,又好比ARM 32位单片机的STM32F103。尽管年代已经过去,更新更强的产品已经问世,但是依然无法磨灭曾经的经典。

Spartan-6 系列其实有很多款芯片,各款芯片的差异如下表,看出来Spartan-6 系列大体上可以分为两类,一类是带T的,另一类是不带T的,这个X的差异主要在是否带收发器,而是什么事收发器呢?作为新手只要知道,有了收发器,我们就可以通过收发来接收高速的信号,比如PCIe,除了这个收发器的区别外其他的差异就是FPGA资源数目的多少了。如下图中的Logic Cells,这个就是FPGA所有拥有的逻辑资源,Spartan-6 FPGA 中使用的事一个6输入的LUT,所谓的LUT就是查找表,通过使用LUT与其真值表的方式来实现FPGA 中的逻辑与或非的实现,这样就大大简化了FPGA的设计难度。使得同样的面积中塞进更多的逻辑资源。

Spartan-6 系列的封装也事多众多杨的,同样型号逻辑资源相同,使用不同的封装,使可以使用的管脚数目不同。Spartan-6 系列FPGA的大小覆盖 8X8mm 的BGA 到31X31mm 的BGA,同样的更大的封装就可以扩展出更多的管脚User I/O也随着封装的增加从106个用户IO,扩展到576个用户IO。我们的正点原子超越者Spartan-6 FPGA开发板,使用的就是XC6SLX16 FTG256的封装。对应的资源数目位24051个Logic Cells。

Spartan-6器件简单了解了,我们再回来看下我们的开发板。整体来说正点原子的超越者开发板将新手可能会用的功能完全包括,丰富的资源接口,会为我们的FPGA的学习带来便利。

正点原子 超越者Spartan-6开发板的主要资源包括:

主控芯片:Xilinx Spartan6系列XC6SLX16,封装:FTG256,速率等级:-2 晶振:50Mhz有源晶振 FLASH:采用Winbond公司的W25Q128 QSPI FLASH,容量:128Mbit(16M字节) DDR3: NT5CB128M16CP-DI,容量:2Gbit(256M字节) EEPROM芯片:AT24C64,容量:64Kbit(8K字节) 1个电源指示灯(蓝色) 4个状态指示灯(LED0~ LED3:红色) 1个程序下载完成指示灯(绿色) 1个ATK模块接口,支持正点原子蓝牙/GPS/MPU6050/RGB灯模块 1个标准的RGB888 TFT-LCD接口 1个OLED/摄像头模块接口 1个6位数码管 1个RS232/RS485选择接口 1个CAN选择接口 1路CAN接口 1路RS232接口(母头) 1路RS485接口 1路USB UART接口 1路HDMI接口 1路千兆以太网接口(RJ45) 1个有源蜂鸣器 1个红外接收头 1个TF卡接口(在板子背面) 1个JTAG调试下载口,10PIN接口 1组5V/3.3V电源扩展口,支持对外提供电源和外部输入电源 1个直流电源输入接口(输入电压范围:DC6~16V) 1个RTC后备电池座,并带电池 1个RTC实时数字时钟,采用PCF8563芯片 1个MIC(录音输入) 1路音频输入接口 1路耳机输出接口 1个小扬声器(在板子背面) 1个复位按键,可作为FPGA程序执行的复位信号 4个功能按键 1个电容触摸按键 1个电源开关,控制整个开发板的电源 2个20x2扩展口,共80个扩展IO口,每组包含1个3.3V和5V电源接口

可见超越者Spartan-6开发板的资源真的非常的丰富。拥有丰富的资源,以及外设接口,可以更加方便的给我们来进行各种实验。比如基础的功能,像是初学者必须要了解的按键和点灯,再比如ETH PHY的控制,LCD屏幕的驱动,摄像头接口通过DVP的接口驱动8bit的CMOS Sensor获取图像,可玩性很强,基本涵盖FPGA和Verilog入门的需求,XC6SLX16的逻辑资源也足以支撑初学者玩到软核的构建。作为入门开发板来说真的是不二的选择。正常能一般来说开发板的在出场之前会进行测试程序的烧录,来确定板卡是完好的,正点原子的超越者开发板也不会例外那么我门就先来直接上电,上电来看下板卡的状态,以及顺便检测板卡的在运输的途中是否会有意外的损伤(出厂的时候一定会经过测试,如果板卡出现问题,大概率是粗心的快递小哥不小心造成的物理损伤),顺便也来看下整个板子的功耗,一般来说出场程序会尽量将可以验证的部分都验证到,虽然逻辑可能没有用光,无法测量到最大功耗,额你说为啥用光逻辑才会有最大功耗?这里的就是另外一个概念了,逻辑用的多,上电的瞬间所有的逻辑都进行配置,配置的过程就相当于打开管子,如果很多管子都进行同时进行工作会有一个超大的瞬间抽电,这时候电源就一定要抗住,Jaya以前就碰到,上电瞬间电源被抽死从而导致板卡无法启动的情况。不过Spartan-6这个规模应该不会有这个问题,另外就是你的逻辑越多,速率越快自然功耗也就越大了。

整体的功耗有3W,可以说符合Jaya的预期,背面的喇叭会有一点点白噪音,当将耳朵贴在背板亚克力上能隐约的听见沙沙声。于是Jaya看了相关Audio部分的原理图,发现居然还是熟悉的配方熟悉的味道,Audio部分功能是实现是通过外接了一颗WM8960 Codec来实现,通过I2S接口与FPGA 连接,发送音频数据和接收音频数据,另外还有一路I2C是用来给WM8960进行配置的。WM8960也是单片机中常用的一颗Codec。一样的料在不同的平台上使用,还真是有种又见老朋友的感觉。

硬件的结构我们基本了解完成下面我们来实现使用板子实现一点功能,首先我们需要有一个正点原子超越者FPGA开发板的综合环境。由于正点原子超越者FPGA开发板使用的FPGA芯片是Spartann 6系列所以对应的开发综合环境就要是ISE或者PlanAhead,PlanAhead工具可能使用的会比较少点,大多数都会使用ISE的工具,ISE的工具会略有点老,安装的过程中需要进行一些调整以达到适配WIN10 的条件。额如果你还再用老版本的Windows,请当我没说。具体的操作如下。

首先呢我们先来安装软件,ISE的安装文件在的目录下,解压TAR文件。

解压后双击Xsetup.exe进行安装,全程下一步就好。(PS:这里对原子哥的视频的确实有点佩服,连安装的过程的巨细无遗,不愧是看称保姆级的资料)

安装好了会弹出的一个Xilinx License Configuration Manager的窗口,用来激活工具的,ISE没有激活是几乎能不能使用的,一般来说在里有三个方法,第一个当然就是购买正版软件,当然这个有条件当然是最优先考虑的,第二个就是使用试用版的,试用版的License 相对来说限制较大,不方便使用,倒不是十分推荐,第三就是最不推荐也是最推荐的,在网上查找可以激活工具的License,毕竟我们是学习,又没又商用(PS:自己找个借口),这部分Jaya就不给大家举例子了,网上多的是!

OK这样的话我们的工具就已经安装好了,但是,这样的状态还不推荐使用,因为与WIN10的兼容性问题,可能会导致闪退程序无法下载。我需要替换掉库文件使ISE平台变得稳定。具体操作如下:

1.将文件libPortability.dll重名为libPortability.dll.orig 2.将文件libPortabilityNOSH.dll复制一份,将这个复制文件重命名为libPortability.dll,并重新粘贴到与libPortabilityNOSH.dll相同的路径下

1.将文件libPortability.dll重名为libPortability.dll.orig 2.然后将第一步中的文件libPortabilityNOSH.dll复制到该文件夹下,并重命名为libPortability.dll

这样我们就可以愉快和正点原子超越者FPGA开发板玩耍了。 我们简单的实现下点灯的实验首先需要观察原理图,确认好管脚的位置

通过观察原理图,我们发现LED 和 KEY相关的管脚都是连接在Bank2上,另外一个重要的参数就是时钟,我们可以通过原理图发现正点原子超越者FPGA开发板的如数时钟是一个50M的CLK,是通过BANK2的N8管脚输入。

实验的框架逻辑为们有六路逻辑输入进FPGA,分别是50M的时钟,reset按键,以及四个按键。输出逻辑有四个,分别对应四颗LED灯。

我们这里就直接引用原子哥的代码,然后进行工程的综合,使用ISE的环境完成我们调试的小测试代码如下: //****************************************Copyright (c)***********************************// //技术支持:www.openedv.com //淘宝店铺:http://openedv.taobao.com //关注微信公众平台微信号:"正点原子",免费获取FPGA & STM32资料。 //版权所有,盗版必究。 //Copyright(C) 正点原子 2018-2028 //All rights reserved //---------------------------------------------------------------------------------------- // File name:           flow_led // Last modified Date:  2018/7/11 11:12:36 // Last Version:        V1.1 // Descriptions:        流水灯 //---------------------------------------------------------------------------------------- // Created by:          正点原子 // Created date:        2018/1/29 10:55:56 // Version:             V1.0 // Descriptions:        The original version //---------------------------------------------------------------------------------------- //****************************************************************************************// module flow_led(     input               sys_clk  ,  //系统时钟     input               sys_rst_n,  //系统复位,低电平有效          output  reg  [3:0]  led         //4个LED灯     ); reg [23:0] counter; //***************************************************** //**                    main code //*****************************************************                                                                                                                                                                                                    //计数器对系统时钟计数,计时0.2秒 always @(posedge sys_clk or negedge sys_rst_n) begin     if (!sys_rst_n)         counter



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3