在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4122|回复: 5

[讨论] 有关4值逻辑和2值逻辑的疑问

[复制链接]
发表于 2018-9-28 09:36:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
实际硬件电路对应的都是4值逻辑,实际在造激励的时候实际上用的都是2值逻辑。烦请各位大神能解释一下~
发表于 2018-10-10 20:51:12 | 显示全部楼层
引用一下书本上的解释:
2值逻辑消耗内存小,但是有风险(比如会将X与Z当做0,这样会引起误会)
发表于 2018-11-29 22:36:05 | 显示全部楼层
我给你讲讲吧,仿真器在编译verilog代码时会将verilog中的各种对象比如reg,wie,primitive,甚至always,initial,generate等各种东西,总之基本上verilog中你想得到的东西都用抽象的数据结构handle表示。这个handle是仿真器内部的数据,硬件逻辑的数据在高级语言例如c中是无法直接保存的,c中只能保存0和1,显而易见的四值逻辑需要的内存是二值逻辑的两倍。在c中保存四值逻辑是用结构体保存的,结构体有两个成员变量aval和bval,aval和bval组合就可以表示0/1/x/z。在构造激励时,显然我们必须保证给的都是确定的数据一般不会是unknown值(除非特殊用例),且一般是二值逻辑数据,这样仿真所需内存开销小,仿速度更快,因为二值逻辑可以直接对应c的数据而不需要转换。
如果我们把四值逻辑赋值给二值逻辑,那么四值逻辑c语言表示的bval部分直接丢掉保留aval部分送给二值逻辑,表现就是x和z都变成了0。
发表于 2018-11-30 14:56:24 | 显示全部楼层
四态更真实,二态节省仿真消耗的内存
发表于 2018-12-3 16:19:22 | 显示全部楼层
回复 3# saipolo


   你举得是C语言的例子,verilog也是这样吗?
发表于 2018-12-3 20:29:26 | 显示全部楼层



当然,Verilog中的四值逻辑编译器编译或elaborate时会将其转换为{aval,bval}对,使用PLI/VPI访问verilog的四值逻辑实际上就是访问一个抽象的句柄。换个说法,最早最早的verilog编译器,甚至于现在的某些开源仿真器,在编译verilog时也是先将verilog转换为逻辑等价的C代码再进行C代码的编译。四值逻辑比二值逻辑承载的信息多一倍,故理所应当的占用资源多一倍。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 20:33 , Processed in 0.025606 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表