基于FPGA的简单自动邮票销售机系统电子设计报告

合集下载

(完整word版)基于FPGA的自动售货机控制器设计

(完整word版)基于FPGA的自动售货机控制器设计

大连海事大学毕业论文二○一四年六月基于FPGA的自动售货机控制器设计专业班级:电子信息工程3班姓名:林慧指导老师:严飞信息科学技术学院摘要随着科学技术的迅猛发展、人们生活水平的逐日提高,自动售货机作为自动化商业机械的代表被广泛用于公共场所自动售货,给人们的生活带来了极大的方便.本文介绍的是基于FPGA的自动售货机控制器的软件设计,此自动售货机控制器包含八个大模块:购物模块,定价模块,投币模块,比价模块,计时模块,复位模块,购物显示模块以及数码管显示模块。

投入钱币并通过键盘选择后再经比价处理模块,将对应的出货找零信息通过LED 灯和数码管显示模块反映。

本设计借助于VHDL语言来编程实现八个模块的基本功能,在Quartus II软件中实现模块的设计、编译、综合、优化、仿真直至生成器件之后下载到FPGA目标芯片上。

在ZY11EDA13BE 实验系统中完成自动售货机的功能实现,通过开关、键盘等完成购物请求、投币等操作,通过数码管及指示灯显示系统运行结果,从而可以更清晰地观察到自动售货机的运行情况。

关键词:自动售货机控制器;EDA;FPGA;QuartusII;VHDLABSTRACTWith the rapid development of science and technology as well as people’s living standards rise day by day. As a representative of commercial machinery automation vending ,the vending machine business is widely used in public places ,has bought great convenience to people's lives.This paper describes the software design and hardware design based on FPGA vending machine controller, the vending machine controller module consists mainly of eight modules:shopping module,price module,coin module,timing module, price comparison module, reset module, shopping display module and digital display module. After parity processing module for selected commodity prices and the amount of investment comparison,the corresponding change information delivery through LED lights and the digital display module display.This design using VHDL hardware description language programming to describe the basic function of eight modules。

基于FPGA自动售货机设计

基于FPGA自动售货机设计

第一层次是行为描述。所谓行为描述,实质 上就是对整个系统的数学模型的描述计过程中存 在的问题。在行为描述阶段,并不真正考虑实际 的操作和算法、用何种方法来实现,而是考虑系 统的结构及其工作的过程是否能够达到系统设计 的要求。
第二层次是RTL方式描述。这一层次成为寄 存器传输描述(又称数据流描述)。如前所述,用 行为方式描述的系统结构的程序,其抽象程度高, 是很难直接映射到具体逻辑元件结构的。想要得 到硬件的具体表现,必须将行为方式描述的 VHDL语言程序改写为RTL方式描述的VHDL语言 程序。也就是说,系统采用RTL方式描述,才能 导出系统的逻辑表达式,才能进行逻辑综合。
五、主要参考文献
[1] 刘韬,楼兴华. 《FPGA数字电子系统设计与开发实例导航》[M]. 北京:人民邮电出版社,2005.6, 27~36. [2] 王辉,殷颖,陈婷,俞一鸣. MAX+plusⅡ和QuartusⅡ应用于开发技巧[M]. 北京:机械工业出版社,2007.1, 293~316. [3] 吴冬梅,吴延海,邓玉玖. 基于CPLD/FPGA 的计费器[J];电子技术应用,2004(11):71~73. [4] 黄智伟. FPGA 系统设计与实践[M].,北京:电子工业出版社,2005,200~217. [5] 黄建新,刘迈,谭克俊. 基于FPGA芯片设计计费器的研究[J]. 吉林化工学院学报,2003(03):52~55. [6] 候伯亨,顾新. VHDL 硬件描述语言与数字逻辑电路设计[M]. 西安:西安电子科技大学出版社,2000. [7] 姜雪松,VHDL设计实例与仿真,北京:机械工业出版社,2007.1,91~103. [8] 王彦芳,王小平,王彦永等.用可编程逻辑器件实现专用数字集成电路的功能设计[J]半导体情报,2000,37 (5)48~51. [9] 张立,张光新,柴磊等. FPGA 在多功能计费器系统中的应用[J]. 仪器仪表学报,2005,26(8): 7352737. [10] 林愿. 基于CPLD/FPGA 的计费器系统的设计实现[J]. 国外电子元器件,2007(07):26~29. [11] 周润景,图雅,张丽敏. 基于Quartus II 的FPGA/CPLD 数字系统设计实例[J]. 北京:电子工业出版社, 2007. [12] [英]Jone Wulenskl. VHDL Digtal System Design,北京:电子工业出版社,2004,10~105. [13] San Jose. MAX+PLUS II IntroductionUSA:Altera Corporation,2004,52~69. [14] James R. Armstrong,VHDL设计表示和综合[M]. 李宗伯,王蓉晖,等译. 北京:机械工业出版社. [15] Altera Corpration. Altera Digital Library. Altera,2002.

基于FPGA的自动售货机控制单元设计

基于FPGA的自动售货机控制单元设计

图书分类号:密级:毕业设计(论文) 基于FPGA的自动售货机控制单元设计学生学号学生姓名学院名称专业名称指导教师年月日摘要近年来在随着我国各种大小商品市场快速发展以及城市化不同程度的不断提高,自动售货机已经越来越受到大中城市的青睐,自动售货机在这些大中城市中已经获得了越来越广泛的应用,因此自动售货机的快速发展已经得到了不断的提高和认可,同时自动售货机也极大地丰富了我国的商业产业的结构,是商业结构有了更加丰富的拓展,这样在商业结构中开辟了一种全新的自动自主销售和自动自主服务的时代。

本文将结合大学期间所学的EDA技术实现自动售货机控制系统的设计,应用这种技术实现设计的自动售货机控制系统,将会有效的减小系统的开发周期,同时降低了很多开发成本,因此是一种可行的设计方案和趋势。

该设计在整体设计架构中主要包含两个部分:主要有硬件系统设计部分和FPGA内部电路的编程设计部分。

在FPGA内部电路的编程设计部分主要采用硬件描述语言(Vhdl)对自动售货机的控制系统进行功能描述以及各状态之间的设计。

该设计FPGA硬件部分主要是目前最通用的FPGA之一即ALTERA公司的FPGA芯片为设计目标器件。

该设计中硬件系统设计是围绕系统设计所选合适的FPGA器件的硬件电路进行设计。

本文中将详细介绍了基于FPGA的自动售货机的整体设计方案流程与工作原理及工作状态,在功能叙述中详细阐述了投币选择模块,物品选择模块,主控模块等模块的软件系统设计与实现,在前期设计完成之后对所设计的FPGA内部功能进行功能仿真验证,在确定设计正确无误之后进行下板子测试验证。

关键词FPGA ;EDA;自动售货机;VHDLAbstractWith the continuously prosperity of china’s commodity market and with the rapid develepment of modernization level , vending machines has enterd into large and medium-sized cities quietly ,it enriches china’s commercial industrial structure and creates a new era of automatic selling and self-service.This subject will accomplish the control system of vending machine with EDA technology.Since it has the advantages of shortening product development cycle,reducing product develepment cost , increasing the possibility of first-time success and so on,it can enhence the exploitability of aotomatic machinea and lower the costs.The issue consists of two parts:hardware system design and fpga internal circuit design. Fpga internal circuit design uses hardware describe language (vhdl )to describe the fuction of vending machine;and fpga chip of ALTERA Corporation is choosen for the target device. Hardware system design is a hardware circuit design that center on the selected appropriate fpga device. and the design of the internal functions of FPGA is simulated.Keywords FPGA EDA Vending Machine VHDL目录第1章绪论 (1)1.1 自动售货机的历史 (1)1.2 自动售货机的研究现状 (1)1.3 未来发展和研究方向 (2)1.4 本文的章节安排 (2)第2章关键技术介绍 (4)2.1 EDA技术............................................................................................. 错误!未定义书签。

自动限时邮票出售机系统设计

自动限时邮票出售机系统设计

自动限时邮票出售机系统设计一、任务要求与设计目标本系统能根据功能开关 、 、 的状态,确定购买1元、5角或4角的邮票。

电路的输入信号为每次投入的一枚1元、5角或1角硬币所产生的单次正脉冲信号。

对投币的时间有要求,要求每次购票投币时间限定在10S 内,否则全部退回已投入的硬币,系统回到等待再投币状态。

该系统能自动存储并累计投币金额,当已投入的硬币计值超过或大于所要购买的邮票种类所需金额时,给出售票输出信号C ,并同时给出应找回的剩余零钱信号Y 。

要求用D 触发器和门电路设计实现,完成状态转换图、卡诺图化简、逻辑电路图。

设计要求:1、分析设计要求,明确设计指标。

必须仔细分析课题要求、性能、指标、应用环境等,广开思路,构思出各种设计方案,绘制结构框图。

2、确定合理的总体方案。

对各种方案进行比较,以电路的先进性、结构的繁简、成本的高低及制作的难以等方面作综合比较,并考虑器件的来源,确定可行方案。

3、设计各单元电路。

总体方案化整为零,分解成若干子系统或单元电路,逐个设计。

4、组成系统。

在一定幅面的图纸上合理布局,通常是按信号的流向,采用左进右出的规律摆放各电路,并标出必要的说明。

二、系统划分为控制器和受控器根据系统设计要求,该系统应包括投币信号预处理电路、控制器和数据处理器(受控器)三部分。

其中数据处理器应包含累加寄存器、限时自动计时电路和输出运算电路。

据此,可画出系统初始结构框图,如图1所示。

10M 5M 4M信号说明:K为投币信号,K1=1角,K5=5角,K10=1元。

X为投币信号K的编码信号,X8X4X2X1是将K编码为8421码,X C为投币标志信号。

S为系统启动信号,其中:T1、T0为状态信号。

M为邮票面值选择开关。

O C为定时到信号。

Y为找币信号(Y8Y4Y2Y1为8421码)。

F为不同面值邮票售出信号(F10为1元,F5为5角,F4为4角)。

①输入信号预处理电路任务是把异步输入信号K*转换为单次同步信号K,并对它进行编码,编成8、4、2、1有权二进制码X(X8X4X2X1),同时产生一个表征有无投币输入的输出信号Xc.②累加寄存器R累加寄存器用来累计已投入硬币的值,即求输入的硬币编码信号X和寄存器R内容之和,求和用加法器实现。

基于FPGA自动售货机

基于FPGA自动售货机

摘要本课题是基于Verilog HDL语言的小型自动售货机。

采用Verilog HDL在ModelsimSE6.2B软件平台进行编译和仿真。

在此次设计中,主要采用有限状态机(FSM)的设计,在投币选货状态和找零状态在这两个状态间进行转移。

从而实现货物的选择、货币运算、出货控制、余额显示以及找零等功能。

该售货机系统能够识别两种硬币,两种纸币。

有五种不同价格的商品可供选择,并且通过显示译码电路,可在LED显示器显示余额,同时具备找零、机器存有硬币不足LED 亮起报警、缺货LED亮起报警等功能。

现代的自动售货机有使用方便快捷,可以全天候24小时工作,占地少,成本低,维护简单等优点,有着广阔的前景。

采用FPGA方式用Verilog HDL硬件描述语言,设计简易的自动售货机,其编程简单,开发周期短,硬件运行速度快,开发成本低,稳定性高等优点。

关键词:自动售货机; Verilog HDL;有限状态机;Modelsim;ABSTRACTThis topic design a simple vending machine is based on the FPGA chip. EP2C35 chip, and DE2 development board for the hardware platform, the use of Verilog HDL to compile and simulation in the Quartus Ⅱ software platform, and through the DE2 development achieve the basic functions of a Si mple vending machine.board by to download code to the chip. In this design,it used of finite state machine (FSM) design, choice of goods state, shipment status and give change coin state in the three inter-state transfer, in order to achieve the choice of goods, monetary operations, the cargo control, features such as display and give change. The vending machine system to identify three kinds of coins, there are five kinds of goods at different prices to choose from, and by showing decoding circuit, in DE2 onboard LED display shows the balance, both functions give change. Modern vending machines are convenient, it can work 24 hours a day, covers an area of small, low cost, simple maintenance, there are broad prospects. Manner with the use of FPGA hardware description language Verilog HDL, design simple vending machine, the programming is simple, short development cycles, fast hardware, the development of low cost, high stability.Key words: vending machines; Verilog HDL; Finite state machine; FPGA; DE2 development board;目录绪论..............................................................1 第一章系统方案设计...............................................31.1 人机交换界面设计..........................................31.2 系统方案设计..............................................41.2.1 系统方案确定..........................................5 第二章系统各模块硬件设计.........................................72.1 DE2开发板介绍.............................................72.2 自动售货机各模块设计.....................................82.2.1 自动售货机主体设计...................................82.2.2 LED显示设计方案.....................................92.2.3 货币输入信号设计方案................................102.2.4 出货显示设计方案....................................11 第三章系统的软件设计............................................123.1 EDA工具软件介绍.........................................133.2 软件设计总方案...........................................143.3 售货机主芯片程序设计方案................................153.4 BCD-LED七段数码显示译码器...............................173.5 硬币输入信号程序设计方案................................183.6 出货显示程序设计方案....................................193.7 自动售货机各部分组合连接设计............................20 第四章调试及仿真...............................................214.1 用Quartus Ⅱ完成PFGA设计步骤...........................214.2 自动售货机波形仿真结果..................................214.2.1 自动售货机波形仿真..................................214.2.2 输入信号处理程序波形仿真............................234.2.3 BCD-LED七段数码显示译码器波形仿真..................234.2.4 出货显示译码器波形仿真..............................244.2.5 自动售货机主芯片程序仿真波形.......................254.3 下载、仿真及测试..........................................25 结论..............................................................26 致谢.............................................................27 参考文献..........................................................28 附录1(程序源代码)...............................................29 附录2(整体设计原理图)...........................................35绪论自动售货机最早出现在二十世纪五、六十年代的西欧,英国是较早实行自动售货机售货的国家之一。

基于FPGA的自动售货机

基于FPGA的自动售货机

目录第1章绪论.......................................... 错误!未定义书签。

1.1本文研究内容 (1)1.2目的与意义 (1)第2章系统设计方案 (2)2.1货物自动贩卖机总体设计方案 (2)第3章货物自动贩卖机的基本原理 (4)3.1货物自动贩卖机功能 (4)3.2货物自动贩卖机的基本组成 (4)3.2.1 投币信号产生的设计 (4)3.2.2 时钟电路的设计 (4)3.2.3 数码显示的设计 (4)第4章货物自动贩卖机软件设计 (6)4.1软件实现功能综述 (6)4.2计数功能的设计 (6)4.3投币功能的设计 (6)4.4显示功能的设计 (6)4.5显示功能的设计 (7)4.6 代码段 (7)第5章货物自动贩卖机系统的仿真与实现 (18)第6章课程设计总结.................................. 错误!未定义书签。

第1章绪论1.1本文研究内容本次设计的是一个货物自动贩卖机。

货物自动贩卖机主要是由以下几个部分构成,电源电路、数码显示、时钟脉冲、投币脉冲、闸门时间控制等,各部件形成一个简单的饮料自动提取机系统。

本设计采用EDA技术,通过FPGA实现了数字电子钟电路的设计,并完成对电路的功能进行仿真。

1.2目的与意义本系统用于模拟现实生活中的自动售货贩卖机。

可以模拟四种商品的买卖、存贮、控制等等功能。

并模拟买家模式和管理模式,可以分开进行商品买卖的模拟和商品上架的模拟。

第2章系统设计方案2.1饮料自动提取机总体设计方案自动售货机控制系统设计主要有四个功能模块,一个为货币:该模块能完成硬币处理,余额计算。

一个为分频模块:功能主要是实现各个部分的操作。

一个为售货器模块:该模块主要是负责进行货物的管理。

最后一个是控制模块:主要负责进行商品买卖控制。

图2.1饮料提取机的系统组成框图设计思路:首先,我们对于物品存储进行模拟,共有商品买卖和商品管理两个模式。

FPGA售卖机

FPGA售卖机

大学实验报告课程名称:数字系统现场集成技术实验项目名称:实验四(自动售货机设计和实现)学院:专业:指导教师:报告人:学号:班级:实验时间:实验报告提交时间:教务部制基本要求:该实验为团队协作,2人一个小组。

可以对3种不同种类的货物进行自动售货,价格分别为A=4.00, B=2.50, C=1.00。

售货机可以接受10元,5元,1元三种硬币(即有三种输入信号SY,WY,IY),并且在7段数码管(二位代表元,一位代表角)显示已投入的总钱数,选择货物的输入信号Ia,Ib,Ic,输出指示信号为Sa, Sb ,Sc 分别表示售出相应的货物,同时输出的信号yuan, jiao代表找零,并显示在7段数码管上。

高级要求(可选):VGA显示3种货物图片及其价格,鼠标点击购买数量(1-9)后显示总价,安规格说明2中的button2-button4输入硬币,VGA显示已投入的总钱数,鼠标点击购买后,显示找零数目,购买物品闪烁,交易完成。

规格说明:∙按一下button1按钮,表示购买货物A,第一个LED灯亮;按两下button1按钮,表示购买货物B,第二个LED灯亮;按三下button1按钮,表示购买货物C,第三个LED灯亮,同时7段数码管显示所要购买货物的价格。

∙LED灯亮后,开始输入硬币。

button2按一下,输入10元,按两下,输入二十元,以此类推;Button3按一下输入5元,按两下输入10元,以此类推;button4按一下输入1元,按两下输入2元,以此类推。

7段数码管显示已投入的总钱数,再次按下button1键,7段数码管显示找零数目,同时指示货物的LED灯熄灭。

∙如果投入的钱币不够就按下button1键确认购买,数码管显示“ER”。

∙本实验使用FPGA板:Sparant6XC6SLX16CSG324C(建project时,需要选择该芯片的型号)。

1、顶层代码:module top(input clk,input rst,input[4:0] btn,output[3:0] an,output[7:0] seg,output[2:0] led);wire clk,rst;wire[7:0] first_seg,second_seg,third_seg; wire[4:0] btn_down;seg_drv v1(.clk(clk),.rst(rst),.first_seg(first_seg),.second_seg(second_seg),.third_seg(third_seg),.an(an),.seg(seg));main v2 (.clk(clk),.rst(rst),.btn_down(btn_down),.first_seg(first_seg),.second_seg(second_seg),.third_seg(third_seg),.led(led));btn_scan v3 (.clk(clk),.rst(rst),.btn(btn),.btn_down(btn_down));Endmodule2、数码管驱动:module seg_drv(input clk,input rst,input[7:0] first_seg,input[7:0] second_seg,input[7:0] third_seg,// input[7:0] forth_seg,output reg[3:0] an,output reg[7:0] seg);localparam[1:0] s0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;reg[1:0] state;always@(posedge clk,posedge rst)beginif(rst)beginan<=4'b1111;seg<=8'b1111_1111;state<=s0;endelsebegincase(state)s0:beginan<=4'b1110;seg<=first_seg;if(ms_up)state<=s1;elsestate<=state;ends1:beginan<=4'b1101;seg<=second_seg;if(ms_up)state<=s2;elsestate<=state;ends2:beginan<=4'b1011;seg<=third_seg;if(ms_up)state<=s3;elsestate<=state;ends3:beginan<=4'b0111;seg<=8'b1111_1111;if(ms_up)state<=s0;elsestate<=state;endendcaseendendreg[17:0] ms_cnt;reg ms_up;always@(posedge clk,posedge rst)beginif(rst)beginms_cnt<=0;ms_up<=0;endelsebeginif(ms_cnt==200000)beginms_cnt<=0;ms_up<=1;endelsebeginms_cnt<=ms_cnt+1'b1;ms_up<=0;endendendendmodule3、按键扫描与消抖:module btn_scan(input clk,input rst,input[3:0] btn,output reg[3:0] btn_down);localparam[1:0] s0=2'b00,s1=2'b01,s2=2'b10;reg[1:0] state;reg[3:0] btn_reg;always@(posedge clk,posedge rst)beginif(rst)beginbtn_down<=4'b0000;state<=s0;endelsebegincase(state)s0: beginbtn_down<=4'b0000;if(btn)state<=s1;elsestate<=s0;ends1: beginif(cnt_done)beginif(btn)beginstate<=s2;btn_reg<=btn;endelsestate<=s0;endelsestate<=s1;ends2:beginif(btn==4'b0000)beginbtn_down<=btn_reg;state<=s0;endelsebeginbtn_down<=btn_down;state<=s2;endendendcaseendendreg[20:0] cnt;reg cnt_done;always@(posedge clk,posedge rst)beginif(rst)begincnt<=21'b0;cnt_done<=1'b0;endelse if(state==s1)begincnt<=cnt+1'b1;if(cnt==21'd2000000)begincnt<=21'b0;cnt_done<=1'b1;endendelsebegincnt<=21'b0;cnt_done<=1'b0;endendendmodule4、主程序code:module main(input clk,input rst,input[3:0] btn_down,output reg[7:0] first_seg,output reg[7:0] second_seg,output reg[7:0] third_seg,output reg[2:0] led);localparam[2:0] s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100,s5=3'b101;reg[2:0] state;reg[3:0] money0,money1;reg[3:0] price;reg[4:0] change;reg[3:0] change1,change0;always@(posedge clk,posedge rst)beginif(rst)beginled <= 3'b000;money0 <= 0;money1 <= 0;change <= 0;price <= 0;state <= s0;endelsebegincase(state)s0:beginled <= 3'b000;if(btn_down[0] == 1)state <= s1;elsestate <= s0;ends1:beginled <= 3'b100;price <= 1;money0 <= 0;money1 <= 0;change<=0;if(btn_down[0] == 1)state <= s2;else if(btn_down[3:1])state <= s4;elsestate <= s1;ends2:beginled <= 3'b010;price<=2.5;money0 <= 0;money1 <= 0;change <= 0;if(btn_down[0] == 1)state <= s3;else if(btn_down[3:1])state <= s4;elsestate <= s2;ends3:beginled <= 3'b001;price <= 4;money0 <= 0;money1 <= 0;change <= 0;if(btn_down[0] == 1)state <= s1;else if(btn_down[3:1])state <= s4;elsestate <= s3;ends4:begincase(btn_down[3:1])3'b001:money1 <= money1 + 1;3'b010:beginmoney0 = money0 + 5;if(money0 >= 10)beginmoney1 <= money1 + 1;money0 <= money0 - 10;endelsemoney1 <= money1;end3'b100:beginmoney0 <= money0 + 1;if(money0 >= 9)beginmoney1 <= money1 + 1;money0 <= 0;endelsemoney1 <= money1;endendcaseif(btn_down[0] == 1)state <= s5;elsestate<=s4;ends5:beginif((money1*10 + money0)>= price)beginchange <= money1*10 + money0 - price;if(change >= 20)beginchange1 <= 2;change0 <= change - 20;endelse if(change >= 10)beginchange1 <= 1;change0 <= change - 10;endelsebeginchange1 <= 0;change0 <= change;endendelsechange <=5'b01110;if(btn_down[3:0])state <= s0;elsestate<=s5;endendcaseendend//译码always@(posedge clk,posedge rst)beginif(state == s0)beginthird_seg<=8'b0000_0011;second_seg<=8'b0000_0010;first_seg<=8'b0000_0011;endelse if(state == s1)beginthird_seg<=8'b0000_0011;second_seg<=8'b1001_1110;first_seg<=8'b0000_0011;endelse if(state ==s2)beginthird_seg<=8'b0000_0011;second_seg<=8'b0010_0100;first_seg<=8'b0100_1001;endelse if(state ==s3)beginthird_seg<=8'b0000_0011;second_seg<=8'b1001_1000;first_seg<=8'b0000_0011;endelse if(state ==s4)begincase(money0)4'b0000: second_seg<=8'b0000_0010;4'b0001: second_seg<=8'b1001_1110;4'b0010: second_seg<=8'b0010_0100;4'b0011: second_seg<=8'b0000_1100;4'b0100: second_seg<=8'b1001_1000;4'b0101: second_seg<=8'b0100_1000;4'b0110: second_seg<=8'b0100_0000;4'b0111: second_seg<=8'b0001_1110;4'b1000: second_seg<=8'b0000_0000;4'b1001: second_seg<=8'b0000_1000;endcasecase(money1)4'b0000: third_seg<=8'b0000_0011;4'b0001: third_seg<=8'b1001_1111;4'b0010: third_seg<=8'b0010_0101;4'b0011: third_seg<=8'b0000_1101;4'b0100: third_seg<=8'b1001_1001;4'b0101: third_seg<=8'b0100_1001;4'b0110: third_seg<=8'b0100_0001;4'b0111: third_seg<=8'b0001_1111;4'b1000: third_seg<=8'b0000_0001;4'b1001: third_seg<=8'b0000_1001; endcasefirst_seg<=8'b0000_0011;endelse if(state ==s5)beginif(change == 5'b01110)beginthird_seg<=8'b0000_0011;second_seg<=8'b0110_0001;first_seg<=8'b0110_0001;endelsebegincase(change0)4'b0000: second_seg<=8'b0000_0010;4'b0001: second_seg<=8'b1001_1110;4'b0010: second_seg<=8'b0010_0100;4'b0011: second_seg<=8'b0000_1100;4'b0100: second_seg<=8'b1001_1000;4'b0101: second_seg<=8'b0100_1000;4'b0110: second_seg<=8'b0100_0000;4'b0111: second_seg<=8'b0001_1110;4'b1000: second_seg<=8'b0000_0000;4'b1001: second_seg<=8'b0000_1000;4'he:second_seg<=8'b0110_0000;endcasecase(change1)4'b0000: third_seg<=8'b0000_0011;4'b0001: third_seg<=8'b1001_1111;4'b0010: third_seg<=8'b0010_0101;4'b0011: third_seg<=8'b0000_1101;4'b0100: third_seg<=8'b1001_1001;4'b0101: third_seg<=8'b0100_1001;4'b0110: third_seg<=8'b0100_0001;4'b0111: third_seg<=8'b0001_1111;4'b1000: third_seg<=8'b0000_0001;4'b1001: third_seg<=8'b0000_1001;endcaseif(led[1] == 1)first_seg<=8'b0100_1001;elsefirst_seg<=8'b0000_0011;endendendendmodule三、实验结果:买货物2,价格2.5,投币15,找零12.5金币不够显示为错误深圳大学学生实验报告用纸四、实验结论:通过此次实验加深了对数码管驱动以及按键扫描与消抖工作原理的的运用,对各个模块搭建系统也有了新的认识。

基于FPGA的自动售货机控制系统——开题报告

基于FPGA的自动售货机控制系统——开题报告

填写要求1.开题报告只需填写“文献综述”、“研究或解决的问题和拟采用的方法”两部分内容,其他信息由系统自动生成,不需要手工填写。

2.为了与网上任务书兼容及最终打印格式一致,开题报告采用固定格式,如有不适请调整内容以适应表格大小并保持整体美观,切勿轻易改变格式。

3.任务书须用A4纸,小4号字,黑色宋体,行距1.5倍。

4.使用此开题报告模板填写完毕,可直接粘接复制相应的内容到毕业设计网络系统。

内核,一次只能执行一个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占的风险。

而FPGA不使用操作系统,拥有真正的并行执行和专注于每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。

4、长期维护——FPGA芯片是现场可升级的,无需重新设计ASIC所涉及的时间与费用投入。

举例来说,数字通信协议包含了可随时间改变的规范,而基于ASIC的接口可能会造成维护和向前兼容方面的困难。

可重新配置的FPGA芯片能够适应未来需要作出的修改。

随着产品或系统成熟起来,用户无需花费时间重新设计硬件或修改电路板布局就能增强功能。

1.3FPGA实现自动售货机控制系统的基本原理如图1所示,本次设计的售货机是由四个模块组成的,分别为:分频模块、扫描模块、主控模块、显示模块。

图1 自动售货机内部模块分频模块的作用是对外来的时钟信号进行分频以达到自己所需的频率。

扫描模块采用的是实验箱上的4X4矩阵键盘对商品的单价进行手动的输入。

显示模块的作用是对商品的单价、数量以及投币的金额进行显示。

主控模块是自动售货机控制系统的核心模块,主要实现存储商品信息、控制购物进程、处理投币金额、控制商品出货、计算余额以及控制LED灯显示等功能。

其主要分五个步骤来完成:1、信息存储——信息存储是初始设置,对任务所需要的四种商品的价格和数量进行手动的输入并保存,保存完之后系统执行第二个步骤。

2、投币选择——顾客可以投入0.5元、1元、5元、10元四种类型的货币,投币完2.毕业设计任务要研究或解决的问题和拟采用的方法:(1)毕业设计任务要研究或解决的问题研究基于FPGA的自动售货机控制系统问题,要求:①阅读FPGA相关的论文和书籍,系统地了解FPGA相关知识和原理的目的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于FPGA的简单自动邮票销售系统的设计章节目录第一章设计指标 (1)第二章系统概述 (1)2.1设计思想 (1)2.2可行性论证 (2)2.3各功能的组成 (2)2.4总体工作过程 (3)第三章单元电路设计与分析 (4)3.1各单元电路的选择 (4)3.2设计及工作原理分析 (11)第四章电路的组构与调试 (13)4.1 遇到的主要问题 (13)4.2 现象记录及原因分析 (13)4.3 解决措施及效果 (13)4.4 功能的测试方法、步骤、设备、记录的数据 (15)第五章结束语 (16)5.1对设计题目的结论性意见及进一步改进的意向说明 (16)5.2 总结设计的收获与体会 (18)附图(电路总图) (20)参考文献 (21)第一章设计指标设计指标:设计一个简易投币式邮票自动销售控制电路:(1)系统允许投入0.5元和1元两种硬币,售出面值为2元的邮票。

(2)当硬币投入后,系统用七段LED数码管显示已投入的累计币值。

(3)当投币累计等于2元时,输出邮票;当投币累计大于2元时,输出邮票并输出找零币值。

(4)输出信号有效电平维持3s时间,输出信号无效后系统回到初始状态(累计币值为0。

)输出信号维持期间,不能允许再投入硬币(封锁投币信号,实际产品可封锁投币口)。

(5)输出信号有效时蜂鸣器以0.5s鸣响、0.5s间隔的方式发出提醒音,输出邮票时蜂鸣器的鸣响频率为1KHz,输出邮票并找零时蜂鸣器的鸣响频率为2KHz。

(6)为了保证系统上电时处于初始状态,设置一个状态机复位键。

第二章系统概述2.1设计思想用FPGA实现控制系统,用两个脉冲分别模拟0.5元和1元两种硬币,投入0.5元时X1=“1”,投入1元时X2=“1”,两个信号同时为“1”时无效,状态保持不变;用两个发光二极管分别指示输出邮票和找零,邮票输出信号为Z1,邮票输出并找零的信号为Z2,用时序逻辑电路记忆累计币值,累计币值用两个七段LED数码管显示,通过LP—2900开发装置显示。

2.2可行性论证通过两个脉冲可分别模拟0.5元与1.0元两种币值的投入,在币值达到邮票输出前需要记忆已输入币值的状态,以确保总币值的准确性,完成整个电路系统的要求。

而系统的累计币值最多为0元、0.5元、1.0元、1.5元、2元、2.5元共6种状态,若采用米利型时序电路实现,仅需记忆0元、0.5元、1.0元、1.5元共4种状态,通过触发器结合时序逻辑电路完全可以实现状态的保持与记忆,完成币值的累加,再结合其他电路单元,此设计系统完全可以实现。

2.3各功能的组成1)币值投入(即信号输入):用两个按键分别模拟两种不同币值的硬币,产生两路开关量脉冲信号,将两路信号综合为一路,经过数字单稳态触发电路对信号进行同步化处理,消除按键抖动,并可将综合后的投币信号归化为宽度是一个CP脉冲周期的状态触发信号,保证系统需要在任一按键作用时都要产生一个状态机的触发脉冲信号,同时输入端触发器的清零做清零用,使能端由Z1输出接反向器控制达到输出时封锁输入的目的;2)币值累计及状态变化判断:由状态机实现,用ROM方式实现状态机的激励控制,触发器的每个激励和电路的每个输出都由存储器的一位数据输出端控制,存储器地址由电路的输入X 和状态机的状态变量Q控制,存储器中每个单元的存储内容是对应电路输入和状态机现态某个组合时的次态和输出逻辑值,此实验用ROM实现米利型状态机的组合逻辑关系,ROM的容量为16×4,以电路输入X2X1和触发器Q1Q0控制ROM的地址A3—A0,ROM的数据输出q3-q0控制电路输出Z2Z1和触发器激励D1D0;3)邮票及找零输出:当累计币值达到2元时,由Z1控制的发光二极管亮表示输出邮票,当累计币值达到2.5元时,Z2Z1控制的两个发光二极管都亮,表示输出邮票并找零,同时由Z2Z1控制分频器使输出邮票时蜂鸣器的鸣响频率为 1KHz,输出邮票并找零时蜂鸣器的鸣响频率为 2KHz;4)定时电路:采用触发器维持输出信号Z2Z1不变,通过74LS161的计数功能,以1Hz脉冲信号作为时钟信号,进行模3计数,使灯亮维持三秒,即输出邮票和找零操作提示维持3S;5)累计币值显示电路:由于采用米利型控制方式,则用状态码Q1Q0控制七段译码显示电路,输出累计币值0、0.5、1、1.5元4个状态,当累计币值达2元或2.5元时清零。

2.4总体工作过程刚开始未输入硬币时,七段显示译码显示0.0,;当按下按键表示输入0.5元时,七段显示译码显示0.5;当输入累计达到1元时七段显示译码显示1.0;当输入累计达到1.5元时,七段显示译码显示1.5;再输入,当输入累计达到2.0元时七段显示译码清零,同时表示输出邮票的发光二极管亮,蜂鸣器以1KHz的频率进行0.5S鸣响,0.5S间隔的方式鸣响;当累计币值是2.5元时,七段显示译码清零,同时表示输出邮票和表示找零的发光二极管蜂同时亮,并且蜂鸣器以2KHz 的频率进行0.5S鸣响,0.5S间隔的方式鸣响,二极管亮和蜂鸣器响的时候输入端被封锁,输入无效,输出状态维持3S时间,时间到自动复位清零,发光二极管灭同时蜂鸣器停止鸣响。

第三章单元电路设计与分析3.1各单元电路的选择1) 输入信号及信号处理电路:单路输入信号经数字单稳态电路处理::双路输入信号经数字单稳态电路处理:2)状态机实现币值的累计及状态变化电路:其中ROM的存储数据表可根据状态转移表得出如下:3)分频电路:倍率为10的分频电路:其仿真波形如下:将上面建立的倍率为10的分频电路元件进行如下级联得到一个8级倍率为10的分频电路:当CP端接到10MHz的石英晶体振荡器OSC时,可在输出端得到输出频率分别为 1Hz、10Hz、100Hz、1KHz、10KHz、100KHz、1MHz、10MHz 8组占空比为50%的脉冲信号。

由分频器的10KHz输出端经7490进行5分频得到要求的2KHz频率,再由74153M4选1数据选择器通过Z2Z1进行蜂鸣器鸣响频率的选择:4)定时电路:由74LS161进行模3计数,由分频器1Hz的输出端作为时钟脉冲,res 返回接到信号输入部分的清零端,使达到输出要求后清零并保持3S的输出提示:5)输出控制电路:Z2Z1输出分别经过如下电路进行保持,保持后的信号作为定时电路中74LS161的使能控制端,配合定时电路,达到输出信号保持3S的要求:6)显示译码控制累计币值显示电路由74LS161计数器来控制七段显示译码器两位显示,同时该控制端接74LS157的选择端SEL,使所控制的显示位与数据选择器选择的数相对应,再通过状态机的Q1Q0输出端来控制数据选择器74LS157(四2选1)的数据输入端,选择的数据通过输出端分别实现累计币值的显示。

其中Z2Z1Q1Q0为系统的输出,A4A3A2A1对应七段译码显示器的第一位显示,B4B3B2B1对应七段译码显示器的第二位显示。

由上表可得:A4=A3=A2=0 A1=Q1 B4=B2=0 B3=B1=Q0即由Q1Q0来控制0.0元、0.5元、1.0元、1.5元4种状态的显示变化,电路图实现如下:将74LS157 的数据输出端接到7448,将累计的币值在七段显示译码器上显示出来:3.2设计及工作原理分析工作原理框图如下:输入信号经处理后作为ROM的输入端A3A2,ROM中保存数据为根据币值累计的不同状态列出的状态转移表得出的状态变化数据,ROM输出端q3q2是输出Z2Z1,q1q0经D触发器记忆后作为ROM的A1A0输入,D触发器的输出Q1Q0控制七段显示译码器的累计币值显示,由Z2Z1控制蜂鸣器的鸣响频率及输出状态的提示,延迟时间由定时电路集合保持电路进行3S延迟,复位键接输入端的清零引脚,Z2Z1同时控制输入端的使能端以达到输出时封锁输入的目的。

各时钟脉冲由分频器提供。

第四章电路的组构与调试4.1 遇到的主要问题1、蜂鸣器不响,作输出提示用的发光二极管只短暂的闪一下而没能维持3S;2、输出提示灯亮同时蜂鸣器开始鸣响,但输出维持的3S过程中继续按输入信号输入仍有效;3、蜂鸣器响,但有时响两声(即2S),有时响三声(即3S),不能固定在要求的3S时间上。

4.2 现象记录及原因分析1、对于问题1,蜂鸣器器不响但输出提示灯却闪了下,说明信号能够到达输出端,电路无中断问题,而发光二极管一闪即灭,输出不能维持3S,说明定时电路部分出现了问题;2、对于问题2,输出信号时输入端输入仍然有效,说明输入信号封锁电路设置出现了问题;3、对于问题3,有时响2S,有时响3S,说明要么是定时电路出问题了要么是激励脉冲的作用沿不同步;4.3 解决措施及效果1、对于现象1,首先检查定时电路是否工作,通过对74LS161模块进行单独的仿真及输入输出波形检测,结果显示该模块能够实现模三计数实现3秒定时,没有问题,计数模块没问题,意味着输出状态输出后瞬间进入下一状态,达到邮票输出后状态并未保持,即缺少了输出保持模块,于是给输出增添如下图保持电路模块,并用保持后的输出信号来控制74LS161的使能端,重新测试,蜂鸣器响,灯亮成功延迟。

输出信号保持电路:2、对于现象2,只需要在输入端设置封锁模块即可解决,封锁模块设置如下:将输入端的D触发器换为具有使能端的D触发器,使能端由输出信号Z1接反向器控制,当Z1为“1”并输出信号时,经反向器后为低电平控制使能端,此时输入无效,达到封锁输入端的目的,在Z1未达到输出要求之前,Z1为“0”,经反向器后为高电平控制D触发器的使能端,不影响输入信号的输入。

重新测试,输入信号封锁成功。

3、对于现象3,输出维持状态在2S与3S间反复,检查74LS161确定不是计数定时的问题后,说明触发脉冲不同步,将用来作为时钟脉冲信号的1Hz脉冲经过反向器后再触发计数器,同时反向后的信号与触发蜂鸣器的信号经与门后共同触发蜂鸣器。

改良后重新测试,测试结果为鸣响3次即3S占大多数,但偶尔还会有2S的情况,继续改善,将产生用来触发74LS161使能端的保持信号的电路改为如下所示(即将原本控制D触发器输入端及脉冲端的两路信号对调):重新测试,电路成功延迟3S。

4.4 功能的测试方法、步骤、设备、记录的数据检查确认电路连接正确后,将电路烧入LP—2900开发装置开始测试:X2与X1分别连接PS4和PS3两个正脉冲按键,按下PS3一次表示投入0.5元,按下PS4一次表示投入1.0元,复位键接PS1,按下则清零复位。

1、测试输入与币值累计:从0开始,按不同组合按下PS3与PS4累计币值,计算相应的累计币值,并于七段显示译码器显示的币值对照,币值显示从0到1.5全部正确,符合米利型电路的显示要求。

2、测试输出状况:观察累计币值达2元或2.5元时的状况,当累计币值达2元或2.5元后显示自动清零。

相关文档
最新文档