杭电数字电路课程设计——出租车计费器

杭电数字电路课程设计——出租车计费器

实验目的

(1)学习数码管动态扫描方法,进一步熟悉模块调用的方法,锻炼编程设计数字系统的能力。
(2)掌握灵活运用Verilog HDL语言进行各种描述与建模的技巧和方法。

模块设计

(1)分频模块:因出租车计费器模拟以秒为单位,即分频1秒产生一个clk_out,控制其他模块工作。
(2)计程模块:用于根据有效的单位时间、速度来增加相应的里程数。
(3)出租车等红绿灯模块:用于进行等红绿灯时的计时,若为10秒,产生一个time_enable信号控制计费器是否进行等红绿灯计费。
(4)计费模块:根据传入的里程来计算相应的费用,以及根据time_enable信号判断是否增加额外的等红绿灯计费。
(5)数码管刷新模块:用于刷新数码管,以62.5Hz为刷新率保证人视觉上感受不到数码管的闪烁。
(6)二进制转BCD码模块:用于将传入的里程、费用转换成BCD码以便于数码管显示。
(7)数码管显示模块:根据相应的控制信号来将里程或费用转换成位选、段选信号来实现数码管的实现。
程序模块关系
(1)分频模块的分频1s有效的时钟信号控制计程模块、出租车等红绿灯模块、计费模块工作。
(2)计程模块的里程数用于计费模块的费用计算。
(3)出租车等红绿灯模块的time_enable用于控制计费模块是否产生出租车等红绿灯额外费用。
(4)数码管刷新模块产生的位选信号用于控制数码管显示。
(5)二进制转BCD码模块产生的里程BCD码、费用BCD码用于数码管显示。

程序源代码

module sy_last_code(reset, clk_M, start, pause, waitL, speedup, d_m, Seg, AN);
    input reset;
    input clk_M;
    input start;
    input pause;
    input waitL;
    input [1:0] speedup;
    input d_m;
    //段选
    output [7:0] Seg;
    //位选
    output [3:0] AN;
     
    wire [9:0] fee_before;
    wire [9:0] distance_before;
    wire [15:0] distance_b;
    wire [15:0] fee_b;
    wire time_enable;
    wire clk_out;
    wire [1:0] Bit_Sel;
    Fdiv u1(reset, clk_M, clk_out);
    // 计程
    Distance u2(clk_out, reset, start, speedup, waitL, pause, distance_before);
    // 等待红绿灯时间
    Time u3(clk_out, reset, pause, waitL, time_enable);
    // 计费
    Fee u4(clk_out, reset, waitL, pause, time_enable, distance_before, start, fee_before);
    // 分频刷新数码管
    Delay_4ms u5(clk_M, Bit_Sel);
    // 二进制转换为BCD码
    Binary u6(distance_before, distance_b);
    Binary u7(fee_before, fee_b);
    // 显示数码管
    Smg u8(d_m, fee_b, distance_b, Bit_Sel, Seg, AN);
 
endmodule
 
 
//分频模块
// 1s
module Fdiv(
    input wire reset,
    input wire clk_M,
    output reg clk_out
);
    // 定义计数器
    reg [31:0] counter;
    initial begin counter = 32'd0; end
    initial begin clk_out = 0; end
    always @(posedge reset or posedge clk_M)
        begin
            if(reset)
                
  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值