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(' ...
随机推荐
- python word转pdf
原理 使用python win32 库 调用word底层vba,将word转成pdf 安装pywin32 pip install pywin32 python代码 from win32com.clie ...
- MySQL数据库优化方案
优化索引.SQL语句.分析慢查询: 设计数据表的时候,严格根据数据库的设计范式来设计数据库表: 使用缓存,把经常访问的又不经常更改的数据放到缓存中,能减少磁盘I/O: 优化硬盘,使用SSD,使用磁盘队 ...
- js导出excel表格并生成多sheet
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- chrome谷歌浏览器开发者工具-网络带宽控制
有时候我们想在本地测试一下图片预加载loading的加载情况,如下图: 可无奈一般网络带宽都比较好,基本上看不到效果,图片一下子就加载出来了, 可能这个时候有些小伙伴想到的办法是用定时器延迟加载 其实 ...
- win10下 anaconda 环境下python2和python3版本转换
在cmd的环境下,输入以下命令安装Python2.7的环境 conda create -n python27 python=2.7 anaconda 上面的代码创建了一个名为python27的pyth ...
- mac-os安装autojump
一 概念 autojump是一个命令行工具,它可以使用快捷命令,直接跳转到配置好的目录,而不用管现在身在何处,依赖zsh. 一 安装 安装zsh:sh -c "$(curl -fsSL ht ...
- MacBook IDEA激活码(附视频)
Windows激活请看这里:IDEA激活码 此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: idea官网下载地址:https://www.jetbrains.com/idea/ ...
- 【Python3爬虫】教你怎么利用免费代理搭建代理池
一.写在前面 有时候你的爬虫刚开始的时候可以正常运行,能够正常的爬取数据,但是过了一会,却出现了一个“403 Forbidden",或者是”您的IP访问频率太高“这样的提示,这就意味着你的I ...
- 8-Flink中的窗口
戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...
- 为什么要抛弃Pact?如何快速实现契约测试(CDC)
前言 在前几天的博客中,我转载了一篇文章,其中介绍了契约测试和pact是怎么实施的,的确很有帮助.但我经过研究,其实是pact本身也是有缺陷的,结合我近期在使用的服务型工具和我的实际情况,觉得实现契约 ...