国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

(一)手把手教你如何通過ARM DesignStart計劃在FPGA上搭建一個Cortex-M3軟核

這篇具有很好參考價值的文章主要介紹了(一)手把手教你如何通過ARM DesignStart計劃在FPGA上搭建一個Cortex-M3軟核。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

(一)手把手教你如何通過ARM DesignStart計劃在FPGA上搭建一個Cortex-M3軟核

一、ARM DesignStart計劃

1.1 如何下載ARM DesignStart Cortex-M3相關(guān)文件

? 關(guān)于ARM DesignStart計劃的介紹:ARM DesignStart計劃——私人定制一顆ARM處理器 - 知乎 (zhihu.com)。

? 在arm Developer官網(wǎng)[Arm Developer](https://developer.arm.com/downloads)右上方的Downloads中搜索ARM DesignStart Cortex-M3第一個即是FPGA上定制的Cortex-M3軟核IP。

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.1 官網(wǎng)主頁界面

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.2 官網(wǎng)的Downloads界面

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.3 搜索界面

? 以下是我從官網(wǎng)下載的Cortex-M3的百度網(wǎng)盤鏈接,M0也是同樣的方法:https://pan.baidu.com/s/1jO1cTTL89xig5wEomUTrlQ?pwd=1234。

? 上面我廢話了兩句是因為我一開始在官網(wǎng)主頁中直接搜索ARM DesignStart Cortex-M3一直找不到軟核工具包,只能找到相關(guān)的用戶說明書,Cortex-M3軟核IP要到Downloads才能找到??傊俏宜阉鞣绞讲粚Φ脑颍o大家避個坑。

1.2 Cortex-M3 DesignStart Eval工具使用介紹

? 在arm Developer官網(wǎng)主頁面中直接搜索Arm Cortex-M3 DesignStart Eval User Guide可以找到Cortex-M3軟核IP的相關(guān)用戶使用手冊。

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.4 在官網(wǎng)主頁面搜素相關(guān)用戶手冊

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.5 搜索結(jié)果

? 在該用戶使用手冊文件的1-17頁有具體的文件結(jié)構(gòu)說明。其中我們用到的我覺得比較重要的是Cortex-M3內(nèi)核文件夾,在下圖1.5路徑中:

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.6 Cortex-M3內(nèi)核文件夾及路徑

在cmsdk(Cortex-M System Design Kit,Cortex-M系統(tǒng)設(shè)計工具包)文件夾中,有著大量官方提供的現(xiàn)成的MCU實現(xiàn)組件,像串口、定時器等外設(shè),ahb、apb總線接口,經(jīng)過封裝的FPGA內(nèi)部sram存儲器等,這些組件都是由verilog代碼實現(xiàn)的。如下圖1.7所示:

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.7 cmsdk組件

? 另外一個很常用的用戶使用手冊是Arm Cortex-M System Design Kit Technical Reference Manual,可以直接在官網(wǎng)主頁搜索得到。這個用戶手冊中有很大一部分是對cmsdk工具包文件夾中的系統(tǒng)組件的說明,例如對上圖1.7中cmsdk_apb_uartcmsdk_apb_time這兩個由verilog代碼實現(xiàn)的外設(shè)IP的寄存器構(gòu)成、時序邏輯等都在該文檔中有詳細(xì)說明。在我們的系統(tǒng)實現(xiàn)中,我就是對著這個文檔對gpio、uart和timer這三個外設(shè)編寫的軟件驅(qū)動。該文檔的具體內(nèi)容如下圖1.8所示:

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖1.8 Arm Cortex-M System Design Kit Technical Reference Manual說明手冊中定時器外設(shè)具體說明

如上圖可以看到定時器外設(shè)的寄存器地址偏移、位寬、描述等,除此之外還有模塊端口信號,特征描述等。

二、如何搭建軟核

? 在搭建SoC系統(tǒng)的過程中碰到過許多問題查閱了許多資料,這里就不一一詳細(xì)說明了,我把查閱過的視頻和資料都列出來:

  1. 使用Keil設(shè)計基于ARM DesignStart M3軟核的軟件程序_嗶哩嗶哩_bilibili

    該視頻前半段是在VIVADO上搭建硬件資源,后半段在配置KEIL,因為我們是在安路的平臺上搭建,因此跳過了前面的部分,看的是后半段的KEIL配置以及代碼編寫,主要是實踐操作性。

  2. 使用CMSDK搭建CortexM3SoC - 極術(shù)社區(qū) - 連接開發(fā)者與智能計算生態(tài) (aijishu.com)

    這篇文章可以結(jié)合著下面的極術(shù)社區(qū)的視頻一起看,主要寫了:

    • 使用CMSDK生成總線矩陣,這部分比較復(fù)雜,主要就是給主從設(shè)備分配端口和地址,具體怎么操作我不太懂是我隊友做的。
    • 硬件上添加CMSDK APB外設(shè),文中以uart為例如何將外設(shè)模塊端口信號和APB總線相連,連接至AHB總線上也大同小異。
    • 自定義外設(shè),簡要地講解了如何編寫外設(shè)硬件代碼和完成外設(shè)軟件驅(qū)動。
    • 最后給出了一份硬件和軟件上的參考范例。
  3. 極術(shù)公開課|【集創(chuàng)賽培訓(xùn)】基于Arm Cortex M3的SoC設(shè)計與FPGA實現(xiàn)_嗶哩嗶哩_bilibili

    這是往年集創(chuàng)賽ARM杯的培訓(xùn)視頻,很有必要看一遍,看完之后可以對整個軟核的搭建有一個清晰的概念,主要偏向理論性并給出整體框架概念。

  4. GitHub - ian-lab/my_CortexM3

    一個開源GitHub項目,是一個完整的Cortex-M3的SoC系統(tǒng)范例。

  5. 目錄 - Arm Cortex-M0的SoC實現(xiàn) (yuque.com)

    硬木課堂知識庫,其中一個章節(jié)就是Arm Cortex-M0的SoC實現(xiàn),基于安路EG4S20。這幾篇文章兼有理論和實踐,理論上如總線的知識、SoC的組成等,對在大腦中構(gòu)建一個整體SoC概念很有幫助。實踐上這篇文章手把手教你硬件代碼如何編寫,KEIL上如何配置等等。但是因為這篇文章是用匯編語言進(jìn)行軟件編寫的,因此在我比賽過程中就沒有參考。另外這些文章中提到的下載的文件都沒有,不用找和問了。

三、總體架構(gòu)

3.1 整體架構(gòu)展示

? 本系統(tǒng)的系統(tǒng)框圖如圖3.1。在基于ARM DesignStart計劃開放的Eval版ARM Cortex-M3軟核搭建片上系統(tǒng),硬件主要模塊包括(圖中的ACC硬件加速器實際上還沒有):

  1. ARM Cortex-M3處理器內(nèi)核;
  2. 一、二級AHB系統(tǒng)總線和二級APB系統(tǒng)總線;
  3. 總線間接口和總線與外設(shè)間接口;
  4. 掛載在AHB和APB總線上的外設(shè):
    1. 由FPGA片上BRAM實現(xiàn)的程序和數(shù)據(jù)存儲器ITCM和DTCM;
    2. 片上功能外設(shè),包括串口UART,GPIO,定時器TIMER,外部SDRAM,F(xiàn)LASH;
  5. SWD調(diào)試接口;
  6. 外部SDRAM與總線之間的高速緩存Cache。

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖3.1 系統(tǒng)框圖

? 以上系統(tǒng)框圖以及頂層代碼的排布都是按照系統(tǒng)地址遞增的順序排列的,為的是能有更清晰的邏輯,下面是整個系統(tǒng)的地址層次。

? Cortex-M3的總線位寬為32位,因此提供了4GB的存儲器尋址空間。在我們設(shè)計的片上SOC中,具有片內(nèi)RAM,片外SDRAM和外設(shè)驅(qū)動層電路,因此具有靈活的地址映射和尋址方式。具體的地址空間映射如下圖3.2所示:

cortex m3 designstart,全國大學(xué)生集成電路創(chuàng)新創(chuàng)業(yè)大賽,fpga開發(fā),arm開發(fā),嵌入式硬件

圖3.2 地址映射圖

3.2 頂層文件代碼分析

? 我們的所有工程都會上傳到我的github倉庫,后期也會不斷做修改:JimmyForest · GitHub。以下是我對著頂層文件進(jìn)行的代碼分析,簡單講述了搭建軟核的思路以及軟核的框架結(jié)構(gòu):文章來源地址http://www.zghlxwxcb.cn/news/detail-764613.html

  1. 最開始的一個GLOBAL BUF(這個在我們的代碼的注釋中,以下的都是)是對全局時鐘走線的處理,走全局時鐘網(wǎng)絡(luò)的信號具有低偏斜、低抖動以及高扇出的特點。
  2. 接下來是DEBUG IOBUF對調(diào)試接口的三態(tài)處理,因為安路中找不到相應(yīng)的三態(tài)原語,因此就用了1'bz代替。
  3. 后面兩個是全局復(fù)位的處理。
  4. 接下來的cortexm3ds_logic模塊是官方提供的Cortex-M3內(nèi)核,即圖3.1中的Cortex-M3 Core,為整個系統(tǒng)的中央CPU。該模塊的底層代碼由大量的assign語句構(gòu)成,且所有信號均由無規(guī)律的字母和數(shù)字組成無實際含義,因此具有很差的可讀性。另外該內(nèi)核主要有三大主機(jī)接口與一級AHB總線相連接,分別是I_bus(Instructions)指令總線,D_bus(Data)數(shù)據(jù)總線和SYSTEM_bus系統(tǒng)總線。前兩個分別是內(nèi)核與ITCM和DTCM交互分別取指和數(shù)據(jù)讀寫,系統(tǒng)總線還不是很懂,CSDN上有說法是這條總線用來加載外設(shè)。
  5. 在內(nèi)核模塊的后面是一級AHB稀疏總線矩陣L1AhbMtx,這是AHB總線的核心部分。該模塊包含多個子模塊,其中包括多個仲裁器、地址譯碼器、從機(jī)的輸入級和主機(jī)的輸出級模塊(后面兩個什么意思和功能我不懂,是根據(jù)注釋翻譯的)。相比于后面的二級AHB總線模塊這是一個完整的總線模塊,擁有總線的完整功能,可以通過在第二點中2、3兩小點中提供文章和視頻提供的方法進(jìn)行生成。
  6. 在一級AHB總線矩陣模塊下面的是ahb_eram,此處的eram也即可理解為BRAM即為塊狀(BLOCK)RAM,利用大塊的RAM作為ITCM指令存儲空間。之前采用分布式SRAM作為ITCM的存儲空間導(dǎo)致存儲資源不夠是因為SRAM的本質(zhì)是LUT查找表,LUT較適合用于小容量的存儲和邏輯電路的綜合,對于大容量的存儲使用SRAM效率十分低下。
  7. 在ITCM下面的是cmsdk_ahb_to_sram,這個并不是DTCM存儲器SRAM,而是AHB總線和DTCM的接口層。下面的cmsdk_fpga_sram才是DTCM的SRAM實例化模塊。這里采用分布式SRAM是因為在KEIL中配置ITCM和DTCM時。ITCM大小為64kb bit,DTCM大小為16kb bit。因此DTCM大小較小采用了分布式RAM實現(xiàn)。
  8. 接下來的是APB總線部分,首先是APB與AHB的接口模塊cmsdk_ahb_to_apb。后面是APB總線的核心部分cmsdk_apb_slave_mux,根據(jù)名字看mux是多路選擇器,但模塊內(nèi)部不僅包含了從機(jī)多路選擇器還包含了地址譯碼器。因為APB總線是單主機(jī)結(jié)構(gòu)因此不存在仲裁器。具體的總線內(nèi)容放到下一篇文章。
  9. 再下面是兩個掛載在APB總線上的外設(shè),串口和定時器。前面APB總線的地址譯碼器決定了兩個外設(shè)的基地址。
  10. 在APB后面的是二級AHB總線,和APB總線一樣,AHB與AHB總線之間有一個同步橋模塊cmsdk_ahb_to_ahb_sync,是一級AHB總線和二級AHB總線之間的數(shù)據(jù)指令同步接口模塊。
  11. 在同步橋下面是AHBlite_Interconnect,AHBlite是只AHB總線的簡化版本,AHB支持多主機(jī)而AHBlite僅支持單主機(jī),因此AHBlite在AHB總線的基礎(chǔ)上可以簡化仲裁器等大量的控制信號。例如在該系統(tǒng)中一級AHB總線是二級AHB總線的主機(jī),在二級AHB總線下可以掛載多個外設(shè)。AHB的AHBlite_Interconnect模塊和APB的cmsdk_apb_slave_mux一樣也是由地址譯碼器和多路選擇器組成。
  12. 在二級AHB總線下面是三個掛載在總線上的外設(shè)GPIO、LCD和FLASH。最后在一級AHB總線上單獨(dú)掛載了一個外設(shè)外部SDRAM,不掛載在二級AHB總線上是為了提高外部SDRAM的數(shù)據(jù)讀寫效率。數(shù)據(jù)經(jīng)過總線的讀寫會造成時鐘延遲降低數(shù)據(jù)的傳輸效率。
  13. 在頂層文件的代碼最后一行一個assign語句是系統(tǒng)中斷,IRQ信號的位寬大小為240表示該系統(tǒng)最大可以支持240個自定義的外部中斷。如在該系統(tǒng)中就有定時器中斷,GPIO1的中斷等等。

到了這里,關(guān)于(一)手把手教你如何通過ARM DesignStart計劃在FPGA上搭建一個Cortex-M3軟核的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 手把手教你如何使用Docker

    手把手教你如何使用Docker

    我們在公司開發(fā)中,會有開發(fā)環(huán)境,測試環(huán)境,上線環(huán)境, 比如我們開發(fā)人員開發(fā)好了一個項目,在開發(fā)環(huán)境中運(yùn)行正常,但測試人員拉到測試環(huán)境就跑不起來【jdk版本等】,或者上線的時候運(yùn)行不起來,這時候就要為每個機(jī)器配置一個環(huán)境,那運(yùn)維人員不得累死?【哈哈,

    2024年02月10日
    瀏覽(104)
  • 手把手教你通過PaddleHub快速實現(xiàn)輸入中/英文本生成圖像(Stable Diffusion)

    手把手教你通過PaddleHub快速實現(xiàn)輸入中/英文本生成圖像(Stable Diffusion)

    近來,基于Diffusion的文圖生成模型比較火,用戶輸入一句話,模型就可以生成一副對應(yīng)的圖像,還是很有意思的。本文記錄了通過PaddleHub快速實現(xiàn)上述任務(wù)的過程,以供參考。 1、安裝PaddlePaddle PaddleHub底層依賴于百度自研的開源框架PaddlePaddle,可以根據(jù)官方提供的方式來快速

    2024年01月17日
    瀏覽(22)
  • [R語言]手把手教你如何繪圖(萬字)

    [R語言]手把手教你如何繪圖(萬字)

    目錄 概況 常用高級圖形 條形圖 csv文件導(dǎo)入 csv文件導(dǎo)出 R語言sep函數(shù) seq函數(shù) with函數(shù) 直方圖和密度估計圖 盒型圖 boxplot() 正態(tài)QQ圖 散點圖 pairs()散點矩陣圖 曲線圖 curve() 三維圖 動態(tài)三維圖 低級圖形函數(shù) abline() lines() legand()增加圖例 axis()坐標(biāo)軸 text()給圖內(nèi)區(qū)域添加文字 loc

    2024年02月04日
    瀏覽(24)
  • 數(shù)據(jù)庫:如何安裝SQL,手把手教你

    數(shù)據(jù)庫:如何安裝SQL,手把手教你

    我們只選擇兩個: SQLEXPR_x64_CHS.exe SQLManagementStudio_x64_CHS.exe 如果你是32位系統(tǒng)就選擇x86的(9102年了,應(yīng)該都是64位的了吧)選中后下載到你經(jīng)常保存文件的地方即可(這個地方并不是sql要安裝的地方)。 全部下載后如圖所示 正式安裝 先安裝SQL,再安裝 SQL Management Studio 雙擊

    2024年01月16日
    瀏覽(162)
  • 手把手教你,通過HAL庫實現(xiàn)STM32的超聲波測距--以SR-04為例

    手把手教你,通過HAL庫實現(xiàn)STM32的超聲波測距--以SR-04為例

    目錄 0、SR-04基本原理 1、準(zhǔn)備工作 2、連線 ?3、STM32CUBEMX設(shè)置 3.1新建工程 3.2芯片通用設(shè)置 3.3定時器捕獲設(shè)置 ?3.4其他設(shè)置 3.5生成工程 ?4、程序完善 4.1完善打印輸出函數(shù) ?4.2完善tim.c 4.3完善gpio.c? 4.4完善main函數(shù)? ?5、總結(jié) 聲波遇到障礙物會反射,而聲波的速度已知,所以

    2024年02月14日
    瀏覽(24)
  • 手把手教你如何使用Fiddler抓包工具

    手把手教你如何使用Fiddler抓包工具

    什么是 Fiddler? Fiddler 是一個 HTTP 協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的 HTTP 通訊。Fiddler 提供了電腦端、移動端的抓包、包括 http 協(xié)議和 https 協(xié)議都可以捕獲到報文并進(jìn)行分析;可以設(shè)置斷點調(diào)試、截取報文進(jìn)行請求替換和數(shù)據(jù)篡改,也可以進(jìn)行

    2024年02月07日
    瀏覽(92)
  • Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    Java基礎(chǔ)--手把手教你如何從鍵盤錄入信息

    從鍵盤錄入信息 Scanner 有掃描儀的意思,sc是自己取的名字(有的人喜歡用input), new Scanner 是創(chuàng)建一個Scanner對象, System.in 代表電腦的鍵盤。 即,掃描電腦的鍵盤。 將第一步寫完,我們在編譯器里面看到, Scanner 標(biāo)紅了,報錯了! ? 為啥報錯呢? 我們要使用 Scanner ,需要

    2024年02月11日
    瀏覽(25)
  • 手把手教你實現(xiàn):Android注冊登錄功能,通過本地服務(wù)器保存用戶賬號密碼到數(shù)據(jù)庫

    手把手教你實現(xiàn):Android注冊登錄功能,通過本地服務(wù)器保存用戶賬號密碼到數(shù)據(jù)庫

    代碼我放到文章最后面了 首先你需要電腦一臺:如果沒有電腦將會很難辦呢 -----沃茲基碩德 下載并安裝以下開發(fā)工具 Android Studio 官網(wǎng)最新版 用來開發(fā) 安卓App IntelliJ IDEA 官網(wǎng)最新版 用來開發(fā) 后端 ,處理安卓APP的請求 Navicat for MySql 官網(wǎng)最新版 數(shù)據(jù)庫可視化工具,用來查看數(shù)

    2024年01月16日
    瀏覽(30)
  • 手把手教你如何擴(kuò)展(破解)mybatisplus的sql生成

    眾所周知, mybatisplus 提供了強(qiáng)大的代碼生成能力,他默認(rèn)生成的常用的CRUD方法(例如插入、更新、刪除、查詢等)的定義,能夠幫助我們節(jié)省很多體力勞動。 他的 BaseMapper 中定義了這些常用的CRUD方法,我們在使用時,繼承這個 BaseMapper 類就默認(rèn)擁有了這些能力。 如果我們

    2024年02月05日
    瀏覽(90)
  • 手把手教你如何正確永久使用Microsoft Office365?

    手把手教你如何正確永久使用Microsoft Office365?

    office2019和office 365有什么區(qū)別的呢?為什么越來越多的人更加鐘愛office365。簡單來說office 2019的零售版本屬于一次售出永久使用,價格上比較貴,而且功能上也不會再有更新。而office 365是一種基于云的訂閱服務(wù),我們花錢買的是一定時期的服務(wù),在使用期間我們可以獲得offi

    2024年02月07日
    瀏覽(103)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包