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

【AI】coze的简单入门构建智能体

【AI】coze的简单入门构建智能体

前言:最近扣子很火,我来学习一下!扣子时新一代的AI应用平台。在扣子上搭建AI应用,只需要在界面上点击下一步下一步,做些配置,就可以快速去搭建一个AI应用。让我来看看,扣子是何方神圣吧~ 一、什么是coze? 扣子是新一代AI应用开发平台。无论你是否有编程基础,都可以在扣子上快速搭建基于大模型的各类AI应用,并将AI应用发布到各个社交平台,也可以通过API或SDK将AI应用集成到你的业务系统中。 二、coze能做什么? 扣子提供可视化设计与编排工具,通过零代码或低代码方式,快速搭建基于大模型的各类AI项目。(登录到扣子官网,进入到商店,有各种应用、插件等) * 智能体:智能体是基于对话的AI项目,能理解自然语言,调用知识库与插件,通过可视化工作流完成复杂任务,并可发布到多端使用,如智能客服、虚拟伴侣等 * 应用:利用大模型技术开发的应用程序。在扣子中搭建的AI应用具备完整业务逻辑和可视化用户界面,是一个独立的AI项目,如AI搜索、翻译工具等 * 插件:是 一个工具集,一个插件内可以包括一个或多个工具(API)。用于扩展智能体 / Bot 的功能,通过标准化接口与工作

传统制图VS AI制图:一线产区标准图效率对比

快速体验 1. 打开 InsCode(快马)平台 https://www.inscode.net 2. 输入框内输入如下内容: 开发一个效率对比工具,分别用传统方法和AI方法生成一线产区标准图。传统方法模拟人工绘制流程,AI方法使用机器学习分类。统计两种方法的时间消耗和准确率,用图表展示结果。技术栈包括Python、Pandas和Matplotlib。 3. 点击'项目生成'按钮,等待项目生成完整后预览效果 传统制图VS AI制图:一线产区标准图效率对比 最近在工作中遇到了一个需求:需要快速生成一线产区和二线产区的标准图。传统的人工绘制方法耗时耗力,于是我开始探索AI辅助制图的可能性。经过一番尝试,发现AI在数据处理、分类和可视化方面的效率提升确实令人惊喜。 传统制图流程的痛点 1. 数据收集与整理 传统方法需要人工从各种渠道收集产区数据,包括产量、地理位置、气候条件等。这个过程往往需要几天甚至几周时间,而且容易出错。 2. 分类标准制定 一线产区和二线产区的划分标准需要专家团队反复讨论确定,每次调整都需要重新处理数据。

opencode+Git集成:版本控制中AI辅助操作指南

opencode+Git集成:版本控制中AI辅助操作指南 1. 开篇:当Git遇见AI编程助手 你是否曾经在Git提交时纠结于怎么写好提交信息?或者在代码合并冲突时头疼不已?又或者想要重构代码却担心破坏现有功能? 今天我们要介绍的opencode,正是为了解决这些痛点而生。这是一个开源的AI编程助手框架,特别适合与Git版本控制系统配合使用。它能在你编码的每个环节提供智能辅助,从代码编写到提交信息生成,从冲突解决到代码审查。 最棒的是,opencode支持本地部署的模型,比如我们将要使用的Qwen3-4B-Instruct-2507,这意味着你的代码永远不会离开你的本地环境,完全保障了隐私和安全。 2. opencode是什么? 2.1 核心特点 opencode是一个2024年开源的AI编程助手框架,用Go语言编写,主打"终端优先、多模型、隐私安全"的理念。它把大语言模型包装成可插拔的智能体,支持在终端、IDE和桌面三端运行。 你可以把它理解为你的编程副驾驶,但它比一般的代码补全工具强大得多。opencode支持代码补全、重构、调试、项目规划等全流程辅助,而且可以

本地离线部署AI大模型:OpenClaw + Ollama + Qwen3.5:cloud/Qwen3:0.6b 超详细教程(无需GPU)

本地离线部署AI大模型:OpenClaw + Ollama + Qwen3.5:cloud/Qwen3:0.6b 超详细教程(无需GPU)

前言 随着开源大模型越来越成熟,我们完全可以在自己电脑上本地运行AI,不联网、不上传数据、免费使用,隐私性极强。 今天这篇文章,我会一步步带你完成:Ollama + Qwen3.5:cloud(主力模型)+ Qwen3:0.6b(轻量备选)+ OpenClaw 的本地部署,实现一个属于自己的本地聊天AI,兼顾效果与低配置适配。 一、项目介绍 本项目实现本地离线运行阿里通义千问系列大模型(Qwen3.5:cloud 主力模型 + Qwen3:0.6b 轻量备选模型),全程不需要云端API,不需要高性能显卡,普通电脑就能跑,可根据自身电脑配置选择对应模型。 用到的工具: * Ollama:最简单的本地大模型管理工具,一键拉取、运行、管理模型 * Qwen3.5:cloud:阿里云开源的轻量高性能大语言模型,对话效果强、适配本地部署,作为主力使用