还在利用FPGA开发条件自带的代码编辑器,  还在选择FPGA开发环境自带的代码编辑器

  还在使用FPGA开发条件自带的代码编辑器?还在逐个字母敲击冗长重复的代码?明德扬至简设计法让您快捷增加代码编写功能!利用GVIM这一神速的编撰工具并添加自定义模板,通过简单的台本命令即可自动生成所有常用的逻辑块。

  还在利用FPGA开发环境自带的代码编辑器?还在逐个假名敲击冗长重复的代码?明德扬至简设计法让你急忙升高代码编写效用!利用GVIM这一高效的编辑工具并添加自定义模板,通过简单的本子命令即可自动生成所有常用的逻辑块。

  先来说说WIN系统下VIVADO和quartusII绑定GVIM作为默许代码编辑器的主意:

  先来说说WIN系统下VIVADO和quartusII绑定GVIM作为默许代码编辑器的艺术:

1 VIVADO:IDE上方主菜单栏Tools
->Options ,选拔General项,点击Text
Editor左侧“…”按钮。在弹出的Custom Editor Definition
下方的Editor空白内填写xxx /gvim.exe [file name] :[line number]
按下OK退出即可。其中xxx为GVIM软件设置路径。

1 VIVADO:IDE上方主菜单栏Tools
->Options ,选择General项,点击Text
Editor左边“…”按钮。在弹出的Custom Editor Definition
下方的Editor空白内填写xxx /gvim.exe [file name] :[line number]
按下OK退出即可。其中xxx为GVIM软件设置路径。

图片 1图片 2

图片 3图片 4

图片 5

图片 6

2 quartusII:同样拔取菜单栏中Tools
->Options  

2 quartusII:同样选用菜单栏中Tools
->Options  

图片 7

图片 8

   选取左侧的Preferred Text
Editor,1处选中下拉菜单中Vim,并点击2处左侧“…”按钮找到GVIM的装置目录。最终点击OK退回。

   拔取左边的Preferred Text
Editor,1处选中下拉菜单中Vim,并点击2处左侧“…”按钮找到GVIM的安装目录。最终点击OK退回。

  在FPGA设计中一个个纵横交错的模块均由接口定义、信号定义、时序逻辑和整合了逻辑块等局地组成,由此将代码划分成几种类型的模块,以统一的代码风格通过简单的脚本语言调用可以很大程度升高设计功能,完毕“填空式”设计!以下是本子自动生成代码示例,括号中为依照规定格式的参数输入。

  在FPGA设计中一个个繁杂的模块均由接口定义、信号定义、时序逻辑和重组了逻辑块等片段构成,因而将代码划分成二种档次的模块,以联合的代码风格通过简单的脚本语言调用可以很大程度提高规划功效,完毕“填空式”设计!以下是本子自动生成代码示例,括号中为依照规定格式的参数输入。

1 计数器

1 计数器

  计数器是FPGA落成时序的为主单元,比如数据帧处理,串并更换等均要用到。命令形式下输入<:Mdyjsq >
(注意<>不用输入,加尖括号只是为了与文字区分开) 按下回车自动生成如下计数器模块,连相关的信号定义也可自动生成。

  计数器是FPGA完成时序的主导单元,比如数据帧处理,串并转移等均要用到。命令格局下输入<:Mdyjsq >
(注意<>不用输入,加尖括号只是为了与文字区分开) 按下回车自动生成如下计数器模块,连相关的信号定义也可自动生成。

图片 9

图片 10

   再度输入同样的命令,会时有发生另一个计数器模块,同时cnt后编号顺序递增,对于急需多少个计数器嵌套使用的场馆更加实用。

   再度输入同样的下令,会爆发另一个计数器模块,同时cnt后编号顺序递增,对于急需三个计数器嵌套使用的场面更加实用。

  但假设想自定义定义计数器名称如何是好?难道要手动修改么?例如须要对din_vld这一信号举办计数,计10个一巡回。命令形式下输入

  但假使想自定义定义计数器名称如何是好?难道要手动修改么?例如必要对din_vld这一信号举办计数,计10个一循环往复。命令方式下输入

<:call
MDYJSQ(“cnt_din”,”din_vld”,10)>,按下回车生成如下代码。

<:call
MDYJSQ(“cnt_din”,”din_vld”,10)>,按下回车生成如下代码。

图片 11

图片 12

  格式为call
MDYJSQ(“计数器名称”,”加1条件”,计数个数)。该模板加1条件和计数个数是可选参数,但提出输入脚本时增进,那样有助于在编制代码此前,思考好计数器最爱抚的多个因素:加1条件和计数个数。

  格式为call
MDYJSQ(“计数器名称”,”加1条件”,计数个数)。该模板加1条件和计数个数是可选参数,但指出输入脚本时增加,那样有助于在编辑代码从前,思考好计数器最主要的三个要素:加1条件和计数个数。

2 状态机

2 状态机

  较为复杂的时序逻辑中,常常索要状态机与计数器合营使用。如有如下状态转移图:

  较为复杂的时序逻辑中,平时索要状态机与计数器合作使用。如有如下状态转移图:

图片 13

图片 14

在指令形式下输入<:call
MDYZTJ(3,”IDLE”,”S1″,”S2″,12,23,31)>,按下回车生成明德扬四段式状态机。

在指令形式下输入<:call
MDYZTJ(3,”IDLE”,”S1″,”S2″,12,23,31)>,按下回车生成明德扬四段式状态机。

图片 15

图片 16

  在转变的框架中加上状态转移条件和对应情况输出。命令格式为call
MDYZTJ(状态个数,”状态1称谓”,”状态2名称”,…,跳转条件1,跳转条件2,…)

  在变更的框架中丰盛状态转移条件和呼应情况输出。命令格式为call
MDYZTJ(状态个数,”状态1名号”,”状态2名称”,…,跳转条件1,跳转条件2,…)

3 always逻辑块

3 always逻辑块

  在逻辑设计中,最常用的就是always时序逻辑块,其里面通过三个if
else语句区分不一致的情景。当要发出信号dout逻辑且在二种情形下须要予以不相同的值时,命令形式下输入<:call
MDYSHIXU(“dout”,2)>,按下回车生成如下代码。格式为call
MDYSHIXU(“信号名称”,情形个数)

  在逻辑设计中,最常用的就是always时序逻辑块,其里面通过三个if
else语句区分不一样的状态。当要发出信号dout逻辑且在三种情形下须求予以差别的值时,命令形式下输入<:call
MDYSHIXU(“dout”,2)>,按下回车生成如下代码。格式为call
MDYSHIXU(“信号名称”,情状个数)

图片 17

图片 18

  当然也必不可少组合逻辑块,可以很有益于地成功屡次三番即刻更新信号数值。插入方式下输入<Zuhe>
按下回车:

  当然也必不可少组合逻辑块,能够很便宜地形成两次三番登时更新信号数值。插入方式下输入<Zuhe>
按下回车:

图片 19

图片 20

4 接口与信号定义

4 接口与信号定义

  除了主导代码外的信号定义和接口定义同样可以高速生成。如数据包处理模块要输入位宽为8bit的数据包。根据至简设计法命名规范,在命令格局下输入

  除了宗旨代码外的信号定义和接口定义同样可以火速生成。如数据包处理模块要输入位宽为8bit的数据包。根据至简设计法命名规范,在指令情势下输入

<:call MDYINPUT(“din_sop”,1,
“din_eop”,1, “din”,8, “din_vld”,1) > 回车

<:call MDYINPUT(“din_sop”,1,
“din_eop”,1, “din”,8, “din_vld”,1) > 回车

图片 21

图片 22

  格式为call
MDYINPUT(“输入接口信号1称谓”,信号1位宽,”输入接口信号2名称”,信号2位宽) 同理,output,reg类型信号,wire类型信号生成格局和格式与input一致。

  格式为call
MDYINPUT(“输入接口信号1名号”,信号1位宽,”输入接口信号2名称”,信号2位宽) 同理,output,reg类型信号,wire类型信号生成形式和格式与input一致。

   有了上述变动代码的台本命令,对统筹人员的援助不可是喻。接下来通过GVIM工具常用飞速键操作演示,进一步体会什么叫功效!

   有了上述变动代码的台本命令,对统筹人士的提携不但是喻。接下来通过GVIM工具常用飞快键操作以身作则,进一步体会什么叫作用!

1.补全命令

1.补全命令

图片 23

图片 24

  在插入形式,输入din_然后按下<ctrl+p>补全命令,可以快捷按照当前文件中已有号子进行补全。有多少个记号匹配时可自动采取。

  在插入形式,输入din_日后按下<ctrl+p>补全命令,可以疾速根据当下文件中已有记号举办补全。有五个标志匹配时可自动接纳。

2.跳转命令

2.跳转命令

  命令方式下,按下<gg>会跳转到当前文件头,按下<G>跳转到文件尾(再也不用不停地滚动鼠标滚轮了)。

  命令形式下,按下<gg>会跳转到当前文件头,按下<G>跳转到文件尾(再也不用不停地滚动鼠标滚轮了)。

3.查找命令

3.寻找命令

  命令情势下,在想要找出同样符号地点的号子上按下*键,所有该符号出现岗位自动高亮。调试起来很便宜。

  命令形式下,在想要找出同样符号地点的标志上按下*键,所有该符号出现岗位自动高亮。调试起来很便宜。

图片 25

图片 26

  当要摸索一个已盛名称符号时,命令格局下输入</xxx>
直接找到所有xxx符号地点。上述两种检索命令均可利用<n>跳转到下一个高亮地方,<N>跳转到上一位置。

  当要物色一个已知名称符号时,命令形式下输入</xxx>
直接找到所有xxx符号地点。上述二种检索命令均可使用<n>跳转到下一个高亮地点,<N>跳转到上一职位。

4.刨除复制命令

4.剔除复制命令

  复制N整行:命令形式下,光标在一行头职位输入yy,将光标移到欲粘贴地点上一行任意处,按下p即可在下一行粘贴所复制内容。可在yy前加数字代表要从此时此刻行初步向下复制行数。

  复制N整行:命令情势下,光标在一行头职位输入yy,将光标移到欲粘贴地点上一行任意处,按下p即可在下一行粘贴所复制内容。可在yy前加数字代表要从眼前行起首向下复制行数。

5.封存退出

5.保留退出

  命令形式下,输入<:w xxx.y>
回车为以一定文件名和文件格式保存文件。输入<:wq>
回车保存当前文件退出。

  命令格局下,输入<:w xxx.y>
回车为以一定文件名和文件格式保存文件。输入<:wq>
回车保存当前文件退出。

6.替换命令

6.替换命令

  全文件替换:命令方式下,输入<:%s/xx/yy/gc>
回车把方今文件所有xx可挑选替换成yy,逐个按下y确认替换,按下n否定替换。

  全文件替换:命令方式下,输入<:%s/xx/yy/gc>
回车把近期文件所有xx可挑选替换成yy,逐个按下y确认替换,按下n否定替换。

  范围替换:命令格局下,输入<:n,ms/xx/yy/gc>回车把n到m行所有xx可挑选替换成yy,以相同方法确认。

  范围替换:命令方式下,输入<:n,ms/xx/yy/gc>回车把n到m行所有xx可选择替换成yy,以相同方法确认。

  如将5到22行clk替换成clk_tx:命令形式下,输入<:5,22s/clk/clk_tx/gc>
回车

  如将5到22行clk替换成clk_tx:命令方式下,输入<:5,22s/clk/clk_tx/gc>
回车

图片 27

图片 28

  粉紫色为当下待替换地点,按下<y>或<n>逐一确认。

  紫色为当下待替换地点,按下<y>或<n>逐一确认。

图片 29

图片 30

7.列操作形式

7.列操作情势

  在编写testbench时,要例化待测试模块。那是复制待测试模块中以下部分。

  在编辑testbench时,要例化待测试模块。那是复制待测试模块中以下部分。

图片 31

图片 32

   a.鼠标选中待删除区域,按下<ctrl+q>进入列选方式。b.按下delete直接删除,之后用tab键在每行前流出空白。c.命令形式下,输入<ctrl+q>进入列操作格局,通过<j><k><h><l>(下
上 左
右)键拔取欲编辑区域。d.输入大写字母“I”,再输入想要列插入符号“.”,最后按下Esc键退出已毕列插入。以同一方法插入每行后()

   a.鼠标选中待删除区域,按下<ctrl+q>进入列选情势。b.按下delete直接删除,之后用tab键在每行前流出空白。c.命令格局下,输入<ctrl+q>进入列操作形式,通过<j><k><h><l>(下
上 左
右)键接纳欲编辑区域。d.输入大写字母“I”,再输入想要列插入符号“.”,最终按下Esc键退出已毕列插入。以同一方式插入每行后()

图片 33图片 34

图片 35图片 36

 

 

 图片 37图片 38图片 39 

 图片 40图片 41图片 42 

  合理规范的代码是设计成功至关首要,通过上述一个个简便便于回想的脚本命令,可以让规划人士从低级重复性的干活中抽身出来,将时间花在“刀刃”上。从代码搬运工变成专注于作用算法的设计师,让解答题改成填空题,从此起始!

  合理规范的代码是布置性成功至关主要,通过上述一个个粗略便于记念的脚本命令,可以让规划人士从低级重复性的干活中解脱出来,将时间花在“刀刃”上。从代码搬运工变成专注于成效算法的设计师,让解答题改成填空题,从此初叶!

 

 

相关文章