1、EDA课程设计报告出租车计价器EDA课程设计报告-出租车计价器课 程 设 计课程设计名称: 出租车计价器 专 业 班 级 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 1 设计任务及要求出租车计价器根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并在行程中同步显示车费值。从起步开始,行程3公里内,且等待累计时间2分钟内,起步费10元;3公里以外以每公里1.6元计费,等待累计时间2分钟外以每分钟1.5元计费。并能显示行驶公里数、等待累计时间、总费用。设计的主要技术指标:(1)计价范围:0999.9元 计价分辨率:0.1元(2)计程范围:099公里 计程分辨率:1公里(3)
2、计时范围:059分 计时分辨率:1分 本次设计中假设出租车的速度传感器具有出租车每行驶1Km提供1000个脉冲信号的特性。当行驶速度小于等于6KM/h时为等待。本设计的最终任务是显示出租车的等待时间和行驶里程,并计算出所需费用。根据要求需要进行如下分工,首先要有一个分频模块()产生系统工作用的基准信号1HZ,供系统中的有关模块计时用。其次要有一个判断等待与否的模块(DDPB),再者就是要有计时和计程模块(和),最后要有计费模块和显示译码模块(和)。2设计原理及总体框图(1)设计总体框图 图总设计框图(2)设计总原理图 图 设计总原理图设计总原理:测控FPGA芯片通过采集速度传感器脉冲信号WCL
3、K进行行驶里程计算,利用外部脉冲信号CLK1产生标准时钟信号,用来计算等待时间,最后根据行驶里程、等待时间来计算计价值。并用译码电路显示行驶里程、等待时间和计价值。3 程序设计1VHDL语言简单介绍 VHDL语言(VHSIC Hardware Description Language,甚高速集成电路硬件描述语言)是一种设计、仿真、综合的标准硬件描述语言,是对可编程逻辑器件进行开发与设计的重要工具,其优点是:支持自上而下和基于库的设计,支持范围广,具有多层次描述系统硬件功能的能力。VHDL语言已成为IEEE的一种工业标准,是实现信息系统硬件开发所必备的知识和技能。VHDL程序结构的显著特点是,任
4、何一个工程设计或称设计实体(可以是一个门电路、一个芯片、一块电路板乃至整个系统)都可以分成内外两个部分,外面的部分称为可视部分,用实体来说明端口特性;里面的部分称为不可视部分,用结构体来说明其内部功能和算法,由实际的功能描述语句组成。2、模块程序及相应说明(1)分频器模块 -FPQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY FPQ IS PORT(CLK: IN STD_LOGIC; -CLK=100HZ CLK1
5、HZ: OUT STD_LOGIC); -CLK1HZ=1HZEND ENTITY FPQ;ARCHITECTURE ART OF FPQ IS SIGNAL CNT50: INTEGER RANGE 0 TO 49; SIGNAL CLK1: STD_LOGIC; BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF CNT50=49 THEN CNT50=0; CLK1= NOT CLK1; -进行100分频 ELSE CNT50=CNT50+1; END IF; END IF; CLK1HZ=CLK1;END PROCESS;END
6、 ART;由于现实我们只有某些频率的信号,而可能没有我们需要的频率的信号,因此我们需要用到分频器来用已有频率的时钟信号来产生我们需要的频率的时钟信号。本实验是将100HZ的信号分频后产生1HZ的基准时钟信号。(2)等待判别模块-等待判别模块DDPB.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDPB IS PORT(START,WCLK,CLK1HZ: IN STD_LOGIC; DDBZ: OUT STD_LOG
7、IC);END DDPB;ARCHITECTURE ART OF DDPB IS SIGNAL T1min :STD_LOGIC; SIGNAL WCLK1: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(START,CLK1HZ) -产生1分钟的周期性信号 VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THEN CNT60:=00000000; T1min=0; ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 TH
8、EN -CNT60=60 T1min=1; CNT60:=00000000; ELSE CNT60:=CNT60+1; T1min=0; END IF; END IF;END PROCESS;PROCESS(START,WCLK,T1min) -对WCLK进行一分钟内上升沿的计算 BEGIN IF START=1 THEN WCLK1=00000000; ELSIF WCLKEVENT AND WCLK=1 THEN IF T1min=1 THEN WCLK1=00000000; ELSE WCLK1=WCLK1 +1; END IF; END IF;END PROCESS;PROCESS(W
9、CLK1,T1min) -当速度等于零时等待 BEGIN IF T1minEVENT AND T1min=1 THEN IF WCLK1=00000010” DDBZ=1; ELSE DDBZ=0; END IF ;END IF;END PROCESS;END ART;汽车启动开始计价后,等待时间和行驶时间的价格不一样,因此要产生等待时间的标志,本设计根据WCLK脉冲和时间信号CLK1HZ,来判断汽车行驶的速度是否小于等于6KM,如果是,则产生等待标志。(3)等待时间计算模块-等待计时模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD
10、_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DDJS IS PORT(START,CLK1HZ,DDBZ: IN STD_LOGIC; DDSJ:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); SJBZ: OUT STD_LOGIC);END DDJS;ARCHITECTURE ART OF DDJS IS SIGNAL T1min :STD_LOGIC; SIGNAL FS,FG: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(START,CLK1HZ) -产生1分
11、钟的周期性信号 VARIABLE CNT60: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF START=1 THEN CNT60:=00000000; T1min=0; ELSIF CLK1HZEVENT AND CLK1HZ=1 THEN IF CNT60=00111100 THEN T1min=1; CNT60:=00000000; ELSE CNT60:=CNT60+1; T1min=0; END IF; END IF;END PROCESS;PROCESS(START,DDBZ,T1min) BEGIN IF START=1 THEN FS=0000;
12、 FG=0000; ELSIF T1minEVENT AND T1min=1 THEN -一分为单位计算等待时间 IF DDBZ=1 THEN -有等待标志信号产生时开始等待时间的计算 IF FG=9 THEN FG=0000; IF FS=5 THEN FS=0000;-当时间为59分钟时清零 ELSE FS=FS+1; END IF; ELSE FG=FG+1; END IF;END IF;END IF;END PROCESS; DDSJ(7 DOWNTO 4)= FS; DDSJ(3 DOWNTO 0)= FG;END ART;根据产生的等待标志进行计时计算,当等待标志DDBZ=1时,利
13、用产生的分脉冲进行以分为单位的等待时间计算。(4)里程计算模块-里程计算模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY LCJS IS PORT(START,WCLK,DDBZ: IN STD_LOGIC; LCZ:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); LCBZ: OUT STD_LOGIC);END LCJS;ARCHITECTURE ART OF LCJS IS SIGNAL QMZ :S
14、TD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL FS,FG: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(START,WCLK) VARIABLE MZ: STD_LOGIC_VECTOR(11 DOWNTO 0); BEGINMZ:=“000000000000”;QMZ:= “00000000”; IF WCLKEVENT AND WCLK=1THEN MZ:=MZ+1; IF MZ:= “001111101000” QMZ=3 THEN LCBZ=1; -当行驶里程大于3Km时产生标志信号 END IF; END IF;
15、END IF; END PROCESS;LCZ=QMZ;END ART;当DDBZ=0时,汽车处于行驶过程中,根据脉冲(汽车行驶产生一个脉冲)计算行驶里程。由于行驶里程分辨率为公里,因此需要先以米为单位计算到时行驶里程再加。(5)计费值模块-计费模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY JFZ IS PORT(START: IN STD_LOGIC; LCZ:IN STD_LOGIC_VECTOR(7 DOWNTO
16、0); DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0); JJZ:OUT INTEGER RANGE 0 TO 9999);END ENTITY JFZ;ARCHITECTURE ART OF JFZ IS SIGNAL JFZ1 : INTEGER RANGE 0 TO 9999; SIGNAL LCZ1,DDSJ1,DDSJ2,DDSJ3 : INTEGER RANGE 0 TO 199; BEGIN LCZ1=CONV_INTEGER(LCZ); -里程值 DDSJ2=CONV_INTEGER(DDSJ(7 DOWNTO 4);DDSJ3=CONV_INTEGE
17、R(DDSJ(3 DOWNTO 0); DDSJ1=DDSJ2*10+DDSJ3; -等待时间计算 PROCESS(START,LCZ,DDSJ) BEGIN IF START=1 THEN -车启动显示起步价 JFZ1=30; ELSIF LCZ1=3 THEN -车行驶中的费用计算 JFZ1=30; ELSIF LCZ1=3 THEN JFZ13 THEN JFZ1=30+(LCZ1-3)*10+DDSJ1*0.5; END IF; END IF;END IF;END IF;END PROCESS; JJZ=JFZ1;END ART;由行驶里程和等待时间,再根据计费标准进行计价值的计算。(
18、6)译码显示模块-译码模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY YIMA1 IS PORT(LCZ:IN STD_LOGIC_VECTOR(7 DOWNTO 0); JJZ:IN INTEGER RANGE 0 TO 9999; DDSJ:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LCZSX,LCZGX,DDSJSX,DDSJGX,JJZBX,JJZSX,JJZGX:OUT STD_LOGIC
19、_VECTOR(3 DOWNTO 0); END YIMA1;ARCHITECTURE ART OF YIMA1 IS SIGNAL LCZ1 : INTEGER RANGE 0 TO 99 ; SIGNAL LCZS,LCZG,JJZB,JJZS,JJZG: INTEGER RANGE 0 TO 9 ;BEGIN DDSJSX=DDSJ(7 DOWNTO 4); DDSJGX=DDSJ(3 DOWNTO 0); -等待时间译码显示 LCZ1=CONV_INTEGER(LCZ);END;将等待时间、里程值和计价值的百位十位个位转换成码,通过译码器在七段数码管中显示出来。4 编译及仿真()仿真软
20、件Quartus II的简单介绍和说明随着技术的发展,用户对开发工具的要求越来越高,Altera 公司适时推出了新的开发工具Quartus II 软件。Quartus II 集成环境包括以下内容:系统级设计、嵌入式软件开发、可编程逻辑器件(PLD)设计、综合,布局和布线、验证和仿真。Quartus II 集成环境除支持MAX 系列、FLEX 系列、ACEX1K 系列器件外,还支持Altera 公司的APEX20K 系列、Stratix 系列、Cyclone 系列和MAX II 系列等新型CPLD/FPGA 器件。Quartus II 设计软件根据设计者的需要提供了一个完整的多平台开发环境,它包
21、含整个FPGA 和CPLD设计阶段的解决方案。Quartus II 软件的开发流程如下图所示。图 QuartusII 软件的开发流程()仿真波形图图等待判别模块波形图图里程值计算模块波形图等待时间计算模块波形图图计价值模块波形图图译码模块波形图图顶层文件波形图5 硬件调试与结果分析通过对设计电路的分析,该实验可选择NO.0号电路进行硬件验证,键3对应于START输入信号,WCLK对应于CLK2,CLK1对应于CLK0,八个数码管作为等待时间、里程值和计价值的显示用。选定电路图之后,再选择ACEX1K/EP1K30TC144-3器件,输出信号进行引脚锁定。下载完成后便可进行硬件验证和调试。由于本
22、次课程设计我用的是Quartus 软件,下载出现问题,不能下载。就遗憾的没有进行硬件验证。下面是仿真时序图: 图10 仿真时序图译码过程由于有时间延迟和中间信号替换,导致仿真时序图出现一些混乱值,但持续时间很短,不影响译码显示。6 参考文献(1)黄智伟. FPGA系统设计与实践 电子工业出版社 2005.1(2)焦素敏. EDA课程设计指导书 河南工业大学 2008.2(3)焦素敏. EDA技术基础 清华大学出版社 2009.8(4)谭会生.EDA技术综合应用实例与分析 西安电子科技大学出版社 2004.11(5)朱正伟.EDA技术及应用 清华大学出版社 2006.1 (6)阎石.数字电子技术基础 高等教育出版社 2006.5心得体会
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1