EDA课程设计.docx
- 文档编号:6356272
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:12
- 大小:43.37KB
EDA课程设计.docx
《EDA课程设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
EDA课程设计
东北石油大学
课程设计
课程EDA技术课程设计
题目出租车自动计费系统
院系电子科学学院
专业班级电子信息工程
学生姓名盛建宇
学生学号080901140429
指导教师
2012年3月2日
东北石油大学课程设计任务书
课程EDA技术课程设计
题目出租车自动计费系统
专业电子信息工程姓名盛建宇学号080901140429
主要内容、基本要求、主要参考资料等
主要内容:
设计一个最大量程为99.99元的出租车自动计费,计费器具有行车里程计费、等候时间计费及起价三部分功能,并用数码管显示车费的数目。
基本要求:
1、设计一个出租车自动计费器,具有行车里程计费、等候时间计费、及起价三部分,用四位数码管显示总金额,最大值为99.99元;
2、行车里程单价1元/公里,等候时间单价0.5元/10分钟,起价3元(3公里起价)均能通过人工输入。
3、行车里程的计费电路将汽车行驶的里程数转换成与之成正比的脉冲数,然后由计数译码电路转换成收费金额,实验中以一个脉冲模拟汽车前进十米,则每100个脉冲表示1公里,然后用BCD码比例乘法器将里程脉冲乘以每公里单价的比例系数,比例系数可由开关预置。
例如单价是1.0元/公里,则脉冲当量为0.01元/脉冲。
4、用LED显示行驶公里数,两个数码管显示收费金额。
主要参考资料:
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
完成期限2012.3.2
指导教师
专业负责人
2012年2月27日
一、总体设计思想
1.基本原理
用CPLD做出租车计费,器层次化设计根据理论,该设计问题自顶向下可分为分频模块、控制模块、计量模块、译码动态扫描显示模块,其系统框图如图所示。
各部分主要功能包括:
信号输入模块对车轮传感器传送的脉冲信号进行计数(每转一圈送一个脉冲),并以高低脉冲模拟出租汽车启动、停止、暂停、加速按钮,具有输入信号作用;数据转换模块将计费模块输出的车费和路程转换成4位的十进制数据;译码/动态扫描模块将路程与费用的数值译码后用动态扫描的方式驱动数码管;数码管显示模块将公里数和计费金额均用4位LED数码管显示(2位整数,2位小数)。
2.设计框图
图一出租车自动计费器系统框图
二、设计步骤和调试过程
1、总体设计电路
根据设计要求,系统的输入信号有:
系统时钟信号CLK,计价开始信号START,等待信号STOP,里程脉冲信号FIN.系统的输出信号有:
总费用数CHA0-CHA3,行驶距离(km数)KM0-KM1和等待时间MIN0-MIN1等。
系统组成方框图由外部输入模块、控制模块和显示模块三部分组成。
控制模块是整个系统的核心,它由分频模块、控制模块、计量模块和译码显示模块构成。
2、模块设计和相应模块程序
(1).分频/计量控制模块
分频模块对频率为240HZ的输入脉冲进行分频,得到16HZ、10HZ、和1HZ的三种频率。
该模块产生频率信号用于计费,每1HZ脉冲为0.1元计费控制,10HZ信号为1元的计费控制,16HZ信号为1.6元计费控制。
计量控制模块是出租车计费的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分钟的等待计时始能控制信号en1、行程3公里外的是能控制信号en0。
其中计价功能主要完成的任务是:
行程3公里内,且等待累计时间在3分钟内,起步费为8元;3公里以外以每公里1.6元计费。
等待时间3分钟以外以每分钟1元计费。
计时功能主要完成的任务是:
计算乘客的等待累计时间,计时的量程为59分,满量程自动归零。
计程功能主要完成的任务是:
计算乘客所行驶的公里数,计程器的量程为99公里,满量程自动归零。
(2).译码显示模块
该模块经过8选1选择器将计费数据(4位BCD码)、计时数据(2位BCD码)、计程数据(2位BCD码)动态显示输出。
其中计费数据jifei4~jifei1送入译码显示模块进行译码,然后送至以百元、十元、元、角为单位对应的数码管上显示,最大显示为999.9元;计时数据送入译码显示模块进行译码,最后送至一分为单位对应的数码管上显示,最大显示为59s;计程数据送入译码显示模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。
该模块包含8选1选择器、模8计数器、七段显示译码器3个子模块。
(3).设计程序
主程序:
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
USEIEEE.std_logic_unsigned.all;
USEIEEE.std_logic_arith.all;
ENTITYtaxiis
port(clk_240:
instd_logic;
start:
instd_logic;
stop:
instd_logic;
fin:
instd_logic;
cha3,cha2,cha1,cha0:
outstd_logic_vector(3downto0);
km1,km0:
outstd_logic_vector(3downto0);
min1,min0:
outstd_logic_vector(3downto0));
endtaxi;
architecturebehavoftaxiis
signalf_10,f_16,f_1:
std_logic;
signalq_10:
integerrange0to23;
signalq_16:
integerrange0to14;
signalq_1:
integerrange0to239;
signalw:
integerrange0to59;
signalc3,c2,c1,c0:
std_logic_vector(3downto0);
signalk1,k0:
std_logic_vector(3downto0);
signalm1:
std_logic_vector(2downto0);
signalm0:
std_logic_vector(3downto0);
signalen1,en0,f:
std_logic;
begin
feipin:
process(clk_240,start)
begin
ifclk_240'eventandclk_240='1'then
ifstart='0'thenq_10<=0;q_16<=0;f_10<='0';f_16<='0';f_1<='0';f<='0';
else
ifq_10=23thenq_10<=0;f_10<='1';
elseq_10<=q_10+1;f_10<='0';
endif;
ifq_16=14thenq_16<=0;f_16<='1';
elseq_16<=q_16+1;f_16<='0';
endif;
ifq_1=239thenq_1<=0;f_1<='1';
elseq_1<=q_1+1;f_1<='0';
endif;
ifen1='1'thenf<=f_10;
elsifen0='1'thenf<=f_16;
elsef<='0';
endif;
endif;
endif;
endprocess;
main:
process(f_1)
begin
ifstart='0'then
w<=0;en1<='0';en0<='0';m1<="000";m0<="0000";k1<="0000";k0<="0000";
elsiff_1'eventandf_1='1'then
ifstop='1'then
ifw=59thenw<=0;
ifm0="1001"thenm0<="0000";
ifm1="101"thenm1<="000";
elsem1<=m1+1;
endif;
elsem0<=m0+1;
endif;
ifm1&m0>"0000010"then
en1<='1';en0<='0';
elseen1<='0';en0<='0';
endif;
elsew<=w+1;en1<='0';en0<='0';
endif;
elsiffin='1'then
ifk0="1001"thenk0<="0000";
ifk1="1001"thenk1<="0000";
elsek1<=k1+1;
endif;
elsek0<=k0+1;
endif;
ifk1&k0>"00000010"thenen0<='1';
elseen0<='0';
endif;
elseen1<='0';en0<='0';
endif;
cha3<=c3;cha2<=c2;cha1<=c1;cha0<=c0;
km1<=k1;km0<=k0;min1<='0'&m1;min0<=m0;
endif;
endprocessmain;
jifei:
process(f,start)
begin
ifstart='0'thenc3<="0000";c2<="0000";c1<="1000";c0<="0000";
elsiff'eventandf='1'then
ifc0="1001"thenc0<="0000";
ifc1="1001"thenc1<="0000";
ifc2="1001"thenc2<="0000";
ifc3="1001"thenc3<="0000";
elsec3<=c3+1;
endif;
elsec2<=c2+1;
endif;
elsec1<=c1+1;
endif;
elsec0<=c0+1;
endif;
endif;
endprocessjifei;
endbehav;
模8计数器se的VHDL源程序:
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
USEIEEE.std_logic_unsigned.all;
ENTITYseIS
port(clk:
instd_logic;
a:
outstd_logic_vector(2downto0));
ENDse;
ARCHITECTURErt1ofseIS
begin
process(clk)
variableb:
std_logic_vector(2downto0);
begin
if(clk'eventandclk='1')then
if(b="111")then
b:
="000";
else
b:
=b+1;
endif;
endif;
a<=b;
endprocess;
endrt1;
8选1选择器mux8_1的VHDL源程序:
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
ENTITYmux8_1IS
port(c:
instd_logic_vector(2downto0);
dp:
outstd_logic;
a1,a2,a3,a4,b1,b2,t1,t2:
instd_logic_vector(3downto0);
d:
outstd_logic_vector(3downto0));
endmux8_1;
architecturert1ofmux8_1is
begin
process(c,a1,a2,a3,a4,b1,b2,t1,t2)
variablecomb:
std_logic_vector(2downto0);
begin
comb:
=c;
casecombis
when"000"=>d<=a1;dp<='0';
when"001"=>d<=a2;dp<='0';
when"010"=>d<=a3;dp<='1';
when"011"=>d<=a4;dp<='0';
when"100"=>d<=b1;dp<='0';
when"101"=>d<=b2;dp<='0';
when"110"=>d<=t1;dp<='0';
when"111"=>d<=t2;dp<='0';
whenothers=>null;
endcase;
endprocess;
endrt1;
七段数码显示译码器di_LED的VHDL源程序;
LIBRARYIEEE;
USEIEEE.std_logic_1164.all;
USEIEEE.std_logic_unsigned.all;
ENTITYdi_LEDIS
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
enddi_LED;
architecturert1ofdi_LEDis
begin
process(d)
begin
casedis
when"0000"=>q<="0111111";--gfedcba
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100111";
when"1000"=>q<="1111111";
whenothers=>q<="1101111";
endcase;
endprocess;
endrt1;
3、仿真及仿真结果分析
图二出租车自动计费器电路仿真输出波形
在图二中,STOP=0即全程无停止等待时间,因此计时显示输出为3F(00),该电路中出租车总行驶3F(0)7D(6)(即6公里),等待累计时间为3F(0)3F(0)(0分钟),总费用为06
(1)5B
(2)7F(8)(即12.8元),仿真结果正确。
4、实验调试结果
仿真结果正确后,就可将文件下载到芯片中。
连接硬件系统后,通上电源,经QuartusⅡ中的“PROGRAMMER”菜单,调出编程器窗口。
一切就绪后,按下编程器窗口中的“START”按钮,设计的内容就开始下载到CPLD芯片中。
实验测试表明:
该计费器实现了按预制参数自动计费(最大计费金额为999.9元)、自动计程(最大计程公里数为99公里)、自动计时(最大计时时间为59min)等功能;能够实现行程3公里内,且等待累计时间3分钟内,起步费为8元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1元,且预置参数可调范围大。
由于采用了CPLD大规模可编程逻辑器件,整机功耗小、抗干扰能力强、系统稳定、工作可靠、升级方便。
3、结论及心得体会
本次课程设计至此已经接近尾声,但在这一个星期的设计过程中收获颇丰。
设计的核心内容就是QuartusⅡ环境中,利用VHDL语言设计出基于CPLD的出租车自动计费器。
整个设计过程中首先对数字电路这门课程有了更深的了解,因为课程设计本身要求将以前所学的理论知识运用到实际的电路设计当中去,在电路的设计过程中,无形中便加深了对数字电路的了解及运用能力,对课本以及以前学过的知识有了一个更好的总结与理解;以前的数字实验只是针对某一个小的功能设计,而此次得EDA课程设计对我们的总体电路的设计的要求更严格,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计;其次,在电路仿真的过程中总会出现一些问题,需要我们细心解决,所以这两周下来,我对电路故障的排查能力有了很大的提高;再次,通过此次课程设计,我对设计所用到的软件有了更加深刻地了解,这对我们以后的工作和学习的帮助都很有用处。
参考资料
[1]潘松著.EDA技术实用教程(第二版).北京:
科学出版社,2005.
[2]康华光主编.电子技术基础模拟部分.北京:
高教出版社,2006.
[3]阎石主编.数字电子技术基础.北京:
高教出版社,2003.
东北石油大学课程设计成绩评价表
课程名称
EDA技术课程设计
题目名称
出租车自动计费系统
学生姓名
盛建宇
学号
080901140429
指导教师姓名
职称
序号
评价项目
指标
满分
评分
1
工作量、工作态度和出勤率
按期圆满的完成了规定的任务,难易程度和工作量符合教学要求,工作努力,遵守纪律,出勤率高,工作作风严谨,善于与他人合作。
20
2
课程设计质量
课程设计选题合理,计算过程简练准确,分析问题思路清晰,结构严谨,文理通顺,撰写规范,图表完备正确。
45
3
创新
工作中有创新意识,对前人工作有一些改进或有一定应用价值。
5
4
答辩
能正确回答指导教师所提出的问题。
30
总分
评语:
指导教师:
2012年3月2日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计