资源描述:
《eda课设附录程序及仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、附录一分频模块及源程序moduleclk(clk_25M,clk1,reset);//端口的定义inputclk_25M,reset;//总的时钟是25Moutputclk1;//分频后输的时钟regclk1;reg[31:0]count;//32位的计数器always@(posedgeclk_25Mornegedgereset)//异步复位beginif(!reset)beginclk1<='d0;count=32'd0;endelseif(count==32'd12500_000)//判断计时器记到了12500_000吗begi
2、ncount<=32'd0;//计到12500_000计数器清零clk1<=~clk1;//输出的时钟取反end//endbeginelsecount<=count+1'd1;//没计到25000_000计数器加一end//endalwaysendmodule//结束分频模块附录二计程部分计程模块从波形图可以看出在时钟的控制下,当reset为高电平且start为高电平的时候distance开始计数,当计到大于三的时候输出了distance_enable为高电平。准备对第4公里以后的脉冲进行加计费。modulejicheng(clk1
3、,start,reset,distance,distance_enable);inputclk1,start,reset;output[11:0]distance;reg[11:0]distance;outputdistance_enable;wiredistance_enable;always@(posedgeclk1ornegedgereset)beginif(!reset)begindistance<=11'd0;endelseif(start)beginif(distance[3:0]==9)begindistance[3:
4、0]<=4'd0;if(distance[7:4]==9)begindistance[7:4]<=4'd0;if(distance[11:8]==9)distance[11:8]<=4'd0;elsedistance[11:8]<=distance[11:8]+1'd1;endelsedistance[7:4]<=distance[7:4]+1'd1;endelsedistance[3:0]<=distance[3:0]+1'd1;endendassigndistance_enable=((((distance[3:0]==0)
5、
6、
7、(distance[3:0]==5))&&(distance[7:4]>=5))
8、
9、((distance[11:8]!=0)&&((distance[3:0]==0)
10、
11、(distance[3:0]==5))))?1'd1:1'd0;Endmodule附录三计时部分计时模块从波形图可以看出在clk的控制下当start为低电平reset为高电平的时候时间计数,当时间大于二分钟的时候,time_enable为输出高电平,每60s产生一个计费脉冲modulejishi(clk2,reset,start,s,m,time_enable);i
12、nputclk2,reset,start;output[7:0]s;output[7:0]m;outputtime_enable;reg[7:0]s;reg[7:0]m;wiretime_enable;always@(posedgeclk2ornegedgereset)beginif(!reset)begins<=8'd0;m<=8'd0;endelseif(!start)beginif(s[3:0]==9)begins[3:0]<=4'd0;if(s[7:4]==5)begins[7:4]<=4'd0;if(m[3:0]==9)b
13、eginm[3:0]<=4'd0;if(m[7:4]==9)m[7:4]<=4'd0;elsem[7:4]<=m[7:4]+1'd1;endelsem[3:0]<=m[3:0]+1'd1;endelses[7:4]<=s[7:4]+1'd1;endelses[3:0]<=s[3:0]+1'd1;endendassigntime_enable=((m[7:0]>8'd0)&&(s[7:0]==8'd0))?1'd1:1'd0;endmodule附录四计费部分计费模块从波形图可以看出reset用于将费用计数器复位为起步价8.0元;由于本
14、仿真select_clk信号并非是系统选择出来的公里脉冲和计时脉冲,通过认为设定,不影响其观察功能效果。modulejifei(select_clk,reset,fei);inputselect_clk,reset;output[11