论文部分内容阅读
[摘 要]本文介绍了基于Verilog HDL的自动售货机,本设计主要利用ISE平台,采用Verilog HDL设计系统核心电路,并外接了一个RS232模块,采用RS232串行通讯协议,实现串行数据的接收和发送,将数据通过电脑发送到Basys2开发板上并让其接收,并可结合芯片上的数码管进行具体的数字显示,最终完成的自动售货机系统具有投币处理、商品选择、找零、异常退币等功能。
[关键词]自动售货机 Verilog HDL 现场可编程门阵列(FPGA)
中图分类号:TH692.62 文献标识码:A 文章编号:1009-914X(2015)48-0132-02
一、引言
随着社会的发展,自动售货机在人们日常生活中越来越普遍,透过这种智能售货系统不仅可以存货、销售,还可将物流信息准确、及时地反馈给客户和管理人员,前景非常广阔。
Verilog HDL是一种技术性、应用性很强的硬件描述语言,主要用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模,由于这种语言简捷、高效、易学易用、功能强,因此逐渐为众多设计者所接受。
二、设计方案
在已有的自动售货机控制模块中,通过控制开关来表示投入的币值和所选的商品,本次设计用四个开关表示可选的四种商品,通过在电脑上输入aa、bb、cc分别表示投入0.5元、1元、5元币值,该方案可以通过电脑来传输数据,并且易于对数据的处理,具有更大的便捷性。
自动售货机的问题实际就是状态转换的问题,不同的状态对应不同的输出。我们设计的自动售货机有四个状态,即初始、选择商品、投币、找零状态。
1、初始状态
各变量都设置为零,按下 rst 键后,一切恢复到初始状态。
2、投币状态
投币口只接受三种面值的钱币0.5元、1元和5元,可以同时投入多种面值钱币,但总币值不能超过9.5元。投完币后,数码管显示投币金额。
3、选择商品状态
四个按键开关分别表示四种价格的商品,售货时可选择四种商品的任意组合。
4、找零状态
将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回钱币,警示灯亮;若大于等于商品价格,则两者做差,得到需要找零的钱,数码管显示找零金额。
三、模块划分
1、主控模块程序
主控模块程序通过对输入的信号进行处理,完成自动售货的售货功能,pri_5, pri_10,pri_15,pri_20分别代表四种价格的商品,rs232_rx、rs232_tx分别为接收、发送数据信号,bps_start2波特率时钟启动信号,接收到数据后,该信号置位,clk_bps为高电平为接收数据位的中间采样点,rx_data为接收数据寄存器,rx_int为接收数据中断信号,程序主要流程如下:
input clk;
input rst;
input pri_5,pri_10,pri_15,pri_20;
input rs232_rx;
output rs232_tx;
wire bps_start1,bps_start2;
wire clk_bps1,clk_bps2;
wire[7:0] rx_data;
wire rx_int;
wire [7:0] out1,out2;
begin
* 波特率发生模块
* 数据接收模块
* 波特率发生模块
* 数据发送模块
* 自动售货机功能实现与显示模块
end
endmodule
2、波特率发生模块
波特率发生器实际上就是分频器,可以根据给定的系统时钟频率和要求的波特率算出波特率分频因子,把算出的波特率分频因子作为分频器的分频系数,具体程序流程如下:
input clk;
input rst;
input bps_start;
output clk_bps;
reg [12:0] cnt;
reg clk_bps_r;
begin
* 一个脉宽完成或者波特率不需要产生时,波特率计数清零
* 当clk_bps_r高电平为接收数据位的中间采样点,同时也作为发送数据的数据改变点
end
endmodule
3、数据接收模块
变量rs232_rx0,rs232_rx1,rs232_rx2,rs232_rx3为接收数据寄存器,滤波时用,neg_rs232_rx为下降沿标志位,为1表明数据线接收到下降沿开始接收起始位,程序主要流程如下:
input clk;
input rst;
input rs232_rx;
input clk_bps;
reg rs232_rx0,rs232_rx1,rs232_rx2,rs232_rx3;
wire neg_rs232_rx;
begin
* 当系统接收到串口接收线rs232_rx的下降沿标志信号, 开始接收起始位,
启动串口准备数据接收
* 接收数据中断信号,使能置位表示数据正在接收
* 数据接收完毕后释放波特率启动信号
* 关闭波特率使能 * 接收数据中断信号关闭,不再接收数据
end
Endmodule
4、数据发送模块
rx_int为信号寄存器,捕捉下降沿滤波用,neg_rx_int为rx_int下降沿标志用来捕捉下降沿,程序具体流程如下:
input rx_int;
output rs232_tx;
output bps_start;
reg rx_int0,rx_int1,rx_int2;
wire neg_rx_int;
begin
* 若捕捉到下降沿,开始准备把接收到的数据发送回去
* 产生波特率
* 把接收到的数据存入发送数据寄存器
* 进入发送数据状态中,打开发送使能
* 数据发送完成,重新复位
end
endmodule
5、自动售货机功能实现模块
程序主要流程如下:
bengin
* 从电脑输入所投钱币
* 选择要购买的商品
* 找零
* 数码管显示找零金额
end
Endmodule
四、总结
基于FPGA的自动售货机具有极大的实用性和商业价值,若能将其投入使用,必然会有很好的效果,veriloge HDL语言有限状态机设计控制电路,可大大降低设计难度和时间,提高设计效率和可靠性,利用语言的灵活性及功能强大的EDA工具,可以轻松完成硬件的功能扩充与升级,还可以实现更复杂的数字系统,整个设计过程相对于普通的设计方法,有较大的突破。
参考文献
[1] 王雯隽.基于Verilong-HDL自动售货机的设计与实现[J].微型电脑应用,2005,21(5):19-20,62.DOI:10.3969/j.issn.1007-757X.2005.05.007.
[2] 陈涛.货币识别器的原理与设计[J].甘肃科技纵横,
2006,35(6):82,181.DOI:10.3969/j.issn.1672-6375.2006.06.062.
[3] 梁雪梅,钟建权,谷斌等.基于TRIZ理论应用的校园刷卡式自动售货机研制[J].广东科技,2010,19(14):66-68.DOI:10.3969/j.issn.1006-5423.2010.14.037
[关键词]自动售货机 Verilog HDL 现场可编程门阵列(FPGA)
中图分类号:TH692.62 文献标识码:A 文章编号:1009-914X(2015)48-0132-02
一、引言
随着社会的发展,自动售货机在人们日常生活中越来越普遍,透过这种智能售货系统不仅可以存货、销售,还可将物流信息准确、及时地反馈给客户和管理人员,前景非常广阔。
Verilog HDL是一种技术性、应用性很强的硬件描述语言,主要用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模,由于这种语言简捷、高效、易学易用、功能强,因此逐渐为众多设计者所接受。
二、设计方案
在已有的自动售货机控制模块中,通过控制开关来表示投入的币值和所选的商品,本次设计用四个开关表示可选的四种商品,通过在电脑上输入aa、bb、cc分别表示投入0.5元、1元、5元币值,该方案可以通过电脑来传输数据,并且易于对数据的处理,具有更大的便捷性。
自动售货机的问题实际就是状态转换的问题,不同的状态对应不同的输出。我们设计的自动售货机有四个状态,即初始、选择商品、投币、找零状态。
1、初始状态
各变量都设置为零,按下 rst 键后,一切恢复到初始状态。
2、投币状态
投币口只接受三种面值的钱币0.5元、1元和5元,可以同时投入多种面值钱币,但总币值不能超过9.5元。投完币后,数码管显示投币金额。
3、选择商品状态
四个按键开关分别表示四种价格的商品,售货时可选择四种商品的任意组合。
4、找零状态
将所投的金额与所选商品的价格做比较,若所投金额小于商品价格,则退回钱币,警示灯亮;若大于等于商品价格,则两者做差,得到需要找零的钱,数码管显示找零金额。
三、模块划分
1、主控模块程序
主控模块程序通过对输入的信号进行处理,完成自动售货的售货功能,pri_5, pri_10,pri_15,pri_20分别代表四种价格的商品,rs232_rx、rs232_tx分别为接收、发送数据信号,bps_start2波特率时钟启动信号,接收到数据后,该信号置位,clk_bps为高电平为接收数据位的中间采样点,rx_data为接收数据寄存器,rx_int为接收数据中断信号,程序主要流程如下:
input clk;
input rst;
input pri_5,pri_10,pri_15,pri_20;
input rs232_rx;
output rs232_tx;
wire bps_start1,bps_start2;
wire clk_bps1,clk_bps2;
wire[7:0] rx_data;
wire rx_int;
wire [7:0] out1,out2;
begin
* 波特率发生模块
* 数据接收模块
* 波特率发生模块
* 数据发送模块
* 自动售货机功能实现与显示模块
end
endmodule
2、波特率发生模块
波特率发生器实际上就是分频器,可以根据给定的系统时钟频率和要求的波特率算出波特率分频因子,把算出的波特率分频因子作为分频器的分频系数,具体程序流程如下:
input clk;
input rst;
input bps_start;
output clk_bps;
reg [12:0] cnt;
reg clk_bps_r;
begin
* 一个脉宽完成或者波特率不需要产生时,波特率计数清零
* 当clk_bps_r高电平为接收数据位的中间采样点,同时也作为发送数据的数据改变点
end
endmodule
3、数据接收模块
变量rs232_rx0,rs232_rx1,rs232_rx2,rs232_rx3为接收数据寄存器,滤波时用,neg_rs232_rx为下降沿标志位,为1表明数据线接收到下降沿开始接收起始位,程序主要流程如下:
input clk;
input rst;
input rs232_rx;
input clk_bps;
reg rs232_rx0,rs232_rx1,rs232_rx2,rs232_rx3;
wire neg_rs232_rx;
begin
* 当系统接收到串口接收线rs232_rx的下降沿标志信号, 开始接收起始位,
启动串口准备数据接收
* 接收数据中断信号,使能置位表示数据正在接收
* 数据接收完毕后释放波特率启动信号
* 关闭波特率使能 * 接收数据中断信号关闭,不再接收数据
end
Endmodule
4、数据发送模块
rx_int为信号寄存器,捕捉下降沿滤波用,neg_rx_int为rx_int下降沿标志用来捕捉下降沿,程序具体流程如下:
input rx_int;
output rs232_tx;
output bps_start;
reg rx_int0,rx_int1,rx_int2;
wire neg_rx_int;
begin
* 若捕捉到下降沿,开始准备把接收到的数据发送回去
* 产生波特率
* 把接收到的数据存入发送数据寄存器
* 进入发送数据状态中,打开发送使能
* 数据发送完成,重新复位
end
endmodule
5、自动售货机功能实现模块
程序主要流程如下:
bengin
* 从电脑输入所投钱币
* 选择要购买的商品
* 找零
* 数码管显示找零金额
end
Endmodule
四、总结
基于FPGA的自动售货机具有极大的实用性和商业价值,若能将其投入使用,必然会有很好的效果,veriloge HDL语言有限状态机设计控制电路,可大大降低设计难度和时间,提高设计效率和可靠性,利用语言的灵活性及功能强大的EDA工具,可以轻松完成硬件的功能扩充与升级,还可以实现更复杂的数字系统,整个设计过程相对于普通的设计方法,有较大的突破。
参考文献
[1] 王雯隽.基于Verilong-HDL自动售货机的设计与实现[J].微型电脑应用,2005,21(5):19-20,62.DOI:10.3969/j.issn.1007-757X.2005.05.007.
[2] 陈涛.货币识别器的原理与设计[J].甘肃科技纵横,
2006,35(6):82,181.DOI:10.3969/j.issn.1672-6375.2006.06.062.
[3] 梁雪梅,钟建权,谷斌等.基于TRIZ理论应用的校园刷卡式自动售货机研制[J].广东科技,2010,19(14):66-68.DOI:10.3969/j.issn.1006-5423.2010.14.037