885191354基于CPLD的十字路口交通灯设计程序.doc

上传人:文库蛋蛋多 文档编号:4146242 上传时间:2023-04-07 格式:DOC 页数:9 大小:79KB
返回 下载 相关 举报
885191354基于CPLD的十字路口交通灯设计程序.doc_第1页
第1页 / 共9页
885191354基于CPLD的十字路口交通灯设计程序.doc_第2页
第2页 / 共9页
885191354基于CPLD的十字路口交通灯设计程序.doc_第3页
第3页 / 共9页
885191354基于CPLD的十字路口交通灯设计程序.doc_第4页
第4页 / 共9页
885191354基于CPLD的十字路口交通灯设计程序.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《885191354基于CPLD的十字路口交通灯设计程序.doc》由会员分享,可在线阅读,更多相关《885191354基于CPLD的十字路口交通灯设计程序.doc(9页珍藏版)》请在三一办公上搜索。

1、基于CPLD的十字路口交通灯设计说明:横向红灯纵向绿灯30秒;横向红灯纵向黄灯5秒;横向黄灯纵向红灯5秒;横向绿灯纵向红灯50秒(假设横向的车流量大,所以通行时间长);横向黄灯纵向红灯5秒;横向红灯纵向黄灯5秒。(循环上述步骤)。RTL视图:(四个模块一目了然)芯片:alter公司的MAX II 系列EPM240T100C5Verilog代码:(由于特权同学的键盘前两天被折腾了,有部分字母按键失灵,所以写程序的时候是软硬键盘一起使,郁闷的直接连注释都省了。)(顶层模块)module traffic(clk,rst,row,light_v,led,ledseg);input clk;input

2、rst;output3:0 row;/ NWSEoutput2:0 light_v;/red,yellow,greenoutput5:0 led;output7:0 ledseg;wire2:0 light0_reg,light1_reg;wire second;wire clk_50k;wire6:0 count;clk1000divclk1000div(.clk(clk),.rst(rst),.clk_50k(clk_50k);clkdivclkdiv(.clk(clk),.rst(rst),.second(second);lightlight(.rst(rst),.second(seco

3、nd),.light0_reg(light0_reg),.light1_reg(light1_reg),.count(count);light_dislight_dis(.clk(clk_50k),.rst(rst),.count(count),.light0_reg(light0_reg),.light1_reg(light1_reg),.row(row),.light_v(light_v),.led(led),.ledseg(ledseg);endmodule(该模块是1000分频产生50KHz信号,主要用于液晶或者交通灯的动态显示定时)module clk1000div(clk,rst,

4、clk_50k);input clk;input rst;output clk_50k;reg9:0 div;reg clk_50k;always (posedge clk) beginif(!rst) begindiv = 0;clk_50k = 0;endelse beginif(div=999) beginclk_50k = clk_50k;div = 0; endelse begin div = div+1; endendendendmodule(1Hz分频模块,用于交通灯的定时)module clkdiv(clk,rst,second);input clk;input rst;out

5、put second;reg27:0 num;reg second;always (posedge clk) beginif(!rst) beginnum = 0;second = 0;endelse beginnum = num+28d1;if(num=28h2faf080) beginsecond = second;num = 0;endendendendmodule(该模块主要用于计算倒计时数值和交通灯的排选)module light(rst,second,light0_reg,light1_reg,count);input rst;input second;output2:0 ligh

6、t0_reg,light1_reg;output6:0 count;reg6:0 count;reg6:0 state;reg2:0 light0_reg,light1_reg;always (posedge second) beginif(!rst) beginstate = 0;endelse beginif(state = 7d99) beginstate = 0;endelse beginstate = state+1; endendendalways (state) beginif(state30) begincount = 29-state;light0_reg = 3b001;l

7、ight1_reg 29 & state35) begincount = 34-state;light0_reg = 3b010;light1_reg 34 & state40) begincount = 39-state;light0_reg = 3b100;light1_reg 39 & state90) begincount = 89-state;light0_reg = 3b100;light1_reg 89 & state95) begin count = 94-state;light0_reg = 3b100;light1_reg 94 & state100) begin coun

8、t = 99-state;light0_reg = 3b010;light1_reg = 3b100;endendendmodule(该模块进行数码管倒计时显示和交通灯显示控制)module light_dis(clk,rst,count,light0_reg,light1_reg,row,light_v,led,ledseg);input clk;input rst;input6:0 count;input2:0 light0_reg,light1_reg;output5:0 led;output7:0 ledseg;output3:0 row;/ NWSEoutput2:0 light_v

9、;/ red,yellow,greenreg3:0 row;/ NWSEreg2:0 light_v;/ red,yellow,greenreg state;reg5:0 led;reg7:0 ledseg;reg7:0 ledreg1:0;reg7:0 led_shu9:0;always (posedge clk) beginif(!rst) beginstate = 0;led_shu0 = 8h3f;led_shu1 = 8h06;led_shu2 = 8h5b;led_shu3 = 8h4f;led_shu4 = 8h66;led_shu5 = 8h6d;led_shu6 = 8h7d

10、;led_shu7 = 8h07;led_shu8 = 8h7f;led_shu9 = 8h6f;endelse beginstate = state+1;if(count10) beginledreg0 = led_shucount; ledreg1 = led_shu0;endelse if(count20) beginledreg0 = led_shucount-10; ledreg1 = led_shu1;endelse if(count30) beginledreg0 = led_shucount-20; ledreg1 = led_shu2;endelse if(count40)

11、beginledreg0 = led_shucount-30; ledreg1 = led_shu3;endelse beginledreg0 = led_shucount-40; ledreg1 = led_shu4;endendendalways (state) begincase (state)0: beginrow = 4b0101;light_v = light0_reg;led = 6b111110;ledseg = ledreg1;end1: beginrow = 4b1010;light_v = light1_reg;led = 6b111101;ledseg = ledreg0;enddefault: ;endcaseendendmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号