Re: [問題] Verilog十六分之幾的做法

看板Electronics作者 (knock!knock!)時間17年前 (2008/10/04 14:47), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串2/2 (看更多)
剛吃飽沒事幹 做點腦力訓練 以下提供我的作法 ※ 引述《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
用sequence machine做的話 4 cycle->換到剩一個adder
10/04 23:31, 1F

10/18 03:54, , 2F
16/16: full passing through, +1/16 對變錯 劃蛇腳
10/18 03:54, 2F

10/30 20:32, , 3F
不+1/16僅能輸出0/16~15/16 劃蛇腳? 斷尾蛇?
10/30 20:32, 3F
文章代碼(AID): #18vn6IKq (Electronics)
文章代碼(AID): #18vn6IKq (Electronics)