出租车计费器EDA

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

南京理工大学

EDA 设计(II)

实验报告

作者:____________________ 学号:_________________ 学院(系): ___________ 自动化学院_______________ 专业:____________________ 自动化_________________ 标题___________________ 出租车计费器______________

指导老师:

实验日期:2015 年9月

目录

1 绪论1

2 系统总体设计1

2.1 系统设计思想1

2.2 系统功能概述1

2.3 系统总体组成结构1

3 系统各模块详细设计2

3.1 计时模块2

3.2 按键控制模块2

3.3 动态显示模块3

3.4 里程和车费计算模块4

3.5 我的部分4

4 系统调试5

4.1 系统仿真5

4.2 系统实际验证5

4.3 调试过程中遇到的问题与解决方法5

5 总结与心得体会

6 致谢6 参考文献7

出租车计费器

1 绪论

EDA是电子设计自动化(Electronic Design Automation )的缩写,发展于20世纪90年代。

EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

本次EDAS计使用MAX+plus II实验开发系统,学习并掌握VHD硬件描述语言

的基本语法以及设计方法和思想,将已学过的数字电子设计知识综合运用于电子系统的设计中,掌握运用VHDL设计电子系统的流程和方法,加强和培养自己对电子系统的设计能力。

综合设计的任务是用一周的时间,在EDA软件MAX+plus II上用VHD语言设计完成一个电子技术综合问题,小组成员分工,负责各个子模块的设计,最后将各个模块整合起来,连接整体电路,分配引脚,下载到实验班上进行测试。

2系统总体设计

2.1 系统设计思想

用VHDL语言设计出符合功能要求的的出租车计费器系统,完成设计后使用系统实验箱下载验证。

2.2 系统功能概述

1、计费功能:计费标准为按行驶里程收费,起步价为11元,车行3公里后每公里1.4元,车停止时不计费;

2、实现模拟功能:能模拟汽车启动、暂停及停止状态;

3、实现显示功能:能在数码管上显示出公里数及总费用。

2.3 系统总体结构

整个计费系统的结构如下图所示,其计时模块负责对实验板上的时钟信号进行分配,产生合适的计数脉冲,供里程计算模块和车费计算模块的技术。而显示模块则将前两者计算得到的结果显示在数码管上。开关控制模块则接受实验板上的开关信号,模拟出租车的起停。

3系统各模块详细设计

3.1 计时模块

计时模块的时钟源为试验箱的CP2时钟,频率为1024 Hz,在VHDL中经过计数十分频得到模拟的出租车百米行驶计数时钟。其计数的逻辑比较简单,不再详细列出。

3.2 按键控制模块

在按键控制模块中我们引入了两个拨码开关K1和K2,其中K1是启动和停

止开关,K2是暂停开关,两个按键向上拨逻辑值均为1,向下拨逻辑值均为0。

为了方便控制,我们引入了state这个两位的二进制变量,用它的值来标记出租车的不同状态,其控制逻辑如下:

按键控制模块程序如下:

con trol:

PROCESS(start,pause)

beg in

if(start='O')the n

state<="01";

elsif(pause='1')the n

state<="00";

elsif(pause='0')the n

state<="11";

end if;

end PROCESS;

3.3动态显示模块

由于此系统要用到实验板上的8个数码管,且每个数码管显示的数字都不相同,所以不能采用静态显示而必须使用动态显示,动态显示即依次向每位数码管同时送出字形码和相应的位选,位与位之间利用延时程序进行延时,当延时程序

非常短时,由于发光管的余辉和人眼视觉暂留作用,此时我们的人眼就分辨不出位与位之间有延时存在(人眼视觉暂留时间为0.05-0.2秒,延时程序应当根据这个范围来调整),感觉各位数码管同时都在显示。

此处用系统时钟1024Hz来扫描数码管,取得了不错的效果。

该模块程序如下,后面tmp1为其它值时,各种情况与其值为0时相似,未有----- 列出:

PROCESS(clk)

variable tmp1,tmp2:integer range 0 to 10;

BEGIN

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

tmp1:=tmp1+1;

if(tmp1>=8)the n

tmp1:=0;

end if;

case tmp1 is

whe n 0 =>

sel<="00000001";

tmp2:=CONV_INTEGER(fee_tenth); case tmp2 is

when 0 => data<="11111100"; when 1 =>

相关文档
最新文档