名称:自动售货机设计Verilog代码Quartus DE2-70开发板
软件:Quartus
语言:Verilog
代码功能:
自动售货机设计
1.设计目的
(1)了解DE2-70开发板的硬件构成;
(2)熟悉开发板可用资源的硬件电路;
(3)掌握EDA开发流程;
(4)熟悉 Quartus开发环境;
(5)掌握 Verilog基本语法;
(6)熟练掌握在 QuartusⅡ环境下进行软件仿真的方法。
2.设计内容及基本要求
设计一个小商品自动售货机,要求如下:
(1)基本功能
①用四个发光二极管分别模拟售出价值为1元、1.5元、2元、5元的小商品,购买者可以通过开关选择任意一种标价中的小商品;
②灯亮时表示小商品售出;
③用开关分别模拟5角、1元硬币和5元纸币投入,可以用几只发光二极管(或数码管)分别代表找回剩余的硬币;
④每次只能售出一种小商品,当所投硬币达到或超出购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;
⑤当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。
(2)扩展功能
按下确认购买开关,找零时,对应数码管显示找零金额,蜂鸣器响,对应价位商品的LED灯亮。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在DE2-70开发板验证,DE2-70开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 管脚分配
4. 程序编译
5. RTL图
6. 仿真图
按键下降沿检测模块
售货机状态控制模块
数码管显示模块
部分代码展示:
//数码管显示模块 module display( input clk_in,//时钟 input [7:0] input_money_BCD,//投币金额 input [7:0] change_money_BCD,//找钱 output reg [7:0] HEX0,//数码管-低亮 output reg [7:0] HEX1,//数码管-低亮 output reg [7:0] HEX2,//数码管-低亮 output reg [7:0] HEX3//数码管-低亮 ); //定义十位个位信号 wire [3:0] money_ten; wire [3:0] money_one; wire [3:0] change_money_ten; wire [3:0] change_money_one; assignmoney_ten = input_money_BCD/10;//投币金额十位 assignmoney_one = input_money_BCD%10;//投币金额个位 assignchange_money_ten = change_money_BCD/10;//找钱十位 assignchange_money_one = change_money_BCD%10;//找钱个位 ///段选输出/// //显示投币金额十位 always @(money_ten) begin case (money_ten) //数字显示码 4'd0: HEX0= 8'b1100_0000; 4'd1: HEX0= 8'b1111_1001; 4'd2: HEX0= 8'b1010_0100; 4'd3: HEX0= 8'b1011_0000; 4'd4: HEX0= 8'b1001_1001; 4'd5: HEX0= 8'b1001_0010; 4'd6: HEX0= 8'b1000_0010; 4'd7: HEX0= 8'b1111_1000; 4'd8: HEX0= 8'b1000_0000; 4'd9: HEX0= 8'b1001_0000; default:; endcase end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1178
673