嵌入式电子菜单的设计.docx
《嵌入式电子菜单的设计.docx》由会员分享,可在线阅读,更多相关《嵌入式电子菜单的设计.docx(11页珍藏版)》请在冰豆网上搜索。
嵌入式电子菜单的设计
电子菜单的设计
1绪论
嵌入式系统是以应用为中心,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。
嵌入式系统主要由嵌入式处理器、相关支撑硬件、嵌入式操作系统及应用软件等组成,它是集软硬件于一体的可独立工作的“器件”。
1.1任务的提出
本课题的任务即是设计一种简单的电子点菜单终端,以CYC-L2V2.0便携式EDA/SOPC/DSP实验系统为硬件平台,利用VHDL语言进行编程,要求实现的电子点菜单功能齐全,使用方便。
1.2设计的目的和意义
餐馆引进电子点菜系统,具有重大的意义:
首先,提高运营效率与降低运营成本,使用电子点菜系统可以加快点菜速度,减少人力资源的投入,避免跑、冒、漏;其次,提升餐馆品牌与形象,电子点菜系统是一个高科技产品,它代替传统的纸笔式点菜方式给人一种高贵的感觉;最后,营造一个安静、舒服的就餐环境,传统的点菜方式在某些环节中出现大声喧哇的场面,电子点菜系统则可以避免这类情况的出现。
2相关知识简介
2.1开发工具
本实验系统是在CYC-L2V2.0便携式EDA/SOPC/DSP实验系统基础上研发而成,具有完备的外部接口电路模块,并继承了该系统开放性的特点。
系统由开发板(含主板、底板)、ByteBlasterII并口下载板(含电缆)和12V直流电源三个组成部件构成。
采用Altera公司的CycloneEP1C6Q240系列FPGA为主芯片,包括系统时钟、SRAM存储器、FLASH存储器、网络接口芯片、串行配置芯片、音频编码/解码芯片、模数转换器、数模转换器、键盘、显示器和串行接口等外围电路模块。
2.2开发语言
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2.3开发环境
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
3总体设计
3.1设计的总体结构描述
本系统为一个电子点菜终端的简洁型系统,该系统以CYC-L2系统为主要核心,采用4*4的键盘,前12个键为菜单,8个数码管显示总价格,单价,已点菜数量;后四个键分别实现:
结账,已点查询,删除,确认。
4组LED灯分别表示菜的口味:
酸,甜,麻,辣,以点亮的灯数表示口味浓度。
3.2功能模块描述
本系统主要由3个模块构成,键盘模块、控制模块和显示模块。
键盘模块是由一个4*4矩阵键盘实现数据的输入控制,通过行扫描法将对应的值输入到控制模块,进行相应的操作。
控制模块控制显示模块的显示,存储点菜数据信息,对点菜数据进行处理,并完成最后的结算。
显示模块显示菜的单价、数量、口味和总价。
3.2.1键盘模块
键盘模块由4*4的键盘组成,3*4键盘代表一个菜名,共可容纳12个菜名,最后一排为功能键。
当顾客选择一个菜名时,通过键位的触发连接到系统中的数据信息,显示该菜的单价和口味;选择菜名之后,如果满意则按确认,系统记录相关数据,不满意则重新选择。
按下已点键,可以显示顾客已点菜的序号,单价,口味,再按一次则显示下一个已点菜,按删除,则取消该菜,按确认之后重新进入菜单。
当按下“结账”键之后,显示应付金额(包括折扣,附加消费等等)。
3.2.2显示模块
由8个LED数码管,8个LED灯和一个显示屏组成,前4个数码管显示总价格,中间2个显示所选菜名的单价,最后2个显示已点菜的数量。
在管理员使用改价键时,数码管则显示8位密码。
8个LED灯分为4组,分别表示4种口味:
酸,甜,麻,辣,每组2个灯都不亮表示无此味道;1个灯亮表示有此味道;如:
微辣,微甜等;2个灯表示此味很重。
以此来大概描述菜的口味。
最后在存储器中存储菜名的实物图片,在选择菜名时显示相应的图片,方便顾客了解菜的外观。
3.2.3控制模块
控制器首先接收键盘模块的有效信息,如果键盘有键按下,则根据键盘扫描值经译码,判断是进入点菜状态还是功能选择状态,如果进入点菜状态,显示对应的菜单信息:
单价,口味,图片信息。
在接收到功能键的有效信号时,进入到控制状态。
3.3功能模块的状态转换
系统一直处于点菜等待状态,当客人开始点菜时,则进入点菜状态。
系统对客人选择的菜进行及时的显示,以便及时了解所点菜的特色,如按下功能键,进入功能控制状态,系统进行数据信息的处理。
如再按下菜单键,回到点菜状态。
最后,结帐完毕,返回点菜等待状态。
系统的功能转化图如图3.3所示。
4详细设计
4.1键盘模块设计
4.1.1键盘扫描
计算机键盘通常采用行列扫描法来确定按下键所在的行列位置。
所谓行列扫描法是指,把键盘按键排列成n行×m列的n×m行列点阵,把行、列线分别连接到两个并行接口双向传送的连接线上,依次对每一行发出一个低电平,对列线进行检测,如显示低电平,则确定按键。
算法的实现过程如下:
CPU以一定时间间隔周期地执行此键盘扫描处理程序。
先是对键盘作扫描,获得反映键盘状态的键盘扫描码;然后对扫描码进行前后对比和定时计数,实现去抖;去抖后置位KReady标志,通知键盘分析程序已检测到有效按键。
键盘扫描码反映的是读取键盘时刻的键盘动作状态。
对键盘扫描码的基本要求是它要能对每一个单键作唯一编码。
4.1.2键盘译码器
通过一个译码程序,将键盘扫描后的值根据需要设定成相应的功能键和菜单键。
程序设计如下:
ima:
PROCESS(SC_CLK)
BEGIN
Z<=KEY_DRV&KEY_IN;--将扫描信号和消抖动后的按键输入值存入Z
IFSC_CLK'EVENTANDSC_CLK='1'THEN
CASEZIS--数字按键译码电路
WHEN"11100111"=>K_VALUE<=0;WHEN"11101011"=>K_VALUE<=1;
WHEN"11101101"=>K_VALUE<=2;WHEN"11101110"=>K_VALUE<=3;
WHEN"11010111"=>K_VALUE<=4;WHEN"11011011"=>K_VALUE<=5;
WHEN"11011101"=>K_VALUE<=6;WHEN"11011110"=>K_VALUE<=7;
WHEN"10110111"=>K_VALUE<=8;WHEN"10111011"=>K_VALUE<=9;
WHEN"10111101"=>K_VALUE<=10;WHEN"10111110"=>K_VALUE<=11;
WHEN"01110111"=>K_VALUE<=12;WHEN"01111011"=>K_VALUE<=13;
WHEN"01111101"=>K_VALUE<=14;WHEN"01111110"=>K_VALUE<=15;
WHENOTHERS=>K_VALUE<=K_VALUE;--默认情况为K_VALUE保持原来状态,相当于实现锁存器
ENDCASE;
4.2显示模块设计
4.2.1菜单显示
接收译码器的K_VALUE,显示相应的菜单信息,
单价显示和口味显示的源代码如下,其中,qw代表口味,dj代表单价。
entitymyJPis
port(cd:
instd_logic_vector(3downto0);
qw:
outstd_logic_vector(7downto0);
dj:
outstd_logic_vector(3downto0));
endentitymyJP;
architectureSEofmyJPis
begin
withcdselect
qw<="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",
"01000101"when"1110","11110001"when"1111",;
withcdselect
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"whenothers;
endarchitectureSE;
4.2.2口味显示
通过CYC-L2V2.0便携式EDA/SOPC/DSP实验系统自带的8个LED,显示当前所选菜的口味。
8个LED灯分为4组,分别表示4种口味:
酸,甜,麻,辣,每组2个灯都不亮表示无此味道;1个灯亮表示有此味道;如:
微辣,微甜等;2个灯表示此味很重。
效果图如下:
4.2.3单价显示
单价显示主要由LED数码管实现。
分段式显示器(LED数码管)由7条线段围成,只要按规律控制各发光段的亮、灭,就可以显示各种字形或符号。
LED数码管有共阳、共阴之分。
图4.2是共阴式LED数码管的原理图。
使用时,公共阴极接地,7个阳极a~g由相应的BCD七段译码。
BCD七段译码器的输入是1位BCD码(以D、C、B、A表示),输出是数码管各段的驱动信号(以Fa~Fg表示),也称4-7译码器。
若用它驱动共阴LED数码管,则输出应为高有效,即输出为高
(1)时,相应显示段发光。
根据组成0~9这10个字形的要求可以列出8421BCD七段译码器的真值表。
程序设计如下:
architectureex1ofsevenis
beginwithAselect
Z<="1110111"when"0000","0010010"when"0001",
"1011101"when"0010","1011011"when"0011",
"0111010"when"0100","1101011"when"0101",
"1101111"when"0110","1010010"when"0111",
"1111111"when"1000","1111011"when"1001",
"1101101"when"1010","1101101"when"1011",
"1101101"when"1100","1101101"when"1101",
"1101101"when"1110","1101101"when"1111",
"0000000"whenothers;endarchitectureex1;
4.3控制模块
控制模块的实现主要是使用状态机的设计思路,在控制模块中有6个状态:
点菜状态、等待状态、确认状态、删除状态、已点查询状态和结帐。
每个状态产生不同的控制信号,用于过程的实现。
其中包含2个进程,标识为seq和com,seq进程用于建模次态和输出逻辑,com进程用于建模状态寄存器。
在com进程中,设定了相应的功能键,YES表示确认键,DEL表示删除键,HAV表示已点查询键,OVER表示结帐。
控制器状态机和控制器ASM图如下图所示:
4.3.1RAM的设计
系统采用静态RAM,大小为16×8Bit,因为数据既可以存储与RAM中,也可以从RAM读取,所以数据端口为INOUT模式。
RAM有3个控制信号:
CS(片选),WE(写使能),OE(输出使能),均为低电平有效。
libraryieee;
useieee.std_logic_1164.all;
entityramis
port(address:
inintegerrange0to15;
data:
inoutstd_logic_vector(7downto0);
cs,we,oe:
instd_logic);
endentityram;
architectureRTLoframis
begin
p0:
process(address,cs,we,oe,data)is
typeram_arrayisarray(0to3)ofstd_logic_vector(7downto0);
variablemem:
ram_array;
begin
data<=(others=>'Z');
if(cs='0')then
if(oe='0')then
data<=mem(address);
elsifwe='0'then
mem(address):
=data;
endif;
endif;
endprocessp0;
endarchitectureRTL;
4.3.2加法器的设计
加法器由一位全加器的简单模型构成行波进位加法器,通过将模型多次实例化构件一个8位的加法器。
行波进位加法器由一位全加器级联组成,由低位相加,低位的进位作为下一位的进位CIN的输入,依次相加,本设计需要进行8位的加法运算。
程序设计如下:
entityjfq1is
port(A,B:
instd_logic_vector(0to7);
CIN:
instd_logic;
SUM:
outstd_logic_vector(0to11);
COUT:
outstd_logic);
architectureNAofjfq1is
signalcarry:
std_logic_vector(0to8);
begin
g1:
foriin0to7generate
lt:
ifi=0generate
f0:
entityWORK.myNAportmap(A(i),B(i),CIN,SUM(i),CARRY(i+1));
endgeneratelt;
rt:
ifi=7generate
fn:
entityWORK.myNAportmap(A(i),B(i),CARRY(i),SUM(i),COUT);
endgeneratert;
md:
ifi>0andi<7generate
fm:
entityWORK.myNAportmap(A(i),B(i),CARRY(i),SUM(i),CARRY(i+1));
endgeneratemd;
5系统测试
该课题完成了一种简单的电子点菜单终端的设计,利用VHDL语言进行编程,用FPGA芯片得以实现。
以CYC-L2V2.0便携式EDA/SOPC/DSP实验系统为硬件平台,实现客人的自主点菜过程,功能齐全,使用方便。
各模块测试情况如下。
5.1键盘扫描模块
对键盘进行扫描,消抖,每一个单键作唯一编码,作为扫描值输出。
5.2键盘译码
将扫描键盘后得到的KEY值,通过译码设定为菜单键和功能键:
KEY值0000—0111分别为:
确认,删除,已点,结帐;KEY值1000—1111为菜单。
译码器原理图见图5.3所示:
5.3多位加法器
将从存储器中得到的值分别作为A,B两个8位输出,总价SUM通过3个七段数码管输出。
原理图见图:
5.4七段数码管
用于显示系统需要输出的单价,总价信息,原理图见图5.7所示:
5.5RAM存储器
用于存储菜单数据信息,DATA为INOUT模式,提供3个控制信号,第一个控制信号CS为芯片选择是选定芯片的通用控制信号。
地址范围为0到15,WE和OE只有其中一个有效:
WE信号有效,将数据写入;OE信号有效,将数据从芯片中读出。
3个控制信号都是低电平有效。
原理图见图5.9所示:
5.6系统控制器
为系统的核心部分,控制各个模块之间的工作,cd_v接受键盘的译码值,ADD,
DATA,CS,WE,OE为存储的控制信号,cd_out为菜单信息输出,A,B为8位的单价输入,SUM为总价的12位输出。
电路符号如下图所示:
6结论
该课题是利用ALTERA公司的QUARTUS开发环境和软件,进行VHDL程序设计,然后进行仿真,调试,以CYC-L2V2.0便携式EDA/SOPC/DSP实验系统为硬件平台,实现了一个简单的电子点菜单终端的设计。
本设计也存在一定的不足。
由于本身能力和实验器材的限制,无法在系统中建立完善的体制,只是实现了一个电子点菜单的基本功能。
图片显示,密码修改以及菜单改价的功能,都没有在系统中实现,这些都有待以后的继续提高和完善
7致谢
经过一学期的自我学习和努力,在老师和同学的帮助下,去认真完成我的设计,使我从中受益匪浅。
这是本科学习阶段一次非常难得的理论与实际相结合的机会,通过这次比较完整的系统设计,我摆脱了单纯的理论知识学习状态,和实际设计的结合锻炼了我的综合运用所学的专业基础知识,解决实际工程问题的能力,同时也提高我查阅文献资料、设计手册、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,各方面都得到不同程度的提升。
对于在设计过程中帮助过我的老师和同学,我在此对你们表示衷心的谢意和崇高的敬意。
或许感谢的话语你们听了很多,也看了很多,但是我相信每一份谢意,都是满满的,满载着一个学生在走向社会的时候,对曾经孜孜不倦教诲过自己的老师的诚挚的心。