今天上午開了個務虛會,和研究生一起探討了一下SoC設計的一般概念,發現很多同學根本沒有抓到SoC設計的核心?,F在趁著討論的熱度還沒有過去,現在先在這記錄一下。
SoC設計是圍繞著什么在設計?
SoC設計是圍繞著總線來開展設計的。SoC最需要掌握的核心知識點其實并不是什么SoC的概念之類的,而是微機原理課程上面講的那些總線和接口的概念。例如什么叫三總線,什么叫主(Master)什么叫從(Slave)等等。
通過掌握這些概念可以理解處理器如何通過總線把數據讀出、寫入,從而理解如何通過處理器對于整個系統芯片加以控制和管理。
在理解總線時,最核心的一點是要理解主-從模式的通信機制。既處理器作為主機,是發起通信的一方。而外設、片上存儲器作為從機,是響應主機發起的通信。更在此基礎上進一步的,需要理解總線的時序,理解在總線上發起通信到通信結束的全過程。這樣就可以理解,如何能夠通過軟件對于特定的地址空間加以訪問。
SoC如何實現IP核的集成?
要實現IP核的集成,本質上是要讓數據寫得進,結果讀得出。也就是把需要這個IP處理的數據能以某種方式輸入到這個IP核內部,在IP核在數據處理完畢以后的結果通過某種方式能夠讀出。如果這個IP本身的功能有好多種,還需要通過一個特定的方式把需要完成的功能類型傳輸給IP核。而如果結果運算完畢了,則還需要以某種方式來告知CPU現在的運算已經結束。這些都是需要由寫得進/讀得出的方式來實現的。
那么如何實現數據寫得進,結果讀得出呢?說到底就是要實現IP核在軟件層面的“可見”。要讓軟件層面可見,就需要能夠通過執行指令的方式對IP核進行訪問。如何訪問,當然是通過總線?下圖一目了然:
SoC設計上軟硬件協同如何解決?
這就要做好軟件和硬件IP核的任務劃分和規劃了。一般說來,用處理器執行的軟件部分適合完成調度、決策、判斷等管理性質的任務,而硬件IP核適合完成比較規整的運算任務。而在軟硬件的劃分邊緣,就要設置合理的寄存器組來傳遞信號和數據。
例如,我們要實現一個快速計算三角函數的電路。那就需要實現一個Cordic算法的硬件計算單元。但僅僅實現這個硬件單元還不夠,還需要編寫一段軟件代碼把外部讀取的運算數據送進去、設置需要完成的計算(Cos/Sin等)、在運算完成以后把計算的結果讀出。而在這個過程中還要有必要的握手、聯絡過程。可以依靠程序查詢的方式來完成,也可以依靠中斷的方式完成。
其實以上這些內容,不是靠學習什么《SoC設計》之類無聊的課程習得的,核心的問題都在《微機原理》里面講清楚了。然而現在很多高校的教務部門以及部分高校教師,在急不可耐的將《微機原理》趕出培養方案,而用快餐式的單片機、嵌入式系統設計或者SoC設計之類的課題替代。這種短視而愚蠢的行為,最終卻要無辜的學生買單。各位看到本博客的同學,如果你們的學校/學院也在干類似的事情,你們一定要警惕啊!
-
處理器
+關注
關注
68文章
19291瀏覽量
229906 -
soc
+關注
關注
38文章
4169瀏覽量
218314
原文標題:【博文精選】淺談一下SoC設計的核心理念
文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論