第四节 紫光同创FPGA开发环境:PDS安装、工程创建与基本操作流程
紫光同创(Pango Micro)作为国产FPGA的重要厂商,其配套开发环境PDS(Pango Design Suite)是进行硬件逻辑设计、仿真验证、综合实现与下载调试的一体化平台。对于初学者而言,掌握PDS的安装、工程创建以及界面布局是进入FPGA开发世界的第一步。本节将围绕PDS工具链的完整使用流程展开,从软件获取、License配置到工程模板选择,再到具体的代码编写、引脚约束与比特流生成,帮助读者建立起对紫光同创FPGA开发流程的系统认知。与Xilinx的Vivado或Intel的Quartus类似,PDS同样遵循“设计输入→综合→布局布线→时序收敛→下载调试”的经典流程,但在具体操作细节与工程管理方式上具有鲜明的国产化特色。
上图展示了PDS开发环境从安装配置到下载调试的完整工程链路,以及主界面的核心功能分区。在实际开发中,理解这些模块之间的依赖关系,能够帮助开发者快速定位问题,避免在工具使用层面浪费过多时间。接下来,我们将按照实际操作顺序,逐一拆解每个环节的具体步骤与注意事项。
4.1 PDS软件安装与License配置
核心原理:PDS是紫光同创基于Eclipse框架深度定制的一款FPGA集成开发环境,其底层集成了综合器(Synplify Pro for Pango)、布局布线器以及仿真工具。软件安装本身并不复杂,但License的配置方式直接决定了后续工程能否正常编译与生成比特流。PDS的License分为节点锁定(Node-Locked)和浮动(Floating)两种类型,前者绑定单一主机MAC地址,后者则通过服务器进行授权管理。
安装与配置操作流程:
- 获取安装包:从紫光同创官网或官方渠道获取对应版本的PDS安装程序(如PDS 2024.1),注意区分Windows与Linux版本。
- 安装软件:以管理员身份运行安装程序,建议安装路径不要包含中文或空格,例如
D:\Pango\PDS_2024.1。选择完全安装(Full Installation),确保包含器件库、IP核以及文档。 - 配置License:安装完成后,打开PDS,在菜单栏选择
Help → License Manager。在弹出窗口中,选择“Load License File”,浏览到本地的license.dat文件;或者选择“License Server”模式,输入服务器地址与端口(如27000@192.168.1.100)。 - 验证授权:加载成功后,License Manager中会显示当前授权的器件型号与IP核列表。确认包含目标FPGA型号(如PGL22G)后,点击“OK”完成配置。
| License类型 | 适用场景 | 配置方式 | 优缺点 |
|---|---|---|---|
| 节点锁定 | 个人开发、单机使用 | 绑定MAC地址,加载本地文件 | 简单可靠,但不可迁移 |
| 浮动License | 团队协作、多用户共享 | 指向服务器IP与端口 | 灵活共享,但依赖网络与服务器稳定性 |
实战场景:某研发团队新购一批PGL22G开发板,需要为5名工程师配置开发环境。若采用节点锁定License,需为每台电脑单独申请授权,管理繁琐;采用浮动License后,只需在一台Windows服务器上安装License Manager,工程师在各自PDS中配置服务器地址即可。实际部署中,需确保服务器防火墙开放TCP 27000端口,并在客户端测试 telnet 192.168.1.100 27000 能正常连通。
4.2 创建PDS工程与器件选型
核心原理:PDS工程文件以 .prj 为后缀,它并不直接包含源代码,而是以XML格式记录了工程中所有源文件、约束文件、器件型号以及综合实现策略的引用关系。这种管理方式与Vivado的 .xpr 工程类似,便于版本管理工具(如Git)进行文本对比与合并。
创建工程操作流程:
- 启动PDS,在欢迎界面点击
Create New Project,或通过菜单File → New → Project。 - 输入工程名称(如
led_flow)与存放路径。注意:工程路径中不要包含中文、空格或特殊字符,否则可能导致综合工具路径解析错误。 - 选择工程类型:一般选择
RTL Project(寄存器传输级工程),即需要编写HDL代码;若使用原理图输入,可选择Schematic,但实际工程中RTL设计占绝大多数。 - 添加源文件:可以立即添加已有的
.v/.vhd文件,也可以选择“Create an empty design”稍后手动添加。 - 关键步骤——器件选型:在“Part”页面中,根据开发板上的实际芯片型号进行选择。例如,紫光同创Logos系列PGL22G芯片,需选择
PGL22G,封装为CSG324,速度等级为-6。选错器件将导致引脚约束无法匹配,甚至综合报错。 - 点击
Finish完成工程创建。
案例拆解:假设我们使用紫光同创官方PGL22G开发板,需要创建一个流水灯工程。在器件选型时,我们选择 PGL22G、CSG324 封装。创建空工程后,手动添加一个 led_flow.v 源文件。此时,工程管理区(Sources)会显示顶层模块名称,但尚未添加约束文件,综合时会提示缺少引脚约束。
| 器件系列 | 典型型号 | 逻辑单元规模 | 典型应用 |
|---|---|---|---|
| Logos系列 | PGL12G / PGL22G | 1.2K ~ 22K LUT | 工业控制、LED显示、接口桥接 |
| Compa系列 | PGL50G / PGL100G | 50K ~ 100K LUT | 通信基带、图像处理、嵌入式系统 |
| Titan系列 | PGT30G / PGT180H | 30K ~ 180K LUT | 高性能计算、AI加速、雷达信号处理 |
常见误区:初学者容易忽略速度等级(如-6、-7)对时序收敛的影响。在相同设计下,速度等级更高的芯片(如-7)更容易满足时序要求,但成本也更高。在工程创建阶段,务必确认开发板实际使用的速度等级,不要随意选择。
4.3 PDS界面布局与设计输入
核心原理:PDS的图形界面基于Eclipse RCP构建,其布局逻辑与主流IDE一致。理解界面布局的核心在于明确“流程导航器(Flow Navigator)”与“工程管理区(Sources)”的联动关系。Flow Navigator提供了从“添加源文件→综合→实现→生成比特流→下载”的步骤化入口,每一步都有对应的状态指示灯(绿色对勾表示已完成,黄色感叹号表示有警告,红色叉号表示出错)。
界面区域功能详解:
- Flow Navigator(左侧):包含
Project Manager、IP Catalog、Simulation、RTL Analysis、Synthesis、Implementation、Program and Debug等折叠面板。双击对应步骤即可启动相关任务。 - Sources窗口(左上):以层次化树形结构显示
Design Sources(设计源文件)、Constraints(约束文件)、Simulation Sources(仿真文件)。右键点击源文件可进行Set as Top(设为顶层)操作。 - Editor区域(中央):用于编写HDL代码。PDS支持语法高亮、代码补全、行号显示。快捷键
Ctrl+S保存文件,Ctrl+Shift+F格式化代码。 - Console窗口(底部):显示综合、布局布线的实时日志。错误信息以红色显示,并带有具体的错误ID(如
PDS-2024),双击错误信息可跳转到代码中的具体行。 - Tcl Console:PDS支持Tcl脚本命令,高级用户可以通过命令行方式执行
synth_design、place_route等操作,便于自动化流程。
设计输入操作流程:
- 在Sources窗口点击
Add Sources,选择Add or create design sources,然后点击Create File,输入文件名led_flow.v,选择文件类型为Verilog。 - 双击打开
led_flow.v,在编辑器中输入流水灯逻辑代码。 - 保存文件后,在Flow Navigator中点击
RTL Analysis → Elaborate Design,PDS会解析代码并生成RTL原理图,检查语法错误。
// led_flow.v - 流水灯示例
module led_flow (
input wire clk, // 50MHz 系统时钟
input wire rst_n, // 低电平复位
output reg [3:0] led // 4个LED
);
reg [24:0] counter;
always @(posedge clk or negedge rst_n) begin
if (!rst_n) begin
counter <= 25'd0;
led <= 4'b0001;
end else begin
counter <= counter + 1'b1;
if (counter == 25'd24_999_999) begin // 0.5s翻转一次
counter <= 25'd0;
led <= {led[2:0], led[3]}; // 循环左移
end
end
end
endmodule
实战场景:在编写上述代码时,若忘记定义 counter 的位宽,或者将 led 定义为 wire 类型,在 Elaborate Design 阶段就会报错。PDS的语法检查比Vivado更严格,例如它不允许在 always 块中对 wire 类型赋值。此时,Console窗口会提示 Error: [PDS-2034] Variable 'led' must be of type 'reg',双击该错误即可跳转到代码对应行。
Window → Preferences → General → Workspace 中将文本编码设置为 UTF-8。
4.4 引脚约束与综合实现
核心原理:FPGA设计不仅需要逻辑代码,还需要将代码中的顶层端口(如 clk、rst_n、led)映射到芯片的实际物理引脚上。PDS使用 .fdc(Fpga Design Constraints)文件来管理引脚分配与时序约束。该文件本质上是文本文件,支持 set_property 命令,与Xilinx的 .xdc 文件类似。
创建与编辑约束文件流程:
- 在Sources窗口点击
Add Sources,选择Add or create constraints,点击Create File,输入文件名pins.fdc。 - 双击打开
pins.fdc,手动输入引脚分配命令。例如:
# 时钟与复位
set_property PACKAGE_PIN R4 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN T5 [get_ports rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
# LED输出
set_property PACKAGE_PIN M4 [get_ports led[0]]
set_property PACKAGE_PIN M5 [get_ports led[1]]
set_property PACKAGE_PIN N4 [get_ports led[2]]
set_property PACKAGE_PIN N5 [get_ports led[3]]
set_property IOSTANDARD LVCMOS33 [get_ports led[*]]
综合与实现操作流程:
- 在Flow Navigator中点击
Synthesis → Run Synthesis。PDS会调用Synplify Pro进行逻辑综合,将HDL代码转换为门级网表。 - 综合完成后,点击
Implementation → Run Implementation,执行映射(Map)与布局布线(Place & Route)。 - 若布局布线成功,点击
Program and Debug → Generate Bitstream,生成.bit文件。
案例拆解:某工程师在综合后,发现时序报告中显示 WNS (Worst Negative Slack) = -0.5ns,说明存在时序违规。通过查看 Report Timing Summary,发现关键路径位于 counter 的进位链上。此时,可以尝试在 pins.fdc 中添加时钟约束,告知工具时钟频率为50MHz:
create_clock -period 20.0 [get_ports clk]
添加约束后重新运行综合与实现,WNS变为+0.2ns,时序收敛。这说明,合理的时序约束是确保设计稳定运行的关键。
| 流程步骤 | 输入文件 | 输出文件 | 常见错误 |
|---|---|---|---|
| 综合(Synthesis) | .v / .vhd + .fdc | 门级网表(.edf) | 语法错误、未约束端口 |
| 布局布线(P&R) | 门级网表 + .fdc | 布局布线结果(.ncd) | 引脚冲突、时序违规 |
| 生成比特流 | 布局布线结果 | .bit / .fs | 比特流生成失败(资源不足) |
IOSTANDARD 必须与开发板硬件设计一致。例如,若开发板上的LED阳极接3.3V,则需使用 LVCMOS33;若接1.8V,则需使用 LVCMOS18。错误的电平标准可能导致IO口损坏。
4.5 下载调试与在线逻辑分析
核心原理:比特流生成后,需要通过JTAG接口下载到FPGA芯片中。PDS内置了硬件管理器(Hardware Manager),支持对紫光同创自家下载器(如Pango Downloader)以及第三方FTDI/JTAG调试器的识别。下载方式分为两种:Program Device(直接配置SRAM,断电丢失)和 Program Flash(烧写到SPI Flash,上电自动加载)。
下载调试操作流程:
- 使用下载线连接开发板的JTAG接口与电脑USB口,并给开发板上电。
- 在PDS中点击
Program and Debug → Open Hardware Manager。 - 点击
Open Target,PDS会自动扫描JTAG链上的设备。若识别到PGL22G器件,点击Program Device,选择生成的.bit文件,点击Program。 - 下载完成后,观察开发板上的LED是否按照预期流水闪烁。
在线逻辑分析(ILA):PDS支持类似Vivado的ILA(Integrated Logic Analyzer)调试核。在代码中实例化ILA IP核,可以实时抓取内部信号波形。例如,在流水灯设计中,我们可以抓取 counter 的最高位信号,验证分频是否正确。