北邮数电实验报告4人表决器北邮电子-数电综合实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北邮数电实验报告4人表决器_北邮电子-数电综合实验报告

数字电路综合实验设计

简易出租车计价器的设计与实现

学院:电子工程学院班级:2011211203学号:2011210876姓名:孙月鹏班内序号:04

摘要

本文介绍了利用QuartusII综合性PLD/FPGA开发软件,在MAXII数字逻辑实验开发板上实现简易出租车计价器功能的设计与实现方法。本方案采用自上而下的设计理念,将整体电路按照功能划分为分频、计数、控制、数码管显示电路、点阵显示电路等若干模块,模块内用VHDL语言完成逻辑设计,模块间用原理图进行连接,使整体可实现计费、计时等功能。

关键字:可编程器件模块化设计出租车计价器VHDL语言

一、设计任务要求

基本要求:

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.设计思路

图1结构框图

由结构框图可以分析得出,该系统的的主体是计数控制器。该系统由外部控制载客控制信号和等待控制信号,以时钟信号的翻转为计数依据,完成对时间、里程和费用的计数,并将结果通过数码管译码电路显示出来。

该系统的控制信号可由拨码或按键输入,时钟由开发板内部时钟分频得出,输出有点阵输出和数码管输出。因此,可将系统分为分频器、计数控制器、数码管译码和显示以及点阵显示四部分。并以此得出系统的逻辑框图如下:图2逻辑框图

2.控制器部分的状态转移图

该控制器一共有三个基本状态:空驶状态、载客状态和等待状态。分别由v、和w来进行控制。

三、分块电路和总体电路设计

(一)总体电路设计

图3状态转移图

整体电路由数码管译码电路、转换电路、点阵译码电路、技术控制电路、分频电路五部分构成。

分频电路将开发板内部的50MHz时钟分为500hz(供给数码管和点阵)、

1Hz(控制器计时)、0.5Hz(行驶路程计费)、0.3Hz(等待时间计费)以及用于提高分频效率的其他若按频率。

计数控制电路由四部分构成,整体完成行驶距离的计数、等待时间的计

数以及费用的计数。输出为三组十位二进制数。

转换电路有转换数据类型和在数码管上分时显示两个功能。首先将输入

的十位二进制数转换为4位十进制数,并且利用除法和取余数的运算提取出个位、十位、百位、千位,并转换为四位二进制BCD码。其次利用0.5hz的时钟,将行驶里程、等待时间、计费金额以2秒为周期依次out1~4,供给数码管以便分时显示。

数码管译码电路以500HZ实现动态扫描,并将转换电路输出的5组BCD 码依次译码,完成显示。

点阵译码器根据载客控制信号,分别显示“O”、“X”静态图案。

(二)分块电路设计1.分频器(以100分频为例)

1.1电路模块1.2关键代码

ENTITYdiv_100ISPORT(

clk100:INSTD_LOGIC;--clear:INSTD_LOGIC;

clk1:OUTSTD_LOGIC);--ENDdiv_100;

ARCHITECTUREa100OFdiv_100IS

SIGNALtmp100:INTEGERRANGE0TO99;--BEGIN

p1:PROCESS(clear,clk100)--p1BEGIN

IFclear=“0”THENtmp100

ELSIFclk100”eventANDclk100=“1”THENIFtmp100=99THENtmp100

tmp100

ENDPROCESSp1;

clk100:输入时钟

clear:复位端clk1:输出时钟输入时钟输出时钟计数信号进行100进制的计数

p2:PROCESS(clk100)--p2输出占空比为50%的新时钟BEGIN IFclk100”eventANDclk100=“1”THE NIFtmp10049THENclk1

clk1

ENDPROCESSp2;ENDa100;

1.3

仿真波形

图5200分频仿真波形

图65分频仿真波形

2.计数控制器

2.1电路模块

计数控制器由四部分组成,输入为三个不同频率的时钟、载客控制信号v

和等待控制信号w。control1完成里程的计数cd和行驶费用cm1,control2完成等待时间ct的计数和等待开始计费(ct5s)信号outt,control3接收到outt 后输出为等待时间的计费cm2,control4为总费用(cm1+cm2+燃油附加费

1

图7电路控制器

设计关键思想是将费用、行驶里程、等待时间三个计数过程分开处理,并且将行驶计费和等待计费也分开处理。通过载客信号v、等待信号w分别触发不用的进程完成计数。因为行驶过程中每两秒1公里,每公里两元,等待过程中每三秒1元,因此分别用1hz、0.5hz、0.33hz的时钟完成计时、计费、记里程。 2.2模块control12.2.1电路模块

行驶里程计数cd和行驶计费cm1

2.2.2关键代码

ENTITYcontrol1ISPORT(

clk2:INSTD_LOGIC;--输入是0.5Hz的时钟v:INSTD_LOGIC;--载客控制输入信号w:INSTD_LOGIC;--等待信号

cm1:OUTSTD_LOGIC_VECTOR(9DOWNTO0);--里程计费

cd:OUTSTD_LOGIC_VECTOR(9DOWNTO0));--行驶距离ENDcontrol1;

ARCHITECTUREcOFcontrol1IS

SIGNALtemp1:STD_LOGIC_VECTOR(9DOWNTO0);

SIGNALtemp_cm:STD_LOGIC;BEGIN

p1:PROCESS(clk2,v,w)--p1里程计数BEGIN

IF(clk2”eventandclk2=“1”)THEN

IFv=“0”THEN--v=0时重新计数temp1

ELSIFw=“1”THEN--开始等待时里程保持不变temp1

ELSEtemp1

p2:PROCESS(clk2,temp1)BEGIN

IF(clk2”eventandclk2=“1”)THEN

IFtemp1

ELSEcm1

相关文档
最新文档