94wiD硬停述语言 Chia°b6eoM 下载 如果函数说明部分中没有指定函数取值范围,则其缺省的函数值为1位二进制数。函数实 例如下: module Function Example parameter MAXBITS=8 on [MAXBITS-l: 0] Reverse Bits MAXBITS-1: 0] Din begin for(K=0; K< MAXBITS: K=K +1 Reverse Bits [MAXBITS-K]= Din [K] end endfunction 函数名为 Reverse Bits。函数返回一个长度为 MAXBITS的向量。函数有一个输入DinK 是局部整型变量 函数定义在函数内部隐式地声明一个寄存器变量,该寄存器变量与函数同名并且取值范 围相同。函数通过在函数定义中显式地对该寄存器赋值来返回函数值。对这一寄存器的赋值 必须出现在函数定义中。下面是另一个函数的实例。 function Parity input [0: 31] Set reg Ret integer J: begin Ret= 0 J<=31;J=d+1) if (Set[J] Ret= Ret 1 Parity=Ret暑2 endfunction 在该函数中, Parity是函数的名称。因为没有指定长度,函数返回1位二进制数。Ret和J 是局部寄存器变量。注意最后一个过程性赋值语句赋值给寄存器,该寄存器从函数返回值 (与函数同名的寄存器在函数中被隐式地声明)。 1022函数调用 函数调用是表达式的一部分。形式如下: func id(exprI, expr2 以下是函数调用的例子: reg[ MAXBITS-1:0] New Reg,Regx;//寄存器说明 New Reg= Reverse Bits(Regx;//函数调用在右侧表达式内。 与任务相似,函数定义中声明的所有局部寄存器都是静态的,即函数中的局部寄存器在如果函数说明部分中没有指定函数取值范围,则其缺省的函数值为 1位二进制数。函数实 例如下: m o d u l e F u n c t i o n _ E x a m p l e p a r a m e t e r MAXBITS = 8; f u n c t i o n [M A X B I T S-1:0] R e v e r s e _ B i t s; i n p u t [M A X B I T S-1:0] D i n; i n t e g e r K; b e g i n f o r (K=0; K < M A X B I T S; K = K + 1) R e v e r s e _ B i t s [M A X B I T S-K] = D i n [K] ; e n d e n d f u n c t i o n . . . e n d m o d u l e 函数名为R e v e r s e _ B i t s。函数返回一个长度为 M A X B I T S的向量。函数有一个输入 D i n.K, 是局部整型变量。 函数定义在函数内部隐式地声明一个寄存器变量,该寄存器变量与函数同名并且取值范 围相同。函数通过在函数定义中显式地对该寄存器赋值来返回函数值。对这一寄存器的赋值 必须出现在函数定义中。下面是另一个函数的实例。 f u n c t i o n P a r i t y; i n p u t [0:31] S e t; r e g [0:3] R e t; integer J; b e g i n R e t = 0; f o r (J = 0;J <= 31; J = J + 1) if (S e t[J] = = 1 ) R e t = R e t + 1; P a r i t y = R e t % 2; e n d e n d f u n c t i o n 在该函数中, P a r i t y是函数的名称。因为没有指定长度,函数返回 1位二进制数。 R e t和J 是局部寄存器变量。注意最后一个过程性赋值语句赋值给寄存器,该寄存器从函数返回值 (与函数同名的寄存器在函数中被隐式地声明)。 10.2.2 函数调用 函数调用是表达式的一部分。形式如下: f u n c _ i d(e x p r 1 , e x p r 2 , . . . , e x p r N) 以下是函数调用的例子: r e g [M A X B I T S-1:0] N e w _ R e g , R e g _ X; //寄存器说明。 N e w _ R e g = R e v e r s e _ B i t s(R e g _ X); //函数调用在右侧表达式内。 与任务相似,函数定义中声明的所有局部寄存器都是静态的,即函数中的局部寄存器在 94 Verilog HDL 硬件描述语言 下载