欢迎来到天天文库
浏览记录
ID:50906764
大小:67.50 KB
页数:12页
时间:2020-03-15
《基于verilog语言的出租车计费器.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1时间分频:modulediv(clk_50M,clk);//端口的定义inputclk_50M;//总的时钟是50Moutputclk;//分频后输的时钟regclk;reg[31:0]count;//32位的计数器always@(posedgeclk_50M)//异步复位beginif(count==32'd25_000000)//判断计时器记到了25_000000吗begincount<=32'd0;//计到25_000000计数器清零clk<=~clk;//输出的时钟取反end//endbe
2、ginelsecount<=count+1'd1;//没计到25_000000计数器加一end//endalwaysendmodule//结束分频模块2速度分频;modulesududiv(op,clk_50M,clk,reset);//端口的定义inputclk_50M,reset;//总的时钟是50Minput[2:0]op;outputclk;//分频后输的时钟regclk;reg[31:0]count;//32位的计数器always@(posedgeclk_50Mornegedgereset
3、)//异步复位beginif(!reset)beginclk<='d0;count=32'd0;endelsebegincase(op)3'b001:if(count==32'd50_000000)//判断计时器记到了25_000000吗begincount<=32'd0;//计到25_000000计数器清零clk<=~clk;//输出的时钟取反end//endbeginelsecount<=count+1'd1;//没计到25_000000计数器加一3'b010:if(count==32'd40_
4、000000)//判断计时器记到了25_000000吗begincount<=32'd0;//计到25_000000计数器清零clk<=~clk;//输出的时钟取反end//endbeginelsecount<=count+1'd1;//没计到25_000000计数器加一3'b011:if(count==32'd30_000000)//判断计时器记到了25_000000吗begincount<=32'd0;//计到25_000000计数器清零clk<=~clk;//输出的时钟取反end//endbe
5、ginelsecount<=count+1'd1;//没计到25_000000计数器加一default:clk<=clk;endcaseend//end//endalwaysendmodule//结束分频模块3系统时间计数:modulexttimemokuai(clk,s,m,);//端口的定义inputclk;output[7:0]s;//输出的秒output[7:0]m;//输出的分reg[7:0]s;reg[7:0]m;always@(posedgeclk)//异步复位beginif(s[3:
6、0]==9)//秒的低四位是9begins[3:0]<=4'd0;//清零if(s[7:4]==5)//秒的高四位是5begins[7:4]<=4'd0;//清零if(m[3:0]==9)//分的低四位是9beginm[3:0]<=4'd0;//清零if(m[7:4]==9)//分的高四位是9m[7:4]<=4'd0;//清零elsem[7:4]<=m[7:4]+1'd1;//分的高四位不是9加一endelsem[3:0]<=m[3:0]+1'd1;//分的低四位不是9加一endelses[7:4]
7、<=s[7:4]+1'd1;//秒的高四位不是5加一endelses[3:0]<=s[3:0]+1'd1;//秒的低四位不是9加一end//endalways//产生time_enable信号。endmodule//结束计时模块4等候时间计数:moduletimemokuai(clk,reset,start,s,m);//端口的定义inputclk,reset,start;output[7:0]s;//输出的秒output[7:0]m;//输出的分reg[7:0]s;reg[7:0]m;always
8、@(posedgeclkornegedgereset)//异步复位beginif(!reset)//低电平有效begin//复位s<=8'd0;m<=8'd0;endelseif(!start)//start信号低电平有效beginif(s[3:0]==9)//秒的低四位是9begins[3:0]<=4'd0;//清零if(s[7:4]==5)//秒的高四位是5begins[7:4]<=4'd0;//清零if(m[3:0]==9)//分的低四位是9beginm[3:0
此文档下载收益归作者所有