精华内容
下载资源
问答
  • Steve拥有广泛的FPGA设计经验,包括应用在DSP、高速计算总线体系结构、集成电路测试系统、工业自动化控制、音频、视频、嵌入式微处理器、PCI、医疗系统设计,商业航空ASIC原型。Steve他的团队已为部分财富...

    作者介绍:

    Steve Kilts Spectrum Design Solutions公司的创始人之一,首席设计工程师。Steve拥有广泛的FPGA设计经验,包括应用在DSP、高速计算和总线体系结构、集成电路测试系统、工业自动化和控制、音频、视频、嵌入式微处理器、PCI、医疗系统设计,商业航空和ASIC原型。Steve和他的团队已为部分财富100强公司和小型创业者们成功地完成了众多项目。

    目录:

    第1章 高速结构设计

    第2章 面积结构设计

    第3章 功耗结构设计

    第4章 设计实例:高级加密标准

    第5章 高级设计

    第6章 时钟区域

    第7章 设计实例:I2S与SPDIF

    第8章 实现数学函数

    第9章 设计实例:浮点单元

    第10章 复位电路

    第11章 高级仿真

    第12章 综合编码

    第13章 设计实例:安全散列算法

    第14章 综合优化

    第15章 布图

    第16章 布局布线优化

    第17章 设计实例:微处理器

    第18章 静态时序分析

    第19章 PCB的问题

    公众号回复“Steve”获得此书。

    高级FPGA设计结构实现和优化mp.weixin.qq.com
    deeb102a557f4d8a0f74de77cc7d9ac7.png
    1: FPGA图像处理前景如何
    2:FPGA图像处理基本技巧
    3:图像去雾算法的实现
    
    4:FPGA实现图像浮雕效果 
    5: 基于FPGA图像去雾算法的实现
    6: 基于FPGA的数字识别一
    7: 基于FPGA的数字识别二
    8: 基于FPGA的数字识别三

    https://mp.weixin.qq.com/s/zfPHrqhIoS86ypNLEz8ntQ

    展开全文
  • 一般所说的FPGA的最小系统主要包括FPGA芯片、下载电路、外部时钟、复位电路电源。如果需要使用SOPC软嵌入式处理器还要包括SDRAMFlash。一般以上这些组件是FPGA最小系统的组成部分。本文以EP2C8Q208C8为主芯片...

    FPGA最小系统是可以使FPGA正常工作的最简单的系统。它的外围电路尽量最少,只包括FPGA必要的控制电路。一般所说的FPGA的最小系统主要包括FPGA芯片、下载电路、外部时钟、复位电路和电源。如果需要使用SOPC软嵌入式处理器还要包括SDRAM和Flash。一般以上这些组件是FPGA最小系统的组成部分。本文以EP2C8Q208C8为主芯片进行FPGA最小系统的设计。

    FPGA芯片管脚介绍

    对于需要在印刷电路板上使用大规模FPGA器件的设计人员来说,I/O引脚分配是必须面对的众多挑战之一。其既可能帮助设计快速完成,也有可能造成设计失败。在此过程中必须平衡FPGA和PCB两方面的要求,同时还要并行完成两者的设计。如果仅仅针对PCB或FPGA进行引脚布局优化,那么可能在另一方面引起设计问题。因此,在设计FPGA电路之前,需要认真阅读相应FPGA的芯片手册。FPGA的管脚主要包括配置管脚、电源、时钟、用户I/O及特殊应用管脚等。

    1. 电源管脚

    VCCINT:内核电压。通常与FPGA芯片所采用的工艺有关,如130nm工艺为1.5V、90nm工艺为1.2V。

    VCCIO:端口电压。一般为3.3V,还可以支持选择多种电压,如5V、1.8V、1.5V等。

    VREF:参考电压。

    GND:信号地。

    2. 时钟管脚

    VCC_PLL:锁相环管脚电压,直接连VCCIO。

    VCCA_PLL:锁相环模拟电压,一般通过滤波器接到VCCINT上。

    GNDA_PLL:锁相环模拟地。

    GNDD_PLL:锁相环数字地。

    CLK[n]:锁相环时钟输入,其中n表示锁相环序号。

    PLL[n]_OUT:锁相环时钟输出,其中n表示锁相环序号。

    3. 配置管脚

    MSEL[1..0]:用于选择配置模式。FPGA有多种配置模式,如主动、被动、快速、正常、串行、并行等,可以对此管脚进行选择。

    DATA0:FPGA串行数据输入,连接至配置器件的串行数据输出管脚。

    DCLK:FPGA串行时钟输出,为配置器件提供串行时钟。

    nCSO(I/O):FPGA片选信号输出,连接至配置器件的nCS管脚。

    ASDO(I/O):FPGA串行数据输出,连接至配置器件的ASDI管脚。

    nCEO:下载链器件使能输出。在一条下载链(Chain)中,当第一个器件配置完成后,此信号将使能下一个器件开始进行配置。下载链的最后一个器件的nCEO应悬空。

    nCE:下载链器件使能输入,连接至上一个器件的nCEO。下载链第一个器件的nCE接地。

    nCONFIG:用户模式配置起始信号。

    nSTATUS:配置状态信号。

    CONF_DONE:配置结束信号。

    4. 用户I/O

    I/O[n]:可用作输入或输出,或者双向口,同时可作为LVDS差分对的负端。其中n表示管脚序号。

    5. 特殊管脚

    VCCPD:用于选择驱动电压。

    VCCSEL:用于控制配置管脚和锁相环相关的输入缓冲电压。

    PORSEL:上电复位选项。

    NIOPULLUP:用于控制配置时所使用的用户I/O的内部上拉电阻是否工作。

    TEMPDIODEn/p:用于关联温度敏感二极管。

    FPGA开发板的主芯片EP2C8Q208C8如图2-2所示。

    295a86b990a622ce8dcc37df57b566a6.png

    图2-2 EP2C8Q208C8管脚图

    电源电路设计

    电源是整个系统能够正常工作的基本保证,如果电源电路设计得不好,系统有可能不能正常工作,或者即使能正常工作但是散热条件不好,导致系统不稳定等异常情况。所以如何选用合适的电源芯片,以及如何合理地对电源进行布局布线,都是值得下大工夫研究的。

    在选用电源之前要仔细阅读FPGA的芯片手册,一般来说,FPGA用到的管脚和资源越多,所需要的电流就越大,当电路启动时FPGA的瞬间电流也比较大。通过数据手册中提供的电气参数,确定FPGA最大需要多大的电流才能工作。下面是几种常使用的FPGA参考电源芯片。

    AMS1117系列稳压器可以提供1A电流,线型电源(适用208管脚以下、5万逻辑门以下的FPGA)。

    AS2830(或LT1085/6)稳压器可以提供3A电流,线性电源(适用240管脚以下、30万逻辑门以下的FPGA)。

    TPS54350稳压器可以提供3A电流,开关电源(适用大封装大规模的高端FPGA)。

    为了降低FPGA电路成本,电源电路采用ASM1117电源芯片进行设计,如图2-3所示。

    082af4c8a72a751ec1956c232f8a20de.png

    图2-3 电源电路设计原理图

    滤波电容电路模块设计

    为了保证FPGA芯片正常工作,其每一个内核电压VCCINT和端口电压VCCIO引脚都需添加一个电容,以滤除外电路对FPGA主芯片的影响,其典型电路如图2-4所示。

    86a5f130699f0c7715d2c1ee1af39be7.png

    图2-4 电源电路设计原理图

    JTAG调试与AS下载电路的设计

    FPGA是SRAM型结构,本身并不能固化程序。因此,FPGA需要一片Flash结构的配置芯片来存储逻辑配置信息,用于进行上电配置。以Altera公司的FPGA为例,配置芯片分为串行(EPCSx系列)和并行(EPCx系列)两种。其中EPCx系列为老款配置芯片,体积较大,价格高。而EPCSx系列芯片与之相比,体积小、价格低。在把程序固化到配置芯片之前,一般先使用JTAG模式去调试程序,也就是把程序直接下载到FPGA芯片上运行。虽然这种方式在断电以后程序会丢失,但是充分利用了FPGA的无限擦写性。所以一般FPGA有两个下载接口:JTAG调试接口和AS下载接口。所不同的是前者下载至FPGA,后者是编程配置芯片(如EPCSx),然后上电复位再配置FPGA。如图2-5所示是JTAG模式和AS模式的电路原理图。

    92670c9b5086f3808c2e5fe18def69dc.png

    图2-5 JTAG模式和AS模式电路设计原理图

    时钟电路设计

    FPGA的全局时钟应该是从晶振分出来的,最原始的频率。其他需要的各种频率都是在这个基础上利用PLL或其他分频手段得到的。晶振可以分为无源晶振和有源晶振。无源晶振有2个引脚的无极性元件,需要借助于外接设备内部的振荡时钟电路才能产生振荡信号,自身无法振荡起来。有源晶振有4只引脚,是一个完整的振荡器,器件内部除了石英晶体外,还有晶体管和阻容元件。因FPGA内部不存在振荡时钟电路,故需采用有源晶振进行时钟电路设计,同时在输出端串接了一个100欧姆和一个0欧姆电阻,以方便时钟电路调试,如图2-6所示是时钟电路原理图。

    77742aac610c8666b2d88d5dfd9e0451.png

    图2-6 时钟电路原理图

    复位电路的设计

    电源是整个系统能够正常工作的基本保证,如果电源电路设计得不好,系统有可能不能正常工作,或者即使能正常工作但是散热条件不好,导致系统不稳定等异常情况。所以如何选用合适的电源芯片,以及如何合理地对电源进行布局布线,都是值得下大工夫研究的。

    一般复位电路采用的是低电平复位,只有个别单片机采用高电平复位方式。常见的电平复位电路分为芯片复位和阻容复位。前者的复位信号比较稳定,而后者容易出现抖动。下面是几种常使用的复位芯片。

    常用的芯片复位有MAX708S/706S系列,它们可提供高、低电平两种复位方式和电源监控能力(监控电源电压低到一定程度自动复位)。

    IMP811是一款比较低廉的复位芯片,只有低电平复位功能,但是其体积非常小。

    从FPGA电路板价格低廉角度出发,复位典型连接电路如图2-7所示。

    59c20ca3b6fba64f9445797e2e69576d.png

    图2-7 复位电路设计原理图

    锁相环外围电路的设计

    Altera公司的FPGA内嵌模拟锁相环,但为了使锁相环正常工作,其外围必须加入一个10mH的电感、一个0.1uF和一个0.01uF的瓷片电容,以及一个10uF的电解电容,如图2-8所示为锁相环外围电路原理图。FPGA的锁相环可以通过反馈路径来消除时钟分布路径的延时,可以做频率综合(如分频和倍频),也可在去抖动、修正占空比移相等应用中使用。

    91ad5ba8114f2510d8f12ea245c80897.png

    图2-8 锁相环外围电路原理图

    LED电路的设计

    为了便于验证FPGA最小系统时钟电路和主芯片是否可以正常工作,一般系统都需接入8位LED等,如图2-9所示为LED电路设计原理图。

    b5665fb34bfe163d1d14c2db33f422c1.png

    图2-9 LED电路设计原理图

    高速SDRAM存储器接口电路设计

    SDRAM可作为软嵌入式系统(SOPC)的程序运行空间,或者作为大量数据的缓冲区。SDRAM是通用的存储设备,只要容量和数据位宽相同,不同公司生产的芯片都是兼容的。一般比较常用的SDRAM包括现代HY57V系列、三星K4S系列和美光MT48LC系列。例如,4M×32位的SDRAM,现代公司的芯片型号为HY57V283220,三星公司的为K4S283232,美光公司的为MT48LC4M32。这几个型号的芯片可以相互替换。SDRAM典型电路如图2-10所示。

    01752a10ddbf43385892d2d74dfd7805.png

    图2-10 高速SDRAM存储器接口原理图

    Flash存储器接口电路设计

    Flash可作为SOPC系统的程序存储空间,或者作为程序的固件空间。最常使用的是AMD公司或者Intel公司的Flash。在小容量的Flash选择上,AMD公司的Flash性价比较高,而高容量的Flash选择上,Intel公司的Flash性价比较高。Flash同样也可以通过设置实现8位和16位的数据位宽,典型的16位模式下的Flash连接如图2-11所示。

    670f8bcbcff64b63e92674aac7f6a043.png

    图2-11 Flash存储器接口电路原理图

    FPGA最小系统扩展接口电路设计

    为了完成FPGA对外围电路的控制,一般来说,FPGA最小系统都需要使用扩展接口电路来外接其他外围设备,同时也需要将电压5V、3.3V、GND引出,其典型电路如图2-12所示。

    cdab44479fb2879aa27038bbb267730f.png

    图2-12 FPGA最小系统扩展接口电路原理图

    展开全文
  • 在我们嵌入式中,有这样一朵奇葩介于软件与硬件之间,这朵奇葩就是FPGA。可能很多平时玩MCU比较多的朋友不太了解。之前我也不太了解,但是最近两年的这两份工作都有与FPGA挂钩,所以我精通FPGA程序的烧写(不仅如此,...

    在我们嵌入式中,有这样一朵奇葩介于软件与硬件之间,这朵奇葩就是FPGA。可能很多平时玩MCU比较多的朋友不太了解。

    之前我也不太了解,但是最近两年的这两份工作都有与FPGA挂钩,所以我精通FPGA程序的烧写(不仅如此,我还精通电脑的开关机,哈哈):

    500116ad3595b233a9350de72a5f3429.gif

    下面我们一起来简单了解一下。

    什么是FPGA

    FPGA (Field Programmable Gate Array ),即现场可编程逻辑门阵列,属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数较少的问题。

    FPGA 的基本结构包括可编程输入输出单元,可配置逻辑块,数字时钟管理模块,嵌入式块RAM,布线资源,内嵌专用硬核,底层内嵌功能单元。

    FPGA说白了就是一颗芯片,只不过是半定制的芯片,它里面的电路可以通过硬件描述语言来设计,所以灵活性很高。

    设计语言及平台

    为什么说FPGA是一朵介于软件与硬件之间的一朵奇葩呢。

    因为说它属于硬件吧,但是也是需要写代码的,说它是软件吧,但其思想又与我们一些软件设计思想不符(FPGA程序是并行执行的),而且又得对一些数电及一些芯片规格、芯片内部原理等硬件知识了解得很深。综合来说,我觉得FPGA还是属于硬件的范畴。

    FPGA使用硬件描述语言来开发, 常用的主要有VHDL、Verilog HDL、System Verilog 和 System C。其中,Verilog HDL是广泛应用的硬件描述语言,可以用于硬件设计流 程的建模、综合、模拟等多个阶段。

    Verilog HDL 优点:类似C语言,上手容易,灵活。大小写敏感。在写激励和建模方面有优势。缺点:很多错误在编译的时候不能被发现。

    FPGA的应用及发展

    FPGA一般应用在高性能处理、实时要求高的领域,比如高速接口、报文转发、图像处理、视频传输、辅助电机控制(比如伺服驱动器)等,还可以应用在芯片前期验证。

    说个我们MCU玩家可能比较熟悉的:MCU芯片的前期设计验证。大家有没有想过STM32是怎么做出来的呢?

    首先,用FPGA来设计STM32内部的电路,设计完之后就可以把这FPGA芯片当成STM32来用,然后就可以写C代码去验证一些外设。

    如果发现外设功能不正常,那又可以用硬件描述语言来修改FPGA内部电路,不断修改直到FPGA的功能都正常(具有与一般MCU芯片一样的功能),然后再拿去封装成一颗颗芯片,就是我们在用的STM32。

    大家不要误以为我是ST的工程师哈,以上只是一些自己接触到的东西加上自己的一些之前的学习了解到的东西。

    上面用到的相关是SOPC技术。什么是SOPC技术呢?

    SOPC技术简介

    SOPC是在单纯的FPGA芯片上使用FPGA的逻辑和存储器资源搭建一个软核CPU系统,由该软核CPU实现所需处理器的完整功能。

    由于是使用FPGA的通用逻辑搭建的CPU,因此具有一定的灵活性,用户可以根据自己的需求对CPU进行定制裁剪,增加一些专用功能,例如除法或浮点运算单元,用于提升CPU在某些专用运算方面的性能,或者删除一些在系统里面使用不到的功能,以节约逻辑资源。

    另外也可以根据用户的实际需求,为CPU添加各种标准或定制的外设,例如UART,SPI,IIC等标准接口外设,同时,用户也可以自己使用FPGA的逻辑资源,编写各种专用的外设,然后连接到CPU总线上,由CPU进行控制,以实现软硬件的协同工作。

    在保证系统性能的同时,增加了系统的灵活性。而且,如果单个的软核CPU无法满足用户需求,可以添加多个CPU软核,搭建多核系统,通过多核CPU协同工作,让系统拥有更加灵活便捷的控制能力。

    由于CPU是使用FPGA的通用逻辑资源搭建的,相较使用经过布局布线优化的硬核处理器来说,软核处理器够运行的最高实时钟主频要低一些,而且也会相应的消耗较多的FPGA逻辑资源以及片上存储器资源。

    因此SOPC方案仅适用于对于数处理器整体性能要求不高的应用,例如整个系统的初始化配置,人机交互,多个功能模块间的协调控制等功能。再如在芯片的设计验证阶段,主要保证芯片功能没问题即可。

    在高端应用上,比如视觉、机器人的应用上,会用到SoC FPGA技术。什么又是SoC FPGA技术呢?

    SoC FPGA技术简介

    从架构的角度来说,SOPC和SOPC FPGA是统一的,都是由FPGA部分和处理器部分组成。在SoC FPGA 中,嵌入的是ARM公司的Cortex-A9硬核处理器,简称HPS(Hardware Processor System)

    而SOPC技术中,嵌入的是NIOS II 软核处理器,两者指令集不一样,处理器性能也不一样。Cortex-A9硬核处理器性能远远高于NIOS II 软核处理器。

    相关芯片就是Altera公司Cyclone V SoC FPGA芯片。Cyclone V SoC FPGA 片上的HPS部分,不仅集成了有双核的Cortex-A9硬核处理器,还集成了各种高性能外设,如MMU、DDR3控制器、Nand FLASH控制器等,有这些外设,HPS部分就可以运行成熟的Linux操作系统。

    NIOS II软核CPU虽然可以通过配置,用逻辑资源来搭建相应的控制器以支持相应功能,但是从性能和开发难度上来说,基于SoC FPGA架构进行设计开发是比较好的选择。

    虽然SoC FPGA芯片上既包含了有ARM,又包含了有FPGA,但是两者一定程度上是相互独立的,SoC芯片上的ARM处理器核并非是包含于FPGA逻辑单元内部的,FPGA和ARM(HPS)处理器只是封装到同一个芯片中,JTAG接口、电源引脚和外设的接口引脚都是独立的。

    因此,如果使用SoC FPGA芯片进行设计,即使不使用到片上的ARM处理器,ARM处理器部分占用的芯片资源也无法释放出来,不能用作通用的FPGA资源。而SOPC则是使用FPGA通用逻辑和存储器资源搭建的CPU,当不使用CPU时,CPU部分占用的资源可以被释放,重新用作通用FPGA资源。

    相关资料:

    《阿东 手把手教你学FPGA》

    《小梅哥 基于SoC FPGA的嵌入式设计和开发教程》

    最后

    FPGA技术是一项很热门、很吃香的技术,但也是有门槛的。比如学历,很多FPGA相关得岗位,都需要研究生学历。FPGA一般研究生阶段会接触得比较多,如果本科阶段能接触到,那就太幸福了,可以学一学。正点原子和野火也在做这方面的教程吧。正点原子的做FPGA教程的好像是《手把手教你学FPGA》这本书的作者,很好的书。

    FPGA在高端领域用得多,什么是高端领域前面介绍的时候已经有说,工业机器人、图像处理等。有机会可以去大厂走一遭(大厂也有容易进的),接触一些一般在一般公司接触不到的东西,可以刷新我们的认知。大厂的特点就是有钱、任性,用的都是高端芯片。

    之前的公司用的都是Altera的Cyclone V SoC FPGA芯片、TI的DSP28377、AM5728等高端芯片,有的项目甚至几块高端芯片一起上,但是并没有用到那么多的芯片资源。那时候发现STM32好low啊,但现在是真香,哈哈。

    大家都知道我们做嵌入式的,要涉及的东西都很杂,在专注于一个方向的前提下多了解一些其它知识也是很有帮助的。关于FPGA相关的笔记我是写不动了,因为我这方面学得不多,也基本都忘了。

    短时间内也不会去折腾这个东西了,因为与我现在的发展方向不符(我的方向是MCU->物联网、嵌入式Linux)。这里给大家推荐一位做FPGA的朋友(李肖遥)的公众号:

    18bc41d2ea2b3c868ce52e36289e6af8.png

    大家有兴趣的可以关注以下。号主是一位有七年工作经验的工程师,其公众号不仅仅分享FPGA相关的知识,也同样分享C/C++、Linux、QT等方面的技术文章。下面列举的是一些精选文章:

    Linux 设备驱动

    蜕变成蝶~Linux设备驱动之字符设备驱动

    蜕变成蝶~Linux设备驱动中的并发控制

    蜕变成蝶~Linux设备驱动中的阻塞和非阻塞I/O

    蜕变成蝶~Linux设备驱动之异步通知和异步I/O

    蜕变成蝶~Linux设备驱动之中断与定时器

    蜕变成蝶~Linux设备驱动之CPU与内存和I/O

    蜕变成蝶~Linux设备驱动之DMA

    蜕变成蝶~Linux设备驱动之按键设备驱动

    蜕变成蝶~Linux设备驱动之watchdog设备驱动

    乾坤合一~Linux设备驱动之块设备驱动

    乾坤合一~Linux设备驱动之终端设备驱动

    乾坤合一~Linux设备驱动之I2C核心、总线以及设备驱动

    乾坤合一~Linux设备驱动之USB主机和设备驱动

    乾坤合一~Linux设备驱动之SD/MMC/SDIO驱动分析(上)

    乾坤合一~Linux设备驱动之SD/MMC/SDIO驱动分析(下)

    qt 进阶之路

    Qt 学习笔记-强势入门

    Qt 学习笔记-处理鼠标响应事件

    Qt 学习笔记-Qt中添加背景图片的方法

    Qt 学习笔记-中秋节,QPainter画一颗小心心送给你

    期待已久,Qt for MCUs 1.0正式发布

    Are you kidding me ? 在单片机(MCU)上运行Qt

    为什么 qt 成为 c++ 界面编程的第一选择?

    Qt 纯属娱乐-绘制一个模拟时钟

    Qt 纯属娱乐-模拟一个导航定位系统

    Qt 纯属娱乐-做一个类似微信滑动聊天界面demo

    简诉我和 Qt 的故事以及发文方向

    资料下载 | Qt 语言资料pdf 经典文档推荐

    FPGA那些事儿

    Vivado SDK 怎么添加函数?

    Notepad++编辑器——Verilog、代码片段、直接编译

    Zynq lwip怎么既可以接收又可以发送呢?

    Zynq lwip不插网线初始化,断线重连,你解决了吗?

    Zynq lwip中的TI,Marvell,Realtek,atheros的phy配置

    FPGA 高手养成记-Verliog语法基础

    FPGA 高手养成记-浅谈状态机

    FPGA 高手养成记-Test bench文件结构一览无余

    FPGA 高手养成记-【很重要】Testbenth前仿真全过程

    FPGA 高手养成记-手把手解析时序逻辑乘法器代码

    FPGA 高手养成记-串行口通信电路设计

    FPGA 高手养成记-基于FIFO的串口发送机设计全流程

    FPGA 高手养成记-i2c通信

    程序人生vs疑难杂症

    日本微软做四休三真的适合程序员吗

    作为一名有追求的程序员,你双11最舍得花钱买的东西有哪些?

    @程序员,你真TM需要培养一个兴趣爱好

    对程序员来说,一份工作坚持多久跳槽最合适?

    @程序员,说好不哭,你却哭的稀里哗啦

    多大仇,这个离职证明大家怎么看?

    为什么程序员下班后只关显示器从不关电脑?

    优秀的程序员应该怎么度过国庆节呢?

    程序员视角看手机计算器上为什么10%+10% != 0.2 ?

    来瞅瞅 | 2019年最新编程语言排行榜

    从【微软员工主动曝光薪资】来反思国内薪资普遍现状

    推荐一款命令行利器 Windows Terminal (附安装教程,自定义超炫界面)

    尝鲜!基于Chromium的Edge Beta版来了

    杂谈

    【编程之美】用C语言实现状态机(实用)

    hello world 程序是如何被编译出来的?

    C语言main函数有哪些写法呢

    C/C++中条件编译#if、#elif、#ifdef等灵活妙用

    C++中virtual关键字的用法

    C++小游戏:扑克牌21点

    const 指针与指向const的指针

    队列及其实现

    浅谈图(存储结构、遍历)

    如果觉得文章不错,转发、在看,也是我们继续更新得动力。

    展开全文
  • 在MLIR故事线里面插播一条FPGA的文章,这源于FPGA课堂作业的一道题。What is FPGA? Explain the main differences between FPGA and CPU ...在本科阶段,我接触过三次FPGA,分别是数字逻辑课设、计算机组成原理课设...

    890a23d5bdfe41fbc99db36198564a8e.png
    在MLIR故事线里面插播一条FPGA的文章,这源于FPGA课堂作业的一道题。What is FPGA? Explain the main differences between FPGA and CPU in terms of operation principle? 那我就来说说,我眼中的FPGA,以及它和CPU之间的关系。

    在本科阶段,我接触过三次FPGA,分别是数字逻辑课设、计算机组成原理课设和硬件综合课设。正巧这三次使用FPGA的经历,可以回答课堂作业中的问题。

    数字逻辑课设 -- 什么是FPGA

    数字逻辑课设中分为一系列的子任务,实现译码器、分频器、七段数码管扫描电路等等。最后是一个综合性的实验,就是把子任务中实现的各种器件组合起来,使整个电路能够完成一个实际功能,我当时选择实现一个蓝牙密码箱,肝了好久,加上老师手把手帮忙,最后实现的那一刻真的激动了好久,这是当时成功时的照片:

    40763e0551b94857493d1b5cfc6fc442.png

    当时我把FPGA纯粹当作一个黑盒子看待,就是用verilog写代码,然后就看波形有没有错误,然后分配引脚,再把程序上传到试验箱上。一步一步都是按照实验手册进行,最后做完实验反过头来想,什么是FPGA呢,一查概念,FPGA是Filed Programmable Gate Array的缩写,即现场可编程门阵列,emmm,当时的我是理解不了,然后就开开心心地享受假期了。

    那么现在来看,数字逻辑课设就是使用了FPGA最基本的特点:硬件可编程。最终实现的数字逻辑课设功能,实际上就是一个电路,有输入信号,通过一系列的逻辑运算,最后产生输出。那么编写的verilog代码就是在用相对高级的语言,描述时序与组合逻辑电路的功能。但是此时FPGA理解不了verilog的代码呀,所以就需要进一步地编译,从而让FPGA知道应该怎么实现verilog描述的电路。首先就得进行综合(Synthesize),这一步就是把verilog代码翻译成由各种与、或、非门以及RAM和触发器组成的逻辑链接。此时生成的逻辑链接文件距离实际的芯片配置还有一定距离,这就需要布局布线步骤,将生成好的逻辑链接适配到FPGA内部的硬件结构上。这样一来,FPGA就可以实现我们设计的电路功能。

    FPGA与CPU

    在我看来,FPGA和CPU的运行方式的不同来源于逻辑电路结构是否可变。CPU是具有冯诺伊曼结构的固定的电路,这种结构擅长做指令调度,因此它可以运行软件,即软件可编程。而FPGA逻辑电路结构是可变的,是可以随时定义的,这就是硬件可编程的真意,它可以通过硬件描述语言,实现任何电路,当然也可以变成一个CPU。

    计算机组成原理课设 -- CPU软核

    计算机组成原理课设中最终要求实现一个MIPS架构单发射的5级流水的处理器。也就是说,在课设中,使用verilog实现了MIPS架构的处理器软核,然后再加上驱动试验箱的IP核,完成了整体的电路结构。最终处理器执行给定的MIPS汇编程序,在试验箱的数码管上实现循环计数的功能。

    fb2b2df725eff35cb9adce44cc95576c.png

    这种方式就是在硬件可编程的FPGA上实现了CPU软核,这样就使它拥有了冯诺伊曼结构,从而拥有了软件可编程的能力。它叫做软核就是因为,它需要经过仿真、综合以及布局布线过程之后才可以使用,这样做的优点在于可以根据自己所需要的功能来进行配置,比如说,我们可以在这个5级流水的CPU软核上面,再添加保留站和Reorder Buffer的结构,把它变成一个支持乱序执行的处理器,这就体现了软核的灵活的优点。

    硬件综合课设 -- CPU硬核

    硬件综合课设是给一块Xilinx的PYNQ板子,以及所需的传感器,实现一个特定功能。我们小组选择了DHT11的温湿度传感器、web camera以及显示器,实现了户外车牌识别设备。

    970d948a71d284f8b3b3720d611661b1.png

    d079a97714aa3a59b3a303d4eb92b6fc.png

    在这个课设中使用的PYNQ板子,分为PS(Processing System)和PL(Programmable Logic)两个部分,PS端实际上就是一个ARM架构的CPU硬核的存在,运行Linux和Python实现软件可编程,PL端是FPGA,实现硬件可编程,可以驱动传感器向PS端传递实时数据。这种硬核实际上是将ARM处理器植入FPGA芯片,形成新的SOC芯片,这种芯片可以配置各种操作系统,而同时也具备FPGA芯片的优势,可以自己定制逻辑,比如我们课设中的对于DHT11温湿度传感器的驱动,而且作为硬核,CPU的部分,不会挤占FPGA的逻辑资源。

    回顾本科阶段与FPGA的接触,我真的非常感激这些课设对我整个计算机知识体系理解的帮助,最后向教我数字逻辑的陈老师、计算机组成原理的朱老师、硬件课设的王老师表示感谢,在我当时卡壳的时候,老师们几乎都是手把手地帮我度过难关,非常幸运能够遇到这些好老师!

    展开全文
  • FPGA管脚的调整随着 FPGA 的不断开发,其功能越来越强大,也给其布线带来了很大的便捷性—管脚的调整。对于密集的板卡,走线时可以不再绕来绕去,而是根据走线的顺序进行信号的调整,然后通过软件编程来校正信号的...
  • 基于FPGA的多通道数据采集控制器设计与实现.pdf摘要:为增强通用计算机数据采集(DAQ)控制系统的实时性能,设计多通道数据采集控制器。基于现场可编程门阵列技术,采用数据采集有限状态机时序代替CPU串行指令完成通道...
  • 博主将去年秋招时候所...求职的过程中FPGA方向的岗位其实并没有数字前端的岗位多,而前端的工作FPGA工程师也是完全可以胜任的,在学校里条件有限只能玩玩FPGA,但对于笔面试题来说,FPGA和数字前端十分类似,所以...
  • 最近群里有很多人遇到上述的...很幸运,官网有很多人反馈类似的问题,先把问题解决方式放出来:https://www.xilinx.com/support/answers/66954.html(也可以阅读原文查看)出现这个问题的原因:以下行为是Vivado 2...
  • 低密度奇偶校验(Low Density Parity Check...作者通过深入分析CMMB中LDPC码校验矩阵的特点,采用了一种合适的硬件实现结构,因而在保证译码器较高性能较快译码速度的情况下,以较低的硬件资源实现了两种码率的复用。
  • 以Altera公司的FPGA为开发平台,以Verilog HDL语言为开发工具,详细阐述锁相环技术的FPGA实现原理结构、方法,以及仿真测试过程具体技术细节,主要包括设计平台及开发环境介绍、锁相环跟踪相位的原理FPGA实现...
  • 本书以Altera公司的FPGA器件为开发平台,采用MATLAB及Verilog HDL语言为开发工具,详细阐述数字通信同步技术的FPGA实现原理结构、方法仿真测试过程,并通过大量工程实例分析FPGA实现过程中的具体技术细节。...
  • FPGA开发全攻略(PDF

    2011-11-27 22:30:04
    2.1 FPGA结构和工作原理 7 2.1.1 梦想成就伟业 7 2.1.2 FPGA结构 8 2.1.3 软核、硬核以及固核的概念 15 2.1.4 从可编程器件发展看FPGA未来趋势 15 第三章、FPGA主要供应商与产品 17 3.1.1 赛灵思主要产品介绍 17 第...
  • 上海市集成电路高技能人才培养基地现场可编程门阵列...二、培训目标1、掌握FPGA结构和实现可编程开发的原理;2、掌握编写Verilog程序的方法,能设计常用数字电路模块,能使用仿真工具验证数字电路设计,能优化数字...
  • 本文简要介绍了FIR数字滤波器的结构特点基本原理,提出基于FPGA和DSP Builder的FIR数字滤波器的基本设计流程实现方案。
  • 多用户检测中匹配滤波器的FPGA实现,赵彦龙,李艳萍,首先简要介绍匹配滤波器在多用户检测中的作用,以及多用户检测匹配滤波器的基本结构和工作原理,在此基础上提出了一种基于FPGA(Fiel
  • 数字匹配滤波器的优化设计方案及在FPGA上的实现,刘贤福,,本文对数字匹配滤波器的原理和结构进行了简要的介绍,在扩频通信中,应用数字匹配滤波器实现m序列同步,并详细讨论了其基于FPGA(现��
  • 本书以altera公司的fpga器件为开发平台,采用matlab及verilog hdl语言为开发工具,详细阐述数字调制解调技术的fpga实现原理结构、方法仿真测试过程,并通过大量工程实例分析fpga实现过程中的具体技术细节。...
  • 下载地址:网盘下载数字调制解调技术的MATLAB与FPGA实现以Altera公司的FPGA器件为开发平台,采用MATLAB及Verilog HDL语言为开发工具,详细阐述数字调制解调技术的FPGA实现原理结构、方法仿真测试过程,并通过...
  • 基于FPGA的FIR数字滤波器的设计,陈健,,本文介绍了利用FPGA芯片来设计FIR数字滤波器的原理和方法。首先对两种类型的FIR滤波器的原理进行了阐释,并给出了结构图;然后具体��
  • 基于FPGA的千兆以太网接口设计与实现,袁源,别红霞,本文首先分析了数据帧的结构和以太网MAC层通信机制,并介绍了以太网设计原理,最终在FPGA上完成了千兆以太网接口的设计与实现。本��
  • 介绍了系统的硬件结构、主要设计模块FPGA上实现对中频线性调频信号进行脉冲压缩处理的方法.最后给出了MATLAB仿真和FPGA硬件实验测试结果,验证了文中给出的数字脉冲压缩器设计的工程可行性.
  • 软件无线电高速数字下变频FPGA的实现与研究,汪伟,刘岚,在软件无线电中,数字下变频起着重要作用。本文简要介绍了软件无线电的组成结构,详细分析了数字下变频的各个部分工作原理。描
  • 基于FPGA的实时SAR成像系统转置存储的实现,王量,皮亦鸣,介绍了如何利用FPGA控制SDRAM实现实时SAR成像系统的转置存储。首先介绍了SDRAM的结构和工作原理,接着分析了SDRAM的工作状态并重点研究��
  • 首先,介绍了直接数字式频率合成的结构和原理。其次,设计了雷达发射机的硬件电路软件编程,其中为提高雷达系统工作稳定性,保证DSP控制DDS产生稳定的波形信号,特别加入了对DSP工作状态进行监测控制的模块电路...
  • 系统将模块化结构设计、LVDS与乒乓存储等多项技术应用于设计过程中,保证了数据采集传输的实时性。详细介绍了图像采集、数据传输、时序控制数据解串等模块的工作原理及实现方法。实际应用证明,该系统实现了对...
  • 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件...
  • 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件...
  • 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件...
  • 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件...
  • 1.2 FPGA/CPLD的基本结构 1.2.1 FPGA的基本结构 1.2.2 CPLD的基本结构 1.2.3 FPGA和CPLD的比较 1.3 FPGA/CPLD的设计流程 1.4 FPGA/CPLD的常用开发工具 1.5 下一代可编程逻辑设计技术展望 1.5.1 下一代可编程逻辑器件...

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

fpga原理和结构pdf