数字频率计的设计 中国计量学院现代科技学院.docx

上传人:b****8 文档编号:9124149 上传时间:2023-02-03 格式:DOCX 页数:16 大小:206.91KB
下载 相关 举报
数字频率计的设计 中国计量学院现代科技学院.docx_第1页
第1页 / 共16页
数字频率计的设计 中国计量学院现代科技学院.docx_第2页
第2页 / 共16页
数字频率计的设计 中国计量学院现代科技学院.docx_第3页
第3页 / 共16页
数字频率计的设计 中国计量学院现代科技学院.docx_第4页
第4页 / 共16页
数字频率计的设计 中国计量学院现代科技学院.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数字频率计的设计 中国计量学院现代科技学院.docx

《数字频率计的设计 中国计量学院现代科技学院.docx》由会员分享,可在线阅读,更多相关《数字频率计的设计 中国计量学院现代科技学院.docx(16页珍藏版)》请在冰豆网上搜索。

数字频率计的设计 中国计量学院现代科技学院.docx

数字频率计的设计中国计量学院现代科技学院

中国计量学院现代科技学院

课程设计报告

 

课程设计名称数字频率计的设计

 

系(部)信息工程系

专业班级通信102班

姓名

学号

指导老师

 

2013年06月23日

 

目录

 

前言…………………………………………………………………………

(2)

第一章设计要求……………………………………………………………(3)

1.技术要求………………………………………………………………(3)

2.技术要求………………………………………………………………(3)

第二章设计总方案……………………………………………………………(4)

1.设计软件:

QuartusII……………………………………………………(4)

2.数字频率计的实现原理及整机原理框图………………………………(4)

3.各模块电路的设计要求及功能仿真……………………………………(5)

第三章顶层电路及仿真………………………………………………………(10)

第四章心得体会………………………………………………………………(14)

第五章参考文献………………………………………………………………(15)

指导教师评语及成绩……………………………………………………………(16)

附件:

前言

 

数字频率计是采用数字电路制做成的能实现对周期性变化信号频率测量的仪器。

频率计主要用于测量正弦波、矩形波、三角波和尖脉冲等周期信号的频率值。

其扩展功能可以测量信号的周期和脉冲宽度。

通常说的,数字频率计是指电子计数式频率计。

测量频率的方法有很多,按照其工作原理分为无源测量法、比较法、示波器法和计数法等。

计数法在实质上属于比较法,其中最常用的方法是电子计数器法。

电子计数器是一种最常见、最基本的数字化测量仪器。

数字计数式频率计能直接计数单位时间内被测信号的脉冲数,然后以数字形式显示频率值。

这种方法测量精确度高、快速,适合不同频率、不同精确度测频的需要。

电子计数器测频有两种方式:

一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。

由于数字电路的飞速发展和集成电路的普及,计数器的应用十分广泛。

利用电子技术器测量频率具有精度高,显示醒目直观,测量迅速,以及便于实现测量过程自动化等一系列突出优点,所以该方法是目前最好的。

所谓频率,就是周期性信号在单位时间(1s)内变化的次数,若在一定时间间隔T内测得这个周期性信号的重复变化次数为N,则其频率可表示为f=N/T。

因此当系统正常工作时,标准时钟发生器提供的1Hz的输入信号,经过控制模块进行信号的变换,产生计数信号,被测信号送入计数模块,计数模块对输入的矩形波形进行计数,并且将计数结果送入锁存器中,保证系统可以稳定的显示数据,BCD4-7译码电路将二进制表示的计数结果转换成相应的能够在七段数码管显示的十进制结果,在数码管上可以可以看到计数结果。

第一章设计要求

技术要求:

1、频率测量范围:

1HZ——100000HZ

2、测量分辨率:

1HZ

3、测量通道灵敏度:

50mVpp

4、通道输入阻抗:

不小于120KΩ

5、测量误差:

±1

6、测量显示:

6位数码管

 

设计任务要求:

1、提交说明数字频率计的原理框图。

2、画出系统单元模块框图。

3、按技术要求编写程序。

4、设计出硬件实现的电路图。

5、实现系统功能仿真波形图和下载验证。

6、撰写课程设计报告。

 

第二章设计总方案

1、设计软件:

QuartusII

QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

MaxplusII是QuartusII的前身,Altera公司在不断的前进中,推出了功能更全的QuartusII,所以MaxplusII可能更简单些,但是最后还是需要学习QuartusII的,所以在这次的课程设计中我选择了QuartusII

2、数字频率计的实现原理及整机原理框图

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。

测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。

数字式频率计的测量原理有两类:

一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。

直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量。

本设计中使用的就是直接测频法,即用计数器在计算1s内输入信号周期的个数,其测频范围为1Hz~100000Hz。

图1整机原理框图

3、各模块电路的设计要求及功能仿真

3.1控制模块

控制模块的作用是产生测频所需要的各种控制信号。

该模块产生的三种控制信号分别为count_en、count_ctr和load。

其中Count_clr信号用于在每一次测量开始时,对计数模块进行复位,用以清楚上次测量的结果;在count_en信号的上升沿时刻,计数器开始宿输入信号的频率进行计数;而load则是将计数器所测量的数值锁存起来的锁存控制信号,并送至数码管显示。

其基本实现的代码如下所示:

modulefre_ctrl(clk,rst,count_en,count_clr,load);

inputclk,rst;outputcount_en,count_clr,load;regcount_en,load;

always@(posedgeclk)

beginif(rst)begincount_en<=0;load<=1;end

elsebegincount_en<=~count_en;

load<=count_en;

end

end

assigncount_clr=~clk&load;

endmodule

其控制信号的波形如下图所示:

图2控制模块的仿真波形

3.2计数模块

计数模块用于在单位时间中对输入信号的脉冲进行计数,该模块必须有计数允许、异步清零端口,以便控制模块对其进行控制,其基本的实现电路如左图所示:

从左图中我们可以看出。

en为计数的使能信号,高电平有效;clr为计数的异步清零信号,高电平有效;clk为外部输入的时钟信上升沿有效;cout便是进位输出,out为计数输出

我们根据计数模块的功能以及其实现电路,可以得到如下的设计语言:

modulecount(out,cout,en,clr,clk,over);

inputen,clr,clk;

output[5:

0]out;

outputcout,over;

reg[5:

0]out;

regover;

always@(posedgeclkorposedgeclr)

beginif(clr)

beginout<=0;over<=0;end

elseif(en)

begin

if(out==9)begin

out<=0;over<=1;end

elseout<=out+1;

end

end

assigncout=((out==9)&en)?

1:

0;

endmodule

 

其计数模块的波形如下图所示:

图3计数模块的仿真波形

3.3锁存模块

锁存器是必不可少的,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出。

其作用是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。

其基本的实现电路如左图所示:

 

实际上锁存器使用的是D触发器,即锁着时钟信号的到来,触发器的输入信号即刻送至输出端。

我们根据锁存模块的功能以及其实现电路,可以得到如下的设计语言:

modulelatch_6(q0,din,load);

inputload;

input[5:

0]din;

output[5:

0]q0;

reg[5:

0]q0;

always@(posedgeload)

beginq0=din;

end

endmodule

其锁存模块的波形如下图所示:

图4锁存模块的仿真波形

3.4显示模块

在这一模块中我们主要是运用BCD4-7译码进行显示。

其基本实现电路如下:

其实现电路的原理是随着输入信号的变换,数码管的七段显示译码被赋予不同的二进制的数值,以便显示不同的十进制数值。

根据其工作的原理,可以得到如下的代码:

moduleled_dong(w,q);

input[5:

0]q;

outputreg[6:

0]w;

always@(q)

begin

case(q)

4'd0:

w=7'b1111110;

4'd1:

w=7'b0110000;

4'd2:

w=7'b1101101;

4'd3:

w=7'b1111001;

4'd4:

w=7'b0110011;

4'd5:

w=7'b1011011;

4'd6:

w=7'b1011111;

4'd7:

w=7'b1110000;

4'd8:

w=7'b1111111;

4'd9:

w=7'b1111011;

default:

w=7'b1111110;

endcase

end

endmodule

其基本的仿真波形如下:

图5显示模块的仿真波形

 

第三章顶层电路及仿真

总体仿真

根据上面的各个模块的设计以及其实现电路,我们可以将各个模块综合起来,其基本的实现代码如下:

moduleaaa(clk,signal,q0,q1,q2,q3,q4,q5,w1,w2,w3,w4,w5,w6,rst);

inputclk,signal,rst;

output[5:

0]q0,q1,q2,q3,q4,q5;

output[5:

0]w1,w2,w3,w4,w5,w6;

wire[5:

0]w1,w2,w3,w4,w5,w6;

wire[5:

0]q0,q1,q2,q3,q4,q5;

wire[23:

0]din;

wirecout1,cout2,cout3,cout4,cout5,cout6,en,clr,load;

ctrctrl1(clk,rst,en,clr,load);

count10count101(din[3:

0],cout1,en,clr,signal);

count10count102(din[7:

4],cout2,en,clr,cout1);

count10count103(din[11:

8],cout3,en,clr,cout2);

count10count104(din[15:

12],cout4,en,clr,cout3);

count10count105(din[19:

16],cout5,en,clr,cout4);

count10count106(din[23:

20],cout6,en,clr,cout5);

latch_6latch_41(q0,din[3:

0],load);

latch_6latch_42(q1,din[7:

4],load);

latch_6latch_43(q2,din[11:

8],load);

latch_6latch_44(q3,din[15:

12],load);

latch_6latch_45(q4,din[19:

16],load);

latch_6latch_46(q5,din[23:

20],load);

led_dongled1(w1,q0);

led_dongled2(w2,q1);

led_dongled3(w3,q2);

led_dongled4(w4,q3);

led_dongled5(w5,q4);

led_dongled6(w6,q5);

endmodule

modulectr(clk,rst,count_en,count_clr,load);

inputclk,rst;

outputcount_en,count_clr,load;

regcount_en,load;

always@(posedgeclk)

beginif(rst)

begin

count_en=0;load=1;

end

elsebegin

count_en=~count_en;load=~count_en;

end

end

assigncount_clr=~clk&load;

endmodule

modulecount10(out,cout,en,clr,clk);

inputen,clr,clk;

output[5:

0]out;

outputcout;

reg[5:

0]out;

always@(posedgeclkorposedgeclr)

begin

if(clr)out<=0;

elseif(en)

begin

if(out==9)out<=0;

elseout<=out+1;

end

end

assigncout=((out==9)&en)?

1:

0;

endmodule

modulelatch_6(q0,din,load);

inputload;

input[5:

0]din;

output[6:

0]q0;

reg[5:

0]q0;

always@(posedgeload)

beginq0=din;

end

endmodule

moduleled_dong(w,q);

input[5:

0]q;

outputreg[5:

0]w;

always@(q)

begin

case(q)

6'd0:

w=7'b1111110;

6'd1:

w=7'b0110000;

6'd2:

w=7'b1101101;

6'd3:

w=7'b1111001;

6'd4:

w=7'b0110011;

6'd5:

w=7'b1011011;

6'd6:

w=7'b1011111;

6'd7:

w=7'b1110000;

6'd8:

w=7'b1111111;

6'd9:

w=7'b1111011;

default:

w=7'b1111110;

endcase

end

endmodule

根据仿真的代码,可以得到如下的仿真波形:

图6整机仿真波形

图7顶层电路图

上图显示的是6位数字频率计的顶层原理图,其中fre_ctrl为控制模块,count是计数模块、latch_6为锁存模块、led_dong为数码管的显示模块。

而signal为我们的待测信号,clk为我们输入的基准时钟信号,q0为输入到数码管的频率值

第四章

注意事项

虽然用的是现代逻辑的知识,编写的程序是VerilogHDL语言实现的,但是在我们在选择软件的时候要注意下,不要在做到一半的时候去更换软件,这样往往是很费时间的,还有一个,在代码编写的过程中往往不能很快发现错误的地方,这个时候我们就要仔细的观察,或者找同伴交流。

刚开始的时候我打代码元器件不能生成,最后查阅各种资料终于找到了些技巧。

还有一点,当编译出现错误的时候,我们要快速找出问题的位置,英语水平也非常重要。

心得体会

经历了这三周的“系统仿真”课程设计以及调试检测,掌握和了解了数字频率计的基本设计方法和设计原理,对现代逻辑也有了进一步的深刻认识。

原理图的设计并不能很死板,不能仅用参考书上已有的原理来设计,参考上设计的是用4位数码管来显示的,我们的要求是用6位数码管来显示的,所以还要改动很多东西。

想想虽然很简单,但是还是需要考虑到应用时的很多因素。

我在编写代码和连接原件的过程中遇到了一些难以去克服的困难,我通过请教身边的同学和相关老师,研究整个数字频率计的每一个细节。

我终于用努力换来了仿真的成功设计。

并取得了不错的效果。

我认为我们不仅要学习好专业知识,更重要的是能将这些知识应用到实际中去,学以致用,积累经验,掌握应有的专业技能。

每个成功的背后都要面对无数次的失败,这次课程设计也不例外。

虽然遇到不少问题与困难,但通过老师以及同学的帮助,都一一得到顺利地解决。

我想这必定会为将来的实践积累宝贵的经验和教训。

总之,这次课程设计我们都受益匪浅。

整个过程氛围浓厚,本人也态度十分认真,积极向老师和同学求教并在此过程中收获良多,能够进一步了解和使用一门与硬件直接打交道的基本语言对我们将来的学习和工作都会十分有益。

最后我要感谢所有此次课程设计给予我帮助的同学和老师。

第五章参考文献

数字系统设计与VerilogHDL(第四版)/王金明编著.---4版.---北京:

电子工业出版社,2011.1

潘松,黄继业.EDA技术使用教程(第3版).北京:

科学出版社,2006

王小军主编.《VHDL简明教程》.清华大学出版社,1997

甘历主编.《VHDL应用于开发实践》科学出版社,2003

刘爱荣主编.《EDA技术与CPLD/FPGA开发应用简明教程》.清华大学出版社,2007

XX文库:

XX文库:

附录A:

指导教师评语及成绩

指导教师评语:

 

成绩评定:

指导教师:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1