Re: [請益] verilog如何在一個always判斷觸發源?

看板Electronics作者 (腦殘綠吱吱)時間17年前 (2008/04/18 00:27), 編輯推噓2(2015)
留言17則, 5人參與, 最新討論串2/7 (看更多)
※ 引述《icetofux (豆腐)》之銘言: : input in0,in1; : reg a; : always@(in0) : begin : a=0; : end : always@(in1) : begin : a=1; : end : 在軟體模擬上,compile會通過,也能進行波形模擬,但是以donwload用的軟體去進行 : compile,則會告訴不能讓兩個always敘述去變動同一個變數值。 : 如果我想改成: : always@(in0 or in1) : begin : ... : end : 我要怎麼去判斷到底是in0有動作還是in1有動作而進入always敘述呢? always @(in0 or in1) begin if(in0) a=0; else if(in1) a=1; else a=0; end 上課要認真.. 這是基礎中的基礎.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.157.114.11

04/18 09:11, , 1F
謝謝你
04/18 09:11, 1F

04/18 17:34, , 2F
不好意思,如果用你這種判斷方式,是不是只能針對
04/18 17:34, 2F

04/18 17:38, , 3F
上升時觸發有效?如果要下降時觸發則改為if(~in0)?
04/18 17:38, 3F

04/18 19:22, , 4F
樓上 you got it
04/18 19:22, 4F

04/18 20:27, , 5F
樓上亂講,這東西合成出來是一個組合邏輯,只要in0或
04/18 20:27, 5F

04/18 20:28, , 6F
in1其中有一個有變化,就會進到判斷式影響a的輸出
04/18 20:28, 6F

04/18 20:39, , 7F
我只是就他敘述來說明~當然這是level sensitive trigger
04/18 20:39, 7F

04/18 20:47, , 8F
應該是我搞錯他的意思(= = 我以為他只是單純問if造成變化
04/18 20:47, 8F

04/19 02:12, , 9F
這種是level的觸發 不是edge的觸發...
04/19 02:12, 9F

04/19 02:13, , 10F
這是在控制訊號等於1時觸發 並不是所謂的上升...
04/19 02:13, 10F

04/20 17:24, , 11F
如果synthesis tools至今仍沒有太大的差異,這個寫法請小心
04/20 17:24, 11F

04/20 17:25, , 12F
基本上這種寫法simulation可能不會有問題,但是我的經驗是
04/20 17:25, 12F

04/20 17:26, , 13F
曾經在design compiler合出來的東西和預期是不同的
04/20 17:26, 13F

04/20 17:26, , 14F
當然我不是專搞digital的人,所以並不敢說絕對會出問題
04/20 17:26, 14F

04/20 17:29, , 15F
不過當時請教過一些寫了數年verilog先進,多數都會盡避開在
04/20 17:29, 15F

04/20 17:31, , 16F
oops...sorry,我搞錯了...這個應該是沒問題的,之前是拿clk
04/20 17:31, 16F

04/20 17:32, , 17F
一起來做類似的combinational logic所以出問題... :P
04/20 17:32, 17F
文章代碼(AID): #181tfogB (Electronics)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 7 篇):
文章代碼(AID): #181tfogB (Electronics)