eda课程设计出租车计费器.doc_第1页
eda课程设计出租车计费器.doc_第2页
eda课程设计出租车计费器.doc_第3页
eda课程设计出租车计费器.doc_第4页
eda课程设计出租车计费器.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

EDA课程设计报告姓 名: 戴芳洁 学 号: 201033285104 班 级: 电信101 日 期: 2013.6.22 出租车自动计费器1、课题的主要功能设计一个出租车自动计费器,计费包括起步价、行车里程计费两部分,用四位数码管显示金额,最大值为9999元,最小计价单元为 1元,行程 3公里内,起步费为8元,超过3公里,以每公里1元计费。用两位数码管显示总里程,最大为99公里。2、课题的功能的划分2.1课题系统功能模块图出租车自动计费器计费模块计量模块控制模块译码模块分频模块图2-1 系统功能模块图2.2功能模块的算法分析由图2-1系统功能原理图可知:该设计问题自顶向下可分为分频模块、计量模块、计费模块、控制模块、译码和动态扫描显示模块。2.2.1分频模块分频模块对频率为240Hz的输入脉冲进行分频,得到的频率为10Hz频率。该模块产生频率信号用于计费, 10HZ信号为1元的计费控制。2.2.2计量控制模块计量控制模块是出租车自动计费器系统的主体部分,该模块主要完成计价功能、计程功能,同时产生行程 3公里外的使能控制信号en0。其中计价功能主要完成的任务是:行程 3公里内,起步费为8元;3公里外以每公里1.元计费,计程功能主要完成的任务是:计算乘客所行驶的公里数。计程器的量程为99公里,满量程自动归零。2.2.3译码显示模块该模块经过4位BCD码译码器、计程数据(2位BCD码)动态选择输出。其中计费数据送入显示译码模块进行译码,十元、元为单位对应的数码管上显示,最大显示为99元;计程数据送入显示译码模块进行译码,最后送至以公里为单位的数码管上显示,最大显示为99公里。3、主要功能的实现3.1分频模块的实现由图3-1分频模块封装图可知:系统是对240HZ时钟脉冲信号进行分频,得到一种频率。输入为clk,输出为q1. 图3-1分频模块封装图3.2计量模块的实现由图3-2可知:本模块实现对于出租车在行驶过程中计算里程;当行驶里程大于3KM时,本模块中en0信号变为1; clk1每来一个上升沿,计量模块实现一次计数,里程数加1。图3-2计量模块封装图3.3计费功能的实现由图3-3可知:输入一个脉冲信号,同时当start为时开始计价;c0、c1、c2、c3为价格的显示信号。 图3-3计费模块封装图3.4控制功能的实现由图3-4可知:本模块主要是通过输入的使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出。 图3-4控制模块封装图3.5译码和动态扫描功能实现由图3-5可知:该模块通过case语句把不同情况的输出用七段显示数码管的输出方式 图3-5译码模块封装图3.6总体功能原理图4、程序调试4.1分频模块波形仿真图图4-1分频模块仿真波形图由图4-1可知:当输入240HZ的clk脉冲信号时,clk每出现240个脉冲时q1出现 1个,相当于计费1元,帮助计费。4.2计量模块波形仿真图图4-2计量模块波形仿真图由图4-2可知:由于讲输入参数fin一直设为高,将stop一直设为低。所以k1、k0记录路程的输出量有值。4.3计费模块波形仿真图图4-3计费模块波形仿真图由图4-3可知:输入一个脉冲信号,同时当start为高时开始计价;c0、c1、c2、c3为价格的显示信号,逢9后一位将进1。4.4控制模块波形仿真图图4-4控制模块波形仿真图由图4-4可知:本模块主要是通过两个不同的输入使能信号,对两个输入脉冲进行选择输出,使能信号是计量模块中的输出,两个输入脉冲是分频模块输出的16HZ、10HZ的脉冲。4.5译码显示模块波形仿真图图4-5译码模块波形仿真图由图4-5可知:首先以一个case语句进行通道的选择,以8为二进制表示。当某一位为1时,表示选择该通道接着。接着又以一个case语句对所选的通道进行动态扫描,由于时间极小,因此在我们用肉眼感觉是同时显示出来的。4.6总模块的波形仿真图图4-6总模块的波形仿真图5、总结本设计采用VHDL语言完成了具有计费、显示等功能的出租车计费系统,该设计的可靠性高,成本低,通用性强即在不改变电路结构的前提下可根据各地区的需求在VHDL程序中设置各种参数,适应各地区出租车计费的需求,还可以根据各地区需求增加系统功能。此出租车计费器的设计采用了硬件描述语言的自顶向下的设计方法,将整个系统分为几个相对独立的模块分别设计、仿真、最后连成整个系统集中仿真,很大程度上提高了设计的效率。最后在试验箱上进行检测,实验现象是:计费器的初始值是8。然后按开始键,里程数以一定频率增加,3以后计费器的跳动频率和里程数的跳动频率保持一致。通过此次课程设计,让我进一步了解了EDA,培养了我发现问题与解决问题的能力。查找了大量资料后选择了一个模板,按照自己所需要的改写已有程序,这过程碰到了相当的困难。经过同学的帮助和查找差不多的例子后,终于实现了设计。6、程序代码顶层文件library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity chuzuche isport ( clk240,start,fin :in std_logic; sg1,sg2,sg3,sg4,sg5,sg6:out std_logic_vector(6 downto 0); end chuzuche;architecture Behavioral of chuzuche iscomponent fp -实现对分频模块的例化 port(clk: in std_logic; q1: out std_logic); end component; component jl -实现对计量模块的例化 port( s,fin,clk1: in std_logic; en0:inout std_logic; k1,k0: inout std_logic_vector(3 downto 0); end component;component kz -实现对控制模块的例化 port( clkin,e0,clk_in1:in std_logic; clk3:out std_logic); end component; component jf -实现对计费模块的例化 port(clk2,s:in std_logic; c0,c1,c2,c3: inout std_logic_vector(3 downto 0); end component;component ym -实现对译码和动态扫描模块的例化port(clk :in std_logic; k1,k0,c3,c2,c1,c0 :in std_logic_vector(3 downto 0); sg11,sg12,sg13,sg14,sg15,sg16:out std_logic_vector (6 downto 0); end component;signal m1,n0,l:std_logic; -定义中间信号signal temp0,temp1,p3,p2,p1,p0:std_logic_vector(3 downto 0); begina1: fp port map(clk240,m1);a2:jl port map(start,fin,m1,n0,temp1,temp0);a3:kz port map(clk240,n0,m1,l);a4: jf port map(l,start,p0,p1,p2,p3);a5:ym port map(clk240,temp1,temp0,p3,p2,p1,p0,sg1,sg2,sg3,sg4,sg5,sg6);end Behavioral;分频模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity fp isport ( clk :in std_logic; q1: out std_logic); -频率为16的时钟 end fp;architecture Behavioral of fp isbeginprocess(clk) variable cout1:integer range 0 to 929900000; beginif clkevent and clk=1 then if cout1=9990000 -240hz分频为1hzthen cout1:=0;q1=1; else cout1:=cout1+1;q1=0;end if;end if;end process;end Behavioral;计量模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity jl isport(s,fin,clk1: in std_logic; -计量开始信号 en0:inout std_logic; -计量控制信号 k1,k0: inout std_logic_vector(3 downto 0); -路程的计量 end jl;architecture Behavioral of jl isbeginprocess(clk1)begin if clk1event and clk1=1 then -驱动信号发挥作用 if s=0 then en0=0;k1=0000;k0=0000; -初始化值 elsif (fin=1) then if (k0=1001) then k0=0000; if (k1=1001) then k1=0000; else k1=k1+1; end if; else k000000010) then en0=1; -当路程大于3km时 ,使能信号en0开始发挥作用 else en0=0; end if; else en0=0; end if; end if;end process;end Behavioral;控制模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity kz isport( clkin,e0,clk_in1:in std_logic; -输入脉冲 clk3:out std_logic); -输出脉冲end kz;architecture Behavioral of kz isbeginprocess(clkin)beginif clkinevent and clkin=1 then if (e0=1) then -根据条件选择所需的通道 clk3=clk_in1; end if;end if;end process;end Behavioral;计费模块library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following library declaration if instantiating- any Xilinx primitives in this code.-library UNISIM;-use UNISIM.VComponents.all;entity jf isport(clk2,s:in std_logic; -计费驱动信号 -计费开始信号 c0,c1,c2,c3: inout std_logic_vector(3 downto 0);-费用显示信号end jf;architecture Behavioral of jf isbeginprocess(clk2,s)begin if (s=0) then c3=0000;c2=0000;c1=0000;c0=1000; elsif clk2event 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 c0a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0)a(6 downto 0) null;end case;case c1 iswhen 0000=b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0)b(6 downto 0) null;end case;case c2 iswhen 0000=c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0)c(6 downto 0) null;end case;case c3 iswhen 0000=d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0)d(6 downto 0) null;end case;case k0 iswhen 0000=e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0)e(6 downto 0) null;end case;case k1 iswhen 0000=f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0)f(6 downto 0) null;end case;end if;end process;sg11=a;sg12=b;sg13=c;sg14=d;sg15=e;sg16=f;end Behavioral;袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论