昨天晚上看了一段代码,其中出现了`ifdef、`else、`endif,一时想不起来这几个关键字的用法的含义,所以今天来实验室就先查了一下,具体用法如下:一般情况下,Verilog HDL源程序中所有的行都参加编译。但是有时候希望对其中的一部份内容只有在条件满足的时候才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足条件时对一组语句进行编译,当条件不满足时则对另外一
转载 2024-07-16 06:18:23
454阅读
需求说明:IC设计基础 内容       :FIFO设计,同步FIFO,异步FIFO FIFO 很重要,之前参加的各类电子公司的逻辑设计的笔试几乎都会考到。 FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据, 其数据地址
我们在上一篇文章中已经看到了如何使用程序块(例如 always 块来编写按顺序执行的 verilog 代码。我们还可以在程序块中使用许多语句来控制在我们的verilog设计中信号赋值的方式。这些语句统称为顺序语句。case 语句和 if 语句都是 verilog 中顺序语句的示例。在这篇文章的其余部分,我们将讨论如何在verilog中使用这两个语句。然后,我们考虑这两个结构的简短示例,以说明我们如
写在前面:欢迎您,有缘人!1.内部线程通信线程之间需要通信,实现对执行序列的控制主要有三种:Event based、Resource sharing、Data passing内部线程通信机制:Verilog event在Verilog中,@操作符是边沿敏感的,它总是阻塞着,等待着事件的变化。其他的线程可以通过->操作符来触发事件。 Veril
面向对象编程(一) 文章目录面向对象编程(一)一、前言二、OOP术语三、对象1.创建新对象2.回收对象3.使用对象四、静态变量和全局变量 一、前言面向对象编程使用户能够创建复杂的数据类型,并且将它们跟使用这些数据类型的程序紧密地结合在一起。用户可以在更加抽象的层次建立测试平台和系统级模型,通过调用函数来执行一个动作而不是改变信号的电平。当使用事务来代替信号翻转的时候,你就会变得更加高效。这样做的附
条件语句分为两种:if...else语句和case语句 它们都是顺序语句,应该放在“always”块内;if...else判定给出的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。if...else语句有3中形式:其中,表达式为逻辑表达式或关系表达式,或一位的变量若表达的值为0或者z,则判定的结果为假,若为1,则加过为真语句分为单句,也可分为多句;多句一定用“begin
转载 2024-06-10 07:16:31
241阅读
条件语句可以分为if_else语句和case语句两张部分。 A)if_else语句三种表达形式1) if(表达式)          2)if(表达式)           3)if(表达式1)            语句1; &
转载 2024-02-24 10:05:36
1281阅读
逻辑在具体实现上是通过2个计数器来控制100ms的计时控制,具体如下:定义计数器A(取值范围在0~9),计数器B(取值范围0~38399),且计数器B的启动是在计数器A取值为9时才开始,而计数器A的计数条件为模块端口输入的10ms同步信号。在Netlist仿真中验证这个100ms能量统计时,如果基于Netlist仿真真实的100ms需要很长的时间(以周为时间单位了),为了达到测试的目的,直接将逻辑
转载 2024-05-04 13:53:06
480阅读
文章目录语法格式示例#1:ifdef示例#2:ifdef和elsif示例#3:ifndef和elsif示例#4:ifdef的嵌套Verilog支持编译器指令,可以通过编译器指令选择部分
原创 2021-12-28 14:04:37
2627阅读
关键名词解释:编译单元(compilation unit):SystemVerilog 源代码的集合编译单元域(compilation-unit scope):即编译单元的本地范围,包含其他空间之外的所有声明SystemVerilog有8个命名空间,其中两个为全局,两个为编译单元域内全局,剩余四个为局部,分别如下:定义命名空间(definitions name space),即未被嵌入定义的mod
任务与函数的区别和函数一样,任务(task)可以用来描述共同的代码段,并在模块内任意位置被调用,让代码更加的直观易读。函数一般用于组合逻辑的各种转换和计算,而任务更像一个过程,不仅能完成函数的功能,还可以包含时序控制逻辑。下面对任务与函数的区别进行概括:比较点函数任务输入函数至少有一个输入,端口声明不能包含 inout 型任务可以没有或者有多个输入,且端口声明可以为 inout 型输出函数没有输出
转载 2024-10-13 11:14:59
882阅读
数字硬件建模SystemVerilog-循环语句        经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。        马上HDLBits-SystemVerilog版本也开始准备了,基
specify block用来描述从源点(source:input/inout port)到终点(destination:output/inout port)的路径延时(path delay),由specify开始,到endspecify结束,并且只能在模块内部声明,具有精确性(accuracy)和模块性(modularity)的特点。specify block可以用来执行以下三个任务:一、描述横
转载 8月前
67阅读
最近做芯片的功耗分析,需要用 PTPX 读入门级仿真写出的 VCD 文件。门级仿真的速度非常慢,所以关注了一下和速度相关的 TimeScale 的东西。对于 TimeScale 的精确定义,可以参考 Veriog 的 1364 标准。手头的 2001 和 2005 两个版本,这方面的阐述是一样的,没有变化。简要说,TimeScale 分 time unit 和 time precision 两部分
转载 2024-07-08 08:08:42
444阅读
verilog知识记录 本文为学习Verilog记录,可以当作小白入门,想看更多verlog知识,推荐博客:Reborn Lee变量部分变量类型reg:此类型可以认为是一个寄存器,其可以保存值。wire:此类型仅仅可以进行assign进行赋值,其可以认为是一根导线。对于模块定义中的变量,如果没有显式的说明类型,将会默认为wire类型。一般而言,对于输出变
foreach结构指定在数组元素上的迭代。它的自变量是一个指明任意类型数组(固定尺寸的、动态的、及联合数组)的标识符,然后紧跟着一个包围在方括号内的循环变量的列表。每一个循环变量对应于数组的某一维。foreach结构类似于一个使用数组范围替代一个表达式来指定重复次数的repeat循环。 例子: string words[2] = {"hello", "world"};
转载 2024-02-29 15:37:19
982阅读
"#ifdef 语句1 程序2 #endif“ 可翻译为:如果宏定义了语句1则程序2。 作用:我们可以用它区隔一些与特定头文件、程序库和其他文件版本有关的代码。 代码举例:新建define.cpp文件 #include "iostream.h" int main() { #ifdef DEBUG c
转载 2016-07-26 11:35:00
225阅读
2评论
一:初实assertion  断言就是一段描述设计期望行为的代码。 目前, 对断言的使用主要在于仿真, 但断言的能力不仅仅如此。 断言是基于一些更加基础的信息, 我们称之为属性 ( Property), 属性可以用来作为断言、 功能覆盖点、 形式检查和约束随机激励生成。  断言可以嵌入到设计当中, 也可以在设计以外通过绑定链接到不同的设计点中。 断言查找期望的特定事件序列, 或者说是在特定时钟周期
转载 2024-04-08 21:02:45
816阅读
写在前面 在自己准备写verilog教程之前,参考了许多资料----FPGA Tutorial网站的这套verilog教程即是其一。这套教程写得不错,只是没有中文,在下只好斗胆翻译过来(加了自己的理解)分享给大家。这篇文章将讨论可以在 verilog 中使用的不同类型的循环语句----for循环、while循环、foever循环和repeat循环。正如之前文章中描述的那样,有许多语句只能在过程块中
转载 2024-09-05 21:51:57
341阅读
队列是一个特殊的线性表,队列简称为“对”。 队列的插入元素的操作称为“入队”或者“入队列”,删除元素的操作称为“出队”或者“出队列”。 那么,队列是如何插入元素和删除元素的呢。队列有两种存储结构,一种是顺序排列,另一种是链式排列。 队列的元素存放的都是地址连续的单元。而队列的特征是“先进先出”,且队列的入队只允许队尾操作,rear增加一位。队头front不允许修改。队列的出队则相反,只允许队头操作
转载 2024-10-30 18:56:17
268阅读
  • 1
  • 2
  • 3
  • 4
  • 5