【FPGA学习】(四)Sublime Text新建verilog代码模板

目录

原因

步骤

注意

示例模板

计数器模板

时序逻辑模板:

状态机模板:


原因

每次编写verilog代码时,总是要重用很多代码,虽然很多教程里给了相关的模板代码,比如一些相关的插件或者代码给了相关的模板,例如sublime默认的verilog自动补全不好用,不过提供了代码段这个功能,我们自己写个重用率高的代码段减轻工作量。但本人用起来或多或少的感觉不习惯不自在,所以我在Sublime Text3里面新建自己的verilog代码模板,实际使用起来非常方便。

步骤

1、第一步:新建基本模板

      这里在我的上一篇文章写过了,可以去看看    【FPGA学习】(三)Modelsim自动化仿真_洲洲不是州州的博客-CSDN博客

2、在sublime中选择添加新的snippet

3、保存文件后缀名为sublime-snippet,否则自动补全不生效;

注意

content中由CDATA包裹起来的部分是我们要插入的代码片段,可选。

tabTrigger是我们tab键触发的自动补全代码功能的一个名字,可选。
scope,可选,使用范围,不填写代表对所有文件有效。附:source.css和test.html分别对应不同文件。
description,可选,在snippet菜单中的显示说明(支持中文)。如果不定义,菜单则显示当前文件的文件名。


${1:this}表示代码插入后,光标所停留的位置,可同时插入多个。其中:this为自定义参数(可选)。
${2}表示代码插入后,按Tab键,光标会根据顺序跳转到相应位置(以此类推)。

示例模板

下面是我自己用的模板,大家可以参考

计数器模板

<snippet>
	<description>"计数器"</description>
	<content><![CDATA[
reg  [${4}:0]  ${1:cnt}     ;
wire           add_${1:cnt} ;
wire           end_${1:cnt} ;
always @(posedge clk or negedge rst_n) begin 
    if (rst_n == 1'b0) begin
        ${1:cnt} <= 'd0; 
    end
    else if(add_${1:cnt}) begin
        if(end_${1:cnt})
            ${1:cnt} <= 0;
        else
            ${1:cnt} <= ${1:cnt}+1 ;
   end
end
assign add_${1:cnt} = ${2};
assign end_${1:cnt} = add_${1:cnt}  && ${1:cnt} == (${3})-1 ;
]]></content>
	<tabTrigger>jsq</tabTrigger>
	<scope>source.verilog</scope>
</snippet>

时序逻辑模板:

<snippet>
	<description>"时序逻辑"</description>
	<content><![CDATA[
always @(posedge clk or negedge rst_n) begin
    if (rst_n == 1'b0) begin
        ${1:"复位变量"} <= 'd0; 
    end
	else if (${2}) begin
		
	end
	//else begin ... end?
end
]]></content>
	<tabTrigger>shixu</tabTrigger>
	<scope>source.verilog</scope>
</snippet>

状态机模板:

<snippet>
	<description>"状态机"</description>
	<content><![CDATA[
parameter 		${1:state1} 	= 5'b0_0001;//状态一(默认)
parameter 		${2:state2} 	= 5'b0_0010;//状态二
parameter 		${3:state3} 	= 5'b0_0100;//状态三
parameter 		${4:state4}     = 5'b0_1000;//状态四
parameter 		${5:state5} 	= 5'b1_0000;//状态五

//状态切换事件
always @(posedge clk or negedge  rst_n) begin
	if (rst_n == 1'b0) begin
		state <= ${1:state1};
	end
	else begin
		case (state)
			${1:state1} :begin
				if( )begin
					state <= ;
				end
				else if( ) begin
					state <= ;
				end
			end
			${2:state2} :begin
				if () begin
					state <= ;
				end
				else if () begin
					state <= ;
				end
			end
			${3:state3} : begin
				if( )begin
					state <= ;
				end 
				else if () begin
					state <= ;
				end
			end 
			${4:state4} :begin
				if () begin
					state <= ;
				end
				else if () begin
					state <= ;
				end
			end
			${5:state5} :begin
				if( )begin
					state <= ;
				end
				else if () begin
					state <= ;
				end
			end
		endcase
	end
end

//状态处理事件
always @(posedge clk or negedge rst_n) begin
	if (rst_n == 1'b0) begin

	end
	else begin
		case (state)
			${1:state1} :     	;
			${2:state2} :    	;
			${3:state3} : 		;
			${4:state4} : 		;
			${5:state5} : 		;
		endcase
	end
end
]]></content>
	<tabTrigger>ztj_FSM</tabTrigger>
	<scope>source.verilog</scope>
</snippet>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洲洲不是州州

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值