[請益] verilog條件運算子問題請教

看板Electronics作者 (肥龜)時間8年前 (2017/10/11 16:03), 編輯推噓16(16038)
留言54則, 9人參與, 8年前最新討論串1/1
小弟最近給子電路寫output時有個小問題 以下是我的程式碼 output wire [9:0] oDATA reg chg; wire js=chg; assign oDATA=(js == 1'b1) ? {sub[10:3],2'b0}:10'b0; 關於sub的部分都是我之間的運算式,之前都有確認是正常的 有問題的是我oDATA的部分像上面這樣寫會有問題,實際跑FPGA出來會不正常 但不用條件運算式直接寫 assign oDATA={sub[10:3],2'b0}; 是可以正常執行的,請問各位大大這是甚麼原因造成的?有甚麼辦法解決嗎? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.234.232 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1507709013.A.CF3.html

10/11 18:44, 8年前 , 1F
為什麼還要再宣告一個wire?
10/11 18:44, 1F

10/11 20:19, 8年前 , 2F
為什麼要reg chg才對
10/11 20:19, 2F

10/11 20:24, 8年前 , 3F
我想正確答案都不我和一樓講的那個 你只其實有一個不
10/11 20:24, 3F

10/11 20:25, 8年前 , 4F
太合理的東西被你宣告了XD
10/11 20:25, 4F

10/11 20:26, 8年前 , 5F
你可以再想想 拿掉一個東西我想電路就會正確了
10/11 20:26, 5F

10/11 20:26, 8年前 , 6F
你可以查查assign if的用法
10/11 20:26, 6F

10/11 22:02, 8年前 , 7F
wire oDATA是試驗時用的,應該可以不需要,chg寫reg 是
10/11 22:02, 7F

10/11 22:02, 8年前 , 8F
因為有寫在always 裡,但怕是判別式裡不能用reg 才有改
10/11 22:02, 8F

10/11 22:02, 8年前 , 9F
成wire
10/11 22:02, 9F

10/11 22:42, 8年前 , 10F
所以你知道那裡有問題了嗎?
10/11 22:42, 10F

10/11 22:43, 8年前 , 11F
BTW 你那樣寫 態一樣會繼承 所以根本沒差
10/11 22:43, 11F

10/11 22:43, 8年前 , 12F
那是硬體電路 不要用軟體想法去想 那是一條線
10/11 22:43, 12F

10/11 23:06, 8年前 , 13F
有問題的就是assign那條不能用條件運算子使用,會出錯,
10/11 23:06, 13F

10/11 23:06, 8年前 , 14F
想知到為什麼不能這樣使用,並想知到如何解決,因為我看
10/11 23:06, 14F

10/11 23:06, 8年前 , 15F
到的書都沒有寫到這部分,感謝
10/11 23:06, 15F

10/11 23:10, 8年前 , 16F
@_@ 你把 output "wire" 的wire拿掉看看
10/11 23:10, 16F

10/11 23:14, 8年前 , 17F
一個小觀念 reg 不是一定指register
10/11 23:14, 17F

10/11 23:14, 8年前 , 18F
它指的是一個會變化的信號
10/11 23:14, 18F

10/11 23:14, 8年前 , 19F
wire就一定是 wire了 是一條線連過去這樣
10/11 23:14, 19F

10/11 23:21, 8年前 , 20F
我記得uc berkeley有一篇小文件講這個 講很仔細
10/11 23:21, 20F

10/11 23:22, 8年前 , 21F
很多目前你synthesis不過 儲simulate會過都是這樣
10/11 23:22, 21F

10/12 01:41, 8年前 , 22F
wire js;
10/12 01:41, 22F

10/12 01:41, 8年前 , 23F
assign js = chg;
10/12 01:41, 23F

10/12 16:32, 8年前 , 24F
J大的這方法試過了也不太行
10/12 16:32, 24F

10/12 20:15, 8年前 , 25F
改成output reg [9:0] oDATA
10/12 20:15, 25F

10/12 20:48, 8年前 , 26F
為什麼要用FPGA 看不懂的方式去寫?直接按範例方式去寫就
10/12 20:48, 26F

10/12 20:49, 8年前 , 27F
好。一般複雜的combination logic 習慣用 always@(*) 方
10/12 20:49, 27F

10/12 20:49, 8年前 , 28F
式去寫。FPGA 弄不出來,也沒有可能他根本搞不清楚你要
10/12 20:49, 28F

10/12 20:50, 8年前 , 29F
要做什麼。
10/12 20:50, 29F

10/12 20:51, 8年前 , 30F
與其花時間在探索語法問題上,除非你要寫FPGA compiler,
10/12 20:51, 30F

10/12 20:52, 8年前 , 31F
不然建議專注在主要的問題上。
10/12 20:52, 31F

10/12 21:33, 8年前 , 32F
你有寫出來的部分都沒問題,問題一定出在沒寫出來的部分
10/12 21:33, 32F

10/12 21:33, 8年前 , 33F
10/12 21:33, 33F

10/12 22:52, 8年前 , 34F
屎拉一半就要別人幫忙擦屁股..
10/12 22:52, 34F

10/12 23:15, 8年前 , 35F
output 不用改就是reg了 因為那個只有在有always才要
10/12 23:15, 35F

10/12 23:16, 8年前 , 36F
我也同意樓上 最近一堆這種文@_@ 真的是老師沒教好
10/12 23:16, 36F

10/12 23:16, 8年前 , 37F
然後都是丟上來請大家幫忙debug debug有沒有用都不知
10/12 23:16, 37F

10/12 23:17, 8年前 , 38F
第一句有點 output不用改reg就是了 除非是always
10/12 23:17, 38F

10/12 23:23, 8年前 , 39F
有點像是在隔空抓藥的感覺 ...
10/12 23:23, 39F

10/12 23:27, 8年前 , 40F
問題應該是你沒寫出來的地方,其他部分補上來看看
10/12 23:27, 40F

10/12 23:28, 8年前 , 41F
加油
10/12 23:28, 41F

10/13 02:33, 8年前 , 42F
要不要貼chg的部分...
10/13 02:33, 42F

10/13 16:54, 8年前 , 43F
謝謝bakerly和ericute兩位大大的提醒,問題真的是出在al
10/13 16:54, 43F

10/13 16:55, 8年前 , 44F
always裡,因為chg訊號不同步而出錯,現已修正好成功了
10/13 16:55, 44F

10/13 16:56, 8年前 , 45F
因為我是自己學,實驗室也沒有其他人會,在網路上也找
10/13 16:56, 45F

10/13 16:58, 8年前 , 46F
不太到相關的論壇可以問問題,如果有人知道相關的
10/13 16:58, 46F

10/13 16:58, 8年前 , 47F
verilog請跟大家一起分享學習一下,謝謝
10/13 16:58, 47F

10/13 20:19, 8年前 , 48F
網路上有好多相關教學文件 先看一下吧q_q
10/13 20:19, 48F

10/13 20:19, 8年前 , 49F
結果你其實還沒有遇到跑不過的問題Q_Q
10/13 20:19, 49F

10/13 20:20, 8年前 , 50F
那個FPGA COMPILER已經好聰明了orz
10/13 20:20, 50F

10/13 21:36, 8年前 , 51F
我是覺得編譯器不過的還有方向,但過了後有結果錯誤就很
10/13 21:36, 51F

10/13 21:36, 8年前 , 52F
麻煩了
10/13 21:36, 52F

10/13 21:48, 8年前 , 53F
a..我講的不是這件事 我講的是標準的問題
10/13 21:48, 53F

10/13 21:48, 8年前 , 54F
不過反正很多人也不是很在乎這事就是了@_@
10/13 21:48, 54F
文章代碼(AID): #1PtT1Lpp (Electronics)