0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一些FPGA常见IP核

jf_78858299 来源:大盛唐电子 作者:大盛唐电子 2023-01-21 12:06 次阅读

随着FPGA的集成度越来越高,规模越来越大,设计越来越复杂,IC行业的竞争也越来越激烈,产品的交付周期越来越短,这与人类有限的设计能力形成了巨大矛盾。如果FPGA设计还是全部由设计者从最底层的代码写起,那么必然不能在越来越苛刻的开发周期内完成相关项目。

而IP核的出现,解决了这个问题。IP核是一段具有特定电路功能的硬件描述语言程序,该程序通常与集成电路工艺无关,可以移植到不同的半导体工艺中去生产集成电路芯片。由于IP核将一些在数字电路中常用,但比较复杂的功能块设计成可修改参数的模块,因此FPGA的设计人员可以通过调用相关IP核来完成所需逻辑功能,从而节省了大量的开发时间。调用IP核能避免重复劳动,大大减轻设计人员的负担,因此使用IP核必然成为将来FPGA设计的一个发展趋势。

按IP核的硬件描述级实现程度,可将它分为三类:即软核、硬核、固核。

IP软核一般指的是用硬件描述语言描述的功能块,它并不涉及用什么具体电路元件实现这些功能,软核的代码直接参与设计的编译流程,就像我们自己编写的HDL代码一样,虽然一般会对软核的RTL代码进行加密,但是其保密性还是比较差。

IP硬核是以经过完全的布局布线的网表形式提供,由于不再参与设计的编译流程,因此它的性能具有很强的可预见性,并且保密性好,不过移植性差。

IP固核是软核与硬核的一个折中,它只对描述功能中一些比较关键的路径进行预先的布局布线,而其他部分仍然可以任由编译器进行相关优化处理。例如,当你使用IP核生成一个8x8的乘法器时,如果选择使用逻辑资源块来实现的话,那么此时的乘法器IP核就相当于一个软核;

如果你选择使用DSP资源来实现的话,那么此时的乘法器IP核就相当于一个硬核;如果你要用DSP资源生成一个36x36的乘法器时,那么FPGA恐怕需要若干DSP资源来实现,这时候,每个DSP核的布局布线是固定的,但是到底选择那几个DSP资源来实现是可以由编译器来决定的,因此此时的乘法器IP核就相当于一个固核。

PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。

一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。锁相环路是一种反馈控制电路,简称锁相环(PLL,Phase-Locked Loop)。

锁相环的特点是:利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。锁相环通常由鉴相器(PD,Phase Detector)、环路滤波器(LF,Loop Filter)和压控振荡器(VCO,Voltage Controlled Oscillator)三部分组成。

图片

FIFO: 是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据, 其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

FIFO的分类根均FIFO工作的时钟域,可以将FIFO分为同步FIFO和异步FIFO。同步FIFO是指读时钟和写时钟为同一个时钟。在时钟沿来临时同时发生读写操作。异步FIFO是指读写时钟不一致,读写时钟是互相独立的。

图片

FIFO的宽度: 也就是英文资料里常看到的THE WIDTH,它指的是FIFO一次读写操作的数据位,就像MCU有8位和16位,ARM32位等等,FIFO的宽度在单片成品IC中是固定的,也有可选择的,如果用FPGA自己实现一个FIFO,其数据位,也就是宽度是可以自己定义的。FIFO的深度:THE DEEPTH,它指的是FIFO可以存储多少个N位的数据(如果宽度为N)。如一个8位的FIFO,若深度为8,它可以存储8个8位的数据,深度为12 ,就可以存储12个8位的数据,FIFO的深度可大可小,个人认为FIFO深度的计算并无一个固定的公式。

在FIFO实际工作中,其数据的满/空标志可以控制数据的继续写入或读出。在一个具体的应用中不可能由一些参数精确算出所需的FIFO深度为多少,这在写速度大于读速度的理想状态下是可行的,但在实际中用到的FIFO深度往往要大于计算值。

一般来说根据电路的具体情况,在兼顾系统性能和FIFO成本的情况下估算一个大概的宽度和深度就可以了。而对于写速度慢于读速度的应用,FIFO的深度要根据读出的数据结构和读出数据由那些具体的要求来确定。

ADC/DAC: adc是analog-to-digital converter的缩写,指模拟/数字转换器。我们常用的模拟信号,如温度、压力、电流等,如果需要转换成更容易储存、处理的数字形式,用模/数转换器就可以实现这个功能。

adc将模拟输入信号转换成数字信号的电路或器件。模数转换器的实例有逐次逼近adc,电压-频率(v/f)转换器,双斜率adc和高速闪烁adc。模数转换器也称为数字化仪。a/d转换的作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,因此,a/d转换一般要经过取样、保持、量化及编码4个过程。

在实际电路中,这些过程有的是合并进行的,例如,取样和保持,量化和编码往往都是在转换过程中同时实现的。dac是digital-to-analog converter的缩写,指数字/模拟转换器。数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的位权。

为了将数字量转换成模拟量,必须将每1位的代码按其位权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字/模拟转换。dac主要由数字寄存器、模拟开关、位权网络、求和运算放大器和基准电压源(或恒流源)组成。用存于数字寄存器的数字量的各位数码,分别控制对应位的模拟电子开关,使数码为1 的位在位权网络上产生与其位权成正比的电流值,再由运算放大器对各电流值求和,并转换成电压值。

图片

图片


IP代表知识产权,从它的名字我们就能猜到IP核应该不是可以随便使用的。事实上,大部分IP核都是需要付费的,例如RS编码器、FIR滤波器、SDRAM控制器、PCI接口等。不过仍有很多免费的IP核资源,这其中最主要的就是每个FPGA厂商都会为自己的软件集成开发环境提供一些比较基本的免费的IP核来增加自家产品的行业竞争力。例如最最常用的FIFO模块、PLL模块等等。对于我们平常的设计来说,利用好这些免费的IP核就能达到事半功倍的效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21637

    浏览量

    601349
  • IC
    IC
    +关注

    关注

    36

    文章

    5881

    浏览量

    175103
收藏 人收藏

    评论

    相关推荐

    新手福音:概述学习FPGA一些常见误区

    很多刚开始学习FPGA的朋友们经常会遇上一些误区而无从解决,FPGA为什么是可以编程的?通过HDL语言怎么看都看不出硬件结构?...本文就这个方面进行解析。
    发表于 09-27 17:14 8227次阅读

    关于FPGA IP

    对于深入学习使用FPGA的小伙伴们,特别是一些复杂的、大规模的设计应用,适宜的IP核对开发能起到事半功倍的作用。IP的概念与我们sdk里库
    发表于 04-29 21:01

    FPGAIP使用技巧

    FPGAIP使用技巧主要包括以下几个方面: 理解IP的概念和特性 : IP
    发表于 05-27 16:13

    FPGA IP的相关问题

    我用的是xinlinx spartan6 FPGA,我想知道它的IPRAM是与FPGA独立的,只是集成在了起呢,还是占用了
    发表于 01-10 17:19

    mig生成的DDR的IP的问题

    请教各位大神,小弟刚学FPGA,现在在用spartan-3E的板子,想用上面的DDR SDRAM进行简单的读写,用MIG生成DDR之后出现了很多引脚,看了一些资料也不是很清楚,不知道怎么使用生成的这个
    发表于 06-20 20:43

    关于fpgaIP

    quartus ii9.0创建的ip,生成的一些文件,(.qip、 add_sub_bb.v、add_sub.v)这些文件都有用吗,想在其他工程里调用这些IP
    发表于 07-02 17:20

    如何在我的VHDL顶级模块中使用该IP一些示例?

    作为我项目的部分,我需要将ADC与7系列FPGA接口,我有个SelectIO™接口向导的IP。但是,我的整个项目都在VHDL中,IPi
    发表于 05-21 12:31

    基于IPFPGA设计方法是什么?

    的分类和特点是什么?基于IPFPGA设计方法是什么?
    发表于 05-08 07:07

    FPGAIP学习的正确打开方式

    的情况时,总会遇到一些以前未曾接触过的新内容,这些新内容会让我们感到陌生和恐惧,不知道该如何下手。 那么今天以xilinx vivado 为例分享学习FPGAIP的正确打开方式
    发表于 11-17 11:09

    FPGAIP的生成

    FPGAIP的生成,简单介绍Quartus II生成IP的基本操作,简单实用挺不错的资料
    发表于 11-30 17:36 11次下载

    基于FPGAIP设计技术

    FPGAIP设计技术的系列资料,大家可以收集看下,这些都是我看过过滤后留下的,感觉不错,希望对大家有帮助
    发表于 11-30 17:49 6次下载

    FPGA实现基于Vivado的BRAM IP的使用

      Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-29 15:59 1.1w次阅读

    VCS独立仿真Vivado IP一些方法总结

    前年,发表了篇文章《VCS独立仿真Vivado IP一些方法总结》(链接在参考资料1),里面简单讲述了使用VCS仿真Vivado IP
    的头像 发表于 03-22 10:31 4086次阅读

    GMII to RGMII IP一些参数

    大家好!今天给大家介绍下GMII to RGMII IP 一些参数的含义。其他IP参数请
    的头像 发表于 05-25 09:30 4075次阅读
    GMII to RGMII <b class='flag-5'>IP</b><b class='flag-5'>核</b>的<b class='flag-5'>一些</b>参数

    FPGA实现基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有着很多的有用且对整个工程很有益处的IP,比如数学类的IP,数字信号处理使用的
    的头像 发表于 12-05 15:05 1501次阅读