每天一点Verilog,《高级FPGA设计》学习笔记:综合编码2

当判决树有特权编码时应该利用if/else结构。

另一方面,case结构常常利用在所有条件互不相容的情况。为了在verilog中实现完全相同的功能,一个case语句可以利用。

 

    case(1)

        ctrl[0]: rout<=in[0];

        ctrl[1]: rout<=in[1];

        ctrl[2]: rout<=in[2];

        ctrl[3]: rout<=in[3];

    endcase

 

 

由于case语句是if/else结构的一个有效替代的事实,许多初学者以为这是自动地无特权判决树实现,对于更严格的VHDL语言这个碰巧是正确的,但是对verilog不是这样,可以在下图中看到verilog的具体实现图。

默认的是特权被译码来设置多路选择器上相应的使能引脚,这导致许多设计者落入陷阱。为了去除这个特权编码,利用综合的伪指令“parallel_case”来实现真正的并行结构。但是并不提倡这么做。去除特权后的结构图如下:

如果case语句的条件没有一个是成立的,综合工具已经把寄存器的输出返回送到判决树作为一个缺省条件。对设计者来说,一个好的习惯是显式给出缺省条件,这个缺省可能或不可能是当前数值,它避免了工具自动地锁存当前值。

 

一个类似于parallel_case语句的综合伪指令是full_case伪指令。这个伪指令通知综合工具,所有的情况已经覆盖,不要求一个隐含的缺省条件。不过,这同样是不推荐使用的,会带来风险,因为用这些伪指令会引起仿真和综合之间的失配。下面是同时使用full_case和parallel_case的结构图:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值