EDA课程设计报告出租车计费器文档格式.docx
- 文档编号:22913298
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:17
- 大小:141.77KB
EDA课程设计报告出租车计费器文档格式.docx
《EDA课程设计报告出租车计费器文档格式.docx》由会员分享,可在线阅读,更多相关《EDA课程设计报告出租车计费器文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
星期二:
总体设计,详细设计
星期三:
编程,上机调试、修改程序
星期四:
上机调试、完善程序
星期五:
答辩
星期六-星期天:
撰写课程设计报告
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;
行距为22。
正文的内容:
一、课题的主要功能;
二、课题的功能模块的划分(要求画出模块图);
三、主要功能的实现;
四、系统调试与仿真;
五、总结与体会;
六、附件(所有程序的原代码,要求对程序写出必要的注释);
七、评分表。
目录
一.出租车计费系统的总体设计1
1.1出租车计费设计1
1.2基本设计思想1
二.出租车计费系统的功能实现1
2.1系统的总体框图1
2.2程序流程图2
2.3系统各功能模块的实现3
三.系统调试与仿真10
四.总结与体会12
五.评分表14
一.出租车计费系统的总体设计
1.1出租车计费设计
该出租车计费器按下开关S1后开始计费和计里程数,起步价是3元,准行1公里,以后1元/公里。
1.2基本设计思想
时钟输入为一个1KHz的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。
直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。
系统设计是需要检测电机的转动情况,每转1000圈,分频模块输出一个上升沿信号。
车费和里程数在一个8位7段数码管上显示,前4位显示里程,后4位显示费用。
二.出租车计费系统的功能实现
2.1系统的总体框图
该出租车计费系统由四个模块组成,分别是:
分频模块:
将每1000个电机脉冲转化成1个输出脉冲
计费模块:
计算应付车费
计程模块:
计录已行里程
显示模块:
将应付车费和已行里程显示在数码管上
各模块之间的关系为:
2.2程序流程图
1.分频模块glclk.vhd:
2.计费模块cnt_fy.vhd:
3.计程模块cnt_gl:
2.3系统各功能模块的实现
1.分频模块:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityglclkis
port(pulse:
instd_logic;
reset:
glclk:
outstd_logic);
end;
architecturebehavofglclkis
signaltemp:
std_logic;
signalcount:
integerrange0to500;
begin
process(pulse,reset)
begin
ifreset='
1'
then
count<
=0;
temp<
='
0'
;
elsifpulse'
eventandpulse='
ifcount>
499then
count<
temp<
=nottemp;
else
=count+1;
endif;
endif;
endprocess;
glclk<
=temp;
2.计费模块:
entitycnt_fyis
port(glclk:
instd_logic;
reset:
pul:
money0:
outstd_logic_vector(3downto0);
money1:
money2:
money3:
outstd_logic_vector(3downto0));
architecturebehavofcnt_fyis
signalmoney_cnt0:
std_logic_vector(3downto0);
signalmoney_cnt1:
signalmoney_cnt2:
signalmoney_cnt3:
--signalflag:
integerrange0to4;
process(glclk)
--variableflag:
money_cnt0<
="
0011"
money_cnt1<
0000"
money_cnt2<
money_cnt3<
elsifglclk'
eventandglclk='
ifmoney_cnt3=9andmoney_cnt2=9andmoney_cnt1=9andmoney_cnt0=9then
money_cnt0<
money_cnt1<
money_cnt2<
money_cnt3<
elsifmoney_cnt3/=9andmoney_cnt2=9andmoney_cnt1=9andmoney_cnt0=9then
=money_cnt3+"
0001"
elsifmoney_cnt2/=9andmoney_cnt1=9andmoney_cnt0=9then
=money_cnt2+"
=money_cnt3;
elsifmoney_cnt1/=9andmoney_cnt0=9then
=money_cnt1+"
=money_cnt2;
elsifmoney_cnt0/=9then
=money_cnt0+"
=money_cnt1;
endif;
money0<
=money_cnt0;
--+"
money2<
money1<
money3<
3.计程模块:
entitycnt_glis
km_cnt0:
km_cnt1:
km_cnt2:
km_cnt3:
architecturebehavofcnt_glis
signalcnt0:
signalcnt1:
signalcnt2:
signalcnt3:
process(reset,glclk)
cnt0<
cnt1<
cnt2<
cnt3<
elsifglclk'
ifcnt3=9andcnt2=9andcnt1=9andcnt0=9then
cnt0<
cnt1<
cnt2<
cnt3<
elsifcnt3/=9andcnt2=9andcnt1=9andcnt0=9then
=cnt3+"
elsifcnt2/=9andcnt1=9andcnt0=9then
=cnt2+"
=cnt3;
elsifcnt1/=9andcnt0=9then
=cnt1+"
=cnt2;
elsifcnt0/=9then
=cnt0+"
=cnt1;
km_cnt0<
=cnt0;
km_cnt1<
km_cnt2<
km_cnt3<
4.显示模块:
entitydisplayis
port(CLK:
INSTD_LOGIC;
b0,b1,b2,b3,a0,a1,a2,a3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
dx:
OUTSTD_LOGIC_VECTOR(6DOWNTO0);
wx:
outstd_logic_vector(7downto0));
architecturebehavofdisplayis
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
P1:
PROCESS(CLK)
BEGIN
IFCLK'
EVENTANDCLK='
THEN
CNT8<
=CNT8+1;
ENDIF;
ENDPROCESS;
P2:
PROCESS(CNT8)
CASECNT8IS
WHEN"
000"
=>
wx<
10000000"
A<
=b3;
001"
01000000"
=b2;
010"
00100000"
=b1;
011"
00010000"
=b0;
100"
00001000"
=a3;
101"
00000100"
=a2;
110"
00000010"
=a1;
111"
00000001"
=a0;
ENDCASE;
ENDPROCESS;
P3:
PROCESS(A)
BEGIN
CASEAIS
dx<
0111111"
0000110"
0010"
1011011"
1001111"
0100"
1100110"
0101"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1001"
1101111"
WHENOTHERS=>
NULL;
三.系统调试与仿真
1.顶层元件仿真图:
从图中可看出,给一个复位信号后,费用的最低位为“0011”,即3,里程数的最低位为“0000”,即0,每当temp信号出现一个下降沿,费用和里程数的最低位各加1,符合课题要求。
图5
2.分频模块仿真图:
从仿真图可以看出,电机信号pulse每产生1000个周期,输出信号发生一个周期的变化
图6
3.计程模块仿真图:
从仿真图可看出,glclk每出现一个上升沿,里程数加1
图7
4.计费模块仿真图:
从仿真图可看出,费用初始值为3,glclk每出现一个上升沿,费用数加1
图8
5.显示模块仿真图:
从仿真图可以看出,每当系统时钟信号CLK出现一个上升沿,位选数据wx右移一次,段选信号dx在wx为“00000001”时输出8的数码管显示编码
图9
四.总结与体会
通过这次紧张而又充实的EDA课程设计,我感受到了VHDL语言和普通软件语言之间的区别,也能够更加熟练地运用VHDL语言进行逻辑电路的设计了,受益匪浅。
在刚拿到课题的时候,我对课题的第一个想法就是“容易”,因为出租车计费器从逻辑结构的角度来看十分简单,于是我信心满满地动手写起了程序。
可当我在写第一个分频模块的过程中就发现自己完全错了,程序写完后进行仿真,就是达不到预期的结果,要么输出信号有毛刺,要么就是有延迟,回过头来检查程序,却看不出有什么错误。
经过反复的修改和思考,才终于逐渐了解到,在VHDL语言中,数据的行为方式分为SIGNAL和VARIABLE两种,他们的行为方式和软件语言有很大不同,由于对这些区别理解不深,所以在编程的过程中,很容易陷入编软件语言的思维定势,从而产生这些错误。
在没有进行课程设计之前,我们的上机实践从来没有编写过规模如此的数字电路系统,最多就写写什么半加器,全加器,移位寄存器之类的小型实体。
而这次课程设计要想实现课题要求的功能,必须将若干小型实体组合成一个相对大型的实体。
不仅如此,在写完程序后,还要把程序下载到芯片内,连接相应的电子器件,观察真正的效果。
所以,通过这次紧张的课程设计,我体会了从开始利用VHDL语言编程到把设想放到真正在电子器件上实现的全部过程,提高了自己从事工程项目设计的能力。
另外,在课程设计的过程,我碰到了很多棘手的难题,虽然也进行了苦思冥想,却还是得不到解决方法,有时也有想放弃的念头,不过终于还是坚持了下来,完成了任务,我意识到今后不管是在工作还是学习中,做工程项目都需要有忍耐力和坚持。
五.评分表
计算机与通信学院课程设计评分表
课题名称:
出租车计费器的设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 报告 出租车 计费
![提示](https://static.bdocx.com/images/bang_tan.gif)