lljlljlzh1

条件语句,循环语句,块语句

0
阅读(2767)

条件语句:

条件语句必须在过程快语句中使用。即在initial和always语句中执行。

系统对表达式的值进行判断,若为0,x,z按“假”处理;若为1按真处理。

简写方式:

if (expression)等同于if (expression == 1)

if (!expression)等同于if (expression != 1)

 

case语句:

case语句通常用于微处理器的指令译码。

每一个case分项的分支表达式的值必须互不相同,否则就会出现问题;

case语句的所有表达式值的位宽必须相等,一个经常犯的错误是用'bx,'bz来替代n'bx,n'bz,这样写是不对的,因为信号x,z的默认宽度是机器的字节宽度,通常是32位

首先计算表达式的值,然后顺序将它和各个候选项进行比较

case语句也可以嵌套使用

 

casez语句用来处理不考虑高阻值z的比较过程,casex语句则将高阻值z和不定值x都视为不必关心的情况。

在always块内,如果在给定的条件下变量没有赋值,这个变量将爆出原值,也就是说会生成一个锁存器。

 

如果用到if语句,最好写上else;如果用case语句,最好写上default项;这样使设计者更加明确设计目标,同时增强了Verilog程序的可读性。

 

循环语句:

forever语句

foreve循环语句常用于产生周期性的波形,用来作为仿真的测试信号,它与always语句不同之处在于不能独立卸载程序中,而必须写在initial块中。

repeat语句

repeat(表达式)语句

repeat(表达式)begin 多条语句;end

while语句

用while循环语句对rega这个8位二进制中的值为1的为进行计数

begin:countls

     reg [7:0] tempreg;

    count = 0;

    tempreg = rega;

    while(tempreg) // 指的是数组的第0位

      begin

          if(tempreg[0])     count = count + 1;

          tempreg = tempreg >> 1;

      end

end