返回信息流都说IF比CASE有优先级判断,
那么对于 if···else语句和case两状态选择语句,
这貌似在C中是等价的,
不知道在VHDL中具体实现是不是有区别啊?
这是一条镜像帖。来源:北邮人论坛 / circuit / #15890同步于 2010/12/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
[讨论]VHDL中CASE和IF区别
loneliness
2010/12/23镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
VHDL不了解
在verilog中,原则上来说,case语句没有优先级,而if语句有优先级。但实际上很多综合工具必须指定一定的选项,(synosps中为parell_case)才可以综合出并行的case语句。不加上这个说明综合出来电路的情况视综合工具而定。肯定一点的是if语句一定会综合出带优先级的电路,因为if逻辑本身描述的就是带有优先级的。
好像case综合出来就是选择器
if综合出来就是一级一级的判断。。唔。。。
【 在 lanphon (上善若水) 的大作中提到: 】
: VHDL不了解
: 在verilog中,原则上来说,case语句没有优先级,而if语句有优先级。但实际上很多综合工具必须指定一定的选项,(synosps中为parell_case)才可以综合出并行的case语句。不加上这个说明综合出来电路的情况视综合工具而定。肯定一点的是if语句一定会综合出带优先级的电路�
正解~
此外,不要把视线只放在仿真或语法这一层上,最终的目的是为了描述一个电路。
C语言里面完全是串行的,仿真有时候也很难做到完全的并行。有时候仿真出来的结果和综合后电路的运行也不是完全对应的。
所以,最好是要完全弄清楚想描述的电路是什么行为。
【 在 lanphon 的大作中提到: 】
: VHDL不了解
: 在verilog中,原则上来说,case语句没有优先级,而if语句有优先级。但实际上很多综合工具必须指定一定的选项,(synosps中为parell_case)才可以综合出并行的case语句。不加上这个说明综合出来电路的情况视综合工具而定。肯定一点的是if语句一定会综合出带优先级的电路,因为if逻辑本身描述的就是带有优先级的。
【 在 ysun36 的大作中提到: 】
: 正解~
: 此外,不要把视线只放在仿真或语法这一层上,最终的目的是为了描述一个电路。
: C语言里面完全是串行的,仿真有时候也很难做到完全的并行。有时候仿真出来的结果和综合后电路的运行也不是完全对应的。
: ...................
那么那一种电路所消耗的逻辑单元少些呢?
【 在 police 的大作中提到: 】
: 好像case综合出来就是选择器
: if综合出来就是一级一级的判断。。唔。。。
那么case是2选1的时候,电路实现不就和IF ELSE一样的么?
【 在 lanphon 的大作中提到: 】
: VHDL不了解
: 在verilog中,原则上来说,case语句没有优先级,而if语句有优先级。但实际上很多综合工具必须指定一定的选项,(synosps中为parell_case)才可以综合出并行的case语句。不加上这个说明综合出来电路的情况视综合工具而定。肯定一点的是if语句一定会综合出带优先级的电路,因为if逻辑本身描述的就是带有优先级的。
优先级的我也知道,只是对于case2选择与if..else有什么区别呢?
这个要看综合器的行为
综合成什么是综合器说了算~
case也可以综合成有优先级的也可以综合成没有优先级的。
case和if语句本身都是表象。
如果要用与非门来画电路的话,就完全没有这个问题了,因为你画的就是你想要的。
用描述语言来描述电路,要把综合器考虑进来,才能最终决定电路的行为。
【 在 loneliness 的大作中提到: 】
: 那么那一种电路所消耗的逻辑单元少些呢?