作者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