数字频率计EDA项目的设计报告材料.docx
- 文档编号:8827731
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:14
- 大小:91.33KB
数字频率计EDA项目的设计报告材料.docx
《数字频率计EDA项目的设计报告材料.docx》由会员分享,可在线阅读,更多相关《数字频率计EDA项目的设计报告材料.docx(14页珍藏版)》请在冰豆网上搜索。
数字频率计EDA项目的设计报告材料
项目设计报告
数字频率计设计
课程名称EDA技术与项目训练
任课教师XXX
设计题目数字频率计设计
班级XXXX
组别XXX
成员XX
XX
日期2011-12-26
1.任务与要求·································2
§1.1数字频率计分类·························2
§1.2优点及用途····························2
§1.3实验任务······························2
§1.4设计要求·····························2
二、设计方案··································3--4
§2.1方案设计······························3
§2.2工作原理······························3
§2.3数字频率计原理框图····················4
§2.4用软件MAX+plusⅡ设计频率计的原理图····4
3、各模块源程序······························4--11
四、编程结果与分析·····························11
§4.1编程下载·····························11
§4.2硬件测试·····························11
§4.3实验结果·····························12
五、设计小结·································12-12
一、任务与要求
§1.1数字频率计分类
国际上数字频率计的分类很多。
按功能分类,因计数式频率计的测量功能很多,用途很广。
所以根据仪器具有的功能,电子计数器有通用和专用之分。
(1)通用型计数器:
是一种具有多种测量功能、多种用途的万能计数器。
它可测量频率、周期、多周期平均值、时间间隔、累加计数、计时等;若配上相应插件,就可测相位、电压、电流、功率、电阻等电量;配上适当的传感器,还可进行长度、重量、压力、温度、速度等非电量的测量。
(2)专用计数器:
指专门用来测量某种单一功能的计数器。
如频率计数器,只能专门用来测量高频和微波频率;时间计数器,是以测量时间为基础的计数器,其测时分辨力和准确度很高,可达ns数量级;特种计数器,它具有特种功能,如可逆计数器、予置计数器、差值计数器、倒数计数器等,用于工业和白控技术等方面。
数字频率计按频段分类
(1)低速计数器:
最高计数频率<10MHz;
(2)中速计数器:
最高计数频率10—100MHz; (3)高速计数器:
最高计数频率>100MHz; (4)微波频率计数器:
测频范围1—80GHz或更高。
§1.2优点及用途
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字,显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。
§1.3实验任务
掌握数字频率计电路的设计原理,并能够在实际生活中正确应用;
学会在MAX+plusⅡ软件环境中仿真;
锻炼自己独立解决问题的能力,学会有效获取有用信息。
§1.4设计要求
1.输入为矩形脉冲,频率范围0-99MHz;
2.用五位数码管显示;只显示最后的结果,不要将计数过程显示出来;
3.单位为Hz和KHz两档,自动切换。
二、设计方案
§2.1方案设计
目标:
.输入为矩形脉冲,频率范围0-99MHz;
利用Quartus软件平台上建立计数器电路的顶层电路文件并完成编译和仿真。
实施计划:
1)在quartusⅡ软件上设计出4个模块并完成各功能模块的编译仿真。
2)在软件中用原理图方式把各功能模块连接成一个整体系统,并对其进行编译和功能仿真。
3)整体系统仿真成功后,对其分配引脚。
4)下载程序,在试验箱上观察数码管变化。
§2.2工作原理
众所周知,频率信号易于传输,抗干扰性强,可以获得较好的测量精度。
因此,频率检测是电子测量领域最基本的测量之一。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数。
频率计的基本原理是用一个频率稳定度高的频率源作为基准时钟,对比测量其他信号的频率。
通常情况下计算每秒内待测信号的脉冲个数。
数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。
如配以适当的传感器,可以对多种物理量进行测试,比如机械振动的频率,转速,声音的频率以及产品的计件等等。
因此,数字频率计是一种应用很广泛的仪器。
§2.3数字频率计原理框图
§2.4用软件MAX+plusⅡ设计频率计的原理图
三、各模块源程序
1、7段-BCD显示译码器
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitybcd7is
port(a:
instd_logic_vector(3downto0);
led:
outstd_logic_vector(6downto0)
);
endbcd7;
architecturebhvofbcd7is
begin
process(a)
begin
caseais
--Pgfedcba
when"0000"=>led<="0111111";
when"0001"=>led<="0000110";
when"0010"=>led<="1011011";
when"0011"=>led<="1001111";
when"0100"=>led<="1100110";
when"0101"=>led<="1101101";
when"0110"=>led<="1111101";
when"0111"=>led<="0000111";
when"1000"=>led<="1111111";
when"1001"=>led<="1101111";
when"1010"=>led<="1110111";
when"1011"=>led<="1111100";
when"1100"=>led<="0111001";
when"1101"=>led<="1011110";
when"1110"=>led<="1111001";
when"1111"=>led<="1110001";
whenothers=>led<="0000000";
endcase;
endprocess;
endbhv;
2、8选一模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitymux81is
port(
cin:
instd_logic;
dip1,dip2,dip3,dip4:
instd_logic_vector(3downto0);
dip5,dip6,dip7,dip8:
instd_logic_vector(3downto0);
clk:
instd_logic;
sel:
outstd_logic_vector(2downto0);
output:
outstd_logic_vector(3downto0)
);
end;
architecturechooseofmux81is
signaltemp:
std_logic_vector(2downto0);
begin
process(clk)
begin
ifrising_edge(clk)then
iftemp=5then
temp<="000";
else
temp<=temp+1;
endif;
endif;
sel<=temp;
endprocess;
process(temp)
begin
--------------未超过五位-------
ifcin='0'then
casetempis
when"000"=>output<="1111";
when"001"=>output<=dip1;
when"010"=>output<=dip2;
when"011"=>output<=dip3;
when"100"=>output<=dip4;
whenothers=>output<=dip5;
endcase;
-------------超过五位-----------
else
casetempis
when"000"=>output<="1110";
when"001"=>output<=dip4;
when"010"=>output<=dip5;
when"011"=>output<=dip6;
when"100"=>output<=dip7;
whenothers=>output<=dip8;
endcase;
endif;
endprocess;
end;
3、转换模块
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityswitchis
port(
en:
instd_logic;
clk:
instd_logic;
clktest:
instd_logic;
clkout:
outstd_logic;
rst:
outstd_logic;
en_dip:
outstd_logic
);
end;
architecturechooseofswitchis
signalclk1:
std_logic;
signalcounter:
std_logic_vector(8downto0);
signalcount:
std_logic_vector(2downto0);
begin
-----------分频器----------
process(clk)
begin
if(rising_edge(clk))then
ifcounter=499then
clk1<=notclk1;
counter<=(others=>'0');
else
counter<=counter+1;
endif;
endif;
endprocess;
-----------一秒的时钟信号------
process(clk1)
begin
ifrising_edge(clk1)then
ifcount=5then
count<="000";
else
count<=count+1;
endif;
endif;
endprocess;
-------------状态相应--------
process(count)
begin
ifen='1'then
rst<='1';
en_dip<='1';
clkout<='0';
else
casecountis
when"000"=>
rst<='0';
en_dip<='0';
clkout<='0';
when"001"=>
rst<='1';
clkout<=clktest;
when"010"=>
clkout<='0';
en_dip<='1';
whenothers=>
null;
endcase;
endif;
endprocess;
end;
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityfyis
port(
clk:
instd_logic;
rst:
instd_logic;
en_dip:
instd_logic;
cout:
outstd_logic;
dip1,dip2,dip3,dip4:
outstd_logic_vector(3downto0);
dip5,dip6,dip7,dip8:
outstd_logic_vector(3downto0)
);
endfy;
architecturebehaveoffyis
signaltemp1,temp2,temp3,temp4:
std_logic_vector(3downto0);
signaltemp5,temp6,temp7,temp8:
std_logic_vector(3downto0);
begin
-----------计数----------------
process(clk)
variablecount1,count2,count3:
integerrange0to15;
variablecount4,count5,count6:
integerrange0to15;
variablecount7,count8:
integerrange0to15;
begin
ifrst='0'then
count1:
=0;
count2:
=0;
count3:
=0;
count4:
=0;
count5:
=0;
count6:
=0;
count7:
=0;
cout<='0';
elsifrising_edge(clk)then
ifcount1=9then
count1:
=15;
ifcount2=9then
count2:
=15;
ifcount3=9then
count3:
=15;
ifcount4=9then
count4:
=15;
ifcount5=9then
count5:
=15;
ifcount6=9then
count6:
=15;
ifcount7=9then
count7:
=15;
count8:
=count8+1;
endif;
count7:
=count7+1;
endif;
count6:
=count6+1;
cout<='1';
endif;
count5:
=count5+1;
endif;
count4:
=count4+1;
endif;
count3:
=count3+1;
endif;
count2:
=count2+1;
endif;
count1:
=count1+1;
endif;
ifen_dip='1'then
temp1<=conv_std_logic_vector(count1,4);
temp2<=conv_std_logic_vector(count2,4);
temp3<=conv_std_logic_vector(count3,4);
temp4<=conv_std_logic_vector(count4,4);
temp5<=conv_std_logic_vector(count5,4);
temp6<=conv_std_logic_vector(count6,4);
temp7<=conv_std_logic_vector(count7,4);
temp8<=conv_std_logic_vector(count8,4);
dip1<=temp1;
dip2<=temp2;
dip3<=temp3;
dip4<=temp4;
dip5<=temp5;
dip6<=temp6;
dip7<=temp7;
dip8<=temp8;
else
temp1<=temp1;
temp2<=temp2;
temp3<=temp3;
temp4<=temp4;
temp5<=temp5;
temp6<=temp6;
temp7<=temp7;
temp8<=temp8;
dip1<=temp1;
dip2<=temp2;
dip3<=temp3;
dip4<=temp4;
dip5<=temp5;
dip6<=temp6;
dip7<=temp7;
dip8<=temp8;
endif;
endprocess;
endbehave;
四、编程结果与分析
§4.1编程下载
以上的仿真正确无误后,则可以将设计编程下载到选定的目标器件中做进一步的硬件测试,以便最终了解设计的正确性。
一)、为了进行进一步的验证,需要进行下载和硬件测试,因此必须根据EDA实验板的要求对设计项目的输入和输出管脚赋予确定的引脚号,以便能够对其进行实测。
点击Assign菜单,选择其中的Pin/Location/Chip项进入管脚锁定界面
(二)将实验板接好,连接电源,设置下载方式界面
(三)、本实验是向实验板上下载。
以上步骤完成后,单击Program,即能进行下载。
下载成功后,即可进行下一步的硬件测试。
§4.2硬件测试
在面包板上按照管脚锁定插上八个七段数码管,并于实验板上相应的管脚相连接,实验板插电后,给输入端加入被测信号和使能控制信号,就可以进行硬件测试了。
该数字秒表变化范围为1---99999999Hz。
其中F_IN为被测频率输入端、CLR为清零端,它们使数字秒表具有暂停和清零功能,CLK为基准频率输入端.
通过对上面一组已知频率的信号进行测试,结果表明该频率计能准确地测出输入信号的频率并正确表示,精确度为100%。
当进行下次测量是上次的测量结果会自动清零,与课程设计预先目的一致.
§4.3实验结果
将引脚锁定好的程序下载到EDA实验箱中,接入不同频率的信号波,数码显示管会显示出所接入信号波的频率…
五、设计小结
§EDA设计中程序调试最为重要,我们在编完各模块程序之后,编译查错最初有很多错误,有输入错误,通过反复的修改最终通过了编译。
§懂得了数字频率计是一种应用很广泛的仪器。
§通过这个程序设计让我学会一种新的语言,对数字系统结构也有了更进一步的了解和认识,对我以后的学习有很大的帮助。
§一个人的力量毕竟有限,但是团队的力量势不可挡,我们不能只靠自己,遇到不会的要多多求助同学。
§实验的完成,与老师的热心指导是分不开的,最后十分感谢唐龙老师的认真负责的指导,让我们受益匪浅!
§下一刻,了解数字频率计的特征,灵活运用EDA语言,更好的为生活服务。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字频率计 EDA 项目 设计 报告 材料
![提示](https://static.bdocx.com/images/bang_tan.gif)