杭电数字电路课程设计 您所在的位置:网站首页 出租车计费电路课程设计 杭电数字电路课程设计

杭电数字电路课程设计

2024-07-02 19:23| 来源: 网络整理| 查看: 265

杭电数字电路课程设计——出租车计费器 实验目的

(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)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有