欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    课程设计报告FPGA(共13页).doc

    • 资源ID:14389406       资源大小:169KB        全文页数:13页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计报告FPGA(共13页).doc

    精选优质文档-倾情为你奉上 课程设计报告 自动售货机 学院:电子与通信工程学院班级:微电子1班姓名:刁飞鹏学号:自动售货机设计任务分析任务要求利用开发系统板,设计一个自动售货机控制芯片。自动售货机平时处于待机状态,当有钱投入之后开始工作。利用三个按键作为投币信号,分别代表投币5元、10元、20元,投入钱币以后,采用七段数码管显示投入的金额;利用另外4个按键代表4种货物,可以在售货机上选择购买的货物,假设4种货物的售价分别为3元、6元、10元、17元。选择了货物之后,七段数码管显示购物之后的找币余额,并且用LED数码管指示灯显示是否有足够的金额购买,如果投币不够,报警指示灯亮起,并且显示余额为零。选择了购买物品之后,可以按键出货或者余额不足退币。系统的输入信号包括8个按键开关、时钟信号,输出部分有2个LED、4个七段数码管,系统框图如图所示。自动售货机控制芯片的外部时钟由晶振产生,该开发板系统实例中晶振频率为50Mhz。系统设计自动售货机控制芯片系统结构框图如图所示,包括三个模块:分频器模块、核心控制模块和按键与七段数码管控制模块。其中,分频器模块主要用于产生供按键、七段数码管扫描的时钟,这个扫描时钟的周期应该大约为0.010.001s。同时,这个分频时钟也可用于核心模块的基本控制,由于扫描时钟要和按键、七段数码管控制电路构成一个同步电路,因此,必须使用同一个分频时钟。数码管按键8位LED时钟按键、七段数码管控制模版核心状态控制分频器 核心控制模块的作用主要是控制系统的状态。系统一共有三种状态,需要使用两位状态寄存器存储状态数据,每个状态之间的转换由外部按键控制,在每一个状态下,有不同的七段数码管和指示灯的输出。 按键和数码管显示控制电路是对外部的矩阵按键以及动态显示硬件进行驱动,该模块对矩阵按键进行扫描,输出经过扫描之后的按键结果。并且可以把核心模块输出的二进制显示数据转化为BCD码,通过BCD译码,以及动态显示技术最终输出到动态七段数码管上显示出来。模块设计1. 分频模块设计Module clk_div(rst,clk,clk_1);Input rst,clk;Output clk_1;Reg 14:0cnt;Reg clk_1;always(posedge clk or negedge rst)beginif(rst=1'b0)begin cnt<=15'd0; clk_1<=1'b0; endelse if(cnt=15'd26213) begin cnt<=15'd0; clk_1<=clk_1; endelse cnt<=cnt+1'b1;endendmodule 2. 核心控制模块(1) 模块原理分析。核心控制模块控制三个状态,分别是“等待投币状态”、“等待买货状态”、“出货、退币状态”。 系统状态转换过程如图所示,当系统复位以后,进入“等待投币状态”,此时数码管输出全部为0,而指示灯也输出为“00”。在这种状态下,如果输入了投币按键,包括投币5元、10元、15元,就会跳转到下一个状态,称之为“等待买货状态”。在“等待买货状态”下,七段数码管输出的金额,指示灯仍然输出“00”。在这种状态下,如果输入了购物按键,包括购买3元、6元、10元、17元的货物,就会跳转到下一个状态,称之为“出货、退币状态”。如果投币金额不足,七段数码管输出零,“余额不足指示灯”亮起。这个状态下,如果按下“出货、退币按键”则系统恢复到等待投币状态”,表示售货完成。买货按键:3元 6元 10元 17元出货、退币按键投币按键:5元 10元 20元出货、退币状态数码管:余额/0000指示灯:金额是否充足数码管:投币金额 指示灯:00等待买货状态等待投币状态数码管:0000指示灯:00 根据前面已经设计好的状态转移图。对所有的状态进行编码设计。由于系统包括三个状态,因此可以设计两位寄存器来对所有的状态进行编码。设计状态机首先要确定状态,以及对状态进行编码,然后根据状态图确定具体的状态转换以及输出和输入的关系。 状态代码 状态含义 2'b00 等待投币状态 2'b01 等待买货状态 2'b10 出货、退币按键按照系统要求,有8个按键输入,首先定义每个按键具体含义,如表所示:0号1号2号3号4号5号6号7号投币5元投币10元投币20元购买3元物品购买6元物品购买10元物品购买17元物品出货、退币另外,还有两个LED发光二极管,其中0号LED代表“金额充足”,可以出货。1号代表“金额不足”,只能退币处理。当系统复位以后,处于“等待投币状态”,状态代码为为“2'b00",此时数码管输出全为0,而指示灯也输出为“00”。如果在这个状态下,只有出入三个投币按键,状态才能发生跳转,三个投币按键分别代表投币5元、10元、20元,对应的按键分别是0号、1号、2号。按下投币按键后,投币的金额需要被内部寄存器存储下来。投币之后,状态跳转为 "等待买货状态”,状态代码为为“2'b01".在“等待买货状态”下,七段数码管输出已经被保存下来的刚刚投币的金额,LED指示灯仍然输出“00”。在这种状态下,如果输入了购物按键,包括购买3元、6元、10元、17元的货物,分别对应着3号、4号、5号、6号按键,就会跳转到下一状态,称之为“出货、退币状态”,状态代码为为“2'b10”。在“出货、退币状态”下,如果刚刚投币金额充足,七段数码管输出找零的金额,“金额充足指示灯”亮起,如果投币金额不足,七段数码管输出零,余额不足指示灯亮起。这种状态下,如果按下7号按键代表的“出货、退币”按键则系统恢复到“等待投币状态”,表示售货完成。(2) 模块接口定义。 信号名I/O位宽含义rstI1bit系统复位信号clk_1I1bit分频后周期为0.01sledO2bit2个led数码管显示数据displayO8bit七段数码管显示数据keyI8bit矩阵按键输入modulestate(rst,clk_1,led,display,key);inputrst;inputclk_1;input7:0key;output1:0led;output7:0display;reg1:0led;reg7:0display;reg1:0state;parameter1:0 waitfor = 2'b00, buying = 2'b01, outfor = 2'b10;always(posedge clk_1 or negedge rst)beginif(!rst)begindisplay<=8'd0;led<=2'b00;state<=waitfor;endelse begincase(state)waitfor:beginif(key0=1'b0)beginstate<=buying;display<=8'd5;led<=2'b00;endif(key1=1'b0)beginstate<=buying;display<=8'd10;led<=2'b00;endif(key2=1'b0)beginstate<=buying;display<=8'd20;led<=2'b00;endendbuying:beginif(key3=1'b0)beginstate<=outfor;if(display<8'd3)begindisplay<=8'd0;led<=2'b10;endelsebegindisplay<=display-8'd3;led<=2'b01;endendif(key4=1'b0)beginstate<=outfor;if(display<8'd6)begindisplay<=8'd0;led<=2'b10;endelsebegindisplay<=display-8'd6;led<=2'b01;endendif(key5=1'b0)beginstate<=outfor;if(display<8'd10)begindisplay<=8'd0;led<=2'b10;endelsebegindisplay<=display-8'd10;led<=2'b01;endendif(key6=1'b0)beginstate<=outfor;if(display<8'd17)begindisplay<=8'd0;led<=2'b10;endelsebegindisplay<=display-8'd17;led<=2'b01;endendendoutfor:beginif(key7=1'b0)beginstate<=waitfor;display<=8'd0;led<=2'b00;endendendcaseendendendmodule 按键控制模块modulexishi(clk_1,display,s,m);inputclk_1;input7:0display;output3:0s;output6:0m;reg3:0s;reg6:0m;reg1:0st;reg3:0shi,bai,ge;reg3:0bin;wire7:0display_1;always(posedge clk_1)beginst<=st+1'b1;endalways(st)begincase(st)2'b00:s<=4'b0001;2'b01:s<=4'b0010;2'b10:s<=4'b0100;default:s<=4'b0000;endcaseendalways(display)beginif(display>8'd199)bai<=4'd2;else if(display>=7'd99)bai<=4'd1;else bai<=4'd0;endassigndisplay_1=display-bai*7'd100;always(display_1)beginif(display_1>=7'd90)shi<=4'd9;else if(display_1>=7'd80)shi<=4'd8;else if(display_1>=7'd70)shi<=4'd7;else if(display_1>=7'd60)shi<=4'd6;else if(display_1>=7'd50)shi<=4'd5;else if(display_1>=7'd40)shi<=4'd4;else if(display_1>=7'd30)shi<=4'd3;else if(display_1>=7'd20)shi<=4'd2;else if(display_1>=7'd10)shi<=4'd1;elseshi<=4'd0;endalways(display_1 or shi)ge=display_1-shi*4'd10;always(st,ge,shi,bai)begincase(st)2'b00:bin<=ge;2'b01:bin<=shi;2'b10:bin<=bai;default:bin<=4'b0000;endcaseendalways(bin)begincase(bin)4'b0000:m<=7'b;/04'b0001:m<=7'b;/14'b0010:m<=7'b;/24'b0011:m<=7'b;/34'b0100:m<=7'b;/44'b0101:m<=7'b;/54'b0110:m<=7'b;/64'b0111:m<=7'b;/74'b1000:m<=7'b;/84'b1001:m<=7'b;/9default : m<=7'b;/-endcase endendmodule 顶层模块设计moduleclassdesign(clk,rst,key,led,s,m);inputclk,rst;input7:0key;output1:0led;output3:0s;output6:0m;wire1:0led;wire3:0s;wire6:0m;wireclk_1;wire7:0display;clk_div U0(.rst(rst), .clk(clk), .clk_1(clk_1);state U1(.rst(rst), .clk_1(clk_1), .led(led), .display(display), .key(key);xishi U2(.clk_1(clk_1), .display(display), .s(s), .m(m);endmodule 任务总结本任务设计了一个自动售货机的控制芯片,系统结构比较复杂,涉及所有常见的外围硬件电路,以及电路控制基本原理。首先要建立一个分频器电路,构建扫描时系统内部的时钟。核心控制模块是一个典型的状态机电路。状态机包括三种状态,控制售货机投币、选货、出货或退币等过程。为了配合售货过程,需要七段数码管、LED指示灯来显示状态以及报警信息。处理这些动态输入/输出设备,还需要设计相应的驱动电路。专心-专注-专业

    注意事项

    本文(课程设计报告FPGA(共13页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开