电子实验综合设计文档格式.docx
《电子实验综合设计文档格式.docx》由会员分享,可在线阅读,更多相关《电子实验综合设计文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
计时电路执行时功能,计时的方法是对标准时钟脉冲计数。
由于计时范围是0秒到59分59.99秒,所以计数器可以由四个十进制计数器和两个六进制计数器构成,其中毫秒为,十毫秒位,秒位和分位采用十进制计数器,十秒位和十分位采用六进制计数器。
该部分电路由三个计数器构成,毫秒计数器,秒计数器及分计数器。
3.显示模块
计时显示电路的作用是将计时值在LED七段数码管上显示出来。
计时电路产生的计时值经过BCD七段译码后,驱动LED数码管。
计时显示电路的实现方案采用扫描显示,每次只驱动一位数码管,各位数据轮流驱动对应的数码管进行显示。
四、硬件电路的调试
写好程序后在试验板上利用ISE软件进行调试,调试步骤如下:
1、建立项目工程
建立新的项目工程,选择【File】,再选择【NewProject】,如图就可以了。
2、新文件的输入
【project】—【newsource】,如下图输入文件名。
3、程序语法检查:
点中源文件,
3,编入程序。
4、双击处理窗中的CheckSyntax。
查看报告窗,并对错误进行修改,再运行CheckSyntax,直到报告窗为Successfully。
5、管脚适配:
Sourcesfor设置为Synthesis..,选中要适配的文件,双击处理窗中的AssignPackagePinstripe,该操作会提示生成一个.ucf文件,选是。
对照IO口对应管脚把管脚分配好,并保存。
6、文件编程及文件下载实现:
退回源窗和处理窗,选中下载文件,云新处理窗GennerateProgrammingFile,生成.Bit下载文件,关闭产生的对话框XinlinxWebtalkDialog。
连接开发板,打开电源,点中下载源文件,双击处理窗中的ConfigureDevice。
选JTAG模式,点Finish。
配置窗口中选BIT下载文件,点Open,观点第三方存储下载文件窗口。
如下图:
点左边的下载标志,点击鼠标右键,运行Program
程序开始下载,直到出现ProgramSucceeded,观察开发板上所编文件的执行情况。
五,部分仿真波形
1.频率控制模块仿真波形图
2.十进制计数器模块仿真波形图
3.译码显示模块波形仿真图
六、对自行设计的产品总结与评价
采用常规电路设计数字秒表,所用的器件较多、连线比较复杂,而且存在延时较大、测量误差较大、可靠性低的缺点。
采用复杂可编程逻辑器件,以EDA工具为开发手段、运用VHDL语言编程进行数字频率计的设计,将在使系统大大简化的同时,提高仪器整体的性能和可靠性。
我们设计的用FPGA实现的6位数字秒表测频系统,能够用数码显示被测信号的频率。
我们采用VHDL语言编程,用QuartusII集成开发环境进行波形仿真、编译,并下载到FPGA中。
FPGA的功耗低、速度快。
经测试,该系统性能可靠、测量精确。
不过本系统还有以下几点缺陷:
1)不能自适应量程,实现自动转换功能。
2)测量的频率范围有限。
七、实习心得与体会
因为首次接触FPGA语言,所以做起来还是有点困难,期间和同学讨论学习很多,有些问题通过查阅相关书籍也得到了解决。
在设计过程中,首先要明确实验目的,弄清实验思路,把实验原理详细的表达出来,然后通过查阅资料取其中的几种设计方案,再根据实验要求和实验的实际可操作性定下最终的设计方案。
在设计过程中通过自主独立的发现问题,设计实验,操作,调查,搜索与处理信息等而获得知识,技能的发展。
特别是培养了探索精神和创新能力的发展的学习方式和学习过程。
这次课程设计的整个过程让我受益良多。
在实验过程中学会了对自己的实验进展,试验方法做自我监控,自我反馈和自我调节,在实验的最后学会了对自己的实验结果进行自我检查,自我总结,自我评价和自我补救。
对于在课程设计过程中碰到的一些问题,在自己一个人无法独立解决的时候可以通过查阅相关资料或请同学帮忙,在此过程中也培养了团队合作精神。
虽然设计过程不是一帆风顺,遇到了很多问题,但整个过程让我学到了很多平时没学到的知识。
通过这次设计更进一步的提高了我的思维能力,动手能力,增强了对电子专业学习的兴趣。
希望以此为起点,在以后的学习中能更积极的动脑动手,提高自己的综合能力,为以后的发展打下坚实的基础。
八、参考文献
[1].程源,祝洪峰.基于FPGA的数字频率计的设计与制作[J].电子制作,2008,(01):
34~36
[2].王凤英.基于FPGA的数字频率计设计与仿真[J].科技资讯,2008,(33):
19
[3].潘松,黄继业.EDA技术实用教程(第三版)[M].北京:
科学出版社,2008.
[4]陈尚志,胡荣强,胡合松.基于FPGA自适应数字频率计的设计[J].中国测试计术2007,(02):
141~144.
[5]王戎丞,陈可中,明鑫.基于VHDL的数字频率计的设计与实现[J].现代电子技术,2005,(15):
102~104.
附件:
程序清单
----------------------------------------------------------------------------------
--Company:
--Engineer:
--
--CreateDate:
16:
39:
3109/06/2011
--DesignName:
--ModuleName:
CLOCKmain-Behavioral
--ProjectName:
--TargetDevices:
--Toolversions:
--Description:
--
--Dependencies:
--Revision:
--Revision0.01-FileCreated
--AdditionalComments:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
----Uncommentthefollowinglibrarydeclarationifinstantiating
----anyXilinxprimitivesinthiscode.
--libraryUNISIM;
--useUNISIM.VComponents.all;
entityCLOCKmainis
Port(CLK:
inSTD_LOGIC;
RESET:
BEGIN_AND_STOP:
DISPLAY:
outSTD_LOGIC_VECTOR(7downto0);
CHO:
outSTD_LOGIC_VECTOR(2downto0);
enable:
outstd_logic);
endCLOCKmain;
architectureBehavioralofCLOCKmainis
componentcnt10
Port(clk:
reset:
instd_logic;
dat_out:
outSTD_LOGIC_VECTOR(3downto0);
C:
outstd_logic);
endcomponent;
componentcnt6
componentcnt8
Port(clks:
outSTD_LOGIC_VECTOR(2downto0));
componentdisp
Port(chos:
inSTD_LOGIC_VECTOR(2downto0);
input1:
inSTD_LOGIC_VECTOR(3downto0);
input2:
input3:
input4:
input5:
input6:
display:
outSTD_LOGIC_VECTOR(7downto0));
componentclock
enable:
instd_logic;
clks:
outSTD_LOGIC);
signalc1:
std_logic;
signalc2:
signalc3:
signalc4:
signalc5:
signalc6:
signaldisplay1:
std_logic_vector(3downto0);
signaldisplay2:
signaldisplay3:
signaldisplay4:
signaldisplay5:
signaldisplay6:
signaldisplay_temp:
std_logic_vector(7downto0);
signalclks:
signalcho_temp:
std_logic_vector(2downto0);
signalbegin_and_stop_temp:
begin
U0:
clockportmap(clk=>
CLK,enable=>
begin_and_stop_temp,clks=>
clks);
U1:
cnt10portmap(clk=>
clks,reset=>
reset,dat_out=>
display1,C=>
c1);
U2:
c1,reset=>
display2,C=>
c2);
U3:
c2,reset=>
display3,C=>
c3);
U4:
cnt6portmap(clk=>
c3,reset=>
display4,C=>
c4);
U5:
c4,reset=>
display5,C=>
c5);
U6:
c5,reset=>
display6,C=>
c6);
U7:
dispportmap(chos=>
cho_temp,input1=>
display1,input2=>
display2,input3=>
display3,input4=>
display4,input5=>
display5,input6=>
display6,display=>
display_temp);
U8:
cnt8portmap(clks=>
CLK,dat_out=>
CHO_temp);
enable<
='
0'
;
DISPLAY<
=display_temp;
CHO<
=cho_temp;
process(BEGIN_AND_STOP)
ifrising_edge(BEGIN_AND_STOP)then
begin_and_stop_temp<
=notbegin_and_stop;
endif;
endprocess;
endBehavioral;
15:
41:
4408/29/2011
clock-Behavioral
entityclockis
inSTD_LOGIC;
endclock;
architectureBehavioralofclockis
signaltemp:
integerrange0to500000;
signalcls:
process(clk)
begin
if(rising_edge(clk))andenable='
then
temp<
=temp+1;
iftemp=480000then
=0;
cls<
=notcls;
clks<
=cls;
14:
20:
0308/29/2011
cnt10-Behavioral
entitycnt6is
Port(clk:
endcnt6;
architectureBehavioralofcnt6is
signalcount_temp:
std_logic_vector(3downto0):
="
0000"
count:
process(clk,reset)
ifreset='
count_temp<
elsif(rising_edge(clk))then
count_temp<
=count_temp+1;
ifcount_temp="
0101"
then
count_temp<
C<
1'
else
endif;
dat_out<
=count_temp;
52:
0208/29/2011
cnt8-Behavioral
entitycnt8is
endcnt8;
architectureBehavioralofcnt8is
signaltemp:
std_logic_vector(2downto0);
process(clks)
if(rising_edge(clks))then
dat_out<
=temp;
--ProjectName