本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【二小阳源码】【vue模板引擎源码】【arraylist迭代器源码】计费系统源码_计费系统源码怎么用

2024-11-19 01:20:13 来源:热点 分类:热点

1.�Ʒ�ϵͳԴ��
2.cps如何设置
3.EDA 出租车计费器 求大神帮忙 谢谢了 很急啊!计费计费!系统系统!源码源码用
4.EDA课程设计,用VHDL编程做出租车计费器

计费系统源码_计费系统源码怎么用

�Ʒ�ϵͳԴ��

       做个游戏服务器,计费计费用讯闪自动更新游戏,系统系统再把收费软件也装在上面 ,源码源码用二小阳源码就会有病毒防治 系统安全 系统监视 网络安全 加密工具 密码恢复 密码管理 浏览安全 都是很重要必不可少的 觉得我的回答还可以多赏分蛤,我QQ

cps如何设置

       CPS的计费计费设置方法因应用场景不同而有所差异,但通常涉及设置计费方式、系统系统佣金比例以及相关的源码源码用推广规则。

       在电商平台上,计费计费如京东的系统系统京挑客系统,CPS的源码源码用设置主要通过京准通后台完成。商家需要进入京挑客-通用计划,计费计费设置商品的系统系统CPS计费方式。这里,源码源码用商家可以自行设定服务费比例,即广告费用等于服务费比例乘以商品客单价。例如,若商家设置某商品的服务费比例为%,则该商品通过普通推广被下单并完成交易后,商家需支付的广告费用即为商品价格的%。此外,商家还需设定三级类目佣金比例,并可添加最多个主推商品,佣金不重复收取,vue模板引擎源码按最高比例计费。

       对于短剧CPS系统或类似的内容分发平台,CPS的设置则更多关联于内容资源的接入与分成规则。首先,平台需获取短剧CPS系统的源码,并部署在服务器上。随后,根据系统文档或开发商指导进行配置,包括数据库设置、接口对接等。关键步骤在于接入短剧资源,这通常需与短剧制作方或版权方合作,签订合作协议并支付版权费用。在设置分成规则时,平台会根据内容消费情况,按照事先约定的比例向内容提供方支付佣金。

       值得注意的是,无论在哪种应用场景下,CPS的设置都需遵守相关法律法规和平台规则,确保计费方式透明公正,保护消费者和商家的合法权益。同时,随着市场环境的变化和平台政策的调整,CPS的arraylist迭代器源码设置方法也可能会有所更新,因此建议商家或平台运营者密切关注市场动态,及时调整和优化CPS设置策略。

EDA 出租车计费器 求大神帮忙 谢谢了 很急啊!!!

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

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

       一、设计目的

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

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

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

       二、设计要求

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

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

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

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

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

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

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

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

       2、设计内容

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

       通过对clkout信号的go语言2048源码计数,可计算形式的距离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信号有效时,计费器开始计费,根据出租车行驶的速度sp的取值计算所用花费和行驶里程;当停止计费信号有效时,计费器停止工作。

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

       五、硬件实现

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

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

       2、硬件实现照片

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

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

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

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

       六、设计总结

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

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

       2、设计体会

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

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

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

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

       3、对设计的建议

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

       七、设计生成的电路图

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。实验结果与理论结果完全一致,实验设计成功。

相关推荐
一周热点