当前位置: 首页 > news >正文

工程师的PPT革命:用ChatGPT+MARP实现Markdown自动化制作

1. 项目概述:当软件工程师遇上PPT制作

作为一名写了十几年代码的软件工程师,我过去对制作PPT的态度,大概和很多同行一样:能躲就躲。需求评审、技术分享、晋升答辩……每次打开那个熟悉的“新建幻灯片”,面对空白的画布和五花八门的菜单,总感觉比写一个复杂的算法还要费神。排版、配色、动画、逻辑串联,这些“软技能”似乎与我们的“硬核”工作格格不入。直到我发现了将ChatGPT和MARP结合起来的这套“技术流”PPT制作方法,整个流程才彻底改变。

简单来说,这个项目的核心是用我们最熟悉的工具和思维方式——代码和Markdown——来高效、优雅地制作专业级演示文稿。它完美解决了工程师的几个核心痛点:一是厌恶图形界面下的重复性拖拽操作;二是希望内容(逻辑、文字)与样式(排版、设计)彻底分离,便于版本管理和复用;三是追求极致的效率和自动化,把时间花在思考内容本身,而非调整格式上。

这套方案的主角有两个:ChatGPT负责内容生成与结构化,充当你的“创意副驾”和“大纲架构师”;MARP则是一个将Markdown文本转换为幻灯片(支持PPTX、PDF、HTML)的命令行工具,它让你用写代码的方式“写”PPT。最终产出的,是一份风格统一、专业美观,且源文件完全是纯文本的演示文稿,你可以用Git管理它的每一次修改。无论你是要向非技术团队讲解系统架构,还是做内部技术培训,或是准备一场重要的对外演讲,这个方法都能让你从“制作PPT”的体力劳动中解放出来,专注于打磨你的核心观点。

2. 工具链深度解析:为什么是ChatGPT + MARP?

在深入实操之前,我们有必要拆解一下这套工具链的选型逻辑。市面上PPT工具很多,从巨无霸Microsoft PowerPoint、到在线协作的Google Slides、再到设计感强的Keynote,为什么偏偏选择这两个看起来不那么“正统”的工具组合?

2.1 ChatGPT:超越聊天机器人的内容引擎

对于制作PPT而言,ChatGPT的价值远不止“聊天”。我们可以将其角色细分为三个层面:

  1. 头脑风暴与大纲生成器:这是最基础的用法。你可以给它一个模糊的主题,比如“向产品经理介绍微服务熔断机制”,它会帮你生成一个逻辑清晰、要点完备的演讲大纲,包括开场白、问题引入、核心概念、优缺点对比、案例分析和总结。这解决了“不知道讲什么”和“逻辑如何组织”的初始难题。

  2. 内容提炼与转写专家:工程师擅长处理技术细节,但往往不善于将复杂概念转化为通俗易懂的语言。你可以将你的技术文档、设计稿甚至代码注释扔给ChatGPT,并指令它:“将这段关于数据库分库分表的设计文档,提炼成5页PPT的核心要点,每页一个主题,用非技术背景听众能理解的语言描述。”它能快速完成信息的降维和转译。

  3. 结构化提示(Prompt)工程师:这才是高阶用法。我们可以训练ChatGPT理解MARP的Markdown语法。例如,你可以提供这样的Prompt:“你是一个精通MARP Markdown的助手。我将给你演讲主题,请你直接输出完整的、可直接用于MARP编译的.md文件内容。要求:使用---分隔幻灯片,第一页是标题页,包含标题、副标题、作者和日期;使用##表示页内主标题,-表示列表项,代码块用```包裹并指定语言。主题是:RESTful API设计最佳实践。”

通过精心设计的Prompt,ChatGPT可以直接输出近乎可用的MARP源文件,将内容创作和格式生成两步合并为一步,效率产生质变。

2.2 MARP:工程师的“幻灯片编译器”

MARP的核心魅力在于其“声明式”的哲学,这与我们编写CSS或配置YAML文件如出一辙。你不需要用鼠标去决定一个文本框的位置和颜色,你只需要在文本中声明:“这是一个标题,它应该居中、颜色是深蓝色、字体大一些。”MARP的引擎(编译器)会负责将这些声明渲染成最终的视觉效果。

它的核心优势包括:

  • 纯文本驱动:所有内容保存在.md文件中。这意味着你可以使用任何你喜欢的文本编辑器(VS Code, Vim, Sublime Text),享受代码高亮、自动补全、片段(Snippet)等功能。
  • 版本控制友好.md文件可以完美融入Git工作流。你可以清晰地看到每次修改的diff,轻松回退到任意版本,或者基于不同的分支创建不同风格的演示文稿变体。
  • 样式与内容分离:通过MARP的“主题”(Theme)功能,你可以定义一个CSS/YAML文件来统一定义全局样式(字体、配色、背景图、布局)。所有幻灯片都引用这个主题,一键切换整体风格。这完全符合软件工程中“关注点分离”的原则。
  • 高度自动化:整个流程可以通过命令行脚本一键完成:从Markdown到PDF/PPTX的转换。这可以轻松集成到CI/CD流水线中,实现文档的自动化构建和发布。
  • 一致性保障:由于样式由主题统一控制,你完全不必担心某一张幻灯片的字体不小心被改掉,或者颜色出现偏差。整个演示文稿具有无可挑剔的视觉一致性。

与传统工具对比的思维转变:传统PPT制作是“所见即所得”的编辑思维,你直接操作最终呈现的像素。而MARP是“所思即所得”的编译思维,你操作的是结构和语义,将呈现交给引擎。后者对于追求效率、可控性和可重复性的工程师来说,无疑更具吸引力。

3. 从零到一的完整工作流实战

理论说得再多,不如一行代码。下面,我将以“制作一个关于‘云原生可观测性体系’的技术分享PPT”为例,带你走完从构思到输出的全流程。

3.1 第一步:利用ChatGPT进行内容策划与大纲生成

首先,我们需要一个清晰的内容骨架。打开ChatGPT(或任何你习惯的同类AI工具),输入一个结构化的Prompt:

你是一位资深云原生架构师,需要为公司内部开发团队做一次技术分享,主题是《云原生下的可观测性:从日志、指标到链路追踪》。请为我生成一份详细的PPT大纲。 要求: 1. 听众是中级及以上软件工程师,有一定分布式系统经验。 2. 分享时长约45分钟。 3. 大纲需包含:封面页、目录页、至少8个核心内容章节页、总结与Q&A页。 4. 为每个核心内容章节列出3-5个关键要点。 5. 请用中文输出。

ChatGPT可能会返回如下结构(已简略):

# 《云原生下的可观测性:从日志、指标到链路追踪》技术分享大纲 ## 封面 - 主标题 - 副标题:构建清晰透明的分布式系统 - 分享人:[你的名字] - 日期 ## 目录 1. 为什么可观测性在云原生时代至关重要? 2. 可观测性的三大支柱:Logs, Metrics, Traces 3. 日志(Logs):从文本记录到结构化日志 4. 指标(Metrics):时间序列数据与监控告警 5. 链路追踪(Traces):理解复杂的分布式调用 6. 三大支柱的关联与统一(Golden Signals) 7. 主流工具栈选型与实践(ELK, Prometheus, Jaeger) 8. 可观测性驱动的开发运维实践 9. 总结与展望 10. Q&A ## 1. 为什么可观测性在云原生时代至关重要? - 从“监控”到“可观测性”的范式转变 - 微服务与容器化带来的复杂度挑战 - 快速定位故障的需求与业务影响 - 可观测性是系统韧性的基石 ## 2. 可观测性的三大支柱:Logs, Metrics, Traces - Logs:离散事件记录,回答“发生了什么” - Metrics:聚合的时间序列数据,回答“系统整体状态如何” - Traces:请求的端到端路径,回答“为什么慢/出错” - 三者互补,构成系统状态的完整拼图 ...

至此,你已经有了一份扎实的内容蓝图。接下来,可以针对每一页,让ChatGPT进一步扩充要点内容。

3.2 第二步:将大纲转换为MARP Markdown源码

现在,我们需要将这份大纲“翻译”成MARP能理解的格式。我们可以手动翻译,也可以让ChatGPT帮忙。更高效的方式是,结合第一步的大纲,给ChatGPT一个更具体的“翻译”指令:

基于上面生成的大纲,请你直接生成一份完整的、符合MARP Core Markdown语法的幻灯片源文件(.md文件内容)。 具体要求: 1. 使用 `---`(三个减号)作为幻灯片分隔符。 2. 第一页是封面页,使用 `#` 表示主标题,`##` 表示副标题,使用 `<!-- _footer: ... -->` 语法在页脚添加分享人和日期。 3. 第二页是目录页,使用 `## 目录` 作为标题,后面跟一个无序列表。 4. 后续每一页,使用 `## [页面标题]` 作为该页主标题。 5. 内容使用无序列表 `-` 或有序列表 `1.` 来呈现要点。 6. 如果涉及代码示例,使用 \`\`\`语言类型 ... \`\`\` 的代码块格式。 7. 在需要强调的地方使用 **加粗**。 8. 输出纯文本,不要有任何额外的解释。

ChatGPT会输出一个完整的.md文件内容。我们将其保存为observability.md。其开头部分大致如下:

--- marp: true theme: gaia class: invert --- # 云原生下的可观测性 ## 构建清晰透明的分布式系统 <!-- _footer: 分享人:某工程师 | 2024年X月X日 --> --- ## 目录 - 为什么可观测性在云原生时代至关重要? - 可观测性的三大支柱:Logs, Metrics, Traces - 日志(Logs):从文本记录到结构化日志 - 指标(Metrics):时间序列数据与监控告警 - 链路追踪(Traces):理解复杂的分布式调用 - 三大支柱的关联与统一(Golden Signals) - 主流工具栈选型与实践(ELK, Prometheus, Jaeger) - 可观测性驱动的开发运维实践 - 总结与展望 - Q&A --- ## 为什么可观测性在云原生时代至关重要? - **从“监控”到“可观测性”的范式转变** - 监控:已知故障模式的检查(已知的未知) - 可观测性:探索未知故障原因的能力(未知的未知) - 微服务与容器化带来的复杂度挑战 - 服务实例动态伸缩 - 网络调用拓扑复杂 - 快速定位故障的需求与业务影响 - MTTR(平均恢复时间)是关键指标 - 可观测性是系统**韧性**的基石 --- ## 可观测性的三大支柱:Logs, Metrics, Traces - **Logs(日志)**:离散的、带时间戳的事件记录 - 回答:“**发生了什么?**” - 示例:错误堆栈、用户访问记录 - **Metrics(指标)**:聚合的、随时间变化的数值数据 - 回答:“**系统整体状态如何?**” - 示例:CPU使用率、请求QPS、错误率 - **Traces(链路追踪)**:单个请求在分布式系统中的端到端路径 - 回答:“**为什么慢/出错了?**” - 展示了服务间的依赖关系和耗时瓶颈

注意:在直接使用AI生成的Markdown时,务必进行人工复核。检查幻灯片分隔符---是否正确,标题层级是否合理,代码块格式是否闭合。AI有时会在列表嵌套时使用错误的缩进(比如用空格而非Tab),这可能导致MARP渲染异常。手动调整这些细节是保证最终效果的关键一步。

3.3 第三步:安装、配置MARP与主题定制

  1. 安装MARP CLI: 确保你已安装Node.js(>=14),然后通过npm或yarn全局安装MARP命令行工具。

    npm install -g @marp-team/marp-cli # 或 yarn global add @marp-team/marp-cli

    安装后,运行marp --version验证是否成功。

  2. 基础转换: 最简单的转换命令,将Markdown转为PDF。

    marp observability.md --pdf

    这会在当前目录生成observability.pdf,使用MARP默认的gaia主题。

  3. 使用与自定义主题: 默认主题可能不符合你的公司品牌或审美。MARP支持自定义CSS主题。创建一个名为custom-theme.css的文件:

    /* @theme custom-theme */ section { font-family: 'Helvetica Neue', Arial, 'PingFang SC', 'Microsoft YaHei', sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 80px; } section h1 { color: #fbbf24; font-size: 3.5em; border-bottom: 3px solid #fbbf24; padding-bottom: 20px; } section h2 { color: #93c5fd; font-size: 2.2em; margin-top: 40px; } ul, ol { line-height: 1.8; font-size: 1.8em; } code { background-color: rgba(0, 0, 0, 0.3); padding: 0.2em 0.4em; border-radius: 4px; font-family: 'Courier New', monospace; } pre { background-color: rgba(0, 0, 0, 0.5) !important; border-radius: 10px; padding: 20px !important; font-size: 1.2em; } /* 页脚样式 */ footer { color: #cbd5e1; font-size: 1em; }

    然后在Markdown文件的开头,通过YAML front-matter指定主题:

    --- marp: true theme: custom-theme.css class: lead ---

    再次运行转换命令,你就会得到一份拥有自定义渐变背景、特定配色和字体的幻灯片。

  4. 导出为PPTX(用于最终交付): 虽然PDF在大多数场景下足够好用,但有时客户或会议方要求提供可编辑的PPTX文件。MARP也支持导出为PPTX(需要Pandoc作为后端)。

    # 首先确保安装了pandoc # macOS: brew install pandoc # Ubuntu/Debian: sudo apt install pandoc # Windows: 从官网下载安装 marp observability.md --pptx

    生成的.pptx文件在Microsoft PowerPoint中打开,每一页MARP幻灯片会对应一页PPT,虽然动画等高级特性有限,但文字、列表、代码块和图片都能完好保留,足以满足大多数技术分享的交付需求。

3.4 第四步:高级技巧与内容增强

一个基础的演示文稿已经完成。但要让它出彩,还需要一些“工程师式”的增强。

  • 嵌入图表与架构图: 我们不喜欢在PPT里画图,但我们擅长用代码生成图。你可以使用Mermaid、PlantUML等文本绘图工具生成图表,然后将生成的SVG或PNG图片嵌入到Markdown中。

    1. 用Mermaid在线编辑器或VS Code插件画好架构图,导出为SVG。
    2. 在Markdown中插入:![可观测性平台架构](./images/observability-arch.svg)
    3. 确保图片路径正确,MARP会在编译时将其嵌入到PDF/PPTX中。

    实操心得:将所有的图表、图片统一放在一个assetsimages文件夹中,在Markdown中使用相对路径引用。这样整个项目结构清晰,也便于Git管理。

  • 使用代码片段高亮关键配置: 在讲解工具实践时,直接展示配置文件或代码片段最具说服力。MARP支持语法高亮。

    ## Prometheus配置示例 ```yaml global: scrape_interval: 15s scrape_configs: - job_name: 'node-exporter' static_configs: - targets: ['localhost:9100'] - job_name: 'my-api-service' metrics_path: '/actuator/prometheus' static_configs: - targets: ['api-service:8080']
  • 分栏布局: 利用MARP的“指令”(Directives),可以轻松实现左右分栏等复杂布局,这比在传统PPT里对齐文本框简单多了。

    --- <!-- $columns: 2 --> <!-- $column: left --> ### 日志(Logs)的挑战 - 数据量巨大 - 非结构化文本难以分析 - 检索速度慢 <!-- $column: right --> ### 结构化日志的优势 - 统一JSON格式 - 便于解析和索引 - 支持高效聚合查询 ---

4. 工程化实践:将流程融入开发工作流

作为工程师,我们追求的不只是一次性的效率,而是可重复、可自动化、可协作的流程。

4.1 版本控制与协作

整个PPT项目就是一个包含.md文件、主题CSS文件、图片资源文件夹的目录。直接将其初始化为一个Git仓库。

mkdir my-presentation cd my-presentation git init # 添加 .md, .css, /images 等 git add . git commit -m "初始提交:云原生可观测性分享PPT"

团队成员可以克隆仓库,在各自分支上修改内容或样式,通过Pull Request进行评审和合并。审查PPT变成了审查Markdown diff,聚焦于内容逻辑而非像素级排版。

4.2 自动化构建与部署

你可以在项目根目录创建一个package.json和简单的构建脚本。

{ "name": "my-presentation", "scripts": { "build:pdf": "marp slides.md --pdf -o dist/slides.pdf", "build:pptx": "marp slides.md --pptx -o dist/slides.pptx", "build:html": "marp slides.md --html -o dist/", "build:all": "npm run build:pdf && npm run build:pptx && npm run build:html", "serve": "marp slides.md --server" } }

运行npm run build:all即可一键生成所有格式的输出。npm run serve会启动一个本地预览服务器,支持热重载,你修改Markdown文件后,浏览器页面会自动刷新,体验堪比前端开发。

更进一步,你可以将这个仓库连接到GitHub Actions或GitLab CI。每当向主分支推送更改时,自动触发构建流程,将生成的PDF/PPTX发布到内部Wiki或文件服务器,甚至作为Release附件。这样,你的听众总能访问到最新版本的幻灯片。

4.3 创建个人或团队的幻灯片模板库

经过几个项目,你会积累一系列主题文件(.css)、常用的布局片段(如致谢页、联系方式页、团队介绍页的Markdown块)。你可以将这些提取成一个独立的“幻灯片模板”仓库或NPM包。

在新项目开始时,你只需要:

  1. 复制模板库中的主题文件。
  2. 复制一个标准的slides.md骨架。
  3. 调用ChatGPT基于新主题生成内容大纲并填充。
  4. 微调主题配色以匹配新主题的品牌色。

这将PPT制作的启动时间从小时级压缩到分钟级。

5. 常见问题、排查技巧与避坑指南

在实际操作中,你肯定会遇到一些“坑”。以下是我踩过之后总结的经验。

5.1 内容与格式问题

  • 问题:AI生成的Markdown列表缩进混乱,导致渲染异常。

    • 排查:MARP对Markdown的缩进非常敏感,列表嵌套必须使用一致的缩进(通常为2个空格或1个Tab)。用文本编辑器的“显示空白字符”功能检查。
    • 解决:手动规范缩进。或者,在给ChatGPT的Prompt中明确强调:“请确保所有列表嵌套使用2个空格进行缩进。”
  • 问题:本地图片在生成的PDF中无法显示。

    • 排查:首先检查路径。MARP CLI在转换时,相对于当前工作目录或Markdown文件所在目录解析路径。使用相对路径./images/foo.png通常最可靠。
    • 解决:确保图片路径正确,并且图片格式(PNG, JPG, SVG)被支持。对于网络图片,确保链接可访问。
  • 问题:自定义CSS主题不生效。

    • 排查
      1. Markdown文件头的theme:指令是否指向了正确的CSS文件路径?
      2. CSS文件第一行是否有/* @theme your-theme-name */声明?
      3. 是否使用了MARP Core不支持的高级CSS特性?
    • 解决:使用marp --html slides.md命令先生成HTML并在浏览器中打开,用开发者工具检查CSS是否被正确加载和应用。这是一个非常有效的调试手段。

5.2 工具链与环境问题

  • 问题:导出PPTX失败,提示需要Pandoc。

    • 解决:正如前文所述,--pptx选项依赖Pandoc。请务必在系统上正确安装Pandoc,并确保其可执行文件路径在系统的环境变量PATH中。安装后,在命令行运行pandoc --version确认。
  • 问题:生成的PDF字体与预览不一致(尤其是中文字体)。

    • 原因:MARP在生成PDF时,默认使用内置的PDF引擎(通常是Chromium)进行渲染。如果CSS中指定的字体在生成环境中不存在,则会回退到默认字体。
    • 解决
      1. 使用安全字体:在CSS中优先指定通用的Web安全字体族,如font-family: Arial, 'Microsoft YaHei', sans-serif;
      2. 嵌入字体(高级):对于品牌字体,可以将字体文件(.ttf/.otf)放在项目内,在CSS中使用@font-face规则引入,但这需要确保字体许可证允许嵌入PDF。
      3. 在服务器端构建:如果本地和服务器环境差异大,考虑在Docker容器或CI环境中进行构建,确保环境一致。
  • 问题:幻灯片太多,想分成多个文件管理。

    • 解决:MARP CLI支持输入多个文件。你可以将不同章节写在不同的.md文件里,然后:
      marp intro.md chapter1.md chapter2.md conclusion.md --pdf
      它们会被合并成一个PDF。更工程化的做法是,写一个主index.md文件,使用Markdown的引用语法[链接文本](./chapter1.md),但注意MARP本身不会自动包含引用的文件内容,合并操作仍需通过命令行或构建脚本完成。

5.3 设计思维与演讲配合

  • 误区:过度依赖AI,内容缺乏个人思考。

    • 建议:ChatGPT是强大的助手,但不是大脑。务必将其生成的内容作为草稿和灵感来源,融入你自己的实际案例、经验教训、独特见解。最终的演讲灵魂,必须是你自己的。
  • 误区:Markdown排版单调,幻灯片看起来“像文档”。

    • 建议:充分利用MARP的主题系统和布局指令。通过精心设计的CSS,完全可以做出极具设计感的幻灯片。多参考MARP官方主题库和社区分享的主题,学习如何使用背景图片、渐变、分栏、字体缩放等特性。记住,“声明式”不代表“简陋”,它代表的是“高效可控”。
  • 技巧:演讲者备注。

    • 在Markdown中,使用<!-- 这是一个备注,只有演讲者能看到 -->的语法添加演讲者备注。MARP在生成演讲者视图(如果导出格式支持)或某些HTML预览中会保留这些备注,帮助你记住每页要讲的关键点,而不会把这些文字显示给观众。

这套方法的核心价值,不在于做出了多么炫酷的动画,而在于它将软件工程师从“格式调整”的泥潭中拉了出来,让我们能够用最自然、最高效的方式(写代码、写文档)去生产一种我们曾经不那么擅长的交付物。它让制作PPT这件事,重新变得逻辑清晰、过程可控、结果可预期。当你下次再需要做技术分享时,不妨打开你的编辑器,而不是那个沉重的图形化软件,体验一下这种“用代码思维征服一切”的畅快感。

http://www.zskr.cn/news/1431971.html

相关文章:

  • 树莓派外接屏幕驱动安装全攻略:从在线到离线,新手也能一次点亮
  • 手把手教你用高云FPGA的Video Frame Buffer IP,搞定OV5640摄像头到HDMI显示(附Gowin工程源码)
  • 从数据合成到模型部署:一个完整的PaddleOCR PP-OCRv4工业级微调项目实战
  • 别再对着Halcon界面发懵了!HDevelop四大窗口保姆级使用指南(附界面混乱一键修复)
  • 告别手动补位!在SAP PI/PO中巧用UDF实现SFTP文件字段的智能字节长度控制
  • 百度网盘直链解析工具:5分钟快速实现全速下载的终极指南
  • 如何利用HTML to Figma工具实现网页到设计稿的无缝转换
  • AMD Ryzen处理器深度调试工具:5个实用场景的完整优化指南
  • 从代码注释到幻灯片:LaTeX颜色与高亮功能的3个超实用场景(附xcolor配置)
  • C++智能指针与内存安全管理
  • 目标检测模型调优必看:用Python手把手教你计算AP和mAP(附VOC/COCO数据集代码)
  • 拆解禾赛64线雷达:它的115万个点/秒和0.2°分辨率是怎么算出来的?
  • 别再手动点波形了!用Quartus Prime 22.1 + Modelsim SE 10.6c 实现一键自动化仿真(附脚本)
  • 构建生产级LLM成本与风险优化系统:架构、策略与实战指南
  • 告别雾霾图!用Python+OpenCV手把手实现Retinex图像增强(SSR/MSR/MSRCR对比实战)
  • 告别查询和中断:用STM32的DMA+环形缓冲区打造你的串口数据‘蓄水池’
  • D-CAT框架:解耦跨模态注意力迁移技术解析
  • 告别臃肿的PLY:手把手教你优化3D Gaussian Splatting的存储与传输
  • 【长文本压测】大海捞针测试(Needle in a Haystack):评估模型长上下文记忆力
  • 别只盯着等长!DDR3稳定性的幕后功臣:电源完整性与滤波电容摆放实战
  • 为什么你的AI推荐模型AB结果总不显著?——缺失的因果对齐层正在 silently bias 你的结论
  • 【对话模型评估】多轮对话记忆力测试:模型在第10轮对话还会记得第1轮的设定吗?
  • 告别‘玄学’判断:如何用早期充放电曲线特征,给你的动力电池做个快速‘体检’?
  • 终极OpenCore配置工具:告别复杂文本编辑,轻松搭建黑苹果系统
  • 告别system用户:在Android 11 user版本中为特定功能开启su权限的完整配置流程
  • 第二机器时代AI投资全景图:从基础设施到行业应用的框架性指南
  • 2023 AI翻译工具深度横评:从DeepL到ChatGPT,场景化选型与实战指南
  • 告别硬边UI!用UE4材质和UMG轻松实现CSS级圆角按钮(附完整材质蓝图)
  • 别再只用mean()了!Pandas rolling的5个高阶用法,让你的股票/销量分析更专业
  • 深入对比:FPGA图像缩放用纯Verilog还是HLS?以高云平台OV7725项目为例