FPGA知识基础之--clocking wizard ip核的使用以及modelsim与vivado联合仿真


前言


IP核,全称知识产权核(Intellectual Property core),是在集成电路(IC)设计中可重用的功能模块,其存在形式通常为逻辑单元或芯片设计的可重用模块。这些模块经过预先设计、验证并具备特定的功能,可以被授权给不同的设计者使用,以加速芯片设计过程,提高设计效率,并降低开发成本。

一、ip核是什么?

1.1 定义

IP核是半导体产业中用于ASIC(专用集成电路)或FPGA(现场可编程门阵列)中的预先设计好的电路功能模块。它们可以被视为构建复杂芯片设计的“积木”。

1.2 分类

根据产品交付方式和实现方法的不同,IP核主要分为三类:软核(Soft IP)、固核(Firm IP)和硬核(Hard IP)。

  • 软核:以硬件描述语言(HDL)源文件的形式存在,如Verilog或VHDL。软核设计周期短,设计投入少,灵活性和适应性强,但后续工序可能需要一定程度的修正,且知识产权保护问题需要重视。
  • 固核:介于软核和硬核之间,完成了综合的功能块,以网表形式交付。固核对时序要求严格的内核进行了优化,如预布线特定信号或分配特定的布线资源。
  • 硬核:提供设计的最终阶段产品——掩膜(Mask),以经过完全布局布线的网表形式存在。硬核具有可预见性,针对特定工艺、功耗和尺寸进行了优化,易于实现IP保护,但灵活性和可移植性差。

二、为什么使用ip核

2.1 ip核的优点

  • 提高开发效率,IP核将一些在数字电路中常用但比较复杂的功能块(如FIR滤波器、SDRAM控制器、PCI接口等)设计成可修改参数的模块,设计者可以直接调用这些预先设计好的功能模块,从而避免了重复劳动,大大提高了开发效率。
  • 减少设计和调试时间:由于IP核已经过验证和优化,设计者在使用时可以直接集成到自己的设计中,无需从头开始设计和调试这些功能模块,从而显著减少了整体项目的设计和调试时间。
  • 加速开发进程:随着CPLD/FPGA等可编程逻辑器件的规模越来越大,设计越来越复杂,设计者的主要任务是在规定的时间周期内完成复杂的设计。IP核的重用使得设计者能够更快速地完成设计任务,加速了产品的上市进程。
  • 降低开发成本:虽然一些高价值的IP核可能需要额外的费用,但从整体开发成本来看,使用IP核仍然能够降低开发成本。因为IP核的重用减少了设计过程中的人力、物力和时间投入,降低了设计失败的风险,从而间接降低了开发成本。
  • 增强设计的灵活性和适应性:软核和固核形式的IP核允许设计者在一定范围内对参数进行修改和定制,以适应不同的设计需求。这种灵活性使得设计者能够更好地应对市场变化和客户需求的多样性。
  • 易于实现IP保护:硬核形式的IP核以经过完全的布局布线的网表形式提供,这种形式的IP核更易于实现知识产权的保护。因为硬核已经完成了所有的物理实现工作,设计者无法直接看到其内部的核心代码和电路结构,从而减少了知识产权被侵犯的风险。
    综上所述IP核在提高开发效率、减少设计和调试时间、加速开发进程、降低开发成本、增强设计的灵活性和适应性以及易于实现IP保护等方面具有显著的优点。这些优点使得IP核在当前的EDA技术开发中得到了广泛的应用和推广。

2.2 ip核的缺点

  • 可移植性差
  • 功能调整空间小
  • 部分需要付费使用

三、如何使用ip核(vivado)

在这里插入图片描述

在这里插入图片描述
以fifo举例
在这里插入图片描述

四、举例(clocking wizard ip核)

** ip核之PLL实验**

4.1 简介

在Xilinx FPGA中,特别是7系列FPGA,CMT(Clock Management Tile,时钟管理块)是一个关键组成部分,它对于实现高性能、低抖动的时钟网络至关重要。每个CMT都包含一个混合模式时钟管理器(MMCM)和一个锁相环(PLL)。这些模块共同提供时钟频率合成、抖动滤波以及时钟去斜等功能,以满足FPGA设计中复杂的时钟需求。
在这里插入图片描述

MMCM在PLL的基础上加入了DCM的一部分以进行精细的位移,加上了相位动态调整功能
PLL(phase locked loop锁相环)是一种时钟反馈控制电路,特点是利用外部输入的参考信号控制环路内部振荡信号的频率和相位

4.2 实验任务

本次的实验任务是使用开发板输出4路不同频率或相位的时钟,时钟分别为100MHZ,100MHZ(相位偏移180度),50MHZ和25MHZ。将四路时钟分别输出至拓展口的端口,并通过示波器来测量输出结果是否正确

4.3 程序设计

4.3.1 系统模块

在这里插入图片描述

4.3.2 波形绘制

在这里插入图片描述

4.3.3 ip核设置

先在ip核库里找到clocking wizard
在这里插入图片描述
进行ip核第一项配置
在这里插入图片描述

第二项配置

在这里插入图片描述

后续都保持默认即可

4.3.4 代码编写

RTL代码

需要注意的是,使用ip核即只需编写顶层模块即可。

module ip_clk_wiz (
input               sys_clk,
input               sys_rst_n, 

output              clk_100m,
output              clk_100m_180deg,
output              clk_50m,
output              clk_25m
);


wire        locked;
wire        rst_n;

assign   rst_n = sys_rst_n & locked;


   clk_wiz_0 u_clk_wiz_0
  (

      .clk_out1         (clk_100m),     
       .clk_out2        (clk_100m_180deg),     
      .clk_out3         (clk_50m),     
      .clk_out4         (clk_25m),     
      .reset            (~sys_rst_n), 
      .locked           (locked),       
      .clk_in1          (sys_clk)      
);
    
endmodule
仿真代码
`timescale	1ns/1ns 
module tb_ip_clk_wiz();

parameter CLK_PERIOD = 20;

reg 		sys_clk;  
reg 		sys_rst_n; 

wire 			clk_100m;
wire 			clk_100m_180deg;
wire 			clk_50m;
wire 			clk_25m;



initial begin
	sys_clk <= 1'b0;
	sys_rst_n <=1'b0;
	#200 
	sys_rst_n <= 1'b1;
end

always #(CLK_PERIOD/2) sys_clk = ~sys_clk;
	

 
 
ip_clk_wiz   u_ip_clk_wiz (
    .sys_clk     		(sys_clk),
	.sys_rst_n   		(sys_rst_n),
	.clk_100m_180deg	(clk_100m_180deg),
 	.clk_50m			(clk_50m),
 	.clk_25m			(clk_25m),
	.clk_100m			(clk_100m)



 );
 
 
 
 endmodule
 
 

4.4 仿真

4.4.1 vivado仿真

将设计文件和仿真文件导入vivado上后,即可直接开始仿真

在这里插入图片描述
需要注意的是,要将仿真时间设置的稍微长一些,笔者设置的是20us

在这里插入图片描述
点击开始仿真,即可观察到波形
在这里插入图片描述
观察波形后发现,和预设条件相符合

4.4.1 vivado和modelsim联合仿真(推荐)

首先生成vivado库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击编译即可,过程需要等待半个小时左右
编译好之后即可打开工程
在这里插入图片描述
在这里插入图片描述
设置好之后,点击仿真,会自动跳转到modelsim进行仿真
在这里插入图片描述

符合预期!验证成功

  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vivado中的Clocking Wizard IP核是一个用于生成时钟和时序控制电路的IP核。它可以帮助设计人员快速生成复杂的时钟和时序控制电路,从而简化设计流程并提高设计效率。该IP核支持多种时钟类型和时序控制方案,并且可以根据用户的需求进行定制化配置。在Vivado使用Clocking Wizard IP核可以大大简化时钟和时序控制电路的设计,提高设计效率和可靠性。 ### 回答2: vivado中的clocking wizard IP核是一种用于生成系统时钟的IP核。在现代数字系统设计中,时钟是一个非常重要的因素,因为它是整个系统同步的心脏。因此,生成正确的时钟信号是非常重要的,是系统成功运行的必要条件之一。 clocking wizard IP核可以帮助设计者方便地生成各种复杂的时钟方案。只需要在vivado工具中使用图形化界面,设置所需的时钟输出频率和时钟延迟等参数,就能够生成相应的时钟电路,包括时钟源、分频器、平移器、时钟缓冲器等。 该IP核的优点是可以为系统提供灵活的时钟配置,支持多个时钟域的设计和自定义延迟,可以帮助设计者兼顾芯片性能和功耗优化。同时,该IP核还提供了多种时钟输出格式,例如差分时钟、单端时钟等,可以适配不同的系统架构。 值得注意的是,在使用clocking wizard IP核时,需要对时钟的延迟和相位进行仔细的调整和验证。因为时钟误差会直接影响到系统的性能和可靠性,需要进行充分的仿真和检测,确保时钟信号满足系统的要求。 总之,clocking wizard IP核vivado设计工具中非常实用的一个IP核,它可以帮助设计者快速生成符合要求的时钟电路,以保证系统的稳定性和可靠性。同时,它也是数字系统设计中非常重要的一个组成部分,需要设计者对其进行深入的理解和掌握。 ### 回答3: Vivado中的Clocking Wizard是一种可定制化的IP核,旨在帮助用户生成符合其设计需求的时钟。时钟系统是数字设计中最重要的部分之一,它对电路的正确性和性能至关重要。Clocking Wizard可以生成复杂的时钟分配和时钟控制电路,以满足高性能半导体芯片的需求。 Clocking Wizard被设计成可定制化的IP核,并且拥有丰富的功能和选项,以满足各种不同的时钟管理需求。用户可以通过Clocking Wizard生成多路时钟,并可以控制时钟的延迟,相位和频率等特性。Clocking Wizard还可以包含PLL电路,从而提供更高的时钟分辨率和频率范围。此外,Clocking Wizard还支持多种不同的时钟协议和接口标准,如PCI Express,Gigabit Ethernet和DDR接口标准等。 Clocking Wizard使用方式相对简单,用户只需在Vivado中导入该IP核,然后根据自己的需求进行配置即可。用户可以通过GUI接口或者通过Tcl脚本来配置和管理Clocking Wizard。在配置完成后,用户可以将Clocking Wizard集成到他们的Vivado设计中,从而生成完整的时钟管理电路。 总之,Clocking Wizard是一种功能丰富且易于使用IP核,在数字设计中扮演着重要的角色。它提供了可定制化的时钟分配和时钟控制方案,并支持多种不同的时钟协议和接口标准。对于需要更高性能且复杂的时钟分配和时钟控制方案的设计,Clocking Wizard是一个值得考虑的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值