FPGA知识积累【3】

1.查找表(LUT)原理与结构

①查找表简称LUT,本质上就是一个RAM。目前FPGA中多数使用的是4输入的LUT,所以可以看成一个有4位地址线的RAM。

②当描述了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

2.FPGA基本结构

目前主流 FPGA 都采用了基于 SRAM 工艺的查找表结构,其组成部分主要有:

①可编程输入/输出单元(IOB)

简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。FPGA 内的 I/O 按组分类(即每个bank),每组都能够独立 地支持不同的I/O 标准。通过软件的灵活配置,可适配不同的电气标准与 I/O 物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。

②基本可编程逻辑单元(CLB)

FPGA 的基本可编程逻辑单元是由查找表和寄存器组成的,查找表完成纯组合逻辑功能。FPGA 内部寄存器可配置成触发器或锁存器。Altera 基本可编程单元 LE 配置为 1 寄存器加一个查找表。

③嵌入式块 RAM

目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。

④丰富的布线资源

布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以常常忽略布线资源。

⑤底层嵌入功能单元

底层嵌入功能单元是指通用程度较高的嵌入式功能模块。如锁相环(Phase Locked Loop,PLL)、DLL(Delay Locked Loop)、DSP(Digital Signal Processing)和CPU等。

⑥内嵌专用硬核

与“底层嵌入单元”是有区别的,这里指的硬核主要是那些通用性相对较弱的功能模块,不是所有FPGA器件都包含硬核。

补充:

IP软核通常是经过RTL级设计优化和功能验证的硬件语言代码,但其中不含有任何具体的物理信息。可以综合出正确的门电路级设计网表,并可以进行后续的结构设计,具有很大的灵活性,软IP内核也称为虚拟组件。

IP固核的设计程度则是介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。

IP硬核是基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已经过工艺验证,具有可保证的性能。其提供的是电路物理结构掩模版图和全套工艺文件,是可以拿来直接用的全套技术。

3.FPGA的RAM、ROM、CAM

①RAM:分为SRAM和DRAM,具体看存储器的6.2小节

②ROM:只读存储器,具体看存储器的6.3小节

③CAM:内容地址存储器;CAM在其内部的每个存储单元中都有一个比较逻辑,写入CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。

FPGA 中可以综合实现为 RAM、ROM、CAM 的三种资源分别是块RAM(Block RAM)、触发器(FF)、查找表(LUT),当然值得注意的是,在生成 RAM 等存储单元时,应该首选 block ram 资源;第一,使用 Block RAM 等资源可以节约更多的 FF 和 LUT 等底层可编程单元,是最大程度发挥器件效能,节约成本的一种体现;第二,Block RAM 是一种可以配置的硬件结构,其可靠性和速度与用 LUT 和 寄存器构建的存储器更有优势。

4.硬件语言的层次

系统级
算法级
行为级(RTL)
门级
开关级

5.寄生效应

寄生效应就是在PCB电路中大肆破坏、原因不明的小故障——渗入高速电路中的寄生电容和寄生电感。在直流或者低频的情况下,寄生效应是不怎么体现的。在交流或者高频条件下,这种寄生效应也是很难克服的,只能通过优化线路,尽量使用管脚较短的贴片原器件来减少影响,做不到完全消除。

6.线与逻辑

线与逻辑:两个信号相与。线与要用到OC门或者OD门来实现。想不到这么简单的逻辑需要复杂的门电路吧!

①在CMOS门电路中,实现线与功能的是漏极开路输出门电路,也就是OD门。OD门在使用时,必须将输出经上拉电阻到电源,不能独立存在,只是用来改善电路的。
在这里插入图片描述
②在TTL门电路中,实现线与功能的是集电极开路输出门电路,也就是OC门。工作时同样要外接上拉电阻。
具体可以看此链接的第8小节
在这里插入图片描述

7.竞争冒险

竞争: 两个输入信号同时向相反逻辑电平跳变。通俗的说,就是两个输入,一个从1变0,同时另一个从0变1。

竞争-冒险:由于竞争在电路输出端可能产生尖峰脉冲的现象。

注意:有竞争不一定产生尖峰脉冲,只有在存在不同步的跳变时,某输入先跳变而另一输入还未跳变时产生尖峰脉冲。(输入信号进入电路时有先后,不同步)
在这里插入图片描述

判断准则:只要输出端的逻辑函数在一定条件下能简化成Y=A+A’或Y=A·A’则可判定存在竞争-冒险现象。

8.消除竞争冒险的方法

①滤波电容:因为尖峰脉冲很窄,用很小的电容就能削弱尖峰到Vth一下,但由于电容会增加电压波形的上升时间和下降时间,会破坏原有波形。

②引入选通脉冲:利用选通脉冲,在电路达到稳定后,P的高电平期间的输出信号不会出现尖峰。(就是再加一个区别信号来防止尖峰出现)

在这里插入图片描述

③修改逻辑设计:防止Y=A+A’或Y=A·A’的出现(并不是万能的,办法有限,但效果很好)

参考:
【1】 FPGA笔试面试(五)
【2】https://www.cnblogs.com/lifan3a/articles/4229952.html

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LabVIEW FPGA是一款面向FPGA(Field-Programmable Gate Array)的编程软件,其主要用途是帮助用户快速搭建FPGA系统,并开发出硬件实现的算法和应用程序。针对LabVIEW FPGA开发教程也非常重要,在这里向大家分享具体的教程步骤。 1. FPGA基本知识学习:首先,理解FPGA的硬件结构和编程原理,掌握如何使用HDL进行编程和开发。 2. LabVIEW基础学习:掌握LabVIEW软件的基础操作,包括数据类型、结构化编程、事件处理等。 3. FPGA编程环境配置:准备好支持FPGA编程的硬件设备和软件开发环境,在LabVIEW菜单栏的“Tools”中打开FPGA图像和相关配置选项。 4. FPGA项目构建:在LabVIEW FPGA中创建一个新项目,并添加所需要的逻辑电路和硬件模块,进行系统设计和布线。 5. FPGA VI编程:编写FPGA VI程序,设置VI特定的输入输出和时序参数,以及硬件连接的实时模拟。 6. FPGA VI模块测试:对VI代码进行验证和测试,确保输出结果符合预期,同时可进行多个VI的协同测试。 7. FPGA部署:生成FPGA配置文件,利用配置工具将编程后的VI部署到FPGA板上,上电运行调试硬件环境。 总体来讲,LabVIEW FPGA开发教程可以分为基础知识学习、编程环境配置、项目构建、VI编程、VI测试和部署等几个步骤,需要逐一完成实现高效准确地FPGA开发,最终得到优质的硬件系统。 ### 回答2: LabVIEW FPGA是一个强大的开发工具,可以帮助开发人员快速构建和优化基于FPGA的应用程序。在学习LabVIEW FPGA之前,需要具备一定的FPGA硬件知识和编程经验。 首先,学习LabVIEW FPGA之前,需要下载安装LabVIEW FPGA模块。安装完成后,可以根据官方提供的教程和文档开始学习。 LabVIEW FPGA开发教程主要包括以下几个方面: 1. FPGA架构和硬件设计基础知识:了解FPGA的结构、工作原理,学习FPGA Vivado设计环境的使用以及FPGA编程语言(如Verilog、VHDL等)的应用。 2. LabVIEW FPGA编程基础知识:学习LabVIEW FPGA的编程模型和编程方法,包括数据流编程模型、图形化编程方式和FPGA VI的应用等。 3. FPGA的输入输出控制:学习如何通过LabVIEW FPGA编写代码控制FPGA板卡的输入输出,如ADC、DAC等。 4. FPGA的高级编程技术:学习如何应用FPGA的高级编程技术,如FPGA的时钟管理、FPGA的数据流抽象等。 除了以上基础教程外,还可以通过实例项目来巩固和拓展实际应用技能。例如,通过学习如何使用LabVIEW FPGA实现PWM控制,或通过学习如何使用FPGA实现数字滤波器等。 总体而言,学习和掌握LabVIEW FPGA开发技术需要不断地实践和尝试,以积累经验,并不断拓展自己的技能和知识储备。 ### 回答3: LabVIEW FPGA是National Instruments公司开发的一种基于FPGA硬件平台的系统设计软件,具有高性能、可编程性、可靠性高等特点,被广泛应用于航空航天、通信、工业自动化、机器人和医疗等领域。因此,学习和掌握LabVIEW FPGA开发技能对工程师来说至关重要。 想要学习LabVIEW FPGA开发,首先需要了解FPGA的基本概念,包括FPGA的结构、原理和使用方法。了解完基础知识后,可以选择一些开发板进行实践学习,能够实现一些基本的电子电路和信号处理等功能。 而针对LabVIEW FPGA开发教程,可以从以下方面入手: 1.学习基础语法。LabVIEW FPGA的语法与传统的编程语言略有不同,需要学习其数据流图、函数模块、决策结构和迭代结构等基本语法格式,掌握基础编程能力。 2.实践项目案例。通过实际项目案例学习,可以更好地掌握LabVIEW FPGA的应用技巧,提升实际开发经验。 3.参加培训课程。在NI公司或其授权培训机构举办的培训课程中可以系统地学习LabVIEW FPGA开发,将更全面的知识体系融入到实际开发中。 4.借助网络资源。可以通过在线论坛、博客、视频教程等网络资源,更好地掌握其它工程师分享的经验和技巧。 总之,学习LabVIEW FPGA开发需要认真对待,需要不断学习探索、不断实践练习,才能在实际工作中达到更优秀的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值