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(' ...
随机推荐
- Java引用详解-StrongReference SoftReference WeakReference PhantomReference
1 Java引用介绍 Java从1.2版本开始引入了4种引用,这4种引用的级别由高到低依次为: 强引用 > 软引用 > 弱引用 > 虚引用 ⑴强引用(StrongR ...
- 仓储repository概念
1.为什么要用仓储?(仓储有什么用) 1.1 解耦 为了解耦领域层与数据映射层的关系. 1.2 管理增删查改 仓储模式最大的优点就是所有的数据访问首先是通过仓库的,对仓库的增删改都不会立即提交到数据库 ...
- 在macos上基于python2.7安装PyQt5
在python3上面安装PyQt5是十分简单的,可是,在python2.7上安装这个东西,着实让人折腾了一把.要总结一下,年纪大了,记性不好. 首先要安装最新版的Qt和python2,命令如下: br ...
- .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
第1篇: 讲述了如何创造"缝". "缝"(seam)是需要知道的概念. 第2篇, 避免在构建对象时写出不易测试的代码. 第3篇, 依赖项和迪米特法则. 本文是 ...
- 浅谈SpringMVC执行过程
通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块, 其中,在Spring框架的Web模块中,又 ...
- MySQL高可用复制管理工具 —— Orchestrator使用
背景 在上一篇「MySQL高可用复制管理工具 —— Orchestrator介绍」中大致介绍了Orchestrator的功能.配置和部署,当然最详细的说明可以查阅官方文档.本文开始对Orchestra ...
- H5 可堆叠的圆环进度条,支持任意数量子进度条
by Conmajia SN: S22-W1M 由来 看到一篇帖子<vue实用组件--圆环百分比进度条>,让我想起了很多年前我在WinForm下仿制过的Chrome进度条. ▲ 原版进度条 ...
- go并发调度原理学习
aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQAAkACQAAD/4QB0RXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUAA
- 【转载】 Sqlserver限制最大占用内存
在Sqlserver数据库管理软件中,Sqlserver对系统内存的管理原则是:按需分配,并且分配完成后为了查询有更好的性能,并不会立即自动释放内存,数据取出后,还会一直占用着内存,所以在Sqlser ...
- MySql给表添加列和注释
1.给表添加列 ALTER TABLE supplier_seller ADD COLUMN company_id INT NULL COMMENT '供应主体id'; 默认情况下,添加的列会添加到最 ...