您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页东南大学自动化学院---《数字系统课程设计》-专业综合设计报告

东南大学自动化学院---《数字系统课程设计》-专业综合设计报告

来源:好走旅游网
东南大学自动化学院

《数字系统课程设计》 专业综合设计报告

姓 名: 学 号:

专 业: 自动化 实 验 室: 电工电子四楼 组 别: 无 同组人员: 无 设计时间: 2012年 8 月 8日 —— 2010 年 9 月 15 日 评定成绩: 审阅教师:

目 录

一.课程设计的目的与要求(含设计指标)……………………………………………3页码 二.原理设计(或基本原理)……………………………………………………………3页码 三. 架构设计(架构设计)………………………………………………………………4页码 四。 方案实现与测试(或调试)…………………………………………………………5页码 五.分析与总结……………………………………………………………………………15页码

一。 课程设计的目的与要求(含设计指标)

主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干道的优先权控制。

具体要求如下:

(1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。

(2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通

行。主干道最短通车时间为25s 。

(3) 当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行. (4) 不论主干道情况如何,乡村公路通车最长时间为16s。

(5) 在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。

(6)用开关代替传感器作为检测车辆是否到来的信号.用红、绿、黄三种颜色的发光二极管作交通灯。 要求显示时间,倒计时

- 1 -

二. 原理设计(或基本原理)

本设计用了Verilog HDL语言, TOP—DOWN设计,设计方法从系统设计入手,在顶层进行功能方框图的划分和结构设计。

具体过程如下:

该系统中输入变量有:set(使能开关),c(乡村道路开关), clk(系统时钟),该控制系统打开后共有两种状态: 一种是只有主干道交通灯亮,这种情况比较简单,此时主干道绿灯一直亮着。第二种是乡村道路开关打开,此时是主干道和乡村道路红灯和绿灯交替亮。

三.方案论证(架构设计)

交通灯控制器框图: 流程图如下:

四. 方案实现与测试(或调试)

1)顶层模块

外界输入:

两个开关:一个时能使能控制开关,一个乡村道路开关。使 能开关打开交通灯开始工作,乡村道路打开表 示乡村公路上有车。 输出:

四个数码管,两个显示主干道交通灯时间,两个显示乡村道路时间;六个led灯,两红两黄两绿分别表示主

干道和乡村公路的红黄绿灯。 运行过程:

1、开始时将时能开关打开表示交通灯开始工作。此时由于乡村道路开关是关着的,所以主干道保持绿灯亮。 2、然后将乡村公路开关打开,表示乡村公路上有车。此时主干道红灯立刻亮,5秒之后主干道黄灯变为红灯,乡村公路变为绿灯。经过15秒之后,乡村公路等变为黄灯,再过五秒变为红灯,此时主干道变为绿灯.25秒之后主干道等变为黄灯,再经过五秒变为红灯,此时乡村公路变为绿灯,如此循环

3、若乡村道路灯开关突然关闭,主干道交通灯理科变为绿灯,数码管倒记到0,并保持这种状态不变

顶层的block图

仿真结果:

2)设计中所有模块组成:

分频器:降低频率信号,用于获得适合的时钟信号. 主模块:控制各个状态的转换,算法的主要实现部分。

数码管显示模块:显示各种颜色的主干道和乡村道路灯的显示时间

具体实现过程如下:

1. 分频器 1)模块如下所示:

输入端为clk_in,clk_in为原频率的脉冲输入,clk_out得到想要的频率

2)源程序:

module fre(clk_in,clk_out);

- 2 -

input clk_in; output clk_out; reg clk_out; reg [24:0]cnter; always @(posedge clk_in) begin

if (cnter〈1000000) cnter=cnter+1; else cnter=0;

if(cnter==1000000) clk_out=’b1; else clk_out=’b0; end 2. 主程序模块 1)模块如下所示:

输入端为clk、c、set,其中当c为乡村道路开关,打开表示乡村道路有车,set表示使能控制开关,set打开交通灯开始工作。

输出端为mr、mg、my、cr、cg、cy表示主干道和乡村公路的红黄绿灯,与LED灯相连.另外mh、ml、ch、cl、与四个数码管相连,用来显示各种颜色的灯亮时间. 2)调试中出现的问题

在绿灯变为黄灯时,数码管理应显示五秒钟的时间,不过数码管并没有倒数五个数,而是五秒之后直接从5变为0,待解决 3)源程序:

module traffic(clk,c,set,mr,mg,my,cr,cg,cy,mh,ml,ch,cl); input clk,c,set;

output[3:0]mh,ml,ch,cl; output mr,mg,my,cr,cg,cy; reg mr,mg,my,cr,cg,cy; reg[3:0]mh,ml,ch,cl; reg state;

always@(posedge clk) begin if(set)

- 3 -

begin

if(state==0) //³õʼ»¯

begin state=1;

case({mr,mg,my,cr,cg,cy}) 6'b010100: if(c)

begin{mr,mg,my,cr,cg,cy}=6’b001100;ml=5;mh=0;cl=5;ch=0; end

else state=0; 6'b001100:

begin end

{mr,mg,my,cr,cg,cy}=6’b100010;ml=1;mh=2;cl=6;ch=1;

6’b100010:

begin{mr,mg,my,cr,cg,cy}=6'b100001;ml=5;mh=0;cl=5;ch=0; end

6’b100001:

begin{mr,mg,my,cr,cg,cy}=6'b010100;ml=5;mh=2;cl=0;ch=3; end

default:

begin{mr,mg,my,cr,cg,cy}=6'b010100;ml=5;mh=2;cl=0;ch=3; end

endcase

end else

if({mr,mg,my,cr,cg,cy}==6'b100010&&c==0) begin {mr,mg,my,cr,cg,cy}=6’b100001; end

- 4 -

ml=5;mh=0;cl=5;ch=0;

else

begin if({mh,ml}>=1)

begin if(ml==0) begin mh=mh-1;

ml=4’b1001;

end

else ml=ml—1; end

if({ch,cl}〉=1) begin

if(cl==0) begin ch=ch—1;

cl=4’b1001;

end

else cl=cl—1; end

if({mh,ml}==6&&{ch,cl}==1) begin

state=0; end

if({mh,ml}==1&&{ch,cl}==1) begin

state=0;

end

- 5 -

if({mh,ml}==1&&{ch,cl}==6) begin

mh=0;ml=0;ch=0;cl=0; state=0; end

end else begin

end

{mh,ml}=8’b00100101; {ch,cl}=8’b00110000;

{mr,mg,my,cr,cg,cy}=6'b010100; end end endmodule 3。数码管模块 1)模块如下所示:

数码管模块用来显示灯亮时间

2)调试中出现的问题及解决措施

一开始一个脉冲为10m,经过计算的大概40m要增加一毛,但是如此之后,当增加到2.4时,才行走了960m,

对顾客不公平,后来改用将其量程扩大的办法,然后通过分的进位获得角的增加,能够精确的定位价格。 3)源程序: 1、

module disp(clk,count,led); input clk;

input [3:0]count; output [7:0]led; reg [7:0]led;

always@(posedge clk) begin

case(count)

4'd0:led=8'b00000011; 4'd1:led=8’b10011111; 4’d2:led=8’b00100101;

- 6 -

4'd3:led=8'b00001101; 4'd4:led=8'b10011001; 4’d5:led=8’b01001001; 4’d6:led=8’b01000001; 4’d7:led=8’b00011111; 4’d8:led=8'b00000001; 4’d9:led=8'b00001001; default:led=8'bx; endcase end 2、

module disp(clk,count,led); input clk;

input [3:0]count; output [7:0]led; reg [7:0]led;

always@(posedge clk) begin

case(count)

4’d0:led=8’b00000011; 4'd1:led=8'b10011111; 4’d2:led=8'b00100101; 4'd3:led=8'b00001101; 4’d4:led=8’b10011001; 4’d5:led=8'b01001001; 4'd6:led=8'b01000001; 4’d7:led=8’b00011111; 4'd8:led=8’b00000001; 4’d9:led=8'b00001001; default:led=8’bx; endcase end

endmodule 3、

module disp(clk,count,led); input clk;

input [3:0]count; output [7:0]led; reg [7:0]led;

always@(posedge clk) begin

case(count)

4’d0:led=8'b00000011; 4'd1:led=8’b10011111;

- 7 -

4'd2:led=8'b00100101; 4’d3:led=8’b00001101; 4'd4:led=8'b10011001; 4’d5:led=8'b01001001; 4'd6:led=8’b01000001; 4’d7:led=8'b00011111; 4’d8:led=8’b00000001; 4'd9:led=8’b00001001; default:led=8'bx; endcase end

endmodule 4、

module disp(clk,count,led); input clk;

input [3:0]count; output [7:0]led; reg [7:0]led;

always@(posedge clk) begin

case(count)

4’d0:led=8’b00000011; 4'd1:led=8’b10011111; 4'd2:led=8'b00100101; 4'd3:led=8’b00001101; 4’d4:led=8'b10011001; 4'd5:led=8’b01001001; 4’d6:led=8'b01000001; 4'd7:led=8'b00011111; 4’d8:led=8'b00000001; 4’d9:led=8'b00001001; default:led=8'bx; endcase end

endmodule

五.分析与总结 1、方案的特点

该方案能够基本实现交通灯要求的所有功能,并且各个模块较为简洁,通过一个的主要模块的控制,使各个状态的转换清晰明了。

2、方案问题及有待改进的措施

方案存在着一些缺陷,在变为黄灯时数码管并没有倒数五个数,而是经历五秒之后直接从5变为0,这方面的设计有问题,有待改进

- 8 -

3、心得体会

经过此次的设计的过程让我比较深刻地了解到了Verilog HDL语言设计数字系统的过程。掌握了用状态计设计数字系统的方法,我的心得如下:

1、 在设计过程中我了解到设计最重要的是先把总体结构设计好,再逐步细化到小模块. 2、 对于每一个模块重点是要搞清楚其输入输出,以及要实现的功能。 3、 开始编程时,要特别注意一些小细节的地方,在编程过程中逐步改进. 参考书目:

[1] 夏宇闻,《Verilog 数字系统设计教程》,北京,北京航空航天大学出版社,2003年 [2] 黄正瑾. 在系统编程技术及其应用。东南大学出版社,1997

- 9 -

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务