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; endmodule (2)文件 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; endmodule (2)file2.v `define size `size1+1 ... (3)file3.v `define size1 4 ...
2.3 时间尺度`timescale
功能:用来说明跟在该命令后的模块的时间单位和时间精度
格式:`timescale<时间单位><时间精度>

浙公网安备 33010602011771号