《北邮数电实验报告4人表决器_北邮电子-数电综合实验的报告.docx》由会员分享,可在线阅读,更多相关《北邮数电实验报告4人表决器_北邮电子-数电综合实验的报告.docx(6页珍藏版)》请在金锄头文库上搜索。
1、北邮数电实验报告4人表决器_北邮电子-数电综合实验报告 数字电路综合实验设计 简易出租车计价器的设计与实现 学院: 电子工程学院 班级: 2011211203 学号: 2011210876 姓名: 孙月鹏 班内序号: 04 摘要 本文介绍了利用Quartus II综合性PLD/FPGA开发软件,在MAXII 数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL 语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。 关键字:可编程器件 模块
2、化设计 出租车计价器 VHDL 语言 一、设计任务要求 基本要求: 1行驶公里:用时钟2秒钟表示出租车匀速行驶1公里。在行车5公里以内,按起步价13元收费,超过5公里部分,以每公里2元收费。燃油附加费每运次1元。 2途中等待:用按键控制中途等待,等待少于(包括)5秒不收费,超过5秒后没等待3秒钟加收1元。 3用数码管分时显示计费金额、行驶里程和等候时间。字母A 表示当前处于显示计费金额状态,字母B 表示当前处于显示行驶里程状态,字母C 表示当前处于显示等候时间状态。 4用按键控制出租车空驶、载客状态。 提高要求: 1用点阵滚动显示收费单据。 2具有夜间模式,基本单价加收20%的费用。出租车收费
3、以元为单位,元以下四舍五入。 3出租车行驶速度可调可控。 4多人乘车,分段计价。 5自拟其他功能。 二、设计思路与结构框图 1. 设计思路 图1 结构框图 由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。 该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下: 图2 逻辑框图 2. 控制器部分的状态转移图 该控制
4、器一共有三个基本状态: 空驶状态、载客状态和等待状态。 分别由v 、和w 来进行控制。 三、分块电路和总体电路设计 (一)总体电路设计 图3 状态转移图 整体电路由数码管译码电路、转换电路、点阵译码电路、技术控制电路、 分频电路五部分构成。 分频电路将开发板内部的50MHz 时钟分为500hz (供给数码管和点阵)、 1Hz(控制器计时) 、0.5Hz (行驶路程计费)、0.3Hz (等待时间计费)以及用于提高分频效率的其他若按频率。 计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计 数以及费用的计数。输出为三组十位二进制数。 转换电路有转换数据类型和在数码管上分时显示两个功能。
5、首先将输入 的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD 码。其次利用0.5hz 的时钟,将行驶里程、等待时间、计费金额以2秒为周期依次out14,供给数码管以便分时显示。 数码管译码电路以500HZ 实现动态扫描,并将转换电路输出的5组BCD 码依次译码,完成显示。 点阵译码器根据载客控制信号,分别显示“O ”、“X ”静态图案。 (二)分块电路设计 1. 分频器(以100分频为例) 1.1 电路模块 1.2 关键代码 ENTITY div_100 IS PORT( clk100 : IN STD_LOGIC; - cle
6、ar: IN STD_LOGIC; clk1: OUT STD_LOGIC); -END div_100; ARCHITECTURE a100 OF div_100 IS SIGNAL tmp100: INTEGER RANGE 0 TO 99; -BEGIN p1:PROCESS(clear,clk100) -p1 BEGIN IF clear =0 THEN tmp100 ELSIF clk100event AND clk100=1 THEN IF tmp100=99 THEN tmp100 tmp100 END PROCESS p1; clk100 :输入时钟 clear : 复位端 c
7、lk1 : 输出时钟 输入时钟 输出时钟 计数信号 进行100进制的计数 p2:PROCESS(clk100) -p2输出占空比为50%的新时钟 BEGIN IF clk100event AND clk100=1 THEN IF tmp10049 THEN clk1 clk1 END PROCESS p2; END a100; 1.3 仿真波形 图5 200分频仿真波形 图6 5分频仿真波形 2. 计数控制器 2.1 电路模块 计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v 和等待控制信号w 。control1完成里程的计数cd 和行驶费用cm1,control2完成等待时间
8、ct 的计数和等待开始计费(ct5s)信号outt ,control3接收到outt 后输出为等待时间的计费cm2,control4为总费用(cm1+cm2+燃油附加费 1 图7 电路控制器 设计关键思想是将费用、行驶里程、等待时间三个计数过程分开处理,并且将行驶计费和等待计费也分开处理。通过载客信号v 、等待信号w 分别触发不用的进程完成计数。因为行驶过程中每两秒1公里,每公里两元,等待过程中每三秒1元,因此分别用1hz 、0.5hz 、0.33hz 的时钟完成计时、计费、记里程。 2.2 模块control1 2.2.1 电路模块 行驶里程计数cd 和行驶计费cm1 2.2.2 关键代码
9、ENTITY control1 IS PORT( clk2: IN STD_LOGIC; -输入是0.5Hz 的时钟 v: IN STD_LOGIC; -载客控制输入信号 w: IN STD_LOGIC; -等待信号 cm1: OUT STD_LOGIC_VECTOR(9 DOWNTO 0); -里程计费 cd: OUT STD_LOGIC_VECTOR(9 DOWNTO 0) ); -行驶距离 END control1 ; ARCHITECTURE c OF control1 IS SIGNAL temp1: STD_LOGIC_VECTOR(9 DOWNTO 0) ; SIGNAL tem
10、p_cm: STD_LOGIC; BEGIN p1:PROCESS(clk2,v,w) -p1里程计数 BEGIN IF (clk2event and clk2=1) THEN IF v=0 THEN -v=0时重新计数 temp1 ELSIF w=1 THEN -开始等待时里程保持不变 temp1 ELSE temp1 p2:PROCESS(clk2,temp1) BEGIN IF (clk2event and clk2=1) THEN IF temp1 ELSE cm1 cd END PROCESS p2; END c; 2.3 模块control2 2.3.1电路模块 等待时间计数ct
11、和等待开始计费信号outt (ct5s) 2.3.2关键代码 ENTITY control2 IS PORT( clk1: IN STD_LOGIC; -输入是1Hz 的时钟 v: IN STD_LOGIC; -载客控制输入信号 w: IN STD_LOGIC; -等待信号 outt: out STD_LOGIC; -若大于5秒,输出1 ct: out STD_LOGIC_VECTOR(9 DOWNTO 0);-等待时间输出 END control2 ; ARCHITECTURE c OF control2 IS SIGNAL tempt: STD_LOGIC_VECTOR(9 DOWNTO
12、0) ; SIGNAL temp1: INTEGER RANGE 0 TO 999; BEGIN p3:PROCESS(clk1,v,w) -累加等待时间 BEGIN IF (clk1event and clk1=1) THEN IF v=0 THEN tempt ELSIF w=0 THEN -行驶时保持状态 tempt temp1 ELSE tempt IF temp14 THEN -大于5秒时outt=1 outt END IF; END IF; END PROCESS p3; p4:PROCESS(clk1,tempt) -将信号赋给输出ct BEGIN ct END PROCESS
13、p4; END c; 2.4 模块control3 2.4.1电路模块 当输入outt 为1时,开始计数 cm2为等待时间计费 2.4.2关键代码 ENTITY control3 IS PORT( clk3: IN STD_LOGIC; -输入是0.3Hz 的时钟 outt: IN STD_LOGIC; -为1时,等待时间大于5s v: IN STD_LOGIC; -载客控制输入信号 w: IN STD_LOGIC; -等待信号 cm2: out STD_LOGIC_VECTOR(9 DOWNTO 0);-等待计费 END control3 ; ARCHITECTURE c OF contro
14、l3 IS SIGNAL tempm: STD_LOGIC_VECTOR(9 DOWNTO 0) ; BEGIN p5:PROCESS(clk3,outt,v,w) BEGIN IF outt=1THEN -大于5秒时开始计费 IF (clk3event and clk3=1) THEN IF v=0 THEN tempm ELSE tempm END PROCESS p5; p6: PROCESS(clk3,tempm) BEGIN IF V=0 THEN cm2 cm2 END PROCESS p6; END c; 2.5 control4 2.5.1 电路模块 将等待计费cm2和行驶计费
15、cm1相加,并加上 燃油费1元,得到总费用cm 2.5.2 关键代码 ENTITY control4 IS PORT( clk2: IN STD_LOGIC; -输入是0.5Hz 的时钟 v: IN STD_LOGIC; -载客控制输入信号 cm1: in STD_LOGIC_VECTOR(9 DOWNTO 0);-行驶费用 cm2: in STD_LOGIC_VECTOR(9 DOWNTO 0); -等待费用 cm: out STD_LOGIC_VECTOR(9 DOWNTO 0);-总费用 END control4 ; ARCHITECTURE c OF control4 IS BEGIN p5:PROCESS(clk2,v) BEGIN IF (clk2event and clk2=1) THEN IF v=0 THEN cm END PROCESS p5; END c; 2.6控制计数部分的总仿真波形 图8 控制计数器仿真波