EDA课程设计--出租车自动计费器(共11页).docx
-
资源ID:12181248
资源大小:336.70KB
全文页数:11页
- 资源格式: DOCX
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
EDA课程设计--出租车自动计费器(共11页).docx
精选优质文档-倾情为你奉上课 程 设 计课程设计名称: EDA课程设计 专 业 班 级 : 电科1002班 学 生 姓 名 : XXX 学 号 : XX 指 导 教 师 : XXX 课程设计时间: 2013-2-252013-3-8电子信息科学与技术专业课程设计任务书学生姓名XXX专业班级电科1002班学号XX题 目出租车自动计价器设计课题性质A课题来源D指导教师王胜轩同组姓名主要内容设计一个出租车计价器,该计价器计费系统要求:行程3公里内,且等待累计时间3分钟内,起步费10元;3公里以外以每公里1.6元计费,等待累计时间3分钟外以每分钟1.5元计费。并能显示行驶公里数、等待累计时间、总费用。设计的主要技术指标:(1)计价范围:0999.9元 计价分辨率:0.1元(2)计程范围:099公里 计程分辨率:1公里(3)计时范围:059分 计时分辨率:1分任务要求(1) 制定完整地设计方案,结合框图进行说明。(2) 给出主要模块的VHDL程序。(3) 如有可能,在实验箱上进行下载验证。(4) 给出完整地设计报告。参考文献(1)黄智伟. FPGA系统设计与实践 电子工业出版社 2005.1(2)焦素敏. EDA课程设计指导书 河南工业大学 2008.2(3)焦素敏. EDA应用技术 清华大学出版社 2005.4审查意见指导教师签字:教研室主任签字:张庆辉 2013年 2月 25日一、 设计任务及要求设计一个出租车计价器:计费包括起步价、行车里程计费、等待时间计费3部分。用3位数码管显示金额,最大值为999.9元,最小计价单元为0.1元;行程3公里内,且等待时间累计3分钟内,起步价10元,超过3公里,以每公里1.6元计费,等待时间单价为每分钟1.5元;用两位数码管显示总里程,最大值为99公里用两位数码管显示等待时间,最大值为59min。 二、设计原理及总体框图出租车自动计费器分为分频模块、控制模块、计量模块、计费模块、译码和显示模块。 A)、设计原理:(1)分频模块 分频模块对频率为240HZ的输入脉冲进行分频,得到的频率为16HZ、15HZ、和1HZ的3种频率。该模块产生频率信号用于计费,每个脉冲为0.1元计费控制,其中15Hz信号为1.5元的计费控制,16Hz信号为1.6元计费控制。 (2)计量控制模块 计量控制模块式出租车自动计费器系统的主体部分,该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分钟的等待计时使能控制信号en1、行程3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程3公里内且等待累计时间在3分钟内起步价为10元3公里以外每公里1.6元计费,等待时间3分钟以外每分钟1.5元计费。计时功能主要完成的任务是:计算乘客的等待累计时间,计时器的量程为59分,满量程自动归零。计程主要完成的任务是:计算乘客所行驶的公里数,计价器的量程为99公里,满量程自动归零。 (3)译码显示模块该模块利用实验板上的译码器和数码管分别将输出的计费数据(4位BCD码)、计时数据(2位BCD码)和计程数据(2位BCD码)显示输出。其中计费数据最后以百元、十元、元、叫、角为单位对应的数码管上显示,最大显示为999.9元;计时数据最后送至以分为单位对应的数码管上显示,最大显示为59s;计程数据最后送至以公里为单位的数码管上显示,最大公里为99公里。B)、总体框图: 根据层次化设计理论将该问题自顶向下可分为分频模块、计量模块、控制模块、译码和显示模块各模块功能如下:三、程序设计及编译仿真1)、分频模块:对频率为240HZ的输入脉冲进行分频,得到的频率为16HZ、15HZ、和1HZ的3种频率。程序如下:library IEEE; use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity fp is port ( clk :in std_logic; q16: out std_logic; -频率为16的时钟 q15: out std_logic; -频率为15的时钟 q1: out std_logic); -频率为1的时钟 end fp; architecture qq of fp is begin process(clk) variable cout16:integer range 0 to 14; variable cout15:integer range 0 to 15; variable cout1:integer range 0 to 239; begin if (clk'event and clk='1') then if cout16=14 -240hz分频为16hz then cout16:=0;q16<='1' else cout16:=cout16+1;q16<='0' end if; if cout15=15 -240hz分频为15hz then cout15:=0;q15<='1' else cout15:=cout15+1;q15<='0' end if; if cout1=239 -240hz分频为1hz then cout1:=0;q1<='1' else cout1:=cout1+1;q1<='0' end if; end if; end process; end qq;仿真波形:2)计量模块:该模块主要完成等待计时功能、计价功能、计程功能,同时产生3分钟的等待计时使能控制信号en1、行程3公里外的使能控制信号en0。以及进行满量程清零。library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity jiliang is port( s: in std_logic; -计量开始信号 fin: in std_logic; - 计量路程的信号 stop: in std_logic; -等待信号 clk1: in std_logic; -计量驱动信号 en1,en0: buffer std_logic; -计量控制信号 k1,k0: buffer std_logic_vector(3 downto 0); -路程的计量 m1,m0: buffer std_logic_vector(3 downto 0); -时间的计量 end jiliang; architecture rt2 of jiliang is signal w:integer range 0 to 59; begin process(clk1) begin if (clk1'event and clk1='1') then -驱动信号发挥作用 if s='0' then w<=0;en1<='0'en0<='0'm1<="0000"m0<="0000"k1<="0000"k0<="0000" -初始化值 elsif stop='1' then -等待信号为高时间控制信号开始计时 if w=59 then w<=0; if m0="1001" then m0<="0000" if m1="0101" then m1<="0000" else m1<=m1+1; end if; else m0<=m0+1; end if; -计时 if m1&m0>""then en1<='1' -当时间大于3min时使能信号 en1开始使能 else en1<='0' end if; else w<=w+1;en1<='0' end if; elsif fin='1' then if k0="1001" then k0<="0000" if k1="1001" then k1<="0000" else k1<=k1+1; end if; else k0<=k0+1; end if; -记路程 if k1&k0>"" then en0<='1' -当路程大于3km时使能信号 en0开始发挥作用 else en0<='0' end if; else en1<='0'en0<='0' end if; end if; end process; end rt2;仿真波形:3)、控制模块:该模块主要进行时间和里程的切换。library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity kongzhi is port(ent0,ent1:in std_logic; -输入的使能选择信号 clk_in1:in std_logic; -输入脉冲 clk_in2:in std_logic; -输入脉冲 clk_out:out std_logic); -输出脉冲 end kongzhi; architecture rt4 of kongzhi is begin process(ent0,ent1)begin if ent0='1' then -根据条件选择所需的通道 clk_out<=clk_in1; elsif ent1='1' then clk_out<=clk_in2; end if; end process; end rt4; 仿真波形:4)、计费模块: 该程序主要进行起步价设置,和计费功能。library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity jifei is port(clk2:in std_logic; -计费驱动信号 start: in std_logic; -计费开始信号 c0,c1,c2,c3: buffer std_logic_vector(3 downto 0);-费用显示信号 end jifei; architecture rt3 of jifei is begin process(clk2,start) begin if start='0' then c3<="0000"c2<="0001"c1<="0000"c0<="0000" elsif (clk2'event and clk2='1') then if c0="1001" then c0<="0000" if c1="1001" then c1<="0000" if c2="1001" then c2<="0000" if c3="1001" then c3<="0000"-计费功能 else c3<=c3+1; end if; else c2<=c2+1; end if; else c1<=c1+1; end if; else c0<=c0+1; end if; end if; end process; end rt3; 仿真波形:5)、译码显示模块:译码显示模块是应用实验工具箱上的自带的硬件电路显示译码。6)顶层原理图:仿真波形: 五、 硬件调试与结果分析在MAX+plus II中对顶层文件进行编辑、编译、综合、适配和仿真。选择实验电路结构NO.5,进行引脚锁定,CLK接到CLOCK0上,开始计费键START锁定到键3(PIO0)上,里程控制信号FIN锁定到键2(PIO1)上,等待时间控制信号锁定到键1(PIO)上。计费输出信号c0,c1,c2,c3分别锁定到PIO31PIO28, PIO27PIO24, PIO23PIO20, PIO19PIO16上;时间输出信号M1,M0分别锁定到PIO39PIO36,PIO35PIO32上;里程输出信号K1,K0分别锁定到PIO47PIO44, PIO43PIO40上。仿真后下载到硬件实验箱的电路上,选择图NO.5,按键3为高电平计费开始,此时显示起步价10.0元,然后按键2为高电平,当里程超过3公里后,开始按每公里1.6元计费,再按键2为低电平,计费暂停,当按下键1等待时间STOP为高电平时,开始时间计费,当超过3分钟时,则按每分钟1.5元计费,当按下键1等待时间STOP为低电平时,暂停计费,再次按下键3为低电平计费停止,并复位到起步价10.0元,里程显示,和等待时间显示同时清零。 六、心得体会七、 参考文献1 焦素敏. EDA课程设计指导书 河南工业大学 2008.2 2 焦素敏. EDA应用技术 清华大学出版社 2009.13 黄智伟. FPGA系统设计与实践 电子工业出版社 2005.1专心-专注-专业