EDA专业课程设计出租车计费器的设计.docx
- 文档编号:3938393
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:16
- 大小:110.52KB
EDA专业课程设计出租车计费器的设计.docx
《EDA专业课程设计出租车计费器的设计.docx》由会员分享,可在线阅读,更多相关《EDA专业课程设计出租车计费器的设计.docx(16页珍藏版)》请在冰豆网上搜索。
EDA专业课程设计出租车计费器的设计
EDA专业课程设计出租车计费器的设计
课程设计报告
课程名称数字系统与逻辑设计
课题名称出租车计费器的设计
专业
班级
学号
姓名
指导教师
2013年7月7日
湖南工程学院
课程设计任务书
课程名称数字系统与逻辑设计
课题出租车计费器的设计
专业班级
学生姓名
学号
指导老师乔汇东胡瑛谭小兰
审批乔汇东
任务书下达日期2013年6月29日
任务完成日期2013年7月7日
《数字系统与逻辑设计》课程设计任务书
一、设计目的
全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。
二、设计要求
1、设计正确,方案合理。
2、程序精炼,结构清晰。
3、设计报告5000字以上,含程序设计说明,用户使用说明,源程序清单及程序框图。
4、上机演示。
5、有详细的文档。
文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。
三、进度安排
第十九周星期一:
课题讲解,查阅资料
星期二:
总体设计,详细设计
星期三:
编程,上机调试、修改程序
星期四:
上机调试、完善程序
星期五:
答辩
星期六-星期天:
撰写课程设计报告
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现;四、系统调试与仿真;五、总结与体会;六、附件(所有程序的原代码,要求对程序写出必要的注释);七、评分表。
一.系统的总体设计
问题描述
出租车计费器一般都是按公里计费,通常是起步价xx元(xx元可以行走x公里),然后再是xx元/公里。
要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。
通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。
在这个实验中,就要模拟出租车计费器的工作过程,用直流电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。
(有条件的同学再完成:
显示用8个七段码管,前四个显示里程,后四个显示费用。
)
设计思想
该出租车计费器按下开关S1后开始计费和计里程数,起步价是3元,准行1公里,以后1元/公里。
时钟输入为一个1KHz的系统时钟,直流电机模块每转一圈输出一个脉冲信号给CPU,另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。
直流电机模块用来模拟出租车的车轮子,每转动一圈认为是行走1米,所以每旋转1000圈,认为车子前进1公里。
系统设计是需要检测电机的转动情况,每转1000圈,分频模块输出一个上升沿信号。
车费和里程数在一个8位7段数码管上显示,前4位显示里程,后4位显示费用。
引脚分配
显示:
动态八位七段数码管模块
动态八位七段数码管模块
数码管端口名称
FPGA引脚
说明
7SEG-A
C8
显示内容控制
7SEG-B
C9
显示内容控制
7SEG-C
C7
显示内容控制
7SEG-D
C6
显示内容控制
7SEG-E
D6
显示内容控制
7SEG-F
D9
显示内容控制
7SEG-G
D8
显示内容控制
7SEG-DP
D7
显示内容控制
7SEG-SEL0
A21
显示位置控制
7SEG-SEL1
B21
显示位置控制
7SEG-SEL2
A22
显示位置控制
7SEG-SEL3
D5
显示位置控制
7SEG-SEL4
C4
显示位置控制
7SEG-SEL5
B22
显示位置控制
7SEG-SEL6
A19
显示位置控制
7SEG-SEL7
B19
显示位置控制
时钟:
Clk
N1
直流电机脉冲输入:
pulse
AE13
一圈一个脉冲
复位按键
RST
J7
按键S1
二.出租车计费功能的实现
系统的总体框图
该出租车计费系统由三个模块组成,分别是:
计费模块:
计算应付车费
计程模块:
计录已行里程
显示模块:
将应付车费和已行里程显示在数码管上
各模块之间的关系为:
2程序流程图
计算路程框图:
计算出租车计费框图:
系统各功能模块的实现
计算距离模块:
REG:
PROCESS(s1,meter)
begin
ifs1='1'then
q1<=0;
q2<=0;
q3<=0;
q4<=0;
elsifmeter'eventandmeter='1'then--clk'eventandclk='1'then
ifq4=9then
q4<=0;
ifq3=9then
q3<=0;
ifq2=9then
q2<=0;
q1<=q1+1;
else
q2<=q2+1;
endif;
else
q3<=q3+1;
endif;
else
q4<=q4+1;
endif;
endif;
--endif;
endprocessREG;
计费距离模块:
COM:
process(q1)
begin
ifq1<7then
a4<=q1+3;
elseifq1=7then
a4<=0;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
elseifq1=8then
a4<=1;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
elseifq1=9then
a4<=2;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
endif;
endif;
endif;
endif;
endprocessCOM;
显示模块:
CAM:
process(clk)
begin
ifclk'eventandclk='1'then
cout<=cout+1;
endif;
endprocessCAM;
pra:
process(cout)
begin
casecoutis
when"000"=>wx<="10000000";shuju<=q1;
when"001"=>wx<="01000000";shuju<=q2;
when"010"=>wx<="00100000";shuju<=q3;
when"011"=>wx<="00010000";shuju<=q4;
when"100"=>wx<="00001000";shuju<=a1;
when"101"=>wx<="00000100";shuju<=a2;
when"110"=>wx<="00000010";shuju<=a3;
when"111"=>wx<="00000001";shuju<=a4;
endcase;
endprocesspra;
process(shuju)
begin
caseshujuis
when0=>duan<="0111111";--0
when1=>duan<="0000110";--1
when2=>duan<="1011011";--2
when3=>duan<="1001111";--3
when4=>duan<="1100110";--4
when5=>duan<="1101101";--5
when6=>duan<="1111101";--6
when7=>duan<="0000111";--7
when8=>duan<="1111111";--8
when9=>duan<="1101111";--9
whenothers=>null;
endcase;
endprocess;
四.调试与仿真
在调试过程中,出现了很多的问题,在编译时出现同时赋值的现象:
图4同时赋值现象
在程序使用软件仿真时,出现了问题;开始使用10进制数进行仿真时由于在计费时,开始不适应复位信号,就会出现几公里几块钱,一但经过复位之后程序使用就正常了,这是有与我在使用时没有复位时,不给初值一样,后来经过修改之后就正常了。
图5计费仿真
图6距离仿真
图7出租车计费仿真
五.总结与体会
通过这次紧张而又充实的EDA课程设计,我感受到了VHDL语言和普通软件语言之间的区别,也能够更加熟练地运用VHDL语言进行逻辑电路的设计了,受益匪浅。
在没有进行课程设计之前,我们的上机实践从来没有编写过规模如此的数字电路系统,最多就写写什么半加器,全加器之类的小型实体。
而这次课程设计要想实现课题要求的功能,必须将若干小型实体组合成一个相对大型的实体。
不仅如此,在写完程序后,还要把程序下载到芯片内,连接相应的电子器件,观察真正的效果。
所以,通过这次紧张的课程设计,我体会了从开始利用VHDL语言编程到把设想放到真正在电子器件上实现的全部过程,提高了自己从事工程项目设计的能力。
另外,在课程设计的过程,我碰到了很多棘手的难题,虽然也进行了苦思冥想,却还是得不到解决方法,有时也有想放弃的念头,不过终于还是坚持了下来,完成了任务,我意识到今后不管是在工作还是学习中,做工程项目都需要有忍耐力和坚持。
结果重要,过程更是我们学习的宝贵经验。
课程设计不仅是学习一门课,更可以锻炼我们的实践能力,动手操作能力,和解决问题的能力。
能够将课堂上所学的知识灵活、巧妙的运用到实践操作上是一次很好的体验,和机会。
不仅锻炼路我们的动手能力,而且加深了对课本的理解和弥补了课本上所不能涉及到的东西。
所以在对待每一次的课程设计时我都很认真,也终于通过自己的努力终于完成了此次的课程设计。
六.附件
程序源代码:
libraryieee;
use;
use;
ENTITYedaIS
PORT(clk:
INSTD_LOGIC;--外部时钟输入口
meter:
INSTD_LOGIC;--外部转圈信号输入,假定每个上升沿视为车轮转一圈
S1:
INSTD_LOGIC;--外部按键输入复位信号,假定低电平表示按键被按下,高电平表示按键未按下
wx:
outstd_logic_vector(7downto0);
cost1,cost2,cost3,cost4:
outintegerrange0to9;--输出计费值个位十位百味
dist1,dist2,dist3,dist4:
outintegerrange0to9);--输出公里数小数点后一位,个位,十位
ENDentity;
architecturebehavofedais
signalq1,q2,q3,q4:
integerrange0to9;--
signala1,a2,a3,a4:
integerrange0to9;
signalcout:
STD_LOGIC_VECTOR(2DOWNTO0);
--signalwx:
std_logic_vector(7downto0);
signalshuju:
integerrange0to9;--控制路程和计费数据显示的位置
signalduan:
std_logic_vector(6downto0);---控制数码管显示输出
begin
REG:
PROCESS(s1,meter)--计算路程
begin
ifs1='1'then
q1<=0;
q2<=0;
q3<=0;
q4<=0;
elsifmeter'eventandmeter='1'then--clk'eventandclk='1'then
ifq4=9then
q4<=0;
ifq3=9then
q3<=0;
ifq2=9then
q2<=0;
q1<=q1+1;
else
q2<=q2+1;
endif;
else
q3<=q3+1;
endif;
else
q4<=q4+1;
endif;
endif;
--endif;
endprocessREG;
COM:
process(q1)--计算出租车计费
begin
ifq1<7then
a4<=q1+3;
elseifq1=7then
a4<=0;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
elseifq1=8then
a4<=1;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
elseifq1=9then
a4<=2;
ifa3=9then
a3<=0;
ifa2=9then
a2<=0;
a1<=a1+1;
else
a2<=a2+1;
endif;
else
a3<=a3+1;
endif;
endif;
endif;
endif;
endif;
endprocessCOM;
------------------------------------------------------------计费路程显示输出
CAM:
process(clk)
begin
ifclk'eventandclk='1'then
cout<=cout+1;
endif;
endprocessCAM;
pra:
process(cout)--控制路程和计费输出位置
begin
casecoutis
when"000"=>wx<="10000000";shuju<=q1;
when"001"=>wx<="01000000";shuju<=q2;
when"010"=>wx<="00100000";shuju<=q3;
when"011"=>wx<="00010000";shuju<=q4;
when"100"=>wx<="00001000";shuju<=a1;
when"101"=>wx<="00000100";shuju<=a2;
when"110"=>wx<="00000010";shuju<=a3;
when"111"=>wx<="00000001";shuju<=a4;
endcase;
endprocesspra;
process(shuju)--数码管显示
begin
caseshujuis
when0=>duan<="0111111";--0
when1=>duan<="0000110";--1
when2=>duan<="1011011";--2
when3=>duan<="1001111";--3
when4=>duan<="1100110";--4
when5=>duan<="1101101";--5
when6=>duan<="1111101";--6
when7=>duan<="0000111";--7
when8=>duan<="1111111";--8
when9=>duan<="1101111";--9
whenothers=>null;
endcase;
endprocess;
dist1<=q1;
dist2<=q2;
dist3<=q3;
dist4<=q4;
cost1<=a1;
cost2<=a2;
cost3<=a3;
cost4<=a4;
endbehav;
七.评分表
计算机与通信学院课程设计评分表
课题名称:
数字系统与逻辑设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 专业课程 设计 出租车 计费