Re: [問題] HDL問題
看板Electronics作者Maddulin (what else do u focus?)時間18年前 (2007/06/23 14:36)推噓2(2推 0噓 4→)留言6則, 5人參與討論串1/1
※ 引述《CuckooBoy (阿書)》之銘言:
: 請問
: if ...
: elsif...
: elsif...
: .....
: end if;
: 跟
: case
: when
: when
: .........
: end case
: 請問 合成出來的電路有差嗎?
你覺得這樣的描述電路分別會怎麼合成?
: 另外,
: process(clk) begin
: if rising_edge(clk) then
: if reset='1' then
: cnt<=0;
: else
: cnt<=cnt+1;
: end if;
: end if;
: end process;
: process(cnt) begin
: <===
: case (cnt) then
: when
: when
: end case;
: end process;
: 請問 <== 處.....加不加rising_edge(clk)差在哪邊?還是沒差??
: 會不會沒加就會delay一點點之類的
HDL是來描述你的電路,換句話,你的電路的"行為"由你的code 描述
我認為你沒有理解什麼是 sensitive list
若一個 process 中的 sensitve event 不包含張三, 那此 process 與張三何干?
[補充&修正]
因為你原先並不期待 "張三" 是這 process 的 stimulus
換句話說, 電路的 response 將與張三無關 (simulation)
即可能造成simulation-synthesis mismatch
但若在 process 其中加入條件判斷, 例如你說的 if rising ...... 之類的
那你必需思考你所描述的是什麼樣的行為與對應如何的電路
雖然我沒寫過VHDL, 不過我認為這樣的描述應該在syntax檢查時就必需出現錯誤
因為既然 process 需要判斷某訊號是否為正緣之事件
那麼就該將該訊號加入 sensitive list 內
否則這就是一個不合語義的描述
當然我不懂formal language,
上述只是以一個數位設計者的角度去看問題
而不是以一個語言設計者的角度
但是否出現在此 process 內的絛件判斷之訊號都必需在 sentivity list 內
當然不一定, 需視你的電路的行為而定, 例如你前面描述的 synchronous reset
他若出現在 sensitive list 中,那它必然為 asynchronous
所以需不需要在sensitive list中, 由電路的行為決定
所以說到這邊, 再次印證 "HDL是來描述你的電路行為 而不是電路行為由HDL決定"
你寫的 code 該怎麼寫 有沒有意義(果) 完全決定在你欲描述電路的行為上 (因)
不確定電路的行為, 你如何描述?
你之所以問這問題很清楚的告訴大家 你僅是在打字 不是在寫code(描述)
若這樣的壞習慣不能更正, 那你肯定不適合數位電路設計, 至少在 cell-based flow
我只有一個建議, 請你多問問"自已": 為何這樣寫 而不那樣寫
當你"苦思一整天試驗一整天"仍然不得其門而入, 再將你的問題提出
否則一個無法思考的人 就算有途徑解決問題,
然而他在該領域的水平可能很難提升
看了你許多問題, 我覺得你也許程度沒問題, 但是不懂思考, 這樣很可惜
無意貶損你, 而是期待你有更大的進步
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.141.101.203
推
06/23 14:56, , 1F
06/23 14:56, 1F
→
06/23 19:46, , 2F
06/23 19:46, 2F
→
06/24 00:26, , 3F
06/24 00:26, 3F
推
06/24 00:32, , 4F
06/24 00:32, 4F
→
06/24 01:08, , 5F
06/24 01:08, 5F
→
06/24 01:09, , 6F
06/24 01:09, 6F
※ 編輯: Maddulin 來自: 220.141.96.154 (06/24 08:59)