购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 Verilog HDL中基本的模块结构

1995年,IEEE(Institute of Electrical and Electronics Engineers,电气电子工程师学会)正式颁布IEEE 1364-1995标准,标志着Verilog HDL首个国际标准(即Verilog-1995)的诞生。随后,该标准在2001年和2005年分别经历了修订,形成了Verilog-2001标准(IEEE 1364-2001)和Verilog-2005标准(IEEE 1364-2005)。尽管版本更迭,但各个版本的基本语法保持着高度的一致性。代码1-1展示了Verilog HDL中基本的模块结构。

代码1-1:Verilog HDL中基本的模块结构示例
module led_on   ( 
       output wire  led_out
       );
       
assign led_out = 1'b0 ;
    
endmodule

一个Verilog HDL模块包含以下基本要素。

(1)以关键字module开始,以关键字endmodule结束。

(2)关键字module后面紧跟模块的名称。代码1-1中,模块名为led_on。

(3)模块名称之后是模块端口列表,用半角圆括号“()”括起,并在括号外以半角分号“;”结束。有些模块不需要端口列表,如测试平台模块,这时在模块名称后直接以半角分号结束。

在模块端口列表中,若存在多个信号,它们之间以半角逗号“,”进行分隔,最后一个信号后不再添加半角逗号。在代码1-1中,由于只有一个端口信号,因此没有添加半角逗号。

(4)端口列表后是模块的主体部分,在这里使用Verilog HDL规定的语句完成逻辑功能的建模。

Verilog HDL是一种具有层次性的硬件描述语言,它能够用于描述从基础的逻辑门到复杂的数字系统。在传统的高级程序设计语言中,层次结构通常是通过模块调用来构建的。在Verilog HDL中,这一过程被称为例化(Instantiation)。由于Verilog HDL专注于硬件描述,因此例化一词不仅表示调用模块,还蕴含了将特定功能模块具体化或实例化的概念。

为了更清晰地说明问题,我们将代码1-1设计得复杂一些,参考代码1-2,并在代码1-3中例化它。代码1-3是代码1-2中描述的硬件模块led_on的测试平台模块。

代码1-2:将led_on加入输入控制信号
module led_on 
        ( 
output wire led1_out,
output wire led2_out,
input  wire SW1_2 
);
    
    assign led1_out = 1'0   ; 
    assign led2_out = SW1_2 ; 
    
endmodule
代码1-3:硬件模块led_on的测试平台模块
module tb_led ;
 
    wire led1 ;
    wire led2 ;
    reg  sw_in = 0 ;
 
    // 例化led_on模块
    led_on led_en_inst0
       (
       /*output wire */.led1_out ( led1  ) ,
       /*output wire */.led2_out ( led2  ) ,
       /*input  wire */.SW1_2    ( sw_in )
       );
    
    initial begin
        #5  sw_in = 1 ;
        #25 sw_in = 0 ;
        #65 sw_in = 1 ;
    end
 
endmodule

图1-1更直观地说明了这种例化关系。

图1-1

在tb_led模块中例化led_on模块,相当于在对应位置使用led_on模块中的设计内容。 yfVx/YZFkDfDbr6/3E2KBaLYYU9nQVFAIR5/veNqDt4MVysg7XI9VWc9bsxzkgrQ

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开