【杂谈】FPGA之路——Verilog与编辑器的那些事儿

前言

Verilog HDL,硬件描述语言的一种,以文本形式描述数字系统硬件的结构和行为的语言[1]。Verilog HDL和VHDL是世界上最流行的两种硬件描述语言。在硬件描述语言中是很流行,但在所有编程语言中,其长期在100名左右徘徊,在TIOBE 2019年2月的排行榜中甚至跌出了前100名,足见其有多小众。
Verilog


「 Verilog与Notepad++ 」

17年大学毕业后,从事FPGA开发相关工作,进入公司后,大家都用Notepad++,于是我也顺理成章的用上了Notepad++。Notepad++特别适合于Verilog的代码编写工作,因为Verilog不像其他编程语言,需要频繁的编译与调试,而且,一般Verilog的代码量不是特别大。前三个月,我用得很爽,但慢慢地,问题就来了。Notepad++除了支持Verilog语法高亮,除此之外只有基本的编辑功能。还是那句老话,磨刀不误砍柴工。不满足于现状的我,还是在因特内特上“疯狂”的寻找Notepad++与Verilog相关的插件,最终的结果不出意料的一无所获。
在这里,我仔细思考了一下,Verilog相关的插件为何如此之少的原因?主要有一下三点:

  • 使用Verilog这种语言的人很少,无论是FPGA开发还是芯片设计的从业人员,相比于互联网的程序员的数量,完全不在一个数量级上;
  • FPGA工程师号称“硬件工程师中的软件工程师”,在国内从事FPGA开发的技术人员绝大多数都是硬件出身,很少有软件出身的。插件编写需要很专业的软件功底,所以,这就尴尬了,会写插件的人不会去用Verilog,而会Verilog的人又都不会插件,同时,写Verilog的人很难有开源的思想;
  • 国外的情况不清楚,但无论哪一种编程语言,国内对插件开发这类的事情似乎并不太“热衷”;

在插件寻找之路上,我意外的发现Sublime Text3在这一方面明显强于Notepad++。

2019年2月28日写到这里,2020年4月4日才接上- -!


「 Verilog与Sublime Text3」

由于Notepad++对Verilog的支持实在太差,我转而使用Sublime Text3进行Code。Sublime Text3支持Verilog的插件明显比Notepad++多很多,17年底时开始在网上疯狂地搜索与Verilog相关的插件。这些插件都很强大和使用,具体可以参照以下的文章:

1.sublime3添加verilog自动补全代码段
2.sublime text 3在windows中配置ctags插件
3.使用模板加快编码效率(三)——sublime [更新]
4.Sublime Text 2 和 Verilog HDL
5.引用4的原创网页已经打不开了,这是备用链接
6.sublime text3 verilog代码编写高级操作篇

本以为可以和Sublime Text3一起孤独终老了,用了1个多月后,发现Sublime Text3相比于Notepad++依旧略显“笨重”。同时,各种插件有很多地方并不是完全适合我。由于笔者的前公司有各种编码规范,许多自动化的功能,还需要手动进行二次修改,这样似乎并不能带来太多的便捷。有时候还不如复制粘贴来得快。于是,就这样还是和Sublime Text3和平分手了。

近期看同事使用Sublime Text3,发现Sublime Text3编辑器有Python的API,那么只要掌握一点Pyhton的知识,就可以自己制作专属于自己的插件了。用Python去制作插件,学些成本相当较低。


「 Verilog与VS Code」

VS Code 是15年发布的,我第一次接触大概是16年的时候,不由的想起那个时候我还在画CAD --!。17年差不多偶尔使用VS Code写点Markdown,18年写Python。但时至2020年3月之前,我从未用VS Code进行过Verilog的Code。原因主要在于,17年接触VS Code时,那时VS Code商店里与verilog/systemverilog相关插件的数量用一只手就可以数过来(欲哭无泪),同时很多功能不够完善,网上更加找不到相关的帖子。但那时,我就知道有一天VS Code会变得足够强大。等到那个时候,我会选择使用VS Code的。我于2020年4月3日切到VS Code上进行Code。此至今日(2020年4月4日),VS Code上的HDL语言相关的插件已经很强大了。
后续,我会写一些关于VS CODE的Verilog环境搭建的教程


「 Verilog与Vim」

Vim又是一个小插曲,前同事中有VIM大佬,看大佬用VIM写verilog,简直出神入化。我于2018年4月12日在JD购得一本《Vim使用技巧(第2版)》[英] Drew Neil著。不到3周,我便放弃了。。。

2021年8月15日
近期,因为一些工作的原因不得不适用GVIM,在没有办法的情况下,适用两周后发现回不来了。VIM天生就是针对编辑开发的,每个按键都是与编辑相关的快捷键。因为这个原因,VIM是众多编辑器中编辑代码效率最高的。
于是,选择了在VSCODE上安装VIM的插件,在按“i”进入编辑模块后,基本和原来的VSCODE的编辑环境相同。进一步提高了编辑效率,双手不适用鼠标的感觉真的很爽。


「 重拾旧爱Notepad++」

最终选用Notepad++,其一是因为轻量化。但是,我也发现当Notepad++在工作区打开太多文件夹时,也会存在各种卡顿的问题。

其二,是因为我找到了Notepad++的Python接口。可以通过Python脚本进行各种定制化操作,达到和插件一样的效果,用起来也很爽。
目前,我实现了自己定制的自动端口例化和自动声明,具体使用方法可以参考我的Github库:Notepad_plugins_for_verilog。(由于很多插件是在公司写的,前公司的东西都带不出来,后续写插件一定要在家里进行。–!)


「 打造专属的编辑器」

待更新。。。

VSCode配置Verilog/SystemVerilog开发环境(一)概述
VSCode配置Verilog/SystemVerilog开发环境(二)插件安装
VSCode配置Verilog/SystemVerilog开发环境(三)插件配置
VSCode配置Verilog/SystemVerilog开发环境(四)常用操作
VSCode配置Verilog/SystemVerilog开发环境(五)插件制作


「 神之编辑器-Emacs」

2021年8月15日
使用emacs,仅仅是因为需要使用org-mode。近期越发觉得,自己有必要梳理一下自己的知识体系,过去三年多的时间,学习过很多东西,虽然也做过很多笔记,但是并没有完全归纳整理好。在使用过众多的笔记软件后,如:ONENOTE、edairy、Mybase、以及众多的Markdown软件,并没有找到一个很全面的工具,每一个都有各自的缺点,但始终不能在一个软件上搞定的所有事。于是乎,知乎查了一下,“大家都使用什么软件记录科学性的笔记?”,最多的推荐便是EMACS的org-mode。
在简单使用后发现,org-mode是可以完全取代Markdwon的,并可扩展性很强。必要时,可以自行扩展自己需要的功能。于是决定,后续使用org-mode进行笔记的整理。但深入了解后,发现emcas的学习曲线比VIM还陡峭。:)但还是决定使用org-mode进行笔记记录,主要有以下几点原因:

  • 可以完全取代Markdwon;
  • 支持导出Latex、Markdown、HTML等,便于输出;
  • 表格功能很丰富,支持函数计算等;
  • 插入代码段之后,支持直接运行并返回结果。这个在我写详设时,就不用开计算器了;
  • TAG功能,知识的非线性整理;

「 历经磨难“终得利器」


1.Verilog HDL之百度百科:https://baike.baidu.com/item/Verilog%20HDL/596353?fr=aladdin
2.VIM:https://www.vim.org/
3.Python Script:https://github.com/bruderstein/PythonScript/releases
4.Notepad++ Python Script下载链接:http://npppythonscript.sourceforge.net/

  • 21
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FPGA是一种可编程逻辑器件,可以通过编程实现各种功能。而Verilog是一种硬件描述语言,用于描述FPGA中的电路。Verilog基础语法包括模块定义、端口定义、信号定义、赋值语句、条件语句、循环语句等。模块定义是Verilog中最基本的语法,用于定义一个电路模块。端口定义用于定义模块的输入输出端口。信号定义用于定义模块内部的信号。赋值语句用于给信号赋值。条件语句用于根据条件执行不同的代码。循环语句用于重复执行一段代码。掌握Verilog基础语法是学习FPGA编程的基础。 ### 回答2: FPGA是一种可编程逻辑器件,它可以通过硬件描述语言来编写自定义的逻辑电路来实现各种功能。其中,Verilog是一种常用的硬件描述语言,有助于实现FPGA的功能。 Verilog语言主要由模块、端口、信号、语句和运算符五个基本部分组成。模块是Verilog中的最基本的语法单元,类似于传统程序语言中的函数,模块之间可以通过实例化进行连接。端口则是与外部世界进行通信的接口,可以分为输入端口(input)和输出端口(output)两种类型。信号是Verilog中表示数字信号的基本单元,可以是位向量、整数或实数。语句则是Verilog中描述操作和行为的语言,常用的语句包括赋值语句、分支语句和循环语句。运算符则是Verilog中用于进行操作的符号,包括算数运算符、逻辑运算符和位运算符。 在Verilog语言中,还有一些常用的结构体和命令可以帮助我们更方便地实现FPGA的功能。其中,常用的结构体包括always语句、case语句和module归档,常用的命令包括initial语句、wire语句和reg语句。always语句可以在指定的触发条件下执行某一段代码,case语句可以根据不同的条件执行不同的代码段,module归档则可以将多个模块合并为一个模块。initial语句可用于在仿真开始前初始化某些信号,wire语句则用于声明并连接信号,reg语句则用于声明并存储信号。 总体而言,了解FPGAVerilog基础语法可以帮助我们更好地理解FPGA技术的应用和实现。然而,理论知识只有结合实际操作和实验才能更好地掌握。所以,我们还需要结合实际项目来进行练习和实践,从而更好地掌握FPGAVerilog基础语法。 ### 回答3: FPGA(可编程门阵列)是一种可编程逻辑器件,可以用来创建定制的数字电路。Verilog是一种硬件描述语言,用于描述数字电路的结构和行为。 Verilog基础语法有以下几个部分: 1.模块定义:Verilog代码以模块的形式进行组织,每个模块都有一个名称和端口列表。模块定义以module关键字开始,以endmodule关键字结束。 2.端口声明:模块的端口是输入和输出连接到其他模块或FPGA芯片的引脚。端口可以是输入(input)、输出(output)或双向(inout)。端口声明在模块定义中。 3.信号声明:信号是描述数字电路中状态的变量。可以是单个位(wire)或多位(reg),在模块中声明。 4.赋值语句:用来为信号赋值,包括非阻塞赋值(<=)、阻塞赋值(=)和连续赋值(assign)。 5.条件分支语句:if, else if和else语句是用来控制程序流程,实现条件判断。 6.循环语句:Verilog支持for、while、do while和forever等类型的循环语句,可以在程序中实现迭代操作。 7.模块实例化:用来将其他模块作为子模块嵌入到当前模块中,从而实现复杂的数字电路。 除上述基本语法外,Verilog还有其他常用语法,如always块、initial块和function定义等。需要深入了解和使用Verilog,可以参考相关资料和教程。掌握了Verilog语法,可以使用FPGA搭建各种个性化的数字电路,用于嵌入式系统、数字信号处理、计算机网络等各种应用领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值