2. Quartus工程与高速接口IP核
在Quartus Prime中做高速接口设计,第一步不是写RTL,而是把工程和IP核这两件事做对。工程决定了器件、约束、编译流程和目录结构;IP核决定了PCIe、以太网、DDR这些高速接口的物理层与协议层参数。两者一旦配置错误,后期往往要推倒重来。本节围绕“建工程—找IP—配IP—例化IP—验证连接”这条主线,把关键操作和判断依据讲清楚。
一、创建工程:先定器件与目录,再谈代码
启动Quartus Prime后选择 File → New Project Wizard,依次填写工程目录、工程名和顶层实体名。工程名建议与顶层模块名一致,避免综合时找不到顶层。器件选择是高速接口设计的分水岭:PCIe Gen3 x4、千兆以太网、DDR4等IP对器件系列和速度等级有硬性要求,例如Cyclone 10 GX、Arria 10、Stratix 10各自支持的硬核IP不同。若选错器件,IP Catalog中对应IP会直接置灰不可用。
工程创建时还要注意三点:一是EDA工具设置中指定仿真工具(如ModelSim/Questa)和综合工具;二是添加已有源文件时只加RTL和约束,不要混入IP生成目录;三是工程目录不要放在中文路径或带空格的路径下,否则IP生成脚本容易失败。一个推荐的结构是:prj/放工程文件,rtl/放用户逻辑,ip/放IP生成文件,constraints/放SDC和QSF,sim/放仿真脚本。这样后续IP升级或多人协作时不会互相覆盖。
二、IP Catalog:找到正确的IP并理解参数分组
IP Catalog位于Quartus主界面右侧,也可通过 Tools → IP Catalog 打开。它按类别组织IP:Basic Functions、DSP、Interface Protocols、Memory Interfaces and Controllers等。高速接口IP主要分布在 Interface Protocols(PCIe、Ethernet)和 Memory Interfaces and Controllers(DDR)。搜索框输入“PCIe”“Ethernet”“DDR”可快速定位。
选中IP后双击进入参数编辑器。以PCIe为例,参数通常分为几组:Device/Protocol(器件、Gen速度、Lane数)、Interface(Avalon-ST或Avalon-MM、数据位宽)、BAR/Configuration(BAR大小、Vendor ID、Device ID)、Reference Clock(参考时钟频率,如100 MHz)。DDR控制器则关注内存类型(DDR3/DDR4)、频率、位宽、Rank数、时序参数。以太网IP关注速率(10/100/1000M或10G)、接口类型(MII/GMII/RGMII/SGMII)、是否带MAC。
三、配置与例化:从参数到可综合代码
参数配置完成后,IP编辑器会生成一个 .ip 文件(或 .qip),并可选生成例化模板、仿真模型和测试平台。关键操作是点击 Generate HDL,选择Verilog或VHDL,生成后会在工程目录下产生 ip/ 子目录,包含 *.v、*.sv、*.sdc 和 *.qip。此时必须把 .qip 加入工程,否则编译时找不到IP。
例化时不要手写端口,直接用IP生成的例化模板。以PCIe Hard IP为例,典型端口包括:refclk(参考时钟)、rst(复位)、pcie_rx/pcie_tx(高速串行收发)、tlp_rx/tlp_tx(TLP数据流)、cfg_*(配置空间接口)。DDR控制器的例化则包含 pll_ref_clk、global_reset_n、mem_*(内存引脚)、avl_*(Avalon-MM从接口)。例化后要检查时钟域:PCIe的 refclk 通常来自专用时钟引脚,DDR的参考时钟来自PLL,不能随意用普通IO时钟替代。
// PCIe Hard IP 例化片段(示意)
pcie_hip_0 u_pcie (
.refclk (pcie_refclk), // 100 MHz 差分参考时钟
.rst_n (pcie_rst_n),
.pcie_rx (pcie_rx), // 高速串行输入
.pcie_tx (pcie_tx), // 高速串行输出
.tlp_rx (tlp_rx_data), // 接收TLP
.tlp_tx (tlp_tx_data), // 发送TLP
.cfg_vendor_id (16'h1172),
.cfg_device_id (16'h0001)
);
四、连接验证:编译前先看引脚与时钟
IP例化完成后,不要急着全编译。先做三件事:第一,在 Pin Planner 中确认高速收发引脚、参考时钟引脚是否分配到专用引脚;第二,在 Timing Analyzer 中检查SDC约束是否覆盖了IP生成的所有时钟;第三,用 Analysis & Synthesis 单独跑一次综合,看是否有未连接端口或时钟域警告。若IP生成时带了仿真模型,建议先用ModelSim跑一次IP自带的测试平台,确认TLP收发或DDR读写时序正常,再接入用户逻辑。
五、常见问题与判断依据
实际工程中,IP配置最容易出问题的地方有三处。第一,参考时钟频率填错。PCIe Gen3要求100 MHz,若填成125 MHz,链路训练会失败,ltssm状态机停在Detect状态。第二,DDR的时序参数与PCB走线不匹配。IP编辑器中的tCK、tRCD、tRP必须与内存颗粒手册一致,否则校准阶段cal_fail会拉高。第三,以太网IP的PHY接口模式选错。RGMII需要双沿采样,若误选GMII,数据会错位。
判断IP是否配置成功,最直接的方法是看编译报告中的Analysis & Synthesis警告和Timing Analyzer的时钟约束覆盖率。若IP生成时带了*_tb.sv测试平台,先跑仿真,观察TLP事务、DDR读写数据或以太网帧是否正确。只有仿真通过、时序收敛、引脚分配无误,才进入板级调试。
总结来说,Quartus高速接口设计的核心是“工程定基础、IP定参数、例化定连接、验证定成败”。把器件选对、把IP参数与硬件手册对齐、把时钟和引脚约束做全,后续的板级调试才有稳定的起点。