opebet体育app

GVIM与模板——让FPGA开发变得重新简明。GVIM与模板——让FPGA开发变得再简单。

十月 26th, 2018  |  opebet体育app

  还以使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软件设置路径。

opebet体育app 1opebet体育app 2

opebet体育app 3opebet体育app 4

opebet体育app 5

opebet体育app 6

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

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

opebet体育app 7

opebet体育app 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 >
(注意<>不用输入,加尖括号单是为了和文字区分开) 按下回车自动生成如下计数器模块,连相关的信号定义也可自动生成。

opebet体育app 9

opebet体育app 10

   再次输入同样的命,会起其他一个计数器模块,同时cnt后编号挨个递增,对于欲多单计数器嵌套使用的场地特别实用。

   再次输入同样的通令,会发生其他一个计数器模块,同时cnt后编号挨个递增,对于欲多独计数器嵌套使用的场子特别实用。

  但要是想打定义定义计数器名称怎么收拾?难道要手动修改么?例如需要针对din_vld这同一信号进行计数,计10只同循环。命令模式下输入

  但只要想打定义定义计数器名称怎么惩罚?难道要手动修改么?例如需要对din_vld这同一信号进行计数,计10个一律循环往复。命令模式下输入

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

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

opebet体育app 11

opebet体育app 12

  格式为call
MDYJSQ(“计数器名称”,”加1条件”,计数个数)。该模板加1条件与计数个数是可选参数,但建议输入脚本时累加,这样有助于在编辑代码之前,思考好计数器最要之少只元素:加1条件同计数独数。

  格式为call
MDYJSQ(“计数器名称”,”加1条件”,计数个数)。该模板加1条件同计数个数是可选参数,但建议输入脚本时长,这样有助于在编制代码之前,思考好计数器最重点之简单个因素:加1条件同计数单数。

2 状态机

2 状态机

  较为复杂的时序逻辑中,经常索要状态机与计数器配合以。如发生如下状态转移图:

  较为复杂的时序逻辑中,经常得状态机与计数器配合使用。如发生如下状态转移图:

opebet体育app 13

opebet体育app 14

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

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

opebet体育app 15

opebet体育app 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(“信号称”,情况个数)

opebet体育app 17

opebet体育app 18

  当然为不可或缺组合逻辑块,可以老方便地成功连续立即更新信号数值。插入模式下输入<Zuhe>
按下回车:

  当然也必不可少组合逻辑块,可以充分便利地完成连续立即更新信号数值。插入模式下输入<Zuhe>
按下回车:

opebet体育app 19

opebet体育app 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) > 回车

opebet体育app 21

opebet体育app 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.填补全命令

opebet体育app 23

opebet体育app 24

  以插入模式,输入din_从此以后以下<ctrl+p>补全命令,可以迅速根据当前文件被都起号子进行填空全。有差不多独记匹配时只是活动选择。

  于插入模式,输入din_自此以下<ctrl+p>补全命令,可以迅速根据目前文件被既起号子进行补给全。有差不多独记匹配时可活动选择。

2.过反命令

2.超越反命令

  命令模式下,按下<gg>会越反到当下文件头,按下<G>跳反到文件尾(再为未用无停止地滚动鼠标滚轮了)。

  命令模式下,按下<gg>会跳反至手上文件头,按下<G>跳反到文件尾(再为未用无停止地滚动鼠标滚轮了)。

3.找寻令

3.寻觅令

  命令模式下,在怀念如果找有同样符号位置的符上随下*键,所有拖欠符号出现岗位自动高亮。调试起来非常有益于。

  命令模式下,在怀念只要寻找来同样符号位置的标志上按下*键,所有拖欠符号出现岗位自动高亮。调试起来老有益于。

opebet体育app 25

opebet体育app 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>
回车

opebet体育app 27

opebet体育app 28

  灰色为即急需替换位置,按下<y>或<n>逐一确认。

  灰色为当下需替换位置,按下<y>或<n>逐一确认。

opebet体育app 29

opebet体育app 30

7.列操作模式

7.列操作模式

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

  opebet体育app于编排testbench时,要例化待测试模块。这是复制待测试模块中以下一些。

opebet体育app 31

opebet体育app 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键退出完成列插入。以平等措施插入每行后()

opebet体育app 33opebet体育app 34

opebet体育app 35opebet体育app 36

 

 

 opebet体育app 37opebet体育app 38opebet体育app 39 

 opebet体育app 40opebet体育app 41opebet体育app 42 

  合理规范之代码是计划成至关重要,通过上述一个个简单易行便于记忆之本子命令,可以叫规划人员由低级重复性的做事负摆脱出来,将日花在“刀刃”上。从代码搬运工变成专注让功能算法的设计师,让解答题改成填空题,从此开始!

  合理规范之代码是统筹成至关重要,通过上述一个个简单易行便于记忆之剧本命令,可以给规划人员从低级重复性的做事着脱身出来,将日花在“刀刃”上。从代码搬运工变成专注让功能算法的设计师,让解答题改成填空题,从此开始!

 

 

相关文章

标签:, ,

Your Comments

近期评论

    功能


    网站地图xml地图