• verilog学习(8)实战之PPL与串行/解串器


    一:PLL

    1:组成

      输出时钟产生器,相位比较器,可变频率振荡器(VFO),PLL会比较输入时钟相位与VFO产生的输出时钟之间的差别,并且通过这个差别来调整VFO产生的时钟频率。

      

    2:VFO代码

      我们定义比较器给VFO加快频率的指令是2‘b11,减慢频率的指令是2’b00.

      

    3:比较器设计

    (A)方法一:用一个时钟来对另一个时钟的高电平宽度进行计数。如果每次PLLClock高电平时计数都为1,那么说明两个时钟是吻合的。

      

     (B)对A改进

      首先HiCount计数可能会溢出,技术值重新翻转到2‘b00。2’b00的作用是加快产生时钟频率,这使得频率的调整方向与真实情况正好相反。如果我们把HiCount的位宽由两比特扩展至3比特,可以解决这个问题。

      接着,来解决调整精度的问题,这可以通过把高电平的计数值在多个时钟里求平均的办法来解决;当两个时钟同步时,这个计数值应该一直为1。(这点不明白)

      

       

    4:顶层设计

      

    二:倍频PLL(以32倍频为例)

    1:电路图

      

      即在原1倍频的输出端加n比特向上计数器,如,32倍频时,每16个时钟,输出端输出一个时钟用于与输入时钟进行比较,从而起到倍频PLL。 32=2^5,因此计数器为5.                                                                                                                                                                                                                                                                                                        

     三:SerDes与PCI Express简介

    1:基本概念

      PCI是32比特的并行总线协议;

      PCI Express用来取代PCI总线的新的串行总线协议

      SerDes:串行/解串器

      下面将完成一个符合PCI Express规范的串行/解串器(SerDes)的设计

    2:并串转换器模型

      

       串行协议:每一个时钟发送一个比特,先发送MSB,同时把信号SerValidFlag拉高;当发送了LSB后,再把SerValidFlag拉低。

      主要代码:ParValid=1,SarValid=1,然后将BusIn[ix]的值循环输出,最后SarValid拉低。(ParValid是仿真给的值)

      

     3:串行帧编码器

      数据串行输出之前有一定的帧格式,例如一个并行包32bit,串行输出,要在每个字节后加一个字节。如下:x代表数据,数据后面为一个字节的帧边界。

      

  • 相关阅读:
    使用nodejs运行SAP Fiori应用
    JUnit 注解@Rule的工作原理
    JUnit 注解@SuiteClasses的工作原理
    JUnit 注解@Category的工作原理
    JUnit 注解@RunWith的工作原理
    Eclipse里如果看不到Attach Source按钮应该怎么办
    使用SAP CRM中间件从ERP下载BOM的一些常见问题
    GaussDB(DWS):非侵入式备份及其在NBU上的应用
    华为云原生数据仓库GaussDB(DWS)深度技术解读:融、快、大、稳、易
    华为云举办AI经典论文复现活动,打造领先AI开发者学习社区
  • 原文地址:https://www.cnblogs.com/xh13dream/p/8946997.html
Copyright © 2020-2023  润新知