基於可編程邏輯器件實現八位微處理器軟核的設計

2020-11-26 電子發燒友

基於可編程邏輯器件實現八位微處理器軟核的設計

張杰 發表於 2020-11-24 14:37:00

1、引言

SoC(SystemonaChip)以其高集成度,低功耗等優點越來越受歡迎。開發人員不必從單個邏輯門開始去設計ASIC,而是應用己有IC晶片的功能模塊,稱為核(core),或智慧財產權(IP)宏單元進行快速設計,效率大為提高。CPU的IP核是SoC技術的核心,開發出具有自主智慧財產權的CPUIP核對我國在電子技術方面跟上世界先進的步伐,提高信息產業在世界上的核心竟爭力有重大意義。

精簡指令集計算機RISC(ReducedInstructionSetComputer)是針對複雜指令集計算機CISC(ComplexInstructionSetComputer)提出的,具備如下特徵1)一個有限的簡單的指令集;2)強調寄存器的使用或CPU配備大量的能用的寄存器;3)強調對指令流水線的使用。

2、CPUIP核的組成

儘管各種CPU的性能指標和結構細節不同,但所要完成的基本功能相同,從整體上可分為八個基本的部件:時鐘發生器、指令寄存器、累加器、RISCCPU算術邏輯運算單元、數據控制器、狀態控制器、程序控制器、程序計數器、地址多路器。狀態控制器負責控制每一個部件之間的相互操作關係,具體的結構和邏輯關係如圖1所示。

時鐘發生器利用外部時鐘信號,經過分頻生成一系列時鐘信號給CPU中的各個部件使用。為了保證分頻後信號的跳變性能,在設計中採用了同步狀態機的方法。

指令寄存器在觸發時鐘clk1的正跳變觸發下,將數據總線送來的指令存入寄存器中。數據總線分時復用傳遞數據和指令,由狀態控制器的load_ir信號負責判別。load_ir信號通過使能信號ena口線輸入到指令寄存器。復位後,指令寄存器被清為零。每條指令為兩個字節16位,高3位是操作碼,低13位是地址線。CPU的地址總線為是13位,位尋址空間為8K字節。本設計的數據總線是8位,每條指令取兩次,每次由變量state控制。

累加器用於存放當前的運算結果,是雙目運算中的一個數據來源。復位後,累加器的值為零。當累加器通過使能信號ena口線收到來自CPU狀態控制器load_acc信號後,在clk1時鐘正跳沿時就接收來自數據總線的數據。

算術邏輯運算單元根據輸入的不同的操作碼分別實現相應的加、與、異或、跳轉等基本運算。

數據控制器其作用是控制累加器的數據輸出,由於數據總線是各種操作傳送數據的公共通道,分時復用,有時傳輸指令,有時要傳送數據。其餘時候,數據總線應呈高阻態,以允許其他部件使用。所以,任何部件向總線上輸出數據時,都需要一個控制信號的,而此控制信號的啟、停則由CPU狀態控制器輸出的各信號控制決定。控制信號datactl_ena決定何時輸出累加器中的數據。

地址多路器用於輸出的地址是PC(程序計數器)地址還是數據/埠地址。每個指令周期的前4個時鐘周期用於從ROM中讀取指令,輸出的應是PC地址,後4個時鐘周期用於對RAM或埠的讀寫,該地址由指令給出,地址的選擇輸出信號由時鐘信號的8分頻信號fecth提供。

程序計數器用於提供指令地址,以便讀取指令,指令按地址順序存放在存儲器中,有兩種途徑可形成指令地址,一是順序執行程序的情況,二是執行JMP指令後,獲得新的指令地址。

狀態機控制器接受復位信號RST,當RST有效時,能通過信號ena使其為0,輸入到狀態機中以停止狀態機的工作。狀態機是CPU的控制核心,用於產生一系列的控制信號,啟動或停止某些部件,CPU何時進行讀指令來讀寫I/O埠及RAM區等操作,都是由狀態機來控制的。狀態機的當前狀態,由變量state記錄,state的值就是當前這個指令周期中已經過的時鐘數。指令周期是由8個時鐘組成,每個時鐘都要完成固定的操作。

3、系統時序

RISCCPU的復位和啟動操作是通過rst引腳的信號觸發執行的,當rst信號一進入高電平,RISCCPU就會結束現行操作,並且只要rst停留在高電平狀態,CPU就維持在復位狀態,CPU各狀態寄存器都設為無效狀態。當信號rst回到低電平,接著到來的第一個fetch上升沿將啟動RISCCPU開始工作,從ROM的000處的開始讀取指令並執行相應的操作。

指令時序,每個指令的前3個時鐘周期用於讀指令,4~6周期讀信號rd有效,第7個周期讀信號無效,第8個周期地址總線輸出PC地址,為下一個指令作準備。

指令時序,每個指令的第3.5個時鐘周期建立寫地址,第四個周期輸出數據,第5個時鐘周期輸出寫信號,第6個時鐘結束,第7.5個時鐘周期輸出為PC地址,為下個指令做準備。

圖2所示,這是ModelSimSE6.0進行波形仿真的結果。

4、微處理器指令

據處理指令:數據處理指令完成寄存器中數據的算術和邏輯操作,其他指令只是傳送數據和控制程序執行的順序.因此,數據處理指令是唯一可以修改數據值的指令,數據處理指令一般需兩個源操作數,產生單個結果.所有的操作數都是8位寬,或者來自寄存器,或者來自指令中定義的立即數.每一個源操作數寄存器和結果寄存器都在指令中獨立的指定。

數據傳送和控制轉移類指令:共有17條,不包括按布爾變量控制程序轉移的指令。其中有全存儲空間的長調用、長轉移和按2KB分塊的程序空間內的絕對調用和絕對轉移;全空間的長度相對

轉移及一頁範圍內的短相對轉移;還有條件轉移指令。這類指令用到的助記符有ACALL, AJMP, LCALL, LJMP, SJMP, M, JZ, JNZ, ONE,DJNZ。控制轉移類指令主要用來修改1x指針從而達到對程序流的控制,所用到的寄存器主要有sp, pc, ir等寄存器。

指令由操作碼和操作數組成,取指令電路的目的就是把指令碼和操作數分開。組成電路由如圖3所示。取指令電路由程序指針,程序指針解析模塊、ROM, IR(指令寄存器),控制器狀態寄存器組成。取指令指令的過程如下:PC指針的值經過pc_mux模塊賦值,把ROM中的指令取出來,送到指令寄存器的數據輸入口。指令寄存器受狀態寄存器的控制,當取指令信號有效時,ROM中的指令碼被保存在指令寄存器中,然後經控制器解碼,產生控制信號,對PC指針的增量加以控制取出下一條指令。

5、彙編

彙編程序是為了調試軟核而開發的,手工編寫機器碼很容易出錯並且工作量很大。在調試過程中修改指令集時,彙編程序也要作相應的修改。所以要求編譯器的結構簡單性能可靠,在程序中必要的地方可以用堆疊代碼方法實現,不必考慮編程技巧和彙編器效率問題。彙編程序用於測試RISC CPU的基本指令集,如果CPU的各條指令執行正確,停止在HLT指令處。如果程序在其它地址暫停運行,則有一個指令出錯。程序中,@符號後的十六進位表示存儲器的地址,每行的//後表示注釋。下面是一小段程序代碼,編譯好的彙編機器代碼裝入虛擬ROM,要參加運算的數據裝入虛擬RAM就可以開始進行仿真。

6、 調試

最基本的調試手段 是基於FPGA 廠商提供的開發和仿真環境,用硬體描述語言編寫TESTBENCH,構成一個最小運行環境。TESTBENCH產生對目標軟核的激勵,同時記錄軟核的輸出,和預期值進行比對,可以確定核的設計錯誤。這種方法的好處是實現容易,結果準確,但硬體描述語言編碼量較大。為了仿真結果的準確性,無論功能仿真還是時序仿真,仿真的步長都不能太小,結果導致整個系統仿真時間太長。本設計中先對RISC CPU的各個子模塊進行了分別綜合,檢查正確性,如果發現錯誤可以在較小的範圍內來檢查並驗證。子模塊綜合完畢後,把要綜合的RISC CPU的模塊與外圍器件以及測試模塊分離出來組成一個大模塊,綜合後的的RISC CPU模塊如圖4所示,這是Xilinx ISE7.1 所綜合生成的技術原理圖。

綜合的結果只是通用的門級網表,只是一些與、或、非門的邏輯關係,和晶片實際的配置情況還有差距。此時應該使用FPGA/CPLD廠商提供的實現與布局布線工具,根據所選晶片的型號,進行晶片內部功能單元的實際連接與映射。這種實現與布局布線工具一般要選用所選器件的生產商開發的工具,因為只有生產者最了解器件內部的結構,如在ISE的集成環境中完成實現與布局布線的工具是Flow Engine。

STA(Static Timing Analysis)靜態時序分析,完成FPGA設計時必須的一個步驟。在FPGA加約束、綜合、布局布線後,在ISE中可以運行Timing Analyzer生成詳細的時序報告,本設計中Minimum period: 12.032ns (Maximum Frequency: 83.112MHz),Minimum input arrival time before clock: 6.479ns,Maximum output required time after clock: 9.767ns。然後,設計人員檢查時序報告,根據工具的提示找出不滿足Setup/Hold time的路徑,以及不符合約束的路徑,進行修改保證數據能被正確的採樣。在後仿真中將布局布線的時延反標到設計中去,使仿真既包含門延時,又包含線延時信息。這種後仿真是最準確的仿真,能真實地反映晶片的實際工作情況。

7、結 論

複雜的RISC CPU設計是一個從抽象到具體的過程,本文根據FPGA的結構特點,圍繞在FPGA上設計實現八位微處理器軟核設計方法進行探討,研究了片上系統的設計方法和設計復用技術,並給出了指令集和其調試方法,提出了一種基於FPGA的微處理器的IP的設計方法。本文作者創新點是:根據Spartan II 的內部結構,在編碼階段實現了地址和數據的優化,實現階段對內部布局布線進行重新配置,設計實現的微處理器僅佔用78個slices,1個Block RAM,在10萬門的晶片實現,佔用6%的資源。

責任編輯:gt

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 基於可編程邏輯器件和VHDL語言實現算術邏輯單元的設計
    打開APP 基於可編程邏輯器件和VHDL語言實現算術邏輯單元的設計 宋澤明,陳文楷 發表於 2021-01-04 10:36:00
  • 用單片機實現可編程邏輯器件的配置
    基於單片機的複雜可編程邏輯器件快速配置方法本文引用地址:http://www.eepw.com.cn/article/171835.htm基於SRAM(靜態隨機存儲器)的可重配置PLD(可編程邏輯器件)的出現,為系統設計者動態改變運行電路中PLD
  • 可編程邏輯器件和ASIC對比介紹
    製作ASIC的方法大致分為兩種,一種是掩膜處理方法(掩膜處理是IC的一種製作工藝,指在IC的不同製造階段需要處理晶片上的不同位置,這就需要遮住其他的不需要處理的地方,稱為不同的掩膜層),由半導體廠家製造;另一種是使用現場可編程器件實現,用戶通過計算機和EDA開發工具,將所設計的電路或則是系統「編程」到晶片上,就可以得到一塊專用集成電路。
  • 基於51單片機和可編程邏輯器件實現LED顯示屏
    1 LED顯示屏的基本結構及關鍵技術 本系統設計中,控制系統採用單片機+CPLD的方案來實現,整個控制系統可分為:信號接收及處理模塊和CPLD的掃描控制模塊和LED點陣驅動模塊,如圖1 所示。本系統的關鍵技術是使用雙口RAM和CPLD晶片,解決LED顯示屏中高速數據傳輸和快速掃描控制的難題,大大提高了動態顯示的刷新率。
  • 可編程邏輯器件
    可編程邏輯器件(Programmable Logic Device,PLD)是一種半定製集成電路,在其內部集成了大量的門和觸發器等基本邏輯單元電路(LEs),用戶通過編程來改變PLD內部電路的邏輯關係或連線,就可以得到所需要的設計電路。可編程邏輯器件的出現,改變了傳統的數字系統設計方法,其設計方法為採用EDA技術開創了廣闊的發展空間,並極大地提高了電路設計的效率。
  • 可編程邏輯器件及應用
    可編程邏輯器件及應用10.1 概述10.1.1 PLD器件的基本結構10.1.2 PLD器件的分類10.1.3 PLD器件的優點一、縮短設計周期,降低設計風險二、高可靠性和可加密性三、降低了產品生產的總費
  • 基於可編程邏輯器件實現MPEG-4簡易編碼器和解碼器核的設計
    打開APP 基於可編程邏輯器件實現MPEG-4簡易編碼器和解碼器核的設計 Paul;Schumacher;Wilso 發表於 2020-12-24 00:00:00
  • 五大優勢凸顯 可編程邏輯或將呈現快速增長
    對於可編程邏輯器件,設計人員可利用價格低廉的軟體工具快速開發、仿真和測試其設計。然後,可快速將設計編程到器件中,並立即在實際運行的電路中對設計進行測試。原型中使用的PLD器件與正式生產最終設備時所使用的PLD完全相同。這樣就沒有了NRE成本,最終的設計也比採用定製固定邏輯器件時完成得更快。PLD五大優勢固定邏輯器件和PLD各有自己的優點。
  • 什麼是可編程邏輯器件(PLD)?
    可編程邏輯器件(Programmable Logic Device,縮寫PLD)屬於數字類型的電路晶片,而不是模擬或混合信號晶片。與一般數字晶片不同,PLD內部的數字電路可以在出廠後才規劃決定,而一般數字晶片在出廠前就已經決定其內部電路,無法在出廠後再次改變。
  • SoC設計中的IP軟核與硬核的對比及方案選擇
    IP核可以兩種形式提供給客戶:軟核和硬核。兩種方式都可使客戶獲得在功能上經過驗證的設計。軟核也被稱為可綜合內核,需要由客戶進行綜合併在其SoC上實現。而硬核已完全實現(完成了版圖設計),可直接用於製造。(從技術上說,一種設計只有生產後才能實現。但是在此情況下,實現的意思是指安排布局並可直接投入生產)。
  • 基於FPGA的虛擬邏輯分析儀設計與實現
    現場可編程邏輯器件FPGA,是一種可由用戶根據所設計的數字系統的要求,在現場由自己配置、定義的高密度專用數字集成電路。它具有設計方便、靈活、校驗快和設計可重複改變的特點。本文討論了一種基於FPGA的虛擬邏輯分析儀的設計,通過採用高性能的FPGA器件,再利用PC機的強大處理功能,配合LabVIEW圖形化語言開發實現。
  • 基於Otsu分割算法和Nios II軟硬體實現實現實時目標成像跟蹤研究
    並且依靠並行Nios II軟核和硬體邏輯結合的速度優勢對算法實時實現。 2 算法原理 Otsu方法(即大律方法)在獲得圖像灰度直方圖的條件下,利用概率論的知識,通過計算最大類間方差而得到分割門限.在較為理想的「雙峰」條件下,用Otsu準則能夠得到較好的分割效果。Otsu算法步驟如下:
  • CPLD實現GPIB控制器的設計
    MAXplusⅡ開發工具是美國 Altera公司自行設計的一種 EDA軟體工具,它具有原理圖輸入和文本輸入(採用硬體描述語言)兩種輸入手段,配備有編輯、編譯、仿真、綜合、晶片編程等功能。Altera 公司是世界上從事可編程邏輯晶片生產的幾家主要廠商之一,其 MAX3000A系列可編程邏輯晶片速度快,容量大,性價比高。
  • 基於FPGA的八通道超聲探傷系統設計
    摘要:文中提出了一種基於FPGA的八通道超聲探傷系統設計方案。該系統利用低功耗可變增益運放和八通道ADC構成高集成度的前端放大和數據採集模塊;採用FPGA和ARM作為數位訊號處理的核心和人機互動的通道。
  • 可編程邏輯器件:GAL、CPLD、FPGA
    打開APP 可編程邏輯器件:GAL、CPLD、FPGA 博科觀察 發表於 2021-01-08 16:01:30
  • 基於ARM7系列晶片嵌入式平臺上實現的設計方案
    1掉電保護方案實現的系統基礎掉電保護是在由ARM體系的硬體平臺和μClinux嵌入式作業系統的基礎上實現的。ARM7系列的微處理器支持八種類型的中斷處理。外部中斷請求會在外部中斷引腳有效(一般是低電平),並且程序狀態寄存器相關位(即CPSR的I控制位)設置為允許時得到處理器響應。
  • 基於Zynq的圖形生成電路設計與實現
    導讀: 為了適應機載液晶顯示器向低功耗、高集成度發展的趨勢,提出了一種基於Zynq可擴展處理平臺的圖形生成電路實現方法。本文引用地址:http://www.eepw.com.cn/article/201808/386777.htm
  • 基於FPGA的可攜式邏輯分析儀設計
    根據硬體設備設計上的差異,目前邏輯分析儀大致可分為獨立式和需結合電腦的卡式虛擬邏輯分析儀。獨立式邏輯分析儀性能優異,但價格昂貴,一般用戶較少使用。而本項目所實現的可攜式邏輯分析儀,以較低的成本提供了相應的性能,雖然性能有所下降,但完全可以滿足一般的邏輯信號分析,並且使成本大幅度下降,儀器體積較小,便於攜帶,適合普通用戶的使用。
  • 基於可編輯邏輯器件和VHDL語言實現猝發多脈衝產生系統的應用方案
    打開APP 基於可編輯邏輯器件和VHDL語言實現猝發多脈衝產生系統的應用方案 馮傳均,何泱,戴文 發表於 2020-12-09 07:20:00