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
""®2(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ãå®éªç»æä¸ç论ç»æå®å ¨ä¸è´ï¼å®éªè®¾è®¡æåã