1、本模块实现交通灯控制器的逻辑功能。/* /* 交通灯控制器 module traffic(clock,rst_n,clken,lampa,lampb,acount,bcount);input clock; /系统时钟50MHz input rst_n; /同步复位信号,低电平有效 input clken; /时钟使能信号:1Hz。output 2:0 lampa; /控制A方向三盏灯的亮灭;其中lampa2:0分 /别控制A方向的绿灯、黄灯、红灯(低电平灯亮) 0 lampb; /控制B方向三盏灯的亮灭;其中lampb2:/别控制B方向的绿灯、黄灯、红灯(低电平灯亮) output 7:0 a
2、count; /用于A方向灯的时间显示,8位BCD码输出 0 bcount; /用于B方向灯的时间显示,8位BCD码输出 reg2:0 lampa,lampb;reg7:0 numa,numb; /时间计数器 reg tempa,tempb; /防重进入标志 0 StateA,StateB; /A、B方向灯控制状态机的状态 /设置各种灯的计数器的预置数 parameter ared =8h30, /30秒 ayellow =8h5, /5秒 agreen =8h15, /15秒 bred =8h20, /20秒 byellow =8bgreen =8h25; /25秒 assign acoun
3、t=numa;assign bcount=numb;/控制A方向的三种灯 always (posedge clock or negedge rst_n) begin if(!rst_n) StateA = 3h0;lampa b011;tempa = 1b0;end else if(clken) tempa) b1;case(StateA) /控制亮灯的顺序 0: begin numa = agreen; lampa StateA 1) if(numa3:0=0) numa3:0=4h9;numa7:4=numa7:4-4h1;=numa3:0-4if (numa=2) tempa=1lamp
4、b=3StateBtempbelse if (clken) tempb) case (StateB) /控制亮灯的顺序 begin numb=bred; lampb StateBif(numb3:numb3:numb7:=numb7:=numb3:if(numb=2) tempb endmodule 2)显示控制程序,文件名为traffic.v 本模块实现交通灯倒计时的显示并产生1HZ的时钟使能信号。/* 交通灯控制器显示模块 /*功能:显示交通灯时间,并产生1Hz时钟使能信号, module traffic_test(clock,clken,rst_n,acount,bcount,seg,d
5、ig); /系统时钟(50MHz) output clken;input 7:0 seg; /数码管段码输出 0 dig; /数码管位码输出 /I/O寄存器 0seg;0dig;/内部寄存器 reg25:0clk_cnt;reg16:0count; /时钟分频计数器 reg1:0 cnt; /数码管扫描计数器 reg3:0disp_dat; /数码管扫描显存 wire div_clk; /分频时钟 /产生1Hz时钟使能信号 always (posedge clock) if(clken) clk_cnt d49999999);/时钟分频进程,用于数码管扫描显示 count = count +
6、1assign div_clk = &count;/数码管扫描显示部分 if(div_clk) cnt = cnt + 1case(cnt) /选择扫描显示数据 2d0:disp_dat = acount7:4; /第一个数码管 d1:= acount3:0; /第二个数码管 d2:= bcount7: /第五个数码管 d3:= bcount3: /第六个数码管 case(cnt) /选择数码管显示位 dig = 8b01111111; /选择第一个数码管显示 b10111111; /选择第二个数码管显示 b11110111; /选择第五个数码管显示 b11111011; /选择第六个数码管显
7、示 always (disp_dat) case(disp_dat) /七段译码 4h0:seg = 8hc0; /显示0 h1:hf9; /显示1 h2:ha4; /显示2 h3:hb0; /显示3 h4:h99; /显示4 h5:h92; /显示5 h6:h82; /显示6 h7:hf8; /显示7 h8:h80; /显示8 h9:h90; /显示9 ha:h88; /显示a hb:h83; /显示b hc:hc6; /显示c hd:ha1; /显示d he:h86; /显示e hf:h8e; /显示f 2) 顶层模块,文件名为traffic-top.v 本模块将traffic.v及tra
8、ffic-test.v进行封装。/* 交通灯控制器顶层程序 module traffic_top(clock,rst_n,seg,dig,lampa,lampb); /系统时钟(48MHz) /复位信号,低电平有效 /A方向红绿灯 /B文向红绿灯 /内部线网 wire clken;wire 7:/交通灯控制模块 traffic traffic( .clock(clock), .rst_n(rst_n), .clken(clken), .lampa(lampa), .lampb(lampb), .acount(acount), .bcount(bcount) );/显示模块 traffic_test traffic_test( .bcount(bcount), .seg(seg), .dig(dig) Endmodule二 仿真波形三 照片等文件四 方框图五 参考资料
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1