皮皮网

皮皮网

【台湾网站源码叫什么】【html导入源码】【npm 发布源码】个人时间出租系统源码_个人时间出租app

时间:2024-11-15 01:17:11 分类:综合

1.EDA课程设计,用VHDL编程做出租车计费器
2.EDA 出租车计费器 求大神帮忙 谢谢了 很急啊!个人个人!时间时间!出租出租
3.怎么赚佣金?

个人时间出租系统源码_个人时间出租app

EDA课程设计,用VHDL编程做出租车计费器

       è¯¾ç¨‹è®¾è®¡å†…容与要求

       1,用开关按键表示脉冲,每个脉冲代表米,个脉冲1公里,每公里1.4元,能同步显示里程和费用;

       2,低于2公里5元计费,高于2公里总费用=起步费用+(里程-2公里)*里程单价+

       ç­‰å€™æ—¶é—´*等后单价;

       3,等候时间大于2分钟,按每分钟1.3元计费;

       4,可以设定起步价和里程单价。

        一、设计原理与技术方法:

       åŒ…括:电路工作原理分析与原理图、元器件选择与参数计算、电路调试方法与结果说明;

       è½¯ä»¶è®¾è®¡è¯´æ˜Žä¹¦ä¸Žæµç¨‹å›¾ã€è½¯ä»¶æºç¨‹åºä»£ç ã€è½¯ä»¶è°ƒè¯•æ–¹æ³•ä¸Žè¿è¡Œç»“果说明。

        根据设计要求,系统的输入信号clk,计价开始信号start,等待信号stop,里程脉冲信号fin。系统的输出信号有:总费用数C0—c3,行驶距离k0—k1,等待时间m0—m1等。系统有两个脉冲输入信号clk_k,系统fin,其中clk_k将根据设计要求分频成hz,hz和1hz分别作为公里计费和超时计费的脉冲。两个控制输入开关start,stop;控制过程为:start作为计费开始的开关,当start为高电平时,系统开始根据输入的情况计费。当有乘客上车并开始行驶时,fin脉冲到来,进行行驶计费,此时的stop需要置为0;如需停车等待,就把stop变为高电平,

       å¹¶åŽ»é™¤fin输入脉冲,进行等待计费;当乘客下车且不等待时,直接将start置为0,系统停止工作;价格开始归为起步价5.0元。

        整个设计由分频模块,计量模块,计费模块,控制模块和显示模块五个部分组成。

       å…¶ä¸­è®¡é‡æ¨¡å—是整个系统实现里程计数和时间计数的重要部分;控制模块是实现不同计费方式的选择部分,根据所设计的使能端选择是根据里程计费还是根据等待时间计费,同时设计通过分频模块产生不同频率的脉冲信号来实现系统的计费。计量模块采用1hz的驱动信号,计费模块采用hz,hz的驱动信号;计量模块每计数一次,计量模块就实现次或者次计数,即为实现计时的1.3元/min,计程时的1.4元/km的收费。组成框图如下所示:

       1.百进制模块:

       å®žçŽ°ç™¾ç±³è„‰å†²çš„驱动信号,元件框图如图3所示:

       å›¾3 百进制模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity baijinzhi is

       port(start,clk2: in std_logic; --秒脉冲

        a: out std_logic_vector(3 downto 0));

       end baijinzhi;

       architecture rt1 of baijinzhi is

       signal count_1:std_logic_vector(3 downto 0);

       begin

        a<=count_1;

       process(start,clk2)

        begin

        if(start='0')then

        count_1<="";

        elsif(clk2'event and clk2='1')then

        if(count_1="")then

        count_1<="";

        else

        count_1<=count_1+'1';

        end if;

        end if;

       end process;

       end rt1

       2.计费模块

       ; 实现里程和等候时间的计费并输出到显示,元件框图4如下:

       å›¾4 计费模块框图

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.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 rt1 of jifei is

       begin

       process(clk2,start)

       begin

        if start='0'then c3<="";c2<="";c1<="";c0<=""; --起步价5元

        elsif clk2'event and clk2='1'then

        if c0="" then c0<="";

        if c1="" then c1<="";

        if c2="" then c2<="";

        if c3="" then c3<="";

        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 rt1;

       3.公里模块

       å®žçŽ°åŽ†ç¨‹çš„计数和输出计费脉冲,元件框图5如下:

       å›¾5 公里模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity gongli is

       port(clk1,start: in std_logic; --百米脉冲

        k1,k2,k3,k4: out std_logic_vector(3 downto 0); --里程显示

        temp2 : out std_logic);

       end gongli;

       architecture rt1 of gongli is

       signal count_1: std_logic_vector(3 downto 0);

       signal count_2: std_logic_vector(3 downto 0);

       signal count_3: std_logic_vector(3 downto 0);

       signal count_4: std_logic_vector(3 downto 0);

       begin

        k1<=count_1;

        k2<=count_2;

        k3<=count_3;

        k4<=count_4;

        process(start,clk1)

        begin

        if(start='0')then

        count_1<="";

        count_2<="";

        count_3<="";

        count_4<=""; ---公里清零

        elsif(clk1'event and clk1='1')then

        if(count_1="")then --公里计数器

        count_1<="";count_2<=count_2+1;temp2<='1';

        if(count_2="")then

        count_2<="";count_3<=count_3+'1';

        if(count_3="")then

        count_3<="";count_4<=count_4+'1';

        end if;

       end if;

        else

        count_1<=count_1+'1';temp2<='0';

        end if;

        end if;

        end process;

        end rt1;

       4.输出模块

       å®žçŽ°æ‰€æœ‰æ•°æ®çš„输出,元件框图6如下:

       å›¾6 输出模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity shuchu is

       port(y: in std_logic_vector(3 downto 0);

        e: out std_logic_vector(6 downto 0));

       end shuchu;

       architecture rt1of shuchu is

       begin

       process

       begin

        case y is

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when""=>e<="";

        when others=>e<="";

        end case;

       end process;

       end rt1;

       5.显示模块

       å®žçŽ°æ‰€æœ‰æ•°æ®çš„显示,元件框图7如下:

       å›¾7 显示模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity xianshi is

       port(start: in std_logic;

       a:in std_logic_vector(3 downto 0); --选择信号

        c1,c2,c3,c4,out1,out2,out3,out4:in std_logic_vector(3 downto 0); --里程显示,时间显示输入

        y:out std_logic_vector(3 downto 0)); --里程显示,时间显示输出

       end xianshi;

       architecture rt1 of xianshi is

       begin

       process

       begin

        if(start='0')then

        y<="";

        else case a is

        when ""=> y<=c1 ;

        when ""=> y<=c2 ;

        when ""=> y<=c3 ;

        when ""=> y<=c4 ;

        when ""=> y<=out1 ;

        when ""=> y<=out2;

        when ""=> y<=out3 ;

        when ""=> y<=out4;

        when others =>y<= "";

        end case;

        end if;

       end process;

       end rt1;

       6.dian模块

       å›¾8 dian模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all;

       entity dian is

       port(a: in std_logic_vector(3 downto 0);

        e: out std_logic);

       end dian;

       architecture rt1 of dian is

       begin

       process

       begin

        case a is

        when ""=>e<='1';

        when ""=>e<='1';

        when others=>e<='0';

        end case;

       end process;

       end rt1;

       ä¸‰ã€ä¸­å„个模块设计分析

       ç³»ç»Ÿæ€»ä½“顶层框图如下:

       ç³»ç»Ÿæ€»ä½“顶层框图

       ç¨‹åºæœ€ç»ˆåŠŸèƒ½å®žçŽ°æ³¢å½¢ä»¿çœŸ

       1. 分频模块

       ç”±äºŽå®žéªŒç®±ä¸Šæ²¡æœ‰hz和hz的整数倍时钟信号,因此采用频率较大的khz进行分频,以近似得到hz,hz和1hz的时钟频率。通过以上三种不同频率的脉冲信号实行出租车行驶,等待两种情况下的不同计费。模块元件如下:

        分频模块框图

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

        entity fenpin is

       port(clk_k:in std_logic; --系统时钟

        clk_:buffer std_logic; --分频

        clk_:buffer std_logic; --分频

        clk_1 : buffer std_logic); --1分频

       end fenpin ;

       architecture rt1 of fenpin is

       signal q_:integer range 0 to ; --定义中间信号量

       signal q_:integer range 0 to ;

       signal q_1:integer range 0 to ;

        begin

        process(clk_k)

        begin

       If(clk_k' event and clk_k='1')then

       If q_= then q_<=0;clk_<=not clk_;

        else q_<=q_+1;

        end if; --得hz频率信号

       If q_= then q_<=0;clk_<=not clk_;

        else q_<=q_+1;

        end if; --得hz频率信号

       If q_1= then q_1<=0;clk_1<=not clk_1;

        else q_1<=q_1+1;

        end if; --得1hz频率信号

       end if;

       end process;

        end rt1;

       2. 计量模块

       è®¡é‡æ¨¡å—主要完成计时和计程功能。

       è®¡æ—¶éƒ¨åˆ†ï¼šè®¡ç®—乘客的等待累积时间,当等待时间大于2min时,本模块中en1使能信号变为1;当clk1每来一个上升沿,计时器就自增1,计时器的量程为min,满量程后自动归零。

       è®¡ç¨‹éƒ¨åˆ†ï¼šè®¡ç®—乘客所行驶的公里数,当行驶里程大于2km时,本模块中en0使能信号变为1;当clk每来一个上升沿,计程器就自增1,计程器的量程为km,满量程后自动归零。

       å…ƒä»¶æ¡†å›¾ä¸ºï¼š

       è®¡é‡æ¨¡å—框图

       è®¡é‡æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_arith.all;

       use ieee.std_logic_unsigned.all;

       entity jiliang is

       port(start: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 ; --计时范围0~

       begin

       process(clk1)

       begin

       if(clk1'event and clk1='1')then

        if start='0' then

        w<=0;en1<='0';en0<='0';m1<="";

        m0<="";k1<="";k0<="";

       elsif stop='1' then --计时开始信号

        if w= then

        w<=0;

        else w<=w+1;

       end if;

       if m0="" then

        m0<="";

       if m1="" then

        m1<="";

       else m1<=m1+1;

       end if;

       else m0<=m0+1;

       end if;

       if stop='1' then en0<='0';

       if m1&m0>"" then en1<='1'; --若等待时间大于2min则en1ç½®1

       else en1<='0';

       end if;

       end if;

       elsif fin='1' then --里程计数开始

       if k0="" then k0<="";

       if k1="" then k1<=""; --计程范围0~

       else k1<=k1+1;

       end if;

       else k0<=k0+1;

       end if;

       if stop='0' then

       en1<='0';

       if k1&k0>"" then

       en0<='1'; --若行使里程大于2km,则en0ç½®1

       else en0<='0';

       end if;

       end if;

       end if;

       end if;

       end process;

       end rt2;

       3. 控制模块

        本模块主要是通过计量模块产生的两个不同的输入使能信号en0,en1,对每个分频模块输出的hz,hz的脉冲进行选择输出的过程;本模块实现了双脉冲的二选一;最终目的为了计费模块中对行驶过程中不同的时段进行计价。

       æ¨¡å—元件如下:

       æŽ§åˆ¶æ¨¡å—框图

       æŽ§åˆ¶æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.all;

       use IEEE.std_logic_arith.all;

       use IEEE.std_logic_unsigned.all;

        entity kongzhi is

       port(en0,en1:in std_logic; --使能选择信号

        clk_in1:in std_logic; --分频输入信号

        clk_in2:in std_logic; --分频输入信号

        clk_out:out std_logic); --输出信号

        end kongzhi;

        architecture rt3 of kongzhi is

       begin

       process(en0,en1)

       begin

        if en0='1' then --实现二选一功能

        clk_out<=clk_in1;

        elsif en1='1' then

        clk_out<=clk_in2;

        end if;

        end process;

       end rt3;

       4.计费模块

        当计费信号start一直处于高电平即计费状态时,本模块根据控制模块选择出的信号从而对不同的单价时段进行计费。即行程在2km内,而且等待累计时间小于2min则为起步价5元;2km外以每公里1.4.元计费,等待累积时间超过2min则按每分钟1.3元计费。c0,c1,c2,c3分别表示费用的显示。

       æ¨¡å—元件为:

       è®¡è´¹æ¨¡å—框图

       è®¡è´¹æ¨¡å—仿真波形为:

       æºç¨‹åºå¦‚下:

       Library IEEE;

       use IEEE.std_logic_.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 rt4 of jifei is

       begin

       process(clk2,start)

       begin

        if start='0'then c3<="";c2<="";c1<="";c0<=""; --起步价5元

        elsif clk2'event and clk2='1'then

        if c0="" then c0<="";

        if c1="" then c1<="";

        if c2="" then c2<="";

        if c3="" then c3<=""; --计价范围0~.9

        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 rt4;

       5.显示模块

        显示模块完成计价,计时和计程数据显示。计费数据送入显示模块进行译码,最后送至以百元,十元,元,角为单位对应的数码管上显示。计时数据送入显示模块进行译码,最后送至以分为单位对应的数码管上显示。计程数据送入显示模块进行译码,最后送至以km为单位的数码管上显示。

        模块元件为:

        显示模块框图

       æºç¨‹åºå¦‚下:

       library ieee;

       use ieee.std_logic_.all;

       use ieee.std_logic_unsigned.all; --定义库包

       entity xianshi is --定义实体

       port(

        clk_scan:in std_logic; --扫描时钟信号端口设置

        c3,c2,c1,c0:in std_logic_vector(3 downto 0); --总费用输入端口

        k0,k1:in std_logic_vector(3 downto 0); --里程输入端口

        m0,m1:in std_logic_vector(3 downto 0); --等待时间输入端口

        sel:out std_logic_vector(2 downto 0); --控制数码管位选信号的扫描信号输出端口

        led:out std_logic_vector(6 downto 0); --数码管的控制端口

        led_dp:out std_logic --数码管的小数点输出端口

        );

       end xianshi;

       architecture rt5 of xianshi is

       signal duan:std_logic_vector(6 downto 0); --数码显示管中间变量

       signal shuju:std_logic_vector(3 downto 0); --选择输入端的中间变量

       signal cnt:std_logic_vector(2 downto 0); --控制数码管的中间变量

       signal xiaodian:std_logic; --小数点的中间变量

       begin

       process(clk_scan) --开始进程

       begin

        if clk_scan'event and clk_scan='1' then

        cnt<=cnt+1; --每有一个扫描信号上升沿实现加1扫描

        end if;

       end process; --结束进程

       process(cnt) --开始进程(选择扫描显示数码管)

       begin

        case cnt is --扫描时给每个数码管赋值

        when ""=>shuju<=c0;

        when ""=>shuju<=c1;

        when ""=>shuju<=c2;

        when ""=>shuju<=c3;

        when ""=>shuju<=k0;

        when ""=>shuju<=k1;

        when ""=>shuju<=m0;

        when ""=>shuju<=m1;

        when others=> null;

        end case;

        if (cnt="" or cnt="")

        then xiaodian<='1'; --在里程和总费用的个位处显示小数点

        else xiaodian<='0';

        end if;

       end process; --结束进程

       process(shuju) --开始进程(译码显示)

       begin

        case shuju is

        when ""=>duan<=""; --0

        when ""=>duan<=""; --1

        when ""=>duan<=""; --2

        when ""=>duan<=""; --3

        when ""=>duan<=""; --4

        when ""=>duan<=""; --5

        when ""=>duan<=""; --6

        when ""=>duan<=""; --7

        when ""=>duan<=""; --8

        when ""=>duan<=""; --9

        when others=>null;

        end case;

       end process;

       sel<=cnt;

       led<=duan;

       led_dp<=xiaodian;

       end rt5;

       äºŒã€è¯¾ç¨‹è®¾è®¡å·¥ä½œè®°å½•ï¼š

       åŒ…括:设计步骤与时间安排、调试步骤与时间安排、课题完成结果说明

       2.课题完成结果说明:

       æ­¤è®¡è´¹å™¨èƒ½å®žçŽ°èµ·æ­¥ä»·æ˜¯5元;实现实验要求的1公里计费一次单价,行驶公里大于2km时每公里按1.4元计费并能显示里程和总共的费用。当行驶了6公里,等待了4分钟时,费用显示为.8元。与计算公式总费用=起步费用+(里程-2公里)*里程单价+等候时间*等后单价;即.8=5+(6-2)*1.4+4*1.3。实验结果与理论结果完全一致,实验设计成功。

EDA 出租车计费器 求大神帮忙 谢谢了 很急啊!!源码!个人个人台湾网站源码叫什么

       以前做的时间时间设计,参考一下,出租出租记得给分啊

       粘过来时图形好像没显示啊

       一、系统设计目的源码

        1、 熟悉和增强对VHDL语言的个人个人基本知识,熟悉利用VHDL语言对常用的时间时间的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来。出租出租

        2、系统加深对编制和调试程序的源码技巧.

       3、提高上机动手能力,培养使用设计综合电路的能力。

       二、设计要求

       1、出租车启动和停驶由司机控制;

       2、行程小于基本里程时,显示起步价,基本里程设3公里,起步价设5元;

       3、行程大于基本里程时,每多行一公里,在起步价上加2元;

       4、当出租车等待时,由司机按下等候键,每等待一分钟加1元,不足一分钟的按一分钟计算;

       5、此处用脉冲信号模拟轮胎的转数,设每计一个脉冲汽车前进1米,系统中所需脉冲均由实验箱的MHz晶振分频提供。

       三、总体设计原理与内容(四号字、宋体、加粗)

        1、设计的html导入源码总体原理(比如算法及其流程框图等)

       出租车计价器按功能主要分为:速度模块、计程模块、计时模块、计费模块。

       2、设计内容

       首先根据start信号判断是否开始计费,然后根据sp判断,确定1米所需要的时钟数,每前进一米,输出一个clkout,同时由cnt对clk进行计数。

       通过对clkout信号的计数,可计算形式的距离kmcount,一个clkout相当于行驶一米,所以只要记录clkout的脉冲数,即可确定行驶距离。

       通过对sp信号的判断,确定是否开始计时。Sp= 0时,开始记录时间。当时间足够长时,产生timecount脉冲。

       计费模块分为kmmoney1和kmmoney2两个进程。kmmoney1用于产生enable和price信号。当记录距离达到3km后,enable信号为1,开始进行每千米的计费。

       kmmoney2用于判断timecount和clkout的值,当其为1时,总费用加1。最终输出为总费用。

        四、EDA设计及仿真(四号字、宋体、加粗)

       1、出租车计价器的设计源程序

       速度模块的VHDL代码如下:

       library ieee;

       useieee.std_logic_.all;

       useieee.std_logic_unsigned.all;

       entity speed is

       port(

       clk : in std_logic;

       reset: instd_logic;

       start:instd_logic;

       stop:in std_logic;

       sp:in std_logic;

       clkout:out std_logic

       );

       end speed;

       architecture rt1of speed is

       begin

       process(clk,reset,stop,start) -----敏感信号变化时,启动进程

       type state_typeis(s0,s1); ------枚举类型

       variables_state:state_type;

       variablecnt:integer range 0 to ;

       begin

       ifreset='1'then ----复位清

        s_state:=s0;

       elsif clk'eventand clk='1'then

       case s_state is

        when s0=>

        cnt:=0;

        clkout<='0';

        if start='1'then

        s_state:=s1;

        else

        s_state:=s0;

        end if;

        when s1=>

        clkout<='0';

        if stop='1'then

        s_state:=s0; ----无客上车

        elsif sp='0'then

        s_state:=s1;

        elsif cnt= then

        cnt:=0;

        clkout<='1';

        s_state:=s1;

        else

        cnt:=cnt+1;

        s_state:=s1;

        end if;

        end case;

        end if;

        end process;

       end rt1;

        计程模块的VHDL代码如下:

       LIBRARY IEEE;

       USEIEEE.STD_LOGIC_.ALL;

       USEIEEE.STD_LOGIC_ARITH.ALL;

       USEIEEE.STD_LOGIC_UNSIGNED.ALL;

       ENTITY km IS

        PORT (

        CLKOUT,RESET: IN STD_LOGIC;

        kmcnt1:OUT STD_LOGIC_VECTOR (3 DOWNTO0);

        kmcnt2:OUT STD_LOGIC_VECTOR (3 DOWNTO0);

        kmcnt3:OUT STD_LOGIC_VECTOR (3 DOWNTO0));

       END km;

       ARCHITECTURE rtlOF km IS

       BEGIN

        PROCESS(CLKOUT,RESET) ----启动进程

        VARIABLE kM_reg: STD_LOGIC_VECTOR (DOWNTO 0);

        BEGIN

        IF RESET ='1' THEN ---复位清零

        kM_reg:="";

        ELSIF CLKOUT'EVENT AND CLKOUT='1' THEN ---------时钟上升沿到达时进行计程

        IF kM_reg(3 DOWNTO 0)=""THEN ---------对应里程十分位

        kM_reg:=kM_reg+""; ---------十分位向个位进位

        ELSE

        kM_reg(3 DOWNTO 0):=kM_reg(3 DOWNTO0)+"";

       END IF;

        IF kM_reg(7 DOWNTO 4)=""THEN

        kM_reg:=kM_reg+""; ---------个位向十位进位

       END IF;

        END IF;

        kmcnt1<=kM_reg(3 DOWNTO 0);

        kmcnt2<=kM_reg(7 DOWNTO 4);

        kmcnt3<=kM_reg( DOWNTO 8);

        END PROCESS;

        END rtl;

       计时模块的VHDL代码如下:

       library ieee;

       useieee.std_logic_.all;

       useieee.std_logic_unsigned.all;

       entity times is

        port(

        clk : in std_logic;

        reset: in std_logic;

        start:in std_logic;

        stop:in std_logic;

        sp :in std_logic;

        timecount:out std_logic

       );

       end times;

       architecture rt1of times is

       begin

       process(clk,reset,stop,start,sp) -----启动进程

        type state_type is(t0,t1,t2);

        variable t_state:state_type;

        variable cnt:integer range 0 to ;

        variable waittime:integer range 0 to ;

       begin

        if reset='1'then ----复位清零

        t_state:=t0;

        elsif clk'event and clk='1'then

        case t_state is

        when t0=>

        waittime:=0;

        timecount<='0';

        if start='1'then

        t_state:=t1;

        else

        t_state:=t0;

        end if;

        when t1=>

        if sp='0'then

        t_state:=t2;

        else

        waittime:=0;

        t_state:=t1;

        end if;

       when t2=>

        waittime:=waittime+1;------等待时间加1

        timecount<='0';

        if waittime= then

        timecount<='1'; -------产生一个时间计费脉冲

        waittime:=0;

        elsif stop='1'then

        t_state:=t0;

        else

        timecount<='0';

        t_state:=t1;

        end if;

        end case;

        end if;

        end process;

       end rt1;

       计费模块的VHDL代码如下:

       LIBRARY IEEE;

       USEIEEE.STD_LOGIC_.ALL;

       USEIEEE.STD_LOGIC_UNSIGNED.ALL;

       ENTITY kmmoney IS

        PORT(

        CLK :IN STD_LOGIC;

        RESET:IN STD_LOGIC;

        timecount:IN STD_LOGIC;

        clkout:IN STD_LOGIC;

        kmcnt2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

        kmcnt3:in STD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

       );

       END kmmoney ;

       ARCHITECTURE rtlOF kmmoney IS

       SIGNAL cash :STD_LOGIC_VECTOR( DOWNTO 0);

       SIGNAL price :STD_LOGIC_VECTOR(3 DOWNTO 0);

       SIGNAL enable :STD_LOGIC;

       BEGIN

       kmmoney1:process(cash,kmcnt2) -------------此进程产生下一进程的敏感信号

        BEGIN

        price<="";

        if kmcnt2>="" then

        enable<='1';

        else

        enable<='0';

        END IF;

        END PROCESS;

       kmmoney2:process(reset,clkout,clk,enable,price,kmcnt2)

       variablereg2:std_logic_vector( DOWNTO 0);

       variableclkout_cnt:integer range 0 to ;

       begin

        if reset='1'then

       cash<="";

       -------起步费用设为5元

       elsif clk'eventand clk='1'then

       ----判断是否需要时间计费,每s加1元

        if timecount='1'then

        reg2:=cash;

        if (reg2(3 downto

       0)+"")>"" then

       ------产生进位------

        reg2(7 downto 0):=reg2(7 downto0)+"";

        if reg2(7 downto4)>""then

        cash<=reg2+"";

        else

        cash<=reg2;

        END IF;

        else

        cash<=reg2+"";

        END IF;

        ---里程计费

        elsif clkout='1'and enable='1'then

        if clkout_cnt= then

        clkout_cnt:=0;

        reg2:=cash;

        if

       ""&reg2(3 downto 0)+price(3 downto 0)

       >""then

        reg2(7 downto 0):=reg2(7downto 0)+""+price; ----十位进位

        if reg2(7 downto4)>""then ----百位进位

        cash<=reg2+"";

        else

        cash<=reg2;

        END IF;

        else

        cash<=reg2+price;

        END IF;

        else -----------------------对时钟计数

        clkout_cnt:=clkout_cnt+1;

        END IF;

        END IF;

        END IF;

        END process;

        COUNT1<=cash(3 DOWNTO 0); -----总费用的个位

        COUNT2<=cash(7 DOWNTO 4); -----总费用的十位

        COUNT3<=cash( DOWNTO 8); -----总费用的百位

        END rtl;

        顶层模块的VHDL代码如下:

        library ieee;

        use ieee.std_logic_.all;

        entity top is

        port(

        clk : in std_logic;

        reset: in std_logic;

        start:in std_logic;

        stop:in std_logic;

        sp :in std_logic;

        kmcnt1:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0);

        kmcnt2:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0);

        kmcnt3:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0);

        COUNT1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT2:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT3:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0)

        );

        end top;

        ARCHITECTURE rtl OF top IS

        ------- 对上述电路模块进行元件定义--------

        COMPONENT SPEED IS------------定义速度模块

        port(

        clk : in std_logic;

        reset: in std_logic;

        stop:in std_logic;

        start:in std_logic;

        sp :in std_logic;

        clkout:out std_logic

        );

        end COMPONENT speed;

        COMPONENT km is ---定义计程模块

        PORT (

        CLKOUT,RESET: INSTD_LOGIC;

        kmcnt1:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0);

        kmcnt2:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0);

        kmcnt3:OUTSTD_LOGIC_VECTOR (3 DOWNTO 0)

        );

        end COMPONENT km;

        COMPONENT kmmoney is--------定义计费模?------

        PORT(

        CLK :IN STD_LOGIC;

        RESET:IN STD_LOGIC;

        timecount:INSTD_LOGIC;

        clkout:IN STD_LOGIC;

        kmcnt2:INSTD_LOGIC_VECTOR(3 DOWNTO 0);

        kmcnt3:inSTD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT1:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT2:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0);

        COUNT3:OUTSTD_LOGIC_VECTOR(3 DOWNTO 0)

        );

        end COMPONENT kmmoney;

        component times is

        port( clk:in std_logic;

        reset:instd_logic;

        stop:in std_logic;

        start:instd_logic;

        sp:in std_logic;

        timecount:outstd_logic

        );

        end component times;

        signal clktmp:STD_LOGIC;

        signal timetmp:STD_LOGIC;

        signal kmtmp2:STD_LOGIC_VECTOR (3 DOWNTO 0);

        signal kmtmp3:STD_LOGIC_VECTOR (3 DOWNTO 0);

        begin

        U1:speed PORTMAP(clk,reset,stop,start,sp,clktmp);

        U2: times PORTMAP(clk,reset,stop,start,sp,timetmp);

        U3:km PORTMAP(clktmp,reset,kmcnt1,kmtmp2,kmtmp3);

        U4:kmmoney PORTMAP(clk,reset,timetmp,clktmp,kmtmp2,kmtmp3,COUNT1,COUNT2,COUNT3);

        kmcnt2<=kmtmp2;

        kmcnt3<=kmtmp3;

        end rtl;

       2、出租车计价器的设计

       仿真结果及数据分析

       出租车计费器的电路图如图:

       上图中当reset为高电平时,系统所有寄存器、计数器都清零;当开始记费信号start信号有效时,npm 发布源码计费器开始计费,根据出租车行驶的速度sp的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。

       对上图构成的系统进行仿真,得到的仿真波形为:

       五、硬件实现

        1、给出硬件实现(步骤及引脚锁定等说明等)

       主要模块中包括输入时钟脉冲clk,时钟上升沿有效;复位信号reset,开始计费信号start,停止计费信号stop,均为高电平有效;出租车状态sp。

       2、硬件实现照片

       该照片为超过基本行程的的照片,显示为行驶5.5公里,费用为元。等待1分钟,共计元。

       该照片为基本行程内的的照片,显示为行驶2.6公里,收费5元,显示正确。

       该显示,行驶7.9公里,费用为元,显示正确。

       等待计费,行驶5.5公里,攻击元,等待8分钟,共计元。

       六、设计总结

       1、设计过程中遇到的问题及解决方法

       设计中遇到了数码管无法正常显示,计费不按要求等问题。通过的对源代码的修改,发现易忽略了一些细节。

       2、设计体会

       从挑选课设题目,查阅资料,lee指标源码到研究出总体设计,详细设计,然后分工合作,再到最后的编程上机调试,修改程序,完善程序,收获颇多。出租车计费器系统的设计已全部完成,能按预期的效果进行模拟汽车启动,停止、暂停等功能,并设计动态扫描电路显示车费数目。车暂停时停止计费。若停止清零,等待下一次计费的开始。由于时间有限,经验欠缺,还存在很多不足之处。

        在这一周里我们再次熟悉和增强了对VHDL语言的基本知识,熟悉利用VHDL语言对常用的的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来。加深了对编制和调试程序的技巧,进一步提高了上机动手能力,培养了使用设计综合电路的能力,养成了提供文档资料的习惯和规范编程的思想。

        本次的课程设计将各个单一的模块实现其功能后,学会通过原理图或顶层文件把各模块连接,从而实现对出租车自动计费。课程设计注重的不仅是把理论知识巩固,而且应把理论和实际相结合,把知识应用到生活中。在课程设计过程中,遇到了不少问题,数码管无法正常显示,计费不按要求等。通过的对源代码的修改,发现了一些易忽略的细节。课程设计考验的游戏源码解压是思维逻辑能力,对知识的灵活应用,当然,合作精神是不可或缺的。

       在设计程序时,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常的,但应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

       3、对设计的建议

       本设计为出租车计费器的VHDL设计,利用软件仿真和硬件测试实现了其计费功能、预制功能、模拟功能等,建议时间延长,不拘于用VHDL一种语言,而且要求创造出实物。这样可以让学生自由发挥,拓宽思路,提高动手能力。

       七、设计生成的电路图

怎么赚佣金?

       随着互联网越来越被人们所认可,自媒体的兴起,用户量惊人,有多少网民都想在互联网上分一杯羹,都想抓住自媒体额外赚点外快,网赚项目那么多,但有多少是比较实用的呢,下面我给大家总结条比较实际的网赚方法,包括自媒体。

       1、通过卖产品赚钱

       自己卖产品肯定是靠谱的,可以找一款你认为有前景的产品,然后通过电商平台结合自媒体进行营销。不管怎么样,至少京东、阿里巴巴、淘宝这三个平台,你需要懂一个。同时结合各个社媒平台的特点,选择适合自己产品销售的社媒平台卖产品。通常情况下,要想赚钱并且利润空间大的,最好是稀缺性质的东西,比如某某程序源码、某某账号资源等等。

       2、运营网站赚钱

       互联网时代建立网站,建立网站其实并不难。安装一个开源程序,然后套用上免费模板,一个网站就这样的诞生了。丰富下网站内容,接着就运营网站开始赚钱了。主要来源有几个:有人愿意在你的网站投放广告,你可以收取广告费来盈利;广告点击盈利,通过百度联盟、谷歌联盟广告费,这是典型的目前最多的一种方式,访客通过你的网站点击了他们的广告,你就会获得分成收入;卖友情链接赚钱,做一批新闻网站,有了一定权重就可以通过销售友情链接赚钱。做几十个站,等权重达到1以上,一天卖几十个友情链接,也可以赚到几十到几百不等。这种网络赚钱方式发不了财,但也饿不死,后期需求量也会越来越大。

       3、做威客赚钱

       威客简单地说就是对靠自己的知识、能力、智慧在威客网站上完成客户的任务来赢得客户佣金的人的称呼。承接任务赚钱需要靠真本事。您需要拥有设计、程序、策划等方面的专长。这类任务网站有很多,基本上有你每天都做不完的任务,如果你啥也不懂,可以去猪八戒做一些比较简单的任务,比如发外链、QQ群广告等任务,但钱赚的相对较少。这也是目前来讲永远不会过时的一种网络赚钱方法。

       4、玩网游赚钱

       网游玩家可被分类为:官方的即指包括游戏测评人员、游戏代言人等等领取官方工资或者说报酬的职业玩家。民间的即指与官方无任何经济关系,仅仅依靠自己在游戏中的地位和造诣,还有通过代练、买卖虚拟物品来赚取金钱。不仅能在玩游戏的过程中享受到挑战的乐趣、胜利的喜悦,同时也能赢得其他喜爱游戏的朋友的崇拜。“职业玩家”是一个令所有游戏人士敬佩的头衔,因为他们是在众多玩家中脱颖而出的绝对强者,是非凡实力和技术的代表。

       5、做推广拿佣金赚钱

       这种形式是年比较流行的,也有比较多的人在做,比如借贷宝、惠信宝、淘宝联盟等APP,不但佣金比较高,而且推广起来还非常简单。这种形式去推广APP的只有多没有少,所以试着做一个网赚博客专业推广这类广告。这种形式去推广,能够赚到多少钱,要自己去掂量。网站适当的加上淘宝客推广、百度广告联盟代码等推广,累积起来也是一笔不少的收入。

       6、做自媒体赚钱

       现在自媒体平台有很多,博客、微博、公众号、头条号、百家号、搜狐号等。首先得把自己的自媒体平台运营好了,内容搞点特色,让更多粉丝关注你,提高曝光量,这是第一步,之后坐等赚钱就行了。目前来自三个方面,一个是流量换取广告费,二是文章写的好用户打赏,三是接广告通过号外功能投放挣点钱。

       当然,如果你文案写得好,可以通过写软文赚钱。写软文是很赚钱的,可以赚到我们一年的工资,一般一篇软文最少几十到几百,多的话几千上万也有。有专业做软文平台让帮忙写软文的,也有自己开通自媒体平台写软文的。年移动互联网还会继续壮大,所以文字的需求也会越来越大,软文的需求自然也会增加。

       7、参与调查赚钱

       参与调查上网填写调查问卷在外国,很多年前就有专以做调查为业的人。在家能做什么兼职但我们中国上网做调查问卷是最近才兴起的一种简单、自由的在家工作方式。做调客赚钱需要不断的填写问卷,不断的累积。填写调查问卷赚钱在中国才兴起,所以建议大家决定做调客前,一定要慎重地了解网站后才去做。不仅要看网站的硬件,还要主动向前面的会员认真咨询。

       8、抢红包赚钱

       这个赚钱的手段有点不合理,但确实能够赚钱,虽然使用的是不正当手段,但赚的也是不正当人的钱,所以我认为没什么对不起良心的,去淘宝花几百块钱买一个6k抢红包王的软件,然后去大大小小的微信赌博群,然后通过软件快速抢红包,并且设置专抢大的不抢小的,基本上是不会输钱的。另外你如果不下注,挂个软件抢红包,一天下来也是个不错的收入。

       9、利用时效性赚钱

       看到一篇新闻报道芈月传全集百度云泄露后,马上去淘宝花元买了全集,然后在微信QQ上销售,三小时内推广一个千人QQ群(目前在出租赚钱),7天时间销售了多元,确实这种赚钱的方式有点灰色,但确实是一笔比较好收入。同理,可以操作很多类似的项目。

       、通过招代理赚钱

       朋友圈里各种微商的广告,微商真的能赚钱吗,这是个值得思考的问题。如今5层的微商退出了,还有4层的微商通过招募代理赚钱,还有1层不赚钱,所以年的微商趋势赚钱的都在招代理,没招代理的,还没领悟到微商的真谛,但不管是微商还是PC上,招募代理都是赚钱的方法。

       需要注意的是:大多数人都会有赚外快的想法,不法份子也盯上了这块,所以在选择网赚项目时自己要加以分析,选择适合自己的靠谱的项目操作,不要为此上当受骗。同时要强调的是,做网赚需要很强的执行力,有些人是不适合做网赚的。任何一个项目,找一个方法死磕下去,傻瓜都会成功,很多人都自以为是,想找捷径,想一步登天,想着今天投入明天就能躺着数钱。世界上会有这么好的事情吗?有,去买**吧,如果你运气好的话,没准掉个大馅饼砸死你。