1. 课程导入与开发环境搭建

视频图像处理是FPGA最典型、也最能体现并行计算优势的应用方向之一。与CPU逐像素串行处理不同,FPGA可以在同一时钟周期内对多路像素并行运算,天然适合做实时流水线:摄像头输出的BT656或BT1120视频流进入FPGA后,经过色彩空间转换、滤波、缩放、叠加等处理,再以HDMI或VGA时序输出,整条链路延迟可以控制在几行到几十行之内。本课程围绕Quartus Prime平台,从零搭建一套可综合、可下载、可观察的视频图像处理系统。本章先解决"能不能跑起来"的问题:装好工具、配好授权、装好下载器驱动、建好第一个工程并成功下载,为后续所有图像算法实验打地基。

一、典型应用场景与工程意义

视频图像处理在FPGA上的落地场景非常集中,常见的有以下几类:

  • 工业视觉检测:线阵/面阵相机采集,做二值化、边缘提取、缺陷标记,要求微秒级确定性延迟。
  • 医疗内窥与超声:实时去噪、伽马校正、伪彩映射,对图像延迟和稳定性要求极高。
  • 安防与车载:多路视频拼接、畸变校正、目标框叠加,常配合SoC FPGA完成。
  • 广播与LED显示:4K视频缩放、色彩空间转换、Gamma与逐点校正,是Quartus工程中最常见的图像流水线。

这些场景的共同点是:数据率高(1080p60约148.5 Mpixel/s)、延迟敏感、算法结构固定。用FPGA实现时,核心工作是把算法拆成"逐像素可流水"的运算单元,再用行缓存(Line Buffer)和场缓存(Frame Buffer)解决跨行、跨帧的数据依赖。本课程后续章节会围绕这条主线逐步展开。

二、Quartus Prime安装与授权配置

本课程使用Quartus Prime Lite Edition,它对Cyclone IV/V、MAX 10等主流教学器件免费,且支持ModelSim-Altera Starter仿真。安装流程如下:

  1. 从Intel(现Altera)官网下载Quartus Prime Lite安装包与对应器件库(如Cyclone IV E、Cyclone V)。安装路径不要包含中文和空格,建议D:\altera\20.1\quartus。
  2. 安装时勾选Quartus Prime、ModelSim-Altera、器件支持包三项。安装完成后约需15~25 GB磁盘空间。
  3. 授权配置:Lite版对支持器件无需License文件,安装后即可编译。若使用Standard/Pro版或需要特定IP,则需在Tools → License Setup中指定license.dat路径,并确认LM_LICENSE_FILE环境变量指向该文件。
  4. 验证:打开Quartus,Help → About查看版本号;新建工程时能在Device Family中看到目标器件,说明器件库安装正确。
若编译时报"License file not found"或"Device not supported",优先检查器件库是否安装、License路径是否含中文、环境变量是否被其他EDA工具覆盖。

三、USB-Blaster驱动安装

下载比特流依赖USB-Blaster(或兼容下载器)。驱动安装步骤:

  1. 将USB-Blaster插入电脑USB口,Windows会提示未知设备。
  2. 打开设备管理器,找到带黄色感叹号的设备,右键"更新驱动程序"。
  3. 选择"浏览我的电脑以查找驱动程序",路径指向<Quartus安装目录>\drivers\usb-blaster。
  4. 安装完成后,设备管理器中应出现Altera USB-Blaster。
  5. 在Quartus中打开Tools → Programmer,点击Hardware Setup,若能看到USB-Blaster即驱动正常。
若Programmer中Hardware列表为空,常见原因是驱动未签名、USB线仅供电不传数据、或下载器被其他软件(如Vivado、OpenOCD)占用。可尝试更换USB口、重新安装驱动或重启jtagd服务。

四、第一个FPGA工程:创建、编译与下载

下面以一个"LED闪烁"工程为例,走通完整流程。目标器件假设为Cyclone IV EP4CE10F17C8(示例器件,可按实际开发板替换)。

1. 新建工程:File → New Project Wizard,设置工程目录、工程名led_blink、顶层实体名led_blink;在Device页选择器件族与具体型号;EDA Tool Settings中可暂不指定仿真工具。

2. 编写顶层代码:新建Verilog HDL File,输入一个分频计数驱动LED的模块:

module led_blink(
    input  wire clk,      // 50MHz板载时钟
    input  wire rst_n,    // 低电平复位
    output reg  led       // LED输出
);
    reg [24:0] cnt;
    always @(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            cnt <= 25'd0;
            led <= 1'b0;
        end else if(cnt == 25'd24_999_999) begin
            cnt <= 25'd0;
            led <= ~led;   // 约0.5s翻转一次
        end else begin
            cnt <= cnt + 1'b1;
        end
    end
endmodule

其中计数阈值24_999_999由50 MHz时钟与0.5 s翻转周期计算:50 000 000 × 0.5 − 1 = 24 999 999。

3. 引脚分配:打开Assignments → Pin Planner,把clk、rst_n、led分别绑定到开发板实际引脚(如clk→PIN_E1,led→PIN_A2,具体以板卡原理图为准)。

4. 编译:点击Start Compilation,依次执行Analysis & Synthesis、Fitter、Assembler、TimeQuest。编译成功后可在Compilation Report中查看资源占用与Fmax。

5. 下载:Tools → Programmer,Hardware Setup选择USB-Blaster,Add File选择output_files/led_blink.sof,勾选Program/Configure,点击Start。下载成功后开发板LED应以约1 Hz频率闪烁。

判断工程是否真正跑通,有三个可观察依据:编译无Error且时序满足;Programmer显示100% Successful;板上LED按预期频率变化。若LED常亮或常灭,优先检查引脚分配与时钟是否接入。

Quartus 视频图像处理工程搭建链路 ① 工具环境 Quartus Prime Lite + 器件库 + ModelSim ② 授权与驱动 License Setup USB-Blaster 驱动 ③ 工程创建 New Project Wizard 选器件 EP4CE10F17C8 ④ 代码与引脚 led_blink.v Pin Planner 绑定 ⑤ 编译 Compilation Synthesis → Fitter → Assembler ⑥ 下载 Programmer .sof → USB-Blaster → FPGA ⑦ 板上验证 LED 约 1 Hz 闪烁 = 链路打通