如何高效的编写Verilog HDL——进阶版
博主之前写过一篇文章来谈论如何高效的编写Verlog HDL——菜鸟版,在其中主要强调了使用Notepad++来编写Verilog HDL语言的便捷性,为什么说是菜鸟版呢,因为对于新手来说,在还没有熟悉软件和硬件描述语言的时候,使用Notepad++不需要学习成本,几分钟就能用好,利用其中一些功能,便能相对快捷高效的编写代码。很多人习惯了使用Notepad++,包括我在内。但是当我遇见了它——Vim。相对来说Vim就需要一段时间去适应学习,而且还要合理运用才能发挥出它的最大效率。
Vim其实一款Linux系统下常用的编辑器,在Windows下叫Gvim,由于它的高度可定制性,操作命令,使得编程者在编写代码的时候双手甚至可以不用离开键盘,只需要输入相应的命令便可以完成整个编程。可以说是程序员的最爱了。那么我这里为什么推荐使用Gvim来编写Verilog HDL呢,首先就是因为它的高度可定制性。
Gvim的配置文件是可以定制的,这样在写代码的时候,就可以使用简单的几个命令就可以减少大量劳动。比如,我们所编写的代码中其实基本上都是由always块构成的,一般来说我们都是写好一个always块后,然后粘贴复制其他的,那么用gvim,我只需要在插入模式(gvim默认是命令模式,按i进入插入模式,按esc进入命令模式)下,输入Shixu+回车,立马自动生成always块模板。
这是因为Vim的高度可定制性,你可以在Vim的配置文件里配置出任何需要的“快捷键”输入方法。比如我配置的键入Zhishi+回车,就可以直接生成我的专属代码注释信息,键入Fenge+回车,生成分割线等等,这是我写代码的习惯,而且用户完全可以自定义配置。
具体的配置方法,也很简单,打开安装目录下的_vimrc文件,这就是gvim的配置文件,具体的一些固定的配置参数,可自行百度,我这里只讲最简单的一种,只需要如下列各式编辑好文件,空格就直接空格,回车用<Enter>,:ab+命令+空格+代码,将编辑好的这段直接复制到_vimrc文件中,就可以使用了。
除了这些,gvim还有很多好用的命令,我这里简单列举几个在编写Verilog HDL时经常用的命令,真正要用好Vim博主也在学习中。
- 命令模式:键盘上所有的按键都是各种不同的操作命令。打开编辑器默认为命令模式
- 编辑模式:进行正常编辑,在命令模式下按i切换到编辑模式,按Esc切换到命令模式。
- 列操作模式ctrl+q
在命令模式下按ctrl+q进入列操作,将需要进行操作的代码选中按Ctrl+q,便可以对整列进行操作,操作完退出。
4. 补全命令Ctrl+p
在输入代码的前几个字符时,如果文件内,有和该代码相同的字符串,这时只需要直接按ctrl+p就会显示可自动补全。
5. 跳转命令
文件内跳转(gg,G,:100)。命令模式下,gg为跳到文件头,G为跳到文件未,:100为跳到100行。
6. 替换命令
替换命令(:%s/xx/yy/gc, :10,100s/xx/yy/gc)。在命令模式下,键入命令:%s/xx/yy/gc,意思为将xx替换成yy,命令:10,100s/xx/yy/gc表示将10到100行的xx替换成yy。
7. 列插入方法
进入命令模式,选中需要插入的位置,按ctrl+q进入列编辑,按hjkl分别表示上下左右操作,然后键入大写I,插入数据,按Esc,列插入操作完成。
等等。。
编辑器里编写代码后用软件自带编辑器打开后,可能会出现中文乱码,所以我建议不要用软件自带编辑器打开代码,直接用Gvim打开,当然Xilinx两款软件也提供了可关联各种第三方编辑器,博主都尝试关联成功,分享如下。
- ISE调用GVim编辑器
在ISE主界面菜单栏,点击Eidt——Preference,选择custom,然后在command line syntax输入如下命令行:{D:\Gvim安装路径\gvim.exe} --remote-tab-silent +$2 $1。括号里面是gvim安装的路径。
在VIM的安装目录下,有一个vimrc文件,打开以后,加上colorscheme darkblue这句话,就默认把颜色方案改成了darkblue。在后面加上下面两句话,可以解决有时候出现乱码的情况。
let &termencoding=&encoding
set fileencodings=utf-8,gbk,ucs-bom,cp936
注:colorscheme
darkblue是改变颜色显示方案,可加可不加,后面这两行是为了解决乱码
的,是必要要加的,加载文本末即可。
- Vivado调用GVim编辑器
打开vivado软件,选择菜单栏“Tools——>Setting…”,在弹出的对话框中,选择General选项卡,如图所示。选择Text
Editor栏目,选择“Custom Editor…”,如图中的所示。
点击上图中的…,在弹出的对话框中,输入“GVim安装目录/gvim.exe
[file name] [line number]”,如图所示。点击“OK”、“OK”完成gvim与vivado的关联。
Intel家的就算了,目前博主是Xilinx
Vivado的死忠粉。很多人都喜欢了使用其他几种第三方编辑器,我之前一直在使用notepad++,所以不管使用什么软件,只要能进行开发就好了。这里也只是提出建议而已。
最后欢迎关注一亿人都想要关注的微信订阅号【开源FPGA】,总结、记录自己的学习过程,一个FPGA工程师的养成之路。欢迎加入开源FPGA-交流群-I进行讨论,群号码:677163633。如果你想获得博主所用的gvim的配置文件,欢迎关注订阅号【开源FPGA】,后台回复“开源FPGA”即可获的哦。

转载请注明出处:NingHeChuan(宁河川)
个人微信订阅号:开源FPGA
如果你想及时收到个人撰写的博文推送,可以扫描左边二维码(或者长按识别二维码)关注个人微信订阅号
知乎ID:NingHeChuan
微博ID:NingHeChuan
原文地址:http://www.cnblogs.com/ninghechuan/p/8505942.html
如何高效的编写Verilog HDL——进阶版的更多相关文章
- 如何高效的编写Verlog HDL——菜鸟版
工欲善其事.必先利其器!要想高效的编写verilog没有一个好的编辑器可不行,所以我这里推荐两款十分好用的编辑器Notepad++和Gvim,这两款编辑器由于其强大的添加插件的功能,所以深受代码工作者 ...
- 浅谈Verilog HDL代码编写风格
消失了好久,没有写文章,也没有做笔记,因为最近再赶一个比赛,时间很紧,昨天周六终于结束了,所以趁着周末这会儿有时间,写点东西,记录下来.首先我学习FPGA才一年多,我知道自己没有资格谈论一些比较深层次 ...
- 自己动手写处理器之第二阶段(2)——Verilog HDL简单介绍
将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第六篇.我尽量每周四篇 2.3 Verilog HDL简单介绍 本书实现的OpenMIPS处理器是使用Verilog HDL编 ...
- 用Sublime Text搭建简易IDE编写Verilog代码
前言 Verilog是一种硬件描述语言(HDL),该语言在Windows上有集成开发环境可以使用,如ModelSim,但ModelSim的编辑器不太好用因此笔者萌生了用Sublime Text3来编写 ...
- 关于初次使用Verilog HDL语言需要懂的基本语法
关于初次使用Verilog HDL语言需要懂的基本语法 1.常量 数字表达式全面的描述方式为:<位宽><进制><数字> 8’b10101100,表示位宽为8的二进制 ...
- Verilog HDL基础语法讲解之模块代码基本结构
Verilog HDL基础语法讲解之模块代码基本结构 本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的 ...
- 写自己的第二级处理器(3)——Verilog HDL行为语句
我们会继续上传新书<自己动手写处理器>(未公布),今天是第七章,我每星期试试4 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包含有过程语句,过 ...
- 【Verilog HDL】赋值语句之阻塞赋值方式与非阻塞赋值方式
刚开始接触Verilog HDL语言时,这种硬件描述语言有一点与软件的程序设计语言直观上的最大区别大概就是这个赋值语句了(这里只是强调直观上的最大区别,事实上的最大区别并非如此). Verilog H ...
- Verilog HDL实用教程笔记
Verilog HDL实用教程笔记 DRC - Design Rule Check 几何规则检查ERC - Electrical Rule Check 电学规则检查自动参数提取LVS - Logic ...
随机推荐
- Servlet--传参和接参
OK,现在基本的Servlet接口和常用类都整理的差不多的,本篇博客开始整理Servlet和页面的交互. 1,接参 以下几个常用的方法: getParameter public String getP ...
- tomcat调优(三)
标签: linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 1.安全优化 降权启动 telnet管理端口保护 ajp连接端口保护 禁用管理端 关闭本地默认 ...
- java存放数据的5个地方
1.寄存器:最快的存储区,位于处理器内部,但是寄存器的数量极其有限,所以寄存器根据需求进行分配,你不 能直接控制,也不能在程序中感觉到寄存器存在的任何迹象.(C/C+允许向寄存器建议寄存器配, 但它不 ...
- form表单中get和post两种提交方式的区别
一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...
- Python学习笔记(一):列表和元组
1.列表和元组的主要区别在于:列表可以修改,元组则不能.即如果要根据要求添加元素,列表更适合, 如果出于某种原因,序列不能修改的时候,使用元组更为合适. 2.通用序列操作1)索引:正数索引时,p ...
- Mysql 查询重复的记录
我们都会使用distinct去除重复值,今天调试一个问题,业务需要查询出重复的数据,实现如下: 查询帖子的被哪些用户收藏,其中user_id,post_id可以唯一确定一条记录: 先使用post_id ...
- JMeter监控服务器CPU、内存的方法
jmeter也可以像loadrunner一样监控服务器CPU.内存等性能参数,不过需要安装一些插件 一.首先下载监控服务器的插件 链接:https://pan.baidu.com/s/1o9Zuw ...
- 洛谷 [P4011] 孤岛营救问题
状压+BFS 通过观察数据范围可知,我们应该状压钥匙种类,直接BFS即可 注意,一个点处可能不知有一把钥匙 #include <iostream> #include <cstdio& ...
- CodeChef Sereja and Game [DP 概率 博弈论]
https://www.codechef.com/problems/SEAGM 题意: n个数(可能存在相同的数),双方轮流取数.如果在一方选取之后,所有已选取数字的GCD变为1,则此方输.问:1 若 ...
- 用js脚本一键下载网页所有图片
年前这两天稍微闲一点了,琢磨了一点js脚本,功能是把当前网页页面上的所有图片一次性保存到本地,免得每次都要对图片右键保存. 测试环境:Chrome开发者模式下(启动Chrome,按F12即可) 测试网 ...