FPGA编程神器,亲测好用,非常舒适!_fpga助手-程序员宅基地

技术标签: 生产力工具  自动生成状态机  fpga开发  自动例化  verilog语法检查  VScode  

今天给大家安利一款免费的FPGA编程神器,名为Digital IDE 。你能想到的功能他都具备,你想不到的功能他也具备。如何使用见文末。

功能大全

标★的是我认为非常棒的功能,并且是一般工具所不具备的。

语言支持

  • 语言高亮
  • 文件标志
  • 定义跳转
  • 悬停提示
  • 工程结构
  • 语法诊断
  • 自动格式
  • 自动补全
  • 语言翻译
  • 快速例化
  • 状态转移图自动生成

仿真功能

  • 自动生成test bench

  • vivado快速仿真

  • iverilog快速仿真

支持常见功能库

vivado开发辅助

ZYNQ开发辅助


功能介绍

语言支持

提供前端代码设计所需的基本语言服务

语言高亮

语言高亮.png
现支持以下语言的高亮

  • Verilog
  • SystemVerilog
  • VHDL
  • TCL (包括xdc、sdc、fdc约束文件)
语法诊断

语法诊断.png
语法诊断使用的是外部编译器,因此在setting中配置对应的诊断设置之前请配置好相应的环境。

该语法诊断可以针对不同的语言类型灵活使用不同的诊断器

在该功能中默认使用的是vivado系列,可以根据已有环境搭配不同的诊断组合,但当选择default时则认为关闭诊断

  • 针对 verilog 以及 systemverilog

    HDL.linting.vlog.linter 支持的有:

    1. vivado
    2. modelsim
    3. iverilog
    4. verilator
    5. verible
  • 针对 vhdl

    HDL.linting.vhdl.linter 支持的有:

    1. vivado系列
    2. modelsim系列
    3. ghdl

针对自动语法检查导致不太好的编码体验,设置了两种触发检查的模式。运行模式在设置中 HDL.linting.mode 可进行更改,默认为auto模式,自动触发,即在打开文件和保存文件时触发语法检查功能。还有一种为手动触发的manual模式,在所需要的检查的文件页面上右击,选择 syntax check 即可对当前文件进行语法检查。

文件标志

文件标志.png

悬停提示

主要提示的内容为当前文件内定义的数据类型以及例化模块的相关信息。

悬停提示.png
【注】:悬停提示使用的是内置的vlog和vhdl解析器,目前暂时只支持简单的悬停提示

自动补全

自动补全.png
【注】:目前自动补全只支持在verilog和systemverilog中例化模块里进行端口参数例化时的补全

定义跳转

动图封面
定义跳转.gif

工程结构

工程结构,以层级关系显示出HDL文件之间包含与被包含关系,单击后可打开对应的文件。

工程结构

自动格式化

可以对选中的字符或者全文进行文档的格式化 vscode自带快捷键打开方式:shift + alt + f

动图封面
自动格式化.gif
相关设置(setting)说明:

  • verilog and systemverilog
  1. HDL.formatter.vlog.default.style

    verilog 和 systemverilog格式化类型,支持三种类型 kransigun

  2. HDL.formatter.vlog.default.args

    其他参数输入,vlog的格式化使用的是istyle的webassembly因此要输入的参数请参考istyle

    【注】:由于该功能是基于istyle来实现的因此对全文格式化依旧不是很完善,建议选中always语句块来进行格式化,后期会持续修复相关问题。

  • vhdl
  1. HDL.formatter.vhdl.default.align-comments

    是否需要对齐注释

  2. HDL.formatter.vhdl.default.indentation

    tab所对应的空格数量

vhdl转Verilog翻译

目前只支持vhdl转Verilog的翻译功能具体使用办法见如下gif:

动图封面
vhdl转Verilog翻译

状态机预览

状态机预览

仿真功能

生成tb并例化

步骤如下:

  1. 使用快捷键F1启动命令框,输入 Testbench, 选择TOOL : Testbench, 或者在需要生成并例化的文件下右击选择Testbench。
  2. 选择仿真文件的类型以及需要存储的位置,如果存在直接替换即可。

【注】: 如果想要更改初始的testbench file的内容则使用快捷键F1启动命令框,选择TOOL : Overwrite the template of testbench,选择要更改的仿真文件的类型,这时会打开testbench file的初始化文件在此基础上更改保存即可。此外请保留 //Instance 标志,该标志是用于识别需要例化的位置。

该功能不是很建议使用,直接在tb文件中使用instance指令生成更方便。

后期会考虑tb文件与例化模块间的智能连线。

自动例化

动图封面
自动例化.gif

该插件支持在Verilog文件中例化Verilog和vhdl模块,同时支持在vhdl文件中例化Verilog和vhdl模块 步骤如下:

  1. 将光标放置在文本需要例化处。
  2. 使用快捷键F1启动命令框,输入instance,选择Tool.instance。
  3. 输入需要例化的模块的关键字。
  4. 选择需要例化的模块。

或者是使用快捷键 Alt + I 进行启动,再输入需要例化的模块的关键字,选择需要例化的模块。

【注】:在使用快捷键时其检查是否快捷键键冲突。

iverilog快速仿真

在0.1.18版本之后优化设计支持 include 设计

iverilog快速仿真

  1. 自带多文件仿真,无需 `include

  2. 支持xilinx仿真库

    • 在setting中的 SIM.Xilinx.LIB.path 设置xilinx的安装路径
    • 例:{xilinx安装路径}/Vivado/<版本号,例如18.3>/data/verilog/src

【注】:此功能需要iverilog和gtkwave均加入系统环境变量

modelsim快速仿真
Verilator快速仿真

常见功能库

IP_REPO

使用方式:

property.json文件中配置如下属性

"IP_REPO": [
    "arm", // 包含ip CM3DbgAXI & DAPLink_to_Arty_shield
    "adi"  // 包含 adi 公司下所有器件ip,已去除所包含的绝对路径 取自 adi2019_r1
],
Extension HDL Lib

该扩展自带HDL功能库链接功能,在后端调用时,会自动加HDL库文件添加到后端工程中。

使用方式:

property.json文件中配置如下:

"HardwareLIB": {
     
    "State": "virtual",
    "Common" : [ 
        "Math/Cordic.v",
        "Math/Cordic.v"
        // ...
    ],
    "Customer" : [ 
        "Relative path"
        // ...
    ]
},

State 属性代表是加载到本地工作区还是作为远程进行链接。

  • virtual 代表从远程虚拟包含,可以打开并更改,更改之后下次导入就是更改之后的代码。
  • real 代表将远程文件导入到该工程本地,放置到 HardwareSrc 下的lib中,此时更改不会影响库中的代码。
    • 【注】:当从 real 改回 virtual 时lib文件夹会被删除,请注意。

Common 属性代表插件自带的常见HDL功能库,该库的代码不太成熟,仅供参考。

【注】:当输入的是文件夹时则包含该文件夹下所有的文件。此外不建议直接更改该库中的代码,更改之后再在下一次插件更新之后会被重新覆盖,请慎重。目前已经经过仿真测试的lib路径如下

  • Soc
  • Math/Cordic.v
  • Math/Sort3.v
  • Math/Sqrt.v
  • Malloc/RAM/Shift_RAM
  • Apply/DSP/Advance/Communicate/Modulate
  • Apply/DSP/Base/DDS
  • Apply/Image (需要包含 Sort3, Sqrt, Shift_RAM)

Xilinx_lib 属性代表插件自带的Xilinx HDL功能库,主要是xilinx专用原语的调用,仅供参考。

【注】:当输入的是文件夹时则包含该文件夹下所有的文件。此外不建议直接更改该库中的代码,更改之后再在下一次插件更新之后会被重新覆盖,请慎重。目前已经经过测试的lib路径如下

  • CLK/CLK_Global.v

Customer 属性代表用户自定义HDL功能库。

【注】:当输入的是文件夹时则包含该文件夹下所有的文件。该属性的使用需要对setting下的PRJ.customer.Lib.repo.path进行配置用户自定义库的根目录,在配置完成之后再在Customer 属性下配置相对路径,要求 PRJ.customer.Lib.repo.path/Customer 能够组成该文件(夹)的绝对路径。

以上功能在实际使用中由于缺少自动补全使用时确实有点麻烦,但json下好像不支持自动补全暂时还不知道原因。

后端开发辅助功能

【注】:目前只支持在标准文件结构下的工程搭建。

启动方式

数字前端辅助功能是安装后即可使用,内置 Verilog 和 vhdl 的简单解析器,vhdl的支持后续有时间会完善。

数字后端辅助设计需要配置对应厂商的开发环境,相比于之前版本增加的功能不是很多,后期会继续补充。 现有支持vivado的辅助设计,使用方式如下:

  • 步骤一:如果是新建工程则需要生成property文件,注明工程的相关配置 使用快捷键 ctrl+shfit+p/F1 打开命令框,输入 **generate property file** 来自动生成

    【注】: - 生成后进行配置,只有在保存后才会自动生成对应的文件结构。 - 通过使用快捷键 ctrl+shfit+p/F1 打开命令框,输入 overwrite 选择 Overwrite the InitPropertyParam 来改写默认的工程配置

  • 步骤二:启动方式如下:

    1. 使用快捷键 ctrl+shfit+p/F1 打开命令框,输入 launch 选择 **FPGA:Launch** 来启动
    2. 使用快捷键 Alt+z 打开启动命令
    3. 从功能框中点击FPGA OPTIONS下的 Launch

【注】:在设置Soc为非none时,文件结构会被更改,在文件结构更改的时候如果从有soc结构改回none,文件夹Software会被强制删除,如有重要文件请妥善保存!!!!!

通用功能使用说明

  1. Launch 功能,开启后端功能以 property.json 文件中配置的 TOOL_CHAIN 属性为准。目前只支持vivado。launch之后会根据 property.json 文件信息生成相应的工程。如果已经有工程的会直接打开vivado的gui界面。

    1. launch之后在HDL文件中右键选择 Set as Top 时会将该文件在vivado中设置为设计的顶层头文件。
    2. launch之后其他功能才会有效。
  2. Simulate 功能,与在HDL文件中右键显示的simulate不同,该功能使用的是 property.json 文件中配置的 TOOL_CHAIN 属性所对应的仿真功能,即vivado自带仿真,而在其他地方打开的simulate则使用的是第三方仿真工具,用于对单个文件或者少量文件进行实时快速仿真。(目前仅iverilog)

    1. 在HDL文件中右键选择 Set as Testbench Top 时会将该文件设置为仿真的顶层头文件。
    2. 若仿真成功则会直接打开vivado的gui界面,显示仿真数据与波形。
    3. 若仿真失败则会在output栏输出错误日志。
  3. Refresh 功能,更新xilinx工程下所包含的文件,因为包含的形式是全包含

    1. 包含的内容如下:
      1. 刷新 ip_repo_paths
      2. HardwareSrcHardwareSim 下的所有HDL文件
      3. HardwareSrc 同级目录下bd和ip文件夹以及 PRJ_Path 中的所有 bd/ip 设计文件
      4. lib远程链接的文件,即 HardwareLIB 下配置的文件 (当HardwareLIB.State = "virtual")
      5. HardwareData 下的约束文件
    2. 若单个增删某个文件只要将其在工作区下增删,扩展会自动添加到vivado中无需重新refresh
  4. Build 功能,完成综合,布局布线,你可以在 property.json 下的 enableShowlog 里选择是否将日志在终端中输出。

    1. enableShowlog 为true时只有当出现 CRITICAL WARNING & ERROR 时才会弹出output栏,并只输出错误与严重警告日志。
    2. Build 功能下还细分 synth、impl、bitstream 这三个小阶段的功能。
  5. Program 功能,一键下载。只是下载暂时不支持固化。

  6. GUI 功能,如果需要IP设计,功能时序仿真或者bd设计时选择 GUI ,之后就会自动打开图形界面。

    【注】

    1. 打开GUI后,打开对应工程的vscode,以及对应的 HardWare 运行终端不能人为删除,删除后整个vivado的gui界面会自动关闭,若不保存则可能会导致设计丢失。
    2. 如果直接关闭vivado的gui界面或者删除*HardWare* 运行终端则不会将 PRJ_Path 文件夹下的IP和bd设计文件移动HardwareSrc 的同级目录下。虽然不会产生什么影响但分散的设计不方便管理,所以建议使用功能栏 FPGA OPTIONS 中的 Exit 进行退出。
    3. 功能栏 TOOL 中选择 Clean 时也会将工程中的IP和bd设计文件进行移动到HardwareSrc 的同级目录下,同时将整个工程进行删除。

【注】:SDK相关功能还不完善后续准备开放,用于替代xilinx的SDK,彻底解决xilinx SDK使用卡顿问题。

vivado开发辅助

由于目前只支持vivado的相关功能,因此对于vivado开发辅助见通用功能使用说明即可。 【注】:对于property.json文件中的 Device 属性目前已有的如下:

  • xc7z020clg400-2
  • xc7a35tftg256-1
  • xc7a35tcsg324-1
  • xc7z035ffg676-2
  • xc7z020clg484-1

但支持的器件并不仅限于此,理论上可以支持vivado所能支持的所有器件,你可以直接将你的器件直接写在 Device 属性下,也可以将你的器件通过 FPGA:Add devices to the database 命令将其添加到数据库中,也可以通过 FPGA:Remove the device from the database 将其从数据库中删除。

quartus开发辅助

icestorm开发辅助

soc开发辅助

ZYNQ开发辅助

针对 Zynq 器件在新建工程时可以通过配置bd file来快速搭建想要的Zynq平台。具体 property.json 配置如下

"SOC_MODE": {
     
    "soc": "ps7_cortexa9_0",
    "bd_file": "zynq_default"
}

RISC开发辅助

Cortex-M开发辅助

调试开发辅助

Schematic Viewer

插件使用 yosys 0.10 版本的内核(开源的yosysjs为0.5版本)进行指定工程的综合(可全平台运行),并展示综合后的网络图

netlist

该功能目前处于测试阶段,支持 include 以及多文件工程。

使用方式

  1. 点击右上角的图标进行面板的创建
  2. 或者在project structure中选择需要显示的模块,或者在文件中右击选择 show netlist


如何获取上述功能

只需两步即可具备大部分功能:

  • step1:安装VScode
  • step2:在VScode中安装Digital IDE插件

转载自:Digital IDE (FPGA Develop Support) 开发手册-version0.1.22
更详细的使用可以从链接中的原文或者git上找:
https://github.com/Bestduan/fpga_support_plug

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lightninghenry/article/details/130295607

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf

推荐文章

热门文章

相关标签