基于Verilog - HDL的交通灯控制器设计- 副本 - 图文(3)

2019-03-16 20:04

第四章 设计总结

在设计中采用V erilog HDL语言设计交通灯控制系统, 借助其功能强大的语言结构, 简明的代码描述复杂控制逻辑设计, 与工艺无关特性, 在提高工作效率的同时达到求解目的, 并可以通过V erilog HDL 语言的综合工具进行相应硬件电路生成, 具有传统逻辑设计方法所无法比拟的优越性。

在设计过程中,觉得最难的部分是波形仿真部分,虽然程序编译通过但仿真出不了正确的波形,不是计数器无法正常计数,就是控制输出无法进入到下一个状态,每次出现问题就必须返回重新修改程序。实践证明,在编写一个较复杂的程序时,一开始一定要画流程图,弄清楚各个功能及实现它们的逻辑算法,做到心中有数后在开始下笔写编写程序。在编写的时候要尤其要注意语言的规范,如本次设计中编写的V erilog在Quartus7.0中可以正常生成时序图,而在低版本的软件中却无法生成,原因就是语言使用不规范,在解决这个问题时我总结了一些经验,首先程序要逻辑清晰,简洁明了,避免不必要的嵌套与条用,其次要适当地给程序加上注解文字,提高可读性,以方便之后的程序出错时进行查找,最后充分利用仿真软件提供的各项编译工具与报错消息,按图索骥,有方向的完成程序调试。

完成仿真后进行,进行试验箱上的硬件调试,该步骤主要是要求细心,按照引脚清单,逐一完成连线,本次设计用到两个时钟输入,注意一定要选择合适频率的时钟,以便达到期望的效果。注意观察实物的现象,看是否满足设计要求,不满足时检查是硬件问题还是程序问题,如果是程序问题,在修改完之后必须要重新编译,重新烧入。不断排查错误,直至达到满意的效果。

通过这次课程设计,熟悉了简单EDA设计的整个流程,加深了对Verilog HDL硬件描述语言的理解,提高了动手能力,并且锻炼了自己的耐心,收获颇丰,我会把在本次课程设计中学到的东西应用到今后的工作学习中。最后感谢同学及老师提供的帮助与指导。

10

程序清单

module traffic(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2); input en,clk,qclk,rst,hold,rst1; output st1,st2;

output[7:0] num1,num2; output[6:0]counter; output[2:0] light1,light2; reg tim1,tim2,st1,st2; reg[1:0]state1,state2,ste; reg[2:0]light1,light2; reg[3:0]num; reg[6:0]counter; reg[7:0] num1,num2;

reg[7:0] red1,red2,green1,green2,yellow1,yellow2;

always @(en ) if(!en)

begin //设置计数初值 green1<=8'b00110101; red1<=8'b00100101; yellow1<=8'b00000101; green2<=8'b00100101; red2<=8'b00110101; yellow2<=8'b00000101; end

always @(posedge clk ) begin

if(rst) //复位与特殊情况控制 begin

light1<=3'b001; num1<=green1; end else if(hold) begin

light1<=3'b100;

11

num1<=green1; end else if(en)

begin //使能有效开始控制计数 if(!tim1) //开始控制

begin //主干道交通灯点亮控制 tim1<=1; case(state1)

2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end 2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end 2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end 2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;end default:light1<=3'b100; endcase end else

begin //倒数计时 if(num1>0) if(num1[3:0]==0) begin

num1[3:0]<=4'b1001; num1[7:4]<=num1[7:4]-1; end

else num1[3:0]<=num1[3:0]-1; if(num1==1) tim1<=0; end end else begin

light1<=3'b010; num1=2'b00; tim1<=0; end end

always @(posedge clk ) begin

if(rst) //复位与特殊情况控制 begin

12

light2<=3'b100; num2<=red2; end else if(hold) begin

light2<=3'b100; num2<=red2; end else if(en) begin if(!tim2) begin tim2<=1; case(state1)

2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end 2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end 2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end 2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;end default:light2<=3'b100; endcase end else

begin //倒数计时 if(num2>0) if(num2[3:0]==0) begin

num2[3:0]<=4'b1001; num2[7:4]<=num2[7:4]-1; end

else num2[3:0]<=num2[3:0]-1; if(num2==1) tim2<=0; end end else begin tim2<=0; state2<=2'b00; light2<=3'b010;

13

end end

always @(posedge qclk) begin //数码管扫描 if(rst1) begin st1=0; st2=0; end else begin case({st2,st1})

2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01; end 2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10; end 2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11; end 2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00; end endcase end end

always @(posedge qclk) begin //数码管译码显示 case(num)

4'b0000: counter<=7'b0111111; //0 4'b0001: counter<=7'b0000110; //1 4'b0010: counter<=7'b1011011; //2 4'b0011: counter<=7'b1001111; //3 4'b0100: counter<=7'b1100110; //4 4'b0101: counter<=7'b1101101; //5 4'b0110: counter<=7'b1111101; //6 4'b0111: counter<=7'b0000111; //7 4'b1000: counter<=7'b1111111; //8 4'b1001: counter<=7'b1101111; //9 default: counter<=7'b0111111; //0 endcase end endmodule

14

参考资料

[1] 夏宇闻. 复杂数字电路与系统的V erilog HDL设计技术 [M ].北京: 北京航空航天大学出版社, 1998 [2] 郭梯云. 移动通信[M ]. 西安: 西安电子科技大学出版社, 1995

[3] [法]M ichelMouly, M arie Bernadet te Pautet1GSM 数字移动通信系统[M ]. 骆健霞, 顾龙信, 徐云霄译. 北京: 电子工业出版社, 1996

[4] 张毅刚, 乔立岩. 虚拟仪器软件开发环境L abW indow s?CV I 610 编程指南[M ]. 北京: 机械工业出版社, 2002

[5] 刘国权.GSM 手机的测试[J ].中国无线电管理, 2003

[6] 俞定玖, 刘湘慧. GSM 数字蜂窝移动交换系统测试[J ]. 电信科学, 2000 [7] 张明. V erilog HDL 实用教程[M ]. 成都: 电子科技大学出版社, 1999

[8] Hyde D C. Bucknell Handbook on V erilog HDL 1Computer Science Department, Bucknell U niversity L ew is burg, 1995

[9] 康华光. 电子技术基础(数字部分) [M ]. 北京: 高等教育出版社, 1988

15


基于Verilog - HDL的交通灯控制器设计- 副本 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:郑州大学现代远程教育《建筑施工组织》答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: