出租车计费器的设计.docx
- 文档编号:28953264
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:15
- 大小:126.72KB
出租车计费器的设计.docx
《出租车计费器的设计.docx》由会员分享,可在线阅读,更多相关《出租车计费器的设计.docx(15页珍藏版)》请在冰豆网上搜索。
出租车计费器的设计
课程设计报告
课程名称数字系统与逻辑设计
课题名称出租车计费器的设计
专业通信工程
班级
学号
姓名
指导教师乔汇东胡倩
2011年7月9日
湖南工程学院
课程设计任务书
课程名称数字系统与逻辑设计
课题出租车计费器的设计
专业班级
学生姓名
学号
指导老师乔汇东胡倩
审批乔汇东
任务书下达日期2011年7月2日
任务完成日期2011年7月9日
《数字系统与逻辑设计》课程设计任务书
一、设计目的
全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
二、设计要求
1、设计正确,方案合理。
2、程序精炼,结构清晰。
3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
4、上机演示。
5、有详细的文档。
文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。
三、进度安排
第二十周星期一:
课题讲解,查阅资料
星期二:
总体设计,详细设计
星期三:
编程,上机调试、修改程序
星期四:
上机调试、完善程序
星期五:
答辩
星期六-星期天:
撰写课程设计报告
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。
1、出租车系统主要功能
设计要求:
本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。
时钟输入为一个1KHz的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从开始计费。
直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。
系统设计是需要检测电机的转动情况,每转一周,计米计数器增加1。
设计思想:
整设计由计程模块,计费模块和显示模块三个部分组成。
其中计量模块是整个系统实现里程计数重要部分;同时脉冲信号来实现系统的计费。
显示模块主要是显示用8个七段码管,前四个显示里程,后四个显示费用。
2、出租车计费系统功能模块
1.计费模块
当计费信号S1一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同单价的时段进行计费。
即行程在1km内,起步价3元;1km外以每公里按1远计费。
leg0、leg1、leg2、leg3分别表示费用的显示。
模块元件为:
2.计程模块:
计算乘客所行驶的公里数,当行驶里程大于1km时,本模块中pulse脉冲信号变为1;当clk1每来一个上升沿,计程器就自增1,计程器的量程为9.9km,满量程后自动归零。
元件框图为:
3、出租车计费系统的功能实现
1.系统的总体框图:
2.
程序流程图:
3.系统各功能模块的实现:
计费模块:
计程模块:
显示模块:
4、系统调试与仿真
1.错误提示:
错误分析:
从这可以看出来是工程名不统一,应该把工程名同意改为taxi。
这是我们经常犯的错误。
错误分析:
shuju没有定义。
2.系统仿真结果:
5、总结与体会
短短几天的EDA课程设计已经接近尾声了,我们从挑选课设题目,查阅资料,到研究出总体设计,详细设计,再到最后的编程上机调试,修改程序,完善程序,收获颇多。
我学会在这其中解决了很多问题,也帮同学解决了许多问题。
出租车计费器系统的设计已全部完成,但我的设计不能实现动态扫描电路显示车费数目。
车暂停时停止计费。
若停止清零,等待下一次计费的开始。
出租车计费系统设计中体现了VHDL覆盖面广,描述能力强,是一个多层次的硬件描述语言及PLD器件速度快,使用方便,便于修改等特点。
我们再次熟悉和增强了对VHDL语言的基本知识,熟悉利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来。
VHDL硬件描述语言打破了硬件和软件设计人员之间互不干涉的界限,可以使用语言的形式来进行数字系统的硬件结构、行为的描述,直接设计数字电路硬件系统。
通过编程、下载后,该芯片已经具备了原来需要使用复杂的数字电路实现的功能;更加了解和加深了对编制和调试程序的技巧,进一步提高了上机动手能力,培养了使用设计综合电路的能力,养成了提供文档资料的习惯和规范编程的思想。
在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
最后,我们衷心的感谢课设期间一直指导和陪伴着我们的老师。
6、附录
1.顶层模块:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitytaxiis
port(clk:
instd_logic;--系统始终信号
S1:
instd_logic;--复位信号
pulse:
instd_logic;--车轮脉冲信号
LEG,BT:
outstd_logic_vector(7downto0));
endtaxi;
architecturert4oftaxiis
componentjifei
port(clk2:
instd_logic;
S1:
instd_logic;
count0,count1,count2,count3:
bufferstd_logic_vector(3downto0));
endcomponent;
componentjiliang
port(S1:
instd_logic;
clk1:
instd_logic;
k3,k2,k1,k0:
bufferstd_logic_vector(3downto0));
endcomponent;
signala,b:
std_logic;
signalshuju,c,d,e,f,h,i,j,k:
std_logic_vector(3downto0);
signalcnt:
std_logic_vector(2downto0);
begin
u1:
jiliangportmap(clk1=>pulse,S1=>S1,k0=>c,k1=>d,k2=>e,k3=>f);--例化计量模块
u2:
jifeiportmap(clk2=>pulse,S1=>S1,count0=>h,count1=>i,count2=>j,count3=>k);--例化计费模块
M1:
process(cnt,clk)
begin
ifclk'eventandclk='1'then
casecntis
when"000"=>BT<="00000001";shuju<=c;
when"001"=>BT<="00000010";shuju<=d;
when"010"=>BT<="00000100";shuju<=e;
when"011"=>BT<="00001000";shuju<=f;
when"100"=>BT<="00010000";shuju<=h;
when"101"=>BT<="00100000";shuju<=i;
when"110"=>BT<="01000000";shuju<=j;
when"111"=>BT<="10000000";shuju<=k;
whenothers=>NULL;
endcase;
endif;
endprocessM1;
M2:
process(clk)
begin
ifclk'eventandclk='1'then
cnt<=cnt+1;
endif;
endprocessM2;
M3:
PROCESS(shuju,clk)
begin
ifclk'eventandclk='1'then
caseshujuis
when"0000"=>LEG<="11111100";
when"0001"=>LEG<="01100000";
when"0010"=>LEG<="11011010";
when"0011"=>LEG<="11110010";
when"0100"=>LEG<="01100110";
when"0101"=>LEG<="10110110";
when"0110"=>LEG<="10111110";
when"0111"=>LEG<="11100000";
when"1000"=>LEG<="11111110";
when"1001"=>LEG<="11110110";
whenothers=>NULL;
endcase;
endif;
endprocessM3;
endrt4;
2.计量模块:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityjiliangis
port(S1:
instd_logic;
clk1:
instd_logic;
k3,k2,k1,k0:
bufferstd_logic_vector(3downto0));
endjiliang;
architecturebehavofjiliangis
begin
process(clk1,S1)
begin
ifS1='0'then
k3<="0000";k2<="0000";k1<="0000";k0<="0000";
elsifclk1'eventandclk1='1'then
ifk0="1001"thenk0<="0000";
ifk1="1001"thenk1<="0000";
ifk2="1001"thenk2<="0000";
ifk3="1001"thenk3<="0000";
else
k3<=k3+1;endif;
else
k2<=k2+1;endif;
else
k1<=k1+1;endif;
else
k0<=k0+1;endif;
endif;
endprocess;
endbehav;
3.计费模块:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityjifeiis
port(clk2:
instd_logic;--时钟信号
S1:
instd_logic;--复位信号
count0,count1,count2,count3:
bufferstd_logic_vector(3downto0));
endjifei;
architecturebehavofjifeiis
begin
process(clk2,S1)
variablem:
integerrange0to1000:
=0;--定义变量
begin
ifS1='0'thencount3<="0000";count2<="0000";count1<="0000";count0<="0011";
elsifclk2'eventandclk2='1'thenm:
=m+1;
ifmMOD1000=0then--取模算法
ifcount0="1001"thencount0<="0000";
ifcount1="1001"thencount1<="0000";
ifcount2="1001"thencount2<="0000";
ifcount3="1001"thencount3<="0000";
elsecount3<=count3+1;
endif;
elsecount2<=count2+1;
endif;
elsecount1<=count1+1;
endif;
elsecount0<=count0+1;m:
=0;
endif;
endif;
endif;
endprocess;
endbehav;
7、评分表
计算机与通信学院课程设计评分表
课题名称:
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
WelcomeTo
Download!
!
!
欢迎您的下载,资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 计费 设计