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(' ...
随机推荐
- supervisord 备注
最近项目中使用了supervisord,简单做下备注. supervisord是linux下基于python开发的一个服务管理工具,类似之前node环境下的forever,用该方法启动进程后,supe ...
- CopyOnWriteArrayList源码解析
Java并发包提供了很多线程安全的集合,有了他们的存在,使得我们在多线程开发下,可以和单线程一样去编写代码,大大简化了多线程开发的难度,但是如果不知道其中的原理,可能会引发意想不到的问题,所以知道其中 ...
- 在linux(centos)系统安装nginx教程
最近在切换服务器操作系统,简单记录一下 一.安装nginx需要如下环境 1.gcc 编译依赖gcc环境,如果没有gcc环境,需要安装gcc yum install gcc-c++ 2.PCRE ...
- .NetCore 使用Cookie
1.首先我们在Startup下面的ConfigureServices中注册授权认证服务以及AddCookie services.AddAuthentication(CookieAuthenticati ...
- 五行Python代码教你用微信来控制电脑摄像头
如果说强大的标准库奠定了Python发展的基石,丰富的第三方库则是python不断发展的保证.今天就来通过itchart库来实现通过微信对电脑的一些操作. 一.安装库 安装itchat itchat ...
- 『练手』001 Laura.SqlForever架构基础(Laura.XtraFramework 的变迁)
001 Laura.SqlForever架构的基础(Laura.XtraFramework 的变迁之路) Laura.XtraFramework 到底是 做什么的? Laura.XtraFramewo ...
- bootsect及setup
BIOS和bootsect CPU加电即进入16位实模式 硬件逻辑设计为加电瞬间强行设置:CS=0xF000,IP=0xFFF0,CS:IP=0xFFFF0 而BIOS程序的入口地址即0xFFFF ...
- 一套代码小程序&Web&Native运行的探索06——组件系统
接上文:一套代码小程序&Web&Native运行的探索05——snabbdom 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tre ...
- 生产线平衡问题的+Leapms线性规划方法
知识点 第一类生产线平衡问题,第二类生产线平衡问题 整数线性规划模型,+Leapms模型,直接求解,CPLEX求解 装配生产线平衡问题 (The Assembly Line Balancing Pro ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...