共8条
1/1 1 跳转至页
等精度频率计

等精度测频,很多人都做过,但大部分都是和单片机搭配,或者在FPGA里面放了个51的核,这样浪费了很多资源(尤其是在FPGA里面植入51核的),本人觉得,这些完全可以就用FPGA解决,而且占用的资源很少,FPGA可以完成单片机所有的功能,大部分人是用单片机做闸门选取信号,和人机交互接口的(这里只是显示)。但这中间就要多涉及了一个单片机和FPGA的通讯问题,而且单片机的闸门选择都是手动的,精度也不够高,中间还有信号之间的传输引起的延时问题(当闸门信号比较短时),导致频率测量不准等。
小弟的想法是,用(0.1s,1s,10s)的闸门,通过粗测输入信号的频率,然后来自动选择闸门的宽度,然后发出使能信号,来终止和启动计数器的计数,在通过一个数据计算模块,处理计数值,将其转换成液晶(12864)能显示的格式,在最后用一个数据缓冲模块,来搭配高速的FPGA和要求低速的液晶。这里硬件电路是我的搭档做好了的,要求芯片性能和电路设计的不错,因为测量频率范围是0.1Hz~100MHz(可以用PLL倍频吧,就更高了,呵呵)。我用的是原理图做顶层模块,然后细化每个模块,搭配好他们之间的连接线及信号使能,原理图的方式比例化模块直观明了一些,下面贴出部分代码。
12864液晶显示模块
module lcd(clk,rs,rw,en,data,cnt_fre);//液晶显示子模块
input clk;
output rs,rw,en;
output[7:0] data;
reg[7:0] data;
reg[7:0] current,next;
reg[13:0] count;
reg clkr;
reg rs,e;
input[71:0] cnt_fre;
reg[71:0] var_data;
parameter set0=8'h0; //定义了很多状态机
parameter set1=8'h1;
parameter set2=8'h2;
parameter set3=8'h3;
parameter set4=8'h4;
parameter set5=8'h5;
parameter set6=8'h6;
parameter data0=8'h7;
parameter data1=8'h8;
parameter data2=8'h9;
parameter data3=8'hA;
//from "datav" to "data14"
parameter data4=8'h18;
parameter data5=8'h19;
parameter data6=8'h1A;
parameter data7=8'h1B;
parameter data8=8'h1C;
parameter data9=8'h1D;
parameter data10=8'h1E;
parameter data11=8'h1F;
parameter data12=8'h20;
parameter data13=8'h21;
parameter data14=8'h22;
parameter dataK=8'h23;
parameter dataM=8'h24;
parameter datav=8'h25;
parameter nul=8'h26;
always @(posedge clk)
begin
count[13:0]
关键词: 精度 频率计 parameter


共8条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
汽车+汽车地线之间连接处理被打赏20分 | |
【Zephyr】使用Zephyr外设初始化过程解析被打赏30分 | |
【S32K146】S32DS watchdog 配置使用被打赏20分 | |
【Zephyr】使用 IAR 调试 Zephyr 镜像被打赏20分 | |
赚取电动螺丝刀+电源电路理论知识分享1被打赏5分 | |
我想要一部加热台+分享常见运算放大器电路的应用被打赏5分 | |
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
我想要一部加热台+常见的MOS管驱动电路被打赏5分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下串口调试printf输出记录被打赏29分 |