
数字硬件建模-SystemVerilog篇
文章平均质量分 88
OpenFPGA
这个作者很懒,什么都没留下…
展开
-
数字硬件建模SystemVerilog-通信总线建模 --Interface方法
来到了SV最后一部分,预计三篇文章,两周更完,所有的思维导图如下:概述SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。在其最简单的形式中,Interface端口将相关的信号捆绑在一起作为一个单一的复合端口。例如,构成AMBA AXI总线的所有单个信号都可以被归纳为一个Interface端口。一个Interface可以做的不仅仅是封...原创 2023-04-26 08:30:19 · 1012 阅读 · 0 评论 -
数字硬件建模SystemVerilog-通信总线建模 --Interface和modport
来到了SV最后一部分,预计三篇文章,两周更完,所有的思维导图如下:概述SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。在其最简单的形式中,Interface端口将相关的信号捆绑在一起作为一个单一的复合端口。例如,构成AMBA AXI总线的所有单个信号都可以被归纳为一个Interface端口。一个Interface可以做的不仅仅是封...原创 2023-04-26 08:30:19 · 1211 阅读 · 0 评论 -
数字硬件建模SystemVerilog-通信总线建模 --Interface端口的概念
来到了SV最后一部分,预计三篇文章,两周更完,所有的思维导图如下:概述SystemVerilog Interface是modport的一种,但比简单的输入、输出或输入输出端口的功能更多。在其最简单的形式中,Interface端口将相关的信号捆绑在一起作为一个单一的复合端口。例如,构成AMBA AXI总线的所有单个信号都可以被归纳为一个Interface端口。一个Interface可以做的不仅仅是封...原创 2023-04-19 08:30:52 · 746 阅读 · 0 评论 -
SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉
数字硬件建模SystemVerilog-时序逻辑建模(5)多个时钟和时钟域交叉数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着...原创 2023-02-25 10:22:57 · 724 阅读 · 0 评论 -
SystemVerilog-时序逻辑建模(4)同步和异步复位
Part1数字硬件建模SystemVerilog-时序逻辑建模(4)同步和异步复位数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意...原创 2023-02-18 18:13:49 · 2299 阅读 · 0 评论 -
SystemVerilog-时序逻辑建模(3)建立/保持时间
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2023-02-10 08:30:57 · 522 阅读 · 0 评论 -
数字硬件建模SystemVerilog-时序逻辑建模(2)always和always_ff
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2023-02-01 08:30:35 · 748 阅读 · 0 评论 -
数字硬件建模SystemVerilog-时序逻辑建模(1)RTL时序逻辑的综合要求
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2023-01-13 13:00:22 · 933 阅读 · 0 评论 -
数字硬件建模SystemVerilog-组合逻辑建模(4)组合逻辑决策优先级
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2022-12-29 08:30:34 · 1123 阅读 · 1 评论 -
数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2022-12-21 08:30:43 · 1049 阅读 · 1 评论 -
数字硬件建模SystemVerilog-组合逻辑建模(2)always和always_comb
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2022-12-15 08:30:12 · 2553 阅读 · 0 评论 -
数字硬件建模SystemVerilog-组合逻辑建模(1)连续赋值语句
数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。SystemVerilog有...原创 2022-12-07 08:30:03 · 1268 阅读 · 0 评论 -
SystemVerilog-Function 和 task
数字硬件建模SystemVerilog-Function 和 task经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~RTL建模中的函数和任务(Function 和 task)SystemVerilog的函数和任务可以将复杂的功能划分为更小的、可重用的代码块。...原创 2022-11-09 08:30:32 · 2384 阅读 · 0 评论 -
SystemVerilog-跳转语句
数字硬件建模SystemVerilog-跳转语句经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~跳转语句允许程序代码跳过一个或多个编程语句,SystemVerilog的jump语句是continue、break和disable。continue 和 break...原创 2022-11-09 08:30:32 · 2135 阅读 · 0 评论 -
数字硬件建模SystemVerilog-循环语句
数字硬件建模SystemVerilog-循环语句经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~循环语句允许多次执行编程语句或begin-end语句组。SystemVerilog中的循环语句有:for、repeat、while、do..while、foreac...原创 2022-11-03 08:30:50 · 4819 阅读 · 0 评论 -
VHDL、Verilog和SystemVerilog的比较
VHDL、Verilog和SystemVerilog的比较简介各种硬件描述语言 (HDL) 在过去几年中不断增强,确定哪种语言适合哪种设计的复杂性也随之增加。许多设计人员和组织正在考虑是否应该从一种 HDL 切换到另一种HDL。本文比较了三种通用 HDL 的技术特性:VHDL (IEEE-Std 1076):一种由多种验证和综合(实现)工具支持的通用数字设计语言。Verilog (IEEE-Std...原创 2022-11-02 08:30:27 · 3592 阅读 · 1 评论 -
SystemVerilog-决策语句-case语句
数字硬件建模SystemVerilog-决策语句-case语句经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~决策语句(Decision statements)允许程序块的执行流程根据设计中信号的当前值分支到特定语句。SystemVerilog有两个主要的决策...原创 2022-10-27 08:30:17 · 5472 阅读 · 0 评论 -
SystemVerilog-决策语句-if-else语句
数字硬件建模SystemVerilog-决策语句-if-else语句经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~决策语句(Decision statements)允许程序块的执行流程根据设计中信号的当前值分支到特定语句。SystemVerilog有两个主要...原创 2022-10-21 08:30:40 · 172 阅读 · 0 评论 -
SystemVerilog-程序块 (procedural blocks)
数字硬件建模SystemVerilog-程序块 (procedural blocks)经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL编程语句。程序块是编程语句的容器。程序块的主要目的是控制何时应执行编程语句,例如每当时钟上升沿出现时,或每当信号或总线改变值时。SystemVerilog有两种主要类型的程序块: initial 程序块和always 程序块。initi...原创 2022-10-11 08:30:49 · 856 阅读 · 0 评论 -
SystemVerilog-归约运算符(Reduction operators)
数字硬件建模SystemVerilog-归约运算符(Reduction operators)经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~介绍归约运算符对单个操作数的所有位执行运算,并返回标量(1位)结果。表5-9列出了归约运算符。表5-9:RTL建模的归约...原创 2022-10-11 08:30:49 · 1292 阅读 · 0 评论 -
SystemVerilog-移位运算符
数字硬件建模SystemVerilog-移位运算符经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。移位运算符移位运算符将向量的位向右或向左移位指定的次数。SystemVerilog具有按位和算术移位运算符,如表5-18所示。表5-18:RTL建模的移位运算符按位移位只是将向量的位向右或向左移动指定的次数,移出向量的位丢失。移入的新位是零填充的。例如,操...原创 2022-09-01 08:30:36 · 4269 阅读 · 0 评论 -
SystemVerilog-逻辑运算符
数字硬件建模SystemVerilog-逻辑运算符经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。逻辑运算符逻辑运算符对其操作数求值,并返回一个值,该值指示求值结果是真还是假(true or false)。例如,运算a && b测试a和b是否都为真,如果两个操作数都为真,则运算符返回真。否则,运算符返回false。逻辑运算符返回值。Sy...原创 2022-09-01 08:30:36 · 1702 阅读 · 0 评论 -
SystemVerilog-(按)位运算符
数字硬件建模SystemVerilog-按位运算符经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~介绍(按)位运算符(Bitwise operators)位运算符一次执行一位操作,从最右边的位(最低有效位)向最左边的位(最高有效位)移......原创 2022-08-12 08:30:45 · 4971 阅读 · 0 评论 -
SystemVerilog-条件(三元)运算符
数字硬件建模SystemVerilog-条件(三元)运算符经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~介绍RTL建模中广泛使用的运算符是条件运算符,也称为三元运算符,该运算符用于在两个表达式之间进行选择——表5-2列出了用于表示条...原创 2022-08-03 08:30:59 · 2764 阅读 · 0 评论 -
SystemVerilog-连接和复制运算符
数字硬件建模SystemVerilog-连接和复制运算符经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~介绍连接和复制运算符将多个表达式连接在一起,形成一个向量表达式。结果向量中的位总数是每个子表达式中所有位的总和。连接有两种形式,简...原创 2022-07-27 08:30:09 · 1287 阅读 · 0 评论 -
SystemVerilog-运算符/表达式规则
数字硬件建模SystemVerilog-运算符/表达式规则经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。马上HDLBits-SystemVerilog版本也开始准备了,基本这一部分完成后就开始更新~介绍运算符对操作数执行操作。大多数运算符都有两个操作数。例如,在运算a+b中,+(加法)运算的操作数是a和b。每个操作数都被称为...原创 2022-07-21 08:30:20 · 2003 阅读 · 0 评论 -
SystemVerilog-使用结构体和联合体的例子
数字硬件建模SystemVerilog-使用结构体和联合体的例子使用结构体和联合体的例子结构体和联合体可以包括压缩或非压缩数组,压缩结构体或联合体只能包括压缩数组。压缩和非压缩的数组可以将结构体和联合体作为元素包含在数组中。在压缩数组中,结构体或联合体也必须是压缩的。数组可以包含自定义结构体和自定义联合体。综合支持数组中的压缩或非压缩结构体。示例4-8说明了如何使用结构体...原创 2022-07-14 08:30:22 · 932 阅读 · 0 评论 -
SystemVerilog-联合体(union)
数字硬件建模SystemVerilog-联合体(union)联合体(union)联合体是一个可以有多个数据类型表示的单个存储元素,联合体的声明类似结构体,但推断出的硬件非常不同。结构体是几个变量的集合。union是单个变量,可以在不同的时间使用不同的数据类型。union可以存储的变量类型列在大括号({})之间,每个变量类型都有一个名称:在本例中,变量是data。data变...原创 2022-07-07 08:30:51 · 2622 阅读 · 0 评论 -
SystemVerilog-结构体(二)
数字硬件建模SystemVerilog-结构体(二)结构体结构体用于将多个变量组合在一个通用名称下。设计通常具有逻辑信号组,例如总线协议的控制信号,或状态控制器内使用的信号。结构体提供了将这些相关变量捆绑在一起的方法。结构体中的所有变量都可以单个赋值,或者每个变量都可以单独赋值。结构体包可以复制到具有相同定义的另一个结构体,并通过模块端口、任务或函数进出。结构体复制一个自...原创 2022-06-30 08:30:03 · 1231 阅读 · 0 评论 -
SystemVerilog-结构体(一)
数字硬件建模SystemVerilog-结构体(一)结构体结构体用于将多个变量组合在一个通用名称下。设计通常具有逻辑信号组,例如总线协议的控制信号,或状态控制器内使用的信号。结构体提供了将这些相关变量捆绑在一起的方法。结构体中的所有变量都可以单个赋值,或者每个变量都可以单独赋值。结构体包可以复制到具有相同定义的另一个结构体,并通过模块端口、任务或函数进出。结构体声明结构体...原创 2022-06-28 08:30:37 · 2236 阅读 · 0 评论 -
SystemVerilog(十三)-枚举数据类型
数字硬件建模SystemVerilog(十三)-枚举数据类型上一节介绍了已经被淘汰的$unit声明空间,今天我们来看看一种重要的数据类型-枚举数据类型。枚举数据类型提供了一种声明变量的方法,该变量可以包含有效值的特定列表。每个值都与一个标签(确定的用户自定义名宇)相关联。枚举变量用enum关键字声明,后面是用大括号({})括起来的逗号分隔的标签列表。在下面的示例中,变量r...原创 2022-06-24 08:30:16 · 2736 阅读 · 1 评论 -
SystemVerilog(十二)-$unit声明空间
笔记$unit是一个危险的共享名称空间,充满危险。它的使用会导致设计难以编译和维护。下列unit代表$unit在将包添加到SystemVerilog标准之前,SV提供了一种不同的机制来创建多个模块共享的定义。这个机制是一个名为unit的伪全局名称空间,也称unit 编译单元或声明空间。声明空间之外的任何声明都在unit声明空间中。在下面的示例中,bool_t的定义在两个模...原创 2022-06-21 08:30:23 · 1125 阅读 · 0 评论 -
SystemVerilog(十一)-SystemVerilog 包
数字硬件建模SystemVerilog(十一)-SystemVerilog 包最初的Verilog语言没有一个可用于多个模块的定义。每个模块都必须有任务、函数、常量和其他共享定义的冗余副本。传统的Verilog编码风格是将共享定义放在一个单独的文件中,然后可以使用“include”编译指令将其包含在其他文件中。该指令指示编译器复制包含文件的内容,并将这些内容粘贴到“inc...原创 2022-06-15 08:30:19 · 885 阅读 · 0 评论 -
SystemVerilog(十)-用户自定义类型
除了前面几篇文章讨论的内置数据类型之外,SystemVerilog还为工程师定义新的数据类型提供了一种机制。用户定义的数据类型允许从现有数据类型创建新的类型定义。用户自定义类型是使用typedef关键字创建的。例如:一旦定义了新的数据类型,就可以用来定义新数据类型的变量和网络:用户自定义类型的命名约定用户自定义类型名可以是任何合法标识符。在大型设计中,定义用户自定义类型的...原创 2022-06-09 08:30:15 · 433 阅读 · 0 评论 -
SystemVerilog-阶段性总结(一)
前面已经写了大约10篇左右文章介绍了SV,效果不是特别理想,对于一些常规的概念还是比较好理解的,但是对于一些新的专业术语,翻译的比较拗口还是比较难理解的,这是因为国内还没有针对可综合SystemVerilog系统的介绍,导致标准里的术语翻译不精确,后续可能还是使用英语单词来表示,然后用一些非专业术语去解释,下面简单总结一下这十几篇内容。最前面几篇文章重点介绍SystemV...原创 2022-06-07 08:30:41 · 1640 阅读 · 0 评论 -
SystemVerilog(九)-网络和变量的未压缩数组
数字硬件建模SystemVerilog(九)-网络和变量的未压缩数组SystemVerilog有两种类型的数组:压缩数组和非压缩数组。压缩数组是连续存储的位的集合,通常称为向量。非压缩数组是网络或变量的集合。集合中的每个网络或变量称为数组元素。未压缩数组的每个元素的类型、数据类型和向量大小都完全相同。每个未压缩的数组元素可以独立于其他元素存储;这些元素不需要连续存储。软件...原创 2022-05-20 08:30:36 · 506 阅读 · 0 评论 -
数字硬件建模SystemVerilog(八)-端口声明
端口声明模块定义包括一个端口列表,该列表用括号括起来。端口用于将数据传入或传出模块。模块可以有四种类型的端口:输入、输出、双向输入输出和接口(input,output, bidirectional inout,和 interface)。输入、输出和输入输出端口是离散端口,其中每个端口通信一个值或用户定义的类型。接口端口是复合端口,可以通信多个值的集合。本文介绍离散端口的语...原创 2022-05-13 08:30:00 · 2570 阅读 · 0 评论 -
SystemVerilog(七)-网络
数字硬件建模SystemVerilog(七)-网络System Verilog提供两组通用的数据类型:网络和变量(nets 和 variables)。网络和变量同时具有类型和数据类型特性。类型表示信号为网络或变量,数据类型表示网络或变量的值系统,即2态或4态。为简单起见,使用术语data type来表示信号的类型和数据类型。软件工具(如仿真器和综合编译器)使用数据类型来确...原创 2022-05-09 08:30:00 · 799 阅读 · 0 评论 -
优秀的 Verilog/FPGA开源项目介绍(二十二)- SystemVerilog常用可综合IP模块库
SystemVerilog常用可综合IP模块库想拥有自己的SystemVerilog IP库吗?设计时一个快捷键就能集成到自己的设计,酷炫的设计你也可以拥有!每个公司应该都会维护属于自己公司风格的IP库,作为个人学习或者持续使用的方式,这种方法很有用。今天肯定不是分享我司的IP库,而是一个开源库,每个人都可以使用、维护或者修改,当然作为学习(多人维护)也是不可多得的资料。...原创 2022-05-05 08:30:00 · 1806 阅读 · 0 评论 -
SystemVerilog(六)-变量
System Verilog提供两组通用的数据类型:网络和变量(nets 和 variables)。网络和变量同时具有类型和数据类型特性。类型表示信号为网络或变量,数据类型表示网络或变量的值系统,即2态或4态。为简单起见,使用术语data type来表示信号的类型和数据类型。软件工具(如仿真器和综合编译器)使用数据类型来确定如何存储数据和处理数据上的更改。数据类型影响操作...原创 2022-04-22 08:30:00 · 2639 阅读 · 0 评论