1.ǧ?千米源码? Դ??
2.dm在数学里是什么意思(dm在数学里面代表什么)
ǧ?? Դ??
以前做的设计,参考一下,千米源码记得给分啊
粘过来时图形好像没显示啊
一、千米源码设计目的千米源码
1、 熟悉和增强对VHDL语言的千米源码基本知识,熟悉利用VHDL语言对常用的千米源码加密直播源码的组合逻辑电路和时序逻辑电路编程,把编程和实际结合起来。千米源码
2、千米源码加深对编制和调试程序的千米源码技巧.
3、提高上机动手能力,千米源码培养使用设计综合电路的千米源码能力。
二、千米源码设计要求
1、千米源码出租车启动和停驶由司机控制;
2、千米源码行程小于基本里程时,千米源码显示起步价,基本里程设3公里,起步价设5元;
3、行程大于基本里程时,每多行一公里,在起步价上加2元;
4、当出租车等待时,由司机按下等候键,每等待一分钟加1元,不足一分钟的按一分钟计算;
5、此处用脉冲信号模拟轮胎的c 源码示例转数,设每计一个脉冲汽车前进1米,系统中所需脉冲均由实验箱的MHz晶振分频提供。
三、总体设计原理与内容(四号字、宋体、加粗)
1、设计的总体原理(比如算法及其流程框图等)
出租车计价器按功能主要分为:速度模块、计程模块、计时模块、计费模块。
2、设计内容
首先根据start信号判断是否开始计费,然后根据sp判断,确定1米所需要的时钟数,每前进一米,输出一个clkout,同时由cnt对clk进行计数。
通过对clkout信号的计数,可计算形式的距离kmcount,一个clkout相当于行驶一米,所以只要记录clkout的脉冲数,即可确定行驶距离。
通过对sp信号的判断,确定是否开始计时。Sp= 0时,开始记录时间。当时间足够长时,vue thinkphp源码产生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一种语言,而且要求创造出实物。这样可以让学生自由发挥,拓宽思路,提高动手能力。
七、设计生成的电路图
dm在数学里是什么意思(dm在数学里面代表什么)
dm是什么意思数学单位是“代码”的意思。
含义:
代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。
代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。
源代码是代码的分支,某种意义上来说,源代码相当于代码。现代程序语言中,源代码可以书籍或磁带形式出现,但最为常用格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码最终目的是将人类可读文本翻译成为计算机可执行的二进制指令,这种过程叫编译,它由通过编译器完成。
数学三年级下册dm是什么
分米。
1、在生活中,量比较短的物品,可以用毫米(mm)、厘米(cm)、分米(dm)做单位。
量比较长的物体,常用米(m)做单位。
量比较长的路程一般用千米(km)做单位。
2、运动场的跑道,通常1圈是米,2圈半是米。
3、1枚1分的硬币、尺子、磁卡、小纽扣、钥匙、身份证的厚度大约是1毫米。
dm在数学里面表示什么意思
dm通常意思就是数学里面的分米,是一种长度单位的表示,dm是分米的意思,是长度单位。dm是长度的公制单位之一,表示单位分米的英文缩写,英文全称为decimetre。1分米相当于1米的十分之一。十厘米等于一分米,十分米等于一米
dm在数学里面代表什么
dm通常我们理解的意思就是数学里面的分米,是一种长度单位的表示,dm是分米的意思,是长度单位。dm是长度的公制单位之一,表示单位分米的英文缩写,英文全称为decimetre。1分米相当于1米的十分之一。十厘米等于一分米,十分米等于一米。
在英文中的dm或许还有其他意思,例如:dm广告,DM“双模”,DM终端管理,甚至还有汽车领域里面的DM,意思为可充电混合动力电动汽车。
dm在数学里是什么意思和dm在数学里面代表什么的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!
2024-11-14 23:46
2024-11-14 23:29
2024-11-14 23:11
2024-11-14 22:53
2024-11-14 22:36
2024-11-14 22:24
2024-11-14 22:15
2024-11-14 21:18