武漢理工大學FPGA第2章FPGA設計基礎_第1頁
武漢理工大學FPGA第2章FPGA設計基礎_第2頁
武漢理工大學FPGA第2章FPGA設計基礎_第3頁
武漢理工大學FPGA第2章FPGA設計基礎_第4頁
武漢理工大學FPGA第2章FPGA設計基礎_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 FPGA設計基礎2.1 Verilog HDL基礎知識2.1.1概 述硬件描述語言HDL(Hardware Description Language )是一種用形式化方法來描述數字電路和數字邏輯系統(tǒng)的硬件描述語言,有兩種類型:VHDL和Verilog HDL。 舉個例子,在傳統(tǒng)的設計方法中,對2輸入的與門,我們可能需要到標準器件庫中調出一個74系列的器件,但在硬件描述語言中,“& ”就是一個與門的形式描述,“C = A & B”就是一個2輸入與門的描述,而“and”就是一個與門器件。Verilog HDL 語言具有這樣的描述能力:設計的行為特性、設計的數據流特

2、性、設計的結構組成以及包含響應監(jiān)控和設計驗證方面的時延和波形產生機制。所有這些都使用同一種建模語言,可綜合的Verilog模塊可以構成一個可靠的復雜IP軟核和固核模塊。Verilog HDL 語言不僅定義了語法,而且對每個語法結構都定義了清晰的模擬、仿真語義。因此,用這種語言編寫的模型能夠使用Verilog 仿真器進行驗證。Verilog HDL語言從C 編程語言中繼承了多種操作符和結構。Verilog HDL 模型可以是實際電路的不同級別的抽象,主要指:(1)系統(tǒng)級(2)算法級(3)RTL級(4)門級(5)開關級,前三種屬于行為級描述。VHDL側重于系統(tǒng)級描述,從而更多的為系統(tǒng)級設計人員所采

3、用;Verilog側重于電路級描述,從而更多的為電路級設計人員所采用。Verilog非常容易掌握,只需有C語言編程基礎,就可很快上手。2.1.2 Verilog 與 C語言的比較 雖然Verilog語言是從C語言過渡而來的,其某些語法與C語言接近,但存在如下幾方面的本質區(qū)別:1. Verilog是一種硬件語言,最終是為了產生實際的硬件電路或對硬件電路進行仿真;C語言是一種軟件語言,是控制硬件來實現(xiàn)某些功能;2. C語言只要是語法正確,都是可以編譯執(zhí)行的;而Verilog語言有可綜合的限制,即在所有的verilog語句中,只有一部分可以被綜合,而另外的部分則不能被綜合,只能用來仿真;3. C語言

4、是一種軟件編程語言,其基本思想是語句的循序執(zhí)行,而Verilog語言的基本思想是模塊的并行執(zhí)行;4. 利用Verilog編程時,要時刻記得Verilog是硬件語言,要時刻將Verilog與硬件電路對應起來。Verilog語言是在C語言的基礎之上發(fā)展起來的,他們有著類似的語意,C語言和Verilog的很多關鍵字和運算符都可以對應起來。表2-1中列出了常用的C與Verilog相對應的關鍵字與控制結構。表2-1 常用的C與Verilog相對應的關鍵字與控制結構CVerilog sub-functionmodule, function, task if-then-elseif-then-else Ca

5、seCase ,begin, end ForFor WhileWhile BreakDisable DefineDefine IntInt Printfmonitor, display,strobe表2-2列出了C與Verilog相對應的運算符。表2-2 常用的C與Verilog相對應的運算符 C Verilog功能 * * 乘 / / 除 + + 加 - - 減 % %取模 ! ! 反邏輯 && && 邏輯且 | |邏輯或 > > 大于 < < 小于 >= >= 大于等于 <= <= 小于等于 = = 等于 !=

6、 !=不等于 位反相 & & 按位邏輯與 | | 按位邏輯或 按位邏輯異或 按位邏輯同或 >> >> 右移 << <<左移 ?: ?:同等於if-else敘述2.1.3 采用自頂向下的設計方法隨著技術的發(fā)展,一個芯片上往往集成了幾十萬到幾百萬個器件,傳統(tǒng)的自底向上的設計方法已不太現(xiàn)實。因此,一個設計往往從系統(tǒng)級設計開始,把系統(tǒng)劃分成幾個大的基本的功能模塊,每個功能模塊再按一定的規(guī)則分成下一個層次的基本單元,如此一直劃分下去。自頂向下的設計方法可用圖2-1所示的樹狀結構表示。系統(tǒng)級的頂層模塊模塊A模塊B模塊C模塊B1模塊B2模塊C1

7、圖2-1 TOP-DOWN 設計思想通過自頂向下的設計方法,可實現(xiàn)設計的結構化,可使一個復雜的系統(tǒng)設計由多個設計者分工合作,還可以實現(xiàn)層次化的管理。2.1.4 模塊模塊(module)是Verilog 的基本描述單位,用于描述某個設計的功能或結構及與其他模塊通信的外部端口。模塊在概念上可等同于一個器件,尤如調用通用器件(與門、三態(tài)門等)或通用宏單元(計數器、ALU、CPU)等。因此,一個模塊可在另一個模塊中調用。一個設計是由一個個模塊(module)構成的,模塊是以module 開始,endmodule 結束,模塊包括模塊的端口定義部分和邏輯功能描述部分。模塊的端口定義部分,即該模塊的端口聲明

8、定義了該模塊的管腳名,是該模塊與其他模塊通訊的外部接口,相當于器件的pin 。模塊的內容,包括I/O說明,內部信號、調用模塊等的聲明語句和功能定義語句。I/O說明定義了管腳信號的流向,信號的位寬(總線或單根信號線)。功能描述用來產生各種邏輯(主要是組合邏輯和時序邏輯),還可用來實例化一個器件。例如:3位加法器的形成語言為module addr (a, b, cin, count, sum); / /模塊名及輸入輸出端口列表/ /input 2:0 a; / /定義信號流向及位寬/ / input 2:0 b;input cin;output count;output 2:0 sum;assig

9、n count,sum = a +b + cin; / /功能描述/ /endmodule2.1.5 Verilog HDL 基本語法Verilog HDL 的一些基本語法包括標識符、注釋、格式、數字值集合、兩種數據類型、運算符、表達式和一些基本的語句等。1. 標識符(1) 定義標識符( identifier)用于定義模塊名、端口名、信號名等。 Verilog HDL 中的標識符可以是任意一組字母、數字、$符號和_(下劃線)符號的組合,但標識符的第一個字符必須是字母或者下劃線。另外,標識符是區(qū)分大小寫的。以下是標識符的幾個例子:Count COUNT /與Count 不同R56_68FIVE$

10、(2) 關鍵詞Verilog HDL 定義了一系列關鍵詞,但要注意只有小寫的關鍵詞才是保留字。例如,標識符always (這是個關鍵詞)與標識符ALWAYS(非關鍵詞)是不同的。下面是常用的關鍵字:always and assign begin case default disable edge else end endcase endmodule endfunction endprimitive endspecify endtable endtask event for forever fork function if initial inout input integer join lar

11、ge module negedge nor not or output等等。(3) 書寫規(guī)范建議以下是一些書寫規(guī)范的要求:² 使用有意義的有效的名字如 Sum 、CPU_addr等;² 用下劃線區(qū)分詞;² 采用一些前綴或后綴,如時鐘采用Clk 前綴:Clk_50,Clk_CPU;低電平采用_n 后綴:Enable_n;² 統(tǒng)一一定的縮寫,如全局復位信號 Rst; ² 同一信號在不同層次保持一致性,如同一時鐘信號必須在各模塊保持一致;² 自定義的標識符不能與保留字同名;² 參數采用大寫,如SIZE 。2. 注釋Verilog

12、HDL 中有兩種注釋方式,一種是以“/*”符號開始,“*/” 結束,在兩個符號之間的語句都是注釋語句,因此可擴展到多行。如:/* statement1 ,statement2,. .statementn */ 以上n個語句都是注釋語句。另一種是以 / 開頭的語句,它表示以 / 開始到本行結束都屬于注釋語句。3. 格式Verilog HDL 是區(qū)分大小寫的,即大小寫不同的標識符是不同的。另外其書寫格式自由,即一條語句可多行書寫,一行可寫多個語句。空白(新行、制表符、空格)沒有特殊意義。如 input A;input B;與input A;input B;是一樣的。書寫規(guī)范建議:一個語句一行。4.

13、 數字值集合下面介紹Verilog HDL的值集合、常量( 整型、實型、字符型)和變量等。(1) 值集合Verilog HDL中規(guī)定了四種基本的值類型,這四類基本值組成的Verilog HDL 中的常量。0:邏輯0或“假”;1:邏輯1或“真”;X:未知值;Z:高阻。注意,這四種值的解釋都內置于語言中。如一個為z 的值總是意味著高阻抗,一個為0 的值通常是指邏輯0;在門的輸入或一個表達式中為“z ”的值通常解釋成“x ”;此外,x 值和z 值都是不分大小寫的,也就是說,值0x1z 與值0X1Z 相同。(2)常量Verilog HDL 中有三種常量: 整型、實型、字符串型。下劃線符號(_)可以隨意

14、用在整數或實數中,它們就數量本身沒有意義,可用來提高易讀性,唯一的限制是下劃線符號不能用作為首字符。下面主要介紹整型和字符串型。1)整型整型數可以按如下兩種方式書寫:A. 簡單的十進制格式這種形式的整數定義為帶有一個可選的“+”(一元)或“”(一元)操作符的數字序列。下面是這種簡易十進制形式整數的例子。32 十進制數32-15 十進制數-15B. 基數表示法這種形式的整數格式為:size 'base valuesize 定義以位計的常量的位長;base 為o 或O(表示八進制),b 或B(表示二進制),d 或D(表示十進制),h 或H (表示十六進制);value 是基于base 的值

15、的數字序列,值x 和z 以及十六進制中的a 到f 不區(qū)分大小寫。下面是一些具體實例。5 'O37 5 位八進制數(二進制 11111 )4'D2 4 位十進制數 (二進制0011)4 'B1x_01 4 位二進制數7'Hx 7位x(擴展的x), 即xxxxxxx4 'hZ 4 位z(擴展的z) , 即zzzz4'd-4 非法:數值不能為負8 'h 2A 在位長和字符之間,以及基數和數值之間允許出現(xiàn)空格3' b 001 非法: 和基數b 之間不允許出現(xiàn)空格(2+3)'b10 非法:位長不能夠為表達式注意:x (或z )在十六

16、進制值中代表4 位x(或z ),在八進制中代表3 位x(或z ),在二進制中代表1 位x (或z )。如果定義的長度比為常量指定的長度長,通常在左邊填0 補位。但是如果數最左邊一位為x 或z ,就相應地用x 或z 在左邊補位。例如:10'b10 左邊添0 占位, 000000001010'bx0x1 左邊添x 占位, x x x x x x x 0 x 1如果長度定義得更小,那么最左邊的位相應地被截斷。例如:3 ' b1001_0011 與3'b011 相等5'H0FFF 與5'H1F 相等2)字符串型字符串是雙引號內的字符序列,字符串不能分成多

17、行書寫。例如:"INTERNAL ERROR"" REACHED>HERE "用8 位ASCII 值表示的字符可看作是無符號整數,因此字符串是8 位ASCII 值的序列。為存儲字符串“INTERNAL ERROR ”,變量需要8 * 1 4 位。r e g 1: 8*14 Message;. . .Message = "INTERNAL ERROR"5. 數據類型Verilog HDL 主要包括兩種數據類型:線網類型(net type) 和寄存器類型(reg type)。(1) 線網類型1)wire 和 tri 定義線網類型主要

18、有wire和tri兩種。線網類型用于對結構化器件之間的物理連線的建模,如器件的管腳,內部器件如與門的輸出等。線網類型代表的是物理連接線,因此它不存貯邏輯值,必須由器件所驅動,通常由assign進行賦值。如 assign A = BC;當一個wire 類型的信號沒有被驅動時,缺省值為Z(高阻)。信號沒有定義數據類型時,缺省為 wire 類型。2)兩者區(qū)別tri 主要用于定義三態(tài)的線網。(2) 寄存器類型 1)定義reg 是最常用的寄存器類型,寄存器類型通常用于對存儲單元的描述,如D型觸發(fā)器、ROM等。必須注意的是,reg 類型的變量,不一定是存儲單元,如在always 語句中進行描述的變量必須用

19、reg 類型的變量。reg范圍定義是可選的,如果沒有定義范圍,缺省值為1 位寄存器。例如:reg 3:0 Sat; / S a t 為4 位寄存器。reg Cnt; /1 位寄存器。2)寄存器類型的存儲單元建模舉例用寄存器類型來構建兩位D觸發(fā)器如下:reg 1:0 Dout ;. always(posedge Clk)Dout <= Din;.3)書寫規(guī)范建議對數組類型,請按降序方式,如7:0 。6、 運算符和表達式常用的算術運算符主要是:加法(二元運算符):“+”;減法 (二元運算符): “-”;乘法(二元運算符):“*”;(1)算術操作結果的位數長度算術表達式結果的長度由最長的操作數

20、決定。在賦值語句下,算術操作結果的長度由操作符左端目標長度決定。考慮如下實例:reg 3:0 Arc, Bar, Crt;reg 5:0 Frx;. . .Arc = Bar + Crt;Frx = Bar + Crt;第一個加的結果長度由Bar、Crt 和A rc 長度決定,長度為4 位。第二個加法操作的長度由Frx 的長度決定(Frx 、Bat 和Crt 中的最長長度),長度為6 位。(2) 關系運算符關系運算符有:?>(大于) ?<(小于) ?>=(不小于) ?<=(不大于) = = (邏輯相等) != (邏輯不等)關系操作符的結果為真(1 )或假(0 )。如果操

21、作數中有一位為X 或Z ,那么結果為X 。例如:23 > 45 結果為假(0 ),而:52 < 8'hxFF 結果為x 。如果操作數長度不同,長度較短的操作數在最重要的位方向(左方)添0 補齊。例如:'b1000 > = 'b01110等價于:'b01000 > = 'b01110 結果為假(0 )。(3) 邏輯運算符邏輯運算符有:&& (邏輯與) | (邏輯或) !(邏輯非)用法為:(表達式1) 邏輯運算符 (表達式2) .這些運算符在邏輯值0(假) 或1(真) 上操作。邏輯運算的結果為0 或1 。例如, 假定C

22、rd = 'b0; /0 為假 Dgs = 'b1; /1 為真那么Crd && Dgs 結果為0 (假) Crd | Dgs 結果為1 (真) !Dgs 結果為0 (假)(4) 按位邏輯運算符按位運算符有:?(一元非):(相當于非門運算)?&(二元與):(相當于與門運算)?|(二元或): (相當于或門運算)?(二元異或):(相當于異或門運算)? , (二元異或非即同或) :(相當于同或門運算)這些操作符在輸入操作數的對應位上按位操作,并產生向量結果。例如:假定A = 'b0110;B = 'b0100;那么A | B 結果為0 1 1

23、0;A & B 結果為0 1 0 0如果操作數長度不相等, 長度較小的操作數在最左側添0 補位。例如,'b0110 'b10000 與下式的操作相同:'b00110 'b10000 結果為' b 1 0 11 0 。(5)條件運算符條件操作符根據條件表達式的值選擇表達式,形式如下:cond_expr ? expr1 : expr2如果cond_expr 為真(即值為1 ),選擇expr1 ;如果cond_expr 為假(值為0 ),選擇expr2 。如果cond_expr 為x 或z ,結果將是按以下邏輯expr1 和expr2 按位操作的值:

24、0 與0 得0 ,1 與1 得1 ,其余情況為x 。(6)連接運算符連接操作是將小表達式合并形成大表達式的操作。形式如下:expr1, expr2, . . .,exprN例如:wire 7:0 Dbus;assign Dbus 7:4 = Dbus 0, Dbus 1, Dbus2, Dbus 3 ;/ /以反轉的順序將低端4 位賦給高端4 位。assign Dbus = Dbus 3:0, Dbus 7 : 4 ; / /高4 位與低4 位交換。由于非定長常數的長度未知, 不允許連接非定長常數。例如, 下列式子非法:Dbus,5 / /不允許連接操作非定長常數。(7)條件語句if 語句的語

25、法如下:if(condition_1)procedural_statement_1else if(condition_2)procedural_statement_2else procedural_statement_3如果對condition_1 求值的結果為非零值,那么procedural_statement_1 被執(zhí)行,如果condition_1 的值為0 、x 或z ,那么procedural_statement_1 不執(zhí)行。如果存在一個else 分支,那么這個分支被執(zhí)行。例如:if(Sum < 60)beginGrade = C;Total_C = Total _c + 1;e

26、ndelse if(Sum < 75)beginGrade = B;Total_B = Total_B + 1;endelsebeginGrade = A;Total_A = Total_A + 1;end注意條件表達式必須總是被括起來。(8) case 語句case 語句是一個多路條件分支形式,其語法如下:case(case_expr)case_item_expr ,case_item_expr :procedural_statement. . . default:procedural_statementendcasecase 語句首先對條件表達式case_expr 求值,然后依次對各

27、分支項求值并進行比較,第一個與條件表達式值相匹配的分支中的語句被執(zhí)行??梢栽? 個分支中定義多個分支項;這些值不需要互斥。缺省分支覆蓋所有沒有被分支表達式覆蓋的其他分支。例如:case (HEX)4'b0001 : LED = 7'b1111001; / 14'b0010: LED = 7'b0100100; / 24'b0011: LED = 7'b0110000; / 34'b0100: LED = 7'b0011001; / 44'b0101: LED = 7'b0010010; / 54'b0110

28、: LED = 7'b0000010; / 64'b0111: LED = 7'b1111000; / 74'b1000: LED = 7'b0000000; / 84'b1001: LED = 7'b0010000; / 94'b1010: LED = 7'b0001000; / A4'b1011: LED = 7'b0000011; / B4'b1100: LED = 7'b1000110; / C4'b1101: LED = 7'b0100001; / D4'b

29、1110: LED = 7'b0000110; / E4'b1111: LED = 7'b0001110; / Fdefault :LED = 7'b1000000; / 0endcase書寫建議:case 的缺省項必須寫,防止產生鎖存器。7. 例化語句(1) 例化語法一個模塊能夠在另外一個模塊中被引用,這樣就建立了描述的層次。模塊例化語句形式為:module_name instance_name(port_associations);信號端口可以通過位置或名稱關聯(lián),但是關聯(lián)方式不能夠混合使用。端口關聯(lián)形式如下:port_expr / /通過位置。.PortNa

30、me (port_expr) / /通過名稱。例如:module and (C,A,B);input A,B;output C;and A1 (T3, A, B ); /實例化時采用位置關聯(lián),T3對應輸出端口C,A對應A,B對應B。and A2( /實例化時采用名字關聯(lián),.C是and 器件的端口,其與信號T3相連).C(T3),.A(A),.B(B);port_expr 可以是以下的任何類型:1) 標識符(reg 或net )如 .C(T3),T3為wire型標識符。2) 位選擇 ,如 .C(D0),C端口接到D信號的第0bit 位。3) 部分選擇 ,如 .Bus (Din5:4)。4) 上述

31、類型的合并,如 .Addr( A1,A21:0。5) 表達式(只適用于輸入端口),如 .A (wire Zire = 0 )。注意:在例化的端口映射中請采用名字關聯(lián),這樣,當被調用的模塊管腳改變時不易出錯。(2) 懸空端口的處理在實際例化中,可能有些管腳沒用到,可在映射中采用空白處理,如:DFF d1 (.Q(QS), .Qbar ( ), .Data (D ) ,.Preset ( ), / 該管腳懸空.Clock (CK); /名稱對應方式。對輸入管腳懸空的,則該管腳輸入為高阻 Z,輸出管腳被懸空的,該輸出管腳廢棄不用。(3) 不同端口長度的處理當端口和局部端口表達式的長度不同時,端口通過

32、無符號數的右對齊或截斷方式進行匹配。8. 連續(xù)賦值語句數據流的描述是采用連續(xù)賦值語句(assign )語句來實現(xiàn)的。語法如下:assign net_type = 表達式;連續(xù)賦值語句用于組合邏輯的建模。等式左邊是wire 類型的變量,等式右邊可以是常量、由運算符如邏輯運算符、算術運算符參與的表達。例如:wire 3:0 Z, Preset, Clear; /線網說明assign Z = Preset & Clear; /連續(xù)賦值語句注意幾個方面問題:(1)連續(xù)賦值語句的執(zhí)行是:只要右邊表達式任一個變量有變化,表達式立即被計算,計算的結果立即賦給左邊信號。(2)連續(xù)賦值語句之間是并行語句

33、,因此與位置順序無關。9. 阻塞賦值語句與非阻塞賦值語句阻塞語句是順序執(zhí)行的,而非阻塞語句是同時執(zhí)行的??傮w上來講,遵循大體原則:阻塞語句運用在組合邏輯電路設計中,而非阻塞語句運用在時序邏輯電路設計中。阻塞賦值語句,從字面上理解,該條語句阻塞了下面語句的執(zhí)行,“=”用于阻塞的賦值,凡是在組合邏輯(如在assign 語句中)賦值的請用阻塞賦值。阻塞語句最能體現(xiàn)verilog HDL和C語言之間的血緣關系,比如,在時鐘沿觸發(fā)的always進程里,若先執(zhí)行b=c,再執(zhí)行a=b,那么本質上,在一個時鐘沿觸發(fā)里面,a=c成立,即是說,不要b變量,直接在進程里賦值a=c,結果是一樣的。這和c語言中b=c,

34、a=b性質相同。非阻塞賦值操作符用小于等于號(即<=)表示,只能用于對寄存器類型變量進行賦值,因此只能用在“initial ”和“always”塊等過程塊中。10. 過程賦值語句Verilog HDL 中提供兩種過程賦值語句 initial 和 always 語句。這兩種語句之間的執(zhí)行是并行的,即語句的執(zhí)行與位置順序無關。這兩種語句通常與語句塊(begin .end)相結合,則語句塊中的執(zhí)行是按順序執(zhí)行的。(1) initial 語句initial 語句只執(zhí)行一次,即在設計被開始模擬執(zhí)行時開始(0時刻)。通常只用在對設計仿真的測試文件中,用于對一些信號進行初始化和產生特定的信號波形。(2

35、) always 語句always 語句與initial 語句相反,是被重復執(zhí)行,執(zhí)行機制是通過對一個稱為敏感變量表的事件驅動來實現(xiàn)的。always 語句可實現(xiàn)組合邏輯或時序邏輯的建模。例如:initialClk = 0 ;always #5 Clk = Clk;因為always 語句是重復執(zhí)行的,因此,Clk 是初始值為0 的,周期為10 的方波。注意以下幾點問題:1)對組合邏輯的always 語句,敏感變量必須寫全,敏感變量指always 語句括號內的變量;2)對組合邏輯器件的賦值采用阻塞賦值 “=”;3)時序邏輯器件的賦值語句采用非阻塞賦值 “<=”,如上的 Q = D。2.2 嵌

36、入式處理器介紹2.2.1 嵌入式處理器的體系結構對于嵌入式系統(tǒng),在硬件方面,最重要最核心的部分是處理器部分,圖2-2是嵌入式處理器的體系結構示意圖(虛線框中的單元只在高性能處理器中才有)。IQIRIDCU高級處理單元指令存儲分支存儲數據存儲ALUFLPUAOUPFCUMMUPCMARSPMDRSRSARSFRSBIU地址總線數據總線控制總線內部總線內部總線 圖2-2 嵌入式處理器的體系結構示意圖表2-3中列出了通用存儲器中的結構單元以及每一個單元的功能。表2-3 處理器中的結構單元及功能結 構 單 元功 能MAR(存儲器地址寄存器)它保存將要從外部存儲器取來的字節(jié)或者字的地址。處理器在開始一個

37、取周期之前,先把指令或者數據的地址發(fā)送給MARMDR(存儲器數據寄存器)它保存從(或者要發(fā)送到)外部存儲器或者I/O地址取來的字節(jié)或者字內部總線將處理器的所有結構單元內部相連。它的寬度可以是8、16、32或者64位地址總線這是一個外部總線,將地址從MAR發(fā)送到存儲器、IO設備以及系統(tǒng)的其他單元數據總線是一個在讀寫操作過程中從一個地址中取來(或者發(fā)送到)指令或者數據字節(jié)的外部總線控制總線在處理器和存儲器(或者設備)之間傳送控制信號的外部總線BIU(總線接口單元)它是外部總線與處理器內部單元之間的接口單元IR(指令寄存器)它連續(xù)地將指令碼(操作碼)發(fā)送給處理器的執(zhí)行單元結 構 單 元功 能ID(指

38、令譯碼器)它翻譯IR接收到的指令操作碼,并將它發(fā)送給處理器CUCU(控制單元)它控制著處理過程所需的所有總線行為和單元功能ARS(應用寄存器組)是一組在處理用戶應用程序的指令過程中使用的片上寄存器。寄存器窗口1包含寄存器的一個子集,每一個子集包含一個軟件例程的靜態(tài)變量。寄存器文件是與單元(例如ALU或者FLPU)相結合的文件ALU(算術邏輯單元)根據IR中出現(xiàn)的當前指令,執(zhí)行算術或者邏輯指令的單元PC(程序計數器)它產生了通過MAR從存儲器獲取地址的指令周期。當有規(guī)律地連續(xù)取指時,它的值自動增加。在80x86處理器中稱為指令指針SRS(系統(tǒng)寄存器組)在處理監(jiān)督系統(tǒng)程序的指令過程中使用的一組寄存

39、器SP(堆棧指針)它是一個地址指針,與存儲器的棧頂對應IQ(指令隊列)它是一個指令隊列,作用是使得當一條指令執(zhí)行完后,IR沒有必要等待下一條指令PFCU(預取控制單元)這是一個控制將數據提前從存儲器中取到I-緩存或者D-緩存中的單元。當處理器的執(zhí)行單元需要指令和數據時,將指令和數據傳送過去。處理器沒有必要在執(zhí)行指令之前才取數據I-緩存(指令緩存)它連續(xù)地將指令以FIFO的模式保存,就像一個指令隊列。它使得處理器能夠通過使用PFCU高速執(zhí)行指令;處理器訪問外部系統(tǒng)存儲器的速度相對要慢很多BT 緩存 (分支目標緩存)當遇到分支指令時,例如jump、loop或者call,它協(xié)助準備好要執(zhí)行的下一個指

40、令集。它的取單元能夠預見I-緩存中的分支指令D-緩存(數據緩存)它保存從外部存儲器預取來的數據。數據緩存通常將鍵(地址)和數值(字)共同保存在一個位置上。如果進行適當的配置,它還可以保存寫穿透數據。寫穿透數據意味著從執(zhí)行單元獲得執(zhí)行結果,并將這個結果從緩存?zhèn)骰氐较鄳耐獠看鎯ζ鞯刂分蠱MU(存儲管理單元)它是管理存儲器2的單元,負責執(zhí)行過程所需要的指令或者數據(參見下面的注意2)FLPU(浮點處理單元)一個從ALU分離出來的單元,用于浮點處理,這是在微處理器或者DSP中快速執(zhí)行數學函數的基本單元FRS(浮點寄存器組)專門用來以標準格式保存浮點數的寄存器組,F(xiàn)LPU使用它來保存數據和堆棧高級處理

41、單元這些單元用于多級流水處理、多路超標量處理,使得處理速度達到每個時鐘周期能執(zhí)行多條指令3。還有一個MAC4單元,用于計算過程中系數的相乘和累加AOU(原子操作單元)它使得當一個用戶(編譯器)指令分割成幾個叫做原子操作的處理器指令后,在發(fā)生過程中斷之前結束該指令的操作。這樣就避免了各個例程和任務之間發(fā)生共享數據的問題注意:1. 當處理器并行運行多任務時,會自動完成一個任務到另外一個任務的快速切換。2. MMU(存儲器管理單元)管理RAM存儲器中的頁,以及這些頁在外部和內部高速緩存中的副本。管理必須做到當指令執(zhí)行時,產生的頁和高速緩存失敗(失效)要盡量少。3. 由于高級處理單元的作用,指令周期時

42、間比時鐘周期要短得多。4. DSP中必須要有MAC單元。5. 高性能處理器中的單元用斜體顯示。幾乎所有的處理器都具有圖中實線框中的結構單元,高性能處理器在圖中用虛線框中的結構單元表示。通常,性能是通過MIPS(百萬指令/秒)或者MFLOPS(百萬浮點指令操作/秒)或者Dhrystone/s來度量的。2.2.2 嵌入式處理器嵌入式微處理器的基礎是通用計算機中的 CPU,在應用中,將微處理器裝配在專門設計的電路板上,只保留和嵌入式應用有關的功能,這樣可以大幅度減小系統(tǒng)體積和功耗。為了滿足嵌入式應用的特殊要求,嵌入式微處理器雖然在功能上和標準微處理器基本是一樣的,但在工作溫度、抗電磁干擾、可靠性等方

43、面一般都做了各種增強。 與工業(yè)控制計算機相比,嵌入式微處理器具有體積小、重量輕、成本低、可靠性高的優(yōu)點,但是在電路板上必須包括ROM、RAM、總線接口、各種外設等器件。嵌入式微處理器及其存儲器、總線、外設等安裝在一塊電路板上,稱為單板計算機。如 STD-BUS、PC104等。近年來,德國、日本的一些公司又開發(fā)出了類似“火柴盒”式名片大小的嵌入式計算機系列OEM產品,臺灣研華公司也推出了類似的模組化系統(tǒng) SOM(System On Module)。 嵌入式處理器目前主要有 Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM系列等。嵌入式微處理器又可分為CI

44、SC和RISC兩類。大家熟悉的大多數臺式PC 都是使用CISC微處理器的,如 Intel 的x86。RISC 結構體系有兩大主流:Silicon Graphics 公司(硅谷圖形公司)的 MIPS 技術和ARM 公司的 Advanced RISC Machines 技術,此外 Hitachi(日立公司)也有自己的一套 RISC 技術 SuperH。 RISC 和 CISC 是目前設計制造微處理器的兩種典型技術,雖然它們都是試圖在體系結構、操作運行、軟件硬件、編譯時間和運行時間等諸多因素中做出某種平衡,以求達到高效的目的,但采用的方法不同。因此,在很多方面差異很大,主要有: (1) 指令系統(tǒng):R

45、ISC 設計者把主要精力放在那些經常使用的指令上,盡量使它們具有簡單高效的特色。對不常用的功能,常通過組合指令來完成。因此,在 RISC 機器上實現(xiàn)特殊功能時,效率可能較低。但可以利用流水技術和超標量技術加以改進和彌補。而 CISC 計算機的指令系統(tǒng)比較豐富,有專用指令來完成特定的功能。因此,處理特殊任務效率較高。(2) 存儲器操作:RISC 對存儲器操作有限制,使控制簡單化;而 CISC 機器的存儲器操作指令多,操作直接。 (3) 程序:RISC 匯編語言程序一般需要較大的內存空間,實現(xiàn)特殊功能時程序復雜,不易設計;而 CISC 匯編語言程序編程相對簡單,科學計算及復雜操作的程序設計相對容易

46、,效率較高。 (4) 中斷:RISC 機器在一條指令執(zhí)行的適當地方可以響應中斷;而 CISC 機器是在一條指令執(zhí)行結束后響應中斷。 (5) CPU:RISC CPU 包含有較少的單元電路,因而面積小、功耗低;而 CISC CPU 包含有豐富的電路單元,因而功能強、面積大、功耗大。 (6) 設計周期:RISC 微處理器結構簡單、布局緊湊、設計周期短、且易于采用最新技術,CISC 微處理器結構復雜,設計周期長。 (7) 用戶使用:RISC 微處理器結構簡單、指令規(guī)整、性能容易把握、易學易用,CISC微處理器結構復雜、功能強大、實現(xiàn)特殊功能容易。 (8) 應用范圍:由于 RISC 指令系統(tǒng)的確定與特

47、定的應用領域有關,故 RISC 機器更適合于專用機,而 CISC 機器則更適合于通用機。2.2.3 嵌入式微控制器嵌入式微控制器又稱單片機,顧名思義,就是將整個計算機系統(tǒng)集成到一塊芯片中。嵌入式微控制器一般以某一種微處理器內核為核心,芯片內部集成 ROM/EPROM、RAM、總線、總線邏輯、定時/計數器、WatchDog、I/O、串行口、脈寬調制輸出、A/D、D/A、Flash RAM、EEPROM 等各種必要功能模塊。為適應不同的應用需求,一般一個系列的單片機具有多種衍生產品,每種衍生產品的處理器內核都是一樣的,不同的是存儲器和外設的配置及封裝。這樣可以使單片機最大限度地和應用需求相匹配,從

48、而減少功耗和成本。 與嵌入式微處理器相比,微控制器的最大特點是單片化,體積大大減小,從而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系統(tǒng)工業(yè)的主流,微控制器的片上資源一般比較豐富,適合于控制,因此稱微控制器。 嵌入式微控制器目前的品種和數量最多,比較有代表性的通用系列包括 8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300 等。另外還有許多半通用系列,如支持 USB 接口的 MCU 8XC930/931、C540、C541等,目前MCU占嵌入式系統(tǒng)約 70的市場份額。 特別值得注意的是,近年來提供X86微處

49、理器的著名廠商AMD公司將Am186CC/CH/CU 等嵌入式處理器稱之為Microcontroller,MOTOROLA 公司把以Power PC為基礎的 PPC505 和 PPC555 列入了單片機行列,TI 公司亦將其 TMS320C2XXX 系列 DSP做為 MCU 進行推廣。2.2.4 嵌入式 DSP處理器DSP 處理器對系統(tǒng)結構和指令進行了特殊設計,使其適合于執(zhí)行 DSP 算法,編譯效率較高,指令執(zhí)行速度也較高。在數字濾波、FFT、譜分析等方面,DSP 算法正在大量進入嵌入式領域。DSP應用正從在通用單片機中以普通指令實現(xiàn) DSP功能,過渡到采用嵌入式DSP處理器。嵌入式 DSP

50、處理器有兩個發(fā)展來源,一是 DSP 處理器經過單片化、EMC 改造、增加片上外設成為嵌入式 DSP 處理器,TI 的 TMS320C2000/C5000 等屬于此范疇;二是在通用單片機或片上系統(tǒng)(SOC)中增加 DSP 協(xié)處理器,例如 Intel的MCS-296。 推動嵌入式 DSP 處理器發(fā)展的一個重要因素是嵌入式系統(tǒng)的智能化,例如各種帶有智能邏輯的消費類產品、生物信息識別終端、帶有加解密算法的鍵盤、ADSL 接入、實時語音壓解系統(tǒng)、虛擬現(xiàn)實顯示等。這類智能化算法一般都具有運算量較大,特別是向量運算、指針線性尋址等較多的特點,而這些正是 DSP 處理器的長處所在。 嵌入式DSP處理器比較有代

51、表性的產品是 Texas Instruments的TMS320 系列和Motorola 的 DSP56000系列。TMS320 系列處理器包括用于控制的 C2000系列,移動通信的C5000系列,以及性能更高的C6000和C8000 系列。DSP56000 目前已經發(fā)展成為DSP56000、DSP56100、DSP56200和 DSP56300 等幾個不同系列的處理器。DSP 的設計者們把重點放在了處理連續(xù)的數據流上。在嵌入式應用中,如果強調對連續(xù)的數據流的處理及高精度復雜運算,則應該選用 DSP 器件。2.2.5 嵌入式片上系統(tǒng)隨著 VLSI 設計的普及化及半導體工藝的迅速發(fā)展,可以在一塊硅

52、片上實現(xiàn)一個更為復雜的系統(tǒng),這就是 System On Chip(SOC)。各種通用處理器內核將作為 SOC 設計公司的標準庫,和許多其它嵌入式系統(tǒng)外設一樣,成為 VLSI 設計中一種標準的器件,用標準的VHDL 等語言描述,存儲在器件庫中。用戶只需定義出整個應用系統(tǒng),仿真通過后就可以將設計圖交給半導體工廠制作樣品。這樣除個別無法集成的器件以外,整個嵌入式系統(tǒng)大部分均可集成到一塊或幾塊芯片中去,應用系統(tǒng)電路板將變得很簡潔,對于減小體積和功耗、提高可靠性非常有利。 SOC 可以分為通用和專用兩類。通用系列包括 Motorola 的 M-Core,某些 ARM 系列器件,Echelon 和 Mot

53、orola 聯(lián)合研制的 Neuron 芯片等。專用 SOC 一般專用于某個或某類系統(tǒng)中,不為一般用戶所知。一個有代表性的產品是 Philips 的 Smart XA,它將 XA 單片機內核和支持超過 2048 位復雜 RSA 算法的 CCU 單元制作在一塊硅片上,形成一個可加載 JAVA或 C 語言的專用的 SOC,可用于公眾互聯(lián)網如 Internet 安全方面。2.2.6 FPGA嵌入式處理器1. PowerPC405PowerPC405是一個32位RISC硬核,它支持CoreConnect總線的標準外設集合。使用CoreConnect總線,可以方便地控制多個外設。PowerPC405處理器

54、模塊包括IBM PowerPC405 RISC硬核,OCM控制器,時鐘/控制邏輯和CPU-FPGA接口,CoreConnect總線等,PPC405結構如圖2-3所示。圖2-3 PPC405內核體系結構框圖(1)內部結構IBM PowerPC 405 內核是一個32位的RISC 的CPU,集成了標量的5級管線,PowerPC405擁有各自獨立的指令緩存和數據緩存,一個JTAG端口,跟蹤式FIFO,多個計時器和一個內存管理單元(MMU)。(2)中央處理單元CPUPowerPC 405處理器的中央處理單元采用五級流水線操作,這五級流水線是取指、譯碼、執(zhí)行、回寫和裝入寫回。它的執(zhí)行單元(Execute

55、 Unit)執(zhí)行處理中的指令,包括進行整型運算約整型單元(IU)和進行浮點運算的浮點單元(FPU),浮整型單元包含算術邏輯單元(ALU)和通用寄存器(GRP)。通用寄存器(GPR)為操作數提供芯片上的資源,讀出和寫入指令通過存儲器傳輸數據,其他指令存取這些寄存器作為源數據并記錄執(zhí)行結果。(3)OCM控制器增強的指令和數據片上存儲器(OCM)控制器,直接與嵌入式塊RAM接口。主要用于控制器PowerPC405內核與BlockRAM的高速連接,它支持64bit的指令BRAM連接和32bit的數據BRAM連接。在FPGA中是否采用ISBRAM和DSRAM可由用戶設定。(4)時鐘/控制邏輯時鐘/控制邏輯主要用于PowerPC405內核的時鐘信號,電源信號和初始信號。(5)高速緩沖單元Cache Units高速緩沖器可以配置為寫回寫入的、可高速緩存不可高速緩的、在每頁或(存儲)模塊基礎上保持數據連貫性不保持的。(6)高速緩存控制器 帶有奇偶校驗的獨

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論