重拾FPGA 讀鋯石科技硬體語法篇有感

2021-09-21 07:04:40 字數 903 閱讀 1242

最近一直在學習fpga程式設計的思想,如何才能讓自己擺脫c語言,做到眼中**,心中電路,這是我最近一直在思考的問題。讀了一下鋯石科技的fpga硬體語法篇後,我發現了很多自己平時寫verilog時沒有注意到的地方,帶有c語言影子的地方,在這裡總結一下,希望自己在日後寫verilog時不要再犯了

圖來自鋯石科技。

可見,對於狀態機的狀態編碼,我們應該使用格雷碼,還記得數電課老師說格雷碼一次只改變一位,一直不知道有什麼用,現在真的是恍然大悟!這樣可以避免毛刺,避免因為兩位變化不同步而進入錯誤狀態!

然後對於三段式狀態機

第三段:組合邏輯,根據狀態條件寫輸出

然後使用乙個d觸發器來寄存輸出值,這一點下文會講

在verilog中,時序電路用非阻塞賦值 <= ,組合邏輯使用阻塞賦值 = ,當電路較大時,容易分不清楚導致時序混亂,使用d觸發器來將其分開,是一種不錯的辦法,如下圖:

led_reg_n是組合邏輯中改變的,我們在組合邏輯中對其進行改變值得操作,然後在時序邏輯中,將其通過d觸發器賦值給led_reg,便實現了分離。

又如同這個計數器得寫法:

這樣的有點引用鋯石科技的話:

所以,請記住改變值用組合邏輯!然後再通過d觸發器時序邏輯傳出去!

重拾 堅持 沉澱

大約有將近1年左右沒有更新部落格,期間有考慮過每個月或每週花些時間來分享最近所學 所得 但總由於一些原因導致時間被占用 久而久之就漸漸淡忘了寫部落格這件事。現在回想起來感覺還是有一些後悔。其實,時間擠擠總是有的,哪怕每週一小時,乙個月下來,也能梳理出幾篇部落格。再或許是工作一定年限後,那股勁淡去了,...

重拾青藏夢

事隔一年許,才有機會靜下心來,慢慢回憶當年的青藏騎行,並記錄成文。遲遲不願動筆,一是文筆不好,有些回憶是值得留藏心裡,細細品嚐,怕寫出來會變了味,不知所謂 二是工作繁忙,著實沒那份閒情。但我又想寫點什麼,有些成長,不應該只是在記憶中埋藏。青藏線上,充滿了太多的不確定因素,嚴寒,冰雹,缺氧,高原狼,無...

重拾JSP JSP入門

1 當 input 的 type 為 hidden 時,稱其為隱藏域,隱藏域在頁面中對於使用者是不可見的,在表單中插入隱藏域的目的在於收集或傳送資訊,以利於被處理表單的程式所使用。瀏覽者單擊傳送按鈕傳送表單的時候,隱藏域的資訊也被一起傳送到伺服器。2 jsp 在處理提交過來的表單資訊前,使用 req...