verilog 从入门到看得懂---verilog 的基本语法各种语句

本篇文章主要介绍verilog里面常用的语句, 包括条件语句、循环语句块语句和生成语句。出了块语句和生成语句,其他的基本和c语言或者m语言一致。

1,if 语句,在需要判断逻辑的时候可以使用if语句,如 从输入a,b中找出最大值。

if (a>b) 

max=a;

else

max=b;

这里使用方法和c语言一致。需要注意的一点是在有判断的时候,verilog 希望支路都有默认值。

比如

if (a>b) 

c=2;

这里是不建议的写法,建议的写法为

if (a>b) 

c=2;

else

c=1;

或者

c=1;

if (a>b) 

c=2;

这两个建议的写法都保证了c有一个默认值,这样可以避免在无默认值的时候,实际电路中会出现一个锁存器

2.case 语句,  对于需要多分支选择的条件,可以使用case语句,避免使用大量的if else。

case(a)

2'd0:       b=0;

2'd1:       b=1; 

2'd2:       b=2; 

default:       b=1; 

endcase;// 表明case语句的结尾

case(2)

A1:       b=0;

A2:       b=1; 

A3:       b=2; 

default:       b=1; 

endcase;// 表明case语句的结尾

verilog中case 语句不用break。综合后的电路如下:

另外一个和c不同的是

case (1'b1)
sel[0]: b=0
sel[1]:begin .....end

default:       b=1; 
endcase

这里case后面跟得是一个常数,下面的选择则为变量,具体含义为sel[n]为1的时候则执行对应的回路,综合后的电路如下

3.循环语句包含for和while, 两者和c语言基本一样。

for(i=1;i<10;i=i+1) a=a+1;

while(a) c=c+1;

此外verilog 还有repeat语句 可以直接定义执行几次;

repeat(8) a=a+1; //该语句执行8次

2. 块语句,有顺序块和并行块。

verilog 语句之间一般是并行关系,但是对于顺序块语句中的程序会顺序执行。

initial

#0 

a=10;

#10// 本处延迟10个clock

a=20;

#30// 本处延迟30个clock

a=30;

这里a 发生变化 10   20  30 

 并行块关键词为fork -join

fork

#0 

a=10;

#10// 本处相对起始时间延迟10个clock

a=20;

#30// 本处相对起始时间延迟30个clock

a=30;

join

敏感词检测

always @ (敏感词)

begin

检测到敏感词时候的执行工作

end

 如:

always(posedge clk) // 当时钟上升沿的时候才触发这里

begin

if (a>10)

b<=20;   // 在时序模块中推荐使用非阻塞赋值

end

对于一个关键词后面跟的程序大于一行时,c语言是用{}来进行区分,verilog 则是用begin end 来进行区分,如

if (a>b) 

        begin

        c=2;

        d=c*8

        end

else

     begin

        c=5;

        d=c*2

        end

相关推荐

  1. Verilog基本语法概述

    2024-03-29 08:48:01       62 阅读
  2. FPGA | Verilog基础语法

    2024-03-29 08:48:01       68 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-29 08:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-29 08:48:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-29 08:48:01       82 阅读
  4. Python语言-面向对象

    2024-03-29 08:48:01       91 阅读

热门阅读

  1. HTML文本信息

    2024-03-29 08:48:01       31 阅读
  2. 说说常见的几种排序算法和复杂度

    2024-03-29 08:48:01       48 阅读
  3. FlinkSQL之Flink SQL Join二三事

    2024-03-29 08:48:01       39 阅读
  4. 前端基础复习--HTML篇

    2024-03-29 08:48:01       43 阅读
  5. Linux查询|搜索|过滤|文本日志命令汇总

    2024-03-29 08:48:01       44 阅读
  6. 篇四.软件测试管理办法

    2024-03-29 08:48:01       34 阅读
  7. linux: du用法详解

    2024-03-29 08:48:01       37 阅读
  8. c++ 的左值和右值如何理解

    2024-03-29 08:48:01       40 阅读
  9. C#WPF的XAML命名空间和命名空间映射详解

    2024-03-29 08:48:01       46 阅读
  10. C# Stopwatch 计时器

    2024-03-29 08:48:01       38 阅读
  11. Docker搭建MinIO

    2024-03-29 08:48:01       47 阅读
  12. 使用Python进行双色球选号

    2024-03-29 08:48:01       33 阅读
  13. VOS 3000外呼系统中接通率与应答率的区别

    2024-03-29 08:48:01       26 阅读
  14. python爬虫----python列表高级

    2024-03-29 08:48:01       36 阅读
  15. LeetCode-热题100:560. 和为 K 的子数组

    2024-03-29 08:48:01       42 阅读
  16. idea默认代码生成脚本修改

    2024-03-29 08:48:01       38 阅读