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(' ...
随机推荐
- js设置回车键触发事件
设置按回车键时触发查询事件: document.onkeydown = function(e){ var ev = document.all ? window.event : e; if(ev.key ...
- 在asp.net core2.1中添加中间件以扩展Swashbuckle.AspNetCore3.0支持简单的文档访问权限控制
Swashbuckle.AspNetCore3.0 介绍 一个使用 ASP.NET Core 构建的 API 的 Swagger 工具.直接从您的路由,控制器和模型生成漂亮的 API 文档,包括用于探 ...
- Linux文件系统类型和区别
文件系统EXT3,EXT4和XFS的区别: 1. EXT3 (1)最多只能支持32TB的文件系统和2TB的文件,实际只能容纳2TB的文件系统和16GB的文件 (2)Ext3目前只支持32000个子目录 ...
- 6. VIM 系列 - 全局搜索(ctrlsf.vim)
目录 全局搜索利器 ag.vim 更强大的全局搜索利器 ctrlsf.vim 全局搜索利器 ag.vim 终端上安装ag: sudo apt install silversearcher-ag vim ...
- [JLOI2016] 成绩比较
推石子 首先设\(d[i]=\sum_{t=1}^{U[i]}t^{n-R[i]}(U[i]-t)^{R[i]-1}\),即第\(i\)门课程分数的合法分布方案数: 然后设\(f[i,j]\)表示前\ ...
- python接口自动化(七)--状态码详解对照表(详解)
简介 我们为啥要了解状态码,从它的作用,就不言而喻了.如果不了解,我们就会像个无头苍蝇,横冲直撞.遇到问题也不知道从何处入手,就是想找别人帮忙,也不知道是找前端还是后端的工程师. 状态码的作用是:we ...
- springBoot(13)---整合Druid实现多数据源和可视化监控
SpringBoot整合Druid实现多数据源和可视化监控 先献上github代码地址:https://github.com/yudiandemingzi/springboot-manydatasou ...
- 利用GitLab webhook来实现触发Jenkins自动操作
本文针对如何设置GitLab以及Jenkins,实现每次GitLab上有提交事件的时候,都能触发Jenkins执行相应的操作,主要分为以下几个步骤: 1.新建GitLab测试用例 进入个人GitLab ...
- webpack初探 - (一)
什么webpack webpack是一个模块打包器.webpack把模块连同它的依赖一起打包生成包含这些模块的静态资源. 安装 在使用webpack时,建议不要把webpack安装到全局,如果多个项目 ...
- 值得一看的35个Redis常用问题总结
1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...