加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 数据流描述方式采用什么语句?
    • 驱动和赋值的概念有什么区别?
    • 行为描述主要用哪两种语言?
    • 过程赋值语句是什么?
    • 模块实例的端口对应方式有哪些?
    • 简述RTL级和行为级设计的区别?
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

笔记 | verilog描述方式和设计层次

2023/01/09
1538
阅读需 5 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

数据流描述方式采用什么语句?

数据流描述最基本的语句是assign连续赋值语句。

连续赋值语句是Verilog数据流建模的基本语句,用于对线网进行赋值,等价于门级描述,是从更高的抽象角度来对电路进行描述。连续赋值语句必须以关键词assign开始。

连续赋值语句的左值可以是一下类型之一:标量线网、向量线网、矩阵中的一个元素(该矩阵可以是标量线网类型的,也可以是向量线网类型的)、向量线网的某一位、向量线网的部分位以及上述各种类型的拼接体。但是,不能是向量或向量寄存器

连续赋值语句总是处于激活状态。只要任意一个操作数发生变化,表达式就会被立即重新计算,并且将结果赋给等号左边的线网。操作数可以是标量或向量的线网或寄存器,也可以是函数的调用。赋值延迟用于控制对线网赋予新值的时间,根据仿真时间单位进行说明。赋值延迟类似于门延迟,对于描述实际电路中的时序是非常重要的。

驱动和赋值的概念有什么区别?

驱动(Driving)和赋值(Assigning)。 线网是被驱动的,该值不被保持,在任意一个仿真步进上都需要重新计算;寄存器是被赋值的,且该值在仿真过程中被保持,直到下一个赋值的出现。寄存器型数据保持最后一次的赋值,而线型数据需要持续的驱动。wire使用在连续赋值语句中,而reg使用在过程赋值语句(initial ,always)中。wire若无驱动器连接,其值为z,reg默认初始值为不定值 x 。

行为描述主要用哪两种语言?

所谓行为描述,是指用语言描述电路的行为。行为描述的语句有两种:initial和always语句。

initial语句在0仿真时间执行,而且只执行一次;always语句同样在0仿真时间开始执行,但是它将一直循环执行。这样的特点单单从它们的命名上就能看得出来:一个是initial,就是初始化一次的意思;另一个是always,就是总在运行的意思。

逻辑运算“L=AB+BC+AC”对应的行为级描述:

过程赋值语句是什么?

与数据流描述的连续赋值对应的是行为描述的过程赋值的语句。

过程赋值语句的更新对象是寄存器、整数、实数或时间变量等。这些类型的变量在被赋值后,其值将保持不变,直到被其他过程赋值语句赋予新值。过程赋值语句只有在执行到的时候才会起作用。过程赋值语句只能在initial或always语句内进行赋值,只能对变量数据类型赋值,同时initial和always中只能使用过程赋值语句。过程赋值语句的左值可以是以下类型之一:reg、整形数、实型数、时间寄存器变量或存储器单元、述各种类型的位选、上述各种类型的域选、面三种类型的拼接。

过程性赋值语句包括两种类型的赋值语句:阻塞赋值(=)和非阻塞赋值(<=)。

模块实例的端口对应方式有哪些?

在使用这个模块时(模块例化),我们有两种方法例化, 按位置例化和按名称例化。

按位置例化:例化时,需要所有的参数顺序必须和模块本身的顺序一致;例化时,只要写端口名字即可。

按名称例化:必须指定当前例化的端口名称,端口的顺序可以自由排序,不一定和模块本身的顺序相同。

简述RTL级和行为级设计的区别?

RTL级,register transfer level,指的是用寄存器这一级别的描述方式来描述电路的数据流方式;而行为级,Behavior级,指的是仅仅描述电路的功能而可以采用任何verilog语法的描述方式。鉴于这个区别,RTL级描述的目标就是可综合,而行为级描述的目标就是实现特定的功能而没有可综合的限制。

相关推荐

电子产业图谱

前华为海思工程师;与非网2022年度影响力创作者;IC技术圈成员。

微信公众号