Verilog语法(二)

1.结构说明语句

  (1)initial 

  (2)  always

  (3) task

    

 1 `timescale 1ns / 1ps
 2 module TaskTest();
 3 reg clock=0,red,green,yellow;
 4 parameter on=1,off=0,red_tics=350,yellow_tics=30,green_tics=200;
 5 initial begin 
 6     red=off;
 7 end
 8 initial begin 
 9    yellow=off;
10 end
11 initial begin 
12     green=off;
13 end
14 always begin
15     red=on;
16     light(red,red_tics);
17     yellow=on;
18     light(yellow,yellow_tics);
19     green=on;
20    light(green,green_tics);
21 end
22 task light;
23 output color;
24 input[31:0] tics;
25 begin
26     repeat(tics)begin
27         @(posedge clock);
28         end
29         color=off;
30 end
31 endtask
32 always #10 clock=~clock;
33 endmodule

 

  (4) function

2.编译预处理

  2.1宏定义`define

    格式: `define标识符(宏名)字符串(宏内容)

    例:  `define signal string    //指定标识符signal来代替string这个字符串。在预编译处理时,会把在该命令以后的所有string替换成signal

  2.2 “文件包含”处理`include

    功能:一个源文件可以将另一个源文件的全部内容包含进来

    例:

1)文件 aaa.v
    module aaa(a,b,out)
        input a,b;
        output out;
        wire out;
            assign out=a^b;
    endmodule2)文件 bbb.v
    `include "aaa.v"
    module bbb(c,d,e,out);
        input c,d,e;
        output out;
        wire out_a;
        wire out;
            aaa aaa(.a(c),.b(d),.out(out_a));
            assign out=e&out_a;
    endmodule

 若文件1包含文件2,而文件2要用到文件3的内容,可以在文件1中用两个`include命令分别包含文件2和文件3,注:文件3应该出现在文件2之前

 

1)file1.v
    `include "file3.v"
    `include "file2.v"
    module test(a,b,out)
        input[1:`size2] a,b;
        output[1:`size2] out;
        wire[1:`size2] out;
        assign out=a+b;
    endmodule2)file2.v
    `define size `size1+1
    ...
    
(3)file3.v
    `define size1 4
    ...

 

2.3 时间尺度`timescale

  功能:用来说明跟在该命令后的模块的时间单位和时间精度

  格式:`timescale<时间单位><时间精度>

posted @ 2020-11-16 10:54  L1998  阅读(189)  评论(0)    收藏  举报