版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于eda层次出租车计费器实验设计报告基于eda的出租车计费器实验设计报告 指导老师: 黄旭 姓名: 陈昊亮 学号: 1228401033 专业: 通信工程 班级: 12通信 日期: 2014.6.10目 录一、引言································
2、····························3二、设计流程 1、实验任务及要求···················&
3、#183;··························4 2、实验原理······················
4、;······························4三、系统设计 1、设计思路·················
5、83;···································52、系统总体模块图·············
6、;··································53、各模块功能实现(1) 十分频模块(pulse) 1.1十分频模块源程序·········
7、83;·························6 1.2十分频模块仿真······················
8、83;··············8(2) 控制模块 (sout) 2.1控制模块源程序·······························
9、·····8 2.2控制模块仿真······································10(3) 里程计数模块 (counter2) 3.1里程计数
10、模块源程序································10 3.2里程计数模块仿真···············
11、;···················12(4) 计费模块 (counter) 4.1计费模块源程序·························
12、3;··········12 4.2计费模块仿真·····································
13、3;15 (5)顶层模块(all) 5.1顶层模块原理图····································16 5.2顶层模块仿真·······
14、183;······························17四、硬件下载实验现象验证1、系统调试················
15、····································182、硬件仿真结果············
16、183;···································19五、结果分析·············
17、··········································19六、实验总结······
18、3;················································191、 引言随着我
19、国国民经济生产总值的增加以及人民生活水平的提高,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。出租车计费器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。本设计采用vhdl硬件描述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过quartus软件下进行软件仿真,再在eda试验箱进行硬件仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。该设计虽然功能简单,智能化水平比较低,但仍具有一定的
20、实用性。该设计是在vhdl的基础上对出租车计价器进行设计来实现其基本功能的,以往的出租车计价器多为基于数字电路、单片机进行的设计,但是数字电路设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;基于单片机的设计,虽然开发成本降低,但其外围电路较多,而且调试复杂,抗干扰能力差,从而也导致计价器不够准确。而fpga具有稳定性好、抗干扰能力强、电路实现简单、程序简单等优点,且非常适合做为出租车计价器的控制核心,所以选择用vhdl来对计价器进行设计来实现其功能。出租车计价器的实现将大大改善人们出行时因为讨价还价而带来的烦恼,从而使人们的心情比较愉悦。本设计是对出租车计价器的六个模
21、块进行分析的,综述如下:十分频模块:该分频模块是其它模块的基础,为后续模块提供基本时钟。控制模块:系统接收到enable信号(低电平),总费用变为10元,其他所有计数模块清零;当启/停开关启动时(高电平),模块根据里程信号的输入发出不同的状态信号(里程小于3公里、里程大于3公里小于5公里、里程大于5公里)驱动里程计费模块与计费模块计数;当汽车暂停时发出暂停状态,此时里程计数模块与计费模块显示相应的停止计数。计费模块:该模块是基于路程模块对费用进行控制的。通过内部使能信号分别计算3公里以内、3-5公里以及5公里以后的费用。里程计算模块:该模块是对车辆行驶路程进行计数,以1mhz时钟为基础,检测行
22、程脉冲,每达到一个时钟脉冲沿计数一次,最大路程显示为999.9公里。计费显示模块&里程显示模块:由七段数码管和译码器构成,选择实验箱上的工作模式0时,该模块不用自行设置。二、设计流程1、实验任务及要求1、实现计费功能,计费标准为: 按行驶里程收费,起步费为10.00元,并在车行3公里后再按1.8元/公里收费,当计数里程达到或超过5公里时,每公里按2.7元计费,车停止不计费。2、设计动态扫描电路,能显示公里数(百位、十位、个位、十分位),能显示车费(百元、十元、元、角)。3、设计符合上述功能要求的方案,并用层次化设计方法设计该电路。4、仿真各个功能模块,并通过有关波形确认电路设计是否正确
23、。5、完成电路全部设计后,通过系统实验箱下载验证设计的正确性。 2、实验原理里程计数模块里程显示控制模块里程信号输入启/停开关 状态输出计费模块clr计费显示图2 系统顶层框图三、系统设计1、 设计思路根据设计要求,系统的输入时钟信号clk,启动信号enable,暂停/启动信号sto,清零信号clr。系统得输出信号有:总费用数c4c1,行驶里程c24c21。系统有一个脉冲输入信号clk,其中clk将根据设计要求分频成十分频、一百分频分别作为计程和计费的脉冲。两个控制输入开关enable,sto;控制过程为:enable作为计费开始开关,当enable为高电平时,系统开始根据输入的情况计费。st
24、o为0停止计费。一个清零输入开关,clr为零,则立即清零,系统停止工作,重新开始计程计费。价格开始归为起步价10.00元。并在车行3公里后再按1.8元/公里收费,当计数里程达到或超过5公里时,每公里按2.7元计费,车停止不计费。2、系统总体模块图 pulse2为十分频的分频器,counter为计费模块,counter2为里程计算模块,scan_led为计费显示模块,scan_led2为里程显示模块,sout为计程车状态控制模块。图3 仿真系统总框图3、各模块功能的实现(1)十分频模块pulse该模块实现将时钟信号10分频功能。该分频模块是其它模块的基础,为之后的模块提供时钟信号。假设clk0输
25、入的一个脉冲代表0.1公里,则fout输出的一个脉冲代表1公里。为了同步控制,并在暂停重启后,仍能继续正确的计数,所以在原来的基础上,增添了clr,enable,si1.0和sto信号。1.1十分频模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity pulse2 is port(clk0:in std_logic; clr: in std_logic; enable: in std_logic; si: in std_logic_vector(1 downto 0); sto
26、: in std_logic; fout:out std_logic);end pulse2;architecture one of pulse2 issignal q:std_logic;signal cnt:std_logic_vector(3 downto 0);begin process(clk0,clr,sto,enable) begin if clr='0' then -当清零信号为零时 清零q<='0'cnt<="0000" elsif clk0'event and clk0='1' then
27、 if sto='1' then q<='0' elsif enable ='1' thencase si iswhen "00" => q<= '0'when "11"|"01"|"10"=>if cnt<"1001" then cnt<=cnt+1; q<='0' else cnt<="0000" q<='1' end if
28、;when others => null;end case;end if; end if; end process;process(clk0) begin if clk0'event and clk0='1' then fout<= q; end if; end process;end one;*因为敏感信号为时钟信号,所以,要每十个变产生一个脉冲就需要,在第十个脉冲产生第十一个下降,所以cnt<"1001"为一个分类。1.2十分频模块仿真: 通过软件仿真出来的波形图证实,该模块可以顺利地进行十分频。(2)控制模块sout系统接收到
29、enable信号(低电平),总费用变为10元,其他所有计数模块清零;当启/停开关启动时(高电平),模块根据里程信号的输入发出四种不同的状态信号st(里程小于3公里、里程大于3公里小于5公里、里程大于5公里)驱动里程计费模块与计费模块计数,st0表示车不动,st1表示行驶里程在3公里以内,st2表示行驶里程在3到5公里之间,st3表示行驶里程超过5公里;当汽车暂停时发出暂停状态,此时里程计数模块与计费模块显示相应的停止计数。该模块实现车行状态输出功能,其中clk为时钟信号,enable 为启动使能信号,sto暂停信号,clr为清零信号,st为状态信号。当sto为1时,状态信号为00;当里程小于3
30、公里时,状态信号为01;当里程大于3公里小于5公里时,状态信号为10;当里程大于5公里后,状态信号为11;2.1控制模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sout is port(clk:in std_logic; enable:in std_logic; sto :in std_logic; clr:in std_logic; st:out std_logic_vector(1 downto 0);end sout;architecture one of so
31、ut isbegin process(clk,enable,sto,clr) variable cqi:std_logic_vector(7 downto 0); variable state:std_logic_vector(1 downto 0); begin if clr='0' then cqi:=(others=>'0'); elsif clk'event and clk='1' then if sto='1' then state:="00" cqi:=cqi; elsif enabl
32、e ='1' then cqi:=cqi+1; if cqi<=33 then state:="01" 3公里内为“01”模式 elsif cqi>33 and cqi<=53 then 3到5公里为“10”模式 state:="10" else state:="11" 5公里以上为“11”模式 end if; end if; end if;st<=state;end process;end one;*从最终的总体仿真发现,计时模块会存在3个脉冲的延迟,所以手动调节分段的部分,向后延时三个脉冲。
33、2.2控制模块仿真:仿真结果显示,在车停止的时候输出控制状态st=“00”;车行驶里程在3公里之内时,输出控制状态st=“01”;车行驶里程在3公里后5公里内时,输出控制状态st=“10”,车行驶里程大于5公里时,输出控制状态st=“11”。(3)里程模块 counter2 该模块实现里程计数功能,clk_div为时钟信号(十分频后的信号),clr为清零信号,st为状态输入信号,当汽车处于启动状态时,每来一个脉冲里程值加0.1(里程信号每发一个脉冲代表运行了0.1公里)。c24、c23、c22、c21实现里程的四位显示。3.1计程模块源程序:library ieee;use ieee.std_
34、logic_1164.all;use ieee.std_logic_unsigned.all;entity counter2 is port(clk_div2:in std_logic; clr2:in std_logic; si2:in std_logic_vector(1 downto 0); c21:out std_logic_vector(3 downto 0); c22:out std_logic_vector(3 downto 0); c23:out std_logic_vector(3 downto 0); c24:out std_logic_vector(3 downto 0)
35、;end counter2;architecture behave of counter2 is signal q21: std_logic_vector(3 downto 0); signal q22: std_logic_vector(3 downto 0); signal q23: std_logic_vector(3 downto 0); signal q24: std_logic_vector(3 downto 0);begin process(clk_div2,clr2,si2) begin if clr2='0' then q21<="0000&q
36、uot;q22<="0000"q23<="0000"q24<="0000" elsif clk_div2'event and clk_div2='1' then case si2 is when "00"=> q21<=q21;q22<=q22;q23<=q23;q24<=q24; when "01"|"10"|"11"=>if q21<"1001" t
37、hen q21<=q21+1; else q21<="0000"q22<=q22+1;if q22>"1000" then q22<="0000"q23<=q23+1; if q23>"1000" then q23<="0000"q24<=q24+1;end if;end if; end if; when others => null; end case; end if; end process;process(clk_div2) be
38、gin if clk_div2'event and clk_div2='1' then c21<= q21;c22<= q22;c23<= q23;c24<= q24; end if;end process;end behave;3.2计程模块仿真:通过软件仿真出来的波形图证实,该模块可以顺利地进行计程,当汽车处于启动状态(非00)时,每来一个脉冲里程值加0.1(里程信号每发一个脉冲代表运行了0.1公里)。(4)计费模块 counter 该模块实现计费功能,clk_div为时钟信号,clr1为清零信号,si为状态输入信号,其初值为10元,根据输入
39、的状态信号,进行相应的计数模式:里程在3公里以内时,费用维持10元不变;当里程超过3公里后,每来一个脉冲(代表运行了1公里)其数值加1.8元;超过5公里后,每来一个脉冲(代表运行了1公里)其数值加2.7元。即当si=00,停止计费;si=01,显示10元;si=10,每来一个脉冲(1公里),增加1.8元;si=11,每来一个脉冲,增加2.7元。c4、c3、c2、c1实现费用的四位显示.4.1计费模块源程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter is port
40、(clk_div:in std_logic; clr1:in std_logic; si:in std_logic_vector(1 downto 0); c1:out std_logic_vector(3 downto 0); c2:out std_logic_vector(3 downto 0); c3:out std_logic_vector(3 downto 0); c4:out std_logic_vector(3 downto 0);end counter;architecture one of counter isbeginprocess(clk_div,clr1,si)vari
41、able q1: std_logic_vector(3 downto 0);variable q2: std_logic_vector(3 downto 0);variable q3: std_logic_vector(3 downto 0);variable q4: std_logic_vector(3 downto 0);beginif clr1='0' then q1:="0000"q2:="0000"q3:="0001"q4:="0000"elsif clk_div'event an
42、d clk_div='1' thencase si iswhen "00" =>q1:=q1;q2:=q2;q3:=q3;q4:=q4;when "01" =>q1:="0000"q2:="0000"q3:="0001"q4:="0000"when "10" => if q1<"0010" then q1:=q1+8;q2:=q2+1; if q2>"1001"then
43、q2:=q2-10; q3:=q3+1; if q3>"1001"then q3:=q3-10; q4:=q4+1; end if; end if;else q1:=q1-2;q2:=q2+2;if q2>"1001"then q2:=q2-10; q3:=q3+1; if q3>"1001"then q3:=q3-10; q4:=q4+1; end if; end if;end if; when "11"=> if q1<"0011" then q1:=q1+7;
44、q2:=q2+2; if q2>"1001"then q2:=q2-10; q3:=q3+1; if q3>"1001"then q3:=q3-10; q4:=q4+1; end if; end if; else q1:=q1-3;q2:=q2+3;if q2>"1001"then q2:=q2-10; q3:=q3+1; if q3>"1001"then q3:=q3-10; q4:=q4+1; end if; end if; end if; when others=>null; e
45、nd case; end if; c1<=q1; c2<=q2; c3<=q3; c4<=q4;end process;end one;4.2计费模块仿真:通过软件仿真出来的波形图证实,该模块可以顺利地进行按里程计费,其初值为10元,根据输入的状态信号,进行相应的计数模式:里程在3公里以内时,费用维持10元不变;当里程超过3公里后,每来一个脉冲(代表运行了1公里)其数值加1.8元;超过5公里后,每来一个脉冲(代表运行了1公里)其数值加2.7元。如:下面的仿真是在3公里之内,维持起步价10元:下面的仿真是在45公里之间,以1.8元/公里增加:下面的仿真是在5公里之外,以2
46、.7元/公里增加:5.1顶层模块源程序:(原理图法来构建)原件例化法:library ieee;use ieee.std_logic_1164.all;entity taxi isport(clk,enable,sto,clr:in std_logic; c1,c2,c3,c4:out std_logic_vector(3 downto 0); c21,c22,c23,c24:out std_logic_vector(3 downto 0);end taxi;architecture behav of taxi iscomponent pulse2port(clk0:in std_logic;
47、 clr: in std_logic; enable: in std_logic; si: in std_logic_vector(1 downto 0); sto: in std_logic; fout:out std_logic);end component;component soutport(clk,enable,sto,clr:in std_logic; st:out std_logic_vector(1 downto 0);end component;component counterport(clk_div,clr1:in std_logic; si:in std_logic_vector(1 downto 0); c1,c2,c3,c4:out std_lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风创意画课件
- 方程问题工程问题课件
- 八年级劳动劳动安全易错题解析教案
- 帆船图教学课件
- 犯错思考的课件
- 妇产科院感课件
- 妇产科伦理课件
- 房产价值课件
- 8-Z-11-Z-14-Z-Heptadecatrienoic-acid-Norlinolenic-acid-生命科学试剂-MCE
- 防触电知识普及课件
- 2026福建闽投湄洲湾发电有限公司社会招聘21人笔试备考题库及答案详解
- 《新能源汽车电池及管理系统检修》 课件 项目四.动力电池热管理系统检修
- 老旧小区加装电梯连廊排水安全评估标准
- 职场新人职业规划攻略
- 2025财务制度新规定
- 2026年放射防护培训试题及答案
- 能源体系内审培训课件
- 浙江省台金七校联盟2025-2026学年高一上学期11月期中考试化学试卷
- 幼儿园小班语言《会响的小路》课件
- 助理值班员(中级)技能鉴定理论题及答案
- 2025年度化工厂危化品应急演练计划
评论
0/150
提交评论