共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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |