看板 Electronics 關於我們 聯絡資訊
剛吃飽沒事幹 做點腦力訓練 以下提供我的作法 ※ 引述《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
arclitetank:用sequence machine做的話 4 cycle->換到剩一個adder 10/04 23:31
colinshih:16/16: full passing through, +1/16 對變錯 劃蛇腳 10/18 03:54
pupucar:不+1/16僅能輸出0/16~15/16 劃蛇腳? 斷尾蛇? 10/30 20:32