重学Veriliog——高级编程语句

Posted genxgss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重学Veriliog——高级编程语句相关的知识,希望对你有一定的参考价值。

1.判断

1.1 if ... else ...

  • 有优先级
  • 在组合逻辑电路中,需要避免产生Latch(避免结构不完整)
  • Latch容易引起竞争冒险,同时静态时序分析工具也不好分析穿过Latch的路径?

1.2 case

  • 无优先级
  • 使用default,防止latch

1.3 casex和casez

  • casez将分支中所有的z看作不“care”的值
casez (encoder)
    4b1???: high_lvl = 3;
    4b01??: high_lvl = 2;
    4b001?: high_lvl = 1;
    4b0001: high_lvl = 0;
    default : high_lvl = 0;
endcase

 

  • casex将分支中所有的z和x看作不“care”的值
casez (encoder)
    4b1xxx: high_lvl = 3;
    4b01xx: high_lvl = 2;
    4b001x: high_lvl = 1;
    4b0001: high_lvl = 0;
    default : high_lvl = 0;
endcase

 

2.循环

2.1 forever

initial
begin
clk = 0;
forver #25 clk = ~clk;
end

生成了50 的时钟

2.2 repeat

if (rotate == 1)
    repeat(8)
        begin
            tmp = data[15];
            data = {data << 1,tmp};
        end

重复8次

2.3 while

1 initial
2 begin
3     count = 0;
4     while (count < 101)
5     begin
6         $ display ("Count = %d" , count);
7         count = count + 1;
8     end
9 end

 

 2.4 for

 1 integer i;
 2 always @(inp or cnt)
 3 begin
 4     result[7:4] = 0;
 5     result[3:0] = inp;
 6     if (cnt == 1)
 7     begin
 8     for (i = 4; i  <= 7; i=i+1)
 9         begin
10             result[i]=result[i - 4];
11         end
12     result[3:0] = 0;
13     end
14 end

 

 

 

以上是关于重学Veriliog——高级编程语句的主要内容,如果未能解决你的问题,请参考以下文章

重学Git高级命令篇

shell高级编程

20个简洁的 JS 代码片段

20个简洁的 JS 代码片段

MyBatis高级特性

重学前端-4函数式编程