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(' ...
随机推荐
- Luogu P5284 [十二省联考2019]字符串问题
好难写的字符串+数据结构问题,写+调了一下午的说 首先理解题意后我们对问题进行转化,对于每个字符串我们用一个点来代表它们,其中\(A\)类串的点权为它们的长度,\(B\)类串的权值为\(0\) 这样我 ...
- dubbo源码研究(一)
1. dubbo源码研究(一) 1.1. dubbo启动加载过程 我们知道,现在流行注解方式,用spring管理服务,dubbo最常用的就是@Reference和@Service了,那么我首先找到这两 ...
- Hadoop系列003-Hadoop运行环境搭建
本人微信公众号,欢迎扫码关注! Hadoop运行环境搭建 1.虚拟机网络模式设置为NAT 2.克隆虚拟机 3.修改为静态ip 4. 修改主机名 5.关闭防火墙 1)查看防火墙开机启动状态 chkcon ...
- Jenkins高级用法 - Jenkinsfile 介绍及实战经验
系列目录 1.Jenkins 安装 2.Jenkins 集群 3.Jenkins 持续集成 - ASP.NET Core 持续集成(Docker&自由风格&Jenkinsfile) 4 ...
- 【朝花夕拾】Android性能篇之(八)ANR篇--草稿
1.ANR概念 2.ANR发生场景 Android开发者官网 上说到了两个原因:(1)点击按键或者触摸屏幕等输入事件在5s内没有响应:(2)10s内没有完成广播事件.如下所示: Android wil ...
- Vmware虚拟机中CentOS7与Docker安装图文教程
1.安装VMware 下载一个软件安装: 2.新建一个虚拟机 等待自动安装完成 配置系统语言: 配置系统时间: 配置系统键盘: 语言支持: 默认自动使用安装源: 配置软件环境,需要及时添加的软件,这里 ...
- .net core 使用IIS作为宿主Web服务器,部署常见问题
ASP.NET Core 使用IIS作为Web服务器,部署在IIS上 所做的步骤部署完毕后,启动网站 出现 An error occurred while starting the applicati ...
- 微软开发者大会:VS 2019 Preview 发布;Windows UX 主要技术开源
美国当地时间12月4日,微软正式举行 Microsoft Connect(); 2018 开发者大会,本次大会的 slogan 是"Build the apps of tomorrow, t ...
- K2制作流程
K2流程制作注意事项 1:分析需求 2:实施 步骤1:绘制流程图 步骤2:添加datafield[必备:ActJumped IsPass] 步骤3:添加线规则(如下图所示,在添加完毕规则之后,再给同 ...
- WebForm+一般处理程序+Ajax聊天
#### 很容易理解 插入数据 到数据库 在使用 setInterval() 读取数据 显示在 页面中 好了 不废话 直接上代码 不会的 可以加我 微信 Jth11163## 效果图片 ![在这里插入 ...