作者capric (绿色海岸)
站内Electronics
标题Re: [问题] full_case 和 parallel_case差别?
时间Mon Jan 8 19:23:46 2007
我不会画ASCII,附上示意图的连结
1. full case
若design 写成这样子,合成出的电路将如下图
case (S)
2'b11: out = C;
2'b10: out = B;
2'b01: out = A;
endcase
http://img205.imageshack.us/img205/6928/fulljf0.png
很明显的,可以发现,若S=0时,out的值不知道该为什麽
因此,synthesizer会在design中加入latch
若合成时加入full_case directive
synthesizer会给定default value,netlist将不会有latch
但是,这个语法是synopsys自定,而非标准Verilog语法
2. parallel case
在这里以priority decoder为例
若design 写成这样子,合成的结果如下图
if (S == 3'b1XX)
out = C;
else if (S == 3'b01X)
out = B;
else if (S == 3'b001)
out = A;
else
out = 0;
http://img227.imageshack.us/img227/4301/priorityof8.png
另一个case的写法,也能合出相同的电路
case (S)
3'b1XX: out = C;
3'b01X: out = B;
3'b001: out = A;
default: out = 0;
endcase
但是,有些时候我们并不需要这样子的电路
而是需要类似下图这种电路
http://img227.imageshack.us/img227/7396/muxmk0.png
也就是说,我们希望
一种condition只对应一种response
这时候可使用parallel_case directive
相同地,这并非标准语法,不建议使用
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.212.234
1F:→ CuckooBoy:完全听懂!感谢你!你太强了!!m.m 01/08 20:47
2F:推 joanne51001:谢谢你的分享 05/14 12:26