1.本课程设计完成的计费器应具有如下功能:
(1)实现计费功能,计费标准为:按行驶里程计算,起步价为7.0元,并在车行驶3km后按元/km计费,当计费器达到或超过20元时,每千米加收50%的车费,车停止不收费。
(2)现场模拟功能:以开关按键模拟千米计数,能模拟汽车启动、停止、暂停等状态。
(3)将车费和路程分别以十进制的形式显示出来。
2.设计思想以及过程
本次出租车计费器的设计主要是基于FPGA芯片,使用硬件描述语言VerilogHDL,用“自顶向下”的设计方法,编写一个出租车计费芯片,并使用quartus软件和Modelsim软件进行编程,同时使用软件进行功能和时序的仿真

2.其代码如下展示:

module driver (kilometer,money,a,stop,start,suspend,m1,m0,k1,k0,b1,b2,b3,b4);
    input stop,start,suspend;
    input a;
    output [6:0] kilometer,money;
    output [3:0] m1,m0,k1,k0;
    output [6:0] b1,b2,b3,b4;
    reg [6:0] kilometer,money;
    reg [3:0] m1,m0,k1,k0;
    reg [6:0] b1,b2,b3,b4;
    reg [6:0] money_reg,kilometer_reg;

always@(posedge a )
begin
    if(stop)
    begin
    kilometer<= 0;
    end
    else if(start)
    begin
    kilometer<= 0;
    end
    else
    begin
    if(suspend)
    kilometer<=kilometer+1;
    else
      kilometer<=kilometer;
    end
end
    always@(kilometer)
    begin
    if(kilometer>9)
    begin
    money=money+3;
    end
    else if(kilometer>3)
    begin
    money=money+2;
end
    else money=7;
    
    m1=money/10;
    m0=money%10;
    k1=kilometer/10;
    k0=kilometer%10;
end
    always@(m1)
    begin
    case(m1)
    4'b0000:begin b1<=7'b1000000;end
    4'b0001:begin b1<=7'b1111001;end
    4'b0010:begin b1<=7'b0100100;end
    4'b0011:begin b1<=7'b0110000;end
    4'b0100:begin b1<=7'b0011010;end
    4'b0101:begin b1<=7'b0010010;end
    4'b0110:begin b1<=7'b1000010;end
    4'b0111:begin b1<=7'b1111000;end
    4'b1000:begin b1<=7'b0000000;end
    4'b1001:begin b1<=7'b0010000;end
    endcase
end

always@(m0)
    begin
     case(m0)
    4'b0000:begin b2<=7'b1000000;end
    4'b0001:begin b2<=7'b1111001;end
    4'b0010:begin b2<=7'b0100100;end
    4'b0011:begin b2<=7'b0110000;end
    4'b0100:begin b2<=7'b0011010;end
    4'b0101:begin b2<=7'b0010010;end
    4'b0110:begin b2<=7'b1000010;end
    4'b0111:begin b2<=7'b1111000;end
    4'b1000:begin b2<=7'b0000000;end
    4'b1001:begin b2<=7'b0010000;end
    endcase
end

always@(k1)
    begin
    case(k1)
    4'b0000:begin b3<=7'b1000000;end
    4'b0001:begin b3<=7'b1111001;end
    4'b0010:begin b3<=7'b0100100;end
    4'b0011:begin b3<=7'b0110000;end
    4'b0100:begin b3<=7'b0011010;end
    4'b0101:begin b3<=7'b0010010;end
    4'b0110:begin b3<=7'b1000010;end
    4'b0111:begin b3<=7'b1111000;end
    4'b1000:begin b3<=7'b0000000;end
    4'b1001:begin b3<=7'b0010000;end
    endcase
end

always@(k0)
    begin
    case(k0)
    4'b0000:begin b4<=7'b1000000;end
    4'b0001:begin b4<=7'b1111001;end
    4'b0010:begin b4<=7'b0100100;end
    4'b0011:begin b4<=7'b0110000;end
    4'b0100:begin b4<=7'b0011010;end
    4'b0101:begin b4<=7'b0010010;end
    4'b0110:begin b4<=7'b1000010;end
    4'b0111:begin b4<=7'b1111000;end
    4'b1000:begin b4<=7'b0000000;end
    4'b1001:begin b4<=7'b0010000;end
    endcase
end
endmodule

module check;
    reg A,Stop,Suspend,Start;
    wire [6:0] Kilometer,Money;
    wire [3:0] M1,M0,K1,K0;
    wire [6:0] B1,B2,B3,B4;

initial
    begin
    A=1;Stop=0;Start=1;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=1;
    #20 A=1;Stop=0;Start=0;Suspend=1;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=1;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #50 $stop;
end
driver dr (Kilometer,Money,A,Stop,Start,Suspend,M1,M0,K1,K0,B1,B2,B3,B4);
endmodule
module driver (kilometer,money,a,stop,start,suspend,m1,m0,k1,k0,b1,b2,b3,b4);
    input stop,start,suspend;
    input a;
    output [6:0] kilometer,money;
    output [3:0] m1,m0,k1,k0;
    output [6:0] b1,b2,b3,b4;
    reg [6:0] kilometer,money;
    reg [3:0] m1,m0,k1,k0;
    reg [6:0] b1,b2,b3,b4;
    reg [6:0] money_reg,kilometer_reg;

always@(posedge a )
begin
    if(stop)
    begin
    kilometer<= 0;
    end
    else if(start)
    begin
    kilometer<= 0;
    end
    else
    begin
    if(suspend)
    kilometer<=kilometer+1;
    else
      kilometer<=kilometer;
    end
end
    always@(kilometer)
    begin
    if(kilometer>9)
    begin
    money=money+3;
    end
    else if(kilometer>3)
    begin
    money=money+2;
end
    else money=7;
    
    m1=money/10;
    m0=money%10;
    k1=kilometer/10;
    k0=kilometer%10;
end
    always@(m1)
    begin
    case(m1)
    4'b0000:begin b1<=7'b1000000;end
    4'b0001:begin b1<=7'b1111001;end
    4'b0010:begin b1<=7'b0100100;end
    4'b0011:begin b1<=7'b0110000;end
    4'b0100:begin b1<=7'b0011010;end
    4'b0101:begin b1<=7'b0010010;end
    4'b0110:begin b1<=7'b1000010;end
    4'b0111:begin b1<=7'b1111000;end
    4'b1000:begin b1<=7'b0000000;end
    4'b1001:begin b1<=7'b0010000;end
    endcase
end

always@(m0)
    begin
     case(m0)
    4'b0000:begin b2<=7'b1000000;end
    4'b0001:begin b2<=7'b1111001;end
    4'b0010:begin b2<=7'b0100100;end
    4'b0011:begin b2<=7'b0110000;end
    4'b0100:begin b2<=7'b0011010;end
    4'b0101:begin b2<=7'b0010010;end
    4'b0110:begin b2<=7'b1000010;end
    4'b0111:begin b2<=7'b1111000;end
    4'b1000:begin b2<=7'b0000000;end
    4'b1001:begin b2<=7'b0010000;end
    endcase
end

always@(k1)
    begin
    case(k1)
    4'b0000:begin b3<=7'b1000000;end
    4'b0001:begin b3<=7'b1111001;end
    4'b0010:begin b3<=7'b0100100;end
    4'b0011:begin b3<=7'b0110000;end
    4'b0100:begin b3<=7'b0011010;end
    4'b0101:begin b3<=7'b0010010;end
    4'b0110:begin b3<=7'b1000010;end
    4'b0111:begin b3<=7'b1111000;end
    4'b1000:begin b3<=7'b0000000;end
    4'b1001:begin b3<=7'b0010000;end
    endcase
end

always@(k0)
    begin
    case(k0)
    4'b0000:begin b4<=7'b1000000;end
    4'b0001:begin b4<=7'b1111001;end
    4'b0010:begin b4<=7'b0100100;end
    4'b0011:begin b4<=7'b0110000;end
    4'b0100:begin b4<=7'b0011010;end
    4'b0101:begin b4<=7'b0010010;end
    4'b0110:begin b4<=7'b1000010;end
    4'b0111:begin b4<=7'b1111000;end
    4'b1000:begin b4<=7'b0000000;end
    4'b1001:begin b4<=7'b0010000;end
    endcase
end
endmodule

module check;
    reg A,Stop,Suspend,Start;
    wire [6:0] Kilometer,Money;
    wire [3:0] M1,M0,K1,K0;
    wire [6:0] B1,B2,B3,B4;

initial
    begin
    A=1;Stop=0;Start=1;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=1;
    #20 A=1;Stop=0;Start=0;Suspend=1;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=0;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #20 A=1;Stop=1;Start=0;Suspend=0;
    #20 A=0;Stop=0;Start=0;Suspend=0;
    #50 $stop;
end
driver dr (Kilometer,Money,A,Stop,Start,Suspend,M1,M0,K1,K0,B1,B2,B3,B4);
endmodule

4.完成截图如下:

5.其实验视频地址:第12章课题1视频_哔哩哔哩_bilibili

出租车计费器的Verilog语言简单完成相关推荐

  1. 基于FPGA的数码管显示出租车计费器

    基于FPGA简易出租车计价器设计技术规范 专业:集成电路设计与集成系统 班级:电路1401班 姓名:童峥 学号:05146034 一. 功能描述: 本设计基于FPGA设计并使用Verilog HDL硬 ...

  2. 设计题目:基于CPLD/FPGA的出租车计费器

    一.设计任务及要求: 本设计要求设计一个基于CPLD/FBGA的出租车计费器,其具体要求如下: 1  能够实现计费功能 费用是按行驶的里程进行 计算的,设出租车的起价是6.0元,当里程小于3km时,按 ...

  3. 单片机c语言出租车计时程序,基于单片机的出租车计费(c语言).doc

    基于单片机的出租车计费(c语言) 基于单片机的出租车计费(c语言) 基于proteus仿真 一.设计要求: 1.用实现出租车计费器的设计. 出租车起步开始计程和计费,计程系统按实际公里数计程,计费系统 ...

  4. 出租车收费题目及答案c语言,《基于单片机的出租车计费(c语言)》.doc

    基于单片机的出租车计费(c语言)基于proteus仿真 一.设计要求: 1.用实现出租车计费器的设计. 出租车起步开始计程和计费,计程系统按实际公里数计程,计费系统首先显示起步价(如.0),车行驶2k ...

  5. taxi计费器c语言程序,毕业论文:出租车计费系统(全文完整版)

    <毕业论文:出租车计费系统.doc>由会员分享,可免费在线阅读全文,更多与<毕业论文:出租车计费系统>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索. ...

  6. C语言简单算法之计算分段函数,A除以B,阶梯电价,出租车计价

    C语言简单算法之计算分段函数,A除以B,阶梯电价,出租车计价 1.题目一计算分段函数[1] 1.实验代码 #include<stdio.h> int main() {float x,y;s ...

  7. verilog 自动售货机状态机实现_基于Verilog语言的简单自动售货机-数电课设报告(最终版)最新版...

    <基于Verilog语言的简单自动售货机-数电课设报告.docx>由会员分享,可免费在线阅读全文,更多与<基于Verilog语言的简单自动售货机-数电课设报告(最终版)>相关文 ...

  8. Verilog——一个简单仲裁器的实现

    Verilog--一个简单仲裁器的实现 仲裁器基本功能 仲裁器(arbiter) 的主要功能是,多个source源同时发出请求时,根据当前的优先级来判断应响应哪一个source. 仲裁器分为轮询优先级 ...

  9. FPGA笔记之verilog语言(基础语法篇)

    文章目录 FPGA笔记之verilog语言(基础语法篇) 1. verilog 的基础结构 1.1 verilog设计的基本单元--module 1.2 module的使用 1.3 I/O的说明 1. ...

  10. verilog语言实现FPGA板的交通信号灯

    数字电子技术课程设计报告 设计题目: 交通信号灯 目录 一.概述 二.任务书(任务功能介绍) 三.系统设计 1.基本原理 2.系统设计框图 四.各单元设计(Verilog源代码及仿真图) 五.总体电路 ...

最新文章

  1. WMI技术介绍和应用——查询桌面信息
  2. golang 调用库函数错误 cannot refer to unexported name
  3. 妙用Telnet快速收发电子邮件(转载)
  4. 腾讯邓君:《王者荣耀》翻过的同步技术相关的三座大山
  5. Android Handler Runnable和Thread之间的区别和联系详解
  6. 启动zookeeper_Giraph源码分析(一)—启动ZooKeeper服务
  7. Android Webview实现有道电子词典
  8. 蔚来正式登陆港交所 首日开盘报160港元
  9. 关于慢开始、拥塞控制、快重传、快恢复算法的理解
  10. phpStudy配置站点 解决You don't have permission to access / on this server
  11. 线段树(Segment Tree)
  12. vnc改ip_怎么用VNC远程软件,怎么配制IP地址。?最好有教程
  13. 取消360导航作为浏览器访问首页
  14. 使用阿里云的ip地址查询服务-购买ip地址查询服务
  15. 安迪的第一个字典(Andy‘s First Dictionary,UVa10815)
  16. Dialog常用写法
  17. 2021-06-27微信公众号模板消息群发
  18. 【FPGA】一些基本模块代码
  19. 阿里云服务器 Certbot 申请 LetsEncrypt 泛域名免费证书,并实现自动续订
  20. mysql批量修改表字段信息,把mysql中列名大写字母列转化为小写

热门文章

  1. 3dmax全局材质灯光细分插件_【3D脚本插件】如何利用插件快速修改全局灯光材质细分...
  2. 学习笔记——直流电机调速器
  3. 微信小程序实现滑动布局
  4. 几个常用的产品原型设计工具
  5. 好用的工程项目管理软件推荐
  6. 本地音乐播放器+android8.1,APlayer v1.5.6.8-15681 安卓本地音乐播放器 | 智享阁
  7. Stp文件在线浏览工具包
  8. 【机器学习】判别模型vs生成模型、概率模型vs非概率模型
  9. C语言全局变量和局部变量
  10. RF 操作页面滚动条上下滚动