Re: [問題] Verilog十六分之幾的做法
剛吃飽沒事幹 做點腦力訓練
以下提供我的作法
※ 引述《kuraki7up (Make Mai Day)》之銘言:
: 我有一個16bit的值(reg [15:0]Origin)
: 須做其1/16,2/16......15/16,16/16的數值
: 我現在的做法是 先取1/2 {1'b0,Origin[15:1]}
: 1/4 {2'b0,Origin[15:2]}
: 1/8 {3'b0,Origin[15:3]}
: 1/16{4'b0,Origin[15:4]}
這作法基本上沒錯,到這一步為止,不會用到LOGIC GATE,僅拉線
: 之後再相加 5/16=1/4+1/16
: 不過這樣的做法 占了我很大的logic gates
: 請問有無更好的做法 謝謝
這裡的想法也沒錯,我也覺得這樣最省
但你說佔很大LOGIC GATE
我想可能是你用了太大的MUX或太多的加法器
要省面積的方法,最基本的就是resource sharing
我的話會這樣寫(虛擬碼)
S[3:0] //選擇線
out //輸出值
//A0~A3, out都是16bit bus
assign A0 = S[0]?(1/16的值):16'b0;
assign A1 = S[1]?(1/8的值):16'b0;
assign A2 = S[2]?(1/4的值):16'b0;
assign A3 = S[3]?(1/2的值):16'b0;
out = (A0+A1) + (A2+A3) + (1/16的值);
這樣,用了4個16bit 2對1MUX,4個16bit加法器
我相信有更省的作法(EX:在處理值較小的路徑時,可以用小於16bit的MUX和加法器)
但我懶的想了XD,希望對你有幫助。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.121.133
推
10/04 23:31, , 1F
10/04 23:31, 1F
→
10/18 03:54, , 2F
10/18 03:54, 2F
→
10/30 20:32, , 3F
10/30 20:32, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):