测相位差(草稿)
设计要求:输入频率范围100HZ-100KHZ,相差0-90度。
参数设计:采用50MHz晶振的FPGA实验板搭建。分两档测量,150MHZ档位测试4KHZ-100KHz频率之间信号;3MHZ档位测试100HZ-4KHZ之间信号。计数器采用16位。
思路一:构造两个计数器,一个测信号周期,另一个测相差周期。
一、输入10KHz正弦波,经过RC移相网络后有大约36度相移。需要用FPGA测相差。
代码如下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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。如转载本博客内容请注明,如果存在知识产权问题请主动联系。***/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!