Verilog HDL 基本要素(2)
文章目录
- 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.编译指示语句
- 宏替换 `define:可以用一个简单的名字或有意义的标识(宏名)代替一个复杂的名字或变量(类似C语言的 #define )。
`define 宏名 变量或名字
- include语句:是文件包含语句,它可以将一个文件全部包含到另一个文件中。
`include “文件名”
- 条件编译语句 :可以指定仅对程序中的部分内容进行编译,有两种形式。
一,当指定的宏在程序中已定义,那么其中的语句序列与源文件的编译 ,否则不编译。
`ifdef 宏名
语句序列;
`endif
二,宏在程序中已定义编译语句序列1,否则编译2
`ifdef 宏名
语句序列1;
`else
语句序列2;
`endif
//定义宏Rst表示复位信号有效
`define Rst 1`b1
......
always @ (clk)
beginif (rst == `Rst) // 编译时会自动将Rst替换为 1`b1//复位有效else//复位无效
end
系统函数
- $stop :用于多仿真过程进行控制,暂停仿真(此时设计者可以输入命令,对仿真器进行交互控制。)
$stop( ); //使用格式一,不带参数
$ stop( n ); //使用格式二,带参数n,n可以等于0,1,2等值
// 0 :不给出任何信息;1 :给出仿真时间和位置;2:给出仿真时间和位置,还有一些运行统计数据
- $readmemh函数用于读取文件,其作用是从外部文件中读取数据并放入存储器中。
$readmemh ( " 数据文件名 ",存储对象);
Verilog HDL 基本要素(2)相关推荐
- Verilog HDL语言要素
Verilog HDL语言要素 Verilog HDL的基本要素,包括标识符.空白符.注释.数值和字符串.数据类型及运算符等. 标识符 Verilog HDL中的标识符(identifier)可以是任 ...
- Verilog HDL基础知识
Verilog HDL基础知识 Verilog HDL的语言要素 空白符 注释符 标识符和转义标识符 关键字 数值 1. 整数及其表示 2. 实数及其表示 3. 字符串及其表示 数据类型 Verilo ...
- Verilog HDL学习笔记
目录 1 硬件描述语言简介 1.1 概述 1.2 HDL语言特点 2 程序的基本语法 2.1 Verilog HDL 程序结构 2.1 Verilog HDL 程序规则 模块 连续赋值语句assign ...
- Verilog HDL 语法学习笔记
今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...
- 如何写好状态机?跑马灯/流水灯Verilog HDL实现
如何写好状态机 很多初学者不知道何时应用状态机.这里介绍两种应用思路:第一种思路,从状态变量入手.如果一个电路具有时序规律或者逻辑顺序,我们就可以自然而然地规划出状态,从这些状态入手,分析每个状态的输 ...
- 数字集成电路设计(二、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 ...
- Verilog HDL简明教程
Verilog HDL简明教程 来源: 郭红卫的日志 Verilog HDL简明教程 Verilog HDL是一种硬件描述语言,用于从算法级.门级到开关级的多种抽象设计层次的数字系统建模.被建模的数字 ...
- 关于Verilog HDL的一些技巧、易错、易忘点(不定期更新)
本文记录一些关于Verilog HDL的一些技巧.易错.易忘点等(主要是语法上),一方面是方便自己忘记语法时进行查阅翻看,另一方面是分享给大家,如果有错的话,希望大家能够评论指出. 关键词: ·技巧篇 ...
- (多图) 基于Verilog HDL的FIR数字滤波器设计与仿真
引言:数字滤波器是语音与图像处理.模式识别.雷达信号处理.频谱分析等应用中的一种基本的处理部件,它能满足波器对幅度和相位特性的严格要求,避免模拟滤波器所无法克服的电压漂移.温度漂移和噪声等问题.有限冲 ...
最新文章
- tinyxml使用指导
- C++编程模拟生产者消费者模型
- JBoss Fuse 6.1 + HawtIO第一部分
- 【软件开发底层知识修炼】六 Binutils辅助工具之- addr2line与strip工具
- [转] 面向对象编程 - 继承和多态
- java中可以让实例改变了类Feild(java这么干就是一个错误,你看到了就当做是类在该修改或这个类Feild)...
- html tab标签_如何用HTML写一个网页
- java html文件转换pdf文件_Java实现HTML转换为PDF的常见方法
- 开机加速——在注册表里禁止开机自检硬盘
- 服务器vga连接笔记本显示器,为什么用vga线链接笔记本和显示器,显示器的画质根本没法直视...
- 根据ip查经纬度软件_根据地址查询经纬度IP(百度地图)
- (一)海康威视、大华、宇视、广州视鹰 摄像机,支持SDK二次开发
- hazy的leetcode刷题笔记(三)
- Linux--网络命令大全--使用
- Js实现获取当前时间并显示
- 学计算机能学好英语,英语专业转行学计算机能学好吗
- 操盘手曝光神秘庄家下单要诀
- Spark性能调优案例-多表join优化,减少shuffle
- win7电脑蓝屏没有修复计算机,电脑win7开机蓝屏怎么办_win7系统一开机就蓝屏解决方法...
- [附源码]计算机毕业设计springboot房产中介管理系统