《现代数字系统设计》课程论文Word文档格式.docx

上传人:b****6 文档编号:20171001 上传时间:2023-01-17 格式:DOCX 页数:16 大小:297.27KB
下载 相关 举报
《现代数字系统设计》课程论文Word文档格式.docx_第1页
第1页 / 共16页
《现代数字系统设计》课程论文Word文档格式.docx_第2页
第2页 / 共16页
《现代数字系统设计》课程论文Word文档格式.docx_第3页
第3页 / 共16页
《现代数字系统设计》课程论文Word文档格式.docx_第4页
第4页 / 共16页
《现代数字系统设计》课程论文Word文档格式.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

《现代数字系统设计》课程论文Word文档格式.docx

《《现代数字系统设计》课程论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《《现代数字系统设计》课程论文Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。

《现代数字系统设计》课程论文Word文档格式.docx

如果每个方向的灯是独立变化的,那么交通灯就没有了意义。

2.2主控模块

2.2.1FPGA芯片

FPGA采用了LCA这样一个概念,内部包括可配置逻辑模块CLB、输入输出模块IOB和内部连线三个部分。

本设计采用Altera公司ACEX1KEP1K10TC100-3芯片,具有低内核电压、低功耗的特点。

芯片内门电路高达一万门,内部使用RAM作电路结构,速度高达几百MHZ,其输出可用管脚已全部开放,位于芯片的四周,用户可以根据自己的要求和芯片本身的功能自己任意定义管脚。

同时为了体现实验箱的可扩展性,在芯片的两边各有一个34脚的IDE插口,可以通过数据排线与其它应用模块相连接。

2.2.2.控制类模块

交通灯:

由12个红黄绿灯按交通灯方式排列的交通灯模块,可做交通灯或舞台灯光实验。

其工作原理与LED灯相似。

2.2.3.显示类模块

8位7段数码管:

采用2个进口共阴的7段数码管组成,其连接管脚位选信号在数码管的左边由连接孔SEL0、SEL1、SEL2与其它模块连接。

数码管采用动态扫描显示,位选信号SEL0、SEL1、SEL2经3-8译码后选择一位数码管,段选信号为A、B、C、D、E、F、G、DP。

其输入由位于其下方的8位连接孔与其它模块连接,可以模拟二进制数据输出。

2.2.4.输入类模块

在这个模块中采用的是两个时钟源,一个是24M的高频时钟;

一个是32768HZ能完成二次分频的时钟。

时钟输出通过其上方的四组跳线改变其频率的输出,每一组频率相对独立。

其频率值在电路板上均已标明。

用户也可以通过软件的方式来实现分频。

每一组的频率输出端位于其上方对应的CLK1、CLK2、CLK3、CLK4连接孔。

3.系统软件设计

3.1软件整体设计

3.1.1交通灯控制系统原理图

3.1.2交通灯控制系统框图

3.2控制模块

3.2.1状态机与倒计时

状态机

用两个进程分别控制两个方向的灯,引入有限状态机控制交通灯的状态转化,即由绿灯到黄灯然后到左拐灯再回到黄灯最后到红灯。

复位时红灯全亮。

交通灯状态图如下:

在正常情况下的一个完整周期内,交通灯控制器系统一共有四种状态,分

别为S0、S1、S2、S3。

其运行方式从S0——S1——S2——S3——S4,S结束后回到S0状态。

各个状态具体的运行方式如下:

S0:

自南向北方向绿灯亮,自东向西方向红灯亮。

此时允许自南向北方向车辆通行,禁止自东向西方向车辆通行。

S1:

自南向北方向黄灯亮,自东向西方向红灯亮。

此时提醒自南向北方向车辆准备停车,禁止自东向西方向车辆通行。

S2:

自南向北方向左拐灯亮,自东向西方向红灯亮。

此时自南向北方向车辆允许左拐,禁止自东向西方向车辆通行。

S3:

自南向北方向黄灯亮,自东向西方向红灯亮。

S4:

自南向北方向红灯亮,自东向西方向绿灯亮。

此时禁止自南向北方向车辆通行,此时允许自东向西方向车辆通行。

倒计时

用两个减法计数器实现倒计时,当某个状态的剩余时间减到零时则切换状态。

3.2.2控制模块RTL图与流程图

控制模块RTL图

CLK连接1Hz时钟,EN接高电平时使能,系统正常工作,接低电平时系统不能正常工作,红灯全为亮。

LAMPA0、LAMPA1、LAMPA2、LAMPA3分别控制自南向北方向的左拐、绿、黄和红灯,LAMPB0、LAMPB1、LAMPB2、LAMPB3分别控制自东向西方向的左拐、绿、黄和红灯。

ACOUNT用于自南向北方向的时间显示,驱动两个数码管。

BCOUNT用于自东向西方向的时间显示,驱动两个数码管。

控制模块流程图:

3.3显示模块

3.3.1位选扫描模块

数码管扫描时钟接clk为1KHz。

输出out与数码管的位选信号SEL0、SEL1相连,接至FPGA芯片。

每来一个时钟脉冲,做一次相应输出,频率为1KHz达到动态扫描。

位选扫描模块流程图:

3.3.2段选扫描模块

数码管的位选信号SEL0、SEL1分别连接FPGA芯片。

十六位数据经数据总线输入到段选扫描模块,十六位数据分为四段,通过sel选择相应段来输出。

段选扫描模块流程图如下:

3.3.3显示译码模块

输出为数码管的段选信号,其段选信号A、B、C、D、E、F、G、DP分别连接FPGA芯片。

根据相应的输入,输出相应的信号。

例如:

假设输入为1001,则相应输出所对应的段选信号为11110110。

需要注明的是,这里采用的是共阴极数码管。

显示译码模块流程图

3.4顶层文件设计

交通灯控制系统的顶层文件是一个原理图文件,首先用Verilog语言编写好所需的四个模块后,编译正确后保存,生成相应的可视化元件后,然后新建一个原理图文件,插入所生成的可视化元件它包含有四个元件,其实每个元件均由一个模块生成。

四个元件分别为:

位选扫描模块、段选扫描模块、显示译码模块、控制模块。

然后将各元件用具有电气性质的导线连接好,保存编译。

4.系统测试与总结

4.1系统测试

建立一个vwf波形文件,将所需管脚加到波形文件中,设置相应的输值,保存并仿真,观察输出数据。

实验证明仿真结果正确。

也因此证明设置的该系统能按预期的设计进行工作,达到预期结果。

仿真波形图:

4.2设计体会

通过这次课程论文设计,我进一步加深了对EDA(电子设计自动化)的了解。

并进一步熟练了对QuartusII软件的操作。

在做本次设计论文的过程中,遇到了很多问题,使我发现自己学习上存在的不足。

并加深了对交通灯原理和设计思路的了解。

同时也掌握了做课程论文的一般流程,为以后的设计积累了一定的经验。

做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。

最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。

本设计采用VHDL硬件描述语言文本输入方式和顶层文件设计两种方式,在确立总体预期实现功能的前提下,分层次进行描述,其中所用到的数据均可依现场情况而设置,修改方便灵活。

两种方式各有侧重,一种直观,一种则需要我们对语言有一定了解。

二者的结合体现了基于FPGA技术和VHDL语言进行数字系统设计的优越性和广阔前景。

城市交通情况较为复杂,所以在设计十字路口交通灯时考虑了左拐弯的功能。

并设计实现了此功能。

数字化时代的到来给人们的生活带来了极大的改变,有理由相信随着数字化的深入,交通灯控制器的功能将日趋完善。

而且,VHDL语言对EDA产生的影响也是深远的,它缩短了电子产品的设计周期,为设计者提供了方便。

总之,通过这次的设计,我进一步了解了EDA技术,收获很大,对软件编程、排错调试等方面得到了提高。

另外,我也意识到,不管做什么事,我们都需要耐心、踏实、勤奋、严谨的处事态度。

更重要的是,学习上,我们必须从理论应用到实践,再从实践中验证理论,只有这样我们才能真正学会、学透并应用我们所学的知识,真正做到理论与实践相结合。

附录

控制模块源程序代码:

/*信号定义

CLK同步时钟

EN使能信号

LAMPA0~3分别控制A方向的左拐、绿、黄和红灯

LAMPB0~3分别控制B方向的左拐、绿、黄和红灯

ACOUNT用于A方向的时间显示,驱动两个数码管

BCOUNT用于B方向的时间显示*/

moduletraffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT);

output[7:

0]ACOUNT,BCOUNT;

output[3:

0]LAMPA,LAMPB;

inputCLK,EN;

reg[3:

reg[7:

0]numa,numb;

//剩余时间

regtempa,tempb;

//切换状态

reg[2:

0]counta,countb;

//状态量

0]ared,ayellow,agreen,aleft,//保持时间

bred,byellow,bgreen,bleft;

assignACOUNT=numa;

assignBCOUNT=numb;

/****************设置灯的计数初值****************/

always@(EN)

begin

if(!

EN)

begin

ared<

=8'

h55;

ayellow<

h5;

agreen<

h40;

aleft<

h15;

bred<

h65;

byellow<

bgreen<

h30;

bleft<

end

end

/*控制A方向的灯*/

always@(posedgeCLK)

if(EN)//正常情况

tempa)//切换状态

tempa<

=1;

case(counta)//控制亮灯的顺序

0:

beginnuma<

=agreen;

LAMPA<

=2;

counta<

=1;

1:

=ayellow;

=4;

2:

=aleft;

=3;

3:

4:

=ared;

=8;

=0;

default:

LAMPA<

=8;

//红灯亮

endcase

else//倒计时

if(numa>

1)

if(numa[3:

0]==0)

numa[3:

0]<

=4'

b1001;

numa[7:

4]<

=numa[7:

4]-1;

end

elsenuma[3:

=numa[3:

0]-1;

if(numa==2)tempa<

=0;

else//返回初态

b1000;

counta<

tempa<

/***************************控制B方向************************/

if(EN)

tempb)

tempb<

case(countb)//控制亮灯的顺序

beginnumb<

=bred;

LAMPB<

countb<

=bgreen;

=byellow;

=bleft;

LAMPB<

else

begin//倒计时

if(numb>

if(numb[3:

numb[3:

numb[7:

=numb[7:

elsenumb[3:

=numb[3:

if(numb==2)tempb<

else

countb<

tempb<

endmodule

位选模块源程序代码:

moduleweixuan(out,clk);

output[1:

0]out;

inputclk;

reg[1:

always@(posedgeclk)

if(out==3)

out<

=out+1;

译码显示模块源程序代码:

moduleyima(dout,num);

input[0:

3]dout;

output[0:

7]num;

reg[0:

7]num;

always@(*)

case(dout)

4'

b0000:

num=8'

b11111100;

b0001:

b01100000;

b0010:

b11011010;

b0011:

b11110010;

b0100:

b01100110;

b0101:

b10110110;

b0110:

b10111110;

b0111:

b11100000;

b1000:

b11111110;

b1001:

b11110110;

default:

b11111111;

endmodule

段选模块源程序代码:

moduleselect1_4(dout,din,sel);

0]dout;

input[15:

0]din;

input[1:

0]sel;

always@(*)

case(sel)

2'

b11:

dout<

=din[3:

0];

b10:

=din[7:

4];

b01:

=din[11:

8];

b00:

=din[15:

12];

参考文献

[1]康华光.电子技术基础一一数字部份[M].北京:

高等教育出版社,2006.

[2]王金明.数字系统设计与VerilogHDL(第四版).北京:

电子工业出版社,2010

[3]湖南理工学院.专业实验辅导资料.2010

[4]包明.EDA技术与数字系统设计[M].北航出版社2002

[5]田瑞利.陈海滨.基于VHDL有限状态机的交通灯信号控制系统设计[J].广州航海高等专科院校学报.2008

[6]徐春娇.基于VHDL状态机设计的智能交通控制灯.2007

[7]陈金玉.吴振铨.广东工业大学第五届电子设计竞赛.

[8]万军华.现代数字系统设计课件.2010

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

当前位置:首页 > 经管营销 > 企业管理

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

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