《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的八位RISC CPU的設計
基于FPGA的八位RISC CPU的設計
摘要: 從CPU的總體結構到局部功能的實現采用了自頂向下的設計方法和模塊化的設計思想,利用Xilinx公司的Spartan II系列FPGA,設計實現了八位CPU軟核。在FPGA內部不僅實現了CPU必需的算術邏輯器、寄存器堆、指令緩沖、跳轉計數、指令集,而且針對FPGA內部的結構特點對設計進行了地址和數據的優化。
關鍵詞: FPGA RISC Verilog
Abstract:
Key words :

  1  引 言

  隨著數字通信和工業控制領域的高速發展,要求專用集成電路(ASIC)的功能越來越強,功耗越來越低,生產周期越來越短,這些都對芯片設計提出了巨大的挑戰,傳統的芯片設計方法已經不能適應復雜的應用需求了。SoC(System on a Chip)以其高集成度,低功耗等優點越來越受歡迎。開發人員不必從單個邏輯門開始去設計ASIC,而是應用己有IC芯片的功能模塊,稱為核(core),或知識產權(IP)宏單元進行快速設計,效率大為提高。CPU 的IP核是SoC技術的核心,開發出具有自主知識產權的CPU IP核對我國在電子技術方面跟上世界先進的步伐,提高信息產業在世界上的核心竟爭力有重大意義。

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

  2  CPU IP核的組成

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

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

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

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

 CPU結構圖

  圖1  CPU結構圖                

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

  數據控制器其作用是控制累加器的數據輸出,由于數據總線是各種操作傳送數據的公共通道,分時復用,有時傳輸指令,有時要傳送數據。其余時候,數據總線應呈高阻態,以允許其他部件使用。所以,任何部件向總線上輸出數據時,都需要一個控制信號的,而此控制信號的啟、停則由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  系統時序

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

 

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

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

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

  4  微處理器指令

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

 讀寫指令時序

  圖2  讀寫指令時序

  數據傳送和控制轉移類指令:共有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指針的增量加以控制取出下一條指令。

取指令電路

  圖3 取指令電路

 

  5  匯編

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

  機器碼                地址             匯編助記符                    注釋

  @00  //地址聲明

  101_11000       //00           BEGIN: LDA DATA_2

  0000_0001      

  011_11000       //02           AND DATA_3

  0000_0010

  100_11000       //04            XOR DATA_2

  0000_0001        001_00000       //06            SKZ

  0000_0000      

  000_00000       //08            HLT                           //AND does't work

  6  調試

  最基本的調試手段

 

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

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

  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%的資源。

  參考文獻:

  [1] 夏宇聞.Verilog數字系統設計教程[M].北京: 北京航空航天大學出版社,2003. [2] 袁俊泉 孫敏琪 曹瑞 Verilog數字系統設計教程[M].西安: 西安電子科技大學出版社,2002.

  [3] J.Bhasjer 著 孫海平 等譯 Verilog HDL綜合實用教程[M].北京: 清華大學出版社,2004.

  [4] 楊厚俊 張公敬 張昆藏 編著  計算機系統結構---奔騰PC[M].北京: 科學出版社,2004.

  [5] 馮海濤 王永綱 石江濤 顏天信 王硯方. 基于FPGA的32位整數微處理器的設計與實現[J]. 小型微型計算機系統, 2005, 26(6): 1113-1117.

 

  [6] 王喆.八位CPU IP核的研究與設計[D].大連:大連理工大學,2005

  [7] http://www.xilinx-china.com/

  [8] 袁本榮 劉萬春 賈云得 朱玉文 用Verilog HDL進行FPGA設計的一些基本方法[J].微計算機信息,2004,20(6):93-95

 
此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          国产欧美三级| 日韩一级裸体免费视频| 国产美女一区| 久久国产直播| 亚洲天堂av电影| 永久555www成人免费| 国产亚洲成av人片在线观看桃| 亚洲国产欧美一区二区三区久久| 亚洲免费高清视频| 亚洲欧洲日本专区| 亚洲人精品午夜| 国产精品成人一区二区三区吃奶| 欧美一区二区三区免费观看| 国产农村妇女毛片精品久久麻豆| 国产精品vvv| 欧美国产乱视频| 国产欧美另类| 欧美国产日本高清在线| 一区二区三区波多野结衣在线观看| 免费在线亚洲欧美| 国产欧美日韩高清| 夜夜爽夜夜爽精品视频| 国产精品影视天天线| 久久精品国语| 国产精品swag| 91久久国产综合久久蜜月精品| 一区二区三区视频在线播放| 欧美国产大片| 蜜臀av在线播放一区二区三区| 久久国产精品久久国产精品| 在线欧美日韩| 亚洲免费视频一区二区| 国产精品久久影院| 樱桃成人精品视频在线播放| 亚洲在线观看免费视频| 亚洲欧美日韩爽爽影院| 欧美乱大交xxxxx| 国产精品夜夜夜一区二区三区尤| 亚洲人成网站色ww在线| 小黄鸭精品密入口导航| 欧美一级久久| 娇妻被交换粗又大又硬视频欧美| 国产精品女人久久久久久| 国产一区在线免费观看| 国产精品日韩一区| 日韩网站在线| 久久国产精品久久精品国产| 亚洲免费观看高清在线观看| 在线观看的日韩av| 女生裸体视频一区二区三区| 国产精品免费视频xxxx| 亚洲精品美女在线观看播放| 男同欧美伦乱| 国内精品久久久| 亚洲毛片一区二区| 日韩一级欧洲| 久久久久国产精品一区| 国产精品亚洲美女av网站| 久久久欧美精品sm网站| 黄色一区二区三区四区| 亚洲电影专区| 欧美国产精品va在线观看| 亚洲一区在线播放| 国产精品久久激情| 亚洲电影激情视频网站| 一区二区三区视频在线播放| 久久欧美中文字幕| 欧美性大战xxxxx久久久| 亚洲综合日本| 国产一区二区三区视频在线观看| 激情小说亚洲一区| 亚洲伦理在线免费看| 亚洲国产小视频| 久久亚洲春色中文字幕久久久| 亚洲国产天堂久久国产91| 国产日韩精品入口| 午夜精品久久久久久久99樱桃| 亚洲精品影院| 国产伦精品一区二区三区视频黑人| 亚洲精品一区久久久久久| 欧美午夜精品理论片a级按摩| 亚洲私人影院| 影音先锋中文字幕一区二区| 午夜日韩激情| 一本色道久久综合亚洲91| 欧美精品一区二区三区高清aⅴ| 欧美日韩精品一本二本三本| 欧美一区二区在线免费播放| 欧美色欧美亚洲另类七区| 国产噜噜噜噜噜久久久久久久久| 国内精品免费午夜毛片| 国模精品一区二区三区色天香| 一区二区久久久久久| 在线亚洲+欧美+日本专区| 国产精品成av人在线视午夜片| 亚洲欧美资源在线| 国产一区久久| 亚洲人成毛片在线播放| 亚洲免费影视第一页| 欧美日韩国产二区| 伊人春色精品| 国产精品video| 国产乱子伦一区二区三区国色天香| 欧美日本精品一区二区三区| 欧美日韩视频不卡| 欧美一区三区三区高中清蜜桃| 久久久久91| 国产精品jvid在线观看蜜臀| 亚洲片区在线| 国产精品www994| 欧美日韩久久不卡| 国产精品丝袜91| 女仆av观看一区| 一区二区三区日韩精品| 欧美精品v日韩精品v国产精品| 国产精品久久久一区二区| 亚洲国产婷婷综合在线精品| 亚洲精品乱码久久久久久日本蜜臀| 欧美在线一二三四区| 一本色道久久88精品综合| 欧美在线影院在线视频| 99国产精品久久久久久久成人热| 国产一区二区三区视频在线观看| 久久久久久网| 欧美第一黄色网| 欧美区国产区| 久久疯狂做爰流白浆xx| 国产女人水真多18毛片18精品视频| 亚洲日本一区二区三区| 亚洲午夜伦理| 亚洲三级毛片| 久久gogo国模啪啪人体图| 国产精品一区久久久| 蜜臀久久久99精品久久久久久| 影音先锋成人资源站| 国产日韩欧美二区| 国产综合在线看| 亚洲六月丁香色婷婷综合久久| 亚洲欧美日韩一区二区三区在线观看| 亚洲第一免费播放区| 久久精品视频在线观看| 久久精品一本久久99精品| 亚洲高清在线观看一区| 老司机免费视频久久| 亚洲校园激情| 国产精品久久久久久久久久ktv| 亚洲一区二区av电影| 欧美午夜美女看片| 99re6热只有精品免费观看| 欧美三级视频在线观看| 欧美激情久久久| 国产精品一香蕉国产线看观看| 国产精品网站视频| 亚洲影院在线观看| 国产精品久久久一区麻豆最新章节| 久久国产福利| 免费成年人欧美视频| 欧美日韩亚洲系列| 欧美亚洲第一页| 国产美女扒开尿口久久久| 欧美一区永久视频免费观看| 亚洲大胆人体在线| 狠狠色综合网| 韩国免费一区| 欧美精品免费看| 亚洲欧美卡通另类91av| 欧美三级电影网| 亚洲欧洲一区二区在线观看| 亚洲夜晚福利在线观看| 久久综合九九| 新狼窝色av性久久久久久| 亚洲一区中文字幕在线观看| 欧美亚洲在线播放| 欧美激情综合亚洲一二区| 久久精品二区亚洲w码| 正在播放日韩| 欧美大片在线看| 亚洲精选一区| 亚洲精品中文字幕在线| 国产性做久久久久久| 欧美视频专区一二在线观看| 一本色道久久综合亚洲精品按摩| 在线电影欧美日韩一区二区私密| 99国产精品国产精品久久| 欧美中文在线字幕| 精品动漫3d一区二区三区免费| 黄色工厂这里只有精品| 欧美激情自拍| 国产一区二区中文| 亚洲欧美一区二区三区在线| 国产欧美日韩免费看aⅴ视频| 亚洲视频图片小说| 国产一区二区三区av电影| 亚洲日本视频| 欧美gay视频激情| 久久高清免费观看| 欧美黄免费看| 久久国产夜色精品鲁鲁99| 亚洲尤物在线| 久久先锋影音av| 艳妇臀荡乳欲伦亚洲一区| 国产亚洲精品久久久| 日韩一级裸体免费视频| 欧美日本一道本在线视频| 欧美精品久久一区| 亚洲一区二区三区777| 另类图片综合电影| 亚洲韩国一区二区三区| 性欧美video另类hd性玩具| 久久天天躁夜夜躁狠狠躁2022| 一本久道久久综合婷婷鲸鱼| 免费看av成人| 久久婷婷麻豆| 欧美日韩国产成人在线免费| 欧美亚洲一级片| 国产综合欧美在线看| 欧美日韩视频| 亚洲毛片在线看| 亚洲专区一区| 国产日韩精品在线| 久久久久久久综合狠狠综合| 一区二区三区四区精品| 欧美日韩国产高清视频| 亚洲精品国产精品乱码不99按摩| 亚洲午夜国产成人av电影男同| 在线免费一区三区| 亚洲性感美女99在线| 国产亚洲成av人在线观看导航| 欧美激情va永久在线播放| 99re6热在线精品视频播放速度| 国产精品一区久久久| 国产日本欧美一区二区三区| 亚洲欧美在线播放| 欧美色综合天天久久综合精品| 尤物yw午夜国产精品视频| 激情亚洲一区二区三区四区| 国产一区二区三区精品欧美日韩一区二区三区| 先锋影音久久久| 国产深夜精品福利| 美国十次了思思久久精品导航| 久久久久久久一区二区三区| 亚洲美女黄网| 欧美日韩在线免费观看| 亚洲黄色毛片| 狠狠色丁香婷婷综合| 欧美成年人视频网站| 欧美黄免费看| 国产精品久久婷婷六月丁香| 蜜桃av一区二区| 亚洲国产欧洲综合997久久| 亚洲伊人观看| 国产精品资源| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美午夜片在线免费观看| 欧美日韩在线免费视频| 亚洲色诱最新| 欧美一区二区视频在线观看2020| 亚洲一区美女视频在线观看免费| 香蕉久久a毛片| 亚洲精品护士| 亚洲精品小视频在线观看| 国内欧美视频一区二区| 欧美成人午夜激情在线| 欧美成人精品在线播放| 久久久91精品国产| 国产九九视频一区二区三区| 久久精品在这里| 亚洲第一天堂无码专区| 国产精品乱码久久久久久| 国产婷婷色一区二区三区四区| 亚洲午夜久久久久久尤物| 欧美日韩国产不卡| 午夜久久资源| 一本色道**综合亚洲精品蜜桃冫| 黄色成人av网| 亚洲电影在线看| 一区视频在线播放| 99视频在线精品国自产拍免费观看| 欧美日韩高清在线一区| 国内精品嫩模av私拍在线观看| 久久伊伊香蕉| 亚洲视频一区二区| 久久久精品视频成人| 欧美三级视频在线| 欧美午夜不卡影院在线观看完整版免费| 国产亚洲一区在线| 亚欧成人精品| 校园春色国产精品| 亚洲婷婷国产精品电影人久久| 欧美激情中文字幕在线| 91久久精品久久国产性色也91| 亚洲精品自在久久| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品久久久亚洲一区| 一区二区在线视频播放| 亚洲欧美在线aaa| 久久精品成人| 亚洲中午字幕| 亚洲欧美日韩精品久久亚洲区| 欧美国产视频在线观看| 亚洲第一色中文字幕| 久久综合九色综合欧美狠狠| 国产精品久久久久久亚洲毛片| 在线观看不卡| 国产精品一区在线观看你懂的| 亚洲国产成人久久| 欧美影院在线| 久久一区激情| 夜夜爽av福利精品导航| 久久人体大胆视频| 欧美精品在线一区二区| 欧美在线观看视频一区二区| 国产视频不卡| 久久精品免费看| 欧美另类综合| 国际精品欧美精品| 国内精品久久国产| 欧美精品1区2区| 日韩视频一区二区三区在线播放| 国产视频一区二区三区在线观看| 一区二区视频免费在线观看| 亚洲美女色禁图| 99在线热播精品免费99热| 国产又爽又黄的激情精品视频| 一本色道久久综合亚洲精品按摩| 亚洲美女在线一区| 久久久精品2019中文字幕神马| 久久综合伊人77777尤物|