第一篇:EDA实习报告(自动售卖机)
EDA技术及应用实习报告
自动售卖机
信息13-2班06号
GMH
北华大学电气信息工程学院
目 录
一、设计任务功能简介............................................................................2
1、设计任务......................................................................................2
2、主要功能......................................................................................2
二、原理、方案、框图及任务分解........................................................2
1、原理...............................................................................................2
2、方案...............................................................................................2
3、框图...............................................................................................3
4、任务分解......................................................................................3
三、关键任务的设计代码及注释............................................................4
四、调试中出现的问题及解决方案........................................................8
1、问题一...........................................................................................8
2、问题二...........................................................................................8
五、产业化市场分析及预测....................................................................8
六、测试及运行结果................................................................................9
七、参考文献...........................................................................................1
一、设计任务功能简介
1、设计任务
自动售货机设计。利用软件QuartusII软件,使用VHDL语言结合硬件要求对本题目设计功能进行编程,并在完成整个硬件程序设计后,在软件平台上进行编译和电路仿真,最后生成的目标文件下载到DE2-70实验板上实现上述所有功能并验证程序的可行性。
2、主要功能
本设计主要实现的功能为:货物信息存储功能、商品选择功能、输入钱数处理功能、货架商品更换功能、语音提示功能、信息显示等功能。
二、原理、方案、框图及任务分解
1、原理
自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按 扭输入信号使控制器启动相关位置的机械装置完成规定动作,将货物输出。
2、方案
根据题目要求机器设有2个投币孔,机器可以接受1元和5元的纸币,分别有八种商品,价格分别为1元,4元,2元,3元,6元,7元,5元,8元,机器采用拨码开关模拟机器的复位键、确认购买键和商品选择,并且通过开发板上的LED等分别显示购买的不同情况,数码管实时显示购买金额,包括投入的价钱,找零的价钱。此设计按照EDA课程设计 的流程进行源代码的编写、仿真。本设计主要利用QuartusⅡ等设计软件进行设计。
3、框图 依题目要求设计流程框图如下所示:
图2-1 程序流程图
4、任务分解
本设计主要包括按键模块、显示模块、语音提示模块。设计程序任务如下图:
图2-2 程序任务图
任务一:存储商品信息。商品名称及商品价格等信息。
任务二:响应用户选择商品的操作。用户用过按键选择商品,售卖机要实时显示商品名称及价格信息。任务三:货币处理。待用户选择商品结束,售卖机要接收用户投币,包括判断纸币的面额、总金额、是否投币结束等信息。
任务四:人性化设计。售卖机要有良好的人性化交互界面,以及必要的文字、语音等提示信息。
三、关键任务的设计代码及注释
10000“;
elsif item =”100“ then item_dis <=”10011001“;money_dis<=”11111001“;
elsif item =”101“ then item_dis <=”10010010“;money_dis<=”10011001“;
elsif item =”110“ then item_dis <=”10000010“;money_dis<=”10110000“;
elsif item =”111“ then item_dis <=”11111000“;money_dis<=”10000000“;end if;end if;else
item_dis<=”11111111“;money_dis 商品选择进程设计: data:process(START,sel_add)begin
if START='1' then
f sel_add'event and sel_add='1' then item<=item+1;if item =”000“ then item_dis <=”11000000“;money_dis<=”10011001“;elsif item =”001“ then item_dis <=”11111001“;money_dis<=”11111000“;elsif item =”010“ then item_dis <=”10100100“;money_dis<=”10100100“;elsif item =”011“ then item_dis <=”10110000“;money_dis<=”101<=“11111111”;price <=“0000”;end if;end process data;-------------------------付钱进程设计:
pay:process(finish ,one,five)begin if finish='1' then if one'event and one ='1' then pay_money_one<=pay_money_one+1;
if five'event and five ='1' then pay_money_five<=pay_money_five+5;end if;pay_money
<=
when “0001” => <=
pay_money_dis_g
“11111001”;pay_money_dis_s <= “11000000”;when
“0010”
=> <=
pay_money_dis_g
“10100100”;pay_money_dis_s <= “11000000”;when
“0011”
=> <=
pay_money_dis_g
“10110000”;pay_money_dis_s <= “11000000”;when
“0100”
=> <=
pay_money_dis_g
“10011001”;pay_money_dis_s <= “11000000”;when
“0101”
=> <= pay_money_five+pay_money_one;case pay_money is when “0000”
=> <=
pay_money_dis_g
“10010010”;pay_money_dis_s <= “11000000”;when
“0110”
=> <= pay_money_dis_g “11000000”;pay_money_dis_s <= “11000000”;
pay_money_dis_g “10000010”;pay_money_dis_s <= “11000000”;when “0111”
=> <=
when “1100” => <=
pay_money_dis_g
“10100100”;pay_money_dis_s <= “11111001”;when
“1101”
=> <= pay_money_dis_g “11111000”;pay_money_dis_s <= “11000000”;when “1000”
=> <=
pay_money_dis_g
“10110000”;pay_money_dis_s <= “11111001”;when
“1110”
=> <= pay_money_dis_g “10000000”;pay_money_dis_s <= “11000000”;when “1001”
=> <=
pay_money_dis_g
“10011001”;pay_money_dis_s <= “11111001”;when
“1111”
=> <= pay_money_dis_g “10010000”;pay_money_dis_s <= “11000000”;when “1010”
=> <=
pay_money_dis_g
“10010010”;pay_money_dis_s <= “11111001”;
when others => pay_money_dis_g <=“11000000”;pay_money_dis_g “11000000”;pay_money_dis_s <= “11111001”;when “1011”
=> <=
pay_money_dis_s <= pay_money_dis_g “11000000”;end case;
if pay_money >= price then “11111001”;pay_money_dis_s <= “11111001”;back <= pay_money-price;case back is when “0000” => money_back_dis <= “11000000”;when “0001” => money_back_dis <= “11111001”;when “0010” => money_back_dis <= “10100100”;when “0011” => money_back_dis <= “10110000”;when “0100” => money_back_dis <= “10011001”;when “0101” => money_back_dis <= “10010010”;when “0110” => money_back_dis <= “10000010”;when “0111” => money_back_dis <= “11111000”;when “1000” => money_back_dis <= “10000000”;
when “1001” => money_back_dis <= “10010000”;
when others => money_back_dis <=“11000000”;
----------------------声音提示进程设计:
int:process(START,finish)
begin
if
START ='1' and
finish = '0' then sound<=“01”;
elsif START ='1' and
finish = '1' then sound<=“10”;
elsif START ='0' and
finish = '0' then sound<=“11”;
end if;
end process int;
----------------------end architecture behav;
四、调试中出现的问题及解决方案
1、问题一 问题描述:本设计语音芯片采用LJ600,选择扬声器输出模式,可存储6段语音片段,对应6个引脚下降沿触发且低电平至少维持1ms,语音触发之后必须处于高电平状态,否则影响其他语音输出。综上描述,触发信号应为一个门信号。由于系统未引入时钟,且在同一进程中不可对输出信号重复赋值,产生问题。
解决办法:代码如下图,在if语句中实现状态跳转。
2、问题二 变量初始化状态必须明确定义高低电平。即状态输出时,必须考虑高低电平两种状态,不可以出现不确定状态。完全按照语法要求。
五、产业化市场分析及预测
随着信息技术的发展及人们生活水平的不断提高,人们的消费观念及消费需求都在不断地改变和提高。自动售卖机正是为了满足人们的这种需求而在多年前被引入国内的。但早期的自动售卖机在国内并未获得预期的市场反应及消费者的广泛使用。现阶段大多数的自动售 卖机只投放在国内一线城市,销售的货品也只停留在零食、饮料、饮用水、计生用品等有限的几样品种。在零售业市场竞争日趋白热化的今天,压缩经营成本是增强企业市场竞争力的一个主要手段。然而无论是连锁超市还是便利店,日益高涨的店面租金及人力成本,已经成为他们无法忽视也无法回避的沉重负担。而自动售卖机却完全没有上述所说的麻烦,它24小时营业、售货便利、方便找零,占地面积小(一般仅需1平方米)、移动性强,无须常驻人员盯守、省人工成本,时尚新颖、个性独特、集高科技于一体,有利于树立品牌形象,养护费用低,日常免维护……这些优势势必引领潮流,使得自动售卖机日发成为市场新宠,在零售业市场占领一席之地。
六、测试及运行结果
售卖机整体结构如下图所示:
图6-1 整体结构
商品0的价格为4元。
商品1价格为7元。
商品7价格为8元,输入11元,找零3元。
商品选择按钮及确定按键。
七、参考文献
[1]潘松,黄继业.EDA技术与VHDL.第4版.北京:清华大学出版社,2013.4 [2]潘松,王国栋.VHDL实用教程(修订版).成都:成都电子科技大学出版社,2001 [3]曾繁泰,陈美金.VHDL程序设计.北京:清华大学出版社,2001.1
第二篇:自动售卖机创业计划书
自动售卖机创业计划书
一、封皮
二、目录
三、项目介绍
此项目是大学生开路人创业团队于广泛的****(自己输入)学院市场调查之后而成型的。项目的主营业务为自动贩卖机售卖饮料及零食的服务,副营业务是新形势的广告推广。
主营业务即自动贩卖服务。业务成本以换代和购进饮料,零食的费用为主,以定期维修检查兜售机和投入资金对兜售机进行升级为辅。副营业务即新形势的广告推广。业务主要内容为免费送出纸巾并通过纸巾对商家进行广告宣传。
在参与本次市场调查的肇园学子中,大约有75/.的同学认为在宿舍和球场等公共场所购买饮料及零食存在不便利的情况。迎合市场需求,项目计划在宿舍区的一楼门口附近及各运动场附近,设立自动贩卖服务点,并配臵一台或多台自动贩卖机,可以很好满足同学们的需求。于此,该项目的发展前景可观。
据市场调查分析,目前****(自己输入)学院只有图书馆一楼设有兜售机贩卖服务点,可见该项目的运行没有同行竞争,市场和潜力可观。
四、可行性分析
该项目属于全自动自助服务,不需要人力经营,只需保证电源充足即可进行运作兜售。兜售机的运作,易于操作,吸引力强,可行性高。
分析学校的田径场、篮球场、体育馆、排球场等运动场地,一方面,这些场地日常举办比赛较多,人流量较大。另一方面,运动场周围缺乏能够提供各种饮料的相应设施,运动场本身坐落离饭堂也相对较远,不能及时满足运动场上的人的需求。所以,在田径 场、篮球场、体育馆、排球场等运动场地,设立兜售机放臵点的可行性是很高的。
分析****(自己输入)学院各宿舍区,同样缺乏能够提供各种饮料的相应设施。对于学生来说,回到宿舍后一般都不愿意再次走出宿舍区。因此,这部分的市场潜力很大,放臵自动售卖机在方便学生的同时也能实现盈利。自动售卖机 不受时间、地点的限制,能节省人力、方便交易。同时它对人力的要求也不多,平时只需安排一些人员定期维护售卖机和给售卖机更新商品和收取货款。我们的市场主要定位在****(自己输入)学院主校区。****(自己输入)学院主校区有两万多人,每天都要消耗大量饮料,而且周转率很高。在饮料方面有着巨大的市场潜力。自动售卖机的网上价格为一台6000元到30000元不等,较为昂贵。可以先买两台来试点,这样可以降低初期资金的投入。因此,综上所述自动售卖机的创业计划的可行性较高。
五、产业分析
1、产业定义
一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。
又可有效利用贩卖的纸巾来做广告,利用贩卖机身贴广告来增加收益。
2、产业规模.增长速度和销售预测 产业规模:先试点再扩大经营
先在篮球场等人流量大,对水的需求量大的地方挑选两个作为试点地点,然后根据试点的销售结果估计学校售卖机的需求量,用初步盈利的利润来扩大经营规模。
增长速度:依据试点成果如何而定 如果试点的结果达到预期,就可以用试点的利润来投资售卖机,再通过银行贷款等途径集资以扩大规模。
销售预测:从售货机的商品销售额看,美国为300亿美元上下,日本为600亿美元;再如,美国平均每40人拥有1台售货机,而日本每23人就拥有1台售货机。平均每个日本人每年在售货机上购买5万多日元(近500美元)的商品,而美国仅为120美元。日本自动售卖机中的香烟售货机2003年有62.6万台,销售额为约2万亿日元。售货机的香烟销售金额占日本香烟总零售额的4成多,数量占一半以上。日本最大的卷烟企业日本烟草公司拥有15万台香烟售货机。中国的自动售货机拥有量约为2万至3万台,平均几万人1台,简直是微不足道。专家预测,未来几年中国市场上的自动售货机将每年增加5万到10万台。
而对于市场潜力巨大的****(自己输入)学院,售卖机的销售额是可想而知的。
3、产业特征
一种全新的商业零售形式 远期的前景
在我国,特别是北京、上海、广州和一些大城市,在机场、地铁、商场、公园等客流较大的场所,不难发现自动售货机的身影。顾客只要插入纸币或硬币,就可以方便地买到饮料、饼干和一些小食品。与售货机王国日本相比,中国的自动售货机商业还有很长的路要走。中国的自动售货机拥有量约为2万至3万台,平均几万人1台,简直是微不足道。专家预测,未来几年中国市场上的自动售货机将每年增加5万到10万台。中国沿海比较富裕的地区,将大约有3.5亿人口经常使用自动售货机。
六、市场分析
1、市场细分和目标市场选择 自动贩卖机全面面向****(自己输入)学院两万多名在校学生,具体市场在学生的住宿区为学生提供饮料、零食等服务性消费市场。
这是与当代大学生的生活密切联系的,因为当代大学生已与往年不同,现在的大学生很热爱运动而且对饮料的依赖性也与日俱增。而在学生的生活区恰恰缺少了提供饮料的场所,所以便有这样一个市场。因为学校的售卖点比较集中,如二饭三饭四饭相距不远,一饭又没什么知名度,无法满足学生对于水的需求。
开路人力争在一年内打造成为****(自己输入)学院的知名品牌,迅速占领****(自己输入)学院的所有大学生这一广大消费市场,办出自己的特色,形成自己的良好口碑,争取在****(自己输入)学院消费市场占得自己的天地并陆续扩大消费面积。
2、竞争者分析
竞争者主要是****(自己输入)学院的商场和各个饭堂的小卖部,而他们明显的缺点在于,无法顾及宿舍区的学生和那些运动过后而口渴的学生。而开路人的自动贩卖机计划能弥补这一方面的不足,能给****(自己输入)学院学子带来更多的方便。
3、竞争优势分析
A、现在学校没有自动贩卖机,市场需求大 B、学校超市有固定营业时间,昂贵且不便利 C、自动贩卖机上的广告不会影响校园环境
七、运营计划
1、运营目标:向****(自己输入)学院的学生提供饮料,零食等服务,方便学生在空余时间或是运动完后不必走太远便能买到饮料或零食。
2、运营战略:先在学校人流量较多的地方摆设1~2台自动售卖机试点,例如篮球场,体育馆,教学楼外,宿舍楼。
3、价格策略:前期需采取“薄利多销”的战略,即我们的自动售卖机里的商品的价格和市场价格一样,再通过加大宣传力度,加大销售量,以获得规模效益。
4、销售过程和促销组合
销售过程包括宣传工作,市场分析等方面。比如,可通过宣传海报,与学校进行协商,还可以利用人际关系去互相宣传。此外需注意学生喝饮料会受到季节影响,冬季大多喜欢喝热饮。因此在销售过程中要注意季节变化。促销组合方面注意针对****(自己输入)学院师生这一专门市场,为他们提供所需的各种饮料和零食。
八、管理团队
主要负责人 : 宣传与推广负责人: 对外联系人: 自动售卖机管理人:
九、资金来源与分配
1、资金来源
预计初步投入资金10万人民币,其中40%来至各合伙人集资,60%来至各合伙人的个人小额贷款。后期预计投入40万人民币,其中包含初步的盈利、银行贷款。初步的盈利包括销售以及广告的利润。银行贷款可通过个人创业贷款获得,个人创业贷款最高可贷50万元。
2、资金分配
投入资金的80%用于购买自动售卖机及商品,20%用于运营期的维护与管理。所得利润将做为扩大规模的投入资金或是合伙人收益。
十、风险预测
1、风险评估 ①外部风险:
A、政策风险:学校规定禁止在宿舍区进行商业活动,兜售机的投入使用需承担与学校协商合作的预算。
B、市场需求风险:兜售机为24小时营业,受假期也处于基本人流状态的影响导致收益减少。
C、货源风险:由于运输、气候、厂商供货不足产生的货源风险。或产品或服务出现质量问题,竞争对手出现提供了更好的产品或服务。
D、行业风险:未来市场可能发生变化,新一代技术出现,互为替代品增多,投入更少,产出更多。该项目的竞争力下降。
E、资金风险:盈利少,投入大,资金运转不足。F、同行业出现,竞争力强。②内部风险:
A、管理风险:管理经验不足,管理制度不完善,团队出现问题,团队成员矛盾重重。
B、人力资源风险:团队人员辞退多,导致团队人力资源减少。
C、财产保护风险:兜售机一般位于公共场地,人流多。室外容易磨损。没有保护措施,容易遭到窃匪破坏拿走物品。
D、维修风险:兜售机自身的维修费用。
E、决策风险:对于市场定位不到位,造成决策失误,不利于项目长远发展。
F、其他
2、解决办法
①外部风险 A、针对政策风险:团队可以与学校协商,签订合同,承诺书等措施,争取到售货机放臵地点。
B、针对市场需求情况:可以假期不开放兜售机并且对兜售机进行统一清理放臵。定期进行市场意向调查,了解项目进展程度,做好长期发展预案。
C、针对货源风险:提前跟厂家签订货源供应合同,明细货源短缺责任方。做好预案,发生货源短缺情况及时联系其他厂家,并与原厂家协商获取赔偿金等相关明细。
D、针对行业风险:重视技术创新和运营方式创新,做好提高市场竞争力预案。
E、针对资金风险:做好融资工作,财务明细。增强银行诚信程度,更好取得贷款。完善广告宣传,拉取更多企业下方资金加盟。
F、针对同行业竞争风险:在项目起步阶段,做好预案,规划和管理好整个项目,在****(自己输入)学院树立一定的口碑,积累一定的资本,巩固起步之基。当同行业出现时,我们便可即时对该项目进行改进和重组,争取占取更多的市场份额。
②内部风险:
A、关于管理风险和决策风险:要求管理者思想觉悟要高,自觉学习管理的知识。其次,团队投入资金,召开定期培训和业绩考核,完善管理制度和职位明细制度,建设有特色的管理团队。此外还应加强与其他公司的交流,学习管理经验,规避管理混乱,决策失误等风险。
B、关于人力资源风险:建立相应的内部福利制度体系,奖励有创新有业绩的员工,定期进行员工考核,能者上位。举办内部户外考察、联谊等活动,凝聚团队竞争力。C、关于财产保护风险和维修风险:做好文明宣传工作,在兜售机上写好文明细则,提醒勿破坏兜售机。并进行有奖举报活动,提倡全民参与反对盗窃行为。投入资金,对兜售机定期进行检查维修,在兜售机旁边可以放臵防御设备等,做好预案。
开路人创业团队
2014日11月24日
第三篇:自动售卖机场地租赁合同
自动售卖机场地使用合同
甲方(出租方): 乙方(承租方):
为保障双方合法权益,根据《中华人民共和国合同法》及有关规定,经友好协商,甲乙双方本着平等自愿、协商一致的原则,特制定本合同,以资共同遵守。第一条、使用场地位置、面积与用途
1.1、乙方在甲方场地投放自动售货机,甲方提供场地位于,数量 台。1.2、上款所称场地是指由乙方摆放自动售货机时使用的场地。场地由甲乙双方共同商议确定后,自本合同签订之日内,乙方将所有自动售货机投入调试完毕,由双方共同确认后方可开始供货销售。第二条、租赁期限
2.1、租赁期限:自_____年___月___日起至_____年___月___日止;
2.2、承租期满前两个月,若乙方希望继续承租,应书面告知甲方,在同等条件下甲方应优先考虑乙方的承租权利,经甲乙双方协商一致后办理续租手续,逾期告知视为放弃;
2.3、在合同履行期间,因不可抗力导致本合同租赁标的物灭失或不适于继续使用,本合同自发生不可抗力之日起自动终止。双方互不承担任何责任。第三条、租金及支付方式
3.1、每台租金为元/月,(大写): 人民币,共 台,合计金额为: /年,(大写): 人民币;
3.、2付款方式:按半年付款,半年合计金额(大写); 人民币,乙方向甲方提前一个月支付下半年场地租金; 3.3、甲乙双方账号信息
甲方账号:
开 户 行: 名 称: 乙方账号: 开 户 行: 名 称:
3.4、续租付款方式:承租期满前,若乙方希望继续承租甲方场地,应甲方要求,乙方可在续租期满前一个月,支付甲方租赁费用; 第四条、双方权利义务
4.1、乙方保证自动售货机内货品符合国家食品安全标准相关的法律法规,自动售货机每一个投放点均在当地食药监局备案(备案资料复印件交甲方留存),如有质量安全问题由乙方全权负责处理以及赔偿;
4.2、自动售货机运行期间,每台机器上均明显标识有售后客服电话和赔付方式。如出现卡货、未找零、投钱未出货等机械故障,消费者可及时致电客服人员,经系统核查,客服人员将把卡货、未找零、投钱未出货的相应金额,通过支付宝全额赔付以充话费形式补偿给每位消费者。
4.3、甲方应向乙方所投放的自动售货机提供电源以及相应支持,要求为16A独立支持电源;甲方并保证所有自动售货机在正常情况下24小时通电(停电检修或其它不可抗力情形除外),电费由乙方自行承担。
4.4、如自动售货机投放场地的地面不符合摆放要求,甲方应允许在摆放设备处做地面硬化处理,硬化面积为1.5m*1m,由乙方施工队负责施工;
4.5、甲方应尽可能将自动售货机摆放在防雨处,如不能按理想位置摆放,乙方负责防雨棚的制作以及安装;
4.6、甲方有义务保证乙方设备不受人为损毁,发现损坏行为正在发生的应当及时制止、做好记录,并立即通知乙方。如有人为损毁甲方需配合乙方进行处理,后期清洁、清理、维修等事宜由乙方承担;乙方不放弃追究损坏人责任的权利; 4.7、产品配送及设备售后服务由乙方全部承担;
4.8、乙方配送货物及促销活动甲方应配合协调;
4.9、因不可抗力导致本合同无法履行,双方免责,并互相协助争取相应补偿; 4.10、如遇供电部门计划停电8小时以上时,甲方有责任提前一天通知乙方,如遇临时断电,甲方也应通知乙方,方便乙方转移货品等其它事宜;如因甲方未尽到通知义务,导致停电后货品受损变质的,损坏部分的货品价值以成本价(或售价)在给甲方的租金中扣除;
4.11、乙方在甲方场地经营的利益应受到保护,甲方在本合同期内应不再接受同类产品的同类经营模式的进入;否则乙方有权利立即解除合同,并要求甲方甲方退还乙方已支付未使用的租金;
4.12、租赁期间甲乙双方经友好协商,可对自动售货机已投放的场地做调整; 4.13、在租赁期间内,乙方可根据经营情况提前解除本合同,但应提前一个月书面通知甲方。合同解除后,乙方自行拆除所有自动售货机,恢复租用场地原状,甲方应退还乙方已支付未使用的租金;
4.14、合同期内甲方经营计划调整需解除合同的,甲方有权提前15天书面通知乙方提前解除本合同,双方据实结算使用费。4.15、因售货机电源故障导致人员伤亡由乙方承担。第五条、适用法律及争端解决
双方产生争端应友好协商,互谅互让,协商不成,任何一方可向合同履行地的人民法院提起诉讼。第六条、通则
6.1、在本合同履行期间,如有合同未尽事宜,经双方协商一致以书面形式签订补充协议,补充协议属于本合同的组成部分,与本合同具有同等法律效力。6.2、本合同由甲乙双方授权代表签字并盖章之日生效,本合同一式肆份,甲方壹份,乙方叁份,具有同等法律效力。
年 月
甲方: 乙方:
授权代表: 授权代表:
电话: 电话:
日
第四篇:校园卡自动售卖机营销策划书
校园卡自动售卖机营销策划书
自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器。自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。是一种全新的商业零售形式,又被称为24小时营业的微型超市。能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。
校园卡是指我国高校为了方便学生和自己的管理而发行一种特殊IC卡。校园卡具有实名制,是在校大学生能验证身份的凭证之一,校园内的所有资费使用都可通过校园卡进行交易,例如:食堂就餐等。“校园卡”免费发放给教职工、辅导员、学生。在校园内,“校园卡”集工作证、图书证、乘车证、进餐卡、门禁卡、钱包、存折等功能于一卡,真正实现“一卡在手,走遍校园”。目前,校园一卡通从技术上已完成与后勤管理处(食堂售饭、开水、乘车、商业消费等系统)、图书馆(图书馆自动化管理系统)、实验中心(机房上机管理系统)、教育技术中心(宿舍区上网认证计费系统)等对接。进一步还会与人事处(人力资源管理系统)、教务处(数字教务系统)、财务处(财务管理系统)、学工处(学生心理咨询等系统)等部门研究论证对接方式。
本项目计划将校园卡与自动售卖机进行技术上的融合,推出校园卡自动售卖机,为高校学生节省时间和人力,真正实现“一卡在手,走遍校园”。
一、环境分析
(1)微观环境分析
顾客:校园卡自动售卖机的顾客群体即为校园卡的持有者,包括教职工、辅导员、学生。我校自动售卖机主要分布在各宿舍楼和教学楼,因此最主要的目标顾客群是全体在校学生。
竞争者:自动售卖机的最主要竞争者是校园内已有的便利店。目前校园内部共有四家便利店,主要分布在宿舍楼附近,距离教学楼较远。其次南门与北门附近各有几家小型超市,但店内环境较差而且距离学校有一定距离,选择在这些超市固定消费的学生微乎其微。
(2)宏观环境分析
人口环境:一般大学人数均在两万人以上,消费群体庞大,自动售卖机的市场容量大。
技术环境:目前市场上还没有推出校园卡与自动售卖机相结合的技术,但是预计技术开发的难度不大,一旦研发成功也能在技术上占取一定的优势。
(3)SWOT分析
优势Strength:1.相比于现金消费,学生更倾向于使用校园卡付款
2.各宿舍楼及教学楼的自动售卖机由于购买方便省时目前广受学生欢迎
3.可以24小时提供服务
4.校园便利店数量较少,分布不均匀且价格不统一
劣势Weakness:1.提供商品的种类和数量有限
2.消费量上升后,不能及时供应货源
3.前期投资成本高,商品的价格会因此而略高于实体店 4.人多时,购买需要排队等候 机会Opportunity:一旦投入市场,市场容量大。高校市场普及之后,可以进一步
向封闭式全日制中小学校推广,有较为广阔的市场前景。威胁
Threat:校园内的便利店可能会因此而降低价格以吸引学生店内消费
二、STP分析
市场细分:自动售卖机的消费群体主要为教职工和学生两类。少数教职工会在自动售卖机上购买饮料和食品,他们更倾向于饮用热水或是矿泉水。因此校园卡自动售卖机的主要市场是在校学生,次要市场为教职工。现有的饮料自动售卖机上没有矿泉水,为进一步获取教职工市场,可以选择在自动售卖机上出售档次略高的矿泉水(出于成本考虑)。
目标市场:在校学生
市场定位:“随时随地一卡刷超市”。顾客可以在自己所处的宿舍楼或教学楼内购买饮料和食品,足不出户,满足自身所需。既节省时间和体力成本增加顾客让渡价值,又不用找零或担心未带现金而无法满足需要。
三、营销策略
(一)产品策略: 1.品牌策略
打造校园卡自动售卖机品牌,利用统一品牌的影响力在全国各所高校进行营销推广。后期不断有新型售卖机推出以后可以采用品牌扩展策略,以xx一代,xx二代„„命名,始终保持品牌的影响力和生命力。2.包装策略
由于校园卡自动售卖机主要面向高校,为迎合高校的特点,彰显校园文化和青春活力,可以在传统自动售卖机的外观上加以改观,采用更新颖别致的外形,符合当前流行趋势和人性化的设计。同时,结合每所学校自身文化特色,在外观上印上学校的logo或是标志性图案。
3.新产品开发策略
随着技术的成熟,后期可以开发功能更为丰富的自动售卖机如现金与校园卡结合式自动售卖机。既可以使用现金又可以使用校园卡的付款方式,让没有零钱或是忘记携带校园卡的同学们都可以在自动售卖机上购买商品。
(二)价格策略:
自动售卖机的前期投资成本较大,因而现有的自动售卖机中的商品价格一般略高于实体店但基本控制在一元以内,在多数消费者愿意接受的心理价格范围之内。校园卡自动售卖机可以在实体店价格的基础上进行合理提价,通过后期的一些促销策略来保证机内商品的销售量从而实现盈利。
(三)渠道策略:校园内部直销
(四)促销策略:
1.游戏抽奖。现有自动售卖机,每次消费后会享有一次抽奖游戏的机会,设有一定的中奖比例,消费者普遍乐于参与。
2.特价日。每周可设一天特价日,部分商品价格略低于平时的正常价格 3.返利。累计消费满一定数额后返回部分金额到校园卡中
四、市场调研
1.在校学生使用自动售货机的频率
2.倾向于校园卡消费学生所占大致比例,估算市场容量 3.学生更愿意在自动售卖机上购买的商品种类以及品牌 4.学生能接受的超出便利店价格的心理预期范围
5.对自动售卖机的功能需求以及现有自动售卖机的待改进之处
第五篇:EDA实习报告
EDA实验报告
系别:
班级:
姓名:
学号:
目录
1.EDA介绍
2.Quartus II软件介绍
3.实习任务
4.封装引脚图
5.设计程序
6.结果显示
7.实习心得
1.EDA介绍
EDA是电子设计自动化(Electronic Design Automation)缩写。EDA技术是以计算机为工具,根据硬件描述语言HDL(Hardware Description language)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。硬件描述语言HDL是相对于一般的计算机软件语言,如:C、PASCAL而言的。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL[1]。
几乎所有适于大学生做的数字逻辑电路实验都可以在计算机上利用EDA(Electronic Design Automatic—电子设计自动化)软件进行设计、仿真,只有极少量外部配件不能在计算机上进行仿真。因此,在实验前期阶段,即实验预习阶段的主要应用工具是EDA软件,利用EDA软件可以设计、仿真实验课题,进行虚拟实验。通过虚拟实验使实验者在进入真实实验前就能对预做的实验有相当的了解,甚至可以预测到实验的结果。这样在实际做实验时,可以把许多设计型实验的难度降低,同时能有更多的时间让实验者动手做实验,研究问题,提高实验效率。当前数字电路设计已由计算机辅助设计进入到以计算机为主的设计时代。
2.Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。
此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。
3.1 设计信号发生器使其能在仪器上显示正弦、三角、方波、锯齿波(其中的两种波形)
2设计频率计使其能测出制定波形的频率
4.波形发生器封装引脚图
5.波形发生器程序(正弦波,方波)
Boxing4
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY boxing4 IS PORT(RIN:in std_logic;
clk: IN std_logic;SINT:in std_logic_VECTOR(1 downto 0);--set:in std_logic;--_vector;--(1 downto 0);rs,rw,en,lcdon,lcdbon : OUT STD_LOGIC;YOUT:out std_logic_vector(7 downto 0);data : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END boxing4;ARCHITECTURE fwm OF boxing4 IS
TYPE states IS(clear_display,set_initial,set_cgram,write_cgram,set_addram1,diaplay_cgram,set_addram2,diaplay_cgrom);--clear_display-清屏;--set_initial-初始化设置;--set_cgram-设置 cgram 地址;--write_cgram-字模写入 cgram;--set_addram1-设置显示 cgram 字符的 addram 地址;--diaplay_cgram-显示 cgram 字符;--set_addram2-设置显示 cgrom 字符的 addram 地址;--diaplay_cgrom-显示 cgrom 字符 SIGNAL state:states;TYPE ram_array0 IS ARRAY(0 TO 7)OF STD_LOGIC_VECTOR(7 DOWNTO 0);--定义 ram_array0 为二维数组
TYPE ram_array1 IS ARRAY(0 TO 7)OF ram_array0;--定义 ram_array1 为三维数组 SIGNAL lcd_clk : STD_LOGIC;SIGNAL data1,data2,data3:INTEGER RANGE 0 TO 9;--signal n:std_logic;SIGNAL net1,net2:std_logic_vector(7 downto 0);--signal net3:std_logic;
COMPONENT choice4_1
PORT(s:in std_logic_vector(1 downto 0);
d1,d2: in std_logic_vector(7 downto 0);
y: out std_logic_vector(7 downto 0));END COMPONENT;COMPONENT fangbo PORT(clkf,rf:in std_logic;
qf:out std_logic_vector(7 downto 0));END COMPONENT;COMPONENT sin PORT(clksin,rsin:in std_logic;
da:out std_logic_vector(7 downto 0));END COMPONENT;BEGIN u1: fangbo PORT MAP(clkf=>CLK,rf=>RIN,qf=>net1);u2: sin PORT MAP(clksin=>CLK,rsin=>RIN,da=>net2);u3: choice4_1 PORT MAP(s=>SINT,d1=>net1,d2=>net2,y=>YOUT);en <=lcd_clk;rw<= '0';lcdon<='1';lcdbon<='1';data1<=1;data2<=2;data3<=5;
PROCESS(clk)
CONSTANT m : INTEGER:=50000;--50M 分频到 1kHz。
VARIABLE cout : INTEGER RANGE 0 TO 50000000:=0;BEGIN
IF clk'EVENT AND clk='0' THEN cout:=cout+1;
IF cout<=m/2 THEN lcd_clk<='1';
ELSIF cout ELSE cout:=0; END IF; END IF; END PROCESS; PROCESS(lcd_clk)CONSTANT cgram : ram_array1:=(--自定义 8 个 5*8 字符的字模(X“00”,X“0E”,X“00”,X“0E”,X“00”,X“1F”,X“00”,X“00”),--SAN(X“04”,X“1F”,X“04”,X“07”,X“05”,X“09”,X“13”,X“01”),--FANG(X“00”,X“1f”,X“04”,X“04”,X“17”,X“14”,X“14”,X“1f”),--ZHENG(X“0E”,X“02”,X“0E”,X“08”,X“08”,X“0e”,X“02”,X“0e”),--ZUO XIAN(X“04”,X“1E”,X“04”,X“08”,X“1e”,X“04”,X“09”,X“1f”),--YOU XIAN(X“00”,X“13”,X“0A”,X“03”,X“1a”,X“02”,X“0a”,X“13”),--ZUO BO(X“08”,X“1F”,X“09”,X“1E”,X“14”,X“08”,X“14”,X“03”),--YOU BO(X“18”,X“18”,X“07”,X“08”,X“08”,X“08”,X“07”,X“00”)--℃字符数据存储器); VARIABLE datacnt:INTEGER RANGE 0 TO 15; VARIABLE cnt: STD_LOGIC_VECTOR(7 DOWNTO 0); VARIABLE num:INTEGER RANGE 0 TO 7;BEGIN--wait until net3='0';RISING_EDGE(lcd_clk); IF RISING_EDGE(lcd_clk)THEN --if sint=“00”then case sint is when “11”=> CASE state IS WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏 WHEN set_initial=> IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--设置功能:8 位,两行,5×8/每字符,重复 3 次 ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--显示模式:完成一个字符码传送后,AC 自动加 1;显 ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--显示控制:显示开,光标关,光标不闪烁 ELSE rs<='0';datacnt:=0;state <= set_cgram; END IF; WHEN set_cgram=>rs<='0';--设置 CGRAM 字符地址 data<=“01000000”+cnt;state<=write_cgram;--设置 CGRAM 字符地址 000 IF num <8 THEN cnt:=cnt+“00001000”;--设置 CGRAM 字符地址加 1 END IF; WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址写入对应的 8 个 5*8 字符字模 data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--写入 CGRAM 字符地址 000 的 5*8--字符字模 IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--写入下一个自定义--的 5*8 字符字模 IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 个 5*8 字符字模写--入完成 END IF; END IF; WHEN set_addram1=>rs<='0';--设置 ADDRAM 地址 1 data<=“10000000”;state<=diaplay_cgram; WHEN diaplay_cgram=>rs<='1';--显示 ADDRAM 地址对应的 CGRAM 字符 --if sint=“00”then IF datacnt=0 THEN data<=X“02”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“03”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data <= X“04”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“05”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“06”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--显示 cgrom 中指定的 ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1; ELSE data<=X“20”;datacnt:=0;state <= set_addram2; END IF; WHEN set_addram2=>rs<='0';--设置 ADDRAM 地址 2 data<=“11000000”;state<=diaplay_cgrom; WHEN diaplay_cgrom=>rs<='1'; IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1; ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1; ELSE data<=X“56”;datacnt:=0;state <= set_addram1; END IF; END CASE; --end if; when “01”=> --elsif sint =“01”then CASE state IS WHEN clear_display=> rs<='0';data<=“00000001”;state<=set_Initial;--清屏 WHEN set_initial=> IF datacnt<3 THEN rs<='0';data<=“00111000”;datacnt:=datacnt+1;--设置功能:8 位,两行,5×8/每字符,重复 3 次 ELSIF datacnt=3 THEN rs<='0';data<=“00000110”;datacnt:=datacnt+1;--显示模式:完成一个字符码传送后,AC 自动加 1;显 ELSIF datacnt=4 THEN rs<='0';data<=“00001100”;datacnt:=datacnt+1;--显示控制:显示开,光标关,光标不闪烁 ELSE rs<='0';datacnt:=0;state <= set_cgram; END IF; WHEN set_cgram=>rs<='0';--设置 CGRAM 字符地址 data<=“01000000”+cnt;state<=write_cgram;--设置 CGRAM 字符地址 000 IF num <8 THEN cnt:=cnt+“00001000”;--设置 CGRAM 字符地址加 1 END IF; WHEN write_cgram=> rs<='1';--在 指 定 的--CGRAM 字符地址写入对应的 8 个 5*8 字符字模 data <= cgram(num)(datacnt);datacnt:=datacnt+1;state <= write_cgram;--写入 CGRAM 字符地址 000 的 5*8--字符字模 IF datacnt=8 THEN num:=num+1;datacnt:=0;state <= set_cgram;--写入下一个自定义--的 5*8 字符字模 IF num =7 THEN num:=0;cnt:=“00000000”;state<=set_addram1;--8 个 5*8 字符字模写--入完成 END IF; END IF; WHEN set_addram1=>rs<='0';--设置 ADDRAM 地址 1 data<=“10000000”;state<=diaplay_cgram; WHEN diaplay_cgram=>rs<='1';--显示 ADDRAM 地址对应的 CGRAM 字符 --if sint=“00”then IF datacnt=0 THEN data<=X“01”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“05”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data <= X“06”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“46”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“3a”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“31”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“30”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=X“4d”;datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“48”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1;--显示 cgrom 中指定的 ELSIF datacnt=14 THEN data<=X“5a”;datacnt:=datacnt+1; ELSE data<=X“20”;datacnt:=0;state <= set_addram2; END IF; WHEN set_addram2=>rs<='0';--设置 ADDRAM 地址 2 data<=“11000000”;state<=diaplay_cgrom; WHEN diaplay_cgrom=>rs<='1'; IF datacnt=0 THEN data<=X“4A”;datacnt:=datacnt+1; ELSIF datacnt=1 THEN data<=X“41”;datacnt:=datacnt+1; ELSIF datacnt=2 THEN data<=X“43”;datacnt:=datacnt+1; ELSIF datacnt=3 THEN data<=X“4B”;datacnt:=datacnt+1; ELSIF datacnt=4 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=5 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=6 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=7 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=8 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=9 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=10 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=11 THEN data<=CONV_STD_LOGIC_VECTOR(data3+48,8);datacnt:=datacnt+1; ELSIF datacnt=12 THEN data<=X“20”;datacnt:=datacnt+1; ELSIF datacnt=13 THEN data<=CONV_STD_LOGIC_VECTOR(data2+48,8);datacnt:=datacnt+1; ELSIF datacnt=14 THEN data<=CONV_STD_LOGIC_VECTOR(data1+48,8);datacnt:=datacnt+1; ELSE data<=X“56”;datacnt:=0;state <= set_addram1; END IF; END CASE; --end if; when others =>null; end case; END IF;end process;END fwm; Choice4-1 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; --程序包 entity choice4_1 is --定义实体 port(s:in std_logic_vector(1 downto 0); --信号选择端口s d1,d2: in std_logic_vector(7 downto 0);--d1d2d3d4分别连接四个波形发生模块 y: out std_logic_vector(7 downto 0));--定义输出信号端口 end choice4_1;architecture behav of choice4_1 is --结构体 begin process(s) begin case s is --case when语句进行信号位的选择 when “01”=>y<=d1; when “11”=>y<=d2; when others=>null; end case;end process; --进程结束 end behav; --结构体结束 fangbo library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fangbo is port(clkf,rf:in std_logic;qf:out std_logic_vector(7 downto 0));end entity;architecture behav of fangbo is signal a:bit;begin process(clkf,rf)--计数分频 variable cnt:integer range 0 to 256;begin if(rf='0')then a<='0';elsif clkf'event and clkf='1' then if cnt<255 then--进行分频 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;process(clkf,a)--信号输出 begin if clkf'event and clkf='1' then if a='1' then qf<=“11111111”;else qf<=“00000000”;end if;end if;end process;end behav; sin library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity sin is port(clksin,rsin:in std_logic;da:out BIT_vector(7 downto 0));end entity;architecture behav of sin is signal a:bit;begin process(clksin,rsin)--计数分频 variable cnt:integer range 0 to 256;begin if(rsin='0')then a<='0';elsif clksin'event and clksin='1' then if cnt<4 then--进行分频 cnt:=cnt+1;else cnt:=0;a<=not a;end if;end if;end process;--process(clksin,a)process(a) variable tmp:std_logic_vector(7 downto 0);variable d:BIT_vector(7 downto 0);begin--if a='0' then--d:=“00000000”;--elsif clksin'event and clksin='1' then if a'event and a='1' then if tmp=“00111111” then tmp:=“00000000”;else tmp:=tmp+1;end if;case tmp is when “00000000”=>d:=“11111111”;when “00000001”=>d:=“11111110”;when “00000010”=>d:=“11111100”;when “00000011”=>d:=“11111001”;when “00000100”=>d:=“11110101”;when “00000101”=>d:=“11101111”;when “00000110”=>d:=“11101001”;when “00000111”=>d:=“11100001”;when “00001000”=>d:=“11011001”;when “00001001”=>d:=“11001111”;when “00001010”=>d:=“11000101”;when “00001011”=>d:=“10111010”;when “00001100”=>d:=“10101110”;when “00001101”=>d:=“10100010”;when “00001110”=>d:=“10010110”;when “00001111”=>d:=“10001010”;when “00010000”=>d:=“01111100”;when “00010001”=>d:=“01100000”;when “00010010”=>d:=“01100011”;when “00010011”=>d:=“01010111”;when “00010100”=>d:=“01001011”;when “00010101”=>d:=“01000000”;when “00010110”=>d:=“00110101”;when “00010111”=>d:=“00101011”;when “00011000”=>d:=“00100010”;when “00011001”=>d:=“00011010”;when “00011010”=>d:=“00010011”;when “00011011”=>d:=“00001101”;when “00011100”=>d:=“00001000”;when “00011101”=>d:=“00000001”;when “00011110”=>d:=“00000001”;when “00011111”=>d:=“00000000”;when “00100000”=>d:=“00000000”;when “00100001”=>d:=“00000001”;when “00100010”=>d:=“00000001”;when “00100011”=>d:=“00001000”;when “00100100”=>d:=“00001101”;when “00100101”=>d:=“00010011”;when “00100110”=>d:=“00011010”;when “00100111”=>d:=“00100010”;when “00101000”=>d:=“00101011”;when “00101001”=>d:=“00110101”;when “00101010”=>d:=“01000000”;when “00101011”=>d:=“01001011”;when “00101100”=>d:=“01010111”;when “00101101”=>d:=“01100011”;when “00101110”=>d:=“01100000”;when “00101111”=>d:=“01111100”;when “00110000”=>d:=“10001001”;when “00110001”=>d:=“10010110”;when “00110010”=>d:=“10100010”;when “00110011”=>d:=“10101110”;when “00110100”=>d:=“10111010”;when “00110101”=>d:=“11000101”;when “00110110”=>d:=“11011001”;when “00110111”=>d:=“11011001”;when “00111000”=>d:=“11100001”;when “00111001”=>d:=“11101001”;when “00111010”=>d:=“11101111”;when “00111011”=>d:=“11110101”;when “00111100”=>d:=“11111001”;when “00111101”=>d:=“11111100”;when “00111110”=>d:=“11111110”;when “00111111”=>d:=“11111111”;when others=>null;end case;end if;da<=d SRL 1;--幅度调整 end process;end behav; 频率计 1、频率产生器: library ieee;use ieee.std_logic_1164.all;library lpm;use lpm.lpm_components.all;entity lpm_counter0 is port(clock: in std_logic;q: out std_logic_vector(26 downto 0));end lpm_counter0;architecture syn of lpm_counter0 is signal sub_wire0 : std_logic_vector(26 downto 0);component lpm_counter generic(lpm_direction : string; lpm_port_updown : string;lpm_type : string;lpm_width : natural);port(clock : in std_logic; q : out std_logic_vector(26 downto 0));end component;begin q <= sub_wire0(26 downto 0);lpm_counter_component : lpm_counter generic map(lpm_direction => “up”,lpm_port_updown => “port_unused”,lpm_type => “lpm_counter”,lpm_width => 27)port map(clock => clock,q => sub_wire0);end syn; 2、测频控制信号发生器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity testpl is port(clk:in std_logic;--1Hz信号 tsten:out std_logic;--计数器使能信号 clr_cnt:out std_logic;--计数器清零信号 load:out std_logic);--锁存器输出控制信号 end testpl;architecture art of testpl is signal div2clk:std_logic;begin process(clk)begin if clk'event and clk='1'then div2clk<=not div2clk;--div2clk为0.5Hz end if;end process;process(clk ,div2clk)begin if(clk='0'and div2clk='0')then clr_cnt<='1';--当div2clk与clk同时为零时计数器清零 else clr_cnt<='0';--当div2clk处于的高电平时计数器计数 end if;end process;load<=not div2clk;--锁存器输出与计数器使能信号反相 tsten<=div2clk;end art; 3、有时钟使能的十进制计数器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en: in std_logic;--clk:计数器时钟,clr:清零信号,en:计数使能信号 q: out std_logic_vector(3 downto 0);--q:4位计数结果输出 c10: out std_logic);--计数进位 end cnt10;architecture art of cnt10 is signal cqi: std_logic_vector(3 downto 0);begin process(clk,clr)begin if clr='1' then cqi<=“0000”;--当输入的clr_cnt为低电平1时清零 elsif clk'event and clk='1' then if en='1' then--当输入的tesen为高电平1时允许计数 if(cqi<9)then cqi<=cqi+1;else cqi<=“0000”;--等于9则计数器清零 end if;--当输入的tesen为低电平0时禁止计数,锁定计数值 end if;end if;end process;--产生进位 process(cqi)begin if cqi=“1001” then c10<='1';--当加的9时产生进位输出 else c10<='0';end if;end process;q<=cqi;end art;4、16位锁存器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port(load: in std_logic;--输出锁存控制信号 din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end reg16b;architecture art of reg16b is begin process(load,din)begin if load'event and load='1'then--load为高电平时teten为低电平,计数器禁止 dout<=din;--锁存输入的数据 end if;end process;end art; 5、数码管控制器 library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ledcom is port(clk:in std_logic;--数码管扫描频率 datain: in std_logic_vector(15 downto 0);--锁存器输入的16位信号 dataout: out std_logic_vector(3 downto 0);-输出至译码器的4位信号 com: out std_logic_vector(3 downto 0));--输出数码管选择信号 end ledcom;architecture art of ledcom is signal comclk: std_logic_vector(1 downto 0);begin--comclk同扫描频率clk循环变化 process(clk)begin if rising_edge(clk)then if comclk>=3 then comclk <=“00”; else comclk<=comclk+1;end if;end if;end process;--数码管选择 process(comclk)begin case comclk is when “00” => com<=“1000”;when “01” => com<=“0100”;when “10” => com<=“0010”;when “11” => com<=“0001”;when others =>NULL;end case;end process;--对应数码管的输出 process(comclk,datain)begin case comclk is when “11”=> dataout<=datain(3 downto 0);when “10”=> dataout<=datain(7 downto 4);when “01”=> dataout<=datain(11 downto 8);when “00”=> dataout<=datain(15 downto 12);when others =>NULL;end case;end process;end art; 6、七段数码管的译码器 library IEEE;use IEEE.std_logic_1164.all;entity ymq is port(d_in: in std_logic_vector(3 downto 0);--数码管控制器输入四位信号 d_out: out std_logic_vector(7 downto 0));--输出8位信号 end ymq;--第8位d_out[7]为逗号 architecture art of ymq is begin process(d_in)begin case d_in is--第8位为1高电平逗号不显示 when “0000” => d_out<=“11000000”;--0 when “0001” => d_out<=“11111001”;--1 when “0010” => d_out<=“10100100”;--2 when “0011” => d_out<=“10110000”;--3 when “0100” => d_out<=“10011001”;--4 when “0101” => d_out<=“10010010”;--5 when “0110” => d_out<=“10000010”;--6 when “0111” => d_out<=“11111000”;--7 when “1000” => d_out<=“10000000”;--8 when “1001” => d_out<=“10010000”;--9 when others =>NULL;end case;end process;end art; 7、元件声明及例化将各个元器件依据设计相连 library ieee;use ieee.std_logic_1164.all;entity lx is port(clk: in std_logic;led: out std_logic_vector(7 downto 0);ledc: out std_logic_vector(3 downto 0));end lx;architecture art of lx is component lpm_counter0--待调用的频率生成器端口定义 PORT(clock: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(26 DOWNTO 0));end component;--十进制计数器 component cnt10--待调用的有时钟使能的十进制计数器端口定义 port(clk,clr,en: in std_logic;q: out std_logic_vector(3 downto 0);c10: out std_logic);end component;--16位锁存器 component reg16b--待调用的32位锁存器端口定义 port(load: in std_logic;din: in std_logic_vector(15 downto 0);dout: out std_logic_vector(15 downto 0));end component;--测频控制器 component testpl--待调用的测频控制信号发生器端口定义 port(clk:in std_logic;tsten:out std_logic;clr_cnt:out std_logic;load:out std_logic);end component;--数码管选择器 component ledcom--待调用的数码管选择器端口定义 port(clk:in std_logic;datain: in std_logic_vector(15 downto 0);dataout: out std_logic_vector(3 downto 0);com: out std_logic_vector(3 downto 0));end component;--译码器 component ymq--待调用的译码器端口定义 port(d_in: in std_logic_vector(3 downto 0);d_out: out std_logic_vector(7 downto 0));end component;signal clk1,clk2,clk3: std_logic;--clk1为1Hz信号,clk2为被测信号,clk3为数码管扫描信号 signal tsten,clr,load: std_logic;signal c1,c2,c3,c4: std_logic;signal qout,rout: std_logic_vector(15 downto 0);signal datao: std_logic_vector(3 downto 0);begin u0:testpl port map(clk1,tsten,clr,load);u1:cnt10 port map(clk2,clr,tsten,qout(3 downto 0),c1);u2:cnt10 port map(c1,clr,tsten,qout(7 downto 4),c2);u3:cnt10 port map(c2,clr,tsten,qout(11 downto 8),c3);u4:cnt10 port map(c3,clr,tsten,qout(15 downto 12),c4);u5:reg16b port map(load,qout(15 downto 0),rout);u6:ledcom port map(clk3,rout,datao,ledc);u8:ymq port map(datao,led);u9:lpm_counter0 port map(clk,q(25)=>clk1,q(15)=>clk2,q(17)=>clk3);end art; 6.结果显示 7.实习心得