3.3 VHDL语言要素 

 

4)记录类型

      记录是不同类型的名称域的集合。格式如下:

  type  数据类型名  is  record

                    元素名:数据类型名;

                    元素名:数据类型名;

                         ┇  

end   record;

对于记录类型的数据对象赋值的方式,可以是整体赋值也可以是对其中的单个元素进行赋值。在使用整体赋值方式时,可以有位置关联方式或名字关联方式两种表达方式。如果使用位置关联,则默认为元素赋值的顺序与记录类型声明时的顺序相同。如果使用了OTHERS选项,则至少应有一个元素被赋值,如果有两个或更多的元素由OTHERS选项来赋值,则这些元素必须具有相同的类型。此外,如果有两个或两个以上的元素具有相同的子类型,就可以以记录类型的方式放在一起定义。

例:

     constant  len : integer:= 8 ;

     subtype  byte_vec  is  bit_vector (len-1  downto  0) ;

     type  byte_and_ix  is  record

              byte : byte_vect ;

              ix : integer  range  0  to  len ;

     end  record ;

     signal  x, y, z : byte_and_ix ;

     signal  data : byte_vect ;

     signal  num : integer ;

               …….

     x.byte <= “11110000” ;

     x.ix <= 2 ;

     data <= y.byte ;

     num <= y.ix ;

     z <= x ;

 

 

5子类型

      子类型是已定义的类型或子类型的一个子集。格式:

         subtype  子类型名  is  数据类型名[范围];    

例:

       bit_vector 类型定义如下:

               type  bit_vector  is  array (natural  range <>)  of  bit;

       如设计中只用16bit;可定义子类型如下:

               subtype  my_vector  is  bit_vector(0 to 15);

注:

       子类型与基(父)类型具有相同的操作符和子程序。

 

 

 

 

上一页  下一页  返回