1. 对于电机的锁相控制,需要对相差进行PI性质的环路滤波,但现有的锁相环中鉴频鉴相器输出为相差脉冲而非数字量,难以直接进行PI特性的环路滤波。

通过对晶振的非整数分频获取准确的参考时钟,基于触发器机制实现了PFD相差脉冲的数字量化,且可以输出频差数字量。锁相环是频率和相位的同步控制系统,实现输入参考信号和反馈信号的频率相等,相位差恒定。利用锁相环技术可实现数字信号的同步,将这个思想引入电机的速度控制系统中,则能够实现稳态精度很高的转速控制。综合起来就是电机转速的控制反馈系统,因为要求相位差恒定,所以需要准确的检测相位差,而本次的设计就是检测相位差。锁相环和数字鉴相鉴频器是两个东西,前者是控制,后者是检测。

2. Pi性质的环路滤波?难道是PID控制,在反馈系统中,用输出的实际值和理论值的差值去反馈进系统的输入。PID就是反馈的比例,积分和微分。不过这里的滤波是什么?电机的锁相环控制中,电机加霍尔传感器是二阶系统。什么是二阶系统? y=ax^2+bx+c?

3. 做鉴相鉴频器的目的是为了稳速,不过现在还没明白,如何提高速度。这并不是我们关心的,假设电机转速500转每秒(霍尔传感器采样得到500MHz),晶振时钟是40MHz。

4.为了得到500 Hz的参考时钟,需要对40 MHz的晶振时钟进行两次分频操作。分频系数为N-0.5(N为整数)时,就是半整数分频。本次需要实现奇数分频,还有半整数分频。对40 MHz的晶振时钟先后进行等占空比125分频和2. 5半整数分频,得到320 kHz和128 kHz的时钟,经过时钟预分频器分频后的固定占空比128  kHz的时钟信号经过8位计数器,得到500  Hz的参考输入信号,反馈时钟输入并检测到其上升沿。

5. 在每个反馈信号的上升沿保存8位寄存器的值,这个值就是频率差(非线性)和相位差(线性)。同时用一个标志位,为1说明有上升沿,为0说明无上升沿,代码如下

module pfd(reset, clk_40mhz, clk_128k, clk_fb_500, phase_value, clk_ref_out);input reset;
input clk_128k;  //两次分频得到的128Khz的时钟
input clk_fb_500; //电机的反馈时钟500hz
input clk_40mhz;reg  clk_ref_500;
output [7:0] phase_value;
reg [7:0] phase_reg;
output clk_ref_out;reg [7:0] cout_8bit; //8位计数器
reg [7:0] ph_reg; //8位寄存器
reg have_flag;
reg clk_fb_prv;
reg clk_ref_prv;
reg [7:0] phase_value_1;
reg [7:0] phase_value_tmp;
parameter PHASE_MAX_VALUE = 8'h7F;

wire cout_en;//8位计数器,一个always里面可以写2个if语句吗?
always @(posedge clk_128k or negedge reset) beginif(!reset)cout_8bit <= 8'b0;else cout_8bit <= cout_8bit + 1'b1;
end//产生参考时钟500HZ
always @(posedge clk_40mhz) beginif(cout_8bit == 8'h0) clk_ref_500 <= 0;else if(cout_8bit == 8'h7f)clk_ref_500 <= 1;elseclk_ref_500 <= clk_ref_500;
end//D触发器,边沿检测反馈信号上升沿和参考信号下降沿
/*
always @(posedge clk_fb_500 or negedge clk_ref_500) beginif(clk_fb_500 == 1) beginhave_flag = 1;clk_fb_prv = clk_fb_500;phase_value_1 = cout_8bit; endelse if(clk_ref_500 == 0) begin have_flag = 0;phase_value = phase_value_tmp; endelse have_flag = 0;end
*/always @(posedge clk_40mhz) beginclk_fb_prv <= clk_fb_500;clk_ref_prv <= clk_ref_500;if({clk_fb_prv,clk_fb_500} == 2'b01) begin //判断反馈信号的上升沿have_flag <= 1;phase_value_1 <= cout_8bit; endelse if({clk_ref_prv,clk_ref_500} == 2'b01) begin  //判断参考信号的上升沿have_flag <= 0;phase_reg <= phase_value_tmp; endelse have_flag <= have_flag;end//怎么去解决一个周期内有2个反馈信号的上升沿的问题?
//总线选通开关
always @(posedge clk_40mhz)begin if(have_flag == 1)phase_value_tmp <= phase_value_1;elsephase_value_tmp <= PHASE_MAX_VALUE;end
//PFD输出
//always @(posedge clk_128k)

assign clk_ref_out = clk_ref_500;
assign phase_value = phase_reg;
endmodule

6. 实际仿真如下,当反馈信号滞后于参考信号1/4周期的时候,输出为0xc0,那么高位为1,说明是滞后(0xff-0xc0=0xff/4),不过波形都是相对的周期,换种说法说是超前0xc0也是对的,主要是看对比前一个参考上升沿还是下一个参考上升沿。两种定义都可以。

7. 当反馈信号超前于参考信号的时候,输出为0x4d,那么高位为0,说明是超前(0x4d)

8. 频率差,当反馈信号的频率高于参考信号时,在一个参考时钟周期内会有多个反馈时钟的上升沿出现,PFD的输出将会是最后一个反馈时钟沿对应的寄存的值,是一个负数,表明反馈信号超前参考信号。锁相环路将会降低VCO的输出降低反馈信号的频率。当反馈信号的频率低于参考信号时,在某个参考时钟周期内将不会有反馈信号的上升沿出现,此时PFD会复位触发器,输出对应于最大滞后量的7FH,此时锁相环路将会提高VCO的输出提高反馈信号的频率。下图是输出0X7FH的仿真。当然在下一个周期,仍然会检测到反馈信号的上升沿,所以0X7FH和0X66H间隔出现,证明了本次仿真是正确的。

转载于:https://www.cnblogs.com/429512065qhq/p/8525549.html

FPGA数字鉴相鉴频器的开发记录相关推荐

  1. chipsel语言_用VHDL语言对FPGA和CPLD器件进行开发时应注意的事项

    第25卷第4期苏 州 大 学 学 报(工 科 版)Vol.25No.4 2005年8月JOURNA L OF SOOCH OW UNIVERSIT Y(ENGINEERING SCIENCE E DI ...

  2. 艾为数字ic面试题_秋招 应聘FPGA/数字IC笔试面试经验分享(简单列举FPGA/数字IC公司)...

    1.自我介绍 我是一名二本院校的电气自动化专业的本科生,因为自己的爱好,喜欢FPGA开发,两年的开发经验,用FPGA开发并完成三个省级科研立项并获得一个A类竞赛国家一等奖.目前签约上海艾为电子,数字I ...

  3. FPGA数字信号处理(1)- AM调制的FPGA实现

    FPGA数字信号处理(1)-AM调制的实现 一:前言 本内容分享为本人自学经历.受限于作者水平可能有不准确的地方.欢迎诸位批评指正. 分享的文章需要一些基本的FPGA开发基础 二:概述 这部分简单,但 ...

  4. FPGA数字信号处理之乘法器

    FPGA数字信号处理之乘法器 软.硬件配置 system generator仿真 rom存储器实现正弦输入 乘法器模块 其他模块 乘法器IP核 3 \sqrt{3} 3 ​ / 2 用定点小数如何表示 ...

  5. 新书预告:Xilix FPGA数字信号处理设计——基础版

    掌握FPGA数字信号处理设计需满足三个条件:熟悉FPGA设计方法.理解数字信号处理理论.掌握理论的工程实现方法.对初学者来讲,每个条件看似都难以逾越.杜勇老师完美融合课程教学与工程设计的需求特点,以独 ...

  6. FPGA数字信号处理(四)Quartus FIR IP核实现

    该篇是FPGA数字信号处理的第四篇,选题为DSP系统中极其常用的FIR滤波器.本文将在前两篇的基础上,继续介绍在Quartus开发环境下使用Altera(或者叫Intel)提供的FIR IP核进行FI ...

  7. FPGA数字信号处理(九)Vivado FFT IP核实现

    该篇是FPGA数字信号处理的第9篇,选题为DSP系统中极其常用的FFT运算.上篇介绍了Quartus环境下FFT IP核的使用"FPGA数字信号处理(八)Quartus FFT IP核实现h ...

  8. FPGA数字信号处理(十一)ASK解调技术

    上一篇介绍了数字通信系统中ASK调制技术的FPGA实现.调制信号经过DAC.可选的带通滤波器.功率放大器.天线发送出去后,在接收端收到ASK信号后需要对其解调,提取出包含的信息(基带信号).无论在哪种 ...

  9. 数字艺术藏品系统开发

    数字藏品商城系统开发,联系看主页或私信,数字藏品商城App开发,数字藏品商城小程序开发,数字藏品软件开发,数字藏品平台开发,数字藏品模式制度开发 数字藏品的应用领域非常地广泛,也具有巨大的价值,但目前 ...

  10. AR Camera开发记录(二) -- 3D人脸模型

    转载:https://blog.csdn.net/torchlight2012/article/details/76066790 在 AR Camera开发记录(一) – Rajawali的使用末尾的 ...

最新文章

  1. python创建excel图表_python使用VBA(8):Excel创建图表(简单)
  2. EL表达式中使用replace函数对时长字符串进行处理
  3. paramiko -SSH学习
  4. 使用meterpreter让没有安装python解释器的肉鸡设备执行任意python程序
  5. FTP 1 协议分析
  6. oracle的错误代码如何查看对应的错误信息
  7. 资源放送丨《MySQL在某航空业公司的架构选型演进之路》PPT视频
  8. 花式迎新 百度李彦宏Robin化身大厨派发肉饼
  9. hdu 1452 因子和 + 逆元素+ 快速幂
  10. 算法高级(22)-BCrypt加密算法,号称目前最安全的算法之一
  11. PIXI+GSAP 防刹车动效
  12. 旋转目标检测 校准的深度特征用于目标检测SSA
  13. 骨传导耳机损伤大脑?具有不伤耳优点的骨传导耳机了解一下
  14. 重装系统以后找不到机械硬盘
  15. kindeditor=4.1.5上传漏洞复现
  16. 【那些年我们一起看过的论文】之《Real-Time Loop Closure in 2D LIDAR SLAM》
  17. linux firawll防火墙设置白名单/指定ip访问指定端口
  18. n719 rom 卡刷 android 4.3,三星 N719 官方 4.3 精简 纯净 刷机包 ROM
  19. 如何让tensorflow_datasets加载本地下载的数据集
  20. 五分钟学后端技术:一篇文章告诉你如何学习云计算!

热门文章

  1. PAT A 1013(甲级)
  2. python使用openpyxl插入excel批注,同时修改excel批注框大小
  3. easyexcel 第一次导入导出会报错com.alibaba.excel.exception.ExcelAnalysisException,所以自定义excel导入导出表格
  4. @JSONField 注解详解和应用
  5. Word控件Spire.Doc 【页面背景】教程(1) ;C#/VB.NET:在 Word 中插入水印
  6. 编码规范 SonarQube检测出的bug、漏洞以及异味的修复整理
  7. 【解决方法】Windows Server 2016/2019无法安装Flash
  8. led屏背后线路安装图解_液晶拼接屏安装方法图解及接线方法
  9. 四面体体积公式 hdu 1411
  10. mysql复制一行sql语句_MySQL复制表数据操作sql语句