RTL基本知识:逻辑强度模型(Logic Strength Model)

本文主要介绍HDL语言中常用的逻辑强度模型,并且以Verilog示例为主,最后介绍VHDL中常用的各种逻辑值系统.
Verilog中提供了大量的模型用于模拟具体的硬件电路,例如and,or,nmos等,同时为了更加精确的模拟具体的电路信号强弱变化情况、信号的传输、充放电等行为,依据信号的逻辑强度模型,用不同的信号强度描述信号在电路传输中的状态,用以进一步提高仿真的精确度,特别是对于分析多种驱动来源同时驱动同一线网时产生的赋值冲突问题和被驱动信号的最终属性很有帮助.这种信号强度的变化在Verilog中是用逻辑强度模型来进行模拟的,并且这种逻辑强度模型按照电平的高低主要分为两大类:strength0和strength1,这两大类的具体情况如下图和下表所示:


而strength0和strength1又可更具这些强度的用途分为两类:负荷强度(charge strength)和驱动强度(drive strength).
负荷强度:一般用于trireg声明的线网类型,类似于模拟实际电路电容的大小;
驱动强度:一般用于描述被驱动线网的强度;
在仿真设计验证的过程中,一般在没有明确限制具体取值范围时,通常使用的"0","1","Z"和"X"的取值范围如下图所示:

而经常使用的逻辑值"0","1"的强度为strong,"x"其实为一个范围,其取值可能是这个范围中的任何一个值.
【注意】

    • 在缺省情况下,线网或者逻辑们的输出具有的强度为St1和St0.但是在具体建模时也可以指定不同逻辑强度,可指定输出逻辑强度的有效逻辑门如下表所示:

    • 在strength1中指定highz1,例如逻辑门例化后输出为1时,实际输出为HiZ,在strength0中指定highz0,例如逻辑门例化后输出为0时,实际输出为HiZ,因为高阻态并没有一个确定的逻辑值,所以其输出显示为Z,而不是HiZ0或者HiZ1,所以(high0,high1)或者(high1,high0)的组合是无效的, ,strength1,strength1)或者(strength0,strength0)的组合也是无效的.

【示例】

仿真结果如下: 

    • trireg声明线网的同时可以指定其衰减时间,用以模拟电容中电荷衰减的过程.还需要注意的是,在使用一些特殊的门单元时,线网中传递的数据的强度可以在经过特定逻辑门后强度衰减.常见的信号强度衰减的情况主要有两大类:
    • 信号通过非阻抗器件 当supply(Su)强度的信号通过nmos、pmos或者coms时,信号强度将衰减为strong(St); 当supply(Su)强度的信号通过tran、tranif0或者tranif1时,信号强度将衰减为strong(St);
    • 信号通过阻抗器件 信号通过rnmos、rpmos、rcoms、rtran、rtranif1、rtranif0等逻辑器件后,信号强度衰减规律如下表所示: 通过对相关线网指定不同强度,可精确的模拟信号在电路中传输时信号状态的变化,为模拟不同强度信号驱动线网提供一个更加准确的描述.因此这里需要注意,一般线网可以指定特定的强度,不同的线网强度相互作用会得到不一样的结果,为了对这种现象进行描述,这里主要从以下几方面来对不同强度信号的连接进行示例说明. #信号强度的指定 在没有明确指定的情况下,一般默认的信号强度为(St1,St0),trireg的charge强度为medium(Me),tri1强度为Pu1,tri0为Pu0,supply1强度为Su1(在低功耗仿真验证时需要注意supply1的使用),supply0的强度为Su0,其中charge strength一般只用于trireg,driving strength用于下表的线网描述中:

    • 强度声明指定的方式一般分为两种:
    • 线网声明时指定强度,需要注意此时需要同时指定具体数值;
    • 线网在过程性赋值时指定; 具体格式如下:

【示例】

1信号有确定强度(UAS:unambiguous strength)和数值情况 根据信号的强度、数值以及组合方式等的不同,不同信号的组合结果存在多种情况,以下将分别示例讨论. 1>sig1和sig2没有进行线逻辑操作(线与、线或等),如果sig1的信号强度比sig2的信号强度高,sig1和sig2的数值也不一样的话,那么最终的结果将由sig1决定.如果sig1和sig2的数值相同,那么最终结果的强度由sig1和sig2中强度搞得决定.

【示例】

上述电路可通过如下Verilog语句表述

仿真结果如下:

2>sig1和sig2进行线逻辑操作(triand,wand,trior,wor)

【示例】UAS信号sig1和sig2

进行线逻辑操作的信号的最终值由逻辑操作决定,强度由为线逻辑操作指定强度决定. #信号的强度不确定的情况(AS:ambiguous strength) 当多个信号进行组合时,因为每个信号的强度和数值一般情况下都是不一样的,所以在不同的配置属性下,其组合后结果的强度往往是一个范围.当然,如果两个信号的强度一样且数值相反,那么其组合后的结果为不定态.对于信号强度不确定的具体情况大致可分为以下几类:

1>信号有确定的数值,但属于AS;

2>信号有不定态(不定态的取值范围不定,所以不定态的强度一般有strength1和strength1的一部分共同组成);

3>信号中有低电平范围的值,且低电平范围包含高阻态; 4>信号中有高电平范围的值,且高电平范围包含高阻态;

【示例1】 组合的两个信号强度分别是weak1和weak0,两者组合后的结果为weakX

上述电路可通过如下Verilog语句表述如下:

仿真结果如下:

【示例2】 进行三态逻辑操作的两个信号中有一个信号为确定的状态和确定的值St1(或We0),另一个信号值为不定态,最终三态逻辑的输出为一个范围,如下图所示: 

上述电路可通过如下Verilog语句表述如下:

仿真结果如下:

【示例3】来自于两个三态门的输出进行组合后,其组合后的最终输出由两部分共同决定:

上述电路可通过如下Verilog语句表述:

仿真结果如下:

MOS管操作与三三态门基本类似,如下图所示:

上述电路可通过如下Verilog语句表述:

仿真结果如下:

但是这里需要注意,如果将上图中下不得Pu0改为Su0,那么因为pmos对于supply强度有衰减作用,所以此时的低电平范围将会变为"630",当"630"和"651"进行组合后,最终的输出将为"66X",即StX.

【示例4】将上例中的三态门替换为与门,与门的一个输入为不定态,且指定与门取值的范围.例如,N1的强度范围为"St1-HIZ0",N2的强度范围为"St1-We0".因为b为不定态StX(为一个范围,St1-St0),经过与门N1后的输出的强度范围为:St1-HiZ0,即下图中的StH.因为c和d的值均为0,均有一个确定的数值和强度,所以经过与门N2后的结果为We0.N1的输出与N2的输出进行组合后的结果即为"36X".

上述电路可通过如下Verilog语句表述:

仿真结果如下:

2 AS信号与UAS 信号的组合 AS信号与UAS 信号进行组合后的最终信号状态的确定一般依据以下规则:

规则一 AS信号的强度高于UAS信号,最终组合的输出信号的强度由AS强度范围决定;

规则二 AS信号的强度小于等于UAS信号,最终组合的输出将不包含AS信号中强度小于等于UAS信号的那部分强度;

规则三如果按照上两条规则产生的结果强度中存在间隔(指UAS强度范围在AS强度范围中时),那么组合后最终的输出将包含结果中的间隔部分;

【示例1】AS信号的强度小于UAS的强度,那么结果将遵守上述规则二,所以最终的输出结果UAS的部分强度.

上述示例可通过如下Verilog语句表述:

仿真结果如下:

【示例2】AS信号强度范围为St1-We0,UAS强度为Pu1,AS信号与UAS信号组合后,AS中小于UAS的强度范围将不出现在最终的结果中,而AS中大于UAS的部分与UAS共同组成最终的结果的强度范围.

上述示例可通过如下Verilog语句表述:

仿真结果如下:

【示例3】 AS信号强度大于UAS,所以最终组合结果的强度范围为UAS到AS,如下图所示:

上述示例可通过如下Verilog语句表述:

仿真结果如下:

【示例4】AS信号通过线逻辑操作后的强度如下图所示:

上述示例可通过如下Verilog语句表述如下:

仿真结果如下:

【题外话】VHDL逻辑系统

不同的EDA工具开发了不同的逻辑系统,不同的设计团队也可能根据各自需要设计不同的逻辑组合,从而构建特殊的逻辑系统,例如:四值逻辑\七值逻辑\九值逻辑等,这里仅摘要常用的作一介绍.

说明:std_logic类型是std_ulogic类型的一个子集,相较std_logic,std_ulogic增加了一个新的逻辑值‘U‘,std_ulogic中没有指定两个std_ulogic信号连接到同一个节点上发生冲突后的逻辑值,因此需要使用该类型时,需要注意两个输出信号直接连接的情况. std_logic和std_ulogic属于仿真和综合中特别重要的数据类型,通过这两种数据类型可以精确的描述仿真电路状态.但是并不是所有的仿真中可见的数据类型都可以对应到具体的电路中,在九值逻辑中,目前普遍可被大多数EDA工具普遍认可的综合数据类型有"1","0",其他数据类型综合时需要根据特定的使用情况区分对待,所以在进行设计时,最好使用综合前后数据类型一致性较好的数值.

欢迎大家关注魏老师的微信公众号:芯光灿烂

原文地址:https://www.cnblogs.com/xgcl-wei/p/9384717.html

时间: 2024-08-28 20:52:25

RTL基本知识:逻辑强度模型(Logic Strength Model)的相关文章

前端开发:css基础知识之盒模型以及浮动布局。

前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把它写到我的博客中,想知道自己过来翻就好啦 ^_^  下面楼主把当前的自己对css的基础认知一一给大家道来...... 盒模型 谈到盒模型,有经验的小伙伴一定滚瓜烂熟,无非就是 内容(content).填充(padding).边框(border).边界(margin): 这些属性我们可以把它转移到我们

机器学习之——判定边界和逻辑回归模型的代价函数

判定边界(Decision Boundary) 上一次我们讨论了一个新的模型--逻辑回归模型(Logistic Regression),在逻辑回归中,我们预测: 当h?大于等于0.5时,预测y=1 当h?小于0.5时,预测y=0 根据上面的预测,我们绘制出一条S形函数,如下: 根据函数图像,我们知道,当 z=0时,g(z)=0.5 z>0时,g(z)>0.5 z<0时,g(z)<0.5 又有: 所以 以上,为我们预知的逻辑回归的部分内容.好,现在假设我们有一个模型: 并且参数?是向

逻辑回归模型预测股票涨跌

http://www.cnblogs.com/lafengdatascientist/p/5567038.html 逻辑回归模型预测股票涨跌 逻辑回归是一个分类器,其基本思想可以概括为:对于一个二分类(0~1)问题,若P(Y=1/X)>0.5则归为1类,若P(Y=1/X)<0.5,则归为0类. 一.模型概述 1.Sigmoid函数 为了具象化前文的基本思想,这里介绍Sigmoid函数: 函数图像如下: 红色的线条,即x=0处将Sigmoid曲线分成了两部分:当 x < 0,y <

linux基础知识&mdash;&mdash;&mdash;&mdash;&mdash;&mdash;逻辑卷管理器(lvm)

*****什么是lvm:           lvm就是将几个物理的分区通过软件组合成为一块看起来是独立的大磁盘(vg),然后将这块大磁盘分成可使用的分区. 然后就可以格式化创建文件系统,最终可以挂载使用啦.   *****我们该如何创建lvm呢? 一.首先创建分区,将其id设为8e,如下图   二.然后创建pv      pv阶段有如下常用的命令 pvcreate : 将物理的分区创建为pv pvscan  : 查看磁盘里的所有pv的信息 pvdiplay :查看pv的状态 pvremove

逻辑回归模型(Logistic Regression)及Python实现

逻辑回归模型(Logistic Regression)及Python实现 http://www.cnblogs.com/sumai 1.模型 在分类问题中,比如判断邮件是否为垃圾邮件,判断肿瘤是否为阳性,目标变量是离散的,只有两种取值,通常会编码为0和1.假设我们有一个特征X,画出散点图,结果如下所示.这时候如果我们用线性回归去拟合一条直线:hθ(X) = θ0+θ1X,若Y≥0.5则判断为1,否则为0.这样我们也可以构建出一个模型去进行分类,但是会存在很多的缺点,比如稳健性差.准确率低.而逻辑

逻辑回归模型梯度下降法跟牛顿法比较

1.综述 机器学习的优化问题中,梯度下降法和牛顿法是常用的两种凸函数求极值的方法,他们都是为了求得目标函数的近似解.梯度下降的目的是直接求解目标函数极小值,而牛顿法则变相地通过求解目标函数一阶导为零的参数值,进而求得目标函数最小值.在逻辑回归模型的参数求解中,一般用改良的梯度下降法,也可以用牛顿法. 2 梯度下降法 2.1算法描述 1.确定误差范围和下降的步长,确定函数的导函数 2.while(|新值 -旧值| >误差) 3.       旧值=新值 4.       新值=初始值-步长*导函数

Python之逻辑回归模型来预测

建立一个逻辑回归模型来预测一个学生是否被录取. import numpy as np import pandas as pd import matplotlib.pyplot as plt import os path='data'+os.sep+'Logireg_data.txt' pdData=pd.read_csv(path,header=None,names=['Exam1','Exam2','Admitted']) pdData.head() print(pdData.head())

基于分类问题的逻辑回归模型

由于分类问题的输出是0.1这样的离散值,因而回归问题中用到的线性回归模型就不再适用了.对于分类问题,我们建立逻辑回归模型. 针对逻辑回归模型,主要围绕以下几点来讨论. Logistic Regression (逻辑回归) Sigmoid Function (逻辑函数) Decision Boundaries (决策边界) Cost Function (代价函数) 决策边界不是数据集的属性,而是假设本身及其参数的属性.我们不是用训练集来定义的决策边界,我们用训练集来拟合参数θ,一旦有了参数θ就可以

可视化格式模型(visual formatting model)系列

俗话说得好,万丈高楼平地起.在前端各种框架和工具层出不穷的今天,研究css标准.js的基础特性这些并不是浪费时间,相反打好了基础,才能更好的去拥抱变化. 这个东西呢,是准备当做一个系列来写,主要参考官方的标准和前辈们的一些归纳总结,不是全盘翻译,只是一个知识的梳理,查漏补缺.这个系列主要还是理论概念,我会尽量通过demo和自己平时遇到的一些具体问题来结合说明.这个系列呢,初步的考虑是以下几篇组成: 1.可视化格式模型(visual formatting model): 2.控制包含框的生成(Co