单电梯微控器设计方案FPGA课程设计方案报告.docx

上传人:b****0 文档编号:9040779 上传时间:2023-05-16 格式:DOCX 页数:20 大小:284.91KB
下载 相关 举报
单电梯微控器设计方案FPGA课程设计方案报告.docx_第1页
第1页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第2页
第2页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第3页
第3页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第4页
第4页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第5页
第5页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第6页
第6页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第7页
第7页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第8页
第8页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第9页
第9页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第10页
第10页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第11页
第11页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第12页
第12页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第13页
第13页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第14页
第14页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第15页
第15页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第16页
第16页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第17页
第17页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第18页
第18页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第19页
第19页 / 共20页
单电梯微控器设计方案FPGA课程设计方案报告.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单电梯微控器设计方案FPGA课程设计方案报告.docx

《单电梯微控器设计方案FPGA课程设计方案报告.docx》由会员分享,可在线阅读,更多相关《单电梯微控器设计方案FPGA课程设计方案报告.docx(20页珍藏版)》请在冰点文库上搜索。

单电梯微控器设计方案FPGA课程设计方案报告.docx

单电梯微控器设计方案FPGA课程设计方案报告

题目:

单电梯微控器设计

 

院系:

电子工程学院

专业班级:

微电子0901

学生姓名:

张宏伟

导师姓名:

黄海生

起止时间:

2012/6/18至2012/6/29

 

年月日

 

FPGA课程设计报告提纲

1.任务

设计一个单电梯微控器,用FPGA开发板的按键作为手动上下设置开关,led指示当前所在楼层,数码管显示当前电梯工作状态(上/下/停)。

2.目的

3.使用环境(软件/硬件环境,设备等)

4.FPGA课程设计详细内容

4.1技术规范

4.1.1功能定义

(1).异步复位,复位信号与时钟信号不同步

(2).分频器把基准时钟(50HZ)分成10HZ,即0.1秒便于人眼观察,设计0.1-0.3秒钟电梯上升或下降一个楼层

(3).用三个拨码开关设置选择楼层,三个开关可以实现7层楼的设计,拨001为楼层第1层,以后以此类推,最高可达111第7层

(4).用led显示当前选中的楼层,选中某层时,当层的led亮,当电梯降至或升至所选楼层时led灯一直亮(采用独热码)

(5).使用数码管显示电梯状态,上升状态显示“U”,下降状态显示“D”,显示“S”为停止状态,停止时间用第二次输入为准

(6).手动设置电梯工作状态,key1为上升,key2为下降状态

(7).上电复位时电梯初始状态调为第一层

(8).当电梯到第1时下降按键key2无效,当电梯到第7层时上升按键key1无效

(9).电梯运行时可以选择要去的中间楼层,当电梯没有选择所要去的楼层时,上升/下降按键无效3

4.1.2系统结构框图

总体设计可以分为以上几个模块,各模块的功能简要介绍:

1.div模块:

把基准时钟(50MHZ)分成1HZ输出

2.elevator_state模块:

用于总的实现各种功能,各个模块的输入都有此模块进行分析输出

3.display1模块:

用于产生拨码开关的输入值,以方便知道所选择的楼层是多少

4.display模块:

实现电梯的工作状态,上升/下降/停止

5.led模块:

显示当前所在楼层,采用独热码,方便显示

6.floor_time模块:

用于改变楼层上升或下降到相邻楼层的时间,由于给的count给的为数较少,故只能实现0.1-0.3秒任意值,如果还想实现更长的时间则需要改变count的位数

7.top模块:

把所有的模块连在一起

4.1.3应用范围

用于控制电梯的运作,可实现上/下/停止等功能。

4.1.4引脚描述

输入输出信号描述

信号名称

输入/输出

目标/源

功能描述

clk

input

pin

系统时钟(50MHZ)

reset

input

pin

异步清零,低电平有效

chose[2:

0]

input

pin

楼层选择,000不用,001-111

key1

input

pin

电梯上升按键

key2

input

pin

电梯下降按键

display[6:

0]

output

pin

数码管显示工作状态,升/降/停

display1[6:

0]

output

pin

显示所要去的楼层

led[6:

0]

output

pin

发光二极管显示当前楼层

4.2设计方案

把基准时钟进行分频,即50MHZ分成1HZ以便于现实,否则频率太大就会由于人眼的视觉暂留效应而无法分辨,而只能看到所选择的楼层亮,而其他楼层则不亮,分成10HZ就会看见灯是一个一个亮的,led灯采用独热码便于观察,当电梯上电时进行复位,则电梯被复位至1层,此时1层灯一直亮着意味着此时电梯在一楼,当有上升按键按下同时选择所去楼层时电梯工作,电梯工作时,按按键无效,当电梯在第一层按下降按键无效,同理在第七层按上升按键无效,如果电梯上升数码管display显示U,下降时显示D,停止时显示S,当电梯到了所选楼层时,此楼层的灯一直亮着。

独热码编码:

楼层

独热码

一层

0000001

二层

0000010

三层

0000100

四层

0001000

五层

0010000

六层

0100000

七层

1000000

共阳极数码管显示管脚图:

显示

对应编码

0

1000000

1

1111001

2

0100100

3

0110000

4

0011001

5

0010010

6

0000010

7

1111000

8

0000000

9

0010000

A

0001000

B

0000011

C

1000110

D

0100001

E

0000110

F

0001110

U

1000001

5.各个功能模块描述

5.1。

分频器模块:

功能:

把系统时钟(50MHZ)分成10HZ便于人眼观察

代码:

modulediv(clk,reset,fclk)。

inputclk,reset。

outputfclk。

regfclk。

reg[25:

0]count。

always@(posedgeclkornegedgereset)

begin

if(!

reset)

begin

count<=0。

fclk<=0。

end

else

begin

if(count[25:

0]==26'd2499999)

begin

count<=0。

fclk<=~fclk。

end

else

begin

count[25:

0]<=count[25:

0]+1'b1。

end

end

end

Endmodule

模块功能仿真:

5.2.display模块

功能:

用于显示电梯的工作状态,S代表停止,U代表上升,D代表下降

代码:

moduledecode(dec_in,display)。

input[1:

0]dec_in。

output[6:

0]display。

reg[6:

0]display。

always@(dec_in)

begin

case(dec_in)

2'd0:

display[6:

0]=7'b0010000。

2'd1:

display[6:

0]=7'b1000001。

2'd2:

display[6:

0]=7'b0100001。

default:

display[6:

0]=7'bx。

endcase

end

Endmodule

模块功能仿真:

5.3.display1模块

功能:

用于显示要去的楼层,从第一楼开始直到第七楼

代码:

moduledecode1(dec_in1,display1)。

input[2:

0]dec_in1。

output[6:

0]display1。

reg[6:

0]display1。

always@(dec_in1)

begin

case(dec_in1)

3'd0:

display1[6:

0]=7'b1000000。

3'd1:

display1[6:

0]=7'b1111001。

3'd2:

display1[6:

0]=7'b0100100。

3'd3:

display1[6:

0]=7'b0110000。

3'd4:

display1[6:

0]=7'b0011001。

3'd5:

display1[6:

0]=7'b0010010。

3'd6:

display1[6:

0]=7'b0000010。

3'd7:

display1[6:

0]=7'b1111000。

default:

display1[6:

0]=7'bx。

endcase

end

endmodule

模块仿真:

5.3.led模块

功能:

用于显示当前楼层,电梯在哪层,哪层的灯亮

代码:

moduleled(floor,light)。

input[2:

0]floor。

output[6:

0]light。

reg[6:

0]light。

always@(floor)

begin

case(floor)

3'd1:

light[6:

0]<=7'b0000_001。

3'd2:

light[6:

0]<=7'b0000_010。

3'd3:

light[6:

0]<=7'b0000_100。

3'd4:

light[6:

0]<=7'b0001_000。

3'd5:

light[6:

0]<=7'b0010_000。

3'd6:

light[6:

0]<=7'b0100_000。

3'd7:

light[6:

0]<=7'b1000_000。

default:

light[6:

0]<=7'bx。

endcase

end

Endmodule

功能仿真:

5.5.elevator_state模块

功能:

总体控制模块,用于控制电梯的工作,同时向各个模块输出对应的数值,以用于在各个模块中显示。

代码:

moduleelevator_state(fclk,reset,key1,key2,chose,count,floor,dec_in,dec_in1)。

inputfclk,reset,key1,key2。

input[2:

0]chose。

input[1:

0]count。

output[2:

0]floor。

output[1:

0]dec_in。

output[2:

0]dec_in1。

reg[1:

0]dec_in。

reg[2:

0]dec_in1。

reg[2:

0]floor。

reg[1:

0]state。

wire[1:

0]count。

parameterstop=2'd0,up=2'd1,down=2'd2。

always@(posedgefclkornegedgereset)

begin

if(!

reset)

begin

dec_in1[2:

0]<=3'b001。

end

else

begin

dec_in1[2:

0]<=chose[2:

0]。

end

end

always@(posedgefclkornegedgereset)

begin

if(!

reset)

begin

state<=stop。

floor[2:

0]<=3'b001。

dec_in[1:

0]<=2'b00。

end

else

begin

case(state)

stop:

begin

if(dec_in1>floor)

begin

if(!

key1)

begin

if(floor[2:

0]==3'b111)

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

else

begin

state<=up。

dec_in[1:

0]<=2'b01。

end

end

end

elseif(dec_in1

begin

if(!

key2)

begin

if(floor[2:

0]==3'b001)

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

else

begin

state<=down。

dec_in[1:

0]<=2'b10。

end

end

end

else

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

end

up:

begin

if(count[1:

0]==2'd2)

begin

floor[2:

0]=floor[2:

0]+1'b1。

if(chose[2:

0]==floor[2:

0])

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

end

else

begin

state<=up。

dec_in[1:

0]<=2'b01。

end

end

down:

begin

if(count[1:

0]==2'd2)

begin

floor[2:

0]=floor[2:

0]-1'b1。

if(chose[2:

0]==floor[2:

0])

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

end

else

begin

state<=down。

dec_in[1:

0]<=2'b10。

end

end

default:

begin

state<=stop。

dec_in[1:

0]<=2'b00。

end

endcase

end

end

Endmodule

功能仿真:

5.6.floor_time模块

功能:

用于控制电梯上升和下降相邻楼层的时间

代码:

modulefloor_time(fclk,reset,count)。

inputfclk,reset。

output[1:

0]count。

reg[1:

0]count。

always@(posedgefclkornegedgereset)

begin

if(!

reset)

begin

count[1:

0]<=0。

end

else

begin

if(count[1:

0]==2'd2)

begin

count[1:

0]<=0。

end

else

count[1:

0]<=count[1:

0]+1'b1。

end

end

Endmodule

模块仿真:

5.7.top顶层模块:

功能:

用于各个模块之间的连接以实现整体功能

代码:

moduletop(clk,reset,key1,key2,chose,display,display1,light)。

inputclk,reset,key1,key2。

input[2:

0]chose。

output[6:

0]display,display1。

output[6:

0]light。

wire[1:

0]dec_in。

wire[2:

0]dec_in1。

wire[2:

0]floor。

wire[1:

0]count。

divtop1(.clk(clk),.reset(reset),.fclk(fclk))。

decodetop2(.dec_in(dec_in),.display(display))。

decode1top3(.dec_in1(dec_in1),.display1(display1))。

elevator_statetop4(.fclk(fclk),.reset(reset),.key1(key1),.key2(key2),.chose(chose),.dec_in(dec_in),.dec_in1(dec_in1),.floor(floor))。

floor_timetop5(.fclk(fclk),.reset(reset),.count(count))。

ledtop6(.fclk(fclk),.reset(reset),.floor(floor),.light(light))。

endmodule

6.综合布线布局

管脚分配:

7.课程设计的心得体会

本次课程设计自己独立完成,学习到了很多东西,完善了自己很多的不足,比如说不喜欢写设计规范,以至于后面在编写代码的时候出现很多没有想到的问题,解决起来没有头绪,对设计造成了很大麻烦,最后虽然完成了设计要求,但是还是有很多的问题存在。

总体来说,本次设计还是对我学习fpga有很大帮助的。

8.参考资料

[2]夏宇文.Verilog数字系统设计教程.北京航空航天出版社.2008

[3]杜慧敏.基于verilog的FPGA设计基础.西安电子科技大学,

 

西安邮电学院电子功能学院系FPGA成绩鉴定表

学生姓名

张宏伟

班级/学号

微电子0901/04094004/

进行时间

2012年6月18日—2012年6月28日

成绩鉴定

学习内容(20分)

与教案任务计划结合程度(10分)

与专业培养结合程度(6分)

其它(4分)

接受单位评价

(20分)

实践能力(10分)

学习态度(6分)

学习纪律(4分)

报告鉴定

(60分)

报告内容与实践过程紧密结合(15分)

报告内容与教案计划内容紧密结合(15分)

报告质量(主题、结构、观点、逻辑、资料、字数30分)

评阅教师姓名

职称

成绩

评语

 

评阅教师签字

年月日

西安邮电学院电子工程学院系FPGA过程考核表

学生姓名

张宏伟

班级/学号

微电子0901/04094004

承担任务实验室(单位)

所在部门

实施时间

2012年6月18日—2012年6月28日

具体内容

第一周

第二周

……

 

指导教师(师傅)姓名

职务或职称

指导教师(师傅)

对学生的评价

学习态度

□认真□一般□不认真

学习纪律

□全勤□偶尔缺勤□经常缺勤

实践能力

□很强□一般□较差

指导教师(师傅)对学生专业知识或社会实践能力等情况的意见

 

指导教师(师傅)签字

年月日

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2