1,vivado工程:2, Si570内部结构:

其输出就是由晶振内部振荡器产生的固定频率为 f XTAL 的时钟经过 1 次倍频和 2 次分频而获得。输出时钟频率
f out 的计算公式为:

晶振内部振荡器产生的时钟频率 f XTAL ≈114.285000000MHz。需要说明的是,f XTAL 不是一个完全准确的值,由于生产工艺的限制,对于每一个晶振,f XTAL 都会存在细微的差别。RFREQ 是 38bit 的倍频系数,其高 10bit为整数,低 28bit 为小数。由于 f DCO 的可设置范围为 4.85G~5.67GHz,因而倍频系数 RFREQ 也有一个固定的范围。此外,HSDIV 为 3bit 的分频系数,N1 为 7bit 的分频系数,两者均为整数。在 Si570 上获取所需要频率的时钟就是通过 I2C 接口对上述公式中的 RFREQ、HSDIV和 N1 共 3 项参数进行设置。每个 Si570 都有一个默认的上电频率和 I2C 地址,两者都是可选的,具体组合和型号对应关系可以咨询生产商。在出厂时,这两个默认值都写入其内部的 Flash 里,用户后续都无法更改。晶振虽然可以在上电状态下通过 I2C 设置改变输出频率,但是重新上电后又会从 Flash 里加载出厂设置输出默认的上电频率。

3,参数计算原理:

晶振上电后以默认频率输出时钟。此时若需要改变输出频率,首先,需要计算需要设置的倍频系数 RFREQ、以及分频系数 HSDIV 和 N1。以 DCO 的中心频率±3500ppm(±0.35%)范围作为划分。

4,读写寄存器:

当计算出所需的倍频系数 RFREQ,以及分频系数 HSDIV、N1 后,需要将这些值通过 I2C 写入寄存器中。

Si570 I2C 寄存器配置过程如下图所示。可以对单个寄存器值进行配置,也可以对地址连续的寄存器进行连续配
置。连续配置只需要发送起始寄存器的地址即可,这种方式配置较为方便。

Si570 I2C 寄存器值读取过程如下图所示。同理,可以对单个寄存器值进行读取,也可以对地址连续的寄存器进
行连续读取。连续读取只需要发送起始寄存器的地址即可。

不同型号的 Si570 具有不同的 I2C 地址,MIZ7035 开发板中所使用的型号为 570BAB000544DG,其 I2C 地址为 0x5D。

5,程序配置:

频率测算由 ibert_freq_counter.v 和 ibert_freq_mult.v 两个模块完成。
首先,介绍一下频率测算的原理。测算过程首先要以一个已知频率的时钟信号作为参考,例如,rdf0194 参考
设计中使用了 1 个 200MHz 的时钟。然后,同时以参考时钟和 Si570 输入的待测时钟为基准,各自使用 1 个寄存器
同时进行计数。当参考时钟累加到我们所设置的阈值时,保存此时待测时钟的计数值,然后根据比例法便可以计算
出此时的待测时钟的频率。为了使最终的统计结果能够直观的反映出频率值,且能保留 2 位小数。例如,200M 的时钟的十进制统计值为20000,156.25M 时钟的十进制统计值为 15625。需要将上述的寄存器计数值乘以 1 个系数就可得到我们所需要的直
观的统计值。例程中,ibert_freq_counter 模块负责对参考时钟和待测时钟进行寄存器计数,参考时钟的计数阈值为 16’h4000。
当以PS产生的200M同时作为参考时钟和待测时钟时,由于在计数时使用了4分频,实际的计数阈值为4096-1=4095。
此时,根据这个结果便可以计算出该系数,计算过程如下:20000/4095≈4.8840=48840/10000。所以寄存器计数值所需要乘的系数近似为 48840/10000。在 ibert_freq_mult 模块中,将 ibert_freq_counter 模块的计数值通过系数换算成最终的结果。乘以系数后,为了补偿舍去小数部分,将相乘结果再加 1 便可以得到最终结果。需要注意的是,该结果只是近似统计,由于异步采样和小数计算误差,统计结果可能会存在个位数的误差(小数点第 2 位)。但这对于我们直观判断设置值是否正确并不存在较大影响。

6,VIO输入:

为了便于实时观察 Si570 输入待测时钟的频率测算值,在 PL 端使用 VIO IP 核通过 vivado 软件设置来观察。

7,程序流程

main 函数主要完成如下功能:
(1)初始化 ARM 中断控制器及系统中断
(2)初始化并配置 I2C 接口及其中断
(3) 通过 I2C 接口复位 Si570
(4) 通过 I2C 接口读取 Si570 的寄存器值,通过串口输出。并从串口接收用户输入的新寄存器配置值,将其写入 Si570。

配置 PCA9548 I2C 通路切换

利用PCA9548芯片可以很方便实现I2C复用通路之间的切换。比如SI570是在通道7只要一条指令就可以完成通路的切换。

PCA9548_sel(PCA9548_ADDRESS,0x81);

ZYNQ 可编程查分晶振Si570使用相关推荐

  1. 第61课 查分程序 《小学生C++趣味编程》

    /*尼克.格莱尔等5位同学进行了一次信息学测试, 试编一程序,实现查分功能. 先输入成绩,然后输入学号输出相应的成绩.*/ #include<iostream> using namespa ...

  2. 晶振噪声及杂散_如何判断是否需要使用分立式晶振和振荡器呢?

    你在解决系统计时问题时,是不是需要使用分立式晶振和振荡器呢?对于大多数硬件设计师来说,这看起来的确是一个显而易见的方法,又有谁会到互联网上费时费力地搜寻那些包括时钟发生器IC和缓冲器/分布器件的经优化 ...

  3. 秒懂晶振以及晶振电路 让你从“吃瓜群众”到“技术大牛”

    在单片机中晶振是普遍存在的,那么晶振为什么这么必要,原因就在于单片机能否正常工作的必要条件之一就是时钟电路,所以单片机就很需要晶振. 打个比方来说:晶振好比单片机的心脏,如果没有心脏起跳,单片机无法工 ...

  4. “晶振”拍了拍你,“你知道我是如何工作的吗?”

    点击上方"大鱼机器人",选择"置顶/星标公众号" 福利干货,第一时间送达 晶振在电路板中随处可见,只要用到处理器的地方就必定有晶振的存在,即使没有外部晶振,芯片 ...

  5. 晶振两端的谐振电容有特殊要求吗_“吃瓜群众”也能秒懂的晶振电路原理

    原标题:"吃瓜群众"也能秒懂的晶振电路原理 晶振,全称是石英晶体振荡器,是一种高精度和高稳定度的振荡器.通过一定的外接电路来,可以生成频率和峰值稳定的正弦波. 而单片机在运行的时候 ...

  6. 晶振及其内部电路详解

    晶振及其内部电路详解: 晶振原理:晶振,在电气上它可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低 的频率是串联谐振,较高的频率是并联谐振 ...

  7. STM32晶振 选型

    频率 STM32有5个时钟源,有高速内部时钟(HSI)和低速内部时钟(LSI),还有高速外部时钟(HSE)和低速外部时钟(LSE),而这里的外部高速时钟HSI就是我们图中的Y1,8MHz的晶振,外部低 ...

  8. 单片机中晶振的工作原理

    晶振在单片机中是必不可少的元器件,只要用到CPU的地方就必定有晶振的存在,那么晶振是如何工作的呢? 什么是晶振 晶振一般指晶体振荡器,晶体振荡器是指从一块石英晶体上按一定方位角切下的薄片,简称为晶片. ...

  9. 晶振噪声及杂散_晶振的原理及作用?

    展开全部 晶振的工作原理 一.什么是晶振? 晶振是石英振荡器的简称,英文名为Crystal,它是时e68a8462616964757a686964616f31333332623961钟电路中最重要的部 ...

最新文章

  1. 多尺度目标检测--Scale-Aware Trident Networks for Object Detection
  2. Quick-cocos2d-x3.3 Study (一) --------- 创建一个UI标签
  3. 基于IMX515EVK+WINCE6.0---支持PB6.0通过USB下载镜像文件
  4. Chrome DevTools:如何过滤网络请求
  5. Qt resizeEvent 控件居中设置
  6. Android保活实现方案梳理
  7. 600集Python从入门到精通教程(懂中文就能学会)
  8. FC协议监控卡(FC协议分析仪),FC Monitor
  9. CocosCreator 制作微信小游戏排行榜,超越好友,分享功能
  10. 《老路用得上的商学课》81-85学习笔记
  11. 4G全网通模块 安卓 高通骁龙MSM8909核心板 开发板
  12. Pandas 08-文本数据
  13. visual studio fatal error C1083: 无法打开源文件
  14. 【复合五点高斯-勒让德公式】
  15. Android 学习笔记(6)之Lambda和注解
  16. mysql单机qps能到多少_单机Qps上限是多少?
  17. 现代基准测试程序种类以及使用方法
  18. 怎么把pdf转换成高清图片
  19. POJ1008 玛雅历
  20. BERT in tweet_sentiment_extraction

热门文章

  1. 日语常用接尾词2-形容词/形容动词性接尾词
  2. 暗夜精灵怎么重装系统?
  3. android键盘怎么打韩文,教你如何打韩文---韩语键盘及打字技巧
  4. 自动化设备贴合精度调试参考
  5. 合同在线修改 java_Java并发编程实战-第四章
  6. 办公用品管理系统服务器版,办公用品管理系统毕业论文.doc
  7. 根据离散点画直线_离散数据的最佳直线求解方法
  8. Makefile出错 make: *** No rule to make target ‘*.c‘,needed by ‘*.o’.Stop
  9. 机房防雷,以下七点需谨记!
  10. php paypal订单号查询,php购物网站支付paypal使用方法