Verilog入门笔记

先贴两个链接:
http://blog.csdn.net/alexanderrr/article/details/51615463
http://blog.chinaunix.net/uid-21227800-id-65936.html

1.Verilog是种描述语言,与C语言有本质不同,原理上类似于模块的拼接,与语句的顺序无关。
2.reg类型相当于寄存器,wire相当于导线,assign也相当于连线。

assign相当于一条连线,将表达式右边的电路直接通过wire(线)连接到左边,左边信号必须是wire型。当右边变化了左边立马变化,方便用来描述简单的组合逻辑。

3.reg型,只能在always或initial过程块中赋值
4.always @(a or b or c)/(a,b,c)表示其一有变化就执行,内部语句用begin与end相当于“{“与“}“的作用,always #10 “语句A”表示每10ns执行一次语句A,always @(*)好像是一直执行

在verilog2001以后,“,”和“or”都可以用来分割敏感事件了,可以用“*”代表所有输入信号,这可以防止遗漏。
合法的写法:
always@ *
always@ (posedge clk1,negedge clk2)
always@ (a or b)
`timescale 100ns/100ns //定义仿真基本周期为100ns
always #1 clk=~clk //#1代表一个仿真周期即100ns
所有的assign和always块都是并行发生的!

5.if else case 只能用在aways语句中
6.循环的一般写法:

genvar  j;
generate
    for (j=0; j1)
    begin: 
        //循环内容
    end
  endgenerate

你可能感兴趣的:(Verilog)