《数字电子技术课程设计》任务书.docx

上传人:b****5 文档编号:12147973 上传时间:2023-04-17 格式:DOCX 页数:24 大小:318.22KB
下载 相关 举报
《数字电子技术课程设计》任务书.docx_第1页
第1页 / 共24页
《数字电子技术课程设计》任务书.docx_第2页
第2页 / 共24页
《数字电子技术课程设计》任务书.docx_第3页
第3页 / 共24页
《数字电子技术课程设计》任务书.docx_第4页
第4页 / 共24页
《数字电子技术课程设计》任务书.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

《数字电子技术课程设计》任务书.docx

《《数字电子技术课程设计》任务书.docx》由会员分享,可在线阅读,更多相关《《数字电子技术课程设计》任务书.docx(24页珍藏版)》请在冰豆网上搜索。

《数字电子技术课程设计》任务书.docx

《数字电子技术课程设计》任务书

2011—2012学年第二学期

《数字电子技术课程设计》任务书

(适用专业:

电气10级)

 

 

数字电子技术课程设计题目:

交通灯控制电路设计

一、设计任务及原理:

交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。

要完成本实验,首先必须了解交通路灯的燃灭规律。

本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。

依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。

其交通灯的燃灭规律为:

初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。

闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。

闪烁若干次后,再切换到东西路口方向,重复上述过程。

在实验中使用4个七段码管中的任意一个或两个数码管显示时间。

东西路和南北路的通车时间均设定为9s。

数码管的时间总是显示为9、8、7……2、1、0、9、8……。

在显示时间小于等于3秒的时候,通车方向的黄灯闪烁。

在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。

二、具体要求:

本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意一个或两个来显示。

系统时钟选择时钟模块的50MHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于等于3秒的时候,通车方向的黄灯以2Hz的频率闪烁。

在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。

显示方式:

1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。

实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。

交通灯模块原理与LED灯模块的电路原理一致,当有高电平输入时LED灯就会被点亮,反之不亮。

只是LED发出的光有颜色之分。

其与FPGA的管脚连接如下表所示:

 

EDA/SOPC开发平台

交通信号灯模块

R1

D3

R2

E3

Y1

D4

Y2

E4

G1

D5

G2

F3

信号名称

EP2C35IO接脚

信号名称

EP2C35IO接脚

EDA/SOPC开发平台

16*16点阵显示模块

C0

P19

R0

L8

C1

P4

R1

J4

C2

R6

R2

H6

C3

R7

R3

H5

C4

R8

R4

H4

C5

J3

R5

H3

C6

W18

R6

G7

C7

R11

R7

G6

C8

U10

R8

P6

C9

U9

R9

P5

C10

U8

R10

P3

C11

R16

R11

N6

C12

R15

R12

N4

C13

R14

R13

N3

C14

J6

R14

M6

C15

R4

R15

M5

CLK

L1

系统时钟输入端口,50MHz

7SEG-DISPLAY

DS1

DS2

DS3

DS4

A

N4

A

B7

A

H4

A

D11

B

N3

B

C14

B

H3

B

G5

C

M6

C

A7

C

G7

C

G3

D

N6

D

D4

D

H6

D

B6

E

P3

E

D5

E

H5

E

C13

F

P6

F

E3

F

L8

F

D14

G

P5

G

E4

G

J4

G

A6

H

M5

H

D3

H

G6

H

F4

 

三、输入输出资源说明:

1、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。

2、输出1组显示译码信号(每组7个输出端),接到外部的两个七段数码管上,显示倒计时;(扩展要求)或输出2组显示译码信号(每组7个输出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示30秒倒计时的十位和个位。

3、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。

(输出高电平时,对应的LED灯亮)

其具体框图如下:

图1交通灯控制电路结构框图

根据如上说明,本设计的主要任务和设计要求是:

1、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。

2、在NuartusⅡ的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。

分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。

最后对顶层设计进行功能仿真。

3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。

观察实验结果是否与自己的编程思想一致。

四、交通灯设计步骤:

由以上的要求可知,在设计的过程中会需要多个器件来整合以达到实验所需的目的。

在本次试验中由分析可知共需要1hz分频器,4hz分频器,1000hz分频器,东西红灯控制器,东西黄灯控制器,东西绿灯控制器,南北红灯控制器,南北黄灯控制器,南北绿灯控制器,计数器,译码器,名字控制器,学号控制器,名字学号输出显示器共14个需要设计的器件。

1、其中各分频器的原程序如下:

由于在仿真波形时所分频太小不易观察所分得的波形,故此以50分频一次为例作为介绍:

modulefenpinni(cp,cout);

inputcp;

reg[31:

0]n;

regcout=0;

outputcout;

always@(posedgecp)

begin

if(n<32'd25)

begin

cout=cout;

n=n+1;

end

else

begin

n=32'd0;

cout=~cout;

end

end

endmodule

这样所得到的波形图如下所示:

由图像可知:

在第26个上升沿输出波形开始变为1,在第50个又下降为0,所以该程序及波形都是正确的。

以此类推:

(1)1hz的原程序为:

modulefenpinni1(cp,cout);

inputcp;

reg[31:

0]n;

regcout=0;

outputcout;

always@(posedgecp)

begin

if(n<32'd25000000)

begin

cout=cout;

n=n+1;

end

else

begin

n=32'd0;

cout=~cout;

end

end

endmodule

经过编译及波形仿真后是正确的,然后再经过元件例化得到如下所示的器件:

(2)4hz的原程序为:

modulefenpinni4(cp,cout);

inputcp;

reg[31:

0]n;

regcout=0;

outputcout;

always@(posedgecp)

begin

if(n<32'd6250000)

begin

cout=cout;

n=n+1;

end

else

begin

n=32'd0;

cout=~cout;

end

end

endmodule

经过编译及波形仿真及元件例化后得到的器件为:

(3)1000hz的原程序为:

modulefenpinni1000(cp,cout);

inputcp;

reg[31:

0]n;

regcout=0;

outputcout;

always@(posedgecp)

begin

if(n<32'd25000)

begin

cout=cout;

n=n+1;

end

else

begin

n=32'd0;

cout=~cout;

end

end

endmodule

经过编译及波形仿真及元件例化后得到的器件为:

其中这三个分频器的cp端均接到50Mhz的脉冲信号时钟源上。

2、红黄绿灯的设计:

本次试验中共有东西、南北红黄绿灯,因为在设计的时候把各模块分开来设计的所以会有东西红灯控制器,东西黄灯控制器,东西绿灯控制器,南北红灯控制器,南北黄灯控制器,南北绿灯控制器共六个,且它们的输入频率红绿灯为1hz,黄灯为4hz。

它们的设计如下:

(1)东西红灯控制器的原程序:

moduledxhongdeng(cp,cout);

regcout;

inputcp;

reg[4:

0]n;

outputcout;

always@(posedgecp)

begin

if(n>19)

n=0;

if(n<10)

cout=0;

else

cout=1;

n<=(n+1);

end

endmodule

由于在设计的过程中以二十秒为一个循环,而且以东西方向亮绿灯南北方向亮红灯为开始设计的,所以东西方向的红灯程序在第十秒之后再开始亮。

经过其编译仿真之后得到如下的波形图:

由波形图可知,在第11个上升沿开始东西红灯控制器的输出为1,第21个上升沿开始输出为0,以此循环。

所以经过编译及波形仿真及元件例化后得到的器件为:

(2)东西绿灯控制器的原程序

moduledxlvdeng(cp,cout);

outputcout;

reg[5:

0]n;

inputcp;

regcout;

always@(posedgecp)

begin

if(n>19)

n=0;

if(n<=6)

cout=1;

else

cout=0;

n<=(n+1);

end

endmodule

绿灯的设计也是以20秒为一个循环,但是实在前7秒亮的,经编译及仿真之后得到的波形图像为:

有图像可知绿灯在20秒的循环内只有在前7个上升沿之中才亮。

经编译及波形仿真及元件例化后得到的器件为:

(3)南北红灯控制器原程序

modulenbhongdeng(cp,cout);

regcout;

inputcp;

reg[4:

0]n;

outputcout;

always@(posedgecp)

begin

if(n>19)

n=0;

if(n<10)

cout=1;

else

cout=0;

n<=(n+1);

end

endmodule

原理如上只是南北红灯在前十秒钟亮;经编译及仿真之后得到的波形图像为:

由图像可知在20秒循环内只有前10个上升沿才会使得输出为1;

经编译及波形仿真及元件例化后得到的器件为:

(4)南北绿灯控制器的程序为

modulenblvdeng(cp,cout);

outputcout;

reg[5:

0]n;

inputcp;

regcout;

always@(posedgecp)

begin

if(n>19)

n=0;

if((n<=16)&&(n>9))

cout=1;

else

cout=0;

n<=(n+1);

end

endmodule

原理如上,在20秒的循环内只有在第11~16秒内才会亮;所以经编译及仿真之后的波形图像为:

由图像可知在20秒的循环内只有在第11~16个上升沿之中南北绿灯控制器的输出才为1;

经编译及波形仿真及元件例化后得到的器件为:

(5)东西黄灯控制器的原程序为

moduledxhuangdeng(cp,cout);

regcout;

inputcp;

reg[6:

0]n;

outputcout;

always@(posedgecp)

begin

if(n>79)

n=7'd0;

else

begin

if((n<=28)&&(n>39))

cout=0;

else

cout=~cout;

n=n+7'd1;

end

end

endmodule

由于黄灯在亮的过程之中需要在1秒之中亮两次,所以需要接入4hz的脉冲才可以;原程序经过编译及仿真之后得到的波形图像为:

有图像可知,在20秒的循环之中,只有在第28~39即8~10秒时的上升沿之中,才会有6个输出为一的的脉冲波形。

经编译及波形仿真及元件例化后得到的器件为:

(6)南北黄灯控制器原程序为:

modulenbhuangdeng(cp,cout);

regcout;

inputcp;

reg[6:

0]n;

outputcout;

always@(posedgecp)

begin

if(n>79)

n=7'd0;

else

if(n<=7'd67)

cout=0;

else

cout=~cout;

n=n+7'd1;

end

endmoduleendmodule

原理如上;经编译及仿真之后的波形图像为:

有图像可知,在20秒的循环之中,只有在第68~79即17~19秒时的上升沿之中,才会有6个输出为一的的脉冲波形。

经编译及波形仿真及元件例化后得到的器件为:

3、姓名和学号控制器的设计:

(1)名字控制器的原程序为:

modulemingzikzn(cp,cout);

reg[1:

0]cout;

inputcp;

output[1:

0]cout;

always@(posedgecp)

begin

if(cout>=2'd3)

cout=2'd0;

else

cout=coutut+2'd1;

end

endmodule

名字的学号控制器的输入频率为1hz,经编译及仿真之后得到的波形图像为:

由图像可知,在脉冲输入时,输出的分别为0、1、2、3即,可以用作名字输出的控制端。

经编译及波形仿真及元件例化后得到的器件为:

(2)学号控制器的原程序为:

modulexuehaokzn(cp,cout);

reg[2:

0]cout;

inputcp;

output[2:

0]cout;

always@(posedgecp)

begin

if(cout>3'd6)

cout=3'd0;

else

cout=cout+3'd1;

end

endmodule

经编译及仿真之后得到的波形图像为:

由图像可知,在脉冲输入时,输出的分别为0~7即,可以用作学号输出的控制端。

经编译及波形仿真及元件例化后得到的器件为:

4、十进制减法计数器的原程序为:

modulejishuqi(cp,n);

inputcp;

output[3:

0]n;

reg[3:

0]n;

always@(posedgecp)

begin

if(n==6'b0000)

n=6'b1001;

else

n<=n-1;

end

endmodule

经编译及仿真之后得到的波形如图:

由图像可知,在脉冲输入的每个上升沿时,依次输出了9~0共十个数字,可见该计数器的设计是正确的。

经编译及波形仿真及元件例化后得到的器件为:

5、译码器的原程序为:

moduleyimani(d,i);

output[6:

0]d;

input[3:

0]i;

reg[6:

0]d;

always@(i)

begin

case(i)

4'd0:

d=7'b0000001;

4'd1:

d=7'b1001111;

4'd2:

d=7'b0010010;

4'd3:

d=7'b0000110;

4'd4:

d=7'b1001100;

4'd5:

d=7'b0100100;

4'd6:

d=7'b0100000;

4'd7:

d=7'b0001111;

4'd8:

d=7'b0000000;

4'd9:

d=7'b0000100;

default:

d=7'b1111111;

endcase

end

endmodule

经编译及仿真之后得到的波形如图:

由图像可知,在输入不同的数值时,共阳极的输出端d分别对应着不同的输出值,经过对比可知,该输出与所需的输出是一致的,故该程序的设计是正确的。

经编译及波形仿真及元件例化后得到的器件为:

6.名字、学号的显示器的原程序为:

经编译及仿真之后得到的波形如图:

由图像可知,在行输出中输出了学号及名字等编码,在列输出中每个频率内只输出了一个1,而且是依次变化的。

经编译及波形仿真及元件例化后得到的器件为:

经过对上述模块的编译,仿真及元件例化之后,再新建一个blockdiagram文件,分别选出刚例化的元件,并用导线对每个元件进行连接,在加入适当的输入输出端

最后得到该实验的电路图,如下图所示:

然后再对该程序置顶,进行编译,观察有没有错误。

经检查发现没有错误之后,在进行管脚的绑定。

首先,打开assignments中的assignmentseditor,然后再选择输入输出,并将输入输出设置为location。

然后再根据老师所给定的管脚的地址进行绑定,最终得到的绑定的图像如下图所示:

经过一些列的操作之后,再把所建立文件夹中后缀为sof的文件进行下载实验,最终得到实验的结果,实验最终得到成功。

五、总结与讨论。

经过五天的编程、仿真、调试使得我们在本次的实习当中学到了很多的东西。

从分频器的编程到各种控制球的编程,然后到计数器及译码器的编程,最后到显示器的编程,其中间自己遇到了很多的问题与不解,从中我经常问旁边的同学,而且还向老师请教,并且还在图书馆中查阅了一部分资料,从这中间得到了一些很有价值的信息。

自此先向老师及同学们表示一下感谢,谢谢你们对我的帮助。

也是由于曾经做过关于数电上机的实验,自己也在做那些实验的期间来机房做过,故对软件的操作还是比较熟练的。

在最后的图像连线机器管脚的编码的过程中没有遇到太大的问题,实验的最后阶段还是比较成功的。

但是在最后的下载试验时遇到的问题还是比较多的。

在第四天的下午,我曾到前边做过两次,但都遇到了失败,没有成功。

首先是译码器的数字输出是完全不正确的;然后是字幕的输出也是不正确的,字幕输出的姓名、学号都是反着的。

由于在晚上试验箱在我们的办理的同学那,所以晚上在机房里我有进行了大约5、6次下载试验,并逐渐的后进行调试,逐渐找到了原因并进行了改正。

原来是译码器的管脚绑定顺序反了使得输出的数字是不正确的,并且我对行输出及列输出的管脚的地址也进行了反绑,使得原来反着的数字和名字都可以睁着输出了。

总之,通过这5天的实习,使我对模电这门课程有了更多的了解。

明白了原来我们的生活中的很多东西是与我们所学习的这门课程有关系的。

使我更加深了对这门课程的喜爱的了解的愿望。

希望在以后的学习和生活中发现更多,了解更多。

最后,谢谢老师们5天以来一直陪伴着我们,给与我们建议与指导。

老师辛苦了,谢谢您!

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

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1