EDA课程设计出租车计价器(2)

2019-01-19 15:38

2. 设计内容及要求

2.1. 设计的目的及主要任务

2.1.1.

设计的目的

①学会在QuartusⅡ环境中运用VHDL语言设计方法构建具有一定逻辑功能的模块,并能运用图形设计方法完成顶层原理图的设计。

②掌握出租车自动计费器的主要功能与在FPGA中的实现方法。

2.1.2. 设计任务及主要技术指标

① 设计一个出租车计价器。要求显示行驶里程、停车时间和计费值:

出租车的起步价为3元,当里程行驶到1km后,费用为4元;当里程行驶到1.5km后,费用为5元;,当里程行驶到2km后,费用为6元;当里程行驶到2.5km后,费用为7元;当里程行驶到3km后,费用为8元;此后每公里计费为0.7元/0.5km。停车每到3分钟,增加0.7元。

通过开关读入停车信号,在停车时进行计时,显示格式为时分秒XX-XX-XX,每3分钟,计价0.7元;按照轮胎转动1圈为1m计算,计算并显示行驶的里程结果(单位:Km),格式为:“000.0”。能显示乘车费用(单位:元),格式为:“000.0”。 ② 运用QuartusⅡ软件中的仿真功能对所设计的出租车自动计费器的各个模块及顶层

电路的功能进行仿真分析。

③ 将所设计的整个系统写入FPGA器件中,加上需要的外围电路在实验箱上实现整

个系统的硬件搭建。

2.2. 设计思想

本次设计首先在QuartusⅡ环境中对出租车自动计费器的各个部分利用VHDL这一硬件描述语言予以设计,生成模块。主要有:运算控制模块、分频器、显示模块这三大部分组成。由顶层模块协调控制完成设计任务。

6

3. 设计原理

3.1. 设计原理及方法

本设计包含运算控制模块、分频器、显示模块这三大部分。 时钟信号 分频器 按键控制 计时信号 LED状态显示 计费信号序列 运算控制器3/8译码器 计程信号 七段译码器 数码管显示 分频模块 控制计数模块 显示模块 图1 出租车自动计费器系统框图

运算控制器模块将其他两个进行连接,是本次设计的核心。它包含计程器、计时器、计价器,同时还有读取外部的拨码开关控制信号,提供当前显示信号与显示位选信号,从而周期性交替显示计价/计时信息、等时信息。

计程器在非停车状态完成计程功能并产生里程计价信号,计时器在停车状态完成计时功能并产生等时计价信号。计价器是设计的核心与难点,涉及到多种时钟信号,并有多种计费标准。拟使用有限次高速脉冲发生器向一组级联的十进制计数器提供不同费率的计价脉冲,根据里程计价信号、等时计价信号、停车开关状态、当前计费结果等信号,综合考虑,挑选适合次数的计价脉冲,从而实现不同条件的不同计费。

计程器、计时器、计价器根据位选信号,输出相应数据的当前选中数字,由顶层模块根据显示数据类型变换信号进行选择,传输给显示模块。

实验箱的时钟信号为20MHz方波,由分频器分为10Hz的计时信号(一个周期代表现实中的1s)、10Hz的计程信号(一个周期代表现实中的10m)、500Hz的数码管扫描信号(扫

7

描频率62.5Hz)、0.2Hz的显示数据类型变换信号(变化周期5s)。

显示模块由实验箱上的3/8译码器、五个LED灯构成状态的指示灯、程序编写的一个七段数码管译码器(因显示需要,原有字形“E”征用改为“—”,字形\改为“ ”)组成。

本次设计首先在QuartusⅡ环境中对出租车自动计费器的各个部分利用VHDL这一硬件描述语言予以设计,进行仿真,然后编写顶层模块将各个模块连接,并对相互之间的信号进行必要处理,从而实现整机功能,最后在实验箱上进行物理测试,寻找漏洞、调整参数,最终确定设计。

3.2. 单元模块设计

3.2.1.

分频器TAXI_FP模块设计

本设计中分频器模块使用了一个通用的分频器元件例化fp。该模块从外部读入系统时钟方波信号clk,向外输出计时信号clk_time,计程信号clk_mil,数码管扫描信号clk_scan,显示数据类型变换信号clk_v。具体程序代码详见附录。

3.2.2. 计程器MIL模块设计

计程器的核心为一个4位十进制数计数单元cnt10,它由四个十进制计数器级联构成。在得到停车信号时,计程信号不输入计数单元,在没有停车信号stop时,每有10个脉冲clk(100m)才进行计数1次。每当成功计数5次,即500m,产生一个里程计费信号p_mil。在得到复位信号rst时,计程器内部所有计数器和计数信号清零复位,里程计费信号输出'0'。根据读入的位选信号wx决定当前输出的数值datain。具体程序代码详见附录。

3.2.3. 计时器TIM模块设计

计时器有一个24进制cnt24、两个60进制的计数器cnt60级联构成计时单元。当停车信号stop为'1',进行计时。计时器中还有一个3进制计数器cnt3,每当代表分钟的60进制计数器计数3次,产生一个等时计费信号p_up。当有复位信号rst时,所有计数单元清零,等时计数信号输出'0'。根据读入的位选信号wx决定当前输出的数值datain。具体程序

8

代码详见附录。

3.2.4. 计价器PRICE模块设计

因为在计费过程中存在1.05元的计费情况,故计价精度精确到分,共有五个计数器。因此计价器的计数单元有四个10进制计数器cnt10,一个10进制计数器cnt10_d。前者复位值为0;后者复位值为3,为价格的第三位计数。它的内部还有一个指定个数脉冲产生器price_s。根据停车信号stop的选择里程计费信号p_mil或p_t,当计费信号为'1'时,输入适当个脉冲,当计费信号为'0',脉冲发生器price_s复位。当计费开关switch或复位信号rst为'1',计价器所有模块复位。根据读入的位选信号wx决定当前输出的数值datain。具体程序代码详见附录。

3.2.5. 显示模块设计

显示模块包含一个8进制计数器cnt8,七段数码管译码器decl7s,实验箱上的3/8译码器。还有五个状态显示灯,分别为停车状态指示stop_s,计费状态指示switch_s,3个当前显示内容标志灯sta(2..0)。当系统复位时,数码管一起显示相同的任意数,五个状态显示灯一起被点亮。正常显示时,等时信息与计价/计程信号以5s为周期交替显示。具体程序代码详见附录。

3.2.6. 运算控制模块TAXI设计

运算控制模块将以上各模块进行连接,综合,构成出租车计价器。其输入端有系统时钟输入端clk、系统复位信号输入端rst、停车信号输入端stop、计费开关switch。输出端有数码管字形输入端segout、point、位选信号输出端wx、状态灯控制端stop_s、switch_s、sta。具体程序代码详见附录。

9

4. 代码仿真结果

上文中提到的六个模块中还运用了一些更小的例化模块。这些小模块被上面的设计多次调用,它们虽然小,功能简单、单一,但是它们功能的正确是调用模块乃至整个设计功能的保证,它们是整个设计的基石,因此在此着重对小模块的逻辑功能与仿真结果进行了说明。仿真结果分为功能仿真与逻辑仿真两幅图进行呈现。我们会发现时序仿真与功能仿真的波形有差异,这是因为在实际门电路的运行中,电平的处理过程造成了信号的延时。

4.1. 有限次数脉冲发生模块仿真结果

该模块的任务是当使能信号rst为'1'时产生规定个方波信号,之后输出结果为'0'。此处产生两个脉冲。

图2.有限次数脉冲发生模块功能仿真图

图3.有限次数脉冲发生模块时序仿真图

10


EDA课程设计出租车计价器(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版小学科学二年级上册教学计划

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: