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