当前位置:首页 > 数字电子技术实验报告之交通灯设计 - 图文
begin
num[3:0]<=l[3:0];weiscan[7:0]<=8'b00000001; end 3'b001: begin
num[3:0]<=h[3:0];weiscan[7:0]<=8'b00000010; end 3'b010:
begin
num[3:0]<=l1[3:0];weiscan[7:0]<=8'b00000100; end 3'b011: begin
num[3:0]<=h1[3:0];weiscan[7:0]<=8'b00001000; end endcase end
倒计时的显示设计:
每一个状态显示的时间和亮的灯的颜色都不一样。所以每个状态时,计时的变量都应改变,才能使得数码管正常显示。
代码如下:
case(state)
state0:begin l=gl;h=gh;l1=rl;h1=rh;end state1:begin l=yl;h=yh;l1=rl;h1=rh;end state2:begin l=rl;h=rh;l1=yl;h1=yh;end state3:begin l=rl;h=rh;l1=yl;h1=yh;end state4:begin l=rl;h=rh;l1=yl;h1=yh;end endcase end
调试与实验结果 调试:
将代码中always部分中的常来clk1hkz和常来clk1hz都改为clk,然后进行编译,并建立一个vector waveform file文件,找到所有的节点,就可以运行了。 仿真波形如下:
整体仿真图形:
weiscan[7:0]的仿真图:
counter[7:0]的仿真图:
引脚锁定:
下载到实验箱后,用导线将clk与p16接起,后接入6M频率即可。
实验结果:
实验交通灯变化正常,倒计时显示正常。
本次实验的心得;
本次实验经历了3个礼拜,完全由学生自主学习和实验,我对于这个实验一开始以为比较简单,可是动起手却没有思路。经过查阅图书馆的资料才有那么一点思路,开始动手。经过这次实验我学到了很多,学会数码管的扫描和状态的设定和转换。
附页(附总代码):
module d20122756(clk,sn,we,ns,ew,counter,weiscan); output [7:0]weiscan; reg [7:0]weiscan; input clk;
output [1:0]sn,we,ns,ew; output [6:0]counter; reg [6:0]counter; reg [1:0]sn,we,ns,ew; reg [3:0]rl,rh,yl,yh,gl,gh; reg [3:0]wei,num; reg clk1khz,clk1hz; reg [12:0]count1; reg [8:0]count2; reg [3:0]l,h,l1,h1; reg [2:0]state,next_state;
共分享92篇相关文档