• 测相位差(草稿)


    设计要求:输入频率范围100HZ-100KHZ,相差0-90度。

    参数设计:采用50MHz晶振的FPGA实验板搭建。分两档测量,150MHZ档位测试4KHZ-100KHz频率之间信号;3MHZ档位测试100HZ-4KHZ之间信号。计数器采用16位。

    思路一:构造两个计数器,一个测信号周期,另一个测相差周期。

    一、输入10KHz正弦波,经过RC移相网络后有大约36度相移。需要用FPGA测相差。

    代码如下

    View Code
     1 module Test_pha
    2 (
    3 input clk,
    4 input rst_n,
    5
    6 input start,
    7 input IN1,
    8 input IN2,
    9
    10 output [23:0] N1,
    11 output [23:0] N2,
    12 output AheadLag,
    13 output PDout
    14 );
    15 //超前/滞后检测模块
    16 reg r_AheadLag;
    17 always @(posedge IN1)
    18 if(IN2==1'b1) r_AheadLag<=1'b1;//IN2 ahead IN1
    19 else r_AheadLag<=1'b0;//IN2 lag IN1
    20 assign AheadLag=r_AheadLag;
    21 //鉴相器模块
    22 assign PDout=IN1^IN2;
    23
    24 //控制模块
    25 reg EN1;
    26 wire EN2;
    27 always @(posedge IN1 or negedge rst_n)
    28 if(!rst_n) EN1<=1'b0;
    29 else EN1<=~EN1;
    30
    31 //计数器N2控制模块
    32 assign EN2=PDout&EN1;
    33
    34 //N1计数模块
    35 reg [23:0] r_N1;
    36 wire [23:0] r_N1_next;
    37 always @ (posedge clk or negedge rst_n)
    38 if(!rst_n) r_N1<=0;
    39 else if(EN1==1'b1)
    40 r_N1<=r_N1_next;
    41 else r_N1<=0;
    42
    43 assign r_N1_next=r_N1+1'b1;
    44 assign N1=r_N1;
    45
    46 //N2计数模块
    47 reg [23:0] r_N2;
    48 wire [23:0] r_N2_next;
    49 always @ (posedge clk or negedge rst_n)
    50 if(!rst_n) r_N2<=0;
    51 else if(EN2==1'b1)
    52 r_N2<=r_N2_next;
    53 else r_N2<=0;
    54
    55 assign r_N2_next=r_N2+1'b1;
    56 assign N2=r_N2;
    57
    58 endmodule

    RTL级视图

    RTL仿真波形

    思路二:构造一个计数器,根据控制信号分别读取信号周期和相差。

    模块构造分析:

    1、PLL模块。提供150MHz时钟。

    2、频率档位选择模块。通过Sel信号为计数器选择150M或3M时钟信号。150MHZ信号通过分频后添加测试引脚。

    3、定制16位计数器,具有高电平清零端aclr。

    4、触发信号。将两路信号相与产生脉冲信号,通过D触发器后输出给模块6。

    5、极性判断信号。判断信号2是超前信号1还是滞后。

    6、计数器控制模块。通过模块4脉冲信号控制计数器清零和计数值读取。

    7、数据输出模块。将计数器的值送到外围引脚。

    /***万好好-科研论文培训,微信号:wanhaohao258。如转载本博客内容请注明,如果存在知识产权问题请主动联系。***/
  • 相关阅读:
    phpstorm常用快捷键
    tp3.2.3运用phpexcel将excel文件导入mysql数据库
    TP3.2加载外部PHPexcel类,实现导入和导出
    Navicat常用快捷键
    thnkphp框架面试问题
    PHPSQL注入
    PHP4个载入语句的区别
    goflyway简单使用
    ubuntu16.04 HyperLedger Fabric 1.2.0 开发环境搭建
    DApp demo之pet-shop
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2127679.html
Copyright © 2020-2023  润新知