学习笔记5

总结1.moore型状态机和Mealy,三段式两段式的区别

moore型的输出只和当前状态有关,因此一般将输出单独放一个always块,而这个块里面输出之和当前的状态有关,可以将到达某个状态的值赋值给输出


image.png

对于mealy型可以将输出在状态转移那段进行赋值,也可以单独的always块,进行赋值
image.png

总结2.monitor输出

  • 其中一个改变后打印输出
  • 在当前仿真时刻结束后输出
  • 只有一个monitor活动

总结3.parameter的其他传参方式

shift sh1 (shitedVal, inval, 7); // instantiation
defparam sh1.wid=16;

这里面的shift的parameter是在module里面的

总结4.function和task能不能综合

task和function能不能综合不是绝对的,只要他们包含的语句是可综合的

总结5.用户自定义的数组实例

image.png

等效于
image.png

总结6.编译向导的tip

在前面讲到'default_nettype时,我们也遇到了类似的问题。应该尽童避免使用除了 'timescale之外的编译向导。如果的确有使用编译向导的必要,只在一个文件里用,且在文件 的最后用'unclef每一个编译向导。

总结7.generate的使用

generate一般和genvar搭配着使用,genvar定义了一个变量i, for在循环里面调用它,for循环里面可以定义一个reg类型单位宽的信号a,然后写对应的逻辑。
也可以在generate外面提前定义一个多位宽的reg信号a,然后在generate里面连接起来

总结8.理解system task和system function的区别

常用的system task如下
image.png

常用的system function如下
image.png

总结9.XMR(Cross Module reference)

跨模块引用,引用不同模块的内容,net, register, event, task
模块A的reg x, A.x
模块A下面的任务B的reg x,A.B.x

总结10.Verilog 2001的新标准

• ANSI风格的模块头. module addr(input [2:0] a)
• 模块端口前的参数表,module adder #(parameter A, B)
• 支持一些新的函数,如幂运算log2(size),指数运算2*3
• ,替代or,always@(posedge clk, negedge rst_n)
• 组合逻辑always敏感列表缩写,always @(
)
• vector part select, 例如 byte = vector[31-:8];//byte = vector[31:24]
• 多维的数组,reg [31:0] data[127:0][127:0];
• array bit and part select
图左是verilog 1995,图右是verilog 2001支持的

image.png

• 对参数parameter定义位宽,parameter [2:0] IDLE = 3'd0
image.png

• 对模块中的参数清晰传递,如下图左是verilog 1995,图右是2001所支持的
image.png

• localparam 不能重新被定义
• generate for产生相同的模块

总结11.defparam

可以修改任意模块中的参数值,不推荐使用。可能将来会被移除,存在的原因是依靠它可以修改localparam的值

总结12. 行同步和场同步的概念

image.png

仿真测试


image.png

image.png

总结13. synopsys的design ware库的位置

synopsys安装目录下的dw,synopsys提供的IP,例如除法器,有很多个dw01,dw02,包含不同类型的库

总结14. 查找当前文件夹下的文件,包含子文件

find -name div (名字中包括div的文件)

总结15. specify块

specify块使用者不需要知道模块功能就可以建立模块的时序模型,而模块的功能留到后面再来实现

总结16. 通过.barshrc将复杂命令替代

image.png

总结17. vim分屏显示

https://vimjc.com/vim-split-window.html
Vim命令行模式下执行命令 Ctrl+w s 可将当前打开的文件进行水平方向分割
上述命令 Ctrl+w s 表示先同时按键 Ctrl 和 w,再按键 s

总结18. memory不能用的赋值方式

image.png

总结19:编译时加的宏定义

image.png

总结20. gvim在当前的窗口新开一个文件

命令行 : tabnew 路径文件名

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。