基于FPGA的餐馆点菜系统.doc_第1页
基于FPGA的餐馆点菜系统.doc_第2页
基于FPGA的餐馆点菜系统.doc_第3页
基于FPGA的餐馆点菜系统.doc_第4页
基于FPGA的餐馆点菜系统.doc_第5页
免费预览已结束,剩余25页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要随着电子技术的不断发展,电子系统的设计方法也发生了很大的变化,传统的设计方法正逐步退出历史舞台,而基于EDA技术的芯片设计正在成为电子系统设计的主流。大规模可编程逻辑器件CPLD和FPGA是当今应用最广泛的两类可编程专用集成电路(ASIC),工程师可以利用它们在办公室或实验室里设计出所需要的专用集成电路,从而大大缩短了产品的上市时间,降低了开发成本。本文主要讲一种基于可编程逻辑阵列(FPGA)饭店点菜系统的数字化方案。在单片FPGA中,采用硬件描述语言VHDL实现了包括键盘模块,控制模块,显示模块,信息调整模块的设计。基于MAX+plus II 软件的仿真结果显示,在系统使用时状态稳定,该店才系统能够满足用户使用时的信息实时性和准确性的要求。关键词 饭店点菜系统 现场可编程门阵列 硬件描述语言AbstractWith rapid development of the electronic skill. electronic design has happened a large change. A fully digitized hardware design scheme of three phase phase-locked loop controller base on grammable gate arrays(FPGA)is presented. This paper stresses based on a programmable logic array (FPGA) Restaurant Select food system of digital programs. In single-chip FPGA using VHDL hardware description language, including the realization of the keyboard module, control module, Information adjustment module design. Based on the MAX + plus II software simulation results show that the system using state stability, His only system to meet the users of real-time information and accuracy requirements. Keywords Restaurant Select food system FPGA VHDL2第1章 绪论1.1 选题意义目前在饭店用餐时,顾客都是通过人工方式,即当顾客点菜时,服务员向顾客推荐各种菜品,并记录顾客所点的菜,然后再将菜单送至总服务台。使用这种传统的方式,在饭店顾客比较多的时候,服务员就会应接不暇,有时还会忙中出错,这样不仅耽误了顾客的时间,还影响了顾客对饭店的印象。如果采用电子点菜系统,客人点菜的时候就免去了人工点菜的烦琐,而且能实时地了解菜的口味和价格,方便了顾客的消费,同时也减轻了餐馆的服务压力。这不仅为提高饭店的服务质量和扩大知名度奠定了基础,更顺应了当前信息时代的服务行业科技。1.2 研究内容及背景在数字化普及的今天,各行各业都以高速发展的电子产品取代了以前陈旧的工作模式,例如:以IC卡式收取水电费取代了以往员工上门收取;KTV以触摸屏式点歌取代了以往人工点歌等等。饭店行业也是如此,为了克服传统点菜的弊端,从而设计出一系列的电子产品,目前在国内外大中型酒店通常使用的电子点菜系统有两种,一种是是在Windows CE 嵌入式操作系统下设计的PDA掌上点菜机,另一种是触摸屏式点菜POS机 ,这两种点菜机无线传输的距离长,功能强,但是要与性能很高的PC作为服务器才能得以实施,成本较高。基于现场可编门阵列(FPGA)硬件设计电子点菜系统是一种全新的设计思想,用户可根据需要对FPGA进行重新编程,在最短时间内,以较低的成本设计出自己的专用集成电路。本文对基于FPGA设计饭店电子点菜系统进行了设计。按照模块化的设计思想,采用VHDL语言设计出键盘输入模块、显示模块、控制模块及信息调整模块。这种方式功能齐全并且成本较小,必将成为下一代高性能低成本电子点菜系统设计的一个新趋势。1.3 设计结构本文首先描绘整体原理图并且将其原理掌握,然后根据题目的要求来设计题目中所要求的电路模块,其模块是以点菜系统为工作核心,设计出功能模块电路图后再按模块化思想将每一个模块分别用VHDL语言将其描述出来,然后进行模拟编译,生成电路元件,然后使用MAX+plus II 软件综合原理图和VHDL程序做出仿真图,经过仿真确认整个系统准确可靠。第2章 饭店电子点菜系统的硬件电路设计2.1 电子点菜系统的介绍2.1.1电子点菜系统的模块介绍电子点菜系统包含三个主要的模块: 键盘模块:是完成使用者信息输入的单元,用来完成密码设置与输入、菜品种类与价格输入、菜品选择等功能; 显示模块:由710 的LED阵列显示对应所选菜品,由4个七段数码管显示键盘输入的信息,由2个七段数码管显示单价,再由4个七段数码管显示总价格; 控制模块:是整个系统的核心部分,其作用有:采集键盘输入的信号并经过处理运算后传输到显示模块;存储用户设置的密码和菜品信息并可以及时修改;通过改变工作模式可以切换键盘模块和显示模块的功能。2.1.2 电子点菜系统的特点由于本点菜系统是针对中小型餐饮企业设计开发的,因此该系统设计主要突出了操作设备成本低廉,安装简易,数据传输快捷,用户操作方便,客户查询界面清晰,最终消费过程明了等应用特点,为餐饮企业解决劳动力密集、管理过程繁杂、易出现跑冒滴漏等问题,并杜绝由此引起的不良后果;同时,针对餐饮企业的规模和开放式点菜特点,要求该系统在容量、稳定性、严密性等方面有良好的表现,实现从点菜、出菜、加菜、撤菜到结账的全过程自动化。其工作过程是:餐厅服务员引导顾客到餐台就座,服务员根据顾客要求通过键盘输入完成点菜或由顾客自己完成点菜,点菜后通过终端显示设备为顾客显示菜品价钱确认。图2-1 点菜系统实物样图2.2 电子点菜系统的硬件部分在此章节中介绍了我设计的饭店电子点菜系统的硬件电路部分,整个系统由ALTERA公司的EPF10K30R芯片作为控制器,外界电路有数字键盘、加减键盘、功能切换键、LED阵列、数码管及辅助电源组成,以下是电子点菜系统的结构框图:图2-2 点菜系统结构图2.2.1键盘输入部分键盘是由若干个按键组成的开关矩阵键盘输入部分是由3组键盘组成,共13个按键,分别是数字键盘0到9、加法键盘和减法键盘和功能切换键盘,通过74LS245(八同相三态缓冲器)作为缓冲器,再由FPGA识别键盘信号。图2 3 键盘硬件电路图2.3.2显示部分控制器将键盘输入的数据经过译码器的q3端口传送到显示模块的DATA端口,为了节省输出端口资源,键盘输入信息的显示部分采用了动态显示的工作方式,其工作原理如下:LED数码管是共阴极的,总共可带动8位这样的LED数码管。动态驱动显示接口与静态驱动显示接口的一个明显特点是:动态驱动法将多位LED同名段的选择线都并联在一起,即8位中的所有同名段a接在一起,所有b段都接在一起,这样只要一个8位的锁存器来控制段码a、b、c、d、e、f、g就够了,另外用一个锁存器来控制点亮的位,因此需要2个8位的I/O端口,由于所有位的位选择码是用一个I/O端口控制,所有段的段选择码也是用一个I/O端口控制,因此在每个瞬间,8位LED只可能显示相同的字符。要想每位显示不同的字符,必须要采用扫描的显示方式。即在每一瞬间只能使某一位显示相应的字符,在此瞬间,由位选择控制的I/O端口在要显示的位上送入选通电平(共阴极接法送入低电平,共阳极接法送入高电平),以保证让该位显示字符;再由段选择控制的I/O端口输出相应字符的段选择码,如此循环下去,使每一位都显示该位应显示的字符,并保持延时一段时间,然后再选中下一位,利用发光显示器的余辉及人眼的视觉暂留特点,给人一种显示器同时被点亮的效果。段选择码,位选择码在每送入一次后一般需要延时15ms时间。 使用74LS244作为驱动,其中电阻计算如下:每段点亮时需要电压为2V,电流5 mA,所以每段应串入电阻为 (2-1)LED阵列显示中采用共阴极连接,经过FPGA行列扫描,分别加以正负电压,确定点亮第几行、第几列的LED,可以让其显示出是哪个键盘按下了。2.3.3电源设计FPGA对电源的要求与DSP非常相似,一般需要2.5V,1.8V或1.5V作为核心电压,3.3V或2.5V作为I/O口电压,为了保证FPGA正常启动,核心电压(VCCINT)的上升时间tr必须在特定的范围内,此外,电压上升必须单调,不允许有波动。某些DC/DC变换芯片,比如TI的TPS5461X系列可以外部调节电压上升时间,给设计带来了方便。在供电顺序上,推荐所有的供电电压同时上电,否则,可能产生较大的启动电流。FPGA由一个未连接的电路单元阵列组成,通过用户编程进行配置。FPGA的电源功耗一般取决于以下因素:内部资源的使用率,工作时钟频率,输出变化率,布线密度,I/O电压等,不同的应用,电源实际功耗相差非常大。本设计电源采用的是DC/DC控制器电源。DC/DC控制器没有内置的FETs,因此,它能够保证设计有很大的灵活性,设计者可以选用有特定导通电阻的外接FET晶体管,并根据应用的需要调整电流限。采用这种方案设计,既要选择适当的输入/输出电容、输出电感,又要选择符合要求的FET,增加了设计难度和总成本。此外,由于FET外置,占用空间也相对较大。目前DC/DC控制器芯片市场上非常多,比如TI,Linear,Maxim,National等公司都有相应的产品,规格也相当全,仅Maxim一家就有数十种此类产品。MAX1951是MAXIM公司的一款高效的DC-DC电源转换芯片,主要用于DSP、FPGA、ASIC的内核及I/O口供电。其高达94的转换效率、8脚的SOP表贴封装及连续工作时956 mW的低功耗使其特别适合于便捷式电子设备的应用。MAX1951的输入电压范围为2.65.5 V,输出电压范围为0.8 VVin(可调输出),输出电流可达2 A,精度可达1,开关频率为1 MHz,输出效率达94,且内含过载及过热保护电路。本文给出了采用该器件为FPGA系统供电。图2 - 4 MAX1951电源电路图输入器件参数的设计输入滤波电容主要是用来降低供电系统的电流峰值、电压纹波和电路开关噪声的影响,使芯片的输入电压纹波控制在3以下。图3-4中、分别为旁路电阻、旁路电容及参考旁路电容,一般取图中定值即可。输出器件参数的设计 : 输出分置电阻一般默认设计的反馈输入电压为0.8 V,也可以根据所要输出的电压来设计,的阻值,一般取的值在220K之间。的计算式如下: (2-2)图3-4中,补偿电阻和补偿电容组成的补偿环路可用来提供稳定的宽带补偿,与的计算式如下: (2-3)K为高频时回路的修正参数,其值与输出电容有关,一般在10F时取0.55,22F时取0.47。VFB为参考电压(一般取0.8 V)。gmEA取定值60s。定值取4.2s。为DC调制增益,为输出负载,上式中未知变量的计算式如下: (2-4)式中,为闭环增益交叉频率,一般取值小于等于15的开关频率。一般取0.01。有了以上参数,、的值便可计算得出。 2.3.4 时钟设计根据NE555的工作原理,当芯片4脚处于高电位的时候,NE555有时钟脉冲输出,否则芯片停止工作。本设计将4脚直接的连接到芯片电源,使其一直处于高电位的状态,芯片一直工作,其电路如图3-5所示。时钟脉冲的形成由组成,其震荡频率为: 参考的频率在1MHz左右,可以通过的大小来调节。图2 - 5 555多频信号源2.4 实现FPGA与PC串行通信电子点菜系统在实际应用的时候,通常要与计算机相连接,使其能够达到更加稳定、更多功能的运行。通过串行通信,可以向FPGA发送控制命令让其执行相应的操作,同时把需要的数据通过串口发到PC上进行相应的数据处理和分析,以此来判断FPGA是否按设计要求工作。设计包括三部分:1、通过向I/O端口发送高低电平以达到控制外部硬件的要求;2、完成芯片内部逻辑的变化;3、将需要的数据先存起来(一般采用内部或外部FIFO),然后通过串口将数据发送到PC,PC将接收的数据进行处理和分析。串口采用标准RS-232协议,主要参数的选择:波特率28800bit/s、8位有效位、无奇偶校验位、1位停止位。FPGA中各模块的实现如下: 分频模块:设计中需要将外部输入的32MHz的信号分成频率为153600Hz的信号作为其他模块的时钟基准。具体实现时采用一个6位计数器,将计数器的溢出作为时钟的输出即可实现整数分频。 发送接收模块:此模块是整个设计的核心部分。设计流程如图3-8所示。在串行通信中,无论发送或接收,都必须有时钟脉冲信号对所传送的数据进行定位和同步控制,设计中采用的时钟频率是波特率的两倍。接收过程:初始状态是等待状态,当检测到0时进入检验状态,在检验状态下如果再检测到0则进入接收数据状态,当接收完8位比特数后判断是否有停止位,如果有则结束接收过程重新进入等待状态。发送过程:初始状态是等待状态,当接收到开始发送的信号则进入发送过程,先发送起始位,再发送8位比特数,每位宽度为2个周期,当一个字节发送完毕后发送一个停止位,发送结束,重新回到等待状态。 控制模块:主要实现的功能是判断从PC接收的数据,根据预先设计的逻辑进行相应的状态转换。例如,给端口预置一个状态;送开始发送的标志位,送准备发送的数据;给DDS送配置信号,控制FIFO的读写。 设计中需要注意的问题:波特率的选择对于串口通信是很重要的,波特率不应太大,这样数据才会更稳定。整个发送接收过程中起始位的判别和发送是数据传输的前提。为了避免误码的产生,在FPGA设计中的串行输入和输出端口都应该加上一个数据锁存器。图2 - 6 发送接收流程图 2.5 URAT概述UART(Universal Asynchronous Receiver/Transmitter) 是通用异步收发器,用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记,可以处理计算机与外部串行设备的同步管理问题。系统由五个状态(x_idle,x_start,x_wait,x_shift,x_stop)和一个进程构成。2.6 电子点菜系统的特性及设计规则我国餐饮业数字化的应用已经相当普及,不论酒店的规模大小、档次高低,都不同程度地利用数字化辅助饭店管理。并已由单机处理的简单模式逐步向多种硬件技术相互融合,大批量采集、处理信息,为顾客提供快捷、方便的高水准服务,给饭店经营决策者提供了可靠信息的综合管理模式转化。许多饭店已为此投入了大量的人力、物力、财力,但因管理模式、管理手段和决策者水平不同,取得的效果也不尽相同。因此,如何建设一个优质高效的饭店点菜系统,使每一个饭店经营者和研制人员需要人者研究的问题。不论是基于FPGA设计系统,还是嵌入式计算机系统,都要遵循以下几点规则: 系统的可靠性:饭店点菜系统应保证提供一天24小时,一年365天不间断服务; 系统的灵活性:系统与外界接口较多,应充分考虑与不同设备连接的可能性; 系统的可扩展性:根据饭店管理要求提高和服务项目增加,应能方便地进行系统的扩展和升级; 系统的先进性:应采用世界上成熟、先进的技术和设备,并保证系统升级换代时主要设备的连接性; 系统的性价比:应在考虑满足所有技术需要的前提下,选择适合的芯片类型或主机机型,以及适当的外设配置,达到较好的性能价格比。结论全文总结:本论文主要作了以下几个方面的工作:论文论述了文中所运用的全新设计方法以及实现的软件工具等。随着现代科技的迅猛发展以及用户对电子产品功能的多样化、复杂化,使得目前所大量使用的传统上的数字或模拟设计方法越来越不能适应,也限制了电子技术的进一步发展。论文中运用的现代数字设计方法及其实现的工具为上述问题提供了解决的手段。该设计方法以自上至下(Top Down)设计为其主要特征,以硬件描述语言HDL(VHDL)为工具,以现场可编程门阵列FPGA为其实现手段。饭店电子点菜系统最主要的功能实现均以该设计方法来实现。在实现功能的过程中,从系统总体要求出发,将设计内容逐步细化,中间穿插各种仿真用于确认设计内容的正确性,直至最后系统连接设计的完成。在设计中,论文对所要求实现的电路功能分为三个层次来设计实现,即: 行为层设计。在该层设计中,主要论述了所要实现的总体功能,以及电路模块构成等; 控制层设计。在该层设计中,论文主要通过硬件描述语言VHDL来具体实现; 设计的第三层次便是逻辑总和。在该层中,论文没有明确具体过程,但实际上已经包含了,即将上述两层的设计内容利用综合工具(本论文中选用了Altera公司的MAX+plus II 所自带的综合工具)将其转换为门级网表(或工业标准IEEE 2000),再通过配置电路将网表下载到FPGA中实现。在下载设计实现的过程中,本论文通过配有门级仿真来具体验证设计内容,以及更为关键的是时序的正确性。理论和实践都证明,该设计方法能够及时发现设计问题、缩短设计时间、降低设计难度以及降低设计成本节省资源等方面都有显著的优点。经济性分析:为了获得较高的性能价格比,设计电子点菜系统时不能盲目的追求高级的复杂的方案。在满足性能指标的前提下,应尽可能的采用简单方案,因为简单方案意味着元器件少、可靠性高、资源利用率小,从而就比较经济。如果将一个成熟的电路系统用一个较简单的工具等将它完完全全的表现出来,那么它的市场前景将是很大的。在考虑系统的经济性时,除造价还应顾及控制器的使用成本。此设计电路中,所采用的芯片均为常见的、容易在市场上买到的芯片,所以经济上完全可行。 软件程序library ieee;use ieee.std_logic_arith.all;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity PL_auto1 isport ( clk:in std_logic; -系统时钟set,get,sel,finish: in std_logic; price,quantity :in std_logic_vector(3 downto 0); -价格、数量数据item0 , act:out std_logic_vector(3 downto 0); -显示、开关信号y0,y1 :out std_logic_vector(6 downto 0); -钱数、菜品数量显示数据end PL_auto1;architecture behav of PL_auto1 istype ram_type is array(3 downto 0)of std_logic_vector(7 downto 0); signal ram :ram_type; -定义RAMsignal item: std_logic_vector(1 downto 0); -菜品种类signal pri,qua:std_logic_vector(3 downto 0); -菜品单价、数量signal clk1: std_logic; -控制系统的时钟信号begincom:process(set,clk1)variable quan:std_logic_vector(3 downto 0);beginif set=1 then ram(conv_integer(item)=price & quantity;act=0000;-把菜品的单价、数量置入到RAM中 pri(i-4)=ram (conv_integer(item)(i); -菜品单价的读取 end loop; for i in 0 to 3 loop quan(i):=ram(conv_integer(item)(i); -菜品数量的读取end loop; end if;end if;qua=quan;end process 分频部分:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity baud isPort (clk,resetb:in std_logic;bclk:out std_logic);end baud;architecture Behavioral of baud isbeginprocess(clk,resetb)variable cnt:integer;beginif resetb=1 then cnt:=0; bclk=208 then cnt:=0; bclk=1; -设置分频系数else cnt:=cnt+1; bclk=0;end if;end if;end process;end Behavioral;library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity transfer isgeneric(framlent:integer:=8);Port (bclkt,resett,xmit_cmd_p:in std_logic; -定义输入输出信号txdbuf:in std_logic_vector(7 downto 0):=11001010;txd:out std_logic;txd_done:out std_logic);end transfer;architecture Behavioral of transfer istype states is (x_idle,x_start,x_wait,x_shift,x_stop); -定义个子状态signal state:states:=x_idle;signal tcnt:integer:=0;beginprocess(bclkt,resett,xmit_cmd_p,txdbuf) -主控时序、组合进程variable xcnt16:std_logic_vector(4 downto 0):=00000; -定义中间变量variable xbitcnt:integer:=0;variable txds:std_logic;beginif resett=1 then state=x_idle; txd_done -状态1,等待数据帧发送命令if xmit_cmd_p=1 then state=x_start;txd_done=0;else state -状态2,发送信号至起始位if xcnt16=01111 then state=x_wait; xcnt16:=00000;else xcnt16:=xcnt16+1; txds:=0; state -状态3,等待状态if xcnt16=01110 thenif xbitcnt=framlent then state=x_stop; xbitcnt:=0;else state=x_shift;end if;xcnt16:=00000;else xcnt16:=xcnt16+1; statetxds :=txdbuf(xbitcnt); xbitcnt:=xbitcnt+1; state -状态5,停止位发送状态if xcnt16=01111 thenif xmit_cmd_p=0 then state=x_idle; xcnt16:=00000;else xcnt16:=xcnt16; state=x_stop;end if; txd_done=1;else xcnt16:=xcnt16+1; txds:=1; statestate=x_idle;end case;end if;txd=txds;end process;end Behavioral;键盘部分:LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY dccode10-16 ISPORT(d: IN std_logic_vector(0 to 9); en : out STD_LOGIC; q : outstd_logic_vector(0 to 15);END decode10-16;ARCHITECTURE a rtl ISBEGINPROCESS (d9,d8,d7,d6,d5,d4,d3,d2,d1,d0)variable indata:std_logic_vector(0 to 9);BEGINindataq=1100110011001100;enq=1001110011001100;enq=1001100111001100;enq=1001100110011100;enq=1001100110011001;enq=1001100110010011;enq=1001100110011001;enq=1001100100110011;enq=1001001100110011;enq=0011001100110011;enq=0110001100110011;enq=0110011000110011;enq=0110011001100011;enq=0110011001100110;enq=0110011001101100;enq=0110011011001100;enq=0110110011001100;enq=1100110011001100;enq=0011001100110011;enq=1100110011001100;enq=1100110011001001;enq=1001110011001001;enq=1001100111001001;enq=1001100110011001;enq=1001100100111001;enq=1001100110011001;en

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论