FPGA-PLL IP核的使用

1.前言

IP核是使用FPGA进行快速开发的一大法宝,FPGA有几个常用的IP核,如今天要写的PLL,即锁相环,还有FIFO,ROM等。熟练使用这些IP核,在一一些大型的项目中会省很多的精力,今天就通过一个实例来理解一下锁相环IP核。
首先还是继续了解一下IP核:

1.1 IP核相关知识

  • 定义
    IP核在数字电路中常用于比较复杂的功能模块,参数可修改,让其他用户可以直接调用这些模块。
  • IP核的三种形式:
    (1)HDL语言形式-软核:不涉及电路和电路元件实现,FPGA的IP内核大多数为软核,有助于调节参数并增强可复用性。
    (2)网表形式-固核:软核和硬核的折中,完成了的综合的功能块,有较大的设计深度,以网表的形式交给客户使用。
    (3)版图形式-硬核:完成设计的最终阶段产品-掩膜,经过完全的布局布线的网表,如一些FPGA芯片的ARM核。
    当然,IP核也有一定的缺陷:
  • IP应用缺点:
    (1)跨平台时,IP不通用,需重新设计。
    (2)IP核看不到其核心代码
    (3)定制的IP不通用。

1.2 PPL IP核相关知识

  • 锁相环定义
    对输入FPGA的时钟进行任意分频,倍频,相位调整,占空比调整。主要是利用输入的参考信号控制环路内部振荡信号的频率和相位。锁相环在工作过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,类似与输出电压与输入电压的相位被锁住,称之为锁相环。
  • 锁相环结构
    锁相环的内部结构其实是一个闭环反馈系统,如下图所示
    在这里插入图片描述
    在这里插入图片描述
    最终的效果就是pll_out输出参考频率相等的频率
  • 倍频
    在压控振荡器后加一个一级分频器,使进入分频器之前的信号频率为需要比较的时钟频率的倍数,VCO后输出的就是倍频的结果。
  • 分频
    在参考时钟后加一个一级分频器,需要比较的时钟频率就时钟和参考时钟分频后的频率相等。

2.实例

下面通过一个简单的实例从头到尾的了解一下FPGA PLL IP核开发的流程以及详细步骤。

  • PLL IP核设计目标:
    通过Quartus II配置PLL IP核,系统输入时钟频率为50Mhz,最后输出二倍频,五分频,相移90度,占空比变为20%的四种不同的时钟频率

2.1 前期准备

  • (1)分别建立三个不同的文件夹用来存放工程文件,RTL代码文件,仿真测试代码文件。
    在这里插入图片描述
  • (2)在prj文件中新建ipcore文件夹,用来存放IP核.

2.2 新建pll.v工程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 IP核配置操作流程

  • (1)打开IP核配置界面进行相应操作
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • (2)设置系统输入时钟频率为50Mhz
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • (3)设置二倍频
    在这里插入图片描述- (4)设置五分频在这里插入图片描述
  • (5)相移90度
    在这里插入图片描述
  • (6)设置占空比20%
    在这里插入图片描述
  • (7)后续设置
    在这里插入图片描述
    在这里插入图片描述
    设置完成后,需要将生成的qip文件添加到工程的文件目录下:
    在这里插入图片描述
    在这里插入图片描述

2.4 编写RTL代码

笔者使用的是Notepad++编写RTL代码:
在这里插入图片描述
编写完成后再Quartus II中打开:
在这里插入图片描述
进行分析与综合:无致命问题!
在这里插入图片描述
查看RTL视图:
在这里插入图片描述
在这里插入图片描述

2.5 仿真代码编写

在这里插入图片描述
编写完成后存放在之前建好的仿真测试代码文件夹中。

2.6 仿真设置

步骤:Assignments-Settings-EDA Tool Settings-Simulation
在这里插入图片描述
设置NativeLink:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.7 Modelsim仿真

在这里插入图片描述
在这里插入图片描述
可以看到仿真得到的结果输出的四个时钟频率正好就是之前预先设计的四种时钟频率!

3 小结

做好的学习方式就是别管太多,先做一堆shi一样的东西出来,再去不断迭代,优化,迭代。直至完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

55 、mysql的存储引擎、备份恢复以及日志备份、恢复

一、数据库的存储引擎: 1.1、存储引擎的概念 概念:存储引擎,就是一种数据库存储数据的机制,索引的机制,索引的技巧,锁定水平。 存储的方式和存储的格式。 存储引擎也属于mysql当中的组件,实…

Linux挂载磁盘目录

一、背景 由于安装oracle数据库,磁盘空间不足,已经加了存储,但是没有挂载,需要将/dev/sdb全部挂载到/oracle目录下 [rootdatabase-001 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 50G 0 disk …

HTTPServer改进思路2(mudou库核心思想融入)

mudou网络库思想理解 Reactor与多线程 服务器构建过程中,不仅仅使用一个Reactor,而是使用多个Reactor,每个Reactor执行自己专属的任务,从而提高响应效率。 首先Reactor是一种事件驱动处理模式,其主要通过IO多路复用…

Linux实用操作三

文章目录 Linux实用操作三网络传输ping命令介绍:示例: wget命令介绍:示例: curl命令介绍:示例: 端口介绍:端口的划分:查看端口占用: 进程管理进程介绍:查看进…

基于WebGoat平台的SQL注入攻击

目录 引言 一、安装好JAVA 二、下载并运行WebGoat 三、注册并登录WebGoat 四、模拟攻击 1. 第九题 2. 第十题 3. 第十一题 4. 第十二题 5. 第十三题 五、思考体会 1. 举例说明SQL 注入攻击发生的原因。 2. 从信息的CIA 三要素(机密性、完整性、可用性&…

【MySQL-17】存储过程-[变量篇]详解-(系统变量&用户定义变量&局部变量)

前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的《Lin…

SpringBoot常用功能实现

1. 配置文件多环境配置 1.1 创建不同环境配置文件 文件名前缀和后缀为标准固定格式&#xff0c;不可以改变。 1.2 pom中加入文件配置 可以使用<activation>标签设置默认环境。 <profiles><profile><id>dev</id><activation><active…

内置华为视频终端API接口的中央控制系统

内置华为视频终端API接口的中控系统是一种高度集成化的智能控制系统&#xff0c;它通过将华为视频终端的控制功能集成到中控系统中&#xff0c;实现了对华为视频终端的远程控制和集中管理。以下是对该系统的详细介绍&#xff1a; 一、系统概述 该系统通过调用华为视频终端提供…

数据结构(队列及其实现)

概念与结构 概念&#xff1a;只允许在⼀端进⾏插⼊数据操作&#xff0c;在另⼀端进⾏删除数据操作的特殊线性表&#xff0c; 队列具有先进先出FIFO(First In First Out)原则。 ⼊队列&#xff1a;进⾏插⼊操作的⼀端称为队尾 出队列&#xff1a;进⾏删除操作的⼀端称为队头…

Python | Leetcode Python题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution:def missingNumber(self, nums: List[int]) -> int:n len(nums)total n * (n 1) // 2arrSum sum(nums)return total - arrSum

texify - 识别数学/图像 PDF

文章目录 一、关于 texify例子训练 二、安装手动安装 三、使用1、使用技巧2、用于交互转换的应用程序3、转换图像4、Python 中导入并运行 四、限制五、基准测试运行自己的基准测试 六、其它商业用途感谢 一、关于 texify Texify是一种OCR模型&#xff0c;它将包含数学的图像或…

spring-retry详解

spring-retry详解 1.引入依赖2.Retryable基础使用3.Recover使用4.Retryable参数详解5.需要注意 重试机制对于大部分场景来说都是必要的&#xff0c;比如同步调用三方接口&#xff0c;三方接口、信息拉取等网络原因突然不通&#xff0c;有了重试就可以多一些容错机制&#xff0c…

HackTheBox--Knife

Knife 测试过程 1 信息收集 端口扫描 80端口测试 echo "10.129.63.56 knife.htb" | sudo tee -a /etc/hosts网站是纯静态的&#xff0c;无任何交互功能&#xff0c;检查网页源代码也未发现任何可利用的文件。 检查页面请求时&#xff0c;请求与响应内容&#xff0…

笔记小结:卷积神经网络之多输入多输出通道

本文为李沐老师《动手学深度学习》笔记小结&#xff0c;用于个人复习并记录学习历程&#xff0c;适用于初学者 彩色图像具有标准的RGB通道来代表红、绿和蓝&#xff0c;需要三个通道表示&#xff0c;故而只有单输入单输出是不够的。 对于单个输入和单个输出通道的简化例子&…

vscode配置latex环境制作【文档、简历、resume】

vscode配置latex环境制作【文档、简历、resume】 1. 安装Tex Live及vscode插件 可以参考&#xff1a;vscode配置latex环境制作beamer ppt 2. 添加vscode配置文件 打开vscode&#xff0c;按下Ctrl Shift P打开搜索框&#xff0c;搜索Preference: Open User Settings (JSON…

深入理解Linux网络(四):TCP接收阻塞

TCP socket 接收函数 recv 发出 recvfrom 系统调用。 进⼊系统调⽤后&#xff0c;⽤户进程就进⼊到了内核态&#xff0c;通过执⾏⼀系列的内核协议层函数&#xff0c;然后到 socket 对象的接收队列中查看是否有数据&#xff0c;没有的话就把⾃⼰添加到 socket 对应的等待队列⾥…

Conda和Pip有什么区别?

conda和pip是Python中两种常用的包管理工具&#xff0c;它们在用途、包来源以及环境管理等方面存在区别。以下是具体分析&#xff1a; 用途 conda&#xff1a;conda是Anaconda发行版中的包管理工具&#xff0c;可以管理包括非Python软件包在内的各种包。它是一个全面的环境管理…

为什么企业一定要多参加展会,参展有何好处?

在当今的商业环境中&#xff0c;展会已成为企业不可或缺的市场推广和交流平台。无论企业规模大小&#xff0c;参展都是一个极其有益的选择。以下&#xff0c;我们将深入探讨企业为何要多参加展会&#xff0c;以及参展所能带来的种种好处。 一、增强品牌影响力与知名度 展会是聚…

大数据量接口响应慢-传输优化

问题 接口一次性返回大量数据&#xff0c;导致JSON数据大小过大&#xff0c;带宽大小不足&#xff0c;导致接口响应时间过长 解决方案 通过数据传输压缩来降低传输数据的大小&#xff0c;从而提高传输效率 服务器端压缩 springboot项目配置application文件&#xff0c;通过…

视频翻译保留原音色pyvideotrans+clone-voice

剪映的视频翻译时长限制5分钟以内&#xff0c;需要积分2700首次有减免大概21.6元&#xff08;1秒9积分/1元100积分&#xff09; • 视频翻译配音工具pyvideotrans 将视频从一种语言翻译为另一种语言&#xff0c;并添加配音 打包链接&#xff1a;夸克网盘分享 升级补丁&#…