1个回答
展开全部
此书误人子弟。对于verilog而言有符号还是没有符号线网和寄存器是一样的。那么差别在哪儿呢?在于对有符号数和无符号数的位扩展定义,算数运算的符号定义,作为数值出现的数值定义。
举个例子,用s0, s1代表两有符号的定义的矢量,u0,u1代表无符号的矢量假设他们的位数相同。s0 * s1 用的是有符号版本的乘法器,返回的也是有符号的数值,而u0 * u1用的是无符号版本的乘法器,返回的也是无符号的数值。
如果是混用,比如 s0 * u0 用的是无符号版本的乘法器,返回的是无符号的数值。这个原则很简单,如果不是self determined,且二元操作符的两个操作数都是有符号的则用有符号的版本,否则用无符号的版本。那什么叫self determined呢?就是操作数不受影响的,比如说:移位操作符。s0 << t0,这里返回的类型由s0的类型决定。
位扩展是指不同宽度的数据运算对于操作数的位宽进行扩展的行为。举例来说,如果s0是有符号宽度为2个比特的,s1是有符号宽度为3个比特的。那么s0 + s1就要对s0做位扩展,扩展到3个比特。对于有符号数的扩展是按照最高位进行扩展。而对于无符号数就只是补0。如果是混用呢?扩展是self determined的哦。但是运算是无符号的版本哦。
有符号的还会用在那些场合呢?indexing,举例而言vec[s0], vec[s0+:3], vec[s0-:2], 这里的s0都是有符号的,可以取负数的。
除了这些差别其他场合就和无符号的版本一样用法了。
举个例子,用s0, s1代表两有符号的定义的矢量,u0,u1代表无符号的矢量假设他们的位数相同。s0 * s1 用的是有符号版本的乘法器,返回的也是有符号的数值,而u0 * u1用的是无符号版本的乘法器,返回的也是无符号的数值。
如果是混用,比如 s0 * u0 用的是无符号版本的乘法器,返回的是无符号的数值。这个原则很简单,如果不是self determined,且二元操作符的两个操作数都是有符号的则用有符号的版本,否则用无符号的版本。那什么叫self determined呢?就是操作数不受影响的,比如说:移位操作符。s0 << t0,这里返回的类型由s0的类型决定。
位扩展是指不同宽度的数据运算对于操作数的位宽进行扩展的行为。举例来说,如果s0是有符号宽度为2个比特的,s1是有符号宽度为3个比特的。那么s0 + s1就要对s0做位扩展,扩展到3个比特。对于有符号数的扩展是按照最高位进行扩展。而对于无符号数就只是补0。如果是混用呢?扩展是self determined的哦。但是运算是无符号的版本哦。
有符号的还会用在那些场合呢?indexing,举例而言vec[s0], vec[s0+:3], vec[s0-:2], 这里的s0都是有符号的,可以取负数的。
除了这些差别其他场合就和无符号的版本一样用法了。
Sievers分析仪
2024-10-13 广告
2024-10-13 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询