【正文】
hence the sum S = X + Y = (25)10 can also be denoted as a fivebit integer. Note also the labeling of individual bits, such that X = x4x3x2x1x0 and Y =y4y3y2y1y0. The figure shows the carries generated during the addition process. For example, a carry of 0 is generated when x0 and y0 are added, a carry of 1 is produced when x1 and y1 are added, and so Chapters 2 and 4 we designed logic circuits by first specifying their behavior in the form of a truth table. This approach is impractical in designing an adder circuit that can add the fivebit numbers in . There quired truth table would have 10 input variables, 5 for each number X and Y. It would have 210= 1024 rows! A better approach is to consider the addition of each pair of bits, xi and yi , separately.Figure Halfadder.Figure An example of addition.For bit position 0, there is no carryin, and hence the addition is the same as for . For each other bit position i, the addition involves bits xi and yi , and a carryin ci. The sum and carryout functions of variables xi, yi, and ci are specified in the truth table in . The sum bit, si, is the modulo2 sum of xi,yi , and ci. The carryout, ci+1 , is equal to1 if the sum of xi, yi, and ci is equal to either 2 or 3. Karnaugh maps for these functions are shown in part (b) of the figure. For the carryout function the optimal sumofproducts realization is:For the si function a sumofproducts realization isA more attractive way of implementing this function is by using the XOR gates, as explained below.Use of XOR GatesThe XOR function of two variables is defined as x1⊕x2= +. The preceding expression for the sum bit can be manipulated into a form that uses only XOR operations as followsThe XOR operation is associative。參考文獻[1] Michael HDL 高級數(shù)字設計. 北京:電子工業(yè)出版社,2005年[2] David ,John :硬件/軟件接口() 北京:機械工業(yè)出版社,[3] Yale and Sanjay Introduction to Computing Systems: from bits and gates to C and beyond, McGrawHill, 2001[4] Yale and Sanjay Introduction to Computing Systems: from bits and gates to C and beyond, 2nd edition,McGrawHill, 2004[5] (美)帕特(Patt,.)(英文版由于能力和時間有限,對Verilog HDL硬件描述語言、QuartusII和ModelSim綜合仿真工具的理解還不夠深入,所以還存在一些需要改進的地方: II綜合的程度還不夠好;;。由于之前基本上沒有接觸過硬件描述語言、Quartus II和ModelSim綜合仿真工具,所以開始的階段遇到了很多困難和挫折,最后在團隊的努力下都將其解決了。本次設計中,首先研究了LC3的指令系統(tǒng)結構,掌握其存儲結構、寄存器組、指令集等只是細節(jié),分析其自陷、中斷和異常的運行機制;其次,完成了LC3處理器的邏輯設計;最后,用Verilog HDL硬件描述語言完成建模,QuartusII綜合,通過ModelSim仿真工具,以冒泡排序為為例,完成對整個LC3處理器的測試,測試結果正確。由于條件限制,不能是統(tǒng)計的數(shù)值更精確,否則理論值與運算值應該是更接近的。 計算式如下:T=%(7+8)+%5+%5+%5+%6+%5+%(7+8)+%(7+8)≈結果分析:。此外,計算時要注意,執(zhí)行訪問存儲器指令時,因為表53 測試程序指令執(zhí)行概率指令種類指令條數(shù)指令占總指令的百分比LD1%ADD67350%AND750%NOT22350%BR22500%LEA150%LDR22350%STR10756%存儲器和處理器之間處理數(shù)據(jù)的速率是不一樣的,簡單的說是有延遲的。運算公式如下:式中,T表示理論運算的平均CPI值,pi為第i個指令出現(xiàn)的概率,Ti為第i指令的時鐘周期數(shù),n是運行程序的指令種類數(shù)。從理論上看,平均每條指令時鐘周期數(shù)應該等于每條指令執(zhí)行的概率乘以該指令的的周期數(shù)的總和。10≈。冒泡測試程序的執(zhí)行指令數(shù)為146207條,每個時鐘周期長度為10ps,該程序的仿真測試時間為11696700ps,根據(jù)CPU性能方程[2]:執(zhí)行時間=平均每條指令時鐘周期數(shù)(CPI)指令數(shù)(IC)時鐘周期長度進行計算:CPI=11696700247。LC3的微程序流程圖可以看出指令的每個時鐘周期都進行什么操作。證明本次基于LC3ISA的處理器的實現(xiàn)是正確的。 冒泡排序結果 ModelSim冒泡排序仿真結果 將冒泡程序的機器碼(十六進制),將排列的數(shù)據(jù)(十六進制)。圖中紅點處即排序結果已經(jīng)排序完成,在此設置斷點便于觀察程序共執(zhí)行指令數(shù),可以看出,指令數(shù)為146207條指令。采用大量數(shù)據(jù)進行測試,便于檢驗LC3 CPU的穩(wěn)定性以及設計的正確性。if(i!=0),back to LOOP1SSS JSR SSS 。if(ji) back to LOOP2 ADD R4,R4,1 。j=j+1 ADD R6,R6,1 NOT R7,R3 ADD R7,R7,1 ADD R7,R4,R7 。arry[j]=arry[j+1] STR R1,R6,1 。R7=arry[j+1]arry[j] BRp SKIP2 。R1=arry[j] LDR R2,R6,1 。load base address of arry ADD R3,R3,0 。R6=0 AND R7,R7,0 。R2=0 AND R3,R3,0 。intialize first loop counter i=10LOOP1 AND R1,R1,0 。測試程序匯編代碼如下: .ORIG x0000 AND R4,R4,0 。一個適合的測試程序,應該滿足兩個條件:能夠包含較多的指令,即測試時能夠覆蓋較多的關鍵路徑;具有一定的使用意義。本次測試程序均是采用匯編語言寫成,然后通過原作者附帶的匯編指令編輯器,編譯成機器碼,將機器碼放入“.txt”文件中。 RTI指令仿真結果 非法操作碼仿真結果 程序測試本節(jié)主要介紹所使用的測試程序以及測試結果。非法操作碼指令與RTI指令測試過程類似,觀察向量控制器中的Vector中的數(shù)值變化,Vector中的數(shù)值為x01時,則證明發(fā)生異常,與設計相符;如果Vector中的值不是x01則沒有發(fā)生異常,執(zhí)行錯誤,則說明設計中有錯誤。對與RTI和非法操作碼的指令我們無法通過界面來觀察,只能通過關鍵路徑中的數(shù)據(jù)變化,來驗證設計的正確性。這證明了本設計的自陷服務功能以及存儲器映射I/O的部分與理論設計一致,是正確的。借助ModelSim軟件自帶的輸出語句,將DDR中的數(shù)據(jù)進行輸出,即將KBDR數(shù)據(jù)113337(數(shù)據(jù)是隨機設置的)進行路徑傳送,最后將數(shù)據(jù)送到DDR中,借助Monitor語句輸出。 end,對本次設計進行路徑覆蓋。h0025。 3500。 KBDRIN=1639。h0005。 1500。 KBDRIN=1639。h0010。 1500。Testbench測試模塊部分代碼如下://generate data to input to KBDR always begin KBDRIN=1639。我們都知道LC3是采用存儲器映射I/O,將內存的幾個地址單元映射成鍵盤數(shù)據(jù)寄存器(KBDR)、鍵盤狀態(tài)寄存器(KBSR)、顯示器數(shù)據(jù)寄存器(DDR)和顯示器狀態(tài)寄存器(DSR)。本文利用Modelsim仿真工具,采用基于Tesbench的驗證技術結合三種驗證方法進行驗證。驗證人員在關心規(guī)范需求的同時又關心電路的詳細設計方案。(3)灰盒驗證法。這樣驗證法為驗證人員提供了很好的可控性和可觀測性。在黑盒驗證法中,設計被當成一個黑盒子,對驗證人員而言不知道內部設計細節(jié),根據(jù)設計規(guī)范,驗證設計是否符合規(guī)范。本文主要采用基于Testbench的技術。驗證的主要技術分為兩類:基于形式化的驗證和基于Testbench(測試平臺)的技術。自底向上的驗證方法主要步驟為:設計文件通過工具軟件檢測確認沒有語法錯誤;0層驗證,獨立地驗證每個設計單元;1層驗證,驗證設計內部模塊之間的接口和系統(tǒng)存儲映射的正確性;2層驗證,即系統(tǒng)級驗證,驗證整個設計的功能;門級網(wǎng)表驗證和時序驗證同自頂向下的驗證方法一致。驗證方法主要分為自頂向下的驗證方法和自底向上的驗證方法。驗證(Verification)的目的是為了確認設計符合設計規(guī)范。顯然,驗證是集成電路設計中的一個重要環(huán)節(jié)。原因在于百萬門設計并不困難,然而驗證百萬門的設計是一件非常難的事情。 LC3處理器的RTL視圖 PSR系統(tǒng)優(yōu)先級模塊RTL視圖 PSR系統(tǒng)特權模式模塊RTL視圖 PSR系統(tǒng)條件碼模塊RTL視圖 驗證隨著IC工藝的不斷發(fā)展,設計變得越來越復雜。實現(xiàn)自陷、中斷和異常的另外兩個關鍵部件,當前棧指針產(chǎn)生器和向量控制器,均可以從數(shù)據(jù)通路RTl視圖中找到,這里不再具體列出。圖中三個模塊單元,從左往右依次是微程序定序器(Microsequencer)、次態(tài)地址選擇器(Next state MUX)、控存部件(Control store,6450 ROM)。雖然LC3的指令周期只有6個階段,但是數(shù)據(jù)通路部件還是比較長。兩個模塊分別是控制通路模塊(左)和數(shù)據(jù)通路模塊(右)。從圖中可以看出,LC3多周期處理器總共使用了727個LE,其中包含了683個組合功能模塊和232個專用邏輯寄存器。LC3處理器采用微程序實現(xiàn)控制通路,控存的設計采用Quartus II的LPM功能, LC_3處理器的綜合報告使用FPGA芯片內部的ROM。LE是Cyclone II FPGA器件的最基本的可編程單元。90nm工藝技術,提供8256個邏輯單元(LE),嵌入了1818位的乘法器、專用外部存儲器接口電路、36個4Kbit ROM塊、鎖相環(huán)(PLL)和高速I/O接口等。本次設計選擇的優(yōu)化選項是平衡。綜合使用的軟硬件環(huán)境如表51所示。編譯將硬件描述語言描述的電路編譯成對應的功能模塊以及模塊與模塊的拓撲結構;優(yōu)化根據(jù)設置的面積和時間約束,按照一定的算法對編譯的結構進行邏輯重組和優(yōu)化;映射根據(jù)設置的時序和面積約束從基本單元庫中選擇符合條件的單元構成實際的門級網(wǎng)表。 綜合綜合是利用綜合工具根據(jù)基本單元庫將硬件描述語言描述的電路轉換為門級網(wǎng)表電路的過程。第五章 綜合驗證與性能分析綜合和仿真測試是集成電路中一個非常重要的環(huán)節(jié)。紅色的部分就是能夠實現(xiàn)自陷、中斷和異常的功能模塊;圖中控制部件產(chǎn)生的數(shù)據(jù)和信號時用空心箭頭標識,數(shù)據(jù)通路本身傳遞的數(shù)據(jù)用實心箭頭標識。綜上所述,當前棧指針產(chǎn)生器、PSR系統(tǒng)和向量控制器以及一個PC減1的功能部件,添加到已實現(xiàn)的數(shù)據(jù)通路上,就實現(xiàn)了自陷、中斷和異常的功能。向量控制器包含一個兩個8