博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
赛灵思S6器件族PLL_Reconfiguration---利用RAM随时随地配置
阅读量:6432 次
发布时间:2019-06-23

本文共 1754 字,大约阅读时间需要 5 分钟。

Xilinx S6 PLL 重配置工程概述

一.思路说明

 

官方配置过程:官方大概是这么配置的,在rom中初始化2组参数,通过顶层模块的STTEP和STATE以及SRDY信号控制配置过程。上电后等待SRDY有效(1clk)之后,使能STTEP(1clk),在STTEP有效的前提下,判断STATE的值是1或者0,从而选择哪组参数有效,实际上最终是由状态机来完成对PLL寄存器读写的,状态机请参考pll_drp_modify.v文件。

 

修改说明:由于我们要动态配置PLL,且要求灵活性较高,故采用RAM的存储数据,这样便不需要指定两组或者多组参数了,且将参数的值例化为顶层模块的输入,使用的时候可以用单片机配置fpga的寄存器,单片机计算相关参数的数值通过协议发送给fpga,由FPGA最终完成配置,参数的计算,请参考官方的pll_drp_func.h文件,工程已经转换为.c文件供参考。

 

二.使用说明

 

使用工程下的C计算参数参考文件中的<参数计算_exc_pll_cal.c>文件,传入对应的值后就可以运行得到相关的参数,然后将这些参数写入到fpga对应的测试文件中,目前仿真已测试。

 

三.部分C函数使用说明

 

  1. void s6_pll_lock_lookup(u8 divide, LOCK * p);

使用说明:该函数主要是设置值PLL检测锁存的能力,第一个参数用来设置CLKFBOUT+MULT的属性,取值范围:1-64,第二个参数是传入结构体的地址,因为这个是40bit的,由32bit+8bit构成,这里用了结构体数据类型。

  1. u16 s6_pll_filter_lookup(u8 divide, char *p);

使用说明:该函数会影响PLL相位的偏移和抖动的过滤能力,其主要实现查表,Xilinx官方提供了64个数据的表格,根据第一个参数来查找相应的数据,取值范围:1-64,第二个参数是PLL的带宽值,取值范围:HIGH, LOW, AND OPTIMIZED,但是实际上只有两个值,因为HIGH,和OPTIMIZED是一样的,返回值采用u16接收,其实有效数据位只有10bit。

  1. u32 s6_pll_count_calc(u8 divide, s32 phase, u32 duty_cycle);

使用说明:该函数用来计算分频或者倍频、相位和占空比的参数。第一个参数取值范围:1-128,第二个参数取值(-360°  ~ +360)*1000:第三个参数取值:(0-1)*100_000,返回值用u32接收,其有效数据位只有14bit+9bit有效。

 

 

 

四.参数计算说明

 

以下是官方顶层文件中的例化实例,我加了一下注释:

输出转换关系:

输出频率    :(反馈系数 / 设置输出的系数)* 输入时钟 (注:假设输入分频为1)

输出相移    :数值 / 1000

输出占空比:数值 / 100_000

 

官方参数计算说明,当上图的参数传入后,对应的参数是怎么计算的,如下图:

前5个都是计算反馈的相关参数的,是调用用官方提供的.h文件进行计算,传入的参数参照名字。

参考xx.h文件,设计了参数计算_exc_pll_cal.c文件,该计算方法是参照上图的使用规则,举例:

前5行是反馈系数的计算,后面的6行是输出时钟的参数计算,实际运用中,应该接收函数的返回值,这里并没有接收,是不正确的使用方法,之所以这么用,是因为我在函数中加了打印注释信息,可以根据打印信息去调试,实际运用要接收函数的返回值。

 

一.附录

 

实际工程中,在测试文件中加入了如下调试信息,如下所示:

运行modelsim后,写入到temp中的数据:

xx.c文件打印的调试参数:

可以看到和上面的一样,可以用官方的计算参数和xx.c运行之后的结果比对,验证计算后数据的正确性。

备注:关于PLL配置的其他相关资料请查看Xilinx官方的文档。

 

需要工程文件请向博主索要,欢迎大家讨论,转贴请注明出处,谢谢。

                                      --------------------cofin_add

 

转载于:https://www.cnblogs.com/cofin/p/6825689.html

你可能感兴趣的文章
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(六)
查看>>
interlib在tomcat7.0的安装
查看>>
水晶报表在大型WEB内部管理系统里的滑铁卢
查看>>
我的友情链接
查看>>
Git学习
查看>>
trove 基于 centos7 制作 mysql5.6 镜像
查看>>
结合i节点和数据块分析linux中软链接和硬链接的区别
查看>>
Heartbeat crm的配置
查看>>
Stream
查看>>
我的友情链接
查看>>
Windows Server 2012_Install_Guide
查看>>
ISA Server搭建站点对站点×××
查看>>
我的友情链接
查看>>
超大规模数据中心:给我一个用整机柜的理由先
查看>>
执行命令取出linux中eth0的IP地址
查看>>
CRUD全栈式编程架构之控制器的设计
查看>>
python常用内建模块(五)
查看>>
你为什么有那么多时间写博客?
查看>>
Excel 中使用VBA
查看>>
$.ajax同步请求会阻塞js进程
查看>>