
基于VHDL语言的出租车计费系统设计
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOC
简介:
本项目采用VHDL语言设计了一套高效的出租车计费系统,旨在实现自动化的里程和时间费用计算,并具有灵活的费率调整功能。
### 基于VHDL的出租车计价器设计知识点详解
#### 一、设计任务说明
本设计的任务是利用VHDL语言结合Quartus II软件开发平台,创建一个功能全面的出租车计程与计费系统。该系统需实现以下核心功能:
1. **车型设置**:能够根据不同类型的车辆进行设定。
2. **起步里程设置**:设定起步里程。
3. **起步价设置**:设定起步价格。
4. **分时计价设置**:根据时间段的不同设定不同的计费标准。
5. **里程显示**:显示已行驶的公里数。
6. **费用计算与显示**:展示应支付的费用金额。
7. **时间记录功能**:提供乘车的时间信息。
8. **点阵数码管汉字和数字钟报时功能**:用于显示汉字及时间信息。
9. **发光二极管花色显示**:通过LED灯的不同亮灭模式来传递额外的信息。
#### 二、设计任务要求
1. **车型设置功能**:用户可以根据车辆类型选择不同的配置选项。
2. **起步里程设定功能**:允许用户自定义起步里程,例如2公里。
3. **起步价设定功能**:设定初始费用金额,如10元。
4. **行驶距离显示**:采用四位七段数码管来展示实际的行驶距离(格式为×××.×公里),高位空位时自动灭零处理。
5. **应收费用显示**:同样使用四位七段数码管呈现费用信息(格式为×××.×元),高位空位时也进行相应的灭零处理。
6. **分时段计费功能**:白天时间段内(6:00~23:00)每公里按1.2元收费,而夜间则按照更高的标准执行,即晚间时间段内的费用为每公里1.6元。
7. **显示复位功能**:提供一键清零所有显示信息的功能选项。
8. **内置计时器**:系统内部具有时间记录能力,并支持用户选择是否展示计费或时间信息。采用八位七段数码管来表示当前的时间(格式为××小时××分××秒)。
9. **按钮功能**:
- Sw4用于修改当前显示中的小时数;
- Sw7用来调整分钟数值;
- Sw5则可以切换里程与计时的显示屏内容;
- Sw6负责选择不同的汉字或数字字符进行展示;
- 而Sw8则是复位所有设置的功能按钮。
#### 三、设计内容
**1. 里程和费用计算部分**
- **模块图**:包含Div模块、计数器A、B及C等。
- **Div模块**:负责将输入的频率进行分频,为后续各组件提供所需的扫描信号频率。
- **计数器A**:接收车轮传感器发出的脉冲信号并对其进行处理,输出每100米一次的脉冲信号。
- **计数器B**:累积接收到的所有100米脉冲信息,并将其转换为实际行驶里程数值。
- **计数器C**:实现根据分时控制端“hourin”的输入来调整费用计算规则。
**2. 计时部分**
- 实现内部时间记录功能,支持按不同时间段切换收费标准以及显示选择的功能。
**3. 数码管展示部分**
- 使用四位七段数码管进行里程和计费信息的呈现(格式分别为×××.×公里与×××.×元)。
**4. 点阵文字显示部分**
- 利用点阵技术来展示汉字等字符信息。
**5. 数字钟报时及LED灯光提示功能**
- 提供时间显示的同时,通过不同颜色的LED灯亮灭模式传递额外的信息内容。
**6. 整体电路连接设计**
- 将上述所有部分整合为一个完整的计价系统。
#### 四、具体模块详解
**1. Div模块**
VHDL代码示例:
```vhdl
ENTITY div IS
PORT (
clk_sys : IN std_logic;
clk : OUT std_logic;
clk_scan : OUT std_logic
);
END div;
ARCHITECTURE a OF div IS
SIGNAL q : std_logic_vector(23 DOWNTO 0);
BEGIN
PROCESS (clk_sys)
BEGIN
IF (clk_sysevent AND clk_sys = 0) THEN
q <= q + 1;
END IF;
clk <= q(18);
clk_scan <= q(9);
END PROCESS;
END a;
```
**2. 计数器A模块**
VHDL代码示例:
```vhdl
entity cnt_A is
-- 输入输出定义
end cnt
全部评论 (0)


