verilog语言中条件编译ifdef的使用和例子

1条件编译ifdef

如果ifdef后面的参数被编译过,则编译ifdef语句后的内容,忽略else后面的内容,如果ifdef后面的参数没有被编译过,则编译else语句后面的内容,条件编译的范围以ifdef开始,以endif结束,else部分可以没有。

`ifdef参数名
         内容

·else
         内容

`endif

2 parameter之间的跨模块传输

parameter 在一个模块中的复制方式有两种,一个是在一个module的端口申明之后,一个时module的端口声明之前

//在module的端口申明之前进行parameter定义

module [模块名] #(【参数定义】)

(【端口列表】);

[参数定义] ;

[逻辑功能] ;

endmodule 

//在module的端口声明之后进行parameter定义
module 【模块名】 (【端口列表】) ;

【参数定义】;
【逻辑功能】;

endmodule

如果希望parameter赋值能在模块之间进行传递,即parameter值从上层模块传递到例化的下层模块,则通常建议在下层模块的端口申明之前进行parameter定义。

上层模块的优先级是高于下层模块。

3模块和端口

module是verilog基本的较高层级的描述单位,后面的内容用来描述某个设计的功能或者结构及其与其他模块通信之间的外部端口。

模块之间通过例化instantiation来实现数据之间的交互。多个模块使得设计具有一定的层级结构,处于最上层的模块称之为顶层模块(top-level module)顶层模块引出的端口将会连接到FPGA器件的物理管脚上面,即连接到FPGA的外部芯片。其他的模块将直接或者间接地与(顶层模块)实现相连接,实现数据的交互。下层模块通常称之为子模块(sub module ) ;

4端口port

端口port用于设计模块对外接口信号的描述,不同模块之间通过PORT的连接定义数据交互。整个设计工程顶层模块之间通过port定义的FPGA器件与外部芯片的接口信号。

你可能感兴趣的:(fpga开发)