news 2026/2/14 3:09:58

手搓FPGA自动售货机实录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手搓FPGA自动售货机实录

Fpga设计 自动售货机 Verilog语言,具有真正投币功能,具有远程遥控功能,具有商品选择功能等。 提供完整的代码,仿真,实物。

这年头搞数电实验,不整点硬核的真对不起那些吃灰的开发板。最近用Verilog搓了个能投真硬币的自动售货机,顺带实现了远程遥控功能。直接上干货,咱们边看代码边聊门道。

硬币检测的黑科技

投币模块用了红外对射传感器阵列,不同硬币遮挡时间不同。代码里用状态机捕捉下降沿:

always @(posedge clk) begin case(coin_state) IDLE: begin if(!coin_sensor) coin_state <= DETECTING; end DETECTING: begin if(coin_counter > 20_000_000) begin // 1秒超时 coin_value <= (coin_width > 10) ? 5 : 1; // 根据遮挡宽度判断面值 total_money <= total_money + coin_value; coin_state <= IDLE; end coin_counter <= coin_counter + 1; end endcase end

这段代码的精髓在于用时钟周期数测量硬币通过时间。实战中发现1元硬币直径24mm,通过速度约0.5m/s,遮挡时间48ms左右,对应代码里的阈值参数需要根据实际传感器间距调整。

商品选择与库存管理

商品选择用了4x4矩阵键盘,库存存在Block RAM里。核心逻辑在这:

reg [7:0] stock[0:3]; // 4种商品库存 always @(posedge key_pressed) begin case(key_code) 4'h1: if(stock[0] >0 && total_money >= price[0]) begin stock[0] <= stock[0] -1; total_money <= total_money - price[0]; end // 其他商品类似处理 endcase end

重点在价格比较和库存递减的原子操作,必须确保这两个动作在一个时钟周期完成,否则可能出现"买了东西钱没扣"的bug。实测用非阻塞赋值刚好满足时序要求。

远程遥控的骚操作

通过ESP32转接UART协议,接收手机控制指令。协议设计简单粗暴:

字节1字节2字节3
0xA5指令数据

补货指令处理代码:

always @(posedge uart_rx_done) begin if(rx_buf[0] == 8'hA5) begin case(rx_buf[1]) 8'h01: stock[rx_buf[2][1:0]] <= rx_buf[2][7:2]; // 补货 8'h02: price[rx_buf[2][1:0]] <= rx_buf[2][7:2]; // 调价 endcase end end

调试时发现UART波特率必须和FPGA时钟严格匹配,115200波特率对应每bit约8.68us,用50MHz时钟需要分频434次,实测误差必须小于3%才能稳定通信。

实物调试翻车现场

第一次上电时数码管疯狂乱闪,查代码发现金额显示模块的BCD转换没做时钟同步。改完又遇到硬币卡壳,最后用砂纸打磨传感器支架解决。远程控制最坑爹的是电磁干扰,后来给杜邦线套磁环才稳定。

Fpga设计 自动售货机 Verilog语言,具有真正投币功能,具有远程遥控功能,具有商品选择功能等。 提供完整的代码,仿真,实物。

完整工程已扔GitHub(假装有链接),下期可能加个人脸识别扣款功能——前提是老板别发现我拿公司开发板摸鱼。各位要是复现时遇到玄学问题,记住三大法宝:重启、换线、骂立决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/7 19:38:59

如何绑定自己的域名生成专属短链接

将自有域名解析至C1N短链接(c1n.cn)平台&#xff0c;生成自有域名下的短链接&#xff0c;可以让链接更具品牌辨识度。 ​ 大家经常需要将长链接转为短链接&#xff0c;方便推广传播。但很多时候又想用自己的域名生成短链接&#xff1f; 搭建短链接平台比较麻烦&#xff0c;C1N …

作者头像 李华
网站建设 2026/2/12 12:49:07

火语言 RPA:英数图形验证码自动化处理案例

一、案例说明 本案例基于火语言 RPA 实现英数图形验证码的自动校验登录&#xff0c;通过脚本替代人工操作&#xff0c;完成 “打开浏览器→ 访问登录页→ 输入手机号→ 触发英数验证码→ 截图识别→ 回填验证码” 的全流程自动化。 二、案例逻辑 点击 “获取验证码” 按钮触发…

作者头像 李华
网站建设 2026/2/7 11:34:20

企模板就是企业网站模板

企模板 - 专业企业网站模板平台 企模板(qimoban.com)是国内领先的企业网站模板专业平台&#xff0c;专注于为各行各业的企业提供高质量、响应式的网站模板解决方案。平台汇聚了大量精心设计的企业网站模板&#xff0c;涵盖制造业、服务业、科技公司、外贸企业等多个领域&#…

作者头像 李华
网站建设 2026/2/11 1:40:58

罗德与施瓦茨SMW200A单双通道3G6G信号发生器

R&SSMW200A矢量信号发生器主要特点&#xff1a; 满足您的所有要求 频率范围介于 100 kHz 至 3 GHz、6 GHz、12.75 GHz、20 GHz、31.8 GHz 或 40 GHz 可选的附加射频路径&#xff08; 100 kHz 至 3 GHz、6 GHz、12.75 GHz 或 20 GHz&#xff09; 通用配置&#xff1a; 从单通…

作者头像 李华
网站建设 2026/2/11 20:29:31

WGCLOUD使用说明 - 如何监控主机的网络配置信息

WGCLOUD支持监控主机的网络配置信息&#xff08;网卡、MAC地址等&#xff09;&#xff0c;而且是自动采集的&#xff0c;无需配置 WGCLOUD在v3.6.3版本开始支持采集的主机的ifconfig或者ipconfig信息&#xff0c;如下图 WGCLOUD在之前的版本也支持采集主机的MAC地址和网卡名称…

作者头像 李华
网站建设 2026/2/7 11:04:54

C#操作Word文档:如何精准插入与格式化段落?

在C#应用开发中&#xff0c;处理Word文档是常见的需求&#xff0c;尤其是在生成报告、合同或自动化文档时。然而&#xff0c;如何高效、精准地插入段落&#xff0c;无论是纯文本、带格式文本&#xff0c;还是从其他文档复制内容&#xff0c;往往是开发者面临的痛点。原生的COM组…

作者头像 李华