




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、深圳大学课程论文题目 设计一个自动售货机 成绩 专业 课程名称、代码 年级 姓名 学 号 时间 年 月 设计一个自动售货机基本要求:可以对3种不同种类的货物进行自动售货,价格分别为A=1.00, B=1.50, C=1.60。售货机可以接受1元,5角,1角三种硬币(即有三种输入信号IY,IWJ,IYJ),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为 Sa, Sb ,Sc 分别表示售出相应的货物,同时输出的信号yuan, jiao代表找零,并显示在7段数码管上。规格说明:1. 按一下button1按钮,表示购买货物A,第一个LE
2、D灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮。2. LED灯亮后,开始输入硬币。button2按一下,输入1元,按两下,输入两元,以此类推;Button3按一下输入5角,按两下代表1元,以此类推;button4按一下输入1角,按两下输入2角,以此类推。7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。 3. 本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)。论文要求:1. 论文的格式采用标准的
3、深圳大学以论文、报告等形式考核专用答题纸;2. 论文中应完包括ASM图, 以及VerilogHDL代码,并且代码应该与ASM图相一致.3. 论文应包括该电路的VerilogHDL仿真.4. 论文应该有FPGA开发的布局布线后结果.5. 报告应该有实验成功的开发板截图.1. 状态图本设计需要2个状态机,一个是售货机工作状态机,一个是按键消抖用的FSM2. Verilog 代码:timescale 1ns / 1psmodule automat(clk_in,reset,cs,Led,seg,button1_in,button2_in,button3_in,button4_in ); input
4、clk_in,reset;input button1_in,button2_in,button3_in,button4_in;output 2:0 Led;output 3:0 cs;output 7:0 seg;reg 7:0 seg;reg 3:0 cs;reg 2:0 Led;reg 6:0 total;reg 4:0 state;reg 2:0 state1,state2,state3,state4;reg 4:0 cnt1,cnt2,cnt3,cnt4;reg button1,button2,button3,button4;reg 6:0 ones,tens;reg clk;reg
5、23:0 divcnt;parameter wait0 = 3'b001;parameter delay = 3'b010;parameter wait1 = 3'b100;parameter idle = 5'b00001;parameter selA = 5'b00010;parameter selB = 5'b00100;parameter selC = 5'b01000;parameter count = 5'b10000;always (posedge clk_in or negedge reset) / clk_div
6、iderbeginif (!reset)beginclk <= 1'b0;divcnt <= 0;endelse if (divcnt = 99999)beginclk <= 1'b1;divcnt <= 0;endelse if (divcnt = 49999)beginclk <= 1'b0;divcnt <= divcnt + 1;endelsedivcnt <= divcnt + 1; end always (posedge clk or negedge reset) / 7seg scan clk=1Khzbegini
7、f (!reset)begincs <= 4'b1101;seg <= 8'b00111000;endelse if (cs = 4'b1101)begincs <= 4'b1110;case(ones)0: seg <= 8'b10000001;1: seg <= 8'b11001111;2: seg <= 8'b10010010;3: seg <= 8'b10000110;4: seg <= 8'b11001100;5: seg <= 8'b10100100
8、;6: seg <= 8'b10100000;7: seg <= 8'b10001111;8: seg <= 8'b10000000;9: seg <= 8'b10000100;default: seg <= 8'b01110000; endcaseendelse if (cs = 4'b1110)begincs <= 4'b1101;case(tens)0: seg <= 8'b00000001;1: seg <= 8'b01001111;2: seg <= 8
9、9;b00010010;3: seg <= 8'b00000110;4: seg <= 8'b01001100;5: seg <= 8'b00100100;6: seg <= 8'b00100000;7: seg <= 8'b00001111;8: seg <= 8'b00000000;9: seg <= 8'b00000100;default: seg <= 8'b01110000; endcaseendendalways (total) /total decodebeginif
10、(total < 10 && total >= 0)begintens = 0;ones = total;endelse if (total < 20 && total >= 10)begintens = 1;ones = total - 10;endelse if (total < 30 && total >= 20)begintens = 2;ones = total - 20;endelse if (total < 40 && total >= 30)begintens = 3
11、;ones = total - 30;endelse if (total < 50 && total >= 40)begintens = 4;ones = total - 40;endelse if (total < 60 && total >= 50)begintens = 5;ones = total - 50;endelse if (total < 70 && total >= 60)begintens = 6;ones = total - 60;endelse if (total < 80 &am
12、p;& total >= 70)begintens = 7;ones = total - 70;endelse if (total < 90 && total >= 80)begintens = 8;ones = total - 80;endelse if (total < 100 && total >= 90)begintens = 9;ones = total - 90;endelsebegintens = 9;ones = 9;endendalways (posedge clk or negedge reset) /
13、undo key jitter fsm for button1_inbeginif (!reset)beginbutton1 <= 1'b0;cnt1 <= 0;state1 <= wait0;endelsebeginbutton1 <= 1'b0;case (state1)wait0: begin if (button1_in)state1 <= delay; elsestate1 <= wait0; end delay: begin if (cnt1 = 24) begincnt1 <= 0;if (button1_in)begin
14、button1 <= 1'b1;state1 <= wait1;endelsestate1 <= wait0; end else begincnt1 <= cnt1 + 1;state1 <= delay; end end wait1: beginif (button1_in)state1 <= wait1;elsestate1 <= wait0; end default: state1 <= wait0; endcaseendendalways (posedge clk or negedge reset) / undo key jitt
15、er fsm for button2_inbeginif (!reset)beginbutton2 <= 1'b0;cnt2 <= 0;state2 <= wait0;endelsebeginbutton2 <= 1'b0;case (state2)wait0: begin if (button2_in)state2 <= delay; elsestate2 <= wait0; end delay: begin if (cnt2 = 24) begincnt2 <= 0;if (button2_in)beginbutton2 <=
16、 1'b1;state2 <= wait1;endelsestate2 <= wait0; end else begincnt2 <= cnt2 + 1;state2 <= delay; end end wait1: beginif (button2_in)state2 <= wait1;elsestate2 <= wait0; enddefault: state2 <= wait0; endcaseendendalways (posedge clk or negedge reset) / undo key jitter fsm for but
17、ton3_inbeginif (!reset)beginbutton3 <= 1'b0;cnt3 <= 0;state3 <= wait0;endelsebeginbutton3 <= 1'b0;case (state3)wait0: begin if (button3_in)state3 <= delay; elsestate3 <= wait0; end delay: begin if (cnt3 = 24) begincnt3 <= 0;if (button3_in)beginbutton3 <= 1'b1;stat
18、e3 <= wait1;endelsestate3 <= wait0; end else begincnt3 <= cnt3 + 1;state3 <= delay; end end wait1: beginif (button3_in)state3 <= wait1;elsestate3 <= wait0; end default: state3 <= wait0; endcaseendendalways (posedge clk or negedge reset) / undo key jitter fsm for button3_inbegini
19、f (!reset)beginbutton4 <= 1'b0;cnt4 <= 0;state4 <= wait0;endelsebeginbutton4 <= 1'b0;case (state4)wait0: begin if (button4_in)state4 <= delay; elsestate4 <= wait0; end delay: begin if (cnt4 = 24) begincnt4 <= 0;if (button4_in)beginbutton4 <= 1'b1;state4 <= wait
20、1;endelsestate4 <= wait0; end else begincnt4 <= cnt4 + 1;state4 <= delay; end end wait1: beginif (button4_in)state4 <= wait1;elsestate4 <= wait0; end default: state4 <= wait0; endcaseendend always (posedge clk or negedge reset) /FSM for automatbeginif (!reset)begintotal <= 0;Led
21、 <= 3'b000;state <= idle;endelsebegincase (state)idle: begin Led <= 3'b000; if (button1)state <= selA; elsestate <= idle; end selA: begin total <= 0; Led <= 3'b100; if (button1) state <= selB; else if (button2) begin state <= count; total <= total + 10; end
22、else if (button3) begin state <= count; total <= total + 5; end else if (button4) begin state <= count; total <= total + 1; end else state <= selA; endselB: begin Led <= 3'b010; if (button1) state <= selC; else if (button2) begin state <= count; total <= total + 10; en
23、d else if (button3) begin state <= count; total <= total + 5; end else if (button4) begin state <= count; total <= total + 1; end else state <= selB; endselC: begin Led <= 3'b001; if (button2) begin state <= count; total <= total + 10; end else if (button3) begin state &l
24、t;= count; total <= total + 5; end else if (button4) begin state <= count; total <= total + 1; end else state <= selC; end count: begin if (button2) beginstate <= count;total <= total + 10; end else if (button3) beginstate <= count;total <= total + 5; end else if (button4) be
25、ginstate <= count;total <= total + 1; end else if (button1 && (total >= 10) && Led = 3'b100) begintotal <= total - 10;state <= idle; end else if (button1 && (total >= 15) && Led = 3'b010) begintotal <= total - 15;state <= idle; end else
26、 if (button1 && (total >= 16) && Led = 3'b001) begintotal <= total - 16;state <= idle; end elsestate <= count; enddefault: state <= idle;endcaseendendendmodule3. 仿真:Tb代码:timescale 1ns / 1psmodule tb;reg clk_in;reg reset;reg button1_in;reg button2_in;reg button3_in;
27、reg button4_in;wire 3:0 cs;wire 2:0 Led;wire 7:0 seg;automat uut (.clk_in(clk_in), .reset(reset), .cs(cs), .Led(Led), .seg(seg), .button1_in(button1_in), .button2_in(button2_in), .button3_in(button3_in), .button4_in(button4_in);initial begin/ Initialize Inputsclk_in = 0;reset = 0;button1_in = 0;butt
28、on2_in = 0;button3_in = 0;button4_in = 0;#1000;reset = 1;#1000;button1_in = 1;#2000000button1_in = 0;#2000000button1_in = 1;#2000000button1_in = 0;#2000000button1_in = 1;#2000000button1_in = 0;#2000000button1_in = 1;#2000000button1_in = 0;#2000000button1_in = 1;#2000000button1_in = 0;#2000000button1
29、_in = 1; #50000000 button1_in = 0;/delay 50ms#50000000 button2_in = 1;#50000000button2_in = 0;#50000000button3_in = 1;#50000000button3_in = 0;#50000000button4_in = 1;#50000000button4_in = 0;#50000000button1_in = 1;#50000000button1_in = 0; endalways#5 clk_in = clk_in; endmodule把button1_in 仿真成与物理电路一样
30、有大约十几秒的抖动Button1 正确的忽略掉抖动产生的影响,产生了一个周期的脉冲买A=1元仿真的过程:button1一来state进入买selA状态 button2一来state 进入count状态且total+10 (total=投进钱总数剩10)即表示投进了1元,button3一来 total = 15 表示投进了1.5元,button4一来 total = 16 表示投了1.6元,最后按button1 出货和找零,total=6表示找零0.6角4.实物展示:本设计下载平台是 Nexys3 Board Ucf:#clkNet "clk_in" LOC=V10 | IO
31、STANDARD=LVCMOS33;Net "clk_in" TNM_NET = sys_clk_pin;TIMESPEC TS_sys_clk_pin = PERIOD sys_clk_pin 100000 kHz;Net "reset" LOC = T10 | IOSTANDARD = LVCMOS33; #Bank = 2, pin name = IO_L29N_GCLK2, Sch name = SW0# LedsNet "Led<0>" LOC = U16 | IOSTANDARD = LVCMOS33; #Ba
32、nk = 2, pin name = IO_L2P_CMPCLK, Sch name = LD0Net "Led<1>" LOC = V16 | IOSTANDARD = LVCMOS33; #Bank = 2, pin name = IO_L2N_CMPMOSI, Sch name = LD1Net "Led<2>" LOC = U15 | IOSTANDARD = LVCMOS33; #Bank = 2, pin name = IO_L5P, Sch name = LD2 #Net "seg<7>&quo
33、t; LOC = M13 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L61N, Sch name = DP# 7 segment displayNet "seg<6>" LOC = T17 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L51P_M1DQ12, Sch name = CANet "seg<5>" LOC = T18 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name
34、= IO_L51N_M1DQ13, Sch name = CBNet "seg<4>" LOC = U17 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L52P_M1DQ14, Sch name = CCNet "seg<3>" LOC = U18 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L52N_M1DQ15, Sch name = CDNet "seg<2>" LOC = M14 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L53P, Sch name = CENet "seg<1>" LOC = N14 | IOSTANDARD = LVCMOS33; #Bank = 1, pin name = IO_L53N_VREF,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅礼仪类考试题及答案
- 新疆维吾尔自治区喀什地区莎车县2024-2025学年高一上学期1月期末考试物理试题(含答案)
- 【假期提升】五升六语文暑假作业(六)-人教部编版(含答案含解析)
- 琴行培训考试题及答案
- 2025年消防设施操作员之消防设备高级技能基础试题库和答案要点
- 筹建类面试题思路及答案
- 2023年辽宁省中考生物试卷(含答案)
- 2024广东省中考英语真题含答案
- 采购与售后分包合同(2篇)
- 行政岗干货知识培训课件
- 2024年新课标卷高考化学试卷试题真题答案详解(精校打印版)
- 音频功率放大器的设计与实现
- 2024年高等教育文学类自考-01210对外汉语教学法考试近5年真题集锦(频考类试题)带答案
- 《长江流域》习题课件
- 2024年教师编制考试教育理论综合基础知识复习题库及答案(共300题)
- 部编版三年级《习作我做了一项小实验》教案
- 智能制造市场现状及发展前景分析报告
- (高清版)WST 406-2024 临床血液检验常用项目分析质量标准
- 消防安全技术综合能力要点概述
- DL-T 5148-2021水工建筑物水泥灌浆施工技术条件-PDF解密
- 第8版精神病学
评论
0/150
提交评论