资源描述:
《eda课程设计--自动售货机》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、目录二、课程设计目的……………………………………………………2二、课程设计题目描述和要求…………………………………………2三、课程设计报告内容…………………………………………………23.1、设计原理、方案论证…………………………………………23.2、设计过程……………………………………………………23.2.1、系统框图………………………………………………23.2.2、设计总程序……………………………………………33.2.3、软件仿真………………………………………………43.2.4管脚定义………………………………………………53.2.5下载程序与仿真结果……………………
2、……………6四、设计总结和心得体会………………………………………………7参考文献…………………………………………………………………8附录……………………………………………………………………812一、课程设计目的:1)熟悉学习QuartusII的编程与调试方式,学会在QuartusII中使用波形图进行软件仿真,并使用EDA6000进行硬件仿真与调试。2)设计一个自动售货机,具有投币和选择商品等功能二、课程设计题目描述和要求:首先应搭建识别模块,将代表每种硬币的拨码开关信号和选择的商品信号转变为数码管显示信号。两者要进行比较,如果钱数大于售出商品则对其进行求差,求差的结果
3、作为找钱信号;如果等于直接售出商品;小于则报警。程序中会有一个分频模块,对CLK进行分频,并有一个复位键。三、课程设计报告内容3.1、设计原理、方案论证1)设计一个自动售货机,此机能出售1元、2.5元、3元、3.5元的四种商品。出售哪种商品可有顾客按动相应的按键即可,并同时用数码管显示售出的是第几种商品;2)顾客可通过选择投入的钱数来购买商品,并且有一个确认键;3)如果选择投入的钱小于选择的商品价格,则显示出价格和选择的钱数,并且警告灯亮;4)如果选择投入的钱大于选择的商品价格,则显示出价格和找回的钱;5)此售货机有一个整体复位控制。3.2、设计过程123.2.1、系
4、统框图:开始选择商品显示选择的商品选择投入的钱币钱数大于商品价格显示钱数、警告灯亮显示找零、输出商品3.2.2、设计总程序:12123.2.3、软件仿真当选择钱数为100即为2元、选择商品为10即为3元时,led_warn亮,led_price和led_money、led_good分别显示应该显示的数据123.2.4管脚定义:123.2.5下载程序与仿真结果:商品选择第二个,投入钱币是5,结果显示中25为价格05为投入的钱,2是选择的商品,led_warn亮;商品选择第一个,投币35,结果中10为商品价格,25为找零,1为选择的商品12四、设计总结和心得体会通过本次课
5、程设计,我对VerilogHDL语言有了更深刻的了解,能够比较灵活地运用它来实现我们所想要要其实现的功能。在实验中,我也遇到了很多挫折,不过我都和同伴一一克服了,大家齐心协力解决了问题,使我明白了和他人共同合作的重要性。在以后的道路上我们也必须深刻认识到团队合作的精神,投入今后的发展之中。成功就是在不断摸索着前进中实现的,遇到问题我们不能灰心、烦躁,甚至放弃,而要静下心来仔细思考,分部检查,找出最终的原因进行改正,这样才会有进步,才会一步步向自己的目标靠近,才会取得自己所要追求的成功。参考文献:[1]潘松,《EDA实用教程》,科学出版社,2004年[2]夏宇闻编著《V
6、erilog数字系统教程》北京航空航天出版社[3]梁瑞宇编写《FPGA设计实验指导书(VerilogHDL)》附录(程序)12Moduleautoseller(clk,ok,g,rst,m,led_goods,led_money_a,led_money_b,led_price_a,led_price_b,led_warn);inputclk,ok,rst;//脉冲,确定键,清零键input[1:0]g;//货品选择键input[2:0]m;output[6:0]led_money_b,led_price_b,led_goods;output[7:0]led_money
7、_a,led_price_a;outputled_warn;regf_500;//分频时钟reg[6:0]goods;regled_warn;integera_tmp,price,money,money_a,money_b,price_a,price_b;reg[6:0]led_money_b,led_price_b,led_goods;reg[7:0]led_money_a,led_price_a;always@(posedgeclk)beginif(a_tmp==499)beginf_500=~f_500;a_tmp<=0;endelsea_tm