news 2026/4/15 11:32:16

手搓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/4/14 18:41:36

LabVIEW Excel工具包:高效读写EXCEL样式模板,快速生成测试报告

LabVIEW Excel工具包快速读写EXCEL样式模板生成测试报告制作 LabVIEW工程师最头疼的Excel报告生成终于有解了&#xff01;最近项目里被要求每天生成格式统一的测试报告&#xff0c;手动操作Excel差点把我逼疯。直到发现LabVIEW自带的Excel工具包&#xff0c;真香警告来了——原…

作者头像 李华
网站建设 2026/4/14 19:35:03

别再只比报价了:采购定价常用的四种方法

很多采购都有过这种场景。老板问&#xff1a;“这个物料&#xff0c;为什么比去年贵这么多&#xff1f;”你心里一紧&#xff0c;嘴上只能说&#xff1a;“已经找了三家供应商比价了&#xff0c;这家最便宜。”说实话&#xff0c;这句话在十年前可能还管用&#xff0c;现在越来…

作者头像 李华
网站建设 2026/4/13 16:39:20

听说有人想用智能算法暴打旅行商?这事我熟啊!当年被TSP按在地上摩擦的经历还历历在目。今天咱们拿遗传算法开刀,手把手教你造个能自己找最优路线的AI

智能优化算法解决旅行商TSP问题。 ——可选如PSO、GA、ABC、SA和GASA等相关的优化算法。 代码清晰、易懂&#xff0c;代码质量极高&#xff0c;便于新手学习和理解。 先看核心武器库——种群对象。这里用numpy搞了个骚操作&#xff1a;每个个体都是城市的乱序排列&#xff0c;像…

作者头像 李华
网站建设 2026/4/7 13:50:45

Java计算机毕设之基于springboot的高校学生心理健康管理系统基于Springboot的大学生心理健康管理平台(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/13 22:27:38

Java毕设选题推荐:基于Springboot的大学生心理健康管理平台基于springboot的高校学生心理健康管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/13 2:37:33

im推荐-BeeWorks私有化部署的局域网即时通讯工具

IM推荐-BeeWorks私有化部署的局域网即时通讯工具在当今数字化办公时代&#xff0c;选择一款安全、高效且可控的企业IM&#xff08;即时通讯&#xff09;工具&#xff0c;是构建高效协作团队和保障信息资产安全的基石。面对公有云通讯工具在数据隐私和网络依赖上的固有风险&…

作者头像 李华