FPGA小白学习日志二:利用LED实现2选1多路选择器

  在上一篇文章中,主播利用炒菜的比喻帮大家介绍了LED工程的建立,所以在读这一篇文章前,大家可以简要回顾以下LED工程的建立流程。本篇内容,主播主要向大家介绍数据选择器工程的实现方法。

  在开始之前,我们先来了解一下数据选择器是什么:所谓数据选择器,就是从多个输入的逻辑信号中选择一个逻辑信号输出,实现数据选择功能的逻辑电路就是数据选择器。我们用来打个比方,现在我们手中有两张电影票A和B,但这时我们是不知道到底哪张电影票是允许我们进入电影院的,这时候我们就要去问检票员,检票员说A,那就可以进;否则,B就可以进。通过这个比喻,我们就能理解数据选择器的大体思路了:这里的电影票A与B就相当于输入信号in1与in2,检票员就相当于数据选择信号sel(英文select),电影院就相当于输出信号out,注意这里的输出信号out只有一个。因此,我们就可以在Visio中设计出2-1数据选择器:

                           

  同样,我们给出2-1数据选择器的真值表:

            

  我们来分析以下这个真值表:当选择信号sel为0时,对应输入信号in1的通道开启,此时,无论输入信号in2怎么取值,输出信号out永远与输入信号in1相同。那反过来讲,选择信号sel为1时,对应输入信号in2的通道开启,此时,无论输入信号in1怎么取值,输出信号out永远与输入信号in2相同。

  接下来,我们新建工程,具体的步骤在上一章有讲,这里我们就不说了。我们来看看用Verilog语言怎么实现2-1数据选择器:

                            

  我们来分析一下这段代码的语法,in1、in2、sel信号前面都有加“wire”,而out前面却加了“reg”,那么wire和reg到底是什么,他们起什么作用呢?这里主播查阅了锆石科技的《HELLO FPGA》文档:reg和wire都是数据类型,其中reg是寄存器类型,wire是连线型类型。这里主播再打个比方,wire相当于导线,他只能传递信号,但不能记住信号,所以输入信号要使用wire类型;而reg相当于寄存器,他能够记住输入信号,而在always@(*)模块中,我们的输出信号out要持续循环“sel =1 →out = in2,sel =0 →out = in1”这个逻辑进程,所以输出信号就要使用reg寄存器类型,他不断记住输入信号,又根据逻辑进程不断输出信号。

  解释完了代码,我们就来打开RTL视图,验证电路的正确性:

                  

  可以看出,RTL视图和我们在Visio中的设计完全一样。接着我们再来仿真,具体的仿真步骤主播就不说了,这里直接放波形图进行分析;

   我们取第一组红线内的波形图:

  在这组红线内的波形图中,sel信号恒为0,无论in2信号怎么变(输入信号in2从1-0-1),输出信号out波形图是不是恒等于输入信号in1。

  再取第二组分析:

  此时在这组红线内的波形图中,sel信号恒为1,无论in1信号怎么变,输出信号out波形图是不是恒等于输入信号in2了。

  举了这两组的例子,相信大家不仅能会分析波形了,也能从波形图中验证我们RTL视图的正确性。大家有时间呢也可以自己做一下仿真取不同情况分析。不过主播在这里要提醒大家一句啊,在进行仿真前,大家打开“Assignment--Settings”的时候,尤其是“Tool name”选项卡中,一定要注意我们选的是“Modelsim”而不是“Modelsim-Altera”:

  不然就会出现“Can'tIaunchtheModelSim-Alterasoftware”报错:

              

  仿真完之后呢我们就要去分配引脚了,在上一篇文章呢,主播在引脚分配这里出错了,这里就回归到原理图带大家一起读引脚。首先我们打开官方EP4C最小系统板的原理图,找到按键引脚分配图:

                          

  图中我们可以看出,KEY1按键被分配到pin90引脚,KEY2按键被分配到pin89引脚,RESET按键被分配到pin88引脚。由于本工程中我们需要用到3个信号,这里我们就把KEY1按键发出的信号标记为输入信号in1,KEY2按键发出的信号标记为输入信号in2,RESET按键发出的信号标记为选择信号sel。

  再来看LED引脚分配图:

   

  LED0被分配到IO_73引脚,LED1被分配到IO_75引脚,LED2被分配到IO_74引脚。这里我们就选择LED1,将其作为输出信号out。但是我们在引脚分配的页面是找不到IO_75引脚的,这时候我们找到U5-5模块,找到IO_75引脚对应的pin75:

                        

  这样我们的引脚就配置好了:

                                 

  大家注意,在分配好引脚以后呢,还要对未使用管脚进行设置,一定一定要记得烧录到板子之前要进行一次全编译,这不仅是在提醒大家,也是在提醒主播。最后呢我们就来看一下效果图:       

  不按RESET按键时,sel信号持续为0,此时按与不按KEY1,LED1是没有任何反应的,那么按下KEY2,LED1亮,松开KEY2, LED1不亮。

                                         

  长按RESET按键时,sel信号持续为1,此时按与不按KEY2,LED1是没有任何反应的,那么按下KEY1,LED1亮,松开KEY1, LED1不亮。

                                       

  好了,以上这就是本篇文章的所有内容了,还请大家多多支持主播!

Read more

Skill 构建指南:从零打造 AI 智能体扩展包

Skill 构建指南:从零打造 AI 智能体扩展包 引言 在人工智能时代,如何让智能体具备更强的专业能力和更丰富的工作流程?答案就是 Skill——一种为智能体设计的能力扩展包。本文将详细介绍如何从零开始构建符合规范的 Skill,让你的创意变成可分发的工具。 什么是 Skill? 核心定位 Skill 是被智能体加载和执行的能力扩展包,而非独立运行的应用程序。 执行模式 * Skill 在智能体的会话上下文中被动态加载 * 智能体读取 SKILL.md 的指导,调用 scripts/ 中的脚本,参考 references/ 中的文档 * Skill 的所有交互都通过智能体与用户的对话完成 Skill 提供的能力 * ✅ 专门工作流程(多步骤程序与条件逻辑) * ✅ 工具集成(文件格式与 API 的使用方式) * ✅ 领域专家知识(公司或系统特有的架构与逻辑) * ✅ 打包资源(脚本、参考、资产) Skill

AI 规范驱动开发“三剑客”深度对比:Spec-Kit、Kiro 与 OpenSpec 实战指南

AI 规范驱动开发“三剑客”深度对比:Spec-Kit、Kiro 与 OpenSpec 实战指南 引言:AI 编码的“模糊性”痛点与规范驱动的崛起 在 2025 年,AI 辅助编码已成为主流,据统计,高达 82% 的开发者在日常工作中使用 AI 工具。然而,随之而来的是一个核心痛点:模糊的自然语言提示(Prompt)常常导致 AI 生成不可预测、质量参差不齐甚至包含安全漏洞的代码。GitHub 2025 年开发者报告指出,62% 的 AI 输出代码需要大量人工修正才能投入生产。 为了解决这一问题,规范驱动开发(Spec-Driven Development, SDD) 应运而生。它强调在编码前先定义清晰、可执行的规格说明(Specification),以规格为“

你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析

你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析

🔥 个人主页:杨利杰YJlio❄️ 个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》《Python》《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更简单,让重复的工作自动化 你以为你在部署 AI 助手,其实也可能在打开一扇“数据侧门”:OpenClaw 安全风险全解析 * * 1、你以为你在装 AI 助手,其实你可能在给系统加一个“高权限自动化入口” * 2、OpenClaw 和普通 AI 最大的区别,到底在哪里? * 3、我为什么说:OpenClaw 更像“拿到部分权限的数字操作员”? * 4、为什么说 AI 助手不是“更聪明的搜索框”? * 5、OpenClaw 的 5

用快马ai快速原型一个永久在线crm网站,验证你的产品思路

最近在验证一个CRM产品的市场可行性,需要快速搭建一个能永久在线的基础原型。传统开发流程从环境搭建到功能实现至少需要一周,而通过InsCode(快马)平台的AI辅助,我用不到半天就完成了核心功能验证。以下是具体实践过程: 1. 明确最小可行功能集 原型系统聚焦四个核心模块:客户信息管理(基础CRUD)、销售机会跟踪(状态流转)、数据仪表盘(关键指标可视化)、基础权限控制(管理员/用户视图)。这种设计能覆盖80%的CRM基础使用场景,避免陷入细节开发。 2. AI生成基础框架 在平台输入"React+Node.js的CRM系统,包含客户管理、跟进记录和仪表盘",AI在10秒内生成了包含路由配置、API接口定义和基础组件的脚手架代码。特别惊喜的是自动配置好了MongoDB连接模块,省去了手动安装驱动和写连接池代码的时间。 3. 客户模块快速迭代 * 客户信息表单通过AI生成的React Hook自动绑定数据 * 地址字段智能识别省市区三级联动需求,自动补全地区选择器组件 * 联系方式验证逻辑直接内置了手机号/邮箱的正则校验 4. 销售跟踪状