1 / 25
文档名称:

出租车计价器.docx

格式:docx   大小:704KB   页数:25页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

出租车计价器.docx

上传人:niupai11 2022/6/25 文件大小:704 KB

下载得到文件列表

出租车计价器.docx

相关文档

文档介绍

文档介绍:出租车计价器课程设计
学生姓名:
班级


业:
号:
初始条件:
本设计利用Quartusll软件编写VHDL代码,运用EDA实验板上的FPGA、数码管、 点阵模块、按键、拨码开关等硬件资源,实现简易的出租的基本特征是:设计人员按照“自 顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几 片专用集成电路
(ASIC)实现,然后采用硬件描述语言(VHDL)完成系统行为级设计,最 后通过综合器和适配器生成最终的目标器件[2]。
可编程逻辑器件自 20 世纪 70 年代以来,经历了 PAL、GAL、CPLD、FPGA 几个发展阶 段,其中CPLD、FPGA属高密度可编程逻辑器件,目前集成度以高达200万门/片,它将掩 膜 ASIC 集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于 样品研制和小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以和容 易地转由ASIC实现,因此开发风险也大为降低。CPLD/FPGA器件已成为现代高层次电子设 计方法的实现载体[3]。
VHDL 是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多 个设计层次,支持结构、数据流和行为 3 种描述形式的混合描述,因此 VHDL 几乎覆盖了 以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用 VHDL 来完成⑷。另外,VHDL还有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心, 将设计人员的工作重心转移到了系统功能的实现和调试上,只需要花较少的精力用于物理 实现;VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也 便于设计结果的交流、保存和重用;VHDL的设计不依赖于特定的器件,方便了工艺的转换。 VHDL是一个标准语言,为众多的EDA场上支持,因此移植性好⑸。
设计内容及要求
设计的目的及主要任务
设计的目的
学会在Quartusll环境中运用VHDL语言设计方法构建具有一定逻辑功能的模块,并 能运用图形设计方法完成顶层原理图的设计。
掌握出租车自动计费器的主要功能与在FPGA中的实现方法。
设计任务及主要技术指标
设计一个出租车计价器。要求显示行驶里程、停车时间和计费值:
用时钟 2 秒钟表示出租车匀速行驶 1 公里,在行车 5 公里以内,按起步价 13 元收费,超过 5 公里部分,以每公里 2 元收费。燃油附加费为每运次 1 元。途中等 待:用按键控制中途等待,等待少于(包括)
5 秒不收费,超过 5 秒后每等待 3 秒 钟加收 1 元。
运用Quartusll软件中的仿真功能对所设计的出租车自动计费器的各个模块及顶 层电路的功能进行仿真分析。
将所设计的整个系统写入FPGA器件中,加上需要的外围电路在实验箱上实现整个 系统的硬件搭建。
设计思想
本次设计首先在Quartusll环境中对出租车自动计费器的各个部分利用VHDL这一硬件 描述语言予以设计,生成模块。主要有:运算控制模块、分频器、显示模块这三大部分组 成。由顶层模块协调控制完成设计任务。
设计原理与仿真结果
. 设计原理及方法
出租车自动计费器系统流程图
开始J)
* 初始化
启动计价器
按键扫描
开始计费
消抖范时
里程价=起莎价
有键按个?
1+
计费处理
(等待>5min)
屮-.程价=(屮程一 5) 讶-程价(240元)
等待价-时0税价
(17E/3min)


等待价=时问除单价V (1 元/3min)
本次设计首先在Quar tus II环境中对出租
车自动计费器的各个部分利用VHDL这一硬件
描述语言予以设计进行仿真(然后编写顶层模块将各个模块连接,并对相互之间的信号
进行必要处理,从而实现整机功能,最后在实验板上进行物理测试,寻找漏洞、调整参数, 最终确定设计。
单元模块设计
. 分频器模块设计
程序代码:
LIBRARY IEEE;
USE ;
USE ;
ENTITY fenpinqi IS
PORT( clk:IN STD_LOGIC; clk1,clk2,clk3:OUT STD_LOGIC);
END fenpinqi;
ARCHITECTURE behave OF fenpinqi IS
SIGNAL temp1,temp2,temp3:STD_LOGIC;
BEGIN
p1:PROCESS(clk)
variable count1:integer:=