文档视界 最新最全的文档下载
当前位置:文档视界 › 北邮数字电路实验报告_简易出租车计价器

北邮数字电路实验报告_简易出租车计价器

北邮数字电路实验报告_简易出租车计价器
北邮数字电路实验报告_简易出租车计价器

数字电路实验报告简易出租车计价器

班级:

学号:

姓名:

一、设计课题的任务要求

设计一台出租车计价器,不同情况具有不同的收费标准

基本内容

1、行驶公里:用时钟2秒钟表示出租车匀速行驶1公里,在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。燃油附加费为每运次1元。

2、途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后每等

待3秒钟加收1元。

3、用数码管分时显示计费金额、行驶里程和等候时间。字母A表示当前处于显示计费

金额状态,字母B表示当前处于显示行驶里程状态,字母C表示当前处于显示等候

时间状态。

4、用按键控制出租车空驶、载客状态并用点阵显示空驶、载客状态。

提高要求

1、用点阵滚动显示收费单据。

2、具有夜间模式,基本单价加收20%的费用。出租汽车收费结算以元为单位,元以下

四舍五入。

3、出租车行驶速度可调可控。

4、多人乘车,分段计价。

5、自拟其它功能。

二、系统设计

1.设计思路

首先考虑得到需要一个分频装置,分别输出频率到计数器与控制器,另有计算单元用来计算里程、时间与费用。

Clk为系统时针,rst、start、waiting分别为重置、开始、等待信号,由按键输入

系统流程图

三、仿真波形及波形分析

四、功能说明及资源利用情况

开始行车

1、功能说明

本次试验成果的主要功能为:

开始点阵显示“无人状态”。

按下按键“btn1”(start),计价器开始正常工作,六个数码管每两个分别显示“总费用”“行进里程”“等待时间”,同时点阵显示“载客状态”。行进里程开始累计,里程数在5公里内总价不变,在超过5公里后,每公里增加两元。

在行进中按下按键“btn2”(waiting),等待时间开始累计,等待时间未超过5s时,等待费用为零,所以总价并不累计。在等待时间超过5s后,每三秒钟总价加一元。

再次按下按键“btn2”(waiting),停止等待状态,继续行进,状态与上述一样。

再次按下按键“btn1”(start),表示客人到达目的地,数码管显示总价,里程以及总等待时间,即开始结算。

按下按键“btn0”(rst),所以状态清零。点阵回到无人状态,数码管显示全部清零。2、资源利用情况

五、故障及问题分析

本次试验,在实验过程中,发现了众多不同的问题。

其中最恶心的一次就是代码调试的时候,没有任何的语法错误,但是它表示编译不通过,说是逻辑单元有1307个,但是设备只能提供1270个,所以无法通过。对于这个问题,我实在不知道该怎么解决,最后只有重新写代码,换了一两个结构后发现问题神奇般的解决了。但我始终不知道原因。

其他的问题都只是代码的语法错误之类的,无需赘言。

六、总结和结论

有过上个学期的一些基础知识后,这次的实验并没有太过于手足无措,总的来说还是比较容易上手。所选的课题逻辑也并不复杂,所以不算太难。还是比较快的实现了所要求的功能。虽然最后发现与老师的要求有一些出入,但总体来说,自己还是比较满意的。因为本次试验所有代码都是自己一个字母一个字母敲出来的,通过与同学们的交流也学到了很多东西,可能也就是因为没有和别的班级同学交流,所以没有达到老师的期望吧!

七、源代码(含注释)

1、仿真版

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity taxi is

port(clk:in std_logic;

start:in std_logic;

waiting:in std_logic;

rst:in std_logic;

T0,T1,T2,T3,T4,T5:out std_logic_vector(3 downto 0)

);

end;

architecture bhv of taxi is

signal count:integer range 0 to 499999999;

signal km_clk,sec_clk,en:std_logic;

signal c1,c2,tt:integer range 0 to 99;

signal await,mile,cost:integer range 0 to 99;

signal await_s,await_g,mile_s,mile_g,cost_s,cost_g:integer range 0 to 9;

signal rst_clk,start_clk,waiting_clk:std_logic:='0';

signal waiting_time:integer range 0 to 99;

begin

U1:process(rst,start,waiting)--实现按键

begin

if start 'event and start='1' then

if start_clk='1' then

start_clk<='0';

else start_clk<='1';

end if;

end if;

if waiting'event and waiting='1' then

if waiting_clk='1'then

waiting_clk<='0';

else waiting_clk<='1';

end if;

end if;

end process;

u2:process(rst,clk)

begin

if clk'event and clk='1' then

if rst='0' then

if count=9 then --两秒钟一公里

count<=0;km_clk<='1';sec_clk<='1';

elsif count=4 then --一秒钟

count<=count+1;km_clk<='0';sec_clk<='1';

else

count<=count+1;km_clk<='0';sec_clk<='0';

end if;

end if;

end if;

end process;

U3:process(rst,start_clk,waiting_clk,km_clk) --里程计数

begin

if rst='1' then

mile<=0; --按下“rst”后数字清零elsif start_clk='0' then

mile<=mile; --按下“start/stop”后显示总里程elsif waiting_clk='1' then

mile<=mile;

elsif km_clk'event and km_clk='1' then

if mile=99 then

mile<=0;

else

mile<=mile+1;

end if;

end if;

end process;

U4:process(rst,start_clk,waiting_clk,sec_clk) --等待时间计数

begin

if rst='1' then

await<=0;waiting_time<=0; --按下“rst”后数字清零elsif start_clk='0' then

await<=await;

elsif waiting_clk='0' then

await<=0;en<='1';

elsif sec_clk ' event and sec_clk='1' then

if await=99 then

await<=0;

else

await<=await+1;waiting_time<=waiting_time+1;

end if;

en<='0'; --等待状态

end if;

end process;

U5:process(rst,start_clk,waiting_clk,en) --费用计算

begin

if rst='1' then

cost<=0;c1<=0;c2<=0;tt<=0; --按下“rst”后数字清零elsif start_clk='0' then

cost<=cost;c1<=c1;c2<=c2;tt<=tt;

else

if waiting_clk='1' then --等待费用

if await>=5 then --等待时间超过5s每三秒加收一元

c1<=(await-5)/3;

else

c1<=0;

end if;

else

if en'event and en='1' then --运行状态

tt<=tt+c1;c1<=0;

end if;

if mile>=5 then

c2<=13+2*(mile-5); --超过5 公里部分,以每公里2 元收费else

c2<=13;

end if;

end if;

cost<=c1+c2+1+tt; --再加收一元燃油费

end if;

end process;

u6:process(clk)

begin

await_s <= await/10;

await_g <= await MOD 10;

mile_s <= mile/10;

mile_g <= mile MOD 10;

cost_s <= cost/10;

cost_g <= cost MOD 10;

case cost_s is

when 0 =>T0<="0000";

when 1 =>T0<="0001";

when 2 =>T0<="0010";

when 3 =>T0<="0011";

when 4 =>T0<="0100";

when 5 =>T0<="0101";

when 6 =>T0<="0110";

when 7 =>T0<="0111";

when 8 =>T0<="1000";

when 9 =>T0<="1001";

end case;

case cost_g is

when 0 =>T1<="0000";

when 1 =>T1<="0001";

when 2 =>T1<="0010";

when 3 =>T1<="0011";

when 4 =>T1<="0100";

when 5 =>T1<="0101";

when 6 =>T1<="0110";

when 7 =>T1<="0111";

when 8 =>T1<="1000";

when 9 =>T1<="1001";

end case;

case mile_s is

when 0 =>T2<="0000";

when 1 =>T2<="0001";

when 2 =>T2<="0010";

when 3 =>T2<="0011";

when 4 =>T2<="0100";

when 5 =>T2<="0101";

when 6 =>T2<="0110";

when 7 =>T2<="0111";

when 8 =>T2<="1000";

when 9 =>T2<="1001";

end case;

case mile_g is

when 0 =>T3<="0000";

when 1 =>T3<="0001";

when 2 =>T3<="0010";

when 3 =>T3<="0011";

when 4 =>T3<="0100";

when 5 =>T3<="0101";

when 6 =>T3<="0110";

when 7 =>T3<="0111";

when 8 =>T3<="1000";

when 9 =>T3<="1001";

end case;

case await_s is

when 0 =>T4<="0000";

when 1 =>T4<="0001";

when 2 =>T4<="0010";

when 3 =>T4<="0011";

when 4 =>T4<="0100";

when 5 =>T4<="0101";

when 6 =>T4<="0110";

when 7 =>T4<="0111";

when 8 =>T4<="1000";

when 9 =>T4<="1001";

end case;

case await_g is

when 0 =>T5<="0000";

when 1 =>T5<="0001";

when 2 =>T5<="0010";

when 3 =>T5<="0011";

when 4 =>T5<="0100";

when 5 =>T5<="0101";

when 6 =>T5<="0110";

when 7 =>T5<="0111";

when 8 =>T5<="1000";

when 9 =>T5<="1001";

end case;

end process;

end;

2、正式版

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity taxi is

port(clk:in std_logic;

start:in std_logic;

waiting:in std_logic;

rst:in std_logic;

T:out std_logic_vector(5 downto 0);

Y:out std_logic_vector(6 downto 0);

col,row:out std_logic_vector(7 downto 0);

led0,led1,led2:out std_logic:='0'

);

end;

architecture bhv of taxi is

signal count:integer range 0 to 499999999;

signal km_clk,sec_clk,en:std_logic;

signal c1,c2,tt:integer range 0 to 99;

signal await,mile,cost:integer range 0 to 99;

signal await_s,await_g,mile_s,mile_g,cost_s,cost_g:integer range 0 to 9; signal q:integer range 0 to 9;

signal c:std_logic_vector(2 downto 0);

signal clk25000:std_logic;

signal temp:integer range 0 to 24999;

signal rst_clk,start_clk,waiting_clk:std_logic:='0';

signal rst1,start1,waiting1:std_logic:='0';

signal fd_delay:integer range 0 to 250000;

signal waiting_time:integer range 0 to 99;

begin

u0:process(clk,rst,start,waiting)--防抖动

begin

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

if rst='1' then

fd_delay<=fd_delay+1;

if fd_delay=125000 then

rst1<='1';led0<='1';

fd_delay<=fd_delay;

else rst1<='0';led0<='0';

end if;

elsif start='1' then

fd_delay<=fd_delay+1;

if fd_delay=125000 then

start1<='1';

fd_delay<=fd_delay;

else start1<='0';

end if;

elsif waiting='1' then

fd_delay<=fd_delay+1;

if fd_delay=125000 then

waiting1<='1';

fd_delay<=fd_delay;

else waiting1<='0';

end if;

else fd_delay<=0;

end if;

end if;

end process;

U1:process(rst1,start1,waiting1)--实现按键begin

if start1 'event and start1='1' then

if start_clk='1' then

start_clk<='0';led1<='0';

else start_clk<='1';led1<='1';

end if;

end if;

if waiting1'event and waiting1='1' then

if waiting_clk='1'then

waiting_clk<='0';led2<='0';

else waiting_clk<='1';led2<='1';

end if;

end if;

end process;

u2:process(rst1,clk)

begin

if clk'event and clk='1' then

if rst1='0' then

if count=49999999 then --两秒钟一公里count<=0;km_clk<='1';sec_clk<='1';

elsif count=24999999 then --一秒钟

count<=count+1;km_clk<='0';sec_clk<='1';

else

count<=count+1;km_clk<='0';sec_clk<='0';

end if;

end if;

end if;

end process;

U3:process(rst1,start_clk,waiting_clk,km_clk) --里程计数

begin

if rst1='1' then

mile<=0; --按下“rst”后数字清零elsif start_clk='0' then

mile<=mile; --按下“start/stop”后显示总里程elsif waiting_clk='1' then

mile<=mile;

elsif km_clk'event and km_clk='1' then

if mile=99 then

mile<=0;

else

mile<=mile+1;

end if;

end if;

end process;

U4:process(rst1,start_clk,waiting_clk,sec_clk) --等待时间计数

begin

if rst1='1' then

await<=0;waiting_time<=0; --按下“rst”后数字清零elsif start_clk='0' then

await<=await;

elsif waiting_clk='0' then

await<=0;en<='1';

elsif sec_clk ' event and sec_clk='1' then

if await=99 then

await<=0;

else

await<=await+1;waiting_time<=waiting_time+1;

end if;

en<='0'; --等待状态

end if;

U5:process(rst1,start_clk,waiting_clk,en) --费用计算

begin

if rst1='1' then

cost<=0;c1<=0;c2<=0;tt<=0; --按下“rst”后数字清零elsif start_clk='0' then

cost<=cost;c1<=c1;c2<=c2;tt<=tt;

else

if waiting_clk='1' then --等待费用

if await>=5 then --等待时间超过5s每三秒加收一元

c1<=(await-5)/3;

else

c1<=0;

end if;

else

if en'event and en='1' then --运行状态

tt<=tt+c1;c1<=0;

end if;

if mile>=5 then

c2<=13+2*(mile-5); --超过5 公里部分,以每公里2 元收费else

c2<=13;

end if;

end if;

cost<=c1+c2+1+tt; --再加收一元燃油费

end if;

end process;

u6:process(clk)

begin

await_s <= await/10;

await_g <= await MOD 10;

mile_s <= mile/10;

mile_g <= mile MOD 10;

cost_s <= cost/10;

cost_g <= cost MOD 10;

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

if(temp=24999)then

temp<=0;clk25000<='1';

else

temp<=temp+1;clk25000<='0';

end if;

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

if(c="101")then

c<="000";

else

c<=c+"001";

end if;

if(start_clk='1') then

case c is

when "101"=>q<=cost_s;

when "000"=>q<=cost_g;

when "001"=>q<=mile_s;

when "010"=>q<=mile_g;

when "011"=>q<=await_s;

when "100"=>q<=await_g;

when others=>null;

end case;

case c is

when "000"=>T<="011111";

when "001"=>T<="101111";

when "010"=>T<="110111";

when "011"=>T<="111011";

when "100"=>T<="111101";

when "101"=>T<="111110";

when others=>T<="111111";

end case;

case q is

when 0 =>Y<="0111111";

when 1 =>Y<="0000110";

when 2 =>Y<="1011011";

when 3 =>Y<="1001111";

when 4 =>Y<="1100110";

when 5 =>Y<="1101101";

when 6 =>Y<="1111101";

when 7 =>Y<="0000111";

when 8 =>Y<="1111111";

when 9 =>Y<="1101111";

when others=>Y<="ZZZZZZZ";

end case;

case c is

when"000"=>col<= "11111111";row<="10111111"; when"001"=>col<= "11111111";row<="11011111"; when"010"=>col<= "11000011";row<="11101111"; when"011"=>col<= "11000011";row<="11110111"; when"100"=>col<= "11111111";row<="11111011"; when"101"=>col<= "11111111";row<="11111101"; when others=>col<= "11111111";row<="11111111"; end case;

else

case c is

when "101"=>q<=cost_s;

when "000"=>q<=cost_g;

when "001"=>q<=mile_s;

when "010"=>q<=mile_g;

when "011"=>q<=waiting_time/10;

when "100"=>q<=waiting_time MOD 10;

when others=>null;

end case;

case c is

when "000"=>T<="011111";

when "001"=>T<="101111";

when "010"=>T<="110111";

when "011"=>T<="111011";

when "100"=>T<="111101";

when "101"=>T<="111110";

when others=>T<="111111";

end case;

case q is

when 0 =>Y<="0111111";

when 1 =>Y<="0000110";

when 2 =>Y<="1011011";

when 3 =>Y<="1001111";

when 4 =>Y<="1100110";

when 5 =>Y<="1101101";

when 6 =>Y<="1111101";

when 7 =>Y<="0000111";

when 8 =>Y<="1111111";

when 9 =>Y<="1101111";

when others=>Y<="ZZZZZZZ";

end case;

case c is

when"000"=>col<= "00011000";row<="10111111";

when"001"=>col<= "00111100";row<="11011111";

when"010"=>col<= "01111110";row<="11101111";

when"011"=>col<= "01111110";row<="11110111";

when"100"=>col<= "00111100";row<="11111011";

when"101"=>col<= "00011000";row<="11111101";

when others=>col<= "00011000";row<="11111111";

end case;

end if;

end if;

end process;

end;

出租车计价器课程设计报告

昆明理工大学信息工程与自动化学院学生实验报告 (2012 —2013 学年第 2 学期) 课程名称:可编程逻辑器件设计开课实验室:信自楼 2013 年4月 11日

一、引言 汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有一个应用价值的。 我国在70年代开始出现出租车,但那时的计费系统大都是国外进口不但不够准确,价格还十分昂贵。随着改革开放日益深入,出租车行业的发展势头已十分突出,国内各机械厂家纷纷推出国产计价器。出租车计价器的功能从刚开始的只显示路程(需要司机自己定价,计算后四舍五入),到能够自主计费,以及现在的能够打一发票和语音提示、按时间自主变动单价等功能。随着城市旅游业的发展,出租车行业已成为城市的窗口,象征着一个城市的文明程度。 随着出租车行业的发展,出租车已经是城市交通的重要组成部分,从加强行业管理以及减少司机与乘客的纠纷出发,具有良好性能的计价器对出租车司机和乘客来说都是很必要的。我们设计采用8086为主控器,以A44E霍尔传感器测距,实现对出租车的多功能的计价设计,输出采用8段数码显示管。 二、总体设计方案 利用8253作为定时/计数器,控制电机转速并测量电机的转数;8255作为输入输出接口,控制数码管显示启动后经过的里程数(小数点后取2位有效值)。 硬件连接说明: 直流电机控制器的基础上,增加了一个电机测速电路构成。 8255的B口作为数码管的笔划码驱动;C口的低4位作为段码控制,显示实际里程,同时,也用于输出键盘的列扫描码;PC6、PC7输入行扫描码,用于识别按键,程序中仅使用了PC6行上的四个按键,其定义如下: X1:启动/停止键;X2:加速键,与X3、X4键组合使用;X3:“+”键;X4:“-”键。 A口仅使用了PA0,输出PWM脉冲信号,通过驱动芯片驱动电机,其输出电压的高低与PWM脉冲的占空比成正比。 电机的转数,通过霍尔元件变换为脉冲个数,送入8253的通道2,计数后,将转数转换为里程数,最小单位为0.01公里,送CPU记录,结果由数码管显示出来。

北邮数字电路综合实验报告

数字电路综合实验报告 简易智能密码锁 一、实验课题及任务要求 设计并实现一个数字密码锁,密码锁有四位数字密码和一个确认开锁按键,密码输入正确,密码锁打开,密码输入错误进行警示。 基本要求: 1、密码设置:通过键盘进行4 位数字密码设定输入,在数码管上显示所输入数字。通过密码设置确定键(BTN 键)进行锁定。 2、开锁:在闭锁状态下,可以输入密码开锁,且每输入一位密码,在数码管上显示“-”,提示已输入密码的位数。输入四位核对密码后,按“开锁”键,若密码正确则系统开锁,若密码错误系统仍然处于闭锁状态,并用蜂鸣器或led 闪烁报警。 3、在开锁状态下,可以通过密码复位键(BTN 键)来清除密码,恢复初始密码“0000”。闭锁状态下不能清除密码。 4、用点阵显示开锁和闭锁状态。 提高要求: 1、输入密码数字由右向左依次显示,即:每输入一数字显示在最右边的数码管上,同时将先前输入的所有数字向左移动一位。 2、密码锁的密码位数(4~6 位)可调。

3、自拟其它功能。 二、系统设计 2.1系统总体框图 2.2逻辑流程图

2.3MDS图 2.4分块说明 程序主要分为6个模块:键盘模块,数码管模块,点阵模块,报警模块,防抖模块,控制模块。以下进行详细介绍。 1.键盘模块 本模块主要完成是4×4键盘扫描,然后获取其键值,并对其进行编码,从而进行按键的识别,并将相应的按键值进行显示。 键盘扫描的实现过程如下:对于4×4键盘,通常连接为4行、4列,因此要识别按键,只需要知道是哪一行和哪一列即可,为了完成这一识别过程,我们的思想是,首先固定输出高电平,在读入输出的行值时,通常高电平会被低电平拉低,当当前位置为高电平“1”时,没有按键按下,否则,如果读入的4行有一位为低电平,那么对应的该行肯定有一个按键按下,这样便可以获取到按键的行值。同理,获取列值也是如此,先输出4列为高电平,然后在输出4行为低电平,再读入列值,如果其中有哪一位为低电平,那么肯定对应的那一列有按键按下。由此可确定按键位置。

出租车计价器 课程设计报告

软件学院 课程设计报告 课程 题目出租车计价器 班级集成13-4 专业集成电路设计与集成系统 学生学号 指导教师(填写自己班的指导教师) 年月日 1.课程设计目的 全面熟悉、掌握VHDL语言基本知识,掌握利用VHDL语言对常用的组合逻

辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。 2.课程设计题目描述和要求 2.1.课程设计题目描述 ①.实现计费功能,计费标准为:按行驶里程计费,起步价为7.0元,并在车行3km 后按2.2元/km 计费,当计费器达到或超过20元时,每公里加收50%的车费,车停止不计费。 ②.现场模拟功能:以开关或按键模拟公里计数,能模拟汽车起动、停止、暂停等状态。 ③.将车费和路程显示出来,各有一位小数。 2.2.总体设计思路框架 2.3.课程设计题目要求 ①.设计正确,方案合理。 ②.程序精炼,结构清晰。 ③.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。 ④.上机演示。 ⑤.有详细的文档。文档中包括设计思路、设计仿真程序、仿真结果及相应的分析与结论。 3.设计思想和设计内容 3.1 出租车计费设计

该出租车计费器按下开关S1后开始计费和计里程数,起步价是7元,行驶3公里,以后2.2元/公里。并且设计选择模块,在车费超过20元每公里加收50%车费即3.3元/公里。 3.2 基本设计思想 出租车计费器根据设计要求可初步分为3方面——显示、记里程数、记费。之后再根据三方面分别设计模块。1.显示模块。一般计数器显示数字为1-F即16进制,而16进制不方便观看,所以在设计这一模块时我们将16进制改为10进制输出进而设计了译码模块。2、里程模块。设计要求对里程计数主要分为两个方面,计数以及公里数比较。即3公里之内收7元,3公里之后20元(通过计算为9公里)以内每公里2.2元,9公里以外为每公里3.3元。所以,我们将里程模块分为里程计数模块以为比较模块。3.计费模块。计费模块同里程比较模块所以将两个模块合二为一,为价格计算模块。 4.Verilog代码 4.1顶层模块 module taxi( clk,stop,rst_n, time1,time2,time3,time4, seg1,seg2,seg3,seg4 ); input clk; input stop; input rst_n; output [6:0]time1; output [6:0]time2; output [6:0]time3; output [6:0]time4;

开题报告(模版)

开题报告(模版)

毕业设计(论文)开题报告 设计(论文)题目:基于FPGA的出租车计费系 统的设计 院系名称: 电气与信息工程学 院 专业班级: 电子信息工程09-2 班 学生姓名: 导师姓名: 开题时间: 2013年3月15号

一课题研究目的和意义 在我国社会经济的全面发展过程中,各大中小城市的出租车营运事业也迅速发展,出租车已经成为人们日常出行选择较为普遍的交通工具。出租车计价器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。为了保护营运者和乘客的经济利益,世界上的多数国家都对作为贸易结算用的出租汽车计价器进行强制管理[1]。我国《计量法》也将出租汽车计价器列入强检目录,实行强制检定。1999年,国家质量技术监督局又将出租汽车计价器列为六种重点管理的计量器具之一[2]。出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。汽车计价器是乘客与司机双方的交易准则它是出车行业发展的重要标志是出租车中最重要的工具。它关系着交易双方的利益。具租有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此汽车计价器的研究也是十分有应用价值的[3]。一种功能完备、简单易用、计量准确的出租车计价器是加强出租车行业管理、提高服务质量的必备品。当计费系统在各大、中城市出租车中使用越来越广泛,用户对计费器的要求也越来越高。以出租车多功能计费器为例,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票打印、语音报话识别、电脑串行通信及税控等功能;不同国家和地区的收费方式存在差异,即使在同一地区,不同车型的出租车收费方式也有差别,而且出租车还面临几年一次的调价或调整收费方式等问题[4]。采用模拟电路和数字电路设计的计价器整体电路的规模较大用到的器件多造成故障率高难调试对于模式的切换需要用到机械开关机械开关时间久了会造成接触不良功能不易实现。采用单片机设计相对来说功能强大用,较少的硬件和适当的软件相互配合可以很容易的实现设计要求且灵活性强,可以通过软件编程来完成更多的附加功能,然而传统的基于单片机设计的出租车多功能计费器已远远跟不上这种变化,功能升级很繁琐,需要硬件重组和软件更新同步进行,成本高,并且每次升级都可能出现新的不稳定因素;而基于现场可编程逻辑阵列(FPGA)的出租车多功能计费器,采用硬件描述语言Verilog HDL和逻辑综合为基础的自顶向下的电路设计方法,开发成本低,周期短,可靠性高,功能升级方便,满足了用户的要求。

(VHDL实验报告)出租车计费器的设计

电子科技大学成都学院学院

一、实验名称 出租车计费器的设计 二、实验目的 1、了解出租车计费器的工作原理。 2、学会用V HDL 语言编写正确的七段码管显示程序。 3、数量掌握用V HDL 编写复杂功能模块。 4、进一步数量状态积在系统设计中的应用。 三、实验原理 出租车计费器一般都是按公里计费,通常是起步价 xx元(xx元可以行走x公里),然后再是x x元/公里。所以要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。在这个实验中,就要模拟出租车计费器的工作过程,用直流电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。结果的显示用 8 个七段码管,前四个显示里程,后三个显示费用。 在设计VHDL程序时,首先在复位信号的作用下将所有用到的寄存器进行清零,然后开始设定到起步价记录状态,在此状态时,在起步价规定的里程里都一直显示起步价,直到路程超过起步价规定的里程时,系统转移到每公里计费状态,此时每增加一公里,计费器增加相应的费用。 为了便于显示,在编写过程中的数据用BCD码来显示,这样就不存在数据格式转换的问题。比如表示一个三位数,那么就分别用四位二进制码来表示,当个位数字累加大于9时,将其清零,同时十位数字加1,依此类推。 四、实验内容 本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。显示部分的七段码管扫描时钟选择时钟模块的

1KHz,电机模块的跳线选择GND端,这样通过旋钮电机模块的电位器,即可达到控制电机转速的目的。另外用按键模块的S1来作为整个系统的复位按钮,每复位一次,计费器从头开始计费。直流电机用来模拟出租车的车轮子,没转动一圈认为是行走1米,所以每旋转1000 圈,认为车子前进1公里。系统设计是需要检测电机的转动情况,每转一周,计米计数器增加 1。七段码管显示要求为前 4个显示里程,后3个显示费用。 五、实验步骤 1、打开Q UARTUSII 软件,新建一个工程。 2、建完工程之后,再新建一个V HDL File,打开V HDL 编辑器对话框。 3、按照实验原理和自己的想法,在V HDL 编辑窗口编写V HDL 程序。其 程序如下所示:

北京邮电大学数字电路实验报告

北京邮电大学 数字电路与逻辑设计实验 实验报告 实验名称:QuartusII原理图输入 法设计与实现 学院:北京邮电大学 班级: 姓名: 学号:

一.实验名称和实验任务要求 实验名称:QuartusII原理图输入法设计与实现 实验目的:⑴熟悉用QuartusII原理图输入法进行电路设计和仿真。 ⑵掌握QuartusII图形模块单元的生成与调用; ⑶熟悉实验板的使用。 实验任务要求:⑴掌握QuartusII的基础上,利用QuartusII用逻辑 门设计实现一个半加器,生成新的半加器图像模 块。 ⑵用实验内容(1)中生成的半加器模块以及逻辑门 实现一个全加器,仿真验证其功能,并能下载到实 验板上进行测试,要求用拨码开关设定输入信号, 发光二级管显示输出信号。 ⑶用3线—8线译码器(74L138)和逻辑门实现要求 的函数:CBA F+ C + =,仿真验证其 + B C B A A A B C 功能,,并能下载到实验板上进行测试,要求用拨 码开关设定输入信号,发光二级管显示输出信号。二.设计思路和过程 半加器的设计实现过程:⑴半加器的应有两个输入值,两个输出值。 a表示加数,b表示被加数,s表示半加和, co表示向高位的进位。

⑵由数字电路与逻辑设计理论知识可知 b a s ⊕=;b a co ?= 选择两个逻辑门:异或门和与门。a,b 为异 或门和与门的输入,S 为异或门的输出,C 为与门的输出。 (3)利用QuartusII 仿真实现其逻辑功能, 并生成新的半加器图形模块单元。 (4)下载到电路板,并检验是否正确。 全加器的设计实现过程:⑴全加器可以由两个半加器和一个或门构 成。全加器有三个输入值a,b,ci ,两个输 出值s,co :a 为被加数,b 为加数,ci 为低 位向高位的进位。 ⑵全加器的逻辑表达式为: c b a s ⊕⊕= b a ci b a co ?+?⊕=)( ⑶利用全加器的逻辑表达式和半加器的逻 辑功能,实现全加器。 用3线—8线译码器(74L138)和逻辑门设计实现函数 CBA A B C A B C A B C F +++= 设计实现过程:⑴利用QuartusII 选择译码器(74L138)的图形模块

开题报告(模版)

毕业设计(论文)开题报告 设计(论文)题目:基于FPGA的出租车计费系统的设计院系名称: 电气与信息工程学院 专业班级: 电子信息工程09-2班 学生姓名: 导师姓名: 开题时间: 2013年3月15号

一课题研究目的和意义 在我国社会经济的全面发展过程中,各大中小城市的出租车营运事业也迅速发展,出租车已经成为人们日常出行选择较为普遍的交通工具。出租车计价器是出租车营运收费的专用智能化仪表,是出租车市场规范化、标准化以及减少司机与乘客之间发生纠纷的重要设备。为了保护营运者和乘客的经济利益,世界上的多数国家都对作为贸易结算用的出租汽车计价器进行强制管理[1]。我国《计量法》也将出租汽车计价器列入强检目录,实行强制检定。1999年,国家质量技术监督局又将出租汽车计价器列为六种重点管理的计量器具之一[2]。出租车行业以低价高质的服务给人们带来了出行的享受。但是总存在着买纠纷困扰着行业的发展。而在出租车行业中解决这一矛盾的最好方法就是改良计价器。汽车计价器是乘客与司机双方的交易准则它是出车行业发展的重要标志是出租车中最重要的工具。它关系着交易双方的利益。具租有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此汽车计价器的研究也是十分有应用价值的[3]。一种功能完备、简单易用、计量准确的出租车计价器是加强出租车行业管理、提高服务质量的必备品。当计费系统在各大、中城市出租车中使用越来越广泛,用户对计费器的要求也越来越高。以出租车多功能计费器为例,用户不仅要求计费器性能稳定,计费准确,有防作弊功能;同时还要求其具有车票打印、语音报话识别、电脑串行通信及税控等功能;不同国家和地区的收费方式存在差异,即使在同一地区,不同车型的出租车收费方式也有差别,而且出租车还面临几年一次的调价或调整收费方式等问题[4]。采用模拟电路和数字电路设计的计价器整体电路的规模较大用到的器件多造成故障率高难调试对于模式的切换需要用到机械开关机械开关时间久了会造成接触不良功能不易实现。采用单片机设计相对来说功能强大用,较少的硬件和适当的软件相互配合可以很容易的实现设计要求且灵活性强,可以通过软件编程来完成更多的附加功能,然而传统的基于单片机设计的出租车多功能计费器已远远跟不上这种变化,功能升级很繁琐,需要硬件重组和软件更新同步进行,成本高,并且每次升级都可能出现新的不稳定因素;而基于现场可编程逻辑阵列(FPGA)的出租车多功能计费器,采用硬件描述语言Verilog HDL和逻辑综合为基础的自顶向下的电路设计方法,开发成本低,周期短,可靠性高,功能升级方便,满足了用户的要求。该系统在不改变硬件电路的前提下,具有可以重构系统的功能;采用完全相同电路结构,只要根据各地区的要求在Verilog HDL程序中设置各参数,就可以适应各地区出租车不同计费标准的需要,还可以根据各地区需求增加其他功能[5]。

2016年北邮数电实验报告

数字电路与逻辑设计 实验报告 学院:电子工程学院 班级: 姓名: 学号: 班内序号:

目录 (一)实验名称及实验任务要求 (1) (二)模块端口说明及连接图 (2) 1.1实验三(3)模块端口说明 (2) 1.2实验三(3)连接图 (2) 2.1实验四模块端口说明 (2) 2.2实验四连接图 (2) (三)原理图或VHDL代码 (3) 1.实验一(2)原理图 (3) 2.实验三(3)VHDL代码 (4) 3.实验四VHDL代码 (7) (四)仿真波形 (10) 1.实验一(2)仿真波形 (10) 2.实验三(3)仿真波形 (11) 3.实验四仿真波形 (11) (五)仿真波形分析 (11) 1.实验一(2)仿真波形分析 (11) 2.实验三(3)仿真波形分析 (11) 3.实验四仿真波形分析 (11) (六)故障及问题分析 (12) (七)总结和结论 (13)

(一)实验名称及实验任务要求 实验一 名称:QuartusII原理图输入法设计与实现 实验任务要求:EDA基础实验1(1)、(2)、(3)必做,选做VHDL 实现加法器。 实验二 名称:用VHDL设计与实现组合逻辑电路 实验任务要求:四人表决器、8421码转格雷码、数码管译码器(下载测试)。 实验三 名称:用VHDL设计与实现时序逻辑电路 实验任务要求:分频器、8421十进制计数器、将分频器/8421十进制计数器/数码管译码器3个电路进行连接并下载。 实验四 名称:用VHDL设计与实现相关电路 实验任务要求:数码管动态扫描控制器、点阵扫描控制器。

(二)模块端口说明及连接图 1.1实验三(3)模块端口说明 cp:时钟信号输入; rst:8421十进制计数器异步置位; c[6...0]:七段二极管数码管显示; cat[7...0]:数码管显示。 1.2实验三(3)连接图 2.1实验四模块端口说明 cp:时钟信号输入; rst:8421计数器异步复位; lgt[6...0]:七段二极管数码管显示; cat[7...0]:数码管显示。 2.2实验四连接图

北邮数字电路与逻辑设计实验-实验报告(上)

北京邮电大学电路实验中心<数字电路与逻辑设计实验(上)> 实 验 报 告 班级: xxx 学院: xxx 实验室: xxx 审阅教师:姓名(班内序号): xxx)学号: 2xxx 实验时间: xxxx 评定成绩:

目录 实验1 Quartus II 原理图输入法设计与实现 (3) 一、实验目的 (3) 二、实验所用器材 (3) 三、实验任务要求 (3) 四、实验原理图 (3) 五、实验仿真波形图及分析 (4) 实验2 用VHDL 设计与实现组合逻辑电路 (5) 一、实验目的 (5) 二、实验所用器材 (5) 三、实验任务要求 (5) 四、VHDL代码 (5) 五、实验仿真波形图及分析 (7) 实验3 用VHDL 设计与实现时序逻辑电路 (8) 一、实验目的 (8) 二、实验所用器材 (8) 三、实验任务要求 (8) 四、模块端口说明及连接图 (8) 五、VHDL代码 (9) 六、实验仿真波形图及分析 (10) 实验4 用VHDL 设计与实现数码管动态扫描控制器 (10) 一、实验目的 (10) 二、实验所用器材 (11) 三、实验任务要求 (11) 四、模块端口说明及连接图 (11) 五、VHDL代码 (11) 六、实验仿真波形图及分析 (15) 故障及问题分析 (16) 总结和结论 (17)

实验1 Quartus II 原理图输入法设计与实现 一、实验目的 (1)熟悉用Quartus II原理图输入法进行电路设计和仿真; (2)掌握Quartus II 图形模块单元的生成与调用; (3)熟悉实验板的使用。 二、实验所用器材 (1)计算机; (2)直流稳压电源; (3)数字系统与逻辑设计实验开发板。 三、实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块单元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数+CBA,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 四、实验原理图 (1)半加器原理图 (2)全加器原理图

基于单片机的出租车计价器设计报告

《单片机应用与仿真训练》设计报告出租车计价器设计 姓名学号: 专业班级: 指导老师: 所在学院: 2012年6月25日

摘要 本设计用直流电机转动模拟出租车车轮转动,实现出租车多功能地计价功能.设计采用AT89S52单片机为主控芯片,用光电对管检测电机转盘转速,采用24C02芯片为系统在掉电时路程、钱数等重要信息提供存储保护,采用两个四位8段共阴数码管显示里程、总价格和等待时间等信息.本设计可以实现单双程设置、系统暂停、空车指示、信息显示、掉电保护等功能. 出租车计价是根据车所行驶地路程以及乘客乘车地方式综合决定地.出租车行驶总路程可以通过车轮地周长乘车轮旋转圈数得到.即可计算得到车轮旋转几周出租车能行驶一公里地路程.使用光电对管能方便地计量车轮旋转地圈数,输出地脉冲信号被接入到AT89S52单片机系统中,通过计算接收到地脉冲个数,计算出当前所行驶地路程,并且可以计算实时地速度.与此同时,根据不同地收费标准计算收费.通过键盘能够实现往返设置,启动、暂停、停止计价器、设置单返程等. 关键字:出租车计价器,AT89S52,24C02,光电对管 Abstract This design with DC motor to rotate the analog taxi wheels turning, multi-purpose taxi pricing function. Design using AT89S52 MCU for master chip with a photoelectric tube test motor turntable speed, AT24C02 chip to make the system power-down distance, money and other important information on the storage protection, the use of two four-segment common cathode digital display tube mileage, the total price and waiting time information. This design enables single and double-way set, system halted, empty instructions, information display, power-down protection and other functions. The taxi meter according to the distance traveled by the vehicle and passengers ride the decision. Taxi driving the total distance by the circumference of the wheel drive wheel rotation laps. Can be calculated by the wheel rotation a few weeks a taxi to travel one kilometer away. The use of opto-the number of turns of the tube can be easily measured wheel rotation, the output

北邮数电实验报告

北京邮电大学实验报告 实验名称:数字电路与逻辑设计实验报告 学院:信息与通信工程学院 班级: 姓名: 学号: 序号: 日期:

实验三:用VHDL语言设计与实现逻辑电路 一、实验内容 1. 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验版测试。要求用按键设定输入信号,发光二极管显示输出信号; 2.用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能; 3.将(1),(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。 二、模块端口说明及连接图 1.分频器 2. 计数器 clk: 时钟输入信号 clk: 时钟信号输入 clear: 复位信号输入 clear: 复位信号输入 clk_out: 时钟分频后的信号输出 q: 计数器的输出 3.数码管显示 b: 数码管的输入信号 seg: 译码显示输出 onoff: 数码管的输出控制

4.连接图 三、实验分析 1.设计思路 本实验将之前的分频器和计数器以及数码管显示模块组合起来,实现了单个数码管现显示0~9,每隔0.5s切换一次显示内容。 COMPONENT div_12实现了时钟分频,将50MHz的单片机晶振时钟进行分频,输出频率2HZ占空比50%的方波时钟,以此时钟作为内部时钟驱动计数器。 COMPONENT jishuqi是一个十进制计数器,NUM从“0000”到“1001”循环变化,模为10。计数器的输出传递给数码管译码显示电路。 COMPONENT seg7_1是数码管译码显示电路,将收到的信号NUM译码并控制数码管的段锁存来控制数码管的显示。 整体来看,div-12提供了分频后2Hz的时钟,驱动计数器计数,计数的结果作为数码管译码显示模块的输入,根据计数器实时的数进行数码管的显示。综合起来就实现了设计的功能。 在进行电路的连接时,可直接在代码中分成三个进程来实现,也可通过为每个模块建立符号,连接电路图来实现。 2. 具体代码如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY fenpinjishu IS PORT( clear2 :IN STD_LOGIC; clk1:IN STD_LOGIC; b1:OUT STD_LOGIC_VECTOR(6 downto 0); CAT:OUT STD_LOGIC_VECTOR(7 downto 0) );

北邮数字电路综合实验报告——交通灯控制器的VHDL实现

数字电路综合实验报告 班级: 姓名: 班内序号: 学号: 日期:

目录 一、实验摘要 (3) 二、实验任务 (3) 1.任务要求 (3) 2.任务解析 (3) 三、实验设计思路 (4) 1.状态转移图 (4) 2.流程图 (5) 3.模块确定 (5) 4.系统框图 (7) 四、程序代码 (7) ⒈主程序 (7) ⒉分频模块 (9) ⒊防抖模块 (10) ⒋交通灯控制模块 (11) ⒌数字译码模块 (14) 五、实验结果 (15) 1.仿真结果 (15) 2.实物结果 (17) 六、所遇问题分析 (17) 七、实验总结 (18)

交通灯控制器的VHDL实现 一、实验摘要 随着交通情况的日益复杂,交通灯在生活中所处的位置也越来越高。本实验就是基于VHDL语言编程实现了十字路口的交通灯控制器。对于交通等控制器的设计是分模块自顶向下的设计思想,软硬件结合来实现本设计。 关键字:交通灯、VHDL、控制器 二、实验任务 1.任务要求 1)南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5 秒和25秒; 2)当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制 器恢复原来状态,继续正常运行; 3)用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间; 2.任务解析 东西(A车道)和南北(B车道)方向各有一组绿、黄、红灯用于指挥交通(如图1),绿灯、黄灯和红灯的持续时间分别为20 秒、5 秒和25 秒。 图1 十字路口交通灯模型

因此,可以设计如下四个状态,其关系为: 状态 亮灯情况 车辆行驶状况 持续时 间(秒)下一状态A车道B车道 S0 红亮红亮紧急状况,A/B车道均禁止通行~ S1 S1 绿亮红亮A车道通行,B车道禁止通行20 S2 S2 黄亮红亮A车道缓行,B车道禁止通行 5 S3 S3 红亮绿亮A车道禁止通行,B车道通行20 S4 S4 红亮黄亮A车道禁止通行,B车道缓行 5 S1 三、实验设计思路 1.状态转移图 图2 状态转移图

出租车计费器的设计

电子科技大学成都学院学院 标准实验报告 (实验)课程名称数字电路EDA设计与应用 姓名乱弹的枇杷 学号1240830 专业电气工程及其自动化 指导教师张

一、实验名称 出租车计费器的设计 二、实验目的 1、了解出租车计费器的工作原理。 2、学会用V HDL 语言编写正确的七段码管显示程序。 3、数量掌握用V HDL 编写复杂功能模块。 4、进一步数量状态积在系统设计中的应用。 三、实验原理 出租车计费器一般都是按公里计费,通常是起步价 xx元(xx元可以行走x公里),然后再是x x元/公里。所以要完成一个出租车计费器,就要有两个计数单位,一个用来计公里,另外一个用来计费用。通常在出租车的轮子上都有传感器,用来记录车轮转动的圈数,而车轮子的周长是固定的,所以知道了圈数自然也就知道了里程。在这个实验中,就要模拟出租车计费器的工作过程,用直流电机模拟出租车轮子,通过传感器,可以得到电机每转一周输出一个脉冲波形。结果的显示用 8 个七段码管,前四个显示里程,后三个显示费用。 在设计VHDL程序时,首先在复位信号的作用下将所有用到的寄存器进行清零,然后开始设定到起步价记录状态,在此状态时,在起步价规定的里程里都一直显示起步价,直到路程超过起步价规定的里程时,系统转移到每公里计费状态,此时每增加一公里,计费器增加相应的费用。 为了便于显示,在编写过程中的数据用BCD码来显示,这样就不存在数据格式转换的问题。比如表示一个三位数,那么就分别用四位二进制码来表示,当个位数字累加大于9时,将其清零,同时十位数字加1,依此类推。 四、实验内容 本实验要完成的任务就是设计一个简单的出租车计费器,要求是起步价3元,准行1公里,以后1元/公里。显示部分的七段码管扫描时钟选择时钟模块的

北邮-数电实验报告

北邮-数电实验报告

数字电路实验报告 学院:信息与通信工程 专业:信息工程 班级:2013211125 学号:2013210681 姓名:袁普

②:仿真波形图以及分析 波形图: 波形分析:通过分析ab ci三个输入在8中不同组合下的输出,发现与全加器的真值表吻合,说明实现了全加器的逻辑功能。同时看见波形中出现了毛刺(冒险),这也与事实一致。 ③:故障及问题分析 第一次在做全加器的时候发现找不到已经生成的半加器模块,后来发现是因为在建立工程时这两个项目没有建在同一个文件夹里,在调用的时候就找不到。后来我将全加器工程建在同一个文件夹里解决了此问题。

实验二:用VHDL设计和实现组合逻辑电路 一:实验要求 ①:用VHDL设计一个8421码转换为格雷码的代码转换器,仿真验证其功能。 ②:用VHDL设计一个4位二进制奇校验器,要求在为奇数个1时输出为1,偶数个1时输出为0,仿真验证其功能。 ③:用VHDL设计一个数码管译码器,仿真验证其功能,下载到实验板测试,要求用拨码开关设定输入信号,数码管显示输出信号,并且只使一个数码管有显示,其余为熄灭状态。 二:故障及问题分析 在刚开始实现让一个数码管显示的时候,我本来准备再设置6个输入和输出,通过实验板上的拨码来输入信息分别控制不同的数码管的的开闭状态,但是后来发现这样效率很低而且实验板上的拨码开关数量根本不够。在老师的提醒下,我最终在VHDL里直接增加了一个向量输出”011111”来直接控制cat0~5六个管脚,从而达到了实验的要求。

实验三:用VHDL设计和实现时序逻辑电路 一:实验要求 ①:用VHDL语言设计实现一个8421十进制计数器,要求有高电平复位功能,仿真验证其功能。 ②:用VHDL语言设计实现一个分频系数为12,输出为占空比50%方波的分频器,有高电平复位功能,仿真验证其功能。 ③:将(1),(2)和数码管译码器三个电路进行连接,仿真验证其功能,并下载到实验板进行测试,要求第三个数码管显示数字。二:报告内容 ①实验三(3)模块端口说明及模块代码 模块一:div12为一个有高电平复位功能的分频系数为12的分屏器,其输出是一个占空比50%的方波。此模块输入连接一个时钟输入,即可在输出端得到一个周期更大的方波输出。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div12 is port( clear,clk:in std_logic; clk_out:out std_logic ); end div12; architecture struct of div12 is signal temp:integer range 0 to 5; signal clktmp:std_logic; begin process(clk,clear) begin if(clear='1') then

出租车计价器的设计【开题报告】

开题报告 电气工程及其自动化 出租车计价器的设计 一.综述本课题国内外研究动态,说明选题的依据和意义: 随着我国经济的迅速发展,人民生活水平的显著提高,城市的交通日趋完善,出租车计价器的应用也越来越广泛。虽然私家车的拥有量在大幅度地提高,但是出租车还是在我国的交通运输中承担着重要的角色,出租车计价器是出租车上必不可少的重要仪器,它是负责出租车营运收费的专用智能化仪表。用户不仅要求计价器性能稳定、计价准确,而且随着功能越来越多对其他方面要求也越来越高。 出租车行业在我国是八十年代初兴起的一项行业,伴随着我国国民经济的高速发展,出租车已成为城市公共交通的重要组成部分,多年来国内普遍使用的计价器只具备单一的计量功能,不能很好的满足市场的需求。在我国第一家生产计价器的企业是重庆市起重机厂。发展到现在,国内生产计价器的企业已经有上百家,主要是集中在北京,上海,沈阳和广州等地。 最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说早期的计价器就是一个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化,此时它在计程的同时还可以完成计价的工作。 大规模集成电路的发展又产生了第三代计价器,也就是全电子化的计价器,它的功能也在不断完善。当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本出现了,它可以完成计程,计价,显示等基本工作。单片机以及外围芯片的不断发展也促进了计价器的发展,现在出租车计价器在使用时具备的主要功能是根据行驶里程计价,并且要求精度高,可靠性好。 近年来,我国出租汽车行业迅猛发展,出租汽车已经成为我国城市公共交通的重要组成部分和现代化城市必备的基础设施,成为人们工作、生活中不可缺少的交通工具。出租汽车服务行业和出租汽车计价器紧密相关,因为出租汽车必须安装出租汽车计价器才能投入营运。出租汽车计价器是一种能根据乘客乘坐汽车行驶距离和等候时间的多少进行计价,并直接显示车费值的计量器具。计价器是出租汽车的经营者和乘

出租车计价器总结报告讲解

电气工程学院 微机原理与接口技术课程设计 设计题目:出租车计价器系统设计 学号:11291092 姓名:杨艳丽 同组人:无 指导教师:徐建军 设计时间:2014.3.15-3.25 设计地点:电气学院实验中心

微机原理课程设计成绩评定表姓名杨艳丽学号11291092 课程设计题目:出租车计价器系统设计 课程设计答辩或提问记录: 成绩评定依据: 课程设计预习报告及方案设计情况(20%): 课程设计考勤情况(5%): 电路焊接情况(15%) 课程设计调试情况(40%): 课程设计总结报告与答辩情况(20%): 最终评定成绩(以优、良、中、及格、不及格评定) 指导教师签字: 年月日

微机原理与接口技术课程设计任务书学生姓名:杨艳丽指导教师:徐建军 一、课程设计题目: 出租车计价器系统设计 二、课程设计要求 1. 根据具体设计课题的技术指标和给定条件,独立进行方案论证和电路设计,要求概念清楚、方案合理、方法正确、步骤完整; 2. 查阅有关参考资料和手册,并能正确选择有关元器件和参数,对设计方案进行仿真; 3. 完成预习报告,报告中要有设计方案,设计电路图,还要有仿真结果; 4. 进实验室进行电路调试,边调试边修正方案; 5. 撰写课程设计报告——最终的电路图、调试过程中遇到的问题和解决问题的方法。 三、进度安排 1.时间安排 序号内容学时安排(天) 1 方案论证和系统设计 3.14-3.15 2 完成电路仿真,写预习报告 3.16-3.17 3 电路调试 3.18-3.25 4 写设计总结报告与答辩 3.26-3.27 合计13天 设计调试地点:电气楼410 2.执行要求 微机原理与接口技术课程成绩80分以上的同学可以自拟题目,其余的同学都是指定题目。,每组不得超过2人,要求学生在教师的指导下,独力完成所设计的详细电路(包括计算和器件选型)。严禁抄袭,严禁两篇设计报告雷同。

北邮数电实验分析报告-信息

北邮数电实验报告-信息

————————————————————————————————作者:————————————————————————————————日期:

数字电路与逻辑设计实验 姓名*** 学院信息与通信工程学院 专业信息工程 班级*** 学号**** 班内序号***

实验一 一、实验名称和实验任务要求 1.实验内容:QuartusII原理图输入法设计与实现。 2.实验目的: (1)熟悉用QuartusII原理图输入法进行电路设计和仿真。 (2)掌握QuartusII图形模块单元的生成与调用。 (3)熟悉实验板的使用。 3.实验任务要求: (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图像模块。 (2)用实验内容1中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板上测试。要求用拨码开关设定输入信 号,发光二极管显示输出信号。 (3)用3线—8线译码器(74LS138)和逻辑门实现函数 F=(/)(/)(/)+(/)(/)+(/)(/)+,仿真验证其功能,并下载到实 验板测试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 二、原理图 半加器模块和逻辑门设计实现的全加器: 三、仿真波形图及分析 电路实现了全加器的功能。全加器是实现两个1位二进制数及低位来的进位相加求得和数及向高位进位的逻辑电路。由其原理可得逻辑表达式:sum=ain⊕bin⊕cin

cout = (ain⊕bin)cin + ain*bin。 列出真值表: 输入输出 ain bin cin cout sum 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 仿真波形对比真值表,可以看出波形图与理论值完全符合。 四、故障及问题分析 1、问题:按照逻辑表达式连接了全加器电路后,仿真波形很乱。 解决方法:思考后知道了应该把输入信号依次设成2的n次方,这样的仿真波形清楚容易分析。 2、问题:把代码下载到板子上的过程中,进行到37%的时候停了,等了2分钟 也没继续下载。 解决方法:再次重连USB尝试下载,手紧握着接线口,下载成功了,分析可能是接线口接触不好。 实验二 一、实验名称和实验任务要求 1.实验内容:用VHDL设计与实现组合逻辑电路。 2.实验目的: (1)熟悉用VHDL语言设计组合逻辑电路的方法。 (2)熟悉用QuartusII文本输入法进行电路设计。 3.实验任务要求: (1)用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个‘1’时,输出为‘1’,否则输出‘0’,仿真验证其功能,并下载到实验板测 试。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (2)用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能,并下载到实验板测试。要求用拨码开关设定输入信号, 发光二极管显示输出信号。

北邮数电实验报告

北京邮电大学 实验报告实验名称:数电电路与逻辑设计实验 学院:信息与通信工程学院 班级: 姓名: 学号: 班内序号: 日期:

一. 实验一:Quartus II 原理图输入法设计 1. 实验名称和实验任务要求 (1)用逻辑门设计实现一个半加器,仿真验证其功能,并生成新的半加器图形模块 元。 (2)用(1)中生成的半加器模块和逻辑门设计实现一个全加器,仿真验证其功能,并下载到实验板测试,要求用拨码开关设定输入信号,发光二极管显示输出信号入信号。 (3)用3线-8线译码器(74LS138)和逻辑门设计实现函数 F=A B C +A B C +A B C + A B C 。 2. 实验原理图及波形图 (1)半加器 (2)全加器

(3)74LS38 3.仿真波形图分析 (1)半加器: 输入为a,b,输出S,CO(进位)。 当ab都为0时,半加和s=0,进位端co=0。 当ab都为1时,半加和s=0,进位端co=1。 当a=1,b=0 或a=0,b=1时,半加和s=1,进位端co=0。 (2)全加器:

输入a,b,输出S,CO(进位),ci(低进位)。 当a=0,b=0,ci=0,输出s=0,co=0。 当a=0,b=1或a=1,b=0又 ci=0,输出s=1,co=0。 当a=0,b=0,ci=1,输出s=1,co=0。 (3)74LS138 输入A,B,C,输出为3。 四个输出对应F中的四个最小项,Y0、Y2、Y4、Y7,以实现函数功能。 二.实验二:用 VHDL 设计与实现组合逻辑电路 1.实验名称和实验任务要求 (1)用VHDL语言设计实现一个共阴极7段数码管译码器,仿真验证其功能。要求用拨码开关设定输入信号,7段数码管显示输出信号。 (2) 用VHDL语言设计实现一个8421码转换为余3码的代码转换器,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 (3) 用VHDL语言设计实现一个4位二进制奇校验器,输入奇数个’1’时,输出为’1’,否则输出’0’,仿真验证其功能。要求用拨码开关设定输入信号,发光二极管显示输出信号。 2.实验代码及波形图 (1)共阴极7段数码管译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY GUAN IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END GUAN; ARCHITECTURE encoder_arch OF GUAN IS BEGIN PROCESS(A) BEGIN C<="011111"; CASE A IS WHEN"0000"=> B<="1111110";--0 WHEN"0001"=> B<="0110000";--1 WHEN"0010"=> B<="1101101";--2 WHEN"0011"=> B<="1111001";--3 WHEN"0100"=> B<="0110011";--4 WHEN"0101"=> B<="1011011";--5 WHEN"0110"=> B<="1011111";--6 WHEN"0111"=> B<="1110000";--7 WHEN"1000"=> B<="1111111";--8 WHEN"1001"=> B<="1111011";--9

相关文档
相关文档 最新文档