EDA简易数字频率计设计Word下载.docx
- 文档编号:8639681
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:9
- 大小:83.75KB
EDA简易数字频率计设计Word下载.docx
《EDA简易数字频率计设计Word下载.docx》由会员分享,可在线阅读,更多相关《EDA简易数字频率计设计Word下载.docx(9页珍藏版)》请在冰点文库上搜索。
0]<
9)q[3:
0]=q[3:
0]+1;
elsebeginq[3:
0]=0;
if(q[7:
4]<
9)q[7:
4]=q[7:
4]+1;
elsebeginq[7:
4]=0;
if(q[11:
8]<
9)q[11:
8]=q[11:
8]+1;
elsebeginq[11:
8]=0;
if(q[15:
12]<
9)q[15:
12]=q[15:
12]+1;
elsebeginq[15:
12]=0;
if(q[19:
16]<
9)q[19:
16]=q[19:
16]+1;
elsebeginq[19:
16]=0;
if(q[23:
20]<
9)q[23:
20]=q[23:
20]+1;
elsebeginq[23:
20]=0;
if(q[27:
24]<
9)q[27:
24]=q[27:
24]+1;
elsebeginq[27:
24]=0;
if(q[31:
28]<
9)q[31:
28]=q[31:
28]+1;
elseq[31:
28]=0;
end
end
endmodule
方法一仿真波形如下所示:
方法二:
modulemy_(clk,clr,q);
reg[31:
always@(posedgeclkornegedgeclr)
elseif(q[3:
elseif(q[7:
9)beginq[7:
q[3:
end
elseif(q[11:
9)beginq[11:
q[7:
elseif(q[15:
9)beginq[15:
q[11:
elseif(q[19:
9)beginq[19:
q[15:
elseif(q[23:
9)beginq[23:
q[19:
elseif(q[27:
9)beginq[27:
q[23:
elseif(q[31:
9)beginq[31:
q[27:
elseq[31:
endmodule
方法二仿真波形如下所示:
对比发现,方法二的程序显得更简单一些,但实际给出一样的仿真时间的时候,方法二的编译比方法一的时间要长的多,而且方法一的思想显得很清晰,很容易理解一些,总体思想就是,如果相邻低位小于9,则低位在每个时钟的上升沿进行加1,而高位不变;
反之,低位清0,高位加1.
2)分频器
24MHz分频为400Hz模块:
modulezhuan24m_400hz(clk24m,clko);
inputclk24m;
outputclko;
regclko;
reg[15:
0]count;
always@(posedgeclk24m)
if(count==60000)begincount=0;
clko=1;
elsebegincount=count+1;
clko=0;
400Hz分频为1Hz模块:
modulezhuan400_1hz(clk400,clko);
inputclk400;
always@(posedgeclk400)
if(count==400)begincount=0;
3)寄存器buffer模块
modulebuffer(qo,din,load);
input[31:
0]din;
inputload;
output[31:
0]qo;
always@(posedgeload)
beginqo=din;
end
该模块的作用就是锁存每次计数器送过来的数据,只在时钟的上升沿将数据送到8选一数据选择器,然后再通过译码器进行输出。
4)8选一数据选择器模块:
modulemux_8(m,sel,out);
input[2:
0]sel;
input[31:
0]m;
output[3:
0]out;
wire[3:
assignout=(sel==0)?
m[3:
0]:
(sel==1)?
m[7:
4]:
(sel==2)?
m[11:
8]:
(sel==3)?
m[15:
12]:
(sel==4)?
m[19:
16]:
(sel==5)?
m[23:
20]:
(sel==6)?
m[27:
24]:
m[31:
28];
该8选一数据选择器的功能就是将输进来的数据Q按比特由高到底每4位送个一个数码管,数码管也是由高到底进行显示的
5)译码模块:
moduledeled(in,a,b,c,d,e,f,g,dp);
input[3:
0]in;
outputa,b,c,d,e,f,g,dp;
wirea,b,c,d,e,f,g,dp;
assign{dp,a,b,c,d,e,f,g}=
(in==4'
b0000)?
8'
b01111110:
(in==4'
b0001)?
b00110000:
b0010)?
b01101101:
b0011)?
b01111001:
b0100)?
b00110011:
b0101)?
b01011011:
b0110)?
b01011111:
b0111)?
b01110000:
b1000)?
b01111111:
b1001)?
b01111011:
b00000000;
Endmodule
6)扫描模块:
modulescan(clr,clk,q);
output[2:
reg[2:
begin
if(!
elseq=q+1;
7)消零模块
modulemyq_p(q,p);
input[31:
0]p;
always@
(1)
28]==0)beginp[31:
28]=4'
b1111;
if(q[27:
24]==0)beginp[27:
24]=4'
20]==0)beginp[23:
20]=4'
16]==0)beginp[19:
16]=4'
if(q[15:
12]==0)beginp[15:
12]=4'
if(q[11:
8]==0)beginp[11:
8]=4'
if(q[7:
4]==0)beginp[7:
4]=4'
if(q[3:
0]==0)p[3:
0]=4'
elsep[3:
0];
end
elsep[7:
0]=q[7:
end
elsep[11:
0]=q[11:
elsep[15:
0]=q[15:
end
elsep[19:
0]=q[19:
end
elsep[23:
0]=q[23:
end
elsep[27:
0]=q[27:
end
elsep=q;
该程序是从高位到低位依次进行判断,凡是高位的0都把它灭掉,数据中间的0和尾部的0都照常显示。
四.结果分析
本实验所设计的简易数字频率计只能测量大于1Hz的方波信号,小于1的只能按1或0显示,这个频率计在测量达到十万Hz以上是会有20~30Hz的误差,而且只能测量方波,对于需要测量其它的波(如正弦波,三角波等)已不能满足,所以我们还有更多的功能有待改进。
五.经验总结
我们需要对一些常见的测量仪器的一些简单的、基本的原理掌握清楚,然后根据我们已经学习的VerilogHDL语言把它描述出来才是我们的能力,从这次实验当中,我觉得我们首先需要的是一种把所做的实验的原理框图转变成我们的verilog语言,然后需要的一种能力就是把我们想到的问题画成一张原理框图,之后根据这个原理框图设计出我们的作品,只有熟练地做到这两步,我们才能创造出一些属于我们自己的东西。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 简易 数字频率计 设计