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 …

分布式锁在AI大模型调用中的应用

1. 技术背景 AI大模型的调用往往是一个高资源消耗的操作,在实际应用中,为了防止恶意用户使用辅助工具频繁地调用这些大模型,占用大量服务器资源,影响其他用户的请求处理,降低系统的整体性能和服务质量,使用…

Android 记录锁屏的上层相关源码以及debug WindowManager

SettingsProvider frameworks/base/packages/SettingsProvider/res/values/defaults.xmldevice/rockchip/rk356x/overlay/frameworks/base/packages/SettingsProvider/res/values/defaults.xml //device的overlay会覆盖frameworks的SettingsProvider // 关于锁屏配置<inte…

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

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

对象存储:阿里云OSS、腾讯云COS与七牛云KODO的深度解析

随着云计算的普及&#xff0c;对象存储&#xff08;Object Storage Service&#xff09;作为数据存储领域的一项关键技术&#xff0c;因其可扩展性、高可用性和成本效益而受到广泛欢迎。本文将深入探讨阿里云的OSS、腾讯云的COS以及七牛云的KODO&#xff0c;分析这些服务的特点…

Linux实用操作三

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

基于WebGoat平台的SQL注入攻击

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

代码随想录第五十九天 | 115.不同的子序列,583. 两个字符串的删除操作, 72. 编辑距离

115.不同的子序列 看完想法&#xff1a;这个题目只涉及删减&#xff0c;具体是 s 字符串的删减&#xff0c;t 不需要动。当s[ i ] t[j]时&#xff0c;有两种情况&#xff0c;可以用s[i]也可以不用&#xff0c;而s[i] !t[j]时只有一种情况&#xff0c;需要删除s[i]进一步比较。…

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

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 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;进⾏删除操作的⼀端称为队头…

宝塔Wordpress 插件 Redis object cache 导致内存很高 80%以上的原因和解决

查看内存前X 使用以下命令查看前10&#xff0c;修改10数字即可查看前X ps aux | head -1;ps aux |grep -v PID |sort -rn -k 4 | head -10 查看cpu占用 查看前10 ps aux | head -1;ps aux |grep -v PID |sort -rn -k 3 | head -10 原因是 4GiB 内存的服务器&#xff0c;Redis会…

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;故而只有单输入单输出是不够的。 对于单个输入和单个输出通道的简化例子&…

【C++刷题】优选算法——链表

链表常用技巧和操作总结 常用技巧 画图 引入虚拟头节点 不要吝啬空间&#xff0c;大胆定义变量 快慢双指针常用操作 创建一个新节点 尾插 头插 两数相加 ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {int carry 0;ListNode* newHead new ListNode, *cur newHea…