文章目录

  • Verilog 行为语句
    • 1.过程语句
      • always过程语句
      • initial过程语句
    • 2.赋值语句
      • 连续赋值语句
      • 过程赋值语句
        • 阻塞赋值语句的特点:
        • 非阻塞语句的特点:
    • 语句块
      • 串行语句块
      • 并行语句
    • 条件语句
    • 3.循环语句
      • for语句(与C语言相似 条件循环)
      • forever 语句(无限循环语句)
      • while语句(条件循环)
      • repeat语句(固定次数循环)
    • 4.编译指示语句
  • 系统函数

Verilog 行为语句

1.过程语句

always过程语句

always@(<敏感型号表达式> ) begin
语句序列;
end

( 1 )敏感信号表达式格式
两个或两个以上的敏感信号可以用“ or ”或“ ”连接,也可以使用通配符“ * ”,表示在该过程语句中的所有输入信号变量。
( 2 )敏感信号可以分为两种类型
一种为电平敏感型,另一种为边沿敏感型。第一种对应的是组合电路(如上);第二种对应的是时序电路 ,对于时序电路,敏感信号通常是时钟信号,Verilog HDL 提供了posedge,negedge两个关键字来描述时钟信号。posedge表示以时钟信号的上升沿作为触发条件,negedge表示以时钟信号的下降沿作为触发条件。

initial过程语句

initial
begin
语句序列;
end

initial语句不带触发条件,其中的语句序列只执行一次

2.赋值语句

连续赋值语句

assign主要对wire型变量的赋值
连续赋值语句不能在过程语句(initial和always)和语句块(串行语句块begin-end和并行语句块fork-join)中使用

过程赋值语句

在always,initial过程中的赋值语句,多用于对reg型变量进行赋值,分别为非阻塞赋值和阻塞赋值两种方式。
(1)非阻塞赋值
赋值符号为“ <= ”

b <= a;

(2)阻塞赋值
赋值符号为“ = ”

b = a;

在这里非阻塞赋值与阻塞赋值,和C语言中的 " i++ " 和 " ++i "相似。非阻塞赋值是在整个过程语句结束时才会完成赋值操作,阻塞赋值是在该语句结束就立即完成赋值操作。

阻塞赋值语句的特点:

1.在串行语句块(begin-end)中,各阻塞赋值语句先后顺序依次执行;在并行语句块(fork-join)中的各阻塞赋值语句则同时执行,没有先后顺序之分。
2.执行阻塞赋值语句的顺序是,先计算等号右端表达式的值,然后立刻将计算的值赋给左边的变量,与仿真时间无关。

非阻塞语句的特点:

1.在串行语句块中,各条非阻塞赋值语句的执行没有先后顺序之分,排在前面的语句不会影响到后面的执行,各条语句并行执行。
2.执行非阻塞语句的顺序是,先计算右端的表达式的值,然后等到延时结束时,将计算机的值赋给左边的变量。

语句块

串行语句块

按语句顺序依次执行。

module wave_tb1;
reg wave ;
parameter T= 10;
initial
beginwave = 0;#T          wave = 1;#T          wave = 0;#T          wave = 1;#T          wave = 0;#T          wave = 1;
end
endmodule

并行语句

语句同时执行,没有先后之分。

module wave_tb2;
reg  wave;
parameter  T = 0;
initial
forkwave = 0;#T        wave = 1;#T(2*T)   wave = 0;#T(3*T)   wave = 1;#T(4*T)   wave = 0;#T(5*T)   wave = 1;
join
endmodule

条件语句

见Verilog HDL基本要素(1)https://blog.csdn.net/m0_60477336/article/details/124874811?spm=1001.2014.3001.5501

3.循环语句

for语句(与C语言相似 条件循环)

for(循环变量赋初值;循环变量结束条件;修改循环标量)

  执行语句 ;

forever 语句(无限循环语句)

在循环中不包括任何条件表达式,只执行无限的循环,直到遇到$finish为止,使用disable语句退出forever循环。常用来产生周期性波形,而在数字电路中时钟信号是无限循环的。

forever begin
语句序列;
end

用forever语句产生时钟信号

module forever_tb;
reg clock;
initial
beginclock = 0;forever #50    clock=~clock;   //从clock赋值为零开始每经过50个时间单位clock反转一次
end
endmodule

while语句(条件循环)

while(循环执行条件表达式)begin
语句序列;
end

repeat语句(固定次数循环)

repeat(循环次数)begin
语句序列;

end

4.编译指示语句

  1. 宏替换 `define:可以用一个简单的名字或有意义的标识(宏名)代替一个复杂的名字或变量(类似C语言的 #define )。

`define 宏名 变量或名字

  1. include语句:是文件包含语句,它可以将一个文件全部包含到另一个文件中。

`include “文件名”

  1. 条件编译语句 :可以指定仅对程序中的部分内容进行编译,有两种形式。
    一,当指定的宏在程序中已定义,那么其中的语句序列与源文件的编译 ,否则不编译。

`ifdef 宏名

   语句序列;

`endif

二,宏在程序中已定义编译语句序列1,否则编译2

`ifdef 宏名

      语句序列1;

`else

  语句序列2;

`endif

//定义宏Rst表示复位信号有效
`define  Rst   1`b1
......
always @ (clk)
beginif (rst == `Rst)  // 编译时会自动将Rst替换为 1`b1//复位有效else//复位无效
end

系统函数

  1. $stop :用于多仿真过程进行控制,暂停仿真(此时设计者可以输入命令,对仿真器进行交互控制。)

$stop( ); //使用格式一,不带参数
$ stop( n ); //使用格式二,带参数n,n可以等于0,1,2等值
// 0 :不给出任何信息;1 :给出仿真时间和位置;2:给出仿真时间和位置,还有一些运行统计数据

  1. $readmemh函数用于读取文件,其作用是从外部文件中读取数据并放入存储器中。

$readmemh ( " 数据文件名 ",存储对象);

Verilog HDL 基本要素(2)相关推荐

  1. Verilog HDL语言要素

    Verilog HDL语言要素 Verilog HDL的基本要素,包括标识符.空白符.注释.数值和字符串.数据类型及运算符等. 标识符 Verilog HDL中的标识符(identifier)可以是任 ...

  2. Verilog HDL基础知识

    Verilog HDL基础知识 Verilog HDL的语言要素 空白符 注释符 标识符和转义标识符 关键字 数值 1. 整数及其表示 2. 实数及其表示 3. 字符串及其表示 数据类型 Verilo ...

  3. Verilog HDL学习笔记

    目录 1 硬件描述语言简介 1.1 概述 1.2 HDL语言特点 2 程序的基本语法 2.1 Verilog HDL 程序结构 2.1 Verilog HDL 程序规则 模块 连续赋值语句assign ...

  4. Verilog HDL 语法学习笔记

    今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...

  5. 如何写好状态机?跑马灯/流水灯Verilog HDL实现

    如何写好状态机 很多初学者不知道何时应用状态机.这里介绍两种应用思路:第一种思路,从状态变量入手.如果一个电路具有时序规律或者逻辑顺序,我们就可以自然而然地规划出状态,从这些状态入手,分析每个状态的输 ...

  6. 数字集成电路设计(二、Verilog HDL基础知识)

    文章目录 1. 语言要素 1.1 空白符 1.2 注释符 1.3 标识符 1.3.1 转义标识符 1.4 关键字 1.5 数值 1.5.1 整数及其表示方式 1.5.2 实数及其表示方式 1.5.3 ...

  7. Verilog HDL简明教程

    Verilog HDL简明教程 来源: 郭红卫的日志 Verilog HDL简明教程 Verilog HDL是一种硬件描述语言,用于从算法级.门级到开关级的多种抽象设计层次的数字系统建模.被建模的数字 ...

  8. 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)

    本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...

  9. (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真

    引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...

最新文章

  1. tinyxml使用指导
  2. C++编程模拟生产者消费者模型
  3. JBoss Fuse 6.1 + HawtIO第一部分
  4. 【软件开发底层知识修炼】六 Binutils辅助工具之- addr2line与strip工具
  5. [转] 面向对象编程 - 继承和多态
  6. java中可以让实例改变了类Feild(java这么干就是一个错误,你看到了就当做是类在该修改或这个类Feild)...
  7. html tab标签_如何用HTML写一个网页
  8. java html文件转换pdf文件_Java实现HTML转换为PDF的常见方法
  9. 开机加速——在注册表里禁止开机自检硬盘
  10. 服务器vga连接笔记本显示器,为什么用vga线链接笔记本和显示器,显示器的画质根本没法直视...
  11. 根据ip查经纬度软件_根据地址查询经纬度IP(百度地图)
  12. (一)海康威视、大华、宇视、广州视鹰 摄像机,支持SDK二次开发
  13. hazy的leetcode刷题笔记(三)
  14. Linux--网络命令大全--使用
  15. Js实现获取当前时间并显示
  16. 学计算机能学好英语,英语专业转行学计算机能学好吗
  17. 操盘手曝光神秘庄家下单要诀
  18. Spark性能调优案例-多表join优化,减少shuffle
  19. win7电脑蓝屏没有修复计算机,电脑win7开机蓝屏怎么办_win7系统一开机就蓝屏解决方法...
  20. [附源码]计算机毕业设计springboot房产中介管理系统

热门文章

  1. 史上最牛的5次黑客攻击
  2. 杨元庆获颁2014爱迪生奖 美媒:联想立异里程碑
  3. mac mysql 移动硬盘_Mac的移动硬盘不能装载该如何解决?
  4. 什么是java web项目的根路径
  5. DSP在线升级(2)--bootloader的设计框架
  6. 【案例】航班准点分析
  7. 银行业务笔记之存款业务
  8. 深度解读黄江二手车(黄江水车)的由来与行业发展前景!黄江王子阳原创
  9. 原来满清是宋徽宗的后代!
  10. 【图像处理知识复习】14 Laplacian 二阶微分算子Matlab实现