出租车计价器设计方案和功能介绍(verilog、fpga).doc
《出租车计价器设计方案和功能介绍(verilog、fpga).doc》由会员分享,可在线阅读,更多相关《出租车计价器设计方案和功能介绍(verilog、fpga).doc(35页珍藏版)》请在三一文库上搜索。
1、出租车计价器设计方案和功能介绍(verilog、fpga) 导读:就爱阅读网友为您分享以下“出租车计价器设计方案和功能介绍(verilog、fpga)”资讯,希望对您有所帮助,感谢您对的支持!1 出租车计价器设计方案和功能介绍 2目录一、系统的总体设计方案 . . 41功能模块关系图 . 42设计描述 . 43 按键功能介绍 . 74 开关功能介绍 . 85 状态表示介绍表 . 8二、主要模块的设计代码 . . 101控制模块 . 102 里程计数模块 . 153 时钟模块 . 174 等待时间计数模块 . 195 计价模块 . 206 数码管驱动模块(有小数点) . . 257 尾灯模块 .
2、 29三、总结感想(这是编程中遇到的一些问题的处理方法) . 311 复位键(reset )的使用心得 . . 312 关于,有用信号leap=1,是否需要让leap=0的问题。 . . 313 在一个Verilog 文件中,不可以在两个always 模块中同时操作一个变量。 . 324 数码管闪烁 . 32 5 对于一些取值不能为0的变量,如year ,month 等,应该赋给初始值,以免显示出错。. 3236 对于reset 这样的点击键应该写成点击形式,加上消抖程序。不应该用连加,以避免出错。. 327 关于按键检测问题 . 328 怎么获得一个变量,某时刻和该时刻之前的变量? . .
3、32 9 每一个verilog 模块不能包含太多阻塞赋值语句,否则编译器会报错。尽可能多用非阻塞语句赋值。 . . 34附录:总设计图 . . 35 4 出租车计价器设计方案和功能介绍一、系统的总体设计方案1功能模块关系图 2设计描述 本数字钟有10个模块组成,分频器模块、消抖模块、控制模块、等待时间计数模块、时钟模块、里程计算模块、计价模块、显示模块、数码管驱动模块、尾灯模块。1 分频器模块:将开发板提供的50MHz 的时钟,分频成1Hz 、4Hz 、1KHz 和6MHz 的时钟信号,供各模块使用。52 消抖模块:处理按键毛刺,产生稳定信号3控制模块:(1) 白天近程和远程单价,晚上近程和远
4、程单价(2) 白天起步价,晚上起步价(3) 等待每分钟价格(4) 起步价可行公里数,远程和近程分界线(5) 白天晚上开始时间4等待时间计数模块:在state=1(计价器已经打开)且run=0(出租车暂停)时,开始计时。产生数据单位为分钟,最小值位1分钟,没有小数。5 时钟模块:对1Hz 时钟信号进行处理,实现时分秒循环计数,构成时钟。6里程计算模块:对1Hz 时钟作为模拟信号源,模拟每秒走0.2Km 。输出数据单位为千米,最小值为1千米,没有小数。7计价模块:计价模块位本出租车计价器中最核心和重要的模块,如果该模块编好,计价器就完成了一半。对里程模块输出数据进行处理,统计出在白天近程(pric
5、e_day_short)、白天远程(price_day_long)、晚上近程(price_night_short)、晚上远程(price_night_long)单价内,行驶的里程数cnt1、cnt2、cnt3、cnt4。6对时钟模块时钟进行处理,判断出现在是白天还是晚上,给里程单价和起步价提供判断依据。对等待时间计数模块输出数据处理,计算出等待时间所产生的金额。总的计价公式=起步价+price_day_short*cnt1+price_day_long*cnt2+price_night_short*cnt3+price_night_long*cnt4+等待金额8 显示模块:(1) 金额和里程显
6、示(2) 等待时间显示(3) 时钟时分秒显示(4) 设置时单价显示(5) 设置时等待价格显示(6) 设置起步价显示(7) 设置里程分界显示(8) 设置白天和晚上开始时间显示9 数码管驱动模块:根据显示模块提供的段选、位选信号和小数点控制信号,控制8个数码管显示数据。输入信号必须为,每4个二进制位为一组表示一位十进制数(十进制数09),小数点控制信号时8位的。10 尾灯模块:尾灯模块用8个LED 灯显示车的转向状态,用两个7开关模拟出租车左转和右转。左转时:8个LED 灯从右向左依次循环点亮;右转时:8个LED 灯从左向右依次循环点亮。在车处于计价等待时间时,8LED 灯闪烁。 3 按键功能介绍
7、 共有四个按键,reset (复位键)、set (设置键)、start (开始计价/加键)、run(运行状态控制/减键) 。 1 reset键:按一次state=0,复位,显示金额和里程数。 2 set键:每按一次,state 状态加一。state 共有014的15个状态,set 键只能在114之间连续循环;reset 键能够让state 置0。 3 start键:该键有两个功能第一功能:当state=0时,start 有三个状态控制start_out=1、2、0(start_out初始值时0,表示按一次键后计价器开始计价)计价器开始计价、停止计价(计价结束,显示数据)、数据清零。设置好价格数
8、据后,start 键每按三次就是一次循环,也就是拉完一个客人。 第二功能:当state !=0时,负责该状态设置数值加1。 4 run键:第一功能:当start=0且start_out=1时,有两个状态run_out=1、0(run_out初始值为1,表示按一次后车状态为停止)车运行、车停止。run 键每按一次在运行和停止变换一次第二功能:state !=0,负责该状态设置数值减1。84开关功能介绍LED_LEFT开关:当出租车要左转时,打开该开关。8个LED 灯从右向左依次循环点亮。LED_RIGHT开关:当出租车要左转时,打开该开关。8个LED 灯从左向右依次循环点亮。5 状态表示介绍表9
9、 10二、主要模块的设计代码这里只列举控制模块、里程计数模块、时钟模块、等待时间计数模块、计价模块、数码管驱动模块、尾灯模块。分频模块、消抖模块和显示模块不在列举。1控制模块由于该模块重复代码太多了,直接去了一部分。但是,该模块还是完整地模块,所缺少只是其它状态下对其它数据的设置,和状态4b3和4b4很相似。该模块最经典的时,start 和run 键双功能设置。 /控制模块/控制计价器开始/停止/控制出租车状态走/停module control(clk, /50MHz reset, /复位set, /状态切换start, /计费启动开关run, /出租车运行状态开关price_day_shor
10、t, /白天近程单价price_day_long, /白天远程单价price_night_short, /晚上近程单价 price_night_long, /晚上远程单价11price_wait_time, /等待时间每分钟价格one_price_day, /白天起步价one_price_night, /晚上起步价short_distance, /起步价可行最大里程数long_distance, /最大近程里程数day_time, /白天开始时间night_time, /晚上开始时间start_out,run_out,state,password /更改信息的密码);inputclk,rese
11、t,set,start,run;input 5:0 password;output7:0 price_day_short,price_day_long,price_night_short,price_night_long,price_wait_time; output 11:0 one_price_day,one_price_night;output 7:0 short_distance,long_distance;output 7:0 day_time,night_time;output 3:0 state,start_out;outputrun_out;reg7:012price_day_
12、short,price_day_long,price_night_short,price_night_long,price_wait_time;reg 11:0 one_price_day,one_price_night;reg 7:0 short_distance,long_distance;reg 7:0 day_time,night_time;reg 3:0 state,start_out;regrun_out,add,sub; initial /为了处理小数点,把实际价格扩大十倍beginday_time=5; /白天开始时间night_time=23; /晚上开始时间short_di
13、stance=3; /起步价可行最大里程数long_distance=10; /最大近程里程数price_day_short=24; /实际价格2.4元price_day_long=36; /实际价格3.6元price_night_short=31; /实际价格3.1元price_night_long=47; /实际价格4.7元one_price_day=140; /实际价格14元one_price_night=180; /实际价格18元price_wait_time=10; /实际价格1元 end13initialbeginstate=4d0;end always(posedgeclk)be
14、ginif(reset=1) /复位键 state=4d0;if(set=1) /总状态设置 if(state=4d14)state=4d1; elsestate=state+4d1; / start/run第一功能区 if(start=1&state=0) /state=0,该功能可用 /计费启动键,每按一次取反一次。if(start_out=4d2) start_out=4d0; /总状态设置 elsestart_out=start_out+4d1;14 if(start_out=0) run_out=1;if(start_out=1&run=1&state=0) /出租车行驶状态键,没按
15、一次取反一次。 beginrun_out=run_out; end / start/run第二功能区 add=start; /加, 第二功能sub=run; /减, 第二功能if(password=6b010101) /密码正确才能更改价格和参数case(state)4d0:;4d1:;4d2:;4d3:beginif(add=1) /白天近程单价设置 if(price_day_short=8d99) price_day_short=8d0;15 elseprice_day_short=price_day_short+8d1;if(sub=1)if(price_day_short=8d0) p
16、rice_day_short=8d99;elseprice_day_short=price_day_short-8d1;end4d4: /白天远程单价设置beginif(add=1)if(price_day_long=8d99) price_day_long=8d0;elseprice_day_long=price_day_long+8d1;if(sub=1)if(price_day_long=8d0) price_day_long=8d99;elseprice_day_long=price_day_long-8d1;endendcaseend endmodule2 里程计数模块/里程计算模块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 出租车 计价器 设计方案 功能 介绍 verilog fpga
链接地址:https://www.31doc.com/p-11261784.html