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 下版本
所以,少在上面操作,除非要上板调试(下载和固化),否则还是找模拟环境吧.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 下 cocos2d-x-3.17.2 VS2017开发环境搭建

1.下载cocos2d-x-3.17.2 源码: Cocos2d-x - 成熟、轻量、开放的跨平台解决方案 2.下载Python2 Python 2.7.0 Release | Python.org 加入环境变量: 测试版本

Flutter 第二篇

1、第一步 async: 2.4.0 audio_recorder: 1.0.2 2、点击右上角 更新 大部分红线没有了 卡在 3、运行在模拟器里面 Running Gradle task assembleDebug... 报错一&#xff1a; * Where: Build file /Users/guoxingdeng/AndroidStudioProjects/fltteraistock/android/app/b…

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

sql的调优指南及高级sql技巧

SQL调优是优化数据库性能的重要手段&#xff0c;涉及编写高效的SQL查询、合理设计索引、优化数据库结构等。以下是一些SQL调优指南和高级技巧&#xff1a; SQL调优指南 选择合适的查询方式&#xff1a; **避免使用SELECT ***&#xff1a;仅选择所需的列&#xff0c;减少数据传…

Zigbee2MQTT多控网关开发专题:【第一篇】系统配置与初始化

01 前言 本文章原文发表于我的微信公众号&#xff0c;请大家关注阅读&#xff0c;涉及的源代码等都在公众号&#xff0c;请搜索公众号&#xff1a; 智能家居NodeRed和HomeAssistant 即可关注。 02 概述 基于NodeRed的Zigbee2MQTT多功能多控网关开发专题正式开贴&#xff0c;…

Linux shellcheck工具

安装工具 通过linux yum源下载&#xff0c;可能因为yum源的问题找不到软件包&#xff0c;或者下载的软件包版本太旧。 ShellCheck的源代码托管在GitHub上(推荐下载方式)&#xff1a; GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts 对下…

关于不建议使用北京新网数码信息技术公司的服务器和虚拟机的说明(重要说明)

尊敬的用户们&#xff0c; 我们注意到了关于北京新网数码信息技术有限公司服务器和虚拟机服务的一些用户反馈&#xff0c;特别是关于虚拟机不支持根目录设置、免费查杀以及WAF防护效果的问题。此外&#xff0c;还有用户提到云主机的保护措施不到位&#xff0c;并且实际提供的防…

【selenium】webdriver测试脚本

【背景】 不同电脑上运行selenium时总是因为环境问题出幺蛾子&#xff0c;所以需要一个最简单的脚本每次先验证一下能不能正常启用selenium。 【脚本】 这个脚本做的事情就是试着用selenium启动网页&#xff0c;默认用了百度首页&#xff0c;也可以根据情况自己修改。 from…

VSCode搭建C/C++开发环境【Windows】

VSCode搭建C/C开发环境 1. 配置C/C开发环境1.1 下载和配置MinGW-w64编译器套件1.2 安装C/C插件 2. 在VSCode上编写C语言代码&#xff0c;并编译执行2.1 先打开一个文件夹&#xff0c;写一份C语言代码2.2 设置C/C编译的选项&#xff1a;c_cpp_properties.json2.3 创建执行任务&a…

Unity MVC框架1-2 实战分析

该课程资源来源于唐老狮&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity MVC框架演示 1-1 理论分析-CSDN博客 首先你需要知道什么mvc框架&#xff0c;并且对三个层级有个比较清晰的认识&#xff0c;当然不清楚也好&#xff0c;下面例子中将会十分细心地让你理解&#x…

光控资本:牛市一般维持多长时间?牛市的轮涨顺序是什么?

牛市继续多长时间没有一个统一标准&#xff0c;我们是无法判断牛市什么时候到来&#xff0c;什么时候结束的。以A股牛市前史为例&#xff0c;继续时间从几十天到几年的情况都有&#xff0c;是没有规则可循的&#xff0c;现在A股继续最久的一次牛市是862天。 纵观A股前史&#…

CGNS资料

CGNS数据文件 资料 CFD General Notation System CGNS Converters vtkCGNSReader cgnsToFromFoam Example Computer Codes 8.1.2. CGNS Mesh Format and Multizone Interface Connectivity 8 Multizone Interface Connectivity pyvista.cgnsreader CGNS for MATLAB and Octave…

【路径规划】创建末端执行器的路径,导入URDF模型,使用逆向运动学进行路径规划

摘要 本文通过路径规划为机器人末端执行器生成运动路径&#xff0c;采用URDF&#xff08;Unified Robot Description Format&#xff09;导入机器人模型&#xff0c;并结合逆向运动学进行路径规划和控制。使用Matlab进行建模和仿真&#xff0c;以确保执行器沿预定路径顺利运动…

API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码

前言 工具介绍 首先 comfyui你是少不了的&#xff0c;这个是工作流的后端支持&#xff0c;用这个去调试工作流和生成API可调用文件 前端我们就用很流行的gradio吧&#xff0c;什么你一时半会没有学gradio的计划&#xff0c;没事&#xff0c;笔者也没系统学过&#xff0c;我干…

Ubuntu18.04安装cuda11.1(出现c++版本问题)

一、概述 需要使用到ubuntu18.04进行cuda的配置&#xff0c;最新版本的cuda跟pytorch的版本不太适配&#xff0c;所以为了能够复现&#xff0c;我选择了一些老版本的cuda11&#xff0c;其使用的范围更加广泛。将自己 二、具体操作 &#xff08;一&#xff09;安装流程 1.官网…

[Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制

目录 一. 认识TCP协议的报头 1.TCP头部格式 2. TCP协议的特点 二. TCP如何封装与分用 TCP 报文封装与解包 如何封装解包&#xff0c;如何分用 分离有效载荷 隐含问题&#xff1a;TCP 与 UDP 报头的区别 封装和解包的逆向过程 如何分用 TCP 报文 如何通过端口号找到绑…

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5&#xff0c;传去服务器后&#xff0c;使用http访问一切正常。但是当开启了https&#xff08;SSL&#xff09;后&#xff0c;后台竟然无法登陆进去了。 输入账号密码后&#xff0c;点击登陆&#xff0c;跳转到/e/admin/ecmsadmin.php就变成页面一片…

多线程会在一个事务里面吗?

目录 多线程会在一个事务里面吗&#xff1f; 多线程、数据库事务以及数据库连接之间的关系 Spring的事务管理​​​​​​​ 声明式事务Transactional的实现原理 声明式事务Transactional的失效场景 Transactional注解的方法不是public为什么会失效 Spring AOP的代理机制…

【C++】——继承(下)

【C】——继承&#xff08;下&#xff09; 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数&#xff0c;但不是子类的友元函数。也就是说…

【C++】用红黑树模拟实现set与map

目录 一、红黑树的完善&#xff1a; 1、红黑树节点模版的修改&#xff1a; 2、仿函数在模拟实现中的应用&#xff1a; 3、新增迭代器&#xff1a; 4、红黑树中的迭代器实现&#xff1a; 二、set与map的模拟实现&#xff1a; 1、insert&#xff1a; 2、map的[ ]: 三、测…