出租车计价器课程设计报告.docx

上传人:b****3 文档编号:822506 上传时间:2022-10-13 格式:DOCX 页数:13 大小:28.92KB
下载 相关 举报
出租车计价器课程设计报告.docx_第1页
第1页 / 共13页
出租车计价器课程设计报告.docx_第2页
第2页 / 共13页
出租车计价器课程设计报告.docx_第3页
第3页 / 共13页
出租车计价器课程设计报告.docx_第4页
第4页 / 共13页
出租车计价器课程设计报告.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

出租车计价器课程设计报告.docx

《出租车计价器课程设计报告.docx》由会员分享,可在线阅读,更多相关《出租车计价器课程设计报告.docx(13页珍藏版)》请在冰豆网上搜索。

出租车计价器课程设计报告.docx

出租车计价器课程设计报告

 

软件学院

 

课程设计报告

 

课程

题目出租车计价器

班级集 成 13-4

专业集成电路设计与集成系统

学生学号

 

指导教师(填写自己班的指导教师)

 

年月日

 

1. 课程设计目的

全面熟悉、掌握 VHDL 语言基本知识,掌握利用 VHDL 语言对常用的组合

逻辑电路和时序逻辑电路编程,把编程和实际结合起来,熟悉编制和调试程序

的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用

设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。

2.课程设计题目描述和要求

2.1.课程设计题目描述

①.实现计费功能,计费标准为:

按行驶里程计费,起步价为 7.0 元,并

在车行 3km 后按 2.2 元/km 计费,当计费器达到或超过 20 元时,每公里加收 50%的

车费,车停止不计费。

②.现场模拟功能:

以开关或按键模拟公里计数,能模拟汽车起动、停止、

暂停等状态。

③.将车费和路程显示出来,各有一位小数。

2.2.总体设计思路框架

顶层模块

出租

车计

费器

分频模块

 

里程计算模块

 

价格计算模块

 

译码模块

 

2.3.课程设计题目要求

①.设计正确,方案合理。

②.程序精炼,结构清晰。

③.设计报告含程序设计说明,用户使用说明,源程序清单及程序框图。

④.上机演示。

⑤.有详细的文档。

文档中包括设计思路、设计仿真程序、仿真结果及相

应的分析与结论。

3.设计思想和设计内容

3.1 出租车计费设计

该出租车计费器按下开关 S1 后开始计费和计里程数,起步价是 7

元,行驶 3 公里,以后 2.2 元/公里。

并且设计选择模块,在车费超过 20

元每公里加收 50%车费即 3.3 元/公里。

3.2 基本设计思想

出租车计费器根据设计要求可初步分为 3 方面——显示、记里程

数、记费。

之后再根据三方面分别设计模块。

1.显示模块。

一般计数器

显示数字为 1-F 即 16 进制,而 16 进制不方便观看,所以在设计这一模

块时我们将 16 进制改为 10 进制输出进而设计了译码模块。

2、里程模块。

设计要求对里程计数主要分为两个方面,计数以及公里数比较。

即 3 公

里之内收 7 元,3 公里之后 20 元(通过计算为 9 公里)以内每公里 2.2

元,9 公里以外为每公里 3.3 元。

所以,我们将里程模块分为里程计数模

块以为比较模块。

3.计费模块。

计费模块同里程比较模块所以将两个模

块合二为一,为价格计算模块。

4.Verilog 代码

4.1 顶层模块

module taxi(

clk,stop,rst_n,

time1,time2,time3,time4,

seg1,seg2,seg3,seg4

);

 

input clk;

input stop;

input rst_n;

 

output [6:

0]time1;

output [6:

0]time2;

output [6:

0]time3;

output [6:

0]time4;

 

output [6:

0]seg1;

output [6:

0]seg2;

output [6:

0]seg3;

output [6:

0]seg4;

 

wire clk_fp;

wire [15:

0]distance;

wire [15:

0]price;

 

wire [15:

0]distan_bcd;

wire [15:

0]price_bcd;

 

fp my_fp(clk,clk_fp,rst_n,stop);

distance_counter dis_counter(clk_fp,rst_n,stop,distance);

price_counter price_coun(clk_fp,rst_n,stop,price,distance);

 

yimaqi distance_BCD(distance,distan_bcd,clk_fp);

yimaqi price_BCD(price,price_bcd,clk_fp);

 

dispaly_myaa(clk_fp,distan_bcd,seg1,seg2,seg3,seg4);

dispaly_mybb(clk_fp,price_bcd,time1,time2,time3,time4);

 

endmodule

4.2 分频模块

module fp(

clk,clk_fp,rst_n,stop

);//50mhz

 

input clk;

input rst_n;

input stop;

 

output clk_fp;

 

reg [25:

0] counter;

reg clk_fp;

 

always@(posedge clk or negedge rst_n or negedge stop)

begin

if(!

rst_n)

begin

clk_fp<=1'd0;

counter<=26'd0;

end

 

else if(!

stop)

begin

counter<=counter;

end

 

else

begin

if(counter==26'd49_999_999)

begin

clk_fp<=1'b1;

counter<=1'b0;

end

else

begin

clk_fp<=1'b0;

counter<=counter+1'b1;

end

end

end

 

endmodule

4.3 里程计算模块

clk_fp,rst_n,stop,distance

);

 

input clk_fp;//1S

input rst_n;

input stop;

 

output [15:

0]distance;

reg [15:

0]distance;

 

always@(posedge clk_fp or negedge rst_n)

begin

if(!

rst_n)

distance<=8'd0;

 

else if(!

stop)

distance<=distance;

 

else

distance<=distance+5'd10;

end

 

endmodule

4.4 价格计算模块

module price_counter(

clk_fp,rst_n,

stop,price,distance

);

 

input clk_fp;//1S

input rst_n;

input stop;

input [15:

0]distance;

 

output [15:

0]price;

 

reg [15:

0]price;

always@(posedge clk_fp or negedge rst_n or negedge stop)

begin

if(!

rst_n)

price<=8'd0;

 

else if(!

stop)

price<=price;

 

else

if(distance<=30)

price<=16'd70;

 

else if(distance<=90&&30

price<=price+16'd22;

 

else

price<=price+16'd33;

end

 

endmodule

4.5 译码模块

module yimaqi(

num_hex,BCD,clk_fp

);

 

input [15:

0]num_hex;

input clk_fp;

 

output [15:

0]BCD;

 

reg [15:

0]BCD;

 

reg [3:

0] yima [3:

0];

 

always@(posedge clk_fp)

begin

 

yima[0]<=(num_hex)%10;

yima[1]<=( num_hex/10)%10;

yima[2]<=(num_hex/100)%10;

yima[3]<=(num_hex/1000)%10;

 

BCD<={yima[3],yima[2],yima[1],yima[0]};

end

endmodule

4.6 显示器模块

clk_fp,BCD,seg1,seg2,

seg3,seg4

);

input clk_fp;

input [15:

0] BCD;

 

output [6:

0]seg1;

output [6:

0]seg2;

output [6:

0]seg3;

output [6:

0]seg4;

 

reg [7:

0] seg1;

reg [7:

0] seg2;

reg [7:

0] seg3;

reg [7:

0] seg4;

 

reg [3:

0]shumaguan_aa[3:

0];

always shumaguan_aa[0]<=BCD[3:

0];

always shumaguan_aa[1]<=BCD[7:

4];

always shumaguan_aa[2]<=BCD[11:

8];

always shumaguan_aa[3]<=BCD[15:

12];

 

parameter seg_num0=7'hC0,

seg_num1=7'hF9,

seg_num2=7'hA4,

seg_num3=7'hB0,

seg_num4=7'h99,

seg_num5=7'h92,

seg_num6=7'h82,

seg_num7=7'hF8,

seg_num8=7'h80,

seg_num9=7'h90;

 

always@(posedge clk_fp)

begin

case(shumaguan_aa[0])

4'd0:

seg1<=seg_num0;

4'd1:

seg1<=seg_num1;

4'd2:

seg1<=seg_num2;

4'd3:

seg1<=seg_num3;

4'd4:

seg1<=seg_num4;

4'd5:

seg1<=seg_num5;

4'd6:

seg1<=seg_num6;

4'd7:

seg1<=seg_num7;

4'd8:

seg1<=seg_num8;

4'd9:

seg1<=seg_num9;

default:

seg1<=seg_num0 ;

endcase

case(shumaguan_aa[1])

4'd0:

seg2<=(seg_num0&7'b0111_1111);

4'd1:

seg2<=(seg_num1&7'b0111_1111);

4'd2:

seg2<=(seg_num2&7'b0111_1111);

4'd3:

seg2<=(seg_num3&7'b0111_1111);

4'd4:

seg2<=(seg_num4&7'b0111_1111);

4'd5:

seg2<=(seg_num5&7'b0111_1111);

4'd6:

seg2<=(seg_num6&7'b0111_1111);

4'd7:

seg2<=(seg_num7&7'b0111_1111);

4'd8:

seg2<=(seg_num8&7'b0111_1111);

4'd9:

seg2<=(seg_num9&7'b0111_1111);

default:

seg2<=(seg_num0&7'b0111_1111 );

endcase

case(shumaguan_aa[2])

4'd0:

seg3<=seg_num0;

4'd1:

seg3<=seg_num1;

4'd2:

seg

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1