数字逻辑电路和PLD设计Word格式文档下载.docx

上传人:b****6 文档编号:18937267 上传时间:2023-01-02 格式:DOCX 页数:20 大小:212.15KB
下载 相关 举报
数字逻辑电路和PLD设计Word格式文档下载.docx_第1页
第1页 / 共20页
数字逻辑电路和PLD设计Word格式文档下载.docx_第2页
第2页 / 共20页
数字逻辑电路和PLD设计Word格式文档下载.docx_第3页
第3页 / 共20页
数字逻辑电路和PLD设计Word格式文档下载.docx_第4页
第4页 / 共20页
数字逻辑电路和PLD设计Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

数字逻辑电路和PLD设计Word格式文档下载.docx

《数字逻辑电路和PLD设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字逻辑电路和PLD设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

数字逻辑电路和PLD设计Word格式文档下载.docx

3)设计相应减法器的BCD码七段显示模块

4)设计总体状态转换器,完成各输入文件,并产生各模块后,再用原理图输入方式产生总图。

四、设计流程图

红绿灯交通管理器控制甲、乙两道的红、黄、绿三色灯,指挥车辆和行人安全。

交通管理器示意图如下图

(1)所示。

(1)中三个计时器分别确定甲道和乙道通行时间t3、t1以及公共的停车(黄灯燃亮)时间t2。

C1、C2和C3分别是3个定时器工作信号,即当C1、C2或C3为1时,相应的定时器计数。

W1、W2和W3为计数器的指示信号,计数器在计数过程中,相应的指示信号为0,

计数结束时为1。

交通管理器工作流程图如下图:

五、实验内容

1、秒加法计数器设计

1.1设计一个30秒加法计数器

使计数器由“0000~11101”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转为“1”时,表示计满。

设30秒加法计数器的源程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycount30is

port(

en:

instd_logic;

clk:

dout:

outstd_logic_vector(4downto0);

c:

outstd_logic);

endcount30;

architecturebehavioralofcount30is

signalcount:

std_logic_vector(4downto0):

="

00000"

;

begin

dout<

=count;

process(clk,en)

begin

ifen='

0'

then

count<

c<

='

elsifen='

1'

ifrising_edge(clk)then

Ifcount="

11101"

else

=count+1;

endif;

endprocess;

endbehavioral;

对该计数器程序生成模块并进行编译

对编译结果进行仿真,仿真波形如下图:

1.2设计一个26秒加法计数器

使计数器由“0000~11001”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转为“1”时,表示计满。

26秒加法计数器的源程序:

libraryieee;

entitycount26is

port(en:

endcount26;

architecturebehavioralofcount26is

signalcount:

ifcount="

11001"

对该计数器程序生成模块并进行编译:

1.3设计一个5秒加法计数器

使计数器由“000~100”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转为“1”时,表示计满。

5秒加法计数器的源程序:

entitycount05is

outstd_logic_vector(2downto0);

endcount05;

architecturebehavioralofcount05is

std_logic_vector(2downto0):

000"

100"

2、秒减法计数器设计

2.1设计一个30秒减法计数器

当加法计数器计数时,整个减法器同时做倒计时,状态从“30~1”

30秒减法器的源程序:

entityde30is

port(clk,ld,en,reset:

qh:

outstd_logic_vector(3downto0);

ql:

outstd_logic_vector(3downto0));

endde30;

architecturebehavioralofde30is

signalmh,ml:

std_logic_vector(3downto0);

process(clk,ld)

if(ld='

orreset='

)then

mh<

0011"

ml<

0000"

elsif(clk'

eventandclk='

if(en='

if(ml<

0001"

ANDmh<

thenml<

elsif(ml=0)then

1001"

if(mh=0)then

elsemh<

=mh-1;

elseml<

=ml-1;

endif;

qh<

=mh;

ql<

=ml;

对该减法器程序生成模块并进行编译

2.2设计一个26秒减法计数器

当加法计数器计数时,整个减法器同时做倒计时,状态从“26~1”

26秒减法器的源程序:

useieee.std_logic_arith.all;

entityde26is

port(clk,ld,en,reset:

endde26;

architecturebehavioralofde26is

signalmh,ml:

process(clk,reset)

0010"

0110"

andmh<

elseif(ml=0)then

endprocess;

2.3设计一个5秒减法计数器

当加法计数器计数时,整个减法器同时做倒计时,状态从“5~1”

5秒减法器的源程序:

entityde5is

q:

endde5;

architecturebehavioralofde5is

signalm:

m<

0101"

if(m="

thenm<

elsem<

=m-1;

q<

=m;

3、交通控制器设计

W1、W2、W3分别为30秒(红灯),5秒(黄灯)和26秒(绿灯)计数进位信号,RESET为控制清零的信号。

时钟信号以1秒为一周期。

g2,y2,r2分别为甲方向的红、黄、绿灯始能信号,g1,y1,r1分别为乙方向各信号灯的始能信号。

交通控制器的源程序:

entitytrafficcontrolis

port(

c1,c2,c3:

outstd_logic;

w1,w2,w3:

r1,r2:

y1,y2:

g1,g2:

reset:

instd_logic);

endtrafficcontrol;

architectureaoftrafficcontrolis

typestate_spaceis(s0,s1,s2,s3);

signalstate:

state_space;

process(clk)

ifreset='

then

state<

=s0;

elsif(clk'

)then

casestateis

whens0=>

ifw1='

=s1;

whens1=>

ifw2='

=s2;

whens2=>

ifw3='

=s3;

whens3=>

endcase;

c1<

whenstate=s0else'

c2<

whenstate=s1orstate=s3else'

c3<

whenstate=s2else'

r1<

whenstate=s1orstate=s0else'

y1<

whenstate=s3else'

g1<

r2<

whenstate=s2orstate=s3else'

y2<

whenstate=s1else'

g2<

enda;

对该交通控制器程序生成模块并编译

4、设计BCD2LED七段显示器

七段显示器在这里主要是用于各减法计数器的倒计时显示,输入信号各为减法计数器的BCD码输入。

通过显示器内部转换最后以数字形式显示。

BCD2LED七段显示器源程序:

entitybcd2ledis

port(a3,a2,a1,a0:

a,b,c,d,e,f,g:

endbcd2led;

architecturestructuralofbcd2ledis

signalbcd:

signalled:

std_logic_vector(6downto0);

bcd<

=a3&

a2&

a1&

a0;

process(bcd)

casebcdis

when"

=>

led<

1111110"

1100000"

1011011"

1110011"

0100"

1100101"

0110111"

0111111"

0111"

1100010"

1000"

1111111"

1110111"

whenothers=>

0000000"

a<

=led(6);

b<

=led(5);

=led(4);

d<

=led(3);

e<

=led

(2);

f<

=led

(1);

g<

=led(0);

endstructural;

将个该程序生成模块并编译

六、总的原理图和仿真波形

交通灯总体设计

将各个模块连接起来,构成完整的红绿灯管理器。

原理图中的de05,de26,de30分别为5秒,26秒,30秒减法计数器,count05,count26和count30分别为加法计数器。

Trafficcontrol为交通灯控制器。

图中的clk为总的时钟输入信号,reset分别作为各减法计数器的初始置数信号和控制器的清零信号。

减法计数器qh输出信号表示高位输出信号,ql表示低位输出信号。

总体输入信号为clk和reset,输出信号为各减法计数器的BCD码输出信号。

设计总原理图:

交通灯管理器总体仿真:

七、学习小结

两天数字逻辑电路和PLD设计学习生活很快就结束了,但是就是这短暂的两天却让我学到了很多。

在学习此课程之前,听说还是运用QuartusⅡ软件,鉴于我学习过CPLD实验,所以我是自信满满的,但是在听完老师的要求之后,我就明白其实这次任务还是很艰巨的,因为此次完全要我们自己独立设计出一个交通红绿灯控制器。

经过努力,我终于自己设计完成了一个十字路交通管理器,更加熟练使用了QuartusⅡ可编程逻辑器件开发软件,并且巩固了上学期在课堂上学到的关于VHDL语言的编程语言的课程。

虽然上个学期学过VHDL语言描述数字电路,但是当时仅仅只是自己编程,并没有给我们这样一个实验平台,让我们看到自己编的程序,可以生成自己想要的效果。

QuartusⅡ软件界面易懂,输入方式灵活多样,是一个十分常用的软件,而这次课程设计锻炼了我对这个软件的熟练程度,也已经为今后进行更复杂的设计打下了扎实的基础。

这次的学习中,我遇到了很多小问题,但是通过同学们的帮助与自身的努力,我开始慢慢的找到了编程思路以及编程中要注意的一些小细节,增强了我的自信心、丰富了我的知识。

两天的课程设计,我学会了怎么将自己所学的知识整合的到实际运用当中,加深了我对相关知识的理解和掌握。

对数电所学知识的实际运用有了进一步的了解,特别是深入的学习了VHDL语言。

这次的实践课程虽然已经结束,但对这个软件的学习以及对VHDL语言的学习并没有结束,我会在以后的学习中抓住机会加深对它们的理解,做到真正掌握这些技术。

总之,每一次的实践课实习学习都是在给我们将来积累经验,锻炼了自主学习,独立思考,综合运用所学知识的能力,我们应该学会如何整理自己所学的知识为现实生活服务,同时开发了我们锻炼思维创新能力克服困难的决心。

2010-7-6

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

当前位置:首页 > 自然科学

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

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