基于SOPC的电子点菜单设计.docx

上传人:牧羊曲112 文档编号:2059309 上传时间:2023-01-05 格式:DOCX 页数:34 大小:374.26KB
返回 下载 相关 举报
基于SOPC的电子点菜单设计.docx_第1页
第1页 / 共34页
基于SOPC的电子点菜单设计.docx_第2页
第2页 / 共34页
基于SOPC的电子点菜单设计.docx_第3页
第3页 / 共34页
基于SOPC的电子点菜单设计.docx_第4页
第4页 / 共34页
基于SOPC的电子点菜单设计.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《基于SOPC的电子点菜单设计.docx》由会员分享,可在线阅读,更多相关《基于SOPC的电子点菜单设计.docx(34页珍藏版)》请在三一办公上搜索。

1、摘 要论文提出一种新型的电子点菜系统以弥补传统点菜方式的弊端。在目前的餐馆里,如果采用电子菜单,客人点菜时不需要服务员的陪伴,能实时地了解菜的特色,方便了顾客同时也减轻了餐馆的服务压力。本课题是基于SOPC的电子点菜单的设计,该电子点菜系统实现了一个电子点菜终端的部分功能,如:显示菜的单价、口味、已点数量和总价等。本设计采用行扫描法实现4*4键盘的扫描,并对按键进行消抖处理。利用行波进位加法器进行总价的结算,使用静态RAM存储数据。整个设计是在ALTERA公司的QUARTUS编程环境下进行,在FPGA芯片上得以实现,通过模拟仿真,最终下载在CYC-L2便携式实验系统运行实现。本课题完成的电子点

2、菜单功能齐全,使用方便,可大大提高服务质量,并节省许多人力物力。在餐饮业具有较好的推广价值。关键字:电子菜单;FPGA;VHDLAbstractThe thesis puts forward a kind of new electronics menu system to make up menu of tradition method. In current restaurant, if the adoption electricity submenu, the guest orders the menu do not need the attendant to keep company w

3、ith, can be a very good understanding of the characteristics of food, convenience the customer also eased the service pressure of the restaurant.This topic is a design that orders the menu according to the SOPC, that electronics menu parts of functions that the menu system carries out an electronics

4、 to order the vegetables terminal, such as: Show the u price, taste of the food and have already ordered quantity and total price etcs. This design adoption goes to scan the method to carry out 4*4 keyboards to scan, and carry on eliminate to tremble the processing to the key. The exploitation goes

5、the wave balance of accounts that enters an adder to carry on the total price, saving data of the usage static state RAM. The whole design carries on under the QUARTUS plait distance environment of the company of ALTERA, can carry out on the chip of FPGA, really pass to imitate to imitate, the end d

6、ownload is in the CYC- L2 then the hold type experiment system circulates the realization. The electronics that this topic complete orders the menu function well-found, the usage convenience, can raise the service quantity consumedly, and save many manpower material resources. Have to compare in the

7、 dining industry good of expansion value.Key word: electric menu; FPGA;VHDL目 录1绪论11.1任务的提出11.2设计的目的和意义12相关知识简介32.1开发工具32.2开发语言32.3开发环境33总体设计63.1设计的总体结构描述63.2功能模块描述63.2.1键盘模块73.2.2显示模块73.2.3控制模块83.3功能模块的状态转换84详细设计94.1键盘模块设计94.1.1键盘扫描94.1.2键盘译码器114.2显示模块设计124.2.1菜单显示124.2.2 口味显示144.2.3单价显示144.3控制模块174

8、.3.1 RAM的设计194.3.2 加法器的设计215系统测试225.1键盘扫描模块225.2键盘译码235.3多位加法器245.4七段数码管255.5 RAM存储器265.6系统控制器276结论28参考文献29附 录301绪论在当今世界,以计算机技术、芯片技术和软件技术为核心的数字化技术取得了迅速发展,广泛渗透到各领域。现代控制技术、多媒体技术与Internet的应用与普及,促使消费电子、计算机、通信一体化趋势步伐加快当前是餐饮业由传统操作方式向信息化管理模式转换的时期,对信息化产品的需求量很大。根据其对产品要求小型化、低功耗、专用性等特点。国内己经有不少公司开发出电子点菜系统,有些公司则

9、采用了北京辰森计算机系统有限公司的手持点菜系统。但是由于成本等原因使用电子点菜系统的餐馆还比较少,市场需求很大。1.1任务的提出市场上出现的点菜系统都是作为餐馆信息化管理系统的一部分出现的,它们除了实现基本的点菜功能外,为了便于客户及管理者的使用,还附加了许多其他功能,个人很难完成一个功能完善的点菜系统。绝大部分电子点菜系统都用数据库管理系统来管理数据。数据库管理系统一般依赖于操作系统,因此,需要选择一个合适的操作系统。电子点菜系统中,管理数据的地方与使用数据的地方往往不在同一个站点上,需要用到计算机网络将二者连接起来。另外,电子菜单与普通菜单相比有很多它的优点,比如普通菜单容易脏,而且需要服

10、务人员写,很不方便,单据易丢失;而电子菜单方便快捷,点单灵活,不需要过多的服务人员等待客人点单,方便管理,点单取餐全自助,节省人力。本课题的任务即是设计一种简单的电子点菜单终端,以CYC-L2便携式EDA/SOPC/DSP实验系统为硬件平台,利用VHDL语言进行编程,要求实现的电子点菜单功能齐全,使用方便。 1.2设计的目的和意义电子点菜系统代表着当今餐饮业解决方案中最尖端的领先科技,此技术的应用在餐饮业中轰动一时。餐馆引进电子点菜系统,具有重大的意义:首先,提高运营效率与降低运营成本,使用电子点菜系统可以加快点菜速度,减少人力资源的投入,避免跑、冒、漏;其次,提升餐馆品牌与形象,电子点菜系统

11、是一个高科技产品,它代替传统的纸笔式点菜方式给人一种高贵的感觉;最后,营造一个安静、舒服的就餐环境,传统的点菜方式在某些环节中出现大声喧哇的场面,电子点菜系统则可以避免这类情况的出现。国内己经有不少公司开发出电子点菜系统,例如上海工理电子有限公司的点菜通、餐饮通等,北京辰森计算机系统有限公司的手持点菜宝等。但是由于成本等原因,使用电子点菜系统的餐馆还比较少。由于市场的需求很大,所以随着技术的进步及餐饮业的激烈竞争,电子点菜系统将会越来越普遍,并越做越好。2相关知识简介 2.1开发工具本实验系统是在CYC-L2 便携式EDA/SOPC/DSP实验系统基础上研发而成,具有完备的外部接口电路模块,并

12、继承了该系统开放性的特点。系统由开发板(含主板、底板)、ByteBlaster II并口下载板(含电缆)和12V直流电源三个组成部件构成。2.2开发语言VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步

13、取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHD

14、L的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。2.3开发环境Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设

15、计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP

16、应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及

17、简便的使用方法。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。 Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。支持M

18、AX7000/MAX3000等乘积项器件。Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需求,是单芯片课编程系统设计的综合性环境和SOPC开发的基本工具,并为AlteraDSP开发包进行系统模型设计提供了集成综合环境。QuartusII设计工具完全支持VHDL,VERILOG的设计流程。QuartusII基本设计流程有以下步骤(1)新建工程在设置工程Project的时候,提供输入的信息较多,例如文件的路径、文件夹里面所有VerilogHDL文件的导入、芯片的选择,还有第三方工具的设置等等。(2)编译文件译和仿真的时候,可以直接按工具栏上面的编译或者仿真按钮,同

19、时也保留了MaxplusII的操作习惯,在Processing-CompilerTool可以调出熟悉的编译窗口,以及仿真窗口Processing-SimulatorTool,编译成功后,新建波形文件,从选项可以了解到,QuartusII不再采用Max+plusII的波形文件格式.scf,取而代之的是.vwf格式,不过使用的时候没有多大不同。(3)添加节点添加节点的时候,在波形文件按鼠标右键InsertNodeorBus这一项调出,NodeFinder进行选择,在节点的选择导入,还可以可以按照用户自定义的规则进行导出,即Customize选项。然后,在“Edit”中设置“ENDTIME”和“Gr

20、idSize”。()仿真仿真的时候,QuartusII不是把仿真结果显示在波形文件中,而是在SimulationReport中,其实也可实现Max+plusII的样式,方法是来到Tools-Options-General-Processing,把Overwritesimulationinputfilewithsimulationresults选项的钩打上即。3总体设计3.1设计的总体结构描述本系统为一个电子点菜终端的简洁型系统,该系统以CYC-L2系统为主要核心,采用4*4的键盘,前12个键为菜单,8个数码管显示总价格,单价,已点菜数量;后四个键分别实现:结账,已点查询,删除,确认。4组LED

21、灯分别表示菜的口味:酸,甜,麻,辣,以点亮的灯数表示口味浓度。总体外观如下图所示: 图3.1 系统外观图3.2功能模块描述 本系统主要由3个模块构成,键盘模块、控制模块和显示模块。键盘模块是由一个4*4矩阵键盘实现数据的输入控制,通过行扫描法将对应的值输入到控制模块,进行相应的操作。控制模块控制显示模块的显示,存储点菜数据信息,对点菜数据进行处理,并完成最后的结算。显示模块显示菜的单价、数量、口味和总价。系统的功能模块图如图3.2所示。 图3.2 系统功能模块图3.2.1键盘模块键盘模块由4*4的键盘组成,3*4键盘代表一个菜名,共可容纳12个菜名,最后一排为功能键。当顾客选择一个菜名时,通过

22、键位的触发连接到系统中的数据信息,显示该菜的单价和口味;选择菜名之后,如果满意则按确认,系统记录相关数据,不满意则重新选择。按下已点键,可以显示顾客已点菜的序号,单价,口味,再按一次则显示下一个已点菜,按删除,则取消该菜,按确认之后重新进入菜单。当按下“结账”键之后,显示应付金额(包括折扣,附加消费等等)。3.2.2显示模块由8个LED数码管,8个LED灯和一个显示屏组成,前4个数码管显示总价格,中间2个显示所选菜名的单价,最后2个显示已点菜的数量。在管理员使用改价键时,数码管则显示8位密码。8个LED灯分为4组,分别表示4种口味:酸,甜,麻,辣,每组2个灯都不亮表示无此味道;1个灯亮表示有此

23、味道;如:微辣,微甜等;2个灯表示此味很重。以此来大概描述菜的口味。最后在存储器中存储菜名的实物图片,在选择菜名时显示相应的图片,方便顾客了解菜的外观。3.2.3控制模块控制器首先接收键盘模块的有效信息,如果键盘有键按下,则根据键盘扫描值经译码,判断是进入点菜状态还是功能选择状态,如果进入点菜状态,显示对应的菜单信息:单价,口味,图片信息。在接收到功能键的有效信号时,进入到控制状态。3.3功能模块的状态转换系统一直处于点菜等待状态,当客人开始点菜时,则进入点菜状态。系统对客人选择的菜进行及时的显示,以便及时了解所点菜的特色,如按下功能键,进入功能控制状态,系统进行数据信息的处理。如再按下菜单键

24、,回到点菜状态。最后,结帐完毕,返回点菜等待状态。系统的功能转化图如图3.3所示。图 3.3 系统功能转换图4详细设计4.1键盘模块设计4.1.1键盘扫描 计算机键盘通常采用行列扫描法来确定按下键所在的行列位置。所谓行列扫描法是指,把键盘按键排列成n行m列的nm行列点阵,把行、列线分别连接到两个并行接口双向传送的连接线上,依次对每一行发出一个低电平,对列线进行检测,如显示低电平,则确定按键。键盘处理的重要环节是扫描和去抖,这里采用定时扫描和计数去抖的键盘处理方法,它不仅使程序非常简单高效,而且便于灵活扩展实现处理更复杂的键盘要求。因为一般人的按键速度至多是10次/秒,亦即一次按键时间是100m

25、s,所以按下的时间可估算为50ms。以取样信号CP频率为8ms(125Hz),则可取样到6次。一般消抖动信号是频率必须比其它的电路使用的脉冲信号频率更高,一般消抖动频率是键盘扫描或LED频率的4倍或更高。这是矩阵键盘的完整描述,包括扫描、消抖动、译码:ENTITY key_44 IS PORT(CLK : IN STD_LOGIC; -系统时钟脉冲 KEY_DRV : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -扫描序列 KEY_IN : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘输入 OUT_NUMB : OUT INTEGER

26、RANGE 0 TO 15 -按键输入译码后的值 );END ;ARCHITECTURE key44 OF key_44 IS -时钟产生模块 COMPONENT clk_gen IS PORT(CLK : IN STD_LOGIC; -全局时钟 CLK_SCAN : OUT STD_LOGIC; -扫描键盘时钟 125Hz CLK_XD : OUT STD_LOGIC -键盘消抖动时钟 25Hz ); END COMPONENT clk_gen; -扫描序列产生模块 COMPONENT key_scan IS PORT(CLK_SCAN : IN STD_LOGIC; -扫描时钟脉冲 KEY

27、_DRV : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -扫描序列 ); END COMPONENT ; -消抖动模块 COMPONENT key44_xiaod IS PORT(XD_CLK : IN STD_LOGIC; -消抖动时钟脉冲 KEY_IN : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘输入 KEY_OUT :OUT STD_LOGIC_VECTOR(3 DOWNTO 0) -键盘输出); END COMPONENT ; -译码模块 COMPONENT key_yima IS PORT(SC_CLK : IN STD_LOG

28、IC; -扫描时钟脉冲 KEY_DRV : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -扫描序列 KEY_IN : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -键盘输入 OUT_NUMB : OUT INTEGER RANGE 0 TO 15 -按键输入译码后的值 ); END COMPONENT;SIGNAL CLK_SC : STD_LOGIC;SIGNAL CLK_X : STD_LOGIC;SIGNAL KEY_VALUE : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN clkgen1 :clk_gen PORT

29、 MAP(CLK=CLK , CLK_SCAN=CLK_SC , CLK_XD=CLK_X ); key_scan1 : key_scan PORT MAP(CLK_SCAN=CLK_SC , KEY_DRV=KEY_DRV); xiaodou1 : key44_xiaod PORT MAP(XD_CLK=CLK_X, KEY_IN=KEY_IN , KEY_OUT=KEY_VALUE); key_yima1 : key_yima PORT MAP(SC_CLK=CLK_SC , KEY_DRV=KEY_DRV , KEY_IN=KEY_VALUE , OUT_NUMB=OUT_NUMB);

30、END ;生成的电路符号如下图所示:图4.1 键盘扫描电路符号图算法的实现过程如下:CPU以一定时间间隔周期地执行此键盘扫描处理程序。先是对键盘作扫描,获得反映键盘状态的键盘扫描码;然后对扫描码进行前后对比和定时计数,实现去抖;去抖后置位KReady标志,通知键盘分析程序已检测到有效按键。键盘扫描码反映的是读取键盘时刻的键盘动作状态。对键盘扫描码的基本要求是它要能对每一个单键作唯一编码。我们知道,当一个按键按下和释放时,对应信号线电平的变化有一个不稳定期,即所谓“抖动”,这是因为多数开关的闭合和断开都有一个过程,并不是即刻实现的。在读取键盘状态是必须避开这个不稳定期,以免造成误判,这样一个做法

31、叫做“去抖”。如果当在一段时间内都连续多次读到同一个非空(即有键按下)的扫描码,我们可以认为这时按键已处于稳定状态,这时得到的扫描码就代表了一个键盘动作,抖动的影响已经被剔除。按照这个想法,我们只需设置一计数器,当每次读到的非空扫描码与上一次的相同,就将计数器加1;而当一旦读到不同的扫描码或空码则立即将计数器清0。如果计数器的值达到某预定值N时,则表示连续N次读到同一扫描码,于是可认为已经读到了有效的按键。设键盘扫描的间隔是T,则去抖的时间就是N * T。在实际中可以根据按键的特性选取适当的N和T值,以达到可靠的去抖效果。4.1.2键盘译码器通过一个译码程序,将键盘扫描后的值根据需要设定成相应

32、的功能键和菜单键。程序设计如下: ima:PROCESS(SC_CLK) BEGIN Z K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE K_VALUE=K_VALUE; -默认情况为K_VALUE保持原来状态,相当于实现锁存器 END CASE;4.2显示模块设计 4.2.1菜单显示接收译码器的K_VALUE,显示相应的菜单信息,菜单见下表。表4.1 菜单信息表序号菜名单价酸甜麻辣1回锅

33、肉8000101012水煮肉片10000011113青椒肉丝7000100114麻婆豆腐5000011015火爆腰花6010100016锅巴肉片10001100007三鲜汤12000100008红烧鸡8000001019酸菜鱼151100010110炒青菜30001000111肉片汤50100010112鱼香茄子611110001单价显示和口味显示的源代码如下,其中,qw代表口味,dj代表单价。entity myJP is port (cd :in std_logic_vector(3 downto 0); qw :out std_logic_vector(7 downto 0); dj :o

34、ut std_logic_vector(3 downto 0);end entity myJP; architecture SE of myJP is begin with cd selectqw =00010101 when 0100, 00001111 when 0101, 00010011 when 0110, 00001101 when 0111, 01010001 when 1000, 00110000 when 1001, 00010000 when 1010, 00000101 when 1011, 11000101 when 1100, 00010001 when 1101,

35、01000101 when 1110, 11110001 when 1111,; with cd select dj= 1000 when 0100, 1010 when 0101, 0111 when 0110, 0101 when 0111, 0110 when 1000, 1010 when 1001, 1100 when 1010, 1000 when 1011, 1111 when 1100, 0011 when 1101, 0101 when 1110, 0110 when 1111, 0000 when others;end architecture SE;生成的电路符号如图下图

36、所示图4.2 菜单显示电路符号图4.2.2 口味显示通过CYC-L2 V2.0便携式EDA/SOPC/DSP实验系统自带的8个LED,显示当前所选菜的口味。8个LED灯分为4组,分别表示4种口味:酸,甜,麻,辣,每组2个灯都不亮表示无此味道;1个灯亮表示有此味道;如:微辣,微甜等;2个灯表示此味很重。效果图如下:图 4.3 口味显示效果图4.2.3单价显示单价显示主要由LED数码管实现。分段式显示器(LED数码管)由7条线段围成,只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。 LED数码管有共阳、共阴之分。图4 .2是共阴式LED数码管的原理图。使用时,公共阴极接地,7个阳极ag由

37、相应的BCD七段译码。 图4.4 七段数码管电路图 BCD七段译码器的输入是1位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以FaFg表示),也称4-7译码器。若用它驱动共阴LED数码管,则输出应为高有效,即输出为高(1)时,相应显示段发光。根据组成09这10个字形的要求可以列出8421BCD七段译码器的真值表,见表4.2。 表4.2 七段译码器真值表程序设计如下:architecture ex1 of seven is begin with A select Z 1,others=0); signal a std_logic_vector(3 downto 0);begin

38、 seq:process (clock) is begin if (rising_edge(clock)then p_state=n_state; end if; end process seq;在com进程中,设定了相应的功能键,YES表示确认键,DEL表示删除键,HAV表示已点查询键,OVER表示结帐。控制器状态机图如下图所示:图 4.6 状态机图由此生成的控制器ASM图如下图所示:图 4.7 控制器ASM图4.3.1 RAM的设计系统采用静态RAM,大小为168Bit,因为数据既可以存储与RAM中,也可以从RAM读取,所以数据端口为INOUT模式。RAM有3个控制信号:CS(片选),WE(写使能),OE(输出使能),均为低电平有效。library ieee;use ieee.std_logic_1164.all;entity ram is port(address : in integer range 0 to 15; data : inout std_logic_vector(7 downto 0);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号