FPGA原理图设计入门:从门电路构建模60计数器
1. 项目概述从原理图到数字逻辑的“模60”之旅在FPGA开发的入门阶段很多朋友都是从点亮一个LED或者编写一个简单的计数器开始的。今天我想和大家深入聊聊一个非常经典且实用的项目模60计数器。不过这次我们不直接写Verilog代码而是换一种更“复古”也更直观的方式——原理图输入设计。这听起来可能有点老派但对于理解数字电路最底层的门级和触发器级结构以及FPGA内部资源的映射关系有着不可替代的价值。尤其是在使用Altera现Intel的Quartus II这类集成开发环境时原理图输入能让你清晰地看到信号是如何从一个寄存器流到下一个寄存器组合逻辑又是如何将这些寄存器连接成一个完整功能的。模60计数器顾名思义就是一个计数范围从0到59然后循环往复的计数器。它最典型的应用场景就是电子时钟里的“秒”和“分”位。你可能觉得用Verilog写个if (cnt 59) cnt 0; else cnt cnt 1;就搞定了这当然没错。但通过原理图来实现你需要亲手放置每一个D触发器来存储比特位用逻辑门与、或、非来搭建“等于59”的比较和清零逻辑。这个过程会让你对“计数器”这个抽象概念建立起扎实的硬件直觉。你会明白每一次时钟上升沿到来时这6个触发器因为2^664 60所以需要6位是如何根据当前状态和组合逻辑的反馈决定下一个状态是什么的。这对于后续进行时序分析、优化关键路径乃至调试复杂状态机都大有裨益。2. 核心设计思路与方案选型2.1 为什么选择原理图输入在HDL硬件描述语言大行其道的今天坚持使用原理图输入似乎有点“逆潮流”。但我认为对于特定阶段的学习和特定类型的设计它有其独特的优势。首先直观性无与伦比。所有寄存器、连线、门电路都摆在眼前信号的流向一目了然特别适合教学和验证小型数字电路的基本原理。其次它能强制你思考硬件结构。写Verilog时你可能会不自觉地写出一些虽然行为正确但硬件实现低效甚至不合理的代码比如在组合逻辑块里生成锁存器。而画原理图时你必须明确每一个存储单元触发器和每一段组合逻辑门电路这能培养良好的硬件设计习惯。最后对于一些遗留IP核或者由第三方提供的、只有原理图符号的模块原理图输入是集成它们最直接的方式。当然它的缺点也很明显效率低难以管理大型设计可移植性差。因此我们的策略很明确用原理图实现核心的计数器逻辑而将整个设计作为顶层模块以便于后续仿真、分配引脚和下载。这样既达到了学习底层硬件的目的又契合了现代FPGA设计流程。2.2 模60计数器的结构分解一个模60计数器本质上是一个同步时序电路其核心部件是触发器和组合逻辑。我们需要决定两件事编码方式和实现结构。编码方式最直接的就是采用二进制Binary编码。我们需要6个D触发器DFF来构成一个6位寄存器因为2^532不够2^664足以表示0-59。状态转换就是简单的二进制加法但需要在状态为59即6‘b111011时下一个时钟周期跳转为0。实现结构这里我们采用最经典的同步清零方案。也就是说清零信号和计数使能信号一样都是在时钟边沿有效的。具体思路是设计一个普通的6位二进制同步计数器每个时钟沿加1。设计一个组合逻辑比较电路持续检测当前计数值是否等于59 (6‘b111011)。当比较电路输出为真时生成一个“装载零”的控制信号。在时钟上升沿如果“装载零”信号有效则所有触发器被同步置为0否则正常进行加1操作。为什么不直接用异步清零虽然异步清零直接连接到触发器的清零端反应更快但在FPGA中全局异步清零网络资源有限且容易因毛刺导致误操作。同步设计更能保证系统的稳定性和可靠性是更推荐的做法。2.3 工具选型Quartus II 的考量项目选择了Quartus II作为开发平台。这是一个非常成熟且经典的FPGA开发工具套件尤其对于Intel原Altera系列的芯片支持完善。对于原理图输入Quartus II的“Block Diagram/Schematic File”编辑器功能足够强大提供了丰富的基本逻辑单元库Primitives如各种门电路、触发器、缓冲器等以及宏功能模块Megafunctions如加法器、乘法器、RAM等。选择Quartus II进行原理图设计除了其工具链完整包含综合、布局布线、时序分析、编程外还有一个重要原因它能让我们在综合后通过“Technology Map Viewer”技术映射查看器或“RTL Viewer”RTL查看器直观地看到我们画的原理图最终被映射成了什么样的基本逻辑单元LAB、LC、寄存器这实现了从设计意图到实际硬件资源的闭环理解是学习FPGA架构的绝佳途径。3. 核心模块原理图设计与实现3.1 底层元件D触发器的使用一切同步时序逻辑的基石都是触发器。在Quartus II的原理图库中我们通常会使用primitives-storage下的dff。这是一个带有时钟clk输入端、数据d输入端和输出端q的基本D触发器。我们需要6个这样的dff来存储计数器的6个位从最低位Q[0]到最高位Q[5]。在放置dff时一个良好的习惯是立即为其实例化命名并连接好时钟网络。例如将6个触发器分别命名为U0_cnt_0,U1_cnt_1, ...U5_cnt_5。将所有触发器的clk引脚连接到一个共同的网络并命名为clk这代表系统的全局时钟。在FPGA设计中时钟信号必须通过专用的全局时钟网络Global Clock Network走线以获得低抖动、低偏斜的特性。在原理图中我们虽然只是简单连线但工具在综合布局布线时会识别出这个高扇出网络并尽量将其分配到全局时钟资源上。注意原理图中的连线不仅仅是电气连接它更代表了逻辑上的数据流。为关键信号如clk, rst_n使用有意义的网络名不仅让图纸更清晰也在后续的约束文件中便于识别和添加时序约束。3.2 组合逻辑加法与比较电路构建有了存储单元接下来需要构建决定其下一状态的组合逻辑。这包括两部分加1逻辑和等于59比较与清零逻辑。加1逻辑对于一个二进制计数器加1操作可以通过一组异或门XOR和与门AND构成的行波进位加法链来实现但这在原理图中画起来非常繁琐。更高效的做法是使用Quartus II提供的宏功能模块lpm_counter参数化计数器但为了彻底理解底层我们这里手动构建。实际上一个二进制计数器的第i位翻转从0变1或从1变0发生在所有低位都为1的时候。我们可以用逻辑门来实现这个“进位链”。例如Q[0]每个时钟都翻转用其反相信号驱动其D端即可即D[0] NOT(Q[0])。Q[1]在Q[0]为1时翻转Q[2]在Q[0]和Q[1]同时为1时翻转以此类推。这需要用到与门来生成进位信号。在原理图中我们从primitive-logic库中拖入and2二输入与门、xor异或门等来搭建这个链。虽然连线复杂但画完后你会对二进制加法的硬件实现有刻骨铭心的认识。等于59比较与清零逻辑数字59的6位二进制表示是0111011注意我们通常将Q[5]作为最高位。所以比较逻辑就是判断Q[5]0,Q[4]1,Q[3]1,Q[2]1,Q[1]0,Q[0]1。这可以通过与门和非门来实现eq_59 (NOT Q[5]) AND Q[4] AND Q[3] AND Q[2] AND (NOT Q[1]) AND Q[0]。在原理图中你需要放置6个输入端的与门and6并将对应的Q信号或其反相信号接入。当eq_59信号为高电平时表示当前计数已达到59。我们需要生成一个load_zero信号。在下一个时钟上升沿这个信号应该控制所有D触发器的D输入端为0而不是正常的“加1”结果。因此我们需要在每个触发器的D输入端前面增加一个二选一选择器MUX。当load_zero1时选择0当load_zero0时选择正常的“下一位”数据。这个MUX可以用primitive-gates下的mux212选1多路选择器来实现。3.3 顶层集成与信号连接将上述所有元件——6个D触发器、构成进位链的多个逻辑门、一个6输入与门、6个2选1MUX——按照逻辑关系在原理图图纸上摆放整齐并用连线Net连接起来就构成了完整的模60计数器核心电路。在这个阶段图纸的布局和走线的清晰度至关重要。建议采用数据流从左输入到右输出的方式排列。将6个D触发器纵向排列对齐它们的时钟和输出。进位逻辑可以放在触发器左侧比较逻辑放在下方或右侧。使用总线Bus来连接多位信号如Q[5..0]可以让图纸更简洁但初学者建议先用单根线连接理解透彻后再改用总线。你需要定义几个重要的输入输出端口输入clk时钟rst_n低电平有效的异步复位可选但强烈建议添加连接到每个dff的clrn异步清零端用于初始化工件。输出cnt_out[5..0]6位计数输出carry_out进位输出当计数到59时产生一个时钟周期的高电平脉冲可用于级联更高位计数器如“分”计数器。在Quartus II中通过File-Create/Update-Create Symbol Files for Current File可以将这个画好的原理图生成一个自定义的符号Symbol这样它就可以像一个黑盒模块一样被其他原理图或Verilog顶层模块调用了。这是我们实现“原理图核心顶层封装”的关键一步。4. 在Quartus II中的完整实现流程4.1 工程创建与原理图文件编辑首先启动Quartus II创建一个新工程。工程命名、选择目标FPGA器件型号例如对于学习可以选择Cyclone IV EP4CE6E22C8这类经典入门型号这些步骤与Verilog项目无异。工程创建好后新建一个文件类型选择Block Diagram/Schematic File。这就进入了一个空白的绘图区域。右侧的Symbol Tool窗口是你的元件库。在Libraries列表中展开primitives文件夹你可以找到所有基础逻辑单元。找到storage-dff点击后可以在图纸上放置。同理可以放置logic下的and2,not,xor以及gates下的mux21。放置元件后双击元件可以修改其实例化名称。使用左侧工具栏的Orthogonal Node Tool直角节点工具或Orthogonal Bus Tool直角总线工具进行连线。为某个连线命名只需在连线上单击右键选择Properties然后在Name栏输入名称。具有相同名称的连线即使在图纸上没有画通在电气上也是连接的这极大方便了图纸布局。4.2 自定义符号生成与顶层模块封装核心计数器原理图画好后保存文件例如命名为mod60_counter_sch.bdf。接着点击菜单File-Create/Update-Create Symbol Files for Current File。Quartus II会生成一个同名的.bsf文件。这个文件就是你的自定义模块符号。现在你需要创建一个顶层模块来实例化这个计数器。你可以选择再创建一个新的原理图文件作为顶层也可以创建一个Verilog文件作为顶层。对于复杂设计用Verilog作为顶层来连接各个子模块无论是原理图还是Verilog写的是更灵活的方式。我们创建一个Verilog顶层文件top.vmodule top ( input wire clk, // 系统时钟假设50MHz input wire rst_n, // 低电平复位 output wire [5:0] cnt_out, // 计数输出 output wire carry_out // 进位输出 ); // 实例化原理图生成的模60计数器模块 mod60_counter_sch u_mod60_counter ( .clk(clk), .rst_n(rst_n), .cnt_out(cnt_out), .carry_out(carry_out) ); endmodule注意模块名mod60_counter_sch必须与你生成的自定义符号名称一致。端口名也必须对应。通过这种方式我们巧妙地将原理图设计无缝集成到了标准的HDL设计流程中。4.3 编译、仿真与硬件验证完成顶层设计后需要进行全编译Start Compilation。编译过程包括分析综合、布局布线、时序分析等。如果原理图中有逻辑错误如短路、未连接输入综合器会报错。仿真验证是确保功能正确的关键。我们需要编写一个Testbench。在Quartus II中你可以使用自带的University Program VWFVector Waveform File工具进行简单的功能仿真但更专业的方法是使用ModelSim等仿真工具和Verilog Testbench。一个简单的Testbenchtb_top.v如下timescale 1ns/1ns module tb_top(); reg clk; reg rst_n; wire [5:0] cnt_out; wire carry_out; // 实例化被测模块 top u_top (.*); // 使用 .* 进行自动连接 // 生成时钟周期20ns (50MHz) initial clk 0; always #10 clk ~clk; // 初始化与复位 initial begin rst_n 0; // 复位有效 #100; // 保持100ns rst_n 1; // 释放复位 #2000; // 仿真运行2000ns观察多个计数周期 $stop; end // 监控输出 initial begin $monitor(At time %t, cnt_out %d, carry_out %b, $time, cnt_out, carry_out); end endmodule在ModelSim中运行这个Testbench你应该能看到cnt_out从0开始每个时钟上升沿加1到达59后下一个时钟变为0同时carry_out在计数为59时输出一个脉冲。最后是硬件验证。在Quartus II的Pin Planner中为clk,rst_n,cnt_out,carry_out分配实际FPGA芯片的引脚。clk连接到板载的晶振引脚rst_n连接到一个按键cnt_out可以连接到6个LED灯上观察二进制计数carry_out也可以连接一个LED。编译生成.sof文件后通过USB-Blaster等下载器编程到FPGA中。上电后按下复位键你应该能看到LED灯按照二进制规律闪烁完成一个60循环。5. 常见问题、调试技巧与深度优化5.1 原理图设计中的典型陷阱未连接的输入引脚Floating Inputs这是原理图设计中最常见的错误。在TTL/CMOS逻辑中悬空的输入引脚电平不确定可能导致电路行为异常。在Quartus II中综合工具通常会将未连接的输入默认为低电平但这并非绝对。务必检查每一个逻辑门、触发器的输入引脚是否都已正确连接。一个技巧是在原理图编辑器中可以开启View-Show All Connections高亮显示所有连线未连接的引脚会非常明显。异步逻辑导致的毛刺Glitch我们的比较电路eq_59是一个纯组合逻辑。如果计数器各个位的变化不是绝对同步由于布线延迟差异实际上不可能绝对同步在状态从58111010跳变到59111011或从59跳变到0的过程中eq_59输出端可能会出现极短的毛刺脉冲。如果这个信号被用作其他部分的时钟或异步复位将导致灾难性后果。在我们的设计中eq_59经过同步处理后生成load_zero并在时钟沿采样这属于同步设计毛刺问题被时钟过滤掉了是安全的。核心原则避免在FPGA设计中使用组合逻辑的输出直接驱动时钟或异步复位端。资源使用与优化冲突你可能会发现手动用门电路搭的计数器其资源报告Compilation Report - Flow Summary中的逻辑单元LEs使用量比直接用lpm_counter宏模块要多。这是正常的因为宏模块是高度优化的软核。我们的目的是学习而非追求极致面积。但你可以通过分析“Technology Map Viewer”看看综合器是如何将你的门级网表映射到FPGA的查找表LUT和寄存器中的这本身就是一次宝贵的学习。5.2 时序分析与约束要点即使是一个简单的计数器也需要关注时序。编译完成后打开“Timing Analyzer”工具查看“Slow 1200mV 85C Model”下的Fmax最大时钟频率报告。如果Fmax低于你的时钟频率例如50MHz说明存在时序违例。对于我们的行波进位计数器关键路径Critical Path很可能在进位链上尤其是从最低位到最高位的进位传递路径。如何改进流水线思想对于更宽位宽的计数器行波进位结构会成为速度瓶颈。可以考虑使用“超前进位”逻辑或者直接使用工具提供的优化过的lpm_counter它内部可能采用了更快的结构。添加时序约束在Settings-Timing Analysis Settings中你可以创建基本的时钟约束Create Clock告诉工具你的时钟频率是50MHz。这样时序分析工具会以此为目标进行优化。查看“Technology Map Viewer”定位关键路径具体经过了哪些LUT和布线资源。有时通过稍微调整原理图中组合逻辑的排列虽然综合器会优化或者使用寄存器打一拍来切割长组合路径即流水线可以显著提升时序性能。5.3 从原理图到代码的思维迁移完成这个原理图项目后你应该尝试用Verilog重新实现一遍功能完全相同的模60计数器。你会发现之前画原理图时纠结的每一个连线、每一个门都对应着Verilog中的一段表达式。例如那个复杂的“等于59”比较逻辑在Verilog中就是一句assign eq_59 (cnt 6‘d59);。而同步清零逻辑在always块中就是if (eq_59) cnt 6‘b0; else cnt cnt 1‘b1;。这种对比能让你深刻理解“行为描述”与“结构描述”的区别。行为描述更关注功能“做什么”由综合工具去决定“怎么做”而结构描述原理图或Verilog门级原语实例化则明确指定了“怎么做”。一个优秀的数字设计师需要在脑中同时具备这两种视角用行为级描述高效设计用时序和结构级思维调试优化。最后一个小小的实操心得在Quartus II中绘制复杂原理图时频繁的缩放和平移可能会让软件响应变慢。记得多用CtrlS保存。对于重复性结构如6个触发器可以先画好一个并连接好时钟和复位然后复制粘贴再修改实例名和连接数据线这比一个个重新放置要快得多。连线时尽量使用直角避免斜线这样图纸会更规整后期检查也更容易。

相关新闻

如何用Python一键备份QQ空间历史记录:GetQzonehistory完整指南

如何用Python一键备份QQ空间历史记录:GetQzonehistory完整指南

如何用Python一键备份QQ空间历史记录:GetQzonehistory完整指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还记得那些年你在QQ空间留下的青春印记吗?那些深夜…

2026/7/31 2:05:37阅读更多 →
C++原生Socket实现即时通讯:Reactor线程池架构与并发编程实践

C++原生Socket实现即时通讯:Reactor线程池架构与并发编程实践

1. 项目概述与核心价值最近在整理硬盘,翻出来一个几年前写的C即时通讯项目,当时是为了深入理解网络编程和并发模型硬啃下来的。现在回头看,虽然技术栈不算新潮,但里面涉及到的核心思想——从Socket通信、协议设计到线程池管理——…

2026/7/31 2:05:37阅读更多 →
【Express】Express_教学助手_凸透镜成像教学助手(源码+文档)【独一无二】

【Express】Express_教学助手_凸透镜成像教学助手(源码+文档)【独一无二】

凸透镜成像教学助手 项目描述 本项目是一套面向中学物理课堂与自主学习场景的凸透镜成像互动教学助手,旨在将抽象的光学公式、光路规律和成像结论转化为直观、可操作的数字实验。系统采用前后端结合的 Web 架构,前端使用 HTML、CSS、原生 JavaScript 与 …

2026/7/31 2:05:37阅读更多 →
磁集成技术:从分立到融合的电源设计核心原理与实战

磁集成技术:从分立到融合的电源设计核心原理与实战

1. 磁集成:从分立到融合的设计哲学在电源和电力电子领域,工程师们每天都在和电感、变压器这些磁性元件打交道。如果你拆开一个传统的开关电源,大概率会看到电路板上立着几个“黑方块”或绕线磁环,它们各自为政,占据着宝…

2026/7/31 5:17:54阅读更多 →
AI自动化PPT生成:DeepSeek与Claude API集成实战指南

AI自动化PPT生成:DeepSeek与Claude API集成实战指南

1. 引言:AI工具如何改变PPT制作流程 在日常工作和学习中,PPT制作是许多人面临的常见任务。传统的PPT制作需要耗费大量时间在内容构思、版式设计和素材收集上。随着AI技术的发展,现在我们可以通过智能工具组合来大幅提升效率。本文将介绍如何利…

2026/7/31 5:17:54阅读更多 →
Unity后处理终极排错指南:从原理到实战解决视觉效果与性能问题

Unity后处理终极排错指南:从原理到实战解决视觉效果与性能问题

1. 项目概述:为什么PostProcessing问题如此棘手?在Unity项目里,PostProcessing(后处理)堆栈几乎是现代游戏和实时应用提升视觉品质的标配。从简单的色彩校正、Bloom(泛光),到复杂的屏…

2026/7/31 5:17:54阅读更多 →
featureCounts基因表达定量:从安装到实战的完整指南

featureCounts基因表达定量:从安装到实战的完整指南

1. 项目概述:从“数数”到基因表达定量如果你刚接触高通量测序数据分析,尤其是RNA-seq,可能会被一堆“定量”、“计数”、“差异表达”这些词搞得晕头转向。别慌,其实核心的第一步,就是搞清楚我们测出来的海量序列片段…

2026/7/31 5:17:54阅读更多 →
三极管、场效应管与MOS管:从原理到选型的硬件设计核心指南

三极管、场效应管与MOS管:从原理到选型的硬件设计核心指南

1. 从“开关”到“放大器”:为什么我们需要理解这三种管子? 如果你拆开过任何一块电路板,无论是手机充电头、电脑主板还是一个简单的LED闪烁玩具,几乎都能找到它们的身影——三极管、场效应管和MOS管。它们看起来可能只是几个不起…

2026/7/31 5:17:54阅读更多 →
STM32独立看门狗(IWDG)原理、配置与工业级应用全解析

STM32独立看门狗(IWDG)原理、配置与工业级应用全解析

1. 项目概述:为什么你的STM32需要“看门狗”?在嵌入式开发,尤其是基于STM32这类MCU的项目里,我们总会遇到一些让人头疼的“玄学”问题。比如,设备在野外运行得好好的,突然就“死机”了,按键没反…

2026/7/31 5:15:53阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/30 15:03:16阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/30 12:22:27阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/30 15:13:02阅读更多 →
物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:40阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:41阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/31 0:49:33阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/31 5:08:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/30 15:43:46阅读更多 →