1、单电梯微控器设计方案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
2、秒便于人眼观察,设计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层时上升按
3、键key1无效 (9).电梯运行时可以选择要去的中间楼层,当电梯没有选择所要去的楼层时,上升/下降按键无效34.1.2 系统结构框图 总体设计可以分为以上几个模块,各模块的功能简要介绍: 1.div模块:把基准时钟(50MHZ)分成1HZ输出 2.elevator_state模块:用于总的实现各种功能,各个模块的输入都有此模块进行分析输出 3.display1模块:用于产生拨码开关的输入值,以方便知道所选择的楼层是多少 4.display模块:实现电梯的工作状态,上升/下降/停止 5.led模块:显示当前所在楼层,采用独热码,方便显示 6.floor_time模块:用于改变楼层上升或下降到相邻
4、楼层的时间,由于给的count给的为数较少,故只能实现0.1-0.3秒任意值,如果还想实现更长的时间则需要改变count的位数 7.top模块:把所有的模块连在一起4.1.3 应用范围 用于控制电梯的运作,可实现上/下/停止等功能。4.1.4 引脚描述 输入输出信号描述信号名称输入/输出目标/源功能描述clkinputpin系统时钟(50MHZ)resetinputpin异步清零,低电平有效chose2:0inputpin楼层选择,000不用,001-111key1inputpin电梯上升按键key2inputpin电梯下降按键display6:0outputpin数码管显示工作状态,升/降/
5、停display16:0outputpin显示所要去的楼层 led6:0 output pin发光二极管显示当前楼层4.2 设计方案 把基准时钟进行分频,即50MHZ分成1HZ以便于现实,否则频率太大就会由于人眼的视觉暂留效应而无法分辨,而只能看到所选择的楼层亮,而其他楼层则不亮,分成10HZ就会看见灯是一个一个亮的,led灯采用独热码便于观察,当电梯上电时进行复位,则电梯被复位至1层,此时1层灯一直亮着意味着此时电梯在一楼,当有上升按键按下同时选择所去楼层时电梯工作,电梯工作时,按按键无效,当电梯在第一层按下降按键无效,同理在第七层按上升按键无效,如果电梯上升数码管display显示U,下降
6、时显示D,停止时显示S,当电梯到了所选楼层时,此楼层的灯一直亮着。独热码编码:楼层独热码一层0000001二层0000010三层0000100四层0001000五层0010000六层0100000七层1000000共阳极数码管显示管脚图:显示对应编码01000000111110012010010030110000400110015001001060000010711110008000000090010000A0001000B0000011C1000110D0100001E0000110F0001110U10000015.各个功能模块描述5.1。分频器模块:功能:把系统时钟(50MHZ)分成10
7、HZ便于人眼观察代码:module div(clk,reset,fclk)。 input clk,reset。 output fclk。 reg fclk。 reg25:0 count。 always(posedge clk or negedge reset) begin if(!reset) begin count=0。 fclk=0。 end else begin if(count25:0=26d2499999) begin count=0。 fclk=fclk。 end else begin count25:0=count25:0+1b1。 end end endEndmodule模块功
8、能仿真:5.2.display模块功能:用于显示电梯的工作状态,S代表停止,U代表上升,D代表下降代码:module decode(dec_in,display)。 input1:0 dec_in。 output6:0 display。 reg6:0 display。 always(dec_in) begin case(dec_in) 2d0: display6:0=7b0010000。 2d1: display6:0=7b1000001。 2d2: display6:0=7b0100001。 default: display6:0=7bx。 endcase endEndmodule模块功能仿
9、真:5.3.display1模块功能:用于显示要去的楼层,从第一楼开始直到第七楼代码:module decode1(dec_in1,display1)。 input2:0 dec_in1。 output6:0 display1。 reg6:0 display1。 always(dec_in1) begin case(dec_in1) 3d0: display16:0=7b1000000。 3d1: display16:0=7b1111001。 3d2: display16:0=7b0100100。 3d3: display16:0=7b0110000。 3d4: display16:0=7b0
10、011001。 3d5: display16:0=7b0010010。 3d6: display16:0=7b0000010。 3d7: display16:0=7b1111000。 default:display16:0=7bx。 endcase endendmodule模块仿真:5.3.led模块功能:用于显示当前楼层,电梯在哪层,哪层的灯亮代码:module led(floor,light)。 input2:0 floor。 output6:0 light。 reg6:0 light。 always(floor) begin case(floor) 3d1: light6:0=7b000
11、0_001。 3d2: light6:0=7b0000_010。 3d3: light6:0=7b0000_100。 3d4: light6:0=7b0001_000。 3d5: light6:0=7b0010_000。 3d6: light6:0=7b0100_000。 3d7: light6:0=7b1000_000。 default: light6:0=7bx。 endcase endEndmodule功能仿真:5.5.elevator_state模块功能:总体控制模块,用于控制电梯的工作,同时向各个模块输出对应的数值,以用于在各个模块中显示。代码:module elevator_sta
12、te(fclk,reset,key1,key2,chose,count,floor,dec_in,dec_in1)。 input fclk,reset,key1,key2。 input2:0 chose。 input1:0 count。 output2:0 floor。 output1:0 dec_in。 output2:0 dec_in1。 reg1:0 dec_in。 reg2:0 dec_in1。 reg2:0 floor。 reg1:0 state。 wire1:0 count。 parameter stop = 2d0,up = 2d1,down = 2d2。 always(pose
13、dge fclk or negedge reset) begin if(!reset) begin dec_in12:0=3b001。 end else begin dec_in12:0=chose2:0。 end end always(posedge fclk or negedge reset) begin if(!reset) begin state=stop。 floor2:0=3b001。 dec_in1:0floor) begin if(!key1) begin if(floor2:0=3b111) begin state=stop。 dec_in1:0=2b00。 end else
14、 begin state=up。 dec_in1:0=2b01。 end end end else if(dec_in1floor) begin if(!key2) begin if(floor2:0=3b001) begin state=stop。 dec_in1:0=2b00。 end else begin state=down。 dec_in1:0=2b10。 end end end else begin state=stop。 dec_in1:0=2b00。 end end up: begin if(count1:0=2d2) begin floor2:0=floor2:0+1b1。
15、if(chose2:0=floor2:0) begin state=stop。 dec_in1:0=2b00。 end end else begin state=up。 dec_in1:0=2b01。 end end down: begin if(count1:0=2d2) begin floor2:0=floor2:0-1b1。 if(chose2:0=floor2:0) begin state=stop。 dec_in1:0=2b00。 end end else begin state=down。 dec_in1:0=2b10。 end end default:begin state=st
16、op。 dec_in1:0=2b00。 end endcase end endEndmodule功能仿真:5.6.floor_time模块功能:用于控制电梯上升和下降相邻楼层的时间代码:module floor_time(fclk,reset,count)。 input fclk,reset。 output1:0 count。 reg1:0 count。 always(posedge fclk or negedge reset) begin if(!reset) begin count1:0=0。 end else begin if(count1:0=2d2) begin count1:0=0
17、。 end else count1:0=count1:0+1b1。 end endEndmodule模块仿真:5.7.top顶层模块:功能:用于各个模块之间的连接以实现整体功能代码:module top(clk,reset,key1,key2,chose,display,display1,light)。 input clk,reset,key1,key2。 input2:0 chose。 output6:0 display,display1。 output6:0 light。 wire1:0 dec_in。 wire2:0 dec_in1。 wire2:0 floor。 wire1:0 cou
18、nt。 div top1(.clk(clk),.reset(reset),.fclk(fclk)。 decode top2(.dec_in(dec_in),.display(display)。 decode1 top3(.dec_in1(dec_in1),.display1(display1)。 elevator_state top4(.fclk(fclk),.reset(reset),.key1(key1),.key2(key2),.chose(chose),.dec_in(dec_in),.dec_in1(dec_in1),.floor(floor)。 floor_time top5(.f
19、clk(fclk),.reset(reset),.count(count)。 led top6(.fclk(fclk),.reset(reset),.floor(floor),.light(light)。endmodule6.综合布线布局管脚分配:7.课程设计的心得体会 本次课程设计自己独立完成,学习到了很多东西,完善了自己很多的不足,比如说不喜欢写设计规范,以至于后面在编写代码的时候出现很多没有想到的问题,解决起来没有头绪,对设计造成了很大麻烦,最后虽然完成了设计要求,但是还是有很多的问题存在。 总体来说,本次设计还是对我学习fpga有很大帮助的。8.参考资料 2 夏宇文.Verilog数字
20、系统设计教程.北京航空航天出版社.20083 杜慧敏.基于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日具体内容第一周第二周指导教师(师傅)姓名职务或职称指导教师(师傅)对学生的评价学习态度 认真 一般 不认真学习纪律 全勤 偶尔缺勤 经常缺勤实践能力 很强 一般 较差指导教师(师傅)对学生专业知识或社会实践能力等情况的意见指导教师(师傅)签字 年 月 日
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2