基于verilog語言的出租车计费器.docVIP

  • 32
  • 0
  • 约1.05万字
  • 约 12页
  • 2016-11-27 发布于重庆
  • 举报
基于verilog語言的出租车计费器

1时间分频: module div(clk_50M,clk);// 端口的定义 input clk_50M;// 总的时钟是50M output clk;//分频后输的时钟 reg clk; reg [31:0] count;//32位的计数器 always@ (posedge clk_50M )//异步复位 begin if(count==32d25_000000)// 判断计时器记到了25_000000吗 begin count=32d0;//计到25_000000计数器清零 clk=~clk;//输出的时钟取反 end//end begin else count=count+1d1;// 没计到25_000000计数器加一 end//end always endmodule // 结束分频模块 2速度分频; module sududiv(op,clk_50M,clk,reset);// 端口的定义 input clk_50M,reset;// 总的时钟是50M input [2:0] op; output clk;//分频后输的时钟 reg clk; reg [31:0] count;//32位的计数器 always@ (posedge clk_50M or negedge reset)//异步复位 begin if(!reset) begin clk=d0; count=32d0; end else begin case(op) 3b001: if(count==32d50_000000)// 判断计时器记到了25_000000吗 begin count=32d0;//计到25_000000计数器清零 clk=~clk;//输出的时钟取反 end//end begin else count=count+1d1;// 没计到25_000000计数器加一 3b010: if(count==32d40_000000)// 判断计时器记到了25_000000吗 begin count=32d0;//计到25_000000计数器清零 clk=~clk;//输出的时钟取反 end//end begin else count=count+1d1;// 没计到25_000000计数器加一 3b011: if(count==32d30_000000)// 判断计时器记到了25_000000吗 begin count=32d0;//计到25_000000计数器清零 clk=~clk;//输出的时钟取反 end//end begin else count=count+1d1;// 没计到25_000000计数器加一 default:clk=clk; endcase end// end//end always endmodule // 结束分频模块 3系统时间计数: module xttimemokuai(clk,s,m,);// 端口的定义 input clk; output [7:0] s;//输出的秒 output [7:0] m;//输出的分 reg [7:0] s; reg [7:0] m; always@(posedge clk )//异步复位 begin if(s[3:0]==9)// 秒的低四位是9 begin s[3:0]=4d0;//清零 if(s[7:4]==5) // 秒的高四位是5 begin s[7:4]=4d0; //清零 if(m[3:0]==9) // 分的低四位是9 begin m[3:0]=4d0; //清零 if(m[7:4]==9) // 分的高四位是9 m[7:4]=4d0; //清零 else m[7:4]=m[7:4]+1d1; // 分的高四位不是9加一 end else m[3:0]=m[3:0]+1d1; //分的低四位不是9加一 end else s[7:4]=s[7:4]+1d1; // 秒的高四位不是5加一 end else s[3:0]=s[3:0]+1d1; //秒的低四位不是9加一

文档评论(0)

1亿VIP精品文档

相关文档