介绍两个可以在Windows系统安装的进行vim练习和cshell练习的工具,分别是gvim和cygwin terminal,今天介绍两个小技巧,都是在vim中用的方法:
第一个小技巧是vim的记录技巧,首先打开gvim,进入的是normal mode,普通模式;然后按i,进入insert mode,插入模式,可以进行字符的编辑了,然后输入1。
然后按esc,回到normalmode,按q,进入记录模式,再按a,表示记录开始,然后yy,复制这一行,按p贴复制的内容到下一行,光标到现在2的位置(这时候还是1),按ctrl+a,可以让数字加1,然后变成了2,然后再按q,记录模式结束,
现在可以使用@a调用这个记录的操作了,按7@a,就相当于操作了7次,最后结果如下;
(这个是在gvim中调用的,有点bug,在记录模式时无法使用ctrl+a来增加数值,但在Linux环境中时可以用ctrl+a的)
然后另一个技巧是:map的映射功能(在normal模式时转换成命令模式,命令模式其实就是加上两个冒号),采用:map \ dd,就相当于把dd的功能赋给了\,然后在某一行时按\,就会删除这一行。
有两种procedural block,分别是initial和always,intial相当于初始化,相应模块只运行一次,而always则是只要满足条件就会开始运行;always有两种触发方式,always@(a )这种是电平触发,而always(posedge a),表示在上升沿时触发,一般边沿触发在同一个always里不应该超过三个,而同一个电平的正边沿和负边沿触发不应该在同一个always模块里面。除此之外还可以用wait(a)来表示触发条件。两种赋值方式assign a = b; assign a <= b;
前一个为blocking assignment,阻塞赋值,后一个为non-blocking assignment,非阻塞赋值,在always模块里面,采用阻塞赋值的一般是组合逻辑,采用非阻塞赋值的一般是时序逻辑,这个需要注意。无论时序逻辑还是组合逻辑,都需要提前想好架构再进行代码编写,否则会事倍功半,反之则会事半功倍。