HDL(Verilog)课程设计报告(自动售货机)Word下载.docx
- 文档编号:15403794
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:13
- 大小:51.48KB
HDL(Verilog)课程设计报告(自动售货机)Word下载.docx
《HDL(Verilog)课程设计报告(自动售货机)Word下载.docx》由会员分享,可在线阅读,更多相关《HDL(Verilog)课程设计报告(自动售货机)Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
目录
摘要I
第一章 系统设计1
1.1 系统设计1
1.2 系统设计方案比较1
1.2.1 总体设计1
1.2.1 设计方案比较1
第二章 详细设计2
2.1 自动售货机状态描述2
2.2 详细状态描述3
2.2.1初始状态3
2.2.2选商品状态3
2.2.3投币状态3
2.2.4找零状态3
第三章 软件设计3
3.1 程序总流程图3
3.2 程序4
第四章 结果与讨论7
4.1实验调试7
4.1.1调试步骤7
4.1.2实验现象7
4.2结果与分析8
总结8
参考文献8
附录9
第一章系统设计
1.1系统设计
(1)用四个发光二极管分别模拟售出价值为5角、1元、1.5元和2元的小商品,购买者可以通过开关选择任意一种标价中的小商品。
(2)灯亮时表示该小商品售出。
(3)用开关分别模拟5角、1元硬币和5元纸币投入,可以用几只发光二极管(或数码管)分别代表找回剩余的硬币。
(4)每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;
(5)当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。
1.2系统设计方案比较
1.2.1总体设计
采用FPGA来设计的原理图如图1.1所示.它由控制输入电路、FPGA、显示电路电路组成。
图1.1采用FPGA设计的自动售货机原理方框图
控制输入电路主要是为用户设计的,起到一个输入控制的作用。
FPGA是现场可编程逻辑器件,也是本设计方案的核心内容,它是实现自动售货机运作的主要控制模块。
将编写好的HDL程序烧制到现场可编程逻辑器件FPGA中,然后通过控制输入电路把信号输入到FPGA,由八个开关控制输入信号即消费者选择商品和消费者投币及确认消费,动态数码管显示输出信号即找零环节和所选择的商品、消费者投币。
1.2.2设计方案比较
本设计可以通过多种方案来实现,下面就主要的三种方案进行阐述和比较。
方案一:
采用数字逻辑电路制作,用IC器件连接焊接外围电路实现,这种电路很直观,简单方便。
但应用数字逻辑电路制作,使用的器件较多,连接复杂,体积大,功耗大。
电路中焊点和线路较多会,使成品的稳定度和精度大大降低。
方案二:
使用现场可编程逻辑器件(FPGA)制作,利用VerilogHDL硬件描述语言编程进行控制,然后烧写实现。
方案三:
单片机现在已经达到很成熟的阶段了,它的应用也十分广泛。
采用单片机来实现自动售货机,它的原理方框图与用FPGA来实现的原理方框图类似,如图1.2所示。
图1.2采用单片机实现自动售货机的原理方框图
图1.1和图1.2的基本原理都相同,唯一不同的是一个是用FPGA来制作,一个是用单片机来实现。
采用单片机来实现自动售货机,主要的核心是单片机程序的设计。
方案比较:
对于自动售货机的设计,三个方案均可以实现,但是第一个方案中采用的是数字逻辑电路来制作,该电路硬件所需的器材多,体积庞大,比较复杂,而且精度和稳定度都不是很高。
第二个方案采用的是现场可编程逻辑器件来实现,它的优点是所有电路集成在一块芯片上,此方案所需的外围电路简单,这样它的体积就减少了,同时还提高了系统的稳定度。
还可以用软件QuartusⅡ软件进行仿真和调试等。
可以充分利用HDL硬件描述语言方便的编程,提高开发效率,缩短研发周期,降低研发成本;
而且易于进行功能的扩展,实现方法灵活,调试方便,修改容易.方案三也有它的优点,但同时也存在缺点。
它对设计者的要求比较高,设计者对软硬件必须十分熟悉[2]。
和方案二来比它的实验仿真没有方案二简单直观,调试也有一定的难度。
在外界环境相同的条件下,方案三设计出来的产品精度和稳定度要比方案二稍微差一些。
因此,自动售货机的设计我们选择方案二来实现。
第二章详细设计
2.1自动售货机状态描述
判断开关被按下的个数N。
若N>
=2表示所选本次选择无效,返回初始状态;
若N=1则显示所选商品,并继续执行下面的流程。
3个开关分别代表三种商品。
4个开关分别代表投入0.5元,1元,2元,5元,统计投入总额。
投入总额与商品价格做比较,如果总额<
商品价格,退钱并返回初始状态如果总额>
=商品价格,则继续执行下面的程序。
找零=总额-商品价格,数码管显示找零金额。
状态图如图2.1所示:
图2.1自动售货机状态图
2.2详细状态描述
2.2.1初始状态
各变量都设置为零,按下rst键后,一切恢复到初始状态。
2.2.2选商品状态
分别有价格为0.5元、1元、1.5元和2元的商品,每次选择商品前,设置一个标志位btn_sell表示选择商品状态。
此自动售货机每一次售货时只能一次选择一种商品,当同时选择两种以上时,选择商品无效,数码管显示清零,重新进行商品选择。
选择商品后,数码管显示所选商品价格。
2.2.3投币状态
当选好商品后,开始投币。
同样有一标志位btn_price表示投币金额。
投币口只接受三种面值的钱币0.5元、2元和5元,可以同时投入多种面值钱币。
投完币后,先有一个确认买商品的过程,若投了币但又不购买商品了,就将全部投币金额退回;
若确认购买商品,则进入下一状态——找零状态。
2.2.4找零状态
投完币,并确认购买商品后,进入找零状态。
首先要将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回所投钱币;
若大于等于商品价格,则两者做差,得到需要找零的钱。
第三章软件设计
3.1程序总流程图
3.2程序
moduleauto_seller(clk,rst,dis_mony,dis_price,btn_ok,btn_mon,btn_sell,led_warn,led,beep);
inputclk,rst,btn_ok;
input[2:
0]btn_mon;
//选择放入的钱
input[3:
0]btn_sell;
//选择商品bbt_5,gz_10,kqs_15,kl_20
output[3:
0]led;
//led_5,led_10,led_15,led_20
outputled_warn;
//钱不足,指示灯
output[11:
0]dis_mony;
//数码管显示投入面值,dia_mony[10:
7]=com位选,dis_mony[7:
0]=段码
0]dis_price;
//数码管显示价钱
outputbeep;
regclk_500Hz;
reg[3:
regled_warn;
//警告放入钱不足
reg[11:
reg[31:
0]counter;
reg[9:
0]price,price_all;
reg[1:
0]flag=2'
b00;
//数码管显示标志位
regbeep=0;
parameterCOUNT1=25'
d10000;
/*分频使数码管显示稳定*/
always@(posedgeclk)
begin
if(counter==0)
begin
counter<
=COUNT1;
clk_500Hz<
=~clk_500Hz;
end
else
=counter-1;
end
always@(negedgerstorposedgeclk)
begin
if(!
rst)
led=4'
b0000;
//LED灭
price_all=0;
//价格清零
led_warn=0;
price=0;
beep=0;
else
begin/*三种面值共8种组合*/
case(btn_mon)
3'
b001:
beginprice_all=5;
end
b010:
beginprice_all=10;
b100:
beginprice_all=50;
b011:
beginprice_all=15;
b101:
beginprice_all=55;
b110:
beginprice_all=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HDL Verilog 课程设计 报告 自动 售货