文档介绍:
合肥工业大学
计算机与信息学院
课程设计报告
课程: 计算机设计与综合实践
专业班级: 信息安全11-1
学号:
姓名: 王佳淼
2014年11月
摘要
本文介绍了一种采用可编程逻辑器件(FPGA(Sparten 6))进行出租车计价器的设计思想以及实现方法。本设计实现了出租车计费器所需的一些基本功能,计价金额包括起步价、里程计费、等待计时计费等。该设计采用模块化设计,在Xilinx软件平台下,采用Verilog HDL 硬件描述语言描述和模拟仿真了分频模块、计程模块、计时模块、计费模块、LED显示模块,完成了出租车计费器仿真设计。
关键词:FPGA(Spartan6-LX45),出租车计价器,Xilinx,Verilog HDL
目录
一、方案总设计 4
1.1 设计要求 4
1.2 设计思想 4
二、软件功能单元设计和实现 4
2.1 分频模块 4
2.1.1 计数器分频模块(FrequencyDiv1) 5
2.1.2 数码管显示分频模块(FrequencyDiv2) 5
2.2 里程模块(Disatance_Cal模块) 5
2.3 时间模块(Time_Cal模块) 5
2.4 计费模块(Money_Cal模块) 5
2.5 数码管显示模块(LED_Display模块) 6
2.6 顶层模块(Taximeter模块) 7
三、问题总结 9
四、体会与感想 9
附录: 单元模块Verilog HDL源代码 10
1. 计数器的分频模块(Frequency_Div) 10
2. 数码管的分频模块(Frequency_Div_2) 10
3. 里程模块(Distance_Cal) 11
4. 时间模块(Time_Cal) 12
5. 计费模块(Money_Cal) 13
6. 数码管显示模块(LEDDisplay_Cal) 16
7.顶层模块(Taximeter) 18
8. 引脚约束(Taximeter) 20
方案总设计
设计要求
设计一个出租车计价器。该计价器的计费系统:行程 3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费,并能显示行驶公里数、等待累计时间、总费用。设计有分频模块,控制模块,计量模块,译码模块, 显示模块。
设计思想
出租车的一般计费分类:
近路途未停车状况:车价=起步价【10元】(3>里程数且10>等待时间)
近路途有停车状况:车价=起步价【10元】+(等待时间- 等待累积时间【2分钟】)*1.5(3>里程数且10>等待时间)
远路途未停车状况:车价=起步价【10元】+(里程数 - 起步里程数【3公里】)*每公里单价【1.6元】 (3等待时间)
远路途有停车状况:车价=起步价【14元】+(远程里程标准【10公里】 - 起步里程数【3公里】)*每公里单价【1.6】 + (等待时间- 等待累积时间【2分钟】)*1.5 (里程数>10 且 10
综上所述,完成出租车计费需要,在乘客上车后,需要启动出租车计价器,所以这样就需要一个控制出租车计价器开始工作的使能信号,使得有乘客上车后就要将计价表上显示出起步价10元;而在计价的过程中又需要分两种情况:一种是按增加的里程来收费,另一种是按照停车的时间来收费,因为在出租车行驶的过程中,有可能会遇到堵车或红绿灯的情况,这样会耽误出租车的时间,所以当超过一定标准时间后,就应当计时收费。
软件功能单元设计和实现
本系统采用层次化、模块化的设计方法,设计顺序为自下向上。首先实现系统框图中的各子模块,然后由顶层模块调用各子模块来完成整个系统。为了便于在数码管里显示和演示,这里的路程、时间和费用计数器均用BCD码表示。我主要做的是里程模块,所以2.2里程模块即Disatance_Cal模块详细说明,其余模块只进行大体描述。
2.1 分频模块
这里主要是将实验板上提供的时钟信号进行分频,来得到我们想要的时钟脉冲。因为我们所使用的实验板是
Spartan6-LX45 ,它可以提供100MHz的时钟信号,而这个信号对于我们来说实在是太快了,所以我们需要对其进行分频。在本次的设计中,我们需要在两个地方用到不同的分频时钟,一个是在LED显示模块,而另外的几个模块用另一个时钟信号。
2.1.1 计数器分频模块(FrequencyDiv1)
此模块的功能是对总的时钟进行分频,分出的频率是让计数器用的,因为我们使用总的时钟频率是100MHz的,所以我们在设计该模块的时候用了一个32位的计数器,当计数器计到25_的时候产生一个时钟信号,提供给里程模块,时间模块,计费模块使用。
内容来自淘豆网www.taodocs.com转载请标明出处.