数据类型是用来表示数字电路中的数据存储和传送单元。 其中4个最基本的数据类型为: integer型 parameter型 reg型 wire型 整数型常量(即整常数)的4种进制表示形式: 二进制整数(b或B); 十进制整数(d或D); 十六进制整数(h或H); 八进制整数(o或O)。 x表示不定值,z表示高阻值; 在程序运行过程中,其值可以改变的量,称为变量。变量常用的有3种:网络型(nets type), 寄存器型(registertype),数组(memory type) 常用register型变量:reg:常代表触发器; integer:32位带符号整数型变量;real:64位带符号实数型变量;time:无符号时间变量. 非阻塞赋值与阻塞赋值方式的主要区别: 非阻塞(non-blocking)赋值方式 ( b<= a): Ø
b的值被赋成新值a的操作, 并不是立刻完成的,而是在块结束时才完成; Ø
块内的多条赋值语句在块结束时同时赋值; Ø
硬件有对应的电路。 阻塞(blocking)赋值方式 ( b = a): Ø
b的值立刻被赋成新值a; Ø
完成该赋值语句后才能执行下一句的操作; Ø
硬件没有对应的电路,因而综合结果未知。 块语句有两种: begin_end语句——标识顺序执行的语句。 fork_join语句——标识并行执行的语句。当按时间排序在最后的语句执行完或一个disable语句执行时,程序流程控制跳出该并行块。 条件语句分为两种:if-else语句和case语句;它们都是顺序语句,应放在“always”块内! 避免生成锁存器的原则: 如果用到if语句,最好写上else项; 如果用到case语句,最好写上default项。 循环语句分为4种: for语句——通过3个步骤来决定语句的循环执行: (1)给控制循环次数的变量赋初值。 (2)判定循环执行条件,若为假则跳出循环;若为真,则执行指定的语句后,转到第(3)步。 (3)修改循环变量的值,返回第(2)步。 repeat语句——连续执行一条语句n次 while语句——执行一条语句,直到循环执行条件不满足;若一开始条件即不满足,则该语句一次也不能被执行! forever语句——无限连续地执行语句,可用disable语句中断! |