跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++算法

FPGA 摄像头采集处理显示指南:OV5640 至 HDMI 实时显示实战

本文详细阐述了基于 FPGA 的摄像头采集、处理与显示系统设计方案。内容涵盖 OV5640 传感器驱动、SCCB 通信协议、DVP 接口时序解析、图像缓存架构(双端口 RAM/SDRAM)设计及 HDMI 显示输出流程。重点讲解了时钟管理、跨时钟域同步、TMDS 编码原理及 YUV 转 RGB 算法实现。文章提供了完整的 Verilog 代码示例,包括采集模块、SCCB 控制器、VGA 时序生成器及顶层集成设计,并总结了常见调试技巧与性能优化策略,适用于视频监控、工业检测等实时图像处理场景的开发参考。

1951018925发布于 2026/3/29更新于 2026/10/2490 浏览

FPGA 摄像头采集处理显示指南:OV5640 至 HDMI 实时显示实战

概述

在视频监控、工业检测及医疗成像等领域,实时图像采集与显示是核心功能。FPGA 凭借高并行处理能力与低延迟特性,成为构建高性能视频处理系统的首选方案。

本文将详细介绍如何使用 FPGA 实现完整的摄像头采集、处理及显示系统,重点讲解 OV5640 驱动、图像数据采集、缓存管理以及 HDMI 显示输出的全流程设计。

一、系统架构与核心模块

1.1 完整系统架构

典型的 FPGA 摄像头采集处理显示系统包含以下主要部分:

  • 摄像头采集模块:负责 OV5640 驱动、SCCB 配置接口及 DVP 数据采集。
  • 图像处理模块:执行数据格式转换、图像缩放/裁剪及色彩空间转换。
  • 存储缓存模块:利用 SDRAM/DDR3 及双端口 RAM 进行帧缓冲管理。
  • 显示输出模块:生成 VGA 时序、HDMI 驱动及 TMDS 编码。
  • 时钟管理模块:PLL 时钟生成与多时钟域同步。

1.2 核心模块功能说明

模块名称功能描述关键参数
OV5640 驱动摄像头初始化、寄存器配置、数据采集分辨率、帧率、数据格式
SCCB 控制器I2C 兼容的摄像头配置接口时钟频率、地址宽度
DVP 采集并行数据采集、时序同步像素时钟、行列同步
图像缓存帧数据存储、读写管理缓存大小、带宽
VGA 驱动显示时序生成、数据输出分辨率、刷新率
HDMI 驱动HDMI 信号编码、差分输出分辨率、色深

1.3 数据流向

摄像头 (OV5640) 
  ↓ [DVP 接口:PCLK, HREF, VSYNC, Y[7:0]] 
FPGA 采集模块 
  ↓ [16 位 RGB565 或 YUV422] 
图像处理模块 
  ↓ [处理后的图像数据] 
SDRAM/DDR3 缓存 
  ↓ [读取请求] 
VGA/HDMI 驱动 
  ↓ [HDMI 差分信号] 
显示器

1.4 应用场景与实现方案

典型应用场景
  1. 视频监控系统:需实时处理多路视频流,对延迟要求严格 (< 100ms),支持多种分辨率 (720p, 1080p)。
  2. 工业检测系统:需要高帧率采集 (60fps 以上),对图像质量要求高,需实时图像处理 (滤波、边缘检测等)。
  3. 医疗成像系统:对图像质量要求极高,需实时显示和存储,可能需要图像增强处理。
不同分辨率的实现方案
分辨率帧率像素时钟缓存大小适用场景
640×48060fps25MHz600KB低端监控、测试
800×60060fps40MHz960KB通用应用
1024×76860fps65MHz1.5MB工业检测
1280×72060fps74.25MHz1.8MB高清监控
1920×108060fps148.5MHz4.1MB全高清应用

1.5 设计流程与关键技术点

设计流程
  1. 需求分析:确定分辨率和帧率,选择摄像头型号,评估 FPGA 资源。
  2. 硬件设计:摄像头接口设计,电源管理设计,时钟分配设计,显示接口设计。
  3. 软件设计:摄像头驱动开发,图像采集模块,缓存管理,显示驱动。
  4. 集成与调试:模块集成,时序验证,功能测试,性能优化。
  5. 部署与维护:系统集成,可靠性测试,文档完善。
关键技术点

1. 时钟管理

// 关键时钟信号
// 摄像头输入时钟 (XCLK): 24MHz
// 像素时钟 (PCLK): 根据分辨率变化
// HDMI 像素时钟:148.5MHz(1080p@60Hz)
// HDMI 串行时钟:5 倍像素时钟

// 时钟约束示例
create_clock -period 10.000 -name clk_sys [get_ports sys_clk]
create_generated_clock -name clk_hdmi \n    -source [get_pins pll_inst/CLKIN1] \n    -multiply_by 3 \n    [get_pins pll_inst/CLKOUT0]

2. 跨时钟域同步

摄像头时钟域 (PCLK) ←→ 系统时钟域 (sys_clk) ↓ CDC 同步器 (双触发器) ↓ HDMI 时钟域 (clk_hdmi)。关键:使用格雷码或双触发器进行同步。

3. 内存带宽管理

写入带宽:PCLK × 16bit (像素时钟 × 数据宽度) 读取带宽:clk_hdmi × 16bit (显示时钟 × 数据宽度) 例如 1080p@60Hz:

  • 写入:148.5MHz × 16bit = 2.376Gbps
  • 读取:148.5MHz × 16bit = 2.376Gbps
  • 需要 DDR3-1600 以上支持
常见设计挑战
挑战原因解决方案
时序收敛困难多时钟域、高频率合理的时钟约束、流水线设计
缓存不足高分辨率、高帧率使用 DDR3、优化数据格式
图像撕裂读写不同步双缓冲、帧同步控制
色彩失真格式转换错误正确的色彩空间转换
延迟过高处理流程复杂流水线并行处理

二、OV5640 摄像头基础知识

2.1 OV5640 摄像头概述

OV5640 是豪威 (OmniVision) 公司推出的一款高性能 CMOS 图像传感器,广泛应用于监控、手机、平板等消费类电子产品。

主要特性:

特性参数
最大分辨率2592×1944(500 万像素)
输出格式YUV422/420、RGB565、JPEG
帧率15-60fps(可配置)
工作时钟6-54MHz(推荐 24MHz)
功耗150-200mW
接口DVP(并行)、SCCB(I2C 兼容)
自动功能自动对焦、自动曝光、自动白平衡

2.2 OV5640 引脚定义与功能

OV5640 采用 CSP(芯片级封装),共有 60 个引脚。主要引脚如下:

  • 电源引脚: DVDD(1.8V), AVDD(2.8V), DOVDD(1.8V)
  • 时钟引脚: XCLK (外部时钟输入 24MHz), PCLK (像素时钟输出)
  • 同步信号: VSYNC (帧同步信号), HREF (行同步信号)
  • 数据引脚: Y[9:0] (10 位像素数据,通常使用 Y[9:2] 作为 8 位数据)
  • 控制引脚: RESETB (复位信号), PWDN (掉电/省电)
  • 通信引脚: SIO_C (SCCB 时钟线), SIO_D (SCCB 数据线)

2.3 OV5640 工作原理

内部结构包括 PLL/时钟生成、感光矩阵 (CMOS 传感器)、模拟前端 (AFE)、ISP(图像信号处理)、格式转换及输出接口。

工作流程:上电初始化 → 寄存器配置 → 图像采集 → 数据输出。

2.4 SCCB 通信协议

SCCB(Serial Camera Control Bus) 是豪威公司定义的摄像头控制总线,与 I2C 协议类似,但有细微差别。

SCCB 特点:

  • 基于 I2C,但不完全兼容
  • 两线制:SIO_C(时钟)、SIO_D(数据)
  • 时钟频率:100-400kHz(推荐 100kHz)
  • 支持单字节和双字节寻址
  • OV5640 使用 16 位地址

写操作时序:

START → SLAVE_ADDR(0x78) → ACK → H_ADDR(0x30) → ACK → L_ADDR(0x08) → ACK → DATA(0x82) → ACK → STOP

读操作时序:

START → SLAVE_ADDR(0x78) → ACK → H_ADDR(0x30) → ACK → L_ADDR(0x0A) → ACK → START → SLAVE_ADDR(0x79) → ACK → DATA → NACK → STOP

三、摄像头初始化与配置

3.1 OV5640 上电时序

OV5640 的正确上电时序对系统稳定性至关重要。

上电时序流程:

  1. 电源上电 (DVDD、AVDD、DOVDD)
  2. PWDN 拉低 (退出低功耗模式)
  3. RESETB 拉低 (复位芯片)
  4. RESETB 拉高 (释放复位)
  5. 等待 PLL 稳定 (约 20ms)
  6. 开始配置寄存器

FPGA 实现示例:

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        pwdn <= 1'b1; // 保持低功耗
        power_on_counter <= 0;
    end else if (power_on_counter < 32'd5_000_000) begin
        pwdn <= 1'b1;
        power_on_counter <= power_on_counter + 1;
    end else begin
        pwdn <= 1'b0; // 退出低功耗
    end
end

3.2 OV5640 关键寄存器配置

设置分辨率的关键寄存器:

  1. 输出大小控制 (0x3808-0x380B)
  2. 时序控制 (0x3800-0x3807)
  3. 格式控制 (0x4300)

640×480@30fps 配置示例:

地址数据说明
0x30080x82系统复位
0x38080x02输出宽度高字节
0x38090x80输出宽度低字节 (640)
0x380a0x01输出高度高字节
0x380b0xe0输出高度低字节 (480)
0x43000x30YUV422 输出

3.3 SCCB 控制器设计

SCCB 控制器负责生成 SCCB 时序信号,实现寄存器读写操作。

Verilog 实现框架:

module sccb_ctrl (
    input clk,
    input rst_n,
    input [15:0] reg_addr,
    input [7:0] reg_data_w,
    output [7:0] reg_data_r,
    input reg_wr,
    input reg_rd,
    output reg_done,
    inout sio_c,
    inout sio_d
);
    localparam IDLE = 4'd0;
    localparam START = 4'd1;
    localparam ADDR_H = 4'd2;
    localparam ADDR_L = 4'd3;
    localparam DATA = 4'd4;
    localparam ACK = 4'd5;
    localparam STOP = 4'd6;

    reg [3:0] state, next_state;
    // ... 状态机逻辑 ...
    always @(*) begin
        case (state)
            IDLE: begin if (reg_wr || reg_rd) next_state = START; else next_state = IDLE; end
            START: next_state = ADDR_H;
            ADDR_H: next_state = ADDR_L;
            ADDR_L: next_state = (reg_wr) ? DATA : ACK;
            DATA: next_state = ACK;
            ACK: next_state = STOP;
            STOP: next_state = IDLE;
            default: next_state = IDLE;
        endcase
    end
endmodule

四、图像采集模块设计

4.1 DVP 接口详解

DVP(Digital Video Port) 是 OV5640 的并行数据输出接口。

DVP 接口信号:

  • PCLK: 像素时钟 (采样时钟)
  • VSYNC: 帧同步 (低电平表示帧有效)
  • HREF: 行同步 (高电平表示行有效)
  • Y[9:0]: 10 位像素数据

4.2 图像采集模块设计

采集模块 Verilog 实现:

module dvp_capture (
    input clk,
    input rst_n,
    input pclk,
    input vsync,
    input href,
    input [9:0] data_in,
    output reg [7:0] data_out,
    output reg data_valid,
    output reg line_valid,
    output reg frame_valid,
    output reg [11:0] pixel_x,
    output reg [11:0] pixel_y
);
    localparam IDLE = 2'd0;
    localparam FRAME_ACTIVE = 2'd1;
    localparam LINE_ACTIVE = 2'd2;

    reg [1:0] state;
    reg vsync_r1, vsync_r2;
    reg href_r1, href_r2;

    // 同步 VSYNC 和 HREF 到系统时钟
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            vsync_r1 <= 1'b1; vsync_r2 <= 1'b1;
            href_r1 <= 1'b0; href_r2 <= 1'b0;
        end else begin
            vsync_r1 <= vsync; vsync_r2 <= vsync_r1;
            href_r1 <= href; href_r2 <= href_r1;
        end
    end

    // 采集控制状态机
    always @(posedge pclk or negedge rst_n) begin
        if (!rst_n) begin
            state <= IDLE; frame_valid <= 1'b0; line_valid <= 1'b0;
            pixel_x <= 12'd0; pixel_y <= 12'd0;
        end else begin
            case (state)
                IDLE: begin
                    if (!vsync) begin
                        state <= FRAME_ACTIVE; frame_valid <= 1'b1; pixel_y <= 12'd0;
                    end
                end
                FRAME_ACTIVE: begin
                    if (vsync) begin
                        state <= IDLE; frame_valid <= 1'b0; pixel_y <= 12'd0;
                    end else if (href) begin
                        line_valid <= 1'b1; pixel_x <= pixel_x + 1;
                    end else begin
                        line_valid <= 1'b0;
                        if (pixel_x > 0) begin
                            pixel_y <= pixel_y + 1; pixel_x <= 12'd0;
                        end
                    end
                end
                default: state <= IDLE;
            endcase
        end
    end

    // 数据采样
    always @(posedge pclk or negedge rst_n) begin
        if (!rst_n) begin
            data_out <= 8'd0; data_valid <= 1'b0;
        end else begin
            if (href && frame_valid) begin
                data_out <= data_in[9:2]; // 使用高 8 位
                data_valid <= 1'b1;
            end else begin
                data_valid <= 1'b0;
            end
        end
    end
endmodule

4.3 采集模块关键设计点

  1. 时钟域处理: 使用 CDC(Clock Domain Crossing) 同步 PCLK 到系统时钟。
  2. 像素计数: 在 HREF 高电平时计数像素,用于生成行列坐标。
  3. 数据有效性判断: 同时满足 VSYNC 低电平、HREF 高电平且在 PCLK 上升沿采样时,数据有效。

五、图像处理与缓存

5.1 图像缓存设计

缓存需求分析:

  • 缓冲采集数据,解决采集和显示速率不匹配。
  • 实现帧缓冲,支持双缓冲显示。
  • 存储处理后的图像数据。

缓存大小计算:

缓存大小 = 分辨率 × 像素深度 × 帧数
例如 1280×720@60fps:
- 单帧大小 = 1280 × 720 × 2 字节 (RGB565) = 1.8MB
- 双缓冲 = 1.8MB × 2 = 3.6MB

5.2 双端口 RAM 设计

双端口 RAM 允许同时进行读写操作,是 FPGA 图像处理的关键组件。

Verilog 实现:

module dual_port_ram #(
    parameter ADDR_WIDTH = 12,
    parameter DATA_WIDTH = 16,
    parameter DEPTH = 4096
) (
    input clk_a, input [ADDR_WIDTH-1:0] addr_a, input [DATA_WIDTH-1:0] data_in, input we_a,
    input clk_b, input [ADDR_WIDTH-1:0] addr_b, output reg [DATA_WIDTH-1:0] data_out, input re_b
);
    reg [DATA_WIDTH-1:0] mem [0:DEPTH-1];

    always @(posedge clk_a) begin
        if (we_a) mem[addr_a] <= data_in;
    end

    always @(posedge clk_b) begin
        if (re_b) data_out <= mem[addr_b];
    end
endmodule

5.3 SDRAM 控制器设计

SDRAM 容量大但访问延迟较高,需要复杂的控制器。

简化实现:

module sdram_ctrl (
    input clk, input rst_n,
    input [23:0] addr, input [15:0] data_in, output [15:0] data_out,
    input we, input re, output busy,
    output [12:0] sdram_addr, output [1:0] sdram_ba,
    inout [15:0] sdram_dq, output sdram_cs_n, output sdram_ras_n, output sdram_cas_n, output sdram_we_n, output sdram_clk
);
    localparam IDLE = 3'd0;
    localparam ACTIVE = 3'd1;
    localparam READ = 3'd2;
    localparam WRITE = 3'd3;
    localparam PRECHARGE = 3'd4;
    // ... 状态机与命令生成逻辑 ...
endmodule

5.4 图像处理基础

YUV422 到 RGB565 转换:

module yuv422_to_rgb565 (
    input clk, input [7:0] y, input [7:0] u, input [7:0] v,
    output [15:0] rgb565
);
    wire [15:0] r, g, b;
    assign r = (y + ((v - 8'd128) * 9'd179) >> 8);
    assign g = (y - (((u - 8'd128) * 9'd44) >> 8) - (((v - 8'd128) * 9'd91) >> 8));
    assign b = (y + ((u - 8'd128) * 9'd227) >> 8);
    wire [7:0] r_clamp = (r > 255) ? 8'd255 : (r < 0) ? 8'd0 : r[7:0];
    wire [7:0] g_clamp = (g > 255) ? 8'd255 : (g < 0) ? 8'd0 : g[7:0];
    wire [7:0] b_clamp = (b > 255) ? 8'd255 : (b < 0) ? 8'd0 : b[7:0];
    assign rgb565 = {r_clamp[7:3], g_clamp[7:2], b_clamp[7:3]};
endmodule

六、HDMI 显示输出

6.1 VGA 时序基础

VGA 时序包含水平同步 (HSYNC)、垂直同步 (VSYNC)、像素时钟 (PCLK) 及 RGB 数据。

1280×720@60Hz 时序参数:

  • 像素时钟:74.25MHz
  • 水平总像素:1650 (有效 1280)
  • 垂直总行数:750 (有效 720)

6.2 HDMI 驱动设计

HDMI 支持高分辨率传输,采用 TMDS 编码。

6.3 VGA 时序生成器

Verilog 实现:

module vga_timing_gen #(
    parameter H_TOTAL = 1650, parameter H_ACTIVE = 1280,
    parameter H_FP = 110, parameter H_SYNC = 40,
    parameter V_TOTAL = 750, parameter V_ACTIVE = 720,
    parameter V_FP = 5, parameter V_SYNC = 5
) (
    input clk, input rst_n,
    output reg hsync, output reg vsync,
    output reg [11:0] pixel_x, output reg [11:0] pixel_y,
    output reg data_valid
);
    reg [11:0] h_counter, v_counter;
    // ... 计数器与同步信号生成逻辑 ...
endmodule

6.4 TMDS 编码

TMDS(Transition Minimized Differential Signaling) 将 8bit 数据编码为 10bit,最小化信号转换。

6.5 HDMI 显示完整流程

图像缓存 → 读取控制器 → VGA 时序生成器 → TMDS 编码器 → 差分驱动器 → HDMI 连接器。

七、完整实战案例与最佳实践

7.1 系统集成

顶层模块需整合时钟生成、摄像头初始化、图像采集、缓存管理及 HDMI 输出。

顶层模块设计:

module camera_hdmi_system (
    input sys_clk, input rst_n,
    output camera_xclk, output camera_resetb, output camera_pwdn,
    inout camera_sio_c, inout camera_sio_d,
    input camera_pclk, input camera_vsync, input camera_href, input [9:0] camera_data,
    output hdmi_clk_p, output hdmi_clk_n,
    output [2:0] hdmi_d_p, output [2:0] hdmi_d_n
);
    wire clk_100m, clk_74m25, clk_148m5;
    pll_clk_gen pll_inst (.clk_in(sys_clk), .clk_100m(clk_100m), .clk_74m25(clk_74m25), .clk_148m5(clk_148m5));
    // 实例化各子模块...
endmodule

7.2 调试技巧

常见问题排查:

  1. 摄像头初始化失败: 检查电源电压、XCLK 频率、RESETB/PWDN 时序。
  2. 图像采集无数据: 检查 DVP 接口连接、PCLK 频率、状态机逻辑。
  3. HDMI 无显示: 检查 HDMI 连接、VGA 时序参数、TMDS 编码输出。

调试工具:

  • 逻辑分析仪:捕获时序信号,验证协议。
  • 示波器:测量模拟信号,检查信号质量。
  • 仿真工具:ModelSim/Vivado 进行 RTL 仿真。

7.3 性能优化

  • 带宽优化: 减少不必要的访问,使用行缓冲,批量读写。
  • 延迟优化: 流水线设计,提高时钟频率,算法优化。
  • 功耗优化: 时钟门控,降低工作电压,优化存储结构。

总结

本文详细介绍了 FPGA 摄像头采集、处理、显示系统的完整设计流程,涵盖从 OV5640 驱动、DVP 采集、SDRAM 缓存到 HDMI 输出的各个环节。

关键点回顾:

  1. 时序是关键: 正确的时序是系统稳定运行的基础。
  2. 模块化设计: 独立开发和测试各模块。
  3. 充分仿真: 在 RTL 仿真阶段发现问题。
  4. 逐步优化: 先保证功能,再优化性能。
  5. 文档完善: 记录设计决策和调试经验。

通过深入理解每个模块的工作原理并在真实硬件上验证,可以构建出高性能、低延迟的视频处理系统。

目录

  1. FPGA 摄像头采集处理显示指南:OV5640 至 HDMI 实时显示实战
  2. 概述
  3. 一、系统架构与核心模块
  4. 1.1 完整系统架构
  5. 1.2 核心模块功能说明
  6. 1.3 数据流向
  7. 1.4 应用场景与实现方案
  8. 典型应用场景
  9. 不同分辨率的实现方案
  10. 1.5 设计流程与关键技术点
  11. 设计流程
  12. 关键技术点
  13. 常见设计挑战
  14. 二、OV5640 摄像头基础知识
  15. 2.1 OV5640 摄像头概述
  16. 2.2 OV5640 引脚定义与功能
  17. 2.3 OV5640 工作原理
  18. 2.4 SCCB 通信协议
  19. 三、摄像头初始化与配置
  20. 3.1 OV5640 上电时序
  21. 3.2 OV5640 关键寄存器配置
  22. 3.3 SCCB 控制器设计
  23. 四、图像采集模块设计
  24. 4.1 DVP 接口详解
  25. 4.2 图像采集模块设计
  26. 4.3 采集模块关键设计点
  27. 五、图像处理与缓存
  28. 5.1 图像缓存设计
  29. 5.2 双端口 RAM 设计
  30. 5.3 SDRAM 控制器设计
  31. 5.4 图像处理基础
  32. 六、HDMI 显示输出
  33. 6.1 VGA 时序基础
  34. 6.2 HDMI 驱动设计
  35. 6.3 VGA 时序生成器
  36. 6.4 TMDS 编码
  37. 6.5 HDMI 显示完整流程
  38. 七、完整实战案例与最佳实践
  39. 7.1 系统集成
  40. 7.2 调试技巧
  41. 7.3 性能优化
  42. 总结

更多推荐文章

查看全部
  • Claude Code 与 OpenClaw 实战指南:从初始化到自动化工作流
  • 深入超标量架构与并行执行技术
  • C++ 智能指针详解:原理、实现与内存安全
  • AI 绘画在商业设计中的应用与版权探讨
  • 在嵌入式中实现 O(1) 的字符串 Switch-Case (编译期哈希)
  • 基于 OpenClaw 与 Claude 的自动化写作工作流搭建实践
  • ComfyUI 节点式 AI 绘画工作流:架构、实战与优化
  • 低小慢无人机目标识别跟踪技术分析
  • OpenClaw QQ 机器人接入指南
  • 2023 年网络安全入职与转行职业规划指南
  • DeepSeek R1-Zero 为何比 R1 更值得关注:纯强化学习范式解析
  • AirSim 无人机物理引擎与动力学模拟:碰撞风场传感器噪声
  • Python pip 安装路径查看与修改指南
  • 宙斯漏洞扫描器 Zeus-Scanner 功能特性与安装部署
  • CSS 基础语法、选择器与常用属性实战指南
  • Dalvik 虚拟机核心架构与运行机制解析
  • C++ 多态底层实现原理详解
  • Ubuntu 部署 OpenClaw 并接入飞书机器人
  • GLM-4.5V-FP8 开源:多模态视觉推理新范式
  • LangGraph 入门与实战:基于 Agent 状态机的工具调用实践

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online