建设银行网站的安全措施,门户网站建设询价公告,网站源码绑定域名处理,阳江彭志雄一部分代码可能有时候用#xff0c;有时候不用#xff0c;为了避免全部编译占用资源#xff0c;可以使用条件编译语句。
语法
// Style #1: Only single ifdef
ifdef FLAG// Statements
endif// Style #2: ifdef with else part
ifdef FLAG// Statements
…一部分代码可能有时候用有时候不用为了避免全部编译占用资源可以使用条件编译语句。
语法
// Style #1: Only single ifdef
ifdef FLAG// Statements
endif// Style #2: ifdef with else part
ifdef FLAG// Statements
else// Statements
endif// Style #3: ifdef with additional ifdefs
ifdef FLAG1// Statements
elsif FLAG2// Statements
elsif FLAG3// Statements
else// Statements
endif条件编译可以通过Verilog的 ifdef 和 ifndef 关键字来实现。 这些关键字可以出现在设计中的任何地方并且可以相互嵌套。 它通常和预编译指令define配套使用。 如果使用 define定义了 称为FLAG的宏那么关键字ifdef会告诉编译器包含这段代码直到下一个else或endif。 关键字ifndef只是告诉编译器如果给定的名为FLAG的宏没有使用define指令定义则将这段代码包含在下一个else 或endif之前。
引入define定义有两种方法
方法1直接在.v文件中使用define定义 首先使用define flag定义了flag然后用下一段代码定义不同的parameter参数值这时period的值为5. ifdef flag parameter period 5; else parameter period 10; endif
timescale 1ns / 1psdefine flagmodule tb;ifdef flag parameter period 5;elseparameter period 10;
endifreg clk;
reg rst;
reg [7:0] in;
wire out;initial beginclk0;rst0;#100 rst1;(posedge clk);in8b10101010;repeat(10) (posedge clk);in8b11100110;endalways #period clk~clk;top inst(
.clk(clk),
.rst(rst),
.in(in),
.out(out) );endmodule
方法二在.vh文件中使用define定义然后在.v文件中使用#include引用宏定义 步骤一先在vivado中添加一个.vh头文件文件名为inc.vh在该文件中定义如下
define flagg
步骤二在需要引用宏定义的.v文件开始使用include xxx.vh这样就可以访问.vh的宏定义了
include inc.vh
timescale 1ns / 1psmodule tb;ifdef flag parameter period 5;elseparameter period 10;endifreg clk;
reg rst;
reg [7:0] in;
wire out;initial beginclk0;rst0;#100 rst1;(posedge clk);in8b10101010;repeat(10) (posedge clk);in8b11100110;endalways #period clk~clk; 注意define macro_name 参数 之后不能加任何东西
补充 define 与localparam和parameter最大的区别就是define 可以跨文件传递参数parameter只能在模块间传递参数而localparam只能在其所在的module中起作用不能参与参数传递。