FPGA入门(7):IP核调用(一)

简介: FPGA入门(7):IP核调用(一)

第24讲:快速开发的法宝:IP核

IP核是什么?

IP(Intellectual Property)即知识产权。在半导体产业将IP核定义为“用于ASIC或FPGA中的预先设计好的电路功能模块”。简而言之,这里的IP即电路功能模块。

在数字电路中,将常用的且比较复杂的功能模块设计成参数可修改的模块,让其他用户可以直接调用这些模块,这就是IP核。

为什么要使用IP核?

随着FPGA的规模越来越大,它的设计也是越来越复杂。随着设计规模增大,复杂度提高,使用IP核可以提高开发效率,减少设计和调试时间,加速开发进程,降低开发成本,是业界的发展趋势。

IP核的存在形式

分类依据:产品交付方式

1、HDL语言形式–软核

硬件描述语言;可进行参数调整,复杂性强,布局布线灵活,设计周期短,设计投入少

2、网表形式–固核

完成了综合的功能块,可预布线特定信号或分配特定的布线资源

3、版图形式–硬核

硬核是完成提供设计的最终阶段产品:掩膜(Mask);缺乏灵活性,可移植性差,更易于实现IP核的保护

IP核的缺点

1、IP核往往不能跨平台使用

2、IP核不透明,看不到内部核心代码

3、定制IP需额外收费

Quartus II软件件下IP核的调用

1、Mega Wizard插件管理器

2、SOPC构造器

3、DSP构造器

4、Qsys设计系统例化

Altera IP核的分类



第25讲:PLL-IP核的调用

PLL IP核简介

PLL(Phase Locked Loop,即锁相环)是最常用的IP核之一,其性能强大,可以对输入到FPGA的时钟信号进行任意分频、倍频、相位调整、占空比调整,从而输出一个期望时钟。

PLL的基本工作原理


pll.v

`timescale  1ns/1ns
module  pll
(
    input   wire    sys_clk     ,   //系统时钟50Mhz
    output  wire    clk_mul_2   ,   //系统时钟经过2倍频后的时钟
    output  wire    clk_div_2   ,   //系统时钟经过2分频后的时钟
    output  wire    clk_phase_90,   //系统时钟经过相移90°后的时钟
    output  wire    clk_ducle_20,   //系统时钟变为占空比为20%的时钟
    output  wire    locked          //检测锁相环是否已经锁定,
                                    //只有该信号为高时输出的时钟才是稳定的
);
//------------------------ pll_inst ------------------------
pll_ip  pll_ip_inst
(
    .inclk0 (sys_clk        ),  //input     inclk0
    .c0     (clk_mul_2      ),  //output    c0
    .c1     (clk_div_2      ),  //output    c1
    .c2     (clk_phase_90   ),  //output    c2
    .c3     (clk_ducle_20   ),  //output    c3
    .locked (locked         )   //output    locked
);
endmodule

tb_pll.v

`timescale  1ns/1ns
module tb_pll();
//wire  define
wire    clk_mul_2   ;
wire    clk_div_2   ;
wire    clk_phase_90;
wire    clk_ducle_20;
wire    locked      ;
//reg   define
reg     sys_clk     ;
//初始化系统时钟
initial sys_clk = 1'b1;
//sys_clk:模拟系统时钟,每10ns电平翻转一次,周期为20ns,频率为50Mhz
always #10 sys_clk = ~sys_clk;
//------------------------pll_inst------------------------
pll pll_inst
(
    .sys_clk        (sys_clk        ),  //input     sys_clk
    .clk_mul_2      (clk_mul_2      ),  //output    clk_mul_2
    .clk_div_2      (clk_div_2      ),  //output    clk_div_2
    .clk_phase_90   (clk_phase_90   ),  //output    clk_phase_90
    .clk_ducle_20   (clk_ducle_20   ),  //output    clk_ducle_20
    .locked         (locked         )   //output    locked
);
endmodule



第26讲:ROM-IP核的调用

ROM IP核简介

ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特点是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。


系统框图

波形图

FPGA入门(7):IP核调用(二)+https://developer.aliyun.com/article/1556571

目录
相关文章
|
4月前
|
异构计算
FPGA入门(6):数码管静态/动态显示(二)
FPGA入门(6):数码管静态/动态显示(二)
61 10
|
4月前
|
缓存 异构计算
FPGA入门(7):IP核调用(二)
FPGA入门(7):IP核调用(二)
47 0
|
4月前
|
异构计算
FPGA入门(6):数码管静态/动态显示(一)
FPGA入门(6):数码管静态/动态显示
46 0
|
4月前
|
异构计算
FPGA入门(5):控制LED灯
FPGA入门(5):控制LED灯
50 0
|
4月前
|
异构计算
FPGA入门(4):时序逻辑(二)
FPGA入门(4):时序逻辑(二)
37 0
|
4月前
|
存储 异构计算
FPGA入门(4):时序逻辑(一)
FPGA入门(4):时序逻辑
45 0
|
4月前
|
存储 异构计算
FPGA入门(3):组合逻辑
FPGA入门(3):组合逻辑
47 0
|
4月前
|
算法 异构计算
FPGA入门(2):Verilog HDL基础语法
FPGA入门(2):Verilog HDL基础语法
33 0
|
6月前
|
芯片 异构计算
【FPGA】高云FPGA之IP核的使用->PLL锁相环(二)
【FPGA】高云FPGA之IP核的使用->PLL锁相环
111 1
|
6月前
|
算法 异构计算 Python
m基于FPGA的217卷积编码维特比译码verilog实现,包含testbench不使用IP核
该内容展示了使用Vivado 2019.2进行卷积编码和维特比译码的模拟。提供了编码、译码输出和RTL图的图片,以及Verilog实现的核心代码。卷积编码是一种前向纠错技术,基于生成多项式产生冗余数据;维特比译码利用动态规划恢复原始信息,最小化错误。Verilog程序包含了编码和译码模块,以及输入输出信号的时序操作。
100 0

热门文章

最新文章