Re: [請益] 請教有關nonblocking,求助中...

看板Electronics作者 (新熱血陽光男孩￾NN)時間16年前 (2009/05/02 14:04), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
嗯,那我這樣子問好了, 其實我知道一種寫法, 只是覺得這樣寫很麻煩,感覺不是很有效率。 想要找一個更好的方法, 所以才會想到nonblocking的方式... 有更好得方法嗎??? 求助神大??? 使用case的寫法,如下: case (i) 1: begin a = 2 * 3; i=i+1; end 2: begin b = a * 2 + 3 ; i=i+1; end 3: begin c = a + 2 * b ; i=i+1; end 4: begin d = a + b + c ; i=i+1; end default: begin i=i+1; end 這樣寫感覺沒有效率, 那如果要用nonblockign、pipeline的寫法或更好的寫法, 來執行演算法的電路執行效率的話, 要怎麼改寫呢? 另外,如果硬要這將a、b、c、d的演算法 在一個clock之內作完, 那我要怎麼寫成combinational circuit。 是要用assign的指令嗎??? 因為我的code主要是跟clk有關,使用clk控制電路行為, 即為sequential circuit, 這樣跟combinational circuit一起合用, 是不是會怪怪的??? 小弟不才,煩請指教!!! 神大拜託了...^^ ※ 引述《LINAN322 (新熱血陽光男孩￾NN)》之銘言: : 恩,小弟已經有先爬過文了, : 只是還是無法釐清blocking與nonblocking的設計理念。 : 小弟目前寫code都是用blocking的寫法, : 但是看書,很少人用blocking的寫法, : 都是用unblocking的。 : 很奇怪,因為我目前寫的code都是可以合成的, : 但是不清楚這樣寫是不是很傷硬體的資源。 : 因為小弟主要要將演算法設計至fpga中, : 舉一個簡單的例子: : 如四行數學式的運算: : 1. a = 2 * 3 : 2. b = a * 2 + 3 : 3. c = a + 2 * b : 4. d = a + b + c : 因為我用blocking的寫法,且a,b,c,d均有相關,所以如下: : a = 2 * 3; : b = a * 2 + 3 ; : c = a + 2 * b ; : d = a + b + c ; : ==>照著寫就好了,但我看書上,都沒有人這樣做... : 所以我這樣寫,不過我非常的沒有自信,因為沒有書給我任何的佐證 : 所以我非常疑惑,雖然我可以合成。 : 但是我去燒入至fpga,正確的演算法結果可以跑出嗎?還是一定會有問題? : 其實我懂得unblocking,但是用unblocking寫,我很不習慣。 : 只是不懂得unblocking的設計方式。 : 如果是這樣寫, : 那我怎麼讓他delay呢,因為其中有相關性。 : a <= 2 * 3; : b <= a * 2 + 3 ; : c <= a + 2 * b ; : d <= a + b + c ; : 如果第0個clk觸發,a=6, : 但是b與a有關,但在上一個blck(第-1個)a並沒有定義數值, : 因此b不是會沒有定義嗎? : 所以我才會想到delay... : 另外,畢竟演算法講求的是即時(循序)的運算, : 並交給下一個敘述進行運算, : 但這樣nonblocking執行演算法(必須吃上一個clk的狀態), : 在執行上不就會有很大的困難嗎? : 有神人可以幫我解答嗎? : 這兩個差別到底再哪裡? : 對硬體資源影響會很大嗎??? : 感謝~~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.178.157

05/02 14:12, , 1F
你的i會爆炸...完全沒人這樣寫的啦
05/02 14:12, 1F

05/02 14:20, , 2F
喔喔,我舉個例子而已啦,我會在跳到另一個Case
05/02 14:20, 2F

05/02 14:20, , 3F
不過i真的會爆炸....XD...謝謝你︿︿
05/02 14:20, 3F
文章代碼(AID): #19--9qKl (Electronics)