自学内容网 自学内容网

pds 开发流程(pango design suite)使用方法


author: hjjdebug
date: 2024年 10月 12日 星期六 13:24:55 CST
pds 开发流程(pango design suite)使用方法

基于 Pango Design Suite(PDS) 的FPGA开发流程
盘古设计开发包, 是一个集成开发环境, 就是说把很多功能就集中在了一起的意思.

我们这里使用 verilog 硬件描述语言来编程


甲:. 创建RTL 工程


  1. 双击 pds 图标启动 pds 软件.

  2. 点击 File->New Project

  3. 弹出一个 PDS 的工程向导,点击 Next 按钮。

  4. 在弹出的对话框中输入工程名和工程存放的目录,
    这里取一个 led_test 的工程名,点击 Next
    注: 建议取消 create_project_subdirectory 选择项

  5. 在下面的对话框中默认选择 RTL Project(参考注释),
    单击 Next

    RTL: register transfer level, 寄存器传输级工程.
    寄存器是硬件的基础单元, 越基础,意味着越灵活.

  6. 进入 Add Design Source Files 界面,这里先不添加任何设计文件。点击 Next;

  7. 这里问是否添加已有的 IP,保持默认不添加,单击 Next;

    注: IP 是intellectual property, 知识产权的意思. 可以是一些加密的库文件。

  8. 提示是否添加已有的约束文件,这里约束文件我们也没有设计好,也不添加。点击Next

  9. 在接下来的对话框选择所用的 FPGA 器件, 你的开发版是什么,就选择什么.
    通过各个框的筛选,最后选择一种型号,例如选择PG2L100H-6FBG484

10.给出一个总览图, 再次确认一下板子型号有没有选对, 没有问题再点击“Finish”完成工程创建。

注: 创建完工程后, 板子型号也可以更改,
在Navigator 面板中, Sources 标签下, 点击 FPGA器件型号,右击弹出菜单,点击Project Setting 弹出型号选择对话框,

source 文件, 约束文件, IP核文件也可以添加,修改,删除,见后述.


乙:. 添加源代码或编写源代码


以编写流水灯的 verilog 代码 为例:

  1. 点击 Sources 下的 Designs 图标. 右击弹出菜单,点击 Add Source, 弹出Add Source 对话框.

  2. 选择 Add or Create design sources, 点击next,

  3. 出现 Add Design Sources Files 对话框,点击Add Files, 出现打开文件对话框, 选中编辑好的.v文件. 一路点确定完成添加.

    注: verilog 的源文件通常以.v 为后缀名.


丙. 添加UCE 约束


UCE: User Constraint Editor(Timing and Logic),用户约束编辑, 时序约束和逻辑约束.
主要是完成「管脚的约束,时钟的约束,以及组的约束」。
目的是对 led_test.v 程序中的「输入输出端口分配到 FPGA 的真实管脚」上。并对时钟做一定限制.

  1. 点击菜单栏“Tools”下的"User Constraint Editor"->Pre Synthesize UCE . 要等一会等它完成响应.
    即: 在综合之前的用户约束输入
    它会执行编译. 控制台中有log 输出.
    注: 控制台可以关闭以让出视图空间, 各个视图的显示可以由主菜单下 view 子菜单控制.

  2. 在弹出的界面中单击 Device;

  3. 在 Device 中单击 I/O,可看到工程中用到的 IO 端口;

  4. LOC 就是「与硬件中 FPGA 相对应的管脚」,
    VCCIO 是 「FPGA 的 IO 的电压标准」,与硬件对应,
    其它在这里保持默认即可;
    为啥VCCIO 不能由LOC 来决定而要单独设置?
    虽然是使用上灵活了, 可以是高电压(>2.5v),也可以是低电压(<1.8v)
    但同时也为使用者添加了麻烦. 参考后边的比特流生成scbv 问题. 是一个关联问题.

  5. 单击保存后会弹对话框,在这里选择默认;就生成了约束文件.fdc

    注: fdc我没有查到它什么含义, 反正c是约束文件的意思. .fdc人家就这么叫了.

关于时钟约束的操作:
它的目的是想产生类似下面的这条输出语句.
create_clock -name {sys_clk} [get_ports {sys_clk}] -period {40.000} -waveform {0.000 20.000}
用鼠标点击的过程是:

  1. 点击菜单栏“Tools”下的"User Constraint Editor"->Pre Synthesize UCE .
  2. 在弹出的界面中单击 Time Constrains->Create Clock->+ 会弹出Create Clock 对话框
    Clock name: 随便起的名字, 通常与约束源同名就可以了. 例如填sys_clk
    Source objects, 约束源. 点击 … 弹出窗口, 是一个过滤对话框, find 按钮之上的部分设置过滤条件.
    例如 Name Constrain 输入几个字符, 点击find, 会把所有符合条件的项列到左侧Find 结果列表,点选你需要的那个,
    添加到右侧select 列表框. 点ok
  3. WaveForm 项, 设置时钟周期及占空比(高电平时间,低电平时间)

那个checkbox: Add this clock to the existing clock(no overwriting)
当然我们也明白它的意思. 就是说你勾选了它,就是添加一条,不勾选,就是覆盖旧的, 就只有这一条了.
点ok 保存就生成了一条约束语句.


丁. 生成位流文件


其实还是按照下列步骤一步一步的生成的.
Synthesize-> Device Map-> Place & Route-> Generate Bitstream 来产生位流文件。

合成->设备映射->布局布线->产生位流文件.
最后的位流文件后缀为.sbit

位流文件生成完成后,

关于下面的警告!!!
C: Bitstream-2001: SCBV has not been set. Please set SCBV value based on PCB board,
where is in configuration tab of bit stream options.

用bcompare 重磅跟踪了这个警告的产生和消除.
它要求你在对话框 Project Settings->Getnerate Bitstream->Configuration->Set Coonfiguration Bank Voltage(SCBV)
必需选择High Voltage 或者 Low Voltage 而不能选择none, 到底选那条要根据你的PCB 板具体连接了什么电压来决定.

查手册,这就是一个坑!!
当VCCIOCFG的电压是2.5V或者3.3V,该管脚必须接到高电平(可以直接接到VCCIOCFG)。
当VCCIOCFG的电压为1.8V或者更低时,该管脚必须接到低电平(可以直接接到地)。
注意:该管脚需与软件配合使用,即位流设置中 SCBV 的选择需与硬件设置一致!

就是说,你硬件VCCIOCFG连接了高电压或者低电压,需要通过该管脚告诉它.

而且我也检查了,当你修改了SCBV 设置,该改动只是保存在内存中,并没有保存在文件中.
但是如果你退出系统,它会把这个设置改动保存到.pds 项目文件中. 形如:
(_option scbv (_string “High Voltage”))

当你run Gererate Bitstream时
会采用下面命令.
gen_bit_stream -scbv {High Voltage}
操作过程及结果会记录到log 和 tcl 文件中


戊. 查看资源及信息


  1. 可以在 Report Summary 页面看到FPGA 「资源」的使用情况。
    Report Summary-> IO Summary->Resource Usage Summary.
    其它的选项也很重要, IO Summary 下的IO Report, Pinout Report 都应该关注一下.
    其它的 Compile, Synthesize, Device Map, Place & Route,Generate Bitstream正对应了我们的操作过程对应的输出文件及log过程.

  2. 查看原理图
    点击 tools->Schematic Viewer->RTL Schematic 可以生成 RTL Schematic 原理图
    还是很漂亮的.
    另外也能形成 Tech Schematic, 以后再研究.


己、下载


把位流文件.sbit 下载到FPGA 的ram 中运行

  1. 连接好jtag 烧录器.
    注: 当jtag 连接到pc 机时, PC 机会多出2个串行口来进行数据通讯.

  2. 单击主菜单的 Tools->Configuration按钮 会弹出配置对话框。

  3. 扫描设备和选择下载的文件
    单击scan-device 工具按钮, 对应着菜单File->scan device 开始进行jtag 设备扫描.
    有时候第一遍扫描不到结果,那就再试一遍就可以了。
    扫描到设备后会弹出 Assign New Configuration File 对话框, 要求输入.sbit位流文件
    Console 控制台也有扫描信息输出. 显示其执行过程
    填入.sbit 位流文件,会在Boundary Scan 项下添加一项,文件名也显示在右边的框图中,

  4. 下载
    「左侧显示了要加载的文件」,「选中右侧绿色的方块」,「右击会弹出下拉菜单」并选择"Program…",开始下载程序
    下载完成后在板上可以在开发板上看到 LED 流水灯的效果。
    注意:「这种方式程序是在 FPGA RAM中运行,掉电后会消失」。


庚. 固化


把sbit文件转化成.sfc文件再烧录到flash中,
每次上电从flash中加载程序到FPGA 的RAM,这样就不怕掉电了.
烧录flash的过程

  1. 文件格式转换
    在fabric configration 对话框中, //我们翻译成结构配置.
    选择 主菜单 Operations -> convert file
    这里要根据硬件的 flash 型号来选择 flash 的厂家和设备型号,
    开发板用到的是 WINBOND 的 W25Q128Q.(这个可以扫描到)
    所以厂家选WINBOND, 设备选W25Q128Q
    Flash Read Mode 选择 SPI X4
    然后选择要转换的 sbit 文件,点击 OK 即可转换;

  2. 选中器件右击,选择下拉菜单中的【Scan Outer Flash】,会找到外部flash型号,并弹出选择文件对话框.
    在弹出的界面中选择.sfc 文件,点击【Open】

  3. 右击【Outer Flash】,在下拉菜单中点击【Program…】等待固化完成.

验证: 掉电,再重新上电, 能看到流水灯运行. 不过你要等待它的初始化加载过程.


辛. 仿真


集成仿真就不介绍了,还是用第三方的modelsim软件仿真吧.


壬. view 菜单


重点介绍一下view 菜单,
点击菜单项可以看到视图上对应的功能项 或者tool上的功能项按钮的显示或消失
挨个点一点就知道了.
其中help 按钮对应了 Report Summary, Project Directory 的显示和消失

想做到得心应手,就是练习了.
不过软件响应还是挺慢的,不是太爽! 我用的是windows 下版本
所以,少在上面操作,除非要上板调试(下载和固化),否则还是找模拟环境吧.


原文地址:https://blog.csdn.net/hejinjing_tom_com/article/details/142875663

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!