基于EDA层次出租车计费器实验设计报告.doc

上传人:scccc 文档编号:11276055 上传时间:2021-07-20 格式:DOC 页数:21 大小:815.83KB
返回 下载 相关 举报
基于EDA层次出租车计费器实验设计报告.doc_第1页
第1页 / 共21页
基于EDA层次出租车计费器实验设计报告.doc_第2页
第2页 / 共21页
基于EDA层次出租车计费器实验设计报告.doc_第3页
第3页 / 共21页
基于EDA层次出租车计费器实验设计报告.doc_第4页
第4页 / 共21页
基于EDA层次出租车计费器实验设计报告.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于EDA层次出租车计费器实验设计报告.doc》由会员分享,可在线阅读,更多相关《基于EDA层次出租车计费器实验设计报告.doc(21页珍藏版)》请在三一文库上搜索。

1、基于EDA层次出租车计费器实验设计报告基于EDA的出租车计费器实验设计报告 指导老师: 黄旭 姓名: 陈昊亮 学号: 1228401033 专业: 通信工程 班级: 12通信 日期: 2014.6.10目 录一、引言3二、设计流程 1、实验任务及要求4 2、实验原理4三、系统设计 1、设计思路52、系统总体模块图53、各模块功能实现(1) 十分频模块(PULSE) 1.1十分频模块源程序6 1.2十分频模块仿真8(2) 控制模块 (SOUT) 2.1控制模块源程序8 2.2控制模块仿真10(3) 里程计数模块 (COUNTER2) 3.1里程计数模块源程序10 3.2里程计数模块仿真12(4)

2、 计费模块 (COUNTER) 4.1计费模块源程序12 4.2计费模块仿真15 (5)顶层模块(ALL) 5.1顶层模块原理图16 5.2顶层模块仿真17四、硬件下载实验现象验证1、系统调试182、硬件仿真结果19五、结果分析19六、实验总结191、 引言随着我国国民经济生产总值的增加以及人民生活水平的提高,各大中小城市的出租车营运事业发展迅速,出租车已经成为人们日常出行选择较为普通的交通工具。出租车计费器是出租车营运收费的专用智能化仪表,是使出租车市场规范化、标准化的重要设备。一种功能完备,简单易用,计量准确的出租车计价器是加强出租车行业管理,提高服务质量的必需品。本设计采用VHDL硬件描

3、述语言作为设计手段,采用自顶向下的设计思路,得到一种出租车计价系统的软件结构,通过Quartus软件下进行软件仿真,再在EDA试验箱进行硬件仿真,证明所设计的电路系统完成了出租车计价的功能,各项指标符合设计要求。该设计虽然功能简单,智能化水平比较低,但仍具有一定的实用性。该设计是在VHDL的基础上对出租车计价器进行设计来实现其基本功能的,以往的出租车计价器多为基于数字电路、单片机进行的设计,但是数字电路设计的整体电路规模较大,所用的器件较多,造成故障率高,导致计价器不够准确;基于单片机的设计,虽然开发成本降低,但其外围电路较多,而且调试复杂,抗干扰能力差,从而也导致计价器不够准确。而FPGA具

4、有稳定性好、抗干扰能力强、电路实现简单、程序简单等优点,且非常适合做为出租车计价器的控制核心,所以选择用VHDL来对计价器进行设计来实现其功能。出租车计价器的实现将大大改善人们出行时因为讨价还价而带来的烦恼,从而使人们的心情比较愉悦。本设计是对出租车计价器的六个模块进行分析的,综述如下:十分频模块:该分频模块是其它模块的基础,为后续模块提供基本时钟。控制模块:系统接收到ENABLE信号(低电平),总费用变为10元,其他所有计数模块清零;当启/停开关启动时(高电平),模块根据里程信号的输入发出不同的状态信号(里程小于3公里、里程大于3公里小于5公里、里程大于5公里)驱动里程计费模块与计费模块计数

5、;当汽车暂停时发出暂停状态,此时里程计数模块与计费模块显示相应的停止计数。计费模块:该模块是基于路程模块对费用进行控制的。通过内部使能信号分别计算3公里以内、3-5公里以及5公里以后的费用。里程计算模块:该模块是对车辆行驶路程进行计数,以1MHz时钟为基础,检测行程脉冲,每达到一个时钟脉冲沿计数一次,最大路程显示为999.9公里。计费显示模块&里程显示模块:由七段数码管和译码器构成,选择实验箱上的工作模式0时,该模块不用自行设置。二、设计流程1、实验任务及要求1、实现计费功能,计费标准为: 按行驶里程收费,起步费为10.00元,并在车行3公里后再按1.8元/公里收费,当计数里程达到或超过5公里

6、时,每公里按2.7元计费,车停止不计费。2、设计动态扫描电路,能显示公里数(百位、十位、个位、十分位),能显示车费(百元、十元、元、角)。3、设计符合上述功能要求的方案,并用层次化设计方法设计该电路。4、仿真各个功能模块,并通过有关波形确认电路设计是否正确。5、完成电路全部设计后,通过系统实验箱下载验证设计的正确性。 2、实验原理里程计数模块里程显示控制模块里程信号输入启/停开关 状态输出计费模块CLR计费显示图2 系统顶层框图三、系统设计1、 设计思路根据设计要求,系统的输入时钟信号CLK,启动信号ENABLE,暂停/启动信号STO,清零信号CLR。系统得输出信号有:总费用数C4C1,行驶里

7、程C24C21。系统有一个脉冲输入信号CLK,其中CLK将根据设计要求分频成十分频、一百分频分别作为计程和计费的脉冲。两个控制输入开关ENABLE,STO;控制过程为:ENABLE作为计费开始开关,当ENABLE为高电平时,系统开始根据输入的情况计费。STO为0停止计费。一个清零输入开关,CLR为零,则立即清零,系统停止工作,重新开始计程计费。价格开始归为起步价10.00元。并在车行3公里后再按1.8元/公里收费,当计数里程达到或超过5公里时,每公里按2.7元计费,车停止不计费。2、系统总体模块图 PULSE2为十分频的分频器,COUNTER为计费模块,COUNTER2为里程计算模块,SCAN

8、_LED为计费显示模块,SCAN_LED2为里程显示模块,SOUT为计程车状态控制模块。图3 仿真系统总框图3、各模块功能的实现(1)十分频模块PULSE该模块实现将时钟信号10分频功能。该分频模块是其它模块的基础,为之后的模块提供时钟信号。假设CLK0输入的一个脉冲代表0.1公里,则FOUT输出的一个脉冲代表1公里。为了同步控制,并在暂停重启后,仍能继续正确的计数,所以在原来的基础上,增添了CLR,ENABLE,SI1.0和STO信号。1.1十分频模块源程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNE

9、D.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: 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) BE

10、GIN IF CLR=0 THEN -当清零信号为零时 清零Q=0;CNT=0000; ELSIF CLK0EVENT AND CLK0=1 THEN IF STO=1 THEN Q QIF CNT1001 THEN CNT=CNT+1; Q=0; ELSE CNT=0000; Q NULL;END CASE;END IF; END IF; END PROCESS;PROCESS(CLK0) BEGIN IF CLK0EVENT AND CLK0=1 THEN FOUT= Q; END IF; END PROCESS;END ONE;*因为敏感信号为时钟信号,所以,要每十个变产生一个脉冲就需要

11、,在第十个脉冲产生第十一个下降,所以CNT0); ELSIF CLKEVENT AND CLK=1 THEN IF STO=1 THEN STATE:=00; CQI:=CQI; ELSIF ENABLE =1 THEN CQI:=CQI+1; IF CQI33 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个脉冲的延迟,所以手动调节分段的部分,向后延时三个脉冲

12、。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

13、_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

14、);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;Q22=0000;Q23=0000;Q2

15、4 Q21=Q21;Q22=Q22;Q23=Q23;Q24IF Q211001 THEN Q21=Q21+1; ELSE Q21=0000;Q221000 THEN Q22=0000;Q231000 THEN Q23=0000;Q24 NULL; END CASE; END IF; END PROCESS;PROCESS(CLK_DIV2) BEGIN IF CLK_DIV2EVENT AND CLK_DIV2=1 THEN C21= Q21;C22= Q22;C23= Q23;C24Q1:=Q1;Q2:=Q2;Q3:=Q3;Q4:=Q4;WHEN 01 =Q1:=0000;Q2:=0000;

16、Q3:=0001;Q4:=0000;WHEN 10 = IF Q11001THEN Q2:=Q2-10; Q3:=Q3+1; IF Q31001THEN Q3:=Q3-10; Q4:=Q4+1; END IF; END IF;ELSE Q1:=Q1-2;Q2:=Q2+2;IF Q21001THEN Q2:=Q2-10; Q3:=Q3+1; IF Q31001THEN Q3:=Q3-10; Q4:=Q4+1; END IF; END IF;END IF; WHEN 11= IF Q11001THEN Q2:=Q2-10; Q3:=Q3+1; IF Q31001THEN Q3:=Q3-10; Q4

17、:=Q4+1; END IF; END IF; ELSE Q1:=Q1-3;Q2:=Q2+3;IF Q21001THEN Q2:=Q2-10; Q3:=Q3+1; IF Q31001THEN Q3:=Q3-10; Q4:=Q4+1; END IF; END IF; END IF; WHEN OTHERS=NULL; END CASE; END IF; C1=Q1; C2=Q2; C3=Q3; C4CLK,ENABLE=ENABLE,STO=STO,CLR=CLR,FOUT=CK10,SI= STI);U2:SOUT PORT MAP(CLK=CLK,ENABLE=ENABLE,STO=STO,

18、CLR=CLR,ST=STI);U3:COUNTER PORT MAP(CLK_DIV=CK10,CLR1=CLR,SI=STI,C1=C1,C2=C2,C3=C3,C4=C4);U4:COUNTER2 PORT MAP(CLK_DIV2=CLK,CLR2=CLR,SI2=STI,C21=C21,C22=C22,C23=C23,C24=C24);END behav;5.2顶层模块仿真:四、硬件下载实验现象验证1、系统调试(1)选择工作模式0(2) 引脚设定(如下图)复位信号(CLR),对应引脚为PIO2,接到PIN-10;启动信号(ENABLE),对应引脚为PIO3,接到PIN-12;暂停信号

19、(STO),对应引脚为PIO4,接到PIN-13;时钟信号(CLK),对应引脚为CLOCK0,接到PIN-126;计费输出信号C4、C3、C2、C1,对应引脚PIO16PIO31;里程输出信号C24、C23、C22、C21,对应引脚PIO32PIO44。(3) 下载将顶层文件下载到实验箱上,开始硬件仿真。2、硬件仿真结果按下启动键后,里程模块显示0000,计费模块显示0010,按下复位键开始计数,里程模块以0001依次向上增,计费模块显示0100;当达到0040时,计费模块显示0118;当达到0060时,计费模块显示0163;按下暂停键,里程显示数码管与计费显示数码管停止计数,即出租车计费器系

20、统的设计已完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能。虽然刚开始存在延时,但是经过反复地分析,调试,最终通过手工延时,完成了仿真和实验。5、 结果展示、分析出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动、停止、暂停等功能,并设计动态扫描电路显示车费数目,由动态扫描电路来完成。车暂时停止不计费,车费保持不变。若停止则车费保持原有的值不变,等待再次启动。清零后,所有显示都清零。各模块完成后,在将它们组合成完整的出租车系统。六、实验总结通过本次的出租车的设计,让我对于VHDL编程有了更加熟练的掌握,对于实验仿真数据的分析,也让我对于QuartusII这个软件有了更深入的了解。在实验过程中,由于实验结果的误差,导致一次又一次地对程序进行分析、修改,同时按照实验要求,适当的对原理图进行了修改,最终使完成了出租车计数更加地准确,达到了要求,具有实际的使用价值。在仿真过程中,由于门电路的延时,当时钟信号小于20ns时,门电路的延迟会对结果造成极大的影响,从而影响实验的结果。参考文献1 潘松,黄继业EDA技术实用教程VHDL版北京:科学出版社,201021

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1