ad9516-1 数字环路滤波器怎么配

查看: 4080|回复: 23
自己动手写模电小工具第二弹——锁相环环路滤波器设计软件
本帖最后由 chenshangc 于
01:46 编辑
以前调试模拟锁相环,对环路滤波器的设计十分头痛,在网上搜索半天,也找不到一款合适的设计软件,因此萌发出自己写一个设计软件的念头,现在推出模拟电路计算小工具箱第二弹:锁相环环路滤波器设计软件 v1.0& &发布!欢迎试用并提出宝贵意见,本人一定及时改进!注意,该软件暂时不适用于电荷泵锁相环,适合大多数锁相环芯片,如CD4046,MC145152,MC145162等。
本软件可根据您需要的锁相环参数,计算出环路滤波器的元器件参数。使用前请仔细阅读参考教程!
软件使用截图如下:
step1.jpg (25.63 KB, 下载次数: 7)
01:34 上传
step2.jpg (35.88 KB, 下载次数: 3)
01:34 上传
step3.jpg (15.27 KB, 下载次数: 3)
01:34 上传
软件在附件中
(98.39 KB, 下载次数: 1386)
01:36 上传
点击文件名下载附件
给LZ一个鼓励。
3个窗口应该整合在一起。界面设计得紧凑些就好。
非常感谢楼主分享!
好东东----感谢楼主。
Super505050 发表于
给LZ一个鼓励。
3个窗口应该整合在一起。界面设计得紧凑些就好。
一开始也打算把三个窗口整合在一起,后来又想做成向导形式了,在后续版本中会改进!谢谢您的建议!
是否有三阶锁相环的设计?
独行剑客 发表于
是否有三阶锁相环的设计?
目前版本只能设计二阶一型环和二阶二型环,高阶的暂不支持
收了备用,矿坛真是藏龙卧虎哦,顶楼主
不错,谢谢!
请问楼主用什么语言编程的?
梅干菜 发表于
请问楼主用什么语言编程的?
C语言,VC++6.0环境下纯API编写
chenshangc 发表于
C语言,VC++6.0环境下纯API编写
给力!我在想是不是可以在其中加入选项卡控件什么的(不知道有没有记错,就是像磁盘的属性对话框里,每项功能都可以单击窗口上方一个标签,下面框架中的内容相应改变),这样,一个窗口可以包括很多不同内容。我没试用楼主的软件,有不妥请批评指正。
梅干菜 发表于
给力!我在想是不是可以在其中加入选项卡控件什么的(不知道有没有记错,就是像磁盘的属性对话框里,每项 ...
谢谢梅干菜老师的指点,下一版本中会考虑这样的界面设计,我对界面设计没什么经验,第一版软件以能用为主要目的
c语言什么的基础语言编软件游戏麻烦就连载个图片都要好多行代码,正因为东西多而复杂,应用平台广,不像flash,不用学几条代码就可以编一个简单的游戏了,不过权限很低,连查看文件的权限都没有,对这点很不爽。。。
本帖最后由 梅干菜 于
22:04 编辑
CLY 发表于
c语言什么的基础语言编软件游戏麻烦就连载个图片都要好多行代码,正因为东西多而复杂,应用平台广,不像fla ...
我大学学过visual basic 6.0,用起来也很方便,里面的控件是现成的,而且可以调用系统的API。这种语言据说没有c什么的高级,而且vb编译的程序好像不是所有电脑都能用,求指导。
微信:caoyin513 QQ: E-mail:
Powered byHEVC(14)
视频解码(18)
& & HEVC的环路滤波包括两个部分:去方块滤波(deblocking filter)和样本自适应缩进滤波(sample adaptive offset filter,简称SAO)。
& & 首先进行去方块滤波(见第2节),输入为重构后的图像矩阵,输出滤波后的图像,然后如果sample_adaptive_offset_enabled_flag为1,再进行SAO滤波(见第3节)
2. 去方块滤波(deblocking filter)
2.1 基本流程
& & 首先对垂直边界进行滤波,然后对垂直滤波的结果进行水平边界滤波。滤波以coding unit为单元。在一个coding block中,垂直滤波从左向右进行,水平滤波从上到下进行。
& & Deblocking对图像中所有的预测单元(prediction units)和变换单元(transform units)的边界都要进行,除了下列边界:
& & 1.&&&&&图像边界
& & 2.&&&&&被slice_deblocking_filter_disabled_flag标示为不进行deblocking
& & 3.&&&&&tile的边界,且loop_filter_across_tiles_enabled_flag为0
& & 4.&&&&&slice的上边界或者左边界,且slice_loop_filter_across_slices_enabled_flag
& & 另外,对于水平或者垂直方向尺寸上小于8的预测单元和变换单元,只有8x8的边界被滤波。
& & 滤波类型(edgeType)分为垂直(EDGE_VER)和水平(EDGE_HOR),值分别为0和1。
& & 当前slice的slice_deblocking_filter_disabled_flag为0时,对于每个coding unit来说,垂直边界的滤波按以下步骤进行:
& & 1.Coding block的尺寸nCbS = 1&&log2CbSize
& & 2.如果以下条件有一条或多条为真,变量filterLeftCbEdgeFlag为0:
& & (1)coding block的左边界为图像的左边界
& & (2)codingblock的左边界为tile的左边界,且loop_filter_across_tiles_enabled_flag= 0
& & (3)coding block的左边界是slice的左边界,且slice_loop_filter_across_slices_enabled_flag= 0
& & 否则filterLeftCbEdgeFlag为1.
& & 3. 尺寸为(nCbS) x (nCbS)的二维矩阵verEdgeFlags的所有元素初始化为0
& & 4. 获取变换块(TU)的边界,更新verEdgeFlags矩阵,规则(详见标准8.7.2.2)用一句话总结就是:TU的边界如果正好也是CU的边界,则此点的verEdgeFlags等于filterLeftCbEdgeFlag,否则等于1。简单说就是,CU内部的TU边界都需要滤波,如果TU边界正好也是CU的边界,则取决于CU的边界是否需要滤波。
& & 5. 获取预测块(PU)的边界,规则(详见标准8.7.2.3)用一句话总结就是:CU内部的PU边界都需要滤波。
& & 6. 计算滤波强度,输出尺寸为(nCbS) x (nCbS)的二维矩阵verBs
& & 7. 滤波计算过程,得到滤波后的图像。
& & 当前slice的slice_deblocking_filter_disabled_flag为0时,对于每个coding unit来说,水平边界的滤波按以下步骤进行:
& & 1.Coding block的尺寸nCbS = 1&&log2CbSize
& & 2.如果以下条件有一条或多条为真,变量filterTopCbEdgeFlag为0:
& & (1)coding block的上边界为图像的上边界
& & (2)codingblock的上边界为tile的上边界,且loop_filter_across_tiles_enabled_flag= 0
& & (3)coding block的上边界是slice的上边界,且slice_loop_filter_across_slices_enabled_flag= 0
& & 否则filterTopCbEdgeFlag为1.
& & 3. 尺寸为(nCbS) x (nCbS)的二维矩阵horEdgeFlags的所有元素初始化为0
& & 4. 获取变换块(TU)的边界,更新horEdgeFlags矩阵,规则(详见标准8.7.2.2)用一句话总结就是:TU的边界如果正好也是CU的边界,则此点的horEdgeFlags等于filterTopCbEdgeFlag,否则等于1。简单说就是,CU内部的TU边界都需要滤波,如果TU边界正好也是CU的边界,则取决于CU的边界是否需要滤波。
& & 5. 获取预测块(PU)的边界,规则(详见标准8.7.2.3)用一句话总结就是:CU内部的PU边界都需要滤波。
& & 6. 计算滤波强度,输出尺寸为(nCbS) x (nCbS)的二维矩阵verBs
& & 7. 滤波计算过程,得到滤波后的图像。
2.2 计算滤波强度
& & 引入变量xDi, yDj,xN和yN。
& & 如果edgeType为EDGE_VER,xDi等于( i && 3 ), yDj等于 ( j && 2 ), xN等于 ( 1 && ( log2CbSize -3 ) ) -1, 且yN等于 ( 1&& ( log2CbSize -2 ) ) -1。
& & 否则edgeType为EDGE_HOR,xDi等于( i && 2 ), yDj等于 ( j && 3 ), xN等于 ( 1 && ( log2CbSize -2 ) ) -1, 且yN等于 ( 1&& ( log2CbSize -3 ) ) -1。
& & xDi中i的范围是i = 0..xNand yDj中j的范围是j = 0..yN。
& & 以CbSize = 32,edgeType为EDGE_VER为例,图中红点标出了recPictureL[ xCb + xDi][ yCb + yDj]。
图1 recPictureL[ xCb + xDi][ yCb + yDj]几何位置
& & & & 如果edgeFlags[xDi][ yDj]等于0, 变量bS[ xDi][ yDj] (滤波强度矩阵的元素)等于 0。
&&&&&& 否则:
&&&&&& (1)如果edgeType为EDGE_VER,p0等于recPictureL[xCb + xDi -1 ][ yCb + yDj],而q0等于recPictureL[xCb + xDi][ yCb + yDj]。如果edgeType为EDGE_HOR,p0等于recPictureL[xCb + xDi ][ yCb + yDj - 1],而q0等于recPictureL[xCb + xDi][
yCb + yDj]。
&&&&&& 还是以CbSize = 32,edgeType为EDGE_VER为例,红点为q0,蓝点为p0。
图2 q0和p0的几何位置
& & & (2)对于滤波强度bS[ xDi][ yDj],有:
&&&&&& 如果,p0或者q0是使用帧内预测的intra编码块,bS[ xDi][ yDj]=2。
&&&&&& 否则,如果块的边缘是变换块的边缘,且p0或者q0存在于一个有非零系数的变换块,bS[ xDi][ yDj]=1
&&&&&& 否则,下列条件有一条或者多条为真时,bS[ xDi][ yDj]=1
&&&&&& 条件1:包含p0和q0的预测块在亮度预测时有不同的参考帧或者运动向量的数量不同。
&&&&&& 条件2:亮度预测时,包含p0的预测块和包含q0的预测块都只有一个运动向量.这两个运动向量的水平或垂直分量间绝对值的差大于等于4.
&&&&&& 条件3:亮度预测时,包含p0的预测块有两个运动向量和两帧不同的参考图像,包含q0的预测块有两个运动向量和相同的两帧(和p0相同)参考图像。对同一帧参考图像来说,两个运动向量的水平或垂直分量间绝对值的差大于等于4.
&&&&&& 条件4:包含p0或q0的预测块都是有两个运动向量和一个相同的参考帧。当下列两个条件都为真时,条件4为真。
&&&&&& 条件4.1:亮度预测时,list0的两个运动向量的水平分量或者垂直分量间的绝对值差大于等于4,或者list1的两个运动向量的水平分量或者垂直分量间的绝对值差大于等于4,
&&&&&& 条件4.2:亮度预测时,list0的p0的运动向量和list1的q0的运动向量的水平分量或者垂直分量间的绝对值差大于等于4,或者list1的p0的运动向量和list0的q0的运动向量的水平分量或者垂直分量间的绝对值差大于等于4。
&&&&&& 否则,bS[ xDi][ yDj]=0.
&&&&&& HM中对应的函数为xGetBoundaryStrengthSingle()
& & & &至此,bs(滤波强度)的计算就完成了
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:24230次
排名:千里之外
原创:32篇
评论:26条
(1)(2)(2)(3)(1)(7)(2)(1)(3)(10)RE: AD9516-4时钟芯片配置-电子产品世界论坛
RE: AD9516-4时钟芯片配置
刚开始弄AD9516,看了几天文档,还是没理解透,就到网上找资料,进一步的了解,结果在这个帖子上和好友们慢慢讨论,也搞明白了,在这里非常感谢好友的热心解答,下面就和大家一起分享下我学到的一些关键点。
一.芯片的工作模式
& & AD9516可设置3种工作模式,包括外部的VCO,CLK以及内部的VCO,这根据芯片的外围连接就可以看出来;
二.内部的PLL工作原理
& & &如果芯片工作在外部CLK模式下,参考输入(REFIN/REFIN_n)先经R分频模块,再通过R延时模块(延时可调节)后进入PFD(相位/频率检测)模块一端,同时VCO产生的信号通过N分频模块(预分频P.P+1和A/B计数模块)和N延时模块(延时可调)后进入PFD的另一端;PFD用于比较两信号的频率和相位差,产生与之成比例的信号传输给CP(电荷泵),电荷泵通过外接环形滤波器连接至VCO的控制端。电荷泵根据PFD的信号对环形滤波器的连接点充(放)电以达到VCO电压调节目的,使VCO输出和参考输入与PFD的频率和相位完全匹配,此时锁存相位,输出同步;
三.最初令人头痛的分频寄存器配置
& & 除了PLL用于产生稳定的VCO所涉及到的寄存器R,A,B外,分频寄存器还包括时钟输出分频寄存器(VCO&Divider),输出时钟通道分频寄存器(Output&Divider)。时钟输出分频器可以随意设置为2--6中的任意整数,输出时钟通道分频寄存器可选用1--32中的任意整数作为分频参数。需要注意的是,PLL的R,A,B这3个寄存器的配置相互制约,必须合理配置,片内的VCO才能工作在由参考输入提供的频率范围内,否则将导致不能锁存锁相模块。这些制约包括:PFD输入频率范围,A和B计数器输入最高频率,R、A和B值大小。设计时,考虑到这些制约以及设计的需要,就能正确配置内部分频寄存器
& & 片内VCO的计算
& &F_vco=(F_ref/R)x(PxB+A);
& 还有输出通道分频寄存器配置,在AD9516评估软件上点击DIVIDER 0,改变divider Ratio就可以改变分频系数,这里的系数是由右边的High CLK cycles和low clk cycles求和得出,可通过输出通道相应的寄存器配置改变;
四.对于从评估软件导出来的文件,里面的数据可大致参考,因为我在调试的时候,就出现对于评估软件输出的频率,跟我实际用示波器测的结果不一样;还有对于配置数据的发送,这个没有什么先后顺序;数据的发送方式与SPI协议相兼容,若果没有输出频率,首先确定你配置的数据写进去了没有,这个可以通过对芯片进行读操作,我当时就因为没写进去,一开始老以为是配置数据的问题,原来是我的spi协议没写好;以上是我的一些理解,如有什么不好的地方,可以讨论;
评估软件下载:
谢谢分享,楼主的体会很深,不过最终找到了问题的原因是SPI没有写对!!
SPI通用的有好几种,不过都是大同小异,如果直接采用硬件的SPI方式,反而容易出问题。
SPI没写对只是一个方面,对于整个AD9516芯片的工作原理的理解很重要,谢谢你。对于SPI,有哪几种通用方式呢?是不是通过CPOL和CPHA来设置啊,SPI一般都是四根线,这两个参数是怎么设置的,看了好多关于SPI协议,都没提到
文件已审核通过
不用刻意的去记有几种,,遇到一个器件就看看它给的时序,然后在原有的基础上稍微改改就可以啦!
恩。对于差分信号,FPGA怎么处理啊,看网上一些资料说,要把lvds信号转换成单端使能信号,需要调用ALTLVDS相关IP核
你好,我现在200M的能锁定,LD信号拉高了。但180M的时候锁不定,请问跟环路滤波电路有关系吗?200M的情况vco设定输出2400M, 180M的情况vco设定输出2520M,两者的区别就是改变了a
的值,实在费解
你要看vco输出在不在规定的范围之内
thanks a lots
楼主您好 我现在用AD9516-1配置出现的问题是LD一直为低,配置频率为100M 示波器量出来是97.8M 计数器A的值改了频率不会改变 您能帮我分析一下哪块的问题吗 非常感谢
匿名不能发帖!请先 [
Copyright (C) 《电子产品世界》杂志社 版权所有}

我要回帖

更多关于 环路滤波 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信