新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 基于32位RISC架構的SoC系統設計與驗證

        基于32位RISC架構的SoC系統設計與驗證

        作者: 時間:2016-12-06 來源:網絡 收藏

          隨著嵌入式領域和信息時代的蓬勃發展,微處理器設計開始被越來越多的人關注。目前國內很多高校和研究機構都開始設計微處理器。客觀的講,這些微處理器在硬件結構上比較簡單,缺乏匯編器、編譯器、操作系統以及各種I/O接口電路的支持,應用場合單一。另外,由于這些微處理器支持的指令集在格式上各有不同,因此造成了大量的設計資源浪費。我們旨在設計一套完備的高性能嵌入式SoC(System on Chip)系統,用以減少重復性設計工作,更好地普及高等院校的微處理器設計教育,吸引更多的人才專注于高性能微處理器研發;同時也提供給企業免費的SoC軟核,用于低成本的工業控制

        本文引用地址:http://www.104case.com/article/201612/326819.htm

          1. 系統原理和技術特點

          Minisys是東南大學計算機科學與工程學院系統結構實驗室開發的一款基于32位RISC架構的SoC系統。如圖1所示,Minisys包含一個以32位RISC型處理器為核心,附帶多個IO控制器的SoC芯片和相關的系統軟件。系統軟件包括以便于上層軟件編程而提供的系統功能調用接口為主體的BIOS、鍵盤驅動程序、以及Minisys匯編器(編譯器)。其中,Minisys SoC芯片功能結構如圖2所示。

          Minisys CPU有32個32位通用寄存器,32位數據線和16位地址線。IO部件包括一個4位7段LED數碼管控制器,一個4×4鍵盤控制器,一個16位定時/計數器,一個32位系統定時器,一個16位PWM控制器,一個看門狗電路和一個簡易UART串行通信控制器。

          Minisys借鑒了MIPS指令集,指令定長32位,共有31條常用定點指令(不包括硬件乘除、硬件浮點指令)。32個32位寄存器除了5個寄存器被固定功能外,其余的都可以做通用寄存器。

          Minisys采用哈佛存儲結構,片內包含4KB ROM和4KB RAM,都采用字節編制,但以32位為一個存儲單元,即他們和CPU之間的數據交換都以32位為單位進行。Minisys的I/O空間編址采用與存儲器統一編址方式,即將整個地址空間分為兩個部分,一部分作為訪問RAM的存儲空間,另一部分作為訪問IO的I/O空間。因此,對I/O部件的訪問采用與存儲器訪問相同的指令格式。

          系統內部提供兩個中斷源的控制電路,兩個中斷源為INT0和INT1,其中INT0的優先級高于INT1,允許高優先級中斷嵌套。系統提供用于堆棧操作的SP寄存器,但沒有提供壓棧和退棧指令,因此對于堆棧的操作需要用軟件實現。堆棧操作的原子性由程序員負責。

          2. 系統設計流程

          Minisys SoC的設計包括了硬件設計和軟件設計。其中,硬件設計部分包括以下幾個部分:Minisys CPU的設計、接口部件的設計、BIOS的設計。軟件設計即為匯編器的設計。

          在Minisys CPU設計中,主要考慮指令系統的確定、CPU結構的設計與實現、CPU寄存器組的組織與實現以及CPU的各個功能部件的設計與實現。下面主要介紹Minisys CPU的各個功能部件的設計和實現。

          Minisysy CPU的內部功能部件被劃分為5歌基本單元:取指單元、譯碼單元、控制單元、執行單元和存儲單元。在設計CPU的時候,采用模塊化的設計方法,因此,以上這些單元是分別在相應的5歌模塊中進行設計,最后用一個頂層模塊將這5個模塊按照邏輯上的需要連接起來,成為一個完整的CPU。

          取指單元

          取指單元主要完成以下工作:到程序ROM中取指令;對PC值進行更新;完成各種跳轉指令的PC修改功能。本設計是在Altera公司的Quartus II環境下完成的,因此,在設計中使用了Altera公司已經設計好的rom宏模塊。

          譯碼單元

          譯碼單元的主要工作就是完成執行指令前的操作數準備工作,分析Minisys指令集得知,這些數據或者在寄存器中,或者是立即數,因此在譯碼單元中最重要的工作就是實現寄存器組和完成寄存器的讀寫并根據指令譯碼結果,決定向其他部件送一路還是兩路數據。

          控制單元

          控制單元是整個CPU的控制核心,各種控制信號都是從這里發出來的,而各種信號的值都是通過操作碼和功能碼的不同組合和一些約定來決定的。在設計中用SRCB來標志操作數的來源,具體操作如表1和表2所示。

        表1 操作數A的來源標志

        操作數

        零擴展的立即數

        ID階段取得的寄存器值

        SRCA

        1’b0

        1’b1

        表2 操作數B的來源標志

        操作數

        ID階段取得的寄存器值

        符號擴展的立即數

        零擴展的立即數

        SRCB

        2’b00

        2’b01

        2’b10||2’b11

          執行單元

          執行單元需要完成的工作歸納起來包括以下幾個方面:完成邏輯運算、完成算術運算、完成移位運算、完成比較轉移的PC值運算和完成比較后賦值操作。

          存儲單元

          存儲單元首先要實現數據RAM,并完成對數據RAM的讀寫操作。與指令ROM一樣,數據RAM也使用Altera公司提供的宏模塊來實現。Minisys擁有4KB的數據RAM,4個字節為一個讀寫單元,因此,它的RAM和ROM的初始化文件格式相同。



        關鍵詞: 32位RISC架

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 泾川县| 习水县| 襄汾县| 浮梁县| 车险| 吴川市| 米脂县| 昆山市| 金堂县| 蓬溪县| 中西区| 卢龙县| 股票| 左云县| 通榆县| 永修县| 盱眙县| 璧山县| 江安县| 衢州市| 清水河县| 磴口县| 永善县| 贵溪市| 台中市| 南漳县| 深州市| 六枝特区| 乐至县| 元朗区| 西华县| 杭州市| 监利县| 麻江县| 宁波市| 武宁县| 璧山县| 石门县| 南部县| 信宜市| 德化县|