五分钟快速过完Verilog HDL基本概念(3)语法讲解

Verilog HDL逻辑功能定义

1.在Verilog 模块中有3种方法可以描述电路的逻辑功能:

  • 用assign 连续赋值语句,常用于描述组合逻辑
    assign x = ( b & ~c );
    
  • 用元件例化(instantiate)
    and myand3( f,a,b,c);// 门元件例化
    /*and 门元件关键字; myand3例化元件名*/
    

    注1:元件例化即是调用Verilog HDL提供的元件;
    注2:元件例化包括门元件例化和模块元件例化;
    注3:每个实例元件的名字必须唯一!以避免与其它调用元件的实例相混淆。
    注4:例化元件名也可以省略!

  • 用 “always” 块语句,结构说明语句
      always @(posedge clk) // 每当时钟上升沿到来时执行一遍块内语句
      begin
           if(load)
              out = data;      // 同步预置数据
           else
              out = data + 1 + cin;  // 加1计数
      end
    

    注1:“always” 块语句常用于描述时序逻辑,也可描述组合逻辑。
    注2:“always” 块可用多种手段来表达逻辑关系,如用if-else语句或case语句。
    注3: “always” 块语句与assign语句是并发执行的, assign语句一定要放在“always” 块语句之外!

2. Verilog HDL基本结构

Verilog HDL模块的模板(仅考虑用于逻辑综合的部分)

module <顶层模块名> (< 输入输出端口列表>) ;
   output 输出端口列表;
   input 输入端口列表;
//(1)使用assign语句定义逻辑功能
   wire 结果信号名;
   assign <结果信号名> = 表达式 ;  
//(2)使用always块定义逻辑功能
   always @(<敏感信号表达式>)
       begin
          //过程赋值语句
           //if语句
           // case语句
          // while,repeat,for循环语句
          // task,function调用
      end
// (3)元件例化
   < module_name > < instance_name > ();        // 模块元件例化
    < instance_name > (); // 门元件例化
endmodule

3. 关键字

关键字——事先定义好的确认符,用来组织语言结构;或者用于定义Verilog HDL提供的门元件(如and,not,or,buf)。 用小写字母定义!

always,assign,begin,case,casex,else,end,for
function,if,input,output,repeat,table,time,while,wire

4. 标识符

  • 任何用Verilog HDL语言描述的“东西”都通过其名字来识别,这个名字被称为标识符。如源文件名、模块名、端口名、变量名、常量名、实例名等。
  • 标识符可由字母、数字、下划线和 $ 符号构成;但第一个字符必须是字母或下划线,不能是数字或 $ 符号!
  • 在Verilog HDL中变量名是区分大小写的!
  • 合法的名字:

    A_99_Z
    Reset
    _54MHz_Clock$
    Module

  • 不合法的名字:

    123a
    $data
    module
    7seg.v

你可能感兴趣的:(fpga我来了)