gVim编辑器 模板篇
上文介绍了gVim的常用操作,这次总结一下我自己常用的模板。
安装和配置好gVim后,在Program Files (x86)\Vim目录下有个“_vimrc”文件,双击选择gVim软件打开,在里面添加模板就行了。如果做模板时就打开了一个.v文件,保存模板后,在那个.v文件中是无法马上使用刚刚添加的模板的,得关闭重新打开才行。模板格式如下:

“ 双引号是注释,相当于我们常用的 // 。:ab是命令。空格。sx1是模板的调出名称。空格。然后就是模板了。所以格式是 ab: 名称 模板,注意一下空格符。
编写模板程序时可以放心的打空格了。但是注意一点,这里不能按Enter键,如果要达到程序换行的目的,用<Enter>就行了。因为安装时配置好了Verilog的使用,所以模板里的程序被调出时会按Verilog语法自动对齐。但是我使用发现它对于if...else的辨别比较弱,最好加上begin...end。上文说过,如果你改变了gVim的默认编码方式,那么制作模板就不要出现中文,避免乱码现象。上图的模板在用gVim正常写代码时,输入sx1按Enter键即可出现模板,如下所示:

现在,总结一下自己使用的gVim模板,万一没了还可以来这里看看。
1.小分割,调出名称:xfg
/*------------------- -------------------*/
2.分割,调出名称:fg
//-----------------------------------------
3.注释,调出名称:zs
/*----------------------------------------- -----------------------------------------*/
4.标题,调出名称:bt
//***************************************** // // File Name : // Module Name : // Project Name : // Author : // Blogs : // Version : // Date : // // Copyright(c) 2018-2100 XXXX Corporation // All Rights Reserved // //*****************************************
5.时序1,调出名称:sx1
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
end
else if()begin
end
end
sx1
6.时序2,调出名称:sx2
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
end
else if()begin
end
else if()begin
end
end
sx2
7.时序3,调出名称:sx3
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
end
else if()begin
end
else if()begin
end
else if()begin
end
end
sx3
8.组合1,调出名称:zh1
always @(*)begin
if()begin
end
else begin
end
end
zh1
9.组合2,调出名称:zh2
always @(*)begin
if()begin
end
else if()begin
end
else begin
end
end
zh2
10.组合3,调出名称:zh3
always @(*)begin
if()begin
end
else if()begin
end
else if()begin
end
else begin
end
end
zh3
11.计数器1,调出名称:jsq1
] cnt ;
wire add_cnt ;
wire end_cnt ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt <= ;
end
else if(add_cnt)begin
if(end_cnt)
cnt <= ;
else
cnt <= cnt + ;
end
end
assign add_cnt = ;
;
jsq1
12.计数器2,调出名称:jsq2
] cnt0 ;
wire add_cnt0 ;
wire end_cnt0 ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt0 <= ;
end
else if(add_cnt0)begin
if(end_cnt0)
cnt0 <= ;
else
cnt0 <= cnt0 + ;
end
end
assign add_cnt0 = ;
;
] cnt1 ;
wire add_cnt1 ;
wire end_cnt1 ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt1 <= ;
end
else if(add_cnt1)begin
if(end_cnt1)
cnt1 <= ;
else
cnt1 <= cnt1 + ;
end
end
assign add_cnt1 = end_cnt0;
;
jsq2
13.计数器3,调出名称:jsq3
] cnt0 ;
wire add_cnt0 ;
wire end_cnt0 ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt0 <= ;
end
else if(add_cnt0)begin
if(end_cnt0)
cnt0 <= ;
else
cnt0 <= cnt0 + ;
end
end
assign add_cnt0 = ;
;
] cnt1 ;
wire add_cnt1 ;
wire end_cnt1 ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt1 <= ;
end
else if(add_cnt1)begin
if(end_cnt1)
cnt1 <= ;
else
cnt1 <= cnt1 + ;
end
end
assign add_cnt1 = end_cnt0;
;
] cnt2 ;
wire add_cnt2 ;
wire end_cnt2 ;
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
cnt2 <= ;
end
else if(add_cnt2)begin
if(end_cnt2)
cnt2 <= ;
else
cnt2 <= cnt2 + ;
end
end
assign add_cnt2 = end_cnt1;
;
jsq3
14.有限状态机,调出名称:fsm
//one-hot code for FSM
'b0001 ;
'b0010 ;
'b0100 ;
'b1000 ;
//FSM
:] state_c ;
:] state_n ;
wire id2s1_start ;
wire s12s2_start ;
wire s22s3_start ;
wire s32s1_start ;
//FSM
//-----------------------------------------
//always 1
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
state_c <= IDLE;
end
else begin
state_c <= state_n;
end
end
//always 2
always @(*)begin
case(state_c)
IDLE:begin
if(id2s1_start)begin
state_n = S1;
end
else begin
state_n = state_c;
end
end
S1:begin
if(s12s2_start)begin
state_n = S2;
end
else begin
state_n = state_c;
end
end
S2:begin
if(s22s3_start)begin
state_n = S3;
end
else begin
state_n = state_c;
end
end
S3:begin
if(s32s1_start)begin
state_n = S1;
end
else begin
state_n = state_c;
end
end
default:state_n = IDLE;
endcase
end
assign id2s1_start = state_c==IDLE && ;
assign s12s2_start = state_c==S1 && ;
assign s22s3_start = state_c==S2 && ;
assign s32s1_start = state_c==S3 && ;
//always 3
always @(posedge clk or negedge rst_n)begin
if(!rst_n)begin
end
else if()begin
end
end
fsm
15.同步fifo,调出名称:tbfifo
//FIFO
] wdata ;
wire rd_en ;
wire wr_en ;
wire empty ;
wire full ;
] usedw ;
] q ;
//FIFO instantiation
//-----------------------------------------
fifo_ipcore u1
(
.clock (clk ),
.data (wdata ),
.rdreq (rd_en ),
.wrreq (wr_en ),
.empty (empty ),
.full (full ),
.usedw (usedw ),
.q (q )
);
tbfifo
16.异步fifo,调出名称:ybfifo
//FIFO
] wdata ;
wire rd_en ;
wire wr_en ;
wire rdempty ;
wire wrempty ;
wire wrfull ;
wire rdfull ;
] rdusedw ;
] wrusedw ;
] q ;
//FIFO instantiation
//-----------------------------------------
fifo_ipcore u1
(
.rdclk (rd_clk ),
.wrclk (wr_clk ),
.data (wdata ),
.rdreq (rd_en ),
.wrreq (wr_en ),
.rdempty (rdempty ),
.wrempty (wrempty ),
.rdfull (rdfull ),
.wrfull (wrfull ),
.rdusedw (rdusedw ),
.wrusedw (wrusedw ),
.q (q )
);
ybfifo
17.module,调出名称:module
module module_name
(
input clk ,
input rst_n ,
] in ,
] out ,
);
//parameter
;
//signal
] a ;
] b ;
endmodule
module
18.top层,调出名称:top
module top_name
(
input clk ,
input rst_n ,
] in ,
] out ,
);
//parameter
;
//wire
//-----------------------------------------
] in ;
] out ;
//instantiation
//-----------------------------------------
module_name u0
(
.clk (clk ),
.rst_n (rst_n ),
.in (in ),
.out (out )
);
endmodule
top
19.testbench,调出名称:tb
`timescale 1ns/1ns
module tb_module_name;
//in and out
//-----------------------------------------
reg clk ;
reg rst_n ;
] in ;
] out ;
//test module
//-----------------------------------------
module_name u_module_name
(
.clk (clk ),
.rst_n (rst_n ),
.in (in ),
.out (out )
);
//parameter
//-----------------------------------------
;
;
//50M clock and reset
//-----------------------------------------
initial begin
clk = ;
forever
#(CYCLE/)
clk=~clk;
end
initial begin
rst_n = ;
#;
rst_n = ;
#(CYCLE*RST_TIME);
rst_n = ;
end
//input signal
//----------------------------------------------------
initial begin
#;
//initial value
in = ;
#(*CYCLE);
end
endmodule
tb
gVim编辑器 模板篇的更多相关文章
- gVim编辑器 操作篇
gVim是一款强大的编辑器,可以满足大部分语言的编程需要.尤其是其自带的模板定制功能对于Verilog来说非常受用.然而gVim有很多操作是不同于其他编辑器的,这让很多初学者望而却步,因此,本文将gV ...
- 10-C++远征之模板篇-学习笔记
C++远征之模板篇 将会学到的内容: 模板函数 & 模板类 -> 标准模板类 友元函数 & 友元类 静态数据成员 & 静态成员函数 运算符重载: 一切皆有可能 友元函数 ...
- 《深入浅出WPF》笔记——模板篇
原文:<深入浅出WPF>笔记--模板篇 我们通常说的模板是用来参照的,同样在WPF中,模板是用来作为制作控件的参照. 一.认识模板 1.1WPF菜鸟看模板 前面的记录有提过,控件主要是算法 ...
- GVIM与模板——让FPGA开发变得更简单
还在使用FPGA开发环境自带的代码编辑器?还在逐个字母敲击冗长重复的代码?明德扬至简设计法让你快速提高代码编写效率!利用GVIM这一高效的编辑工具并添加自定义模板,通过简短的脚本命令即可自动生成所有常 ...
- windows下git commit使用gvim编辑器
安装gvim 下载安装包:ftp://ftp.vim.org/pub/vim/pc/gvim80-586.exe 安装后将安装路径添加到环境变量Path中 设置编码支持中文 在安装路径下的_vimrc ...
- Unity3D使用经验总结 编辑器扩展篇
一个引擎,最重要的就是工具,工具除了提升开发速度,提供可视化操作环境以外,还带了容错功能. 它使得大家的工作局限在一定的范围内,比如一个变量的配置,或者是一些类型的选择. 使用编辑器,使得既使不太明白 ...
- ASP.NET MVC学习之模型模板篇
一.前言 如果你使用ASP.NET MVC制作后台一定会爱上它的EditorForModal.DisplayForModal和LabelForModal方法,因为这些方法可以将模型直接变成对应的标签, ...
- C++学习笔记之模板篇
title: C++学习笔记之模板篇 tags: c++,c,模板,vector,friend,static,运算符重载,标准模板 --- 一.模板 不管是函数模板还是类模板,在未初始化前都是不占用内 ...
- nodejs--(一)http模板篇
Nodejs http模块可以创建服务器应用实例,也能发送http请求 1.http.get(options[, callback]) 发送简单Get请求,并响应 var http=require(' ...
随机推荐
- MYSQL的group by笔记
对应的表数据如下 现在的需求是要找出dcid为9951,9957,9064共同拥有的good_code. 第一种方案是 SELECT a.good_code FROM ( SELECT good_co ...
- Java相关面试题总结+答案(三)
[多线程] 35. 并行和并发有什么区别? 并行:多个处理器或多核处理器同时处理多个任务.(是真正的物理上的同时发生) 并发:多个任务在同一个 CPU 核上,按细分的时间片轮流(交替)执行,从逻辑上来 ...
- Mysql事务开启方式(客户端+java手动+Spring Boot)
一:概念 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.举例 我们需要向数据库插入3条数据(我们希望这三条数据要么全部插入成功,要么全部失败), 比如第一条数据插入成功,插入第二条数据 ...
- Java基础知识回顾之五 ----- 多线程
前言 在上一篇文章中,回顾了Java的集合.而在本篇文章中主要介绍多线程的相关知识.主要介绍的知识点为线程的介绍.多线程的使用.以及在多线程中使用的一些方法. 线程和进程 线程 表示进程中负责程序执行 ...
- 从PRISM开始学WPF(四)Prism-Module-更新至Prism7.1
0x4Modules Modules是能够独立开发.测试.部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服 ...
- 粮草先行——Android折叠屏开发技术点(一)
最近有关折叠屏产品的新闻层出不穷,各家手机厂商也分别慢慢地亮出了自家的产品.然而市场上的一些APP仍然没有很好地适配这样的设备,显示不正常和应用重启的状况时有发生.因此,我会用接下来的几篇文章来点出有 ...
- Java 8中Stream API学习笔记
1)函数式编程的优势和劣势分别是什么?优势:①不可变性 ②并行操作 ③执行顺序更灵活 ④代码更加简洁纯粹的函数式编程,变量具有不可变性,同一个参数不会在不同场景下得出不同的结果,因此大大增强了系统的稳 ...
- JavaScript 是如何工作的:JavaScript 的内存模型
摘要: 从内存角度理解 let 和 const 的意义. 原文:JavaScript 是如何工作的:JavaScript 的内存模型 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 这 ...
- WOW.js 使用教程
官网加动画特效,哇哦,下面我介绍一下WOW.js 官网地址:https://www.delac.io/wow/ 点击github可以找到wow.js和wow.min.js 以及animate.css者 ...
- SpringAOP术语
2019-03-10/21:12:31 参考博客:MiroKlose AOP术语 1.通知: 通知定义了切面要完成的工作内容和何时完成工作,就是什么时候去做辅助功能,功能具体是什么代码 五种类型 Be ...