紫光同创——PLL IP 的使用(Logos2)

本文档主要针对 Logos2 系列的 PLL 配置,至于 Logos 系列的 PLL,可以参考《PLLIP 的使用(Logos)》的文档。

一、PLL IP 介绍


1、PLL 基本配置模式 Basic Configurations
PLL IP 是紫光同创基于 PLL 及时钟网络资源设计的 IP,通过不同的参数配置,可实现时钟信号的调频、调相、同步、频率综合等功能。

Logos2 系列器件的 PLL 支持 APB 动态重配功能,实现 HDMI 像素时钟频率的调整可通过 APB 接口动态配置 PLL 输出时钟频率(时钟相位和占空比不做调整)。而 Logos 器件是没有这个功能的,除了没有动态配置,基本的使用是一致的,大家注意查看 IP 相关手册。

PLL 的使用可选择 Basic 和 Advanced 两种模式,两种模式均支持 APB 接口动态配置实现时钟频率的动态调整,Advanced 模式下 PLL 的内部参数配置完全开放。Basic 和 Advanced两种模式下均可选择使用 GPLL 或 PPLL,GPLL 支持分数分频可实现更精确的输出频率,GPLL与 PPLL 详细描述请参考《UG040004_Logos2 系列 FPGA 时钟资源(Clock)用户指南_V1.2.pdf》。

下图为常用的 IP 框图以及其基本配置,Basic 配置模式下,用户无需关心 PLL 的内部参数配置,只需输入期望的频 率值、相位值、占空比等,IPC 将自动计算,得到最佳的配置参数。如果没有特殊应用,建议使用 Basic 模式配置 PLL。

(图1) 

(图2) 

(图3) 

图 1、图 2、图 3 所示的配置是最基本的使用方法,Mose Select 模式选择 GPLL,FeedbackClock Mode 反馈时钟选择内部反馈,反馈选择 CLKOUF。具体原理可以参考图 3: 

(图4) 

即基本结构是配置一路时钟输入,clkoutf 作为 PLL 内部反馈,并输出一路时钟 clkout0。

(图5)

还有一点,当我们勾选 Show Internal Settings of PLL 时,可以看到具体的配置参数。如图 5 所示,这些参数可以为我们后续进行动态配置,亦或是 Advanced 配置都可以提供参考。

2、PLL Advanced Configuration

 (图6)

Advanced 模式下,PLL 的内部参数配置完全开放,用户需要根据应用需求自行计算相应配置参数,才能正确配置。

(图7) 

如图 6 红框所示,需要自己填写输入分频系数、输出分频系数、占空比、相位、反馈分频系数等,若无特别需求,建议使用 Basic 模式。

二、PLL 的动态配置


勾选如图 x 的地方,可以看到 IP 多出了 APB 接口

(图8) 

1、APB 接口时序
PLL 的动态配置是通过 APB 接口来进行控制的,表 1 是其 APB 接口的描述。 

(图 9 APB 写时序)
 

其实,APB接口的读写时序是非常简单的,每次传输均需要两个时钟周期,我们可以将其分为三个状态,在IDLE状态,也就是空闲状态对应图中T1之前时刻,APB_EN和APB_SEL均为0。当我们需要传输数据时,会进入SETUP阶段,也就是准备状态,对应图中T1-T2这一段时间,在这个状态下会给出地址APB_ADDR,并设置APB_WRITE方向,如果是写,则APB_WRITE为高电平,同时拉高APB_SEL,即选择信号。此时会在SETUP状态下等待一个时钟周期后跳转到第三个状态,第三个状态为ENABLE阶段,也就是传输数据阶段,对应图中T2~T3这段时间,这个阶段地址、数据和APB_SEL均保持不变,然后拉高APB_EN,此时开始数据传输,当APB_READY拉高,表示传输完成。如果接下来不传输数据,则在下一个时钟周期跳转回去IDLE状态,如果传输数据则跳转到SETUP状态。


所以可以得出结论,每次发起传输都需要经过SETUP和ENABLE两个状态。即消耗两个时钟周期。

(图10 APB读时序)

读时序和写时序其实长得非常像,差别不大。一样还是分为三个状态,IDLE、SETUP、ENABLE三个。对比写时序,读时序仅是在SETUP阶段和ENABLE阶段把APB_WRITE改成低电平,表示读取数据。需要注意得是,在ENABLE阶段,数据读出,但是由于时序逻辑,别的模块要在T3时刻的上升沿才能采样到输出得D0。

2、APB寄存器列表

通过APB接口修改相关寄存器数值重新配置输出时钟频率,详细寄存器地址及其定义,如表2所示:

3、动态时钟计算公式

(1) 输出频率的计算

PLL 输出时钟频率由输入时钟频率、配置模式及相关配置参数决定,计算公式如下:

 

FCLKOUTx 为输出时钟频率;
FIN 为输入时钟频率;
MDIV 为反馈分频参数;
FBDIV 的值等于 PLL 反馈时钟的输出分频参数,clkoutf 作为反馈时钟时:FBDIV = ODIVf;
IDIV 为输入分频器分频参数;
ODIVx 的值等于输出时钟的输出分频参数,基于 IP 的配置使能 clkout0,所以 x=0 ,ODIVx = ODIV0;
根据像素时钟频率确定时钟配置参数,每次切换分辨率时 PLL 动态配置通过 APB 接口修改相关参数的寄存器数值实现输出频率调整。

分频参数:
根据 PLL 输出频率计算公式,相关分频参数如下,需根据实际输出频率确定分频参数数值
REG_ODIV0_RATIO<7:0>
REG_FDIV_RATIO<7:0>
REG_IDIV_RATIO<7:0>
REG_MDIV_RATIO<7:0>
具体的参数,在 IP 配置可以看到,如下所示

(图11) 

点击 Show Internal Setting of PLL 去查看具体的配置,IP 这里有时会显示小数,而我们知道,FPGA 不能直接写小数,所以要将其定点化,可以简单扩大一个倍数,去除小数位。

(2) 占空比和相位的计算

GPLL 寄存器设置:
占空比计算公式为 duty cycle = (50%/odiv)*duty,若保持占空比为 50%不变,需设置分频参数与占空比参数相同。
其中 odiv 为输出分频系数与 xxx_RATIO 寄存器的值有关,duty 和 xxx_DUTY 寄存器的值有关,请参考表 2 给出的寄存器值。
以下为参考:
REG_ODIV0_DUTY=REG_ODIV0_RATIO
REG_FDIV_DUTY=REG_FDIV_RATIO
输出时钟相位不做调整,正常情况改变寄存器的值即可,具体配置可以查阅手册:
REG_ODIV0_FPHASE=0
REG_ODIV0_CPHASE=0
REG_FDIV_FPHASE=0
REG_FDIV_CPHASE=0

三、动态配置验证

本次不进行仿真,直接通过上板验证,输出不同分辨率的彩条进行验证,大家可以自备一个屏幕。

本实验主要了解 APB 接口,故只介绍相关代码,由于 apb_cfg_test 模块一共 500 多行,故挑重点部分进行讲解,HDMI 显示等代码将在应用篇介绍,代码如下:

该代码主要完成不同分辨率的分频和占空比系数的配置,key_cnt 默认为 0,每按下按键 1该值加1,例如在key_cnt=0时,通过配置不同的分频系数以及占空比系数将输出的时钟配置为148.5MHZ,占空比 50%,相位默认不调节,以此输出 1080P 所需要的像素时钟;接下来的每个状态都是如此。

该 always 块主要完成状态的跳转,一共有 14 个状态,在 CFG_IDIE 状态下,检测到 cfg_en 的上升沿到达,即 cfg_en_pos 信号,则状态跳转到 ODIV0_CFG1 下,然后开始完成相应寄存器的配置.然后检测到 apb_rdy 信号,就是我们所说的 apb_ready 信号,则表示配置完成,所以检测到该信号拉高就跳转到下一个状态,直到跳转到 CFG_DONE 状态。 

这部分代码主要完成对 ODIV、FDIV、MDIV、IDIV 的寄存器进行配置,一共有 14 个状态, 除了 CFG_IDLE(初始状态)和 CFG_DONE(配置完成状态),剩下的 12 个状态均是先配置寄存器, 然后读出数据.例如在 ODIV0_CFG1 状态下,为了配置输出分频系数,根据我们的寄存器地址表, 可以知道其地址为 0,故 addr<=0,高八位是输出分频系数,低八位是占空比系数,所以wdata<={odiv_ratio,odiv_duty}.然后拉高 apb_wr_r 表示进行写.剩下来的每个写数据均是如此, 只需要修改地址和写入的数据即可。 

而 ODIV0_CFG1_RD 状态就是当写完之后,把 apb_wr_r 拉低表示读数据,地址不变,写数据情空,读出数据,验证写入是否正确。之后的每个状态操作均一致,知道配置完 ODIV、FDIV、MDIV 、IDIV 的寄存器就跳转到 CFG_DONE 状态,表示配置完成。

ODIV0_CFG2 则是配置相位,相位不改变,所以全部给 0.因此,接下来的操作其实就是配置分频系数和占空比,然后读出,然后配置相位,然后读出.反复操作,直到全部配置完成。

具体讲解,大家可以看视频讲解部分,至于 VESA 时序也将在应用篇讲解,这里只是简单演示动态配置时钟输出不同分辨率的彩条作为演示,效果比较直观。目前读者只需要知道不同的分辨率都会有不同的像素时钟即可。

以下是上板现象图:

(图12) 

输出彩条即表示实验成功,默认输出 1080p 60hz,按下 key1 切换分辨率,key2 复位。(图 5 最左边是白色 文字是文档中打上去的,避免以为是空白)。
 

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

电量提醒工具(充电提醒)

可提醒50%到100%之间的整电量,女声提醒,不占资源,防止设备未充上电。 https://download.csdn.net/download/zzmzzff/89713499

input系统之InputDispatcher

往期文章: Input系统之IMS的启动流程 input系统之InputReader 1.概述 InputReader和InputDispatcher是Input系统的重要组成部分,InputReader主要负责从设备节点获取原始输入事件,并将封装好的事件交给InputDispatcher;InputDis…

快速构建 AI 应用的利器:Python 库 Mesop

在当今这个 AI 技术飞速发展的时代,开发者们总是希望能够更快、更便捷地构建 AI 应用程序。今天,我要给大家介绍一个由 Google 推出的 Python 库——Mesop。它的出现,让我们能够轻松地搭建高效的 AI 应用。 Mesop 是什么? Mesop …

MATLAB生成COE文件

MATLAB代码 % 参数设置 N 4096; % 数据点数量 t linspace(0, 2*pi, N); % 时间向量 width 12; % 位宽% 正弦波,幅度在0到5之间 sine_wave 2.5 * sin(t) 2.5;% 三角波,幅度在0到5之间 tri_wave 5 * (1 - abs(mod(t/(2*pi)*4, 2) - 1));% 方波&…

echarts--Y轴名称超宽换行显示行高问题处理

设置yAxis.axisLabel.overflow:break为超宽换行 yAxis: [{type: category,inverse: true, //y轴坐标轴向下position: left, // 设置 y 轴的位置在左边offset: 65, // 设置 y 轴距离左边的偏移量axisLine: {show: false,},axisTick: {show: false},axisLabel: {show: true,inter…

集成电路学习:什么是MOSFET(MOS管)

一、MOSFET:MOS管 MOSFET,全称Metal-Oxide-Semiconductor Field-Effect Transistor,即金属-氧化物半导体场效应晶体管,也常被称为MOS管或金氧半场效晶体管。它是一种可以广泛使用在模拟电路与数字电路的场效应晶体管(f…

day07-集合-MapStream递归

一、Collections 1.1 可变参数 可变参数就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型... 参数名称 ​ 优点特点:可以不传数据给它;可以传一个或者同时传多个数据给它;也可以传一个数…

【系统架构设计师-2022年】综合知识-答案及详解

文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6~7题】【第8题】【第9题】【第10题】【第11~12题】【第13题】【第14题】【第15题】【第16题】【第17~18题】【第19题】【第20题】【第21题】【第22题】【第23题】【第24题】【第25题】【第26题】【第27题】【第28题…

【AQS源码】深入理解AQS的工作原理

【AQS源码】深入理解AQS的工作原理-CSDN博客

叉车专用AI防撞预警系统,带行车记录功能,守护人车安全!

AI防撞预警系统是一款为工业车辆等工程设备专门设计的智能视频监控装置。该系统通过三个独立的摄像头和深度学习算法实现机器视觉识别。 本系统的一个重要功能是能够能够实时侦测工作区域的危险状态并提供警示,一旦有人员进入危险区域,驾驶员即可得到动态…

SpringBoot2:RESTFUL风格接口开发及源码解读

一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…

海外合规|新加坡网络安全认证计划简介(三)-Cyber Trust

一、 认证简介: Cyber Trust标志是针对数字化业务运营更为广泛的组织的网络安全认证。该标志针对的是规模较大或数字化程度较高的组织,因为这些组织可能具有更高的风险水平,需要他们投资专业知识和资源来管理和保护其 IT 基础设施和系统。Cy…

ES6语法详解

以下是ES6常用的一些语法和特性: 声明变量的关键字变化:使用let和const、var来声明变量。 箭头函数:使用箭头(>)定义函数,简化函数的写法。 模板字符串:使用反引号(&#xff0…

【python】socket 入门以及多线程tcp链接

Socket 入门 及 多线程tcp链接 网络基础知识三要素 Socket是套接字的意思,是网络编程的核心对象,通信两端都独有自己的Socket对象, 数据在两个Socket之间通过 字节流(TCP协议) 或者 数据报包(UDP协议)的形式进行传输. 本文主要针对tcp流程进行讲解 socket-tcp流程图 1.创建服…

链表——单向链表续、双向链表

内存泄漏:当while(1)一直运行时,操作系统一直被申请空间,最终无空间可申请;造成内存泄漏。避免方法如:堆区手动申请的空间,都在用完后手动释放。 测试是否存在内存泄漏:…

REAL-FAKE: EFFECTIVE TRAINING DATA SYNTHESISTHROUGH DISTRIBUTION MATCHING 论文学习

这篇文章主要讲的是生成数据在模型训练中的作用,对于接下来要研究的生成多模态数据具有重要的作用。 文章摘要首先讲生成数据很重要,但在训练高级的模型的时候效果不好。论文主要研究的是这背后的原理并且证明了生成数据的作用。 介绍部分,…

Seataf分布式事务的使用

一、事务的四大特征(面试题) 原子性:一个事务是不可分割的,要不都做,要不都不做一致性:事务必须是使数据库从一个一致性变成另一个一致性状态隔离性:一个事务的执行不被其他事务干扰&#xff0…

svg怎么转为jpg格式?7种转换方法任你挑

在图像处理中,将SVG格式转换为JPG格式是一项常见的需求。SVG作为一种矢量图形格式,能够无限放大而不失真,而JPG则是一种广泛使用的位图图像格式,适用于网页、移动设备等多种场景。为了更加方便使用,我们会遇到需要将SV…

PVN3D(一)代码框架

在windows上配置pvn3d的环境一直配不成功,主要卡在了与C联合编译上,不知道如何处理了。索性先看看代码,竟然发现与论文中的代码对应上了。希望这一段时间把环境配置好。 1.论文中的网络结构 1.RGB图像特征,通过CNN提取特征。深度…

电商数据整合新篇章:京东商品详情API返回值应用实践

电商数据整合在当今商业环境中具有重要地位,API(应用程序编程接口)提供了高效收集、整合和分析数据的途径。以京东商品详情API为例,通过其返回值,电商企业可以构建更精准的营销策略、优化产品以及提升用户体验。以下是…