Electronics 板


LINE

※ 引述《wowow11 (owo)》之銘言: 16'd8 = 0000_0000_0000_0100 16'd4 = 0000_0000_0000_0100 16'd2 = 0000_0000_0000_0010 負二要怎麼以binary表示 ? 1111_1111_1111_1101 + 1 1111_1111_1111_1110 是 -2 ----------------------------------------- 1111_1111_1111_1101 是 -3 建議你先做一個,把負數轉為正數的東西 類似 assign posIn[15:0] = ddInput[15] ? ~ddInput[15:0] +1 : ddInput[15:0] ; 然後只有正數拿去做除數跟被除數 然後出來的結果再加個負號.... 類似 assign realOp = ddInput[`DdLen]^dvInput[DdLen] ? ~Op : Op ; ----------------------------------------- 這樣應該就能解決您的問題 , 不過你還有別的更大的問題, 1. code不能合成,裡面用一些wait , repeat 2. 沒有clk的概念.....etc 建議多想想什麼叫做 RTL code 還有您寫出來的code會被合成什麼樣的電路 ? : 下面是一個divide的code : `define DvLen 16 : `define DdLen 32 : `define QLen 16 : `define HiDdMin 16 : module divide : (input [`DdLen-1:0] ddInput,dvInput, : output reg signed [`QLen-1:0] quotient, : input go, : output reg done); : reg signed [`DdLen-1:0] dividend; : reg signed [`DvLen-1:0] divisor; : reg negDivisor,negDividend; : always begin : done=0; : wait(go); : divisor=dvInput; : dividend=ddInput; : quotient=0; : if (divisor) begin : negDivisor=divisor[`DvLen-1]; : if (negDivisor) divisor=-dividend; : negDividend=dividend[`DdLen-1]; : if (negDividend) dividend=-dividend; : repeat (`DvLen) begin : quotient=quotient<<1; : dividend=dividend<<1; : dividend[`DdLen-1:`HiDdMin]= : dividend[`DdLen-1:`HiDdMin]-divisor; : if (!dividend[`DdLen-1]) quotient=quotient+1; : else : dividend[`DdLen-1:`HiDdMin]= : dividend[`DdLen-1:`HiDdMin]+divisor; : end : if (negDivisor != negDividend) quotient=-quotient; : end : done=1; : wait(~go); : end : endmodule : 教授要我們寫出一個4種狀況的test bench (正除正 正除負 負除正 負除負) : 以下是我寫的code : `include "3.1.v" : module test_divide; : reg [`DdLen-1:0] dvInput,ddInput; : reg go; : wire done; : wire [`QLen-1:0] quotient; : parameter DELY = 100; : always begin go=1; forever #(DELY/2) go=~go; end : divide t (ddInput,dvInput,quotient,go,done); : initial begin : ddInput=16'd0;dvInput=16'd0; : #DELY go=1'b0; ddInput= 16'd8; dvInput= 16'd2; : #DELY go=1'b0; ddInput= -16'd4; dvInput= 16'd2; : #DELY go=1'b0; ddInput= 16'd2; dvInput= -16'd2; : #DELY go=1'b0; ddInput= -16'd9; dvInput= -16'd3; : #DELY $stop; : end : initial $monitor($time,,,"ddInput=%d dvInput=%d,quotient=%d",ddInput,dvInput,quotient); : endmodule : 在執行正除正沒問題 可是負數就出現一堆數字了 希望各位大大幫我更正一下QQ --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.228.245.85 ※ 編輯: Acme 來自: 220.228.245.85 (05/15 01:26)
1F:推 wowow11:感謝您 我是verilog新手~"~ 05/15 03:35
2F:推 wowow11:另外是...divide是課本上的test bench才是我寫的QQ 05/15 03:41
3F:→ Acme:那是否可請問是哪本書,出版社 ? 讓小的瞻仰瞻仰.... 05/15 18:41
4F:→ wowow11:The Verilog Hardware Descripion Language,Fifth Edition 05/17 04:12
5F:→ wowow11:Kiuwer Academic Publishers 科大文化代理 05/17 04:13
6F:→ wowow11:另外是.reg signed [`DdLen-1:0] dvInput,ddInput; 05/17 04:22
7F:→ wowow11:wire signed [`QLen-1:0] quotient; 05/17 04:23
8F:→ wowow11:這樣就可以了QQ 05/17 04:23
9F:→ wowow11:2個signed是爆肝4天換來的orz... 05/17 04:24







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP