北华航天工业学院
《EDA技术综合设计》课程设计报告报告题目:作者所在系部:作者所在专业:作者所在班级:作者姓名:指导教师姓名:完成时间:
数字秒表设计电子工程系自动化B08221胡舟崔瑞雪2010/12/2
内容摘要
随着科技发展,在现代生活中,计数器应用越来越广泛。EDA技术的应用引起电子产品即系统开发的性变革,在MAX+PLUS2环境下采用VHDL语言实现,论述了基于VHDL语言在FPGA芯片的数字设计思想与实现过程。先介绍以VHDL为基础的数字秒表。在数字秒表的程序中用了四个10进制计数器,和两个6进制计数器,以及报警器、选择器和显示译码器。
电子设计自动化技术EDA的发展给电子系统的设计带来了性变化,EDA软件设计工具,硬件描述语言,可编程逻辑器件(PLD)使得EDA技术的应用走向普及。VHDL语言是EDA的关键技术之一,它采用自顶向下的设计方法,完成系统的整体设计。
字体、格式及你的方案论证在哪?
关键词
EDA、选择器、计数器、显示译码器
目
一、.概述
录
....................................................................................................1
二、一小时数字秒表系统的实现.....................................................................1
1功能描述.......................................................................................12模块结构.......................................................................................13设计及功能...................................................................................14将各模块整合,组成完整的数字秒表程序................................................5
三、程序下载与实现..........................................................................................5
1仿真结果..........................................................................................52下载...............................................................................................53硬件测试........................................................................................5
四、心得体会....................................................................................................................................6课程设计任务书
课题名称指导教师崔瑞雪职称数字秒表设计副教授学生姓名胡舟完成时间班级2010/12/2B08221总体设计要求和技术要点一、设计要求:秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、十秒、分、十分,所以共有6个计数器与之相对应,6个计数器的输出全都为BCD码输出,这样便于和显示译码器的连接。当计时达60分钟后,蜂鸣器鸣响10声。除此之外,整个秒表还需有一个启动信号和一个归零信号,以便秒表能随意停止及启动。秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器、六进制计数器和报警器组成。在整个秒表中最关键的是如何获得一个精确的100HZ计时脉冲。二、硬件要求:主芯片EPF10K10LC84-4。6位八段扫描共阴级数码显示管。。二个按键开关(归零,启动)工作内容及时间进度安排1)2)做出概括的总框架,作出具体的课设安排。11月18号根据要求分成几个模块,分别用VHDL语言进行程序的编写,然后编译,仿真,实现功能并进行修改。11月20号3)4)5)将设计出来的模块进行组合,编译仿真,实现功能并进行修改。11月23号对硬件进行学习,并进行软硬件的结合。11月29号实验成果验收。11月30号课程设计成果1.学会使用MAX+PLUS2软件。
2.学会用VHDL语言写程序。3.设计成功一个符合要求的数字秒表。4.写课程设计报告。一概述EDA是很实用的仿真技术,使用简单,有很强的可读性和操作性。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动的完成编译,仿真,直至对特定芯片进行程序下载等工作。EDA技术的出现,极大提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。本次设计就是用EDA技术来设计一个一小时的数字秒表。
二一小时数字秒表系统的实现1功能描述
当复位信号为1时,计数器全部清零,当复位信号为0,并且START信号为1时,开始计数。然后,计数一个小时的时候,响铃开始响,铃声响十下结束。2模块结构
四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;
两个6进制计数器:用来分别对十秒和十分进行计数;选择器:用来产生对应输出每个计数器计算结果;显示译码器:完成对显示的控制;报警器:用来完成一小时的十声响铃。3设计及功能
1)10进制计数器的编译语言如下:
libraryieee;
useieee.std_logic_11.all;useieee.std_logic_unsigned.all;entitycount10is
port(clk,start,clr:instd_logic;
cout:outstd_logic;
daout:outstd_logic_vector(3downto0));
endcount10;
architectureoneofcount10is
signalq0:std_logic_vector(3downto0);signalq1:std_logic;begin
process(clk,clr)begin
ifclr='1'thenq0<=\"0000\";elsifclk'eventandclk='1'thenifstart='1'thenifq0=\"1001\"then
q0<=\"0000\";
1q1<='1';
elseq0<=q0+1;
q1<='0';endif;endif;endif;endprocess;daout<=q0;cout<=q1;endone;
2)6进制计数器的编译语言如下:
libraryieee;
useieee.std_logic_11.all;useieee.std_logic_unsigned.all;entitycount10is
port(clk,start,clr:instd_logic;
cout:outstd_logic;
daout:outstd_logic_vector(3downto0));
endcount10;
architectureoneofcount10is
signalq0:std_logic_vector(3downto0);signalq1:std_logic;begin
process(clk,clr)begin
ifclr='1'thenq0<=\"0000\";elsifclk'eventandclk='1'thenifstart='1'thenifq0=\"0101\"then
q0<=\"0000\";q1<='1';
elseq0<=q0+1;
q1<='0';endif;endif;endif;endprocess;daout<=q0;cout<=q1;endone;
3)选择器的编译语言如下:
libraryieee;
useieee.std_logic_11.all;
2useieee.std_logic_unsigned.all;entityseltimeisport(
clk:instd_logic;clr:instd_logic;
dain0:instd_logic_vector(3downto0);dain1:instd_logic_vector(3downto0);dain2:instd_logic_vector(3downto0);dain3:instd_logic_vector(3downto0);dain4:instd_logic_vector(3downto0);dain5:instd_logic_vector(3downto0);
y:bufferstd_logic_vector(3downto0);sel:bufferstd_logic_vector(2downto0));endseltime;
architecturethreeofseltimeis
signalm:std_logic_vector(2downto0);signaln:std_logic_vector(3downto0);begin
n<=\"0000\"whenclr='1'elsedain0whenm=\"000\"elsedain1whenm=\"001\"elsedain2whenm=\"010\"elsedain3whenm=\"011\"elsedain4whenm=\"100\"elsedain5;
process(clr,clk,dain0,dain1,dain2,dain3,dain4,dain5)begin
ifclk'eventandclk='1'thenifm=\"101\"thenm<=\"000\";elsem<=m+1;endif;endif;sel<=m;endprocess;y<=n;endthree;
4)显示译码器的汇编语言如下:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_11.ALL;ENTITYDELEDIS
PORT(num:INSTD_LOGIC_VECTOR(3DOWNTO0);
LED:OUTSTD_LOGIC_VECTOR(6DOWNTO0));ENDDELED;
3ARCHITECTUREFIVEOFDELEDISBEGIN
PROCESS(NUM)BEGIN
CASENUMIS
WHEN\"0000\"=>LED<=\"1111110\";WHEN\"0001\"=>LED<=\"0110000\";WHEN\"0010\"=>LED<=\"1101101\";WHEN\"0011\"=>LED<=\"1111001\";WHEN\"0100\"=>LED<=\"0110011\";WHEN\"0101\"=>LED<=\"1011011\";WHEN\"0110\"=>LED<=\"1011111\";WHEN\"0111\"=>LED<=\"1110000\";WHEN\"1000\"=>LED<=\"1111111\";WHEN\"1001\"=>LED<=\"1111011\";WHENOTHERS=>LED<=\"0000000\";ENDCASE;ENDPROCESS;ENDFIVE;
5)报警器的汇编语言如下:
libraryieee;
useieee.std_logic_11.all;useieee.std_logic_unsigned.all;entityalarm_3is
port(clk,clr,I:instd_logic;
qer:bufferstd_logic_vector(4downto0);q:outstd_logic);endalarm_3;
architecturefourofalarm_3isbegin
process(clk,clr,I)begin
ifclr='1'thenqer<=\"00000\";elsif(clk'eventandclk='1')thenif(I='1')then
if(qer=\"10100\")thenNULL;elseqer<=qer+1;endif;endif;endif;endprocess;q<=qer(0);endfour;
44将各模块整合,组成完整的数字秒表程序如下:
三程序下载与实现1仿真结果2下载
以上的仿真正确无误,则可以将设计编程下载到选定的目标器件中做进一步的硬件测试,以便最终了解设计的正确性。
53硬件测试
经检查没有错误后下载成功在实验箱中连线成功后室验箱中的LED数码显示器中正确的显示计数。
四心得体会通过这次实验让我学会了许许多多的东西,比如:在电脑上仿真时通过了,但是,在硬件上去弄的时候,它就会出现好多好多的错误,这样我们就能通过改错来学习好多平常学不到的东西。通过编写程序并结合老师课上讲的内容,我对EDA的应用更加熟悉,并且增强了自己的动手能力。
还让我们掌握了如何利用我们学习的知识运用到实际。
6评语指导教师评语及设计成绩
课程设计成绩:
指导教师:
日期:年月日
78