数字逻辑电路专题实验报告(出租车计费)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字逻辑电路专题实验报告
——基于CPLD/FPGA的出租车计费器设计
目录
一.实验目的 (2)
二.设计项目实现的目标 (2)
三.项目设计概要 (3)
1. 项目整体设计概述: (3)
2. 项目设计特点: (3)
3. 个人任务说明: (3)
四.系统设计方案 (3)
1. 系统功能模块示意图: (3)
2. 功能模块说明: (4)
五.测试结果及分析 (19)
六.项目总结 (21)
七结束语 (22)
八.参考书 (22)
一.实验目的
数字系统设计实验是在数字逻辑课程基础上所开设的一门实践课。其目的使大家把所学到的课程知识,在实践中得到综合的运用并加深对课程知识的理解,同时学会一般数字系统的设计方法。根据课程特点结合现有的实验条件选择相应的题目,在老师的指导下,由学生自己独立完成实验电路设计和调试工作。应用可编程逻辑器件EDA技术,完成自己的设计任务,初步掌握较复杂逻辑电路的设计调试方法,为以后的学习和工作奠定良好的基础
二.设计项目实现的目标
基于CPLD/FPGA的出租车计费器的组成如图1所示。各部分主要功能如下:
(1) A计数器对车轮传感器送来的脉冲信号进行计数(每转一圈送一个脉冲)。不同车型的车轮直径可能不一样,通过“设置1”对车型做出选择,以实现对不同车轮直径的车进行调整。
(2) B计数器对百米脉冲进行累加,并输出实际公里数的BCD码给译码动态扫描模块。每计满500送出一个脉冲给C计数器。“设置2”实现起步公里数预置。
(3) C计数器实现步长可变(即单价可调)的累加计数,每500米计费一次。“设置3”用来完成起步价格、公里价格预置等。
(4) 译码/动态扫描将路程与计费的数值译码后用动态扫描的方式驱动数码管显示。
(5) 数码管显示将公里数和计费金额分别用三位LED数码管显示(两位整数,1位小数)。
三.项目设计概要
1. 项目整体设计概述:
出租车计费器由车型调整模块、计程模块、计费模块、显示模块模块组成。车型调整模块主要实现对出租车轮胎直径的选择以及百米计数;计程模块主要实现起步里程的设置和里程计数;计费模块实现公里价格的预置、起步价格的预置和计费;显示模块实现里程和费用的显示。
2. 项目设计特点:
整个系统采用模块化设计,首先按照系统功能模块划分,对各个功能模块电路单独设计、仿真调试,然后用顶层原理图将各功能模块连接起来。
3. 个人任务说明:
此次实验是由我一个人完成的。
四.系统设计方案
1. 系统功能模块示意图:
2. 功能模块说明:
系统功能模块电路图
1.车型调整模块
模块功能
出租车车型并非单一,各个车型的轮胎直径亦有所不同。据调查统计,现行出租车轮胎直径大致有四种,直径分别为520mm、540mm、560mm和580mm。若要使不同车型的出租车每行驶一百米均送出一个脉冲,可通过设置“可预置分
频器”的系数来完成。根据上述车轮直径计算出的分频系数分别为61、59、57和55。预置数据受两个车型设置开关控制,DIP开关状态与车轮直径对应关系如表1所示(表中“1”为高电平,“0”为低电平)。
表1 车型设置:
车轮直径(mm)520 540 560 580
DIP开关(两位)00 01 10 11
车型调整模块(COUNTA)电路图
封装后的模块为
/CLR CLK SE T10 SE T11RCO
COUNTA
inst
其中SET1模块用来预置行驶百米所需的车轮转数,EQUAL模块用来根据SET1的设置的数值与车轮转数是否相等来判断是否进位。
1.1SET1模块的源程序为
封装后的模块
A[1..0]B[7..0]
SET1
inst
1.2 EQUAL模块的电路图为
封装后的模块
2.计程模块
模块功能
计程模块是一个模为10、步长为1的加法计数器。该模块可以预置参数,使其实际计数值大于预置数值后,每500米送出一个脉冲,并将计数值送译码动态扫描模块进行显示。预置参数采用非压缩BCD码,所以在计数器设计时必须将二进制1010至1111六个状态跳过去。
计程模块带有“开始”/“清零”端。“起步里程”开关设置对应关系如表2所示。
表2 起步里程设置:
起步里程(km) 2.0 3.0 4.0 5.0
DIP开关(2位)00 01 10 11
计程模块(COUNTB)电路图
封装后的模块
/CLR ENT SET20 SET21 CLK
out0 out1 out2 out3 out4 out5 out6 out7 out8 out9 out10 out11 RCO
COUNTB
inst
其中SET2用来预置起步里程数,EQUAL12模块用来判断是否达到预置的起步里程,RCOB模块用来判断是否进位(即是大于起步里程数后每500米输出一个脉冲)
2.1 SET2模块的源程序
封装后的模块
A[1..0]B[7..0]
SET2
inst
2.2 EQUAL12模块的电路图
封装后的模块
2.3 RCOB模块的电路图
封装后的模块
3.计费模块
模块功能
计费模块是一个模为10、步长可变的加法计数器。该模块通过开关量预置步长,当超过一定预置参数时改变步长。计费模块也采用非压缩BCD码,但因步长不为1,而为0.5km单价数,所以在做非压缩BCD加法时必须调整,否则可能导致在超过或未超过预置参数时出现超程错误。
计程模块应带有“开始”/“清零”端。“公里价格”、“起步价格”开关设置对应关系如表3、表4所示。
表3 每公里价格设置:
公里价格(元) 1.2 1.6 2.0 2.4
DIP开关(2位)00 01 10 11
表4 起步价格设置:
起步价格(元) 5.0 6.0 7.0 8.0
DIP开关(2位)00 01 10 11
计费模块(FARE)的电路图