• 沒有找到結果。

暫存器轉換階層

N/A
N/A
Protected

Academic year: 2022

Share "暫存器轉換階層"

Copied!
40
0
0

加載中.... (立即查看全文)

全文

(1)

第八章

暫存器轉換階層

目錄

 暫存器轉移階層

 HDL中的暫存器轉移階層

 演算法狀態機

 設計範例

 設計範例的HDL描述

 二進位乘法器

(2)

暫存器轉換階層 (RTL)



數位系統設計–模組處理

– 模組:由數位元件所組成,如暫存器 ,解碼器,多工器等 元件所組成

– 模組間連接則是用共同的資料及路徑的控制所完成



何謂暫存器轉移處理

– 利用暫存器儲存處理過程中的暫態值



暫存器轉換階層包括三大部分

– 系統中有些暫存器,且能處理暫存器中的資料,其處 理的順序能被控制

暫存器

 數位系統中的基本要素,由正反器及邏輯 閘所形成

 1位元暫存器由一組正反器所構成,可儲存 1位元資訊,n位元暫存器可儲存n位元資訊

 暫存器可做設定清除及取補數的處理

(3)

資料處理

 暫存器內的資料作處理時採用並列方式 來完成

 需在單一計時脈波裡完成

 處理完的資料可取代原來資料或是轉移 到另一個暫存器

 例如

– 計數器:可將暫存器的內容加1

– 雙向移位暫存器 :可將資料向左或向右移位

運算處理順序

 主要是控制處理時的初始狀態及時脈信 號的處理

 先前的結果也會影響下一個運算

 控制邏輯的二進位變數可控制暫存器中

多種不同操作

(4)

指令



轉移- R2←R1

– 利用運算符號將R1暫存器中的資料轉移R1暫存器



條件指令- if(T1=1)then(R2 ← R1)

– T1為控制信號,而時脈不是變數,所有轉移都發生在 時脈邊緣的轉換

- if(T1=1)then(R2 ← R1,R1 ← R2) 兩內容值交換



其他指令

– R1 ←R1+R2 – R3 ←R3+1 – R4 ←shr R4 – R5 ← 0

數位系統中資料處理動作

 轉移動作

– 資料由一暫存器移至另一暫存器

 算術運算

– 對暫存器內資料做運算

 邏輯運算

– 對暫存器內非數字資料做位元處理

 移位運算

– 暫存器內資料做移位動作

 做轉移動作時來源暫存器的內容並未更

(5)

HDL 中的暫存器轉換階層

 暫存器轉換階層

– 依據硬體描述語言來描述數位系統

 Verilog HDL

– 利用行為組合及資料流向建構RTL

 暫存器轉換

– 依據程序指定敘述加以說明

 組合電路

– 連續的指定或程式指定敘述來說明

Verilog HDL 轉移敘述

 連續指定:說明組合邏輯

 程序指定(無時脈):描述 二進位加法器,A 和B是輸入,S是輸出

assign S = A+B ;

(6)

程序指定



方塊程序指定(blocking):運算為等號(=)

– 依照敘述在區塊內的順序而執行

 非方塊程式指定(non-blocking): (<=)

先將右邊運算式處理完畢再將結果指定給左邊

always @ (posedge clock) begin

RA = RA +RB ; RD = RA ; end

always @ (negedge clock) begin

RA <= RA+RB ; RD <= RA ; end

HDL 的運算子

 算術運算子:+ 、- 、 * 、 / 、 %

– 主要處理二進位數負數則用2´補數表示

 邏輯運算子:&& 、 || 、!

– 決定條件的真假

 位元處理運算子:& 、 | 、 ~ 、 ^

– 針對每一個位元做處理

 關係運算子:> 、 < 、 == 、 != 、 >= 、

<=

– 決定條件的真假

 移位運算子: >> 、 << 、 { , }

– 將左邊的運算元依右邊位元數值做位移

(7)

迴圈敘述

 Repeat,Forever,While,For 讓程序敘述重 複執行期敘述必須在initial 或always內

 Repeat:執行次數為其敘述後面數字

 Forever:不斷的重複執行程式敘述

intial begin Clock = 1’b0 ; repeat (16) #5 clock =~clock ; end

initial begin

clock = 1’b0 ; forever

# clock = ~clock ; end

迴圈敘述

 While: 運算式條件成立下執行某個敘述 或區塊敘述

 For :包含初始條件終止條件運算式及一 個控制變數改變的指定敘述

integer count ;

(8)

邏輯合成



可將硬體描述語言的原始碼轉譯成邏輯閘結構 的程式



若HDL的架構用在 RTL的描述就可直接

被轉 換成邏輯閘- 階層的描述來處理

 例子:將

HDL的架構轉譯成邏輯閘結構

HDL Example 8-1

//description of 2x4 decoder //usingfor loop statement module decoder (IN, Y) ;

input [1:0] IN; //Two binary inputs output [3:0] Y; //Four binary outputs reg [3:0] Y;

integer I; //control variable for loop always @ (IN)

for (I = 0; I <= 3; I = I + 1) if (IN == I) Y[I] = 1;

else Y[I] = 0;

endmodule

邏輯合成之敘述

 Assign

– assign 被用來描述組合邏輯

– assign Y = S ? I1:I0 ; // 為一2-to-1多工器 若要說明較大之多工器則敘述裡需有多個 運算子

 always

– 可用來代表一個組合邏輯或序向電路 – always @ (I1 or I0 or S)

if (S) Y=I1 ; else Y=I0 ;

若要說明較大之多工器則可用case敘述

(9)

HDL 模擬與合成的過程

模擬與合成

 模擬器:檢查HDL設計裡的RTL描述看動 作是否正確

 測試平台:提供模擬所需的要的信號給模 擬器

 邏輯合成器:接收正確的模擬結果產生一

個連接表相當於此設計的邏輯階層描述

(10)

控制與資料處理器的相互作用

 邏輯設計分為兩部分

– 關於資料處理運算的數位電路設計

– 決定多種不同動作完成順序的控制電路設計

演譯狀態機圖

 何謂演譯法

– 說明如何利用一組有限的程序步驟,來求解 一個問題

 流程圖

– 說明演譯法的程序步驟之順序以及抉擇路徑 的簡便方 法

 硬體演譯法

– 用一個已知的設備來解決問題的程序

 硬體演譯法的流程圖

– 將文字指令轉譯成一種資訊圖

(11)

ASM

 定義:

– 特別發展出來的特殊流程圖他是被用來定義 數位硬體演譯法的

 ASM圖與傳統的流程圖

– 傳統的流程圖並不需要考慮時間問題;而 ASM圖需描述從這一狀態到下一狀態的時序 關係。

 構造

– 此圖由三個基本元件所組成:狀態盒、判斷 盒、條件盒 。

狀態盒

 定義:

– 控制序列的狀態是由狀態盒來指示,這狀態 盒的形狀是一矩形盒,盒內記載著該狀態 下,由控制所產生的暫存器操作或是輸出信 號的名稱;狀態被賦予一個符號名稱,標記 在盒子的左上角,指定給狀態的二進位碼則 置於右上角

(12)

判斷盒

 定義:

– 判斷盒用來描述輸入對控制子系統的效應,

判斷盒的形狀是用有兩個或更多出口路徑的 菱形盒來表示。待測試的輸入條件被記載於 盒內,若條件是真的話,就取某一條出口路 徑;若是假的,就取另一條出口路徑。

條件盒

 定義:

– AMS所獨有的。如圖所示,條件盒用橢圓形來表 示,它的圓弧角可以讓它與狀態盒加以區別。至於 條件盒的輸入路徑,則是來自於判斷盒的其中一條 出口路徑。當輸入條件滿足給定的狀態時,則列在 條件盒內的暫存器操作或輸出才會產生。

(13)

ASM 方塊

 定義

– 由一個狀態盒及接自此盒的所有狀態盒和條件盒所 組成的,ASM方塊有一個入口及若干個由狀態盒結 構所代表的出口路徑;ASM圖則是由一個或是更多 個相互連接的方塊所組成的。如圖所示。

ASM 圖與狀態圖



ASM圖與狀態圖非常類似,每一個狀態區塊等 效於與循序電路的一個狀態,判斷盒則等效於 連接兩個狀態之指向所標註的二進位資訊,因 此,有時候可以很方便的將ASM圖轉換成狀態 圖,然後用循序電路程序來設計控制邏輯,例 如,上圖的ASM圖即可畫成如下圖之狀態 圖 。

(14)

時脈的考慮

 傳統的流程圖與ASM圖最主要的差異在 於解釋不同操作間的時間關係

 ASM圖將整個方塊視為一個單元,在該 方塊內所指定的所有操作必須與系統自 狀態T 1 轉變至次一狀態時的相同時序脈 波之邊緣轉換同步,可以用圖來表示

設計範例

設計一個帶有兩個正反器E及F,及一個四位元的二進 位計數器A的數位系統,在A內的各個正反器用A4,

A3,A2及A1來表示。A4是這個計數器的最大有效位 元(MSB),啟動信號S藉由清除計數器A和正反器F,可 用來啟動系統操作。然後由下一個時序脈波開始,將 計數器加1,並且持續增加直到操作停止。計數器位元 A3和A4可以決定操作的順序:



若A3 = 0,E被清除為0,同時繼續計數



若A3 = 1,E被設定為1,然後若A4 = 0,則繼續計數,

但是如果A4 = 1,則F在下一個時序脈波時,被設定為 1,而系統停止計數。



然後若S = 0,則系統保留在初始狀態,若S = 1,則重 複這個操作週期。

(15)

設計範例的 ASM

設計範例的操作序列



在ASM圖裡的每一個方塊所指示的操作,都是在同一 時序脈波期間內被執行。方塊中的狀態盒及條件盒內 所指明的操作都是在資料處理器的區域內被執行。而 由一狀態轉變至另一狀態,則是在控制邏輯中執行。

表8-2列出每個時序脈波之後,計數器與兩個正反器的 值 。



觀察表8-2,在E所執行的操作似乎延遲一個計時脈

(16)

8-2

計 數 器 正 反 器

A4 A3 A2 A1 E F 條 件 狀 態

0 0 0 0 1 0

0 0 0 1 0 0

0 0 1 0 0 0

0 0 1 1 0 0

A3 = 0 , A4 = 0 T1

0 1 0 0 0 0

0 1 0 1 1 0

0 1 1 0 1 0

0 1 1 1 1 0

A3 = 1 , A4 = 0

1 0 0 0 1 0

1 0 0 1 0 0

1 0 1 0 0 0

1 0 1 1 0 0

A3 = 0 , A4 = 1

1 1 0 0 0 0 A3 = 1 , A4 = 1

1 1 0 1 1 0 T2

1 1 0 1 1 1 T0

資料處理器的設計

 資料處理器的設計要求是在狀態盒及條

件盒內加以說明

(17)

資料處理器的設計



計數器除了做同步清除操作時要有額外的邏輯閘,其 餘都與圖6-12的計數器相似,



當控制在狀態T

1

時,每個時脈週期都可以讓計數器加 1,而且只有在控制狀態T

0

與S等於1時才會被清除。這 種有條件的操作需要一個AND閘來保證兩個條件同時 成立,其他兩個條件的操作則是利用其他兩個AND閘 來做正反器E的設定或清除。



在狀態T

2

期間,正反器F是非條件式的設定,注意,所 有的正反器與暫存器,包括在控制裡的正反器,都是 使用一個共同的計時脈波。

暫存器轉換階層描述

 暫存器轉移階層

– 主要是藉由指定暫存器在系統中,及操作如 何被執行,以及控制的順序來加以描述。

– 控制資訊及暫存器轉移操作可以被分開表 示。

– 狀態圖說明了控制順序,而狀態圖的資訊則

(18)

設計範例暫存器轉換階層描述

狀態表



狀態圖可以轉換成狀態表,因此控制器的循序 電路可以依據此狀態表來設計。

– 首先,我們必須在ASM圖上指定二進位值給每一個 狀態,對於在控制循序電路裡的n個正反器,其 ASM圖最多可容量2

n

種不同的狀態。

– 控制器的狀態表是現在狀態與輸入和其對應的次態 與輸出的對照表,在大部份的情況下,有許多隨意 的輸入條件必須包括進去,所以在處理狀態表時將 這些考慮進去是相當合理的。

(19)

控制狀態表

 兩個正反器,並將其標記為G1與G2。

 輸入是取自於判斷盒的條件

 輸出則相當於控制的現在狀態

目前狀態 輸入 次一狀態 輸出

目前狀態

符號 G1 G0 S A3 A4 G1 G0 T0 T1 T2

T0 0 0 0 X X 0 0 1 0 0

T0 0 0 1 X X 0 1 1 0 0

T1 0 1 X 0 X 0 1 0 1 0

T1 0 1 X 1 0 0 1 0 1 0

T1 0 1 X 1 1 1 1 0 1 0

T2 1 1 X X X 0 0 0 0 1

控制邏輯

 循序電路設計程序在第五章已經介紹

過,若將這種程序應用在表8-3,我們需

要用五個變數的卡諾圖來化簡輸入函

數,這是因為有五個五個變數列在表中

的”現在狀態”及”輸入”這兩欄之下,我

(20)

控制邏輯圖

設計範例的 HDL 描述



設計的三個階層:

– 構造的描述:

• 最詳細也是最低的階層,而用物理元件及元件之間的連 接來說明數位系統的設計。

– RTL描述

• 是利用暫存器,操作的執行及操作順序的控制來說明數 位系統設計。

– 基礎演算法的行為描述。

• 大多是在觀念的階層。描述設計的功能是採用相似於程

式語言的程序演算法。

(21)

RTL 描述



可以被區分為三個部份

– 第一部份是定義此設計裡的輸入、輸出及一些暫存

• 所有的輸入是S(開始),CLK(時脈),CLR(清除)。至於啟動 控制狀態至T

0

則需要清除輸入,而輸出是正反器E及F和暫 存器A。

– 第二部份則是控制順序

• 用兩個always指令來說明,第一個always區塊提供了兩個 操作:CLR輸入啟動了現在狀態到T

0

,利用時脈,正緣觸 發的CLK和狀態轉移做同步。第二個always區塊則包含了 一個說明從現在狀態轉到下一狀態的CASE條件

– 至於第三部份是提供暫存器轉移操作與輸出

• non-blocking指定(用符號<=)則被暫存器轉移操作所使用,

在控制狀態T1期間,這是特別的重要。

• 若使用blocking指定,則有兩個敘述必須要被使用,首先 是檢查E的敘述,最後是A增加1的敘述。

HDL Example 8-2

//RTL description of design example (Fig.8-11) module Example_RTL (S,CLK,Cir,E,F,A);

//Specify inputs and outputs //See block diagram Fig. 8-10 input S,CLK,Cir;

output E, F;

output [4:1] A;

//Specify system registers

reg [4:1] A; //A register

(22)

always @(posedge CLK or negedge Clr) if (~Clr) pstate = TO; //Initial state else pstate <= nstate; //Clocked operations always @ (S or A or pstate)

case (pstate)

TO: if (S) nstate = Tl; else nstate = TO;

Tl: if (A[3] & A[4]) nstate = T2; else nstate = Tl;

T2: nstate = TO;

endcase

//Register transfer operations //See list of operation Fig.8-11(b) always @ (posedge CLK)

case (pstate) TO: if (S)

begin

A <= 4'bOOOO;

F <= 1'bO;

end Tl:

begin

A <= A + 1'b1;

if (A[3]) E <= 1'bl;

else E <= 1'b0;

end T2: F <= I'bl;

endcase endmodule

設計描述的測試



測試平台模組(在4-11節裡說明了撰寫測試平 台的程式),這個測試模組產生了S,CLK,

CLR信號,同時檢查暫存器A,E及F所得到的 結果。

HDL Example 8-3

//Test bench for design example

module test_design_example;

reg S, CLK, Clr;

wire [4:1] A;

wire E, F;

//Instantiate design example

(23)

Example_RTL dsexp (S,CLK.Clr,E,F,A);

initial begin

Cir = 0;

S = 0;

CLK = 0;

#5 Clr = 1; S = 1;

repeat (32) begin

#5 CLK = ~ CLK;

end end initial

$monitor("A = %b E = %b F

= %b time = %0d".

A.E.F,$time);

endmodule

結構的描述



一個結構描述相當於一個電路的流程圖或是電 路的方塊圖。



圖8-10的方塊圖提供了結構描述所需的資訊電 路被分為三個部份:

– 控制方塊、正反器E與F,及一些相關的邏輯閘、具 有同步清除的計時器



設計範例的結構描述可以參考HDL例題8-4,

它包括了六個模組,但可以被區分成四部份:

(24)

模組功能



第一個模組宣告了此電路的輸入及輸出,出入 口的列表和用RTL描述所列的是相同的



使用控制模組來描述圖8-12的電路,在這個電 路裡的兩個正反器,其輸出為G1與G0,其輸 入為DG1與DG0,它們被宣告為wire的資料型 態。



在EF模組則依照相同的模型來描述兩個JK正反 器,首先被推導出來的是正反器的輸入方程 式,同時JK正反器則利用這些值當做輸入



最後的模組描述具有同步清除的計數器。



結構描述是利用例題8-3的測試平台來做測試動 作,至於結構描述的模擬結果,和RTL描述模 擬所得到的輸出結果是相同的。

HDL Example 8-4

//Structural description of design example //See block diagram Fig. 8-10

module Example_Structure (S,CLK,Clr,E,F,A);

input S,CLK,Cir;

output E, F;

output [4:1] A;

//Instantiate control circuit

control ctl (S,A[3],A(4],CLK,Clr,T2,Tl,Clear);

//Instantiate E and F flip-flips E_F EF (Tl,T2,Clear,CLK,A[3],E,F);

//Instantiate counter

counter ctr (Tl,Clear,CLK,A) ; endmodule

//Control circuit (Fig. 8-12)

module control (Start,A3,A4,CLK,Clr,T2,Tl,Clear);

input Start,A3,A4,CLK,Cir;

output T2,Tl,Clear;

wire Gl,GO,DG1,DGO;

//Combinational circuit assign DG1 = A3 & A4 & Tl,

DG0 = (Start & -GO) | Tl, T2 = Gl,

Tl = GO & ~Gl, Clear = Start & ~G-0;

//Instantiate D flip-flop DFF G1F (Gl,DG1,CLK,Cir), G0F (GO,DGO,CLK,Cir) ; endmodule

(25)

//D flip-flop

module DFF (Q,D,CLK,Clr) ; input D,CLK,Cir;

output Q;

reg Q;

always @ (poaedge CLK or negedge Clr) if (~Clr) Q = 1'b0;

else Q = D;

endmodule

//E and F flip-flops

module E_F (Tl,T2,Clear,CLK,A3,E,F) ; input Tl,T2,Clear,CLK.A3;

output E,F ;

wire E,F,JE,KE,JF,KF;

//Combinational circuit assign JE = Tl & A3,

KE = Tl & ~A3.

JF = T2, KF = Clear;

//Instantiate JK flip-flop JKFF EF (E,JE,KE,CLK), FF (F,JF,KF,CLK);

endmodula

//JK flip-flop

module JKFF (Q,J,K,CLK);

input J,K,CLK;

output Q;

reg Q;

always @ (posedge CLK) case ({J,K})

2'b00: Q = Q;

2'b01: Q = 1'b0;

2'b10: Q = I'bl;

2'b11: Q = ~Q;

endcase endmodule

//counter with synchronous clear module counter (Count,Clear,CLK,A);

input Count,Clear,CLK;

output [4:1] A;

reg [4:1] A;

always @ (posadge CLK)

(26)

二進位乘法器

 第二個設計範例,它代表一個二進位乘 法的硬體演算法,提出暫存器的結構來 完成此設計,然後藉由使用ASM圖來顯 示處理器及控制的設計。

 在這節裡,硬體演算法是產生一個循序 電路的乘法器,它僅由一個加法器及一 個移位暫存器來形成。

二進位乘法器方塊圖

(27)



暫存器A是一個具有並行載入的移位暫存器,

它接收加法器的結果同時它必須具有同步清除 的能力來重置暫存器為0。



正反器C必須設計成可接收輸入的進位同時也 要有同步清除的能力



暫存器Q是一個移位暫存器



計數器P是一個具有並行載入一個二進位常數 的二進位下數的計數器



暫存器B與Q需要有並行載入的能力,這是為 了能接收乘法操作一開始的乘數及被乘數。

暫存器結構



被乘數儲存在暫存器B內,乘數則儲存在暫存器Q內,

而部份乘積則在暫存器A內形成,同時儲存在暫存器A 與暫存器Q內,並加器用來將暫存器B的內容加到暫存 器A。



C正反器則是儲存加法動作後所產生的進位。



計數器P,起初設定一個等於乘數位元數的二進位數,

此計數器會在每一個部份乘積形成後逐次遞減,當計

(28)

二進位乘法器 ASM

二進位乘法器的數值例題

被乘數 B = 1011

C A Q P

乘數 Q 0 00000 10011 101

Q0 = 1 ; 加 B 10111

第一個部份的結果 0 10111 100

右移 CAQ 0 01011 11001

Q0 = 1 ; 加 B 10111

第二個部份的結果 1 00010 011

右移 CAQ 0 10001 01100

Q0 = 0 ; 右移 CAQ 0 01000 10110 010

Q0 = 0 ; 右移 CAQ 0 00100 01011 001

Q0 = 1 ; 加 B 10111

第五個部份的結果 0 11011

右移 CAQ 0 01101 10101 000

最後的結果 AQ = 0110110101

(29)

控制邏輯



數位系統可以被區分為兩個部分:一是在資料 處理器理的暫存器轉移設計,另一個是控制邏 輯設計。



至於控制邏輯設計事實上是設計循序電路的問 題,因此,最簡單的方法就是設計循序控制的 狀態圖



ASM圖和狀態圖相似,至於長方形的區塊用來 代表狀態盒,它是用來表示循序電路的狀態;

而菱形的區塊則是用來代表決定盒,它是狀態 圖用來決定此條件是否可以讓狀態轉換至下一 狀態。

二進位乘法器的控制說明

(30)

控制的方塊圖

 循序控制的輸入信號是S與Z,而輸出為 T 0 ,T 1 ,T 2 ,T 3 ,至於AND閘所產生的 信號L= T 2 Q 0 ,則是在狀態T 2 時,若Q 0 = 1,載入和到暫存器A所需的。

狀態指定

 設計裡有一重要步驟就是指定一個二進 位碼的值到此狀態,

– 最簡單的指定方式可以直接參考表8-5所列 的二進位數,

– 另一相似的指定是格雷碼,當從一數到下一 個數時,格雷碼只有一個位元會改變。

表 8-5 控 制 的 狀 態 指 令

狀 態 二 進 位 格 雷 碼 O ne -hot

T0 00 00 0001

T1 01 01 0010

T 10 11 0100

(31)

控制邏輯設計

 兩個特殊的設計程序

– 一個是用循序暫存器及解碼器

• 如同它的名字所隱含的意義,就是使用一個暫 存器來代表控制狀態。以及用一個解碼器來提 供相對應的每一個狀態的輸出。

– 另外一個是用每一狀態一個正反器的方 式。

• 結果就是將一個狀態一個正反器應用在循序電

循序暫存器及解碼器



二進位乘法的控制狀態圖有四個狀態及兩個輸入,如 果用循序暫存器及解碼器來完成,那麼暫存器需要兩 個正反器,以及一個2-to-4的解碼器



循序控制的狀態表列在表8-6裡,它是直接由圖8-15(a) 的狀態表所衍生出來的

目前狀態 輸入 次一狀態 輸出

G1 G0 S Z G1 G0 T0 T1 T2 T3

(32)

循序暫存器及解碼器控制部分邏輯圖

 它包含一個有兩個正反器G

1

與G

0

以及一個2-to-4解碼器的暫存 器,而解碼器的輸出被用來產生,下一個狀態邏輯的輸入就像控 制的輸出。而控制器的輸出應該連接到資料處理器讓暫存器操作 需求動作。

一個狀態一個正反器



循序電路用此方法設計使用了最多的正反器



乍看之下,此方法用了許多正反器應該會增 加系統的成本,但是,此方法提供了一些好 處只是還未看到;一個最簡單的好處就是從 ASM裡的實例或是狀態圖來設計此邏輯,如 果使用D型正反器就不需要狀態表或是激勵 表,若將操作再簡化,同時在不使用解碼器 的情形下將邏輯閘的數目減少,這樣就可以 減少設計的花費。

(33)

一個狀態一個正反器的控制器

二進位乘法器的 HDL 描述



此描述被分成五部份

– 第一部份列出所有的輸入和輸出

– 第二部份則宣告所有的暫存器,包括控制暫存器及 四個狀態的編碼。

– 第三部份是利用一個assign敘述來說明一個組合邏 輯電路

– 第四部份則依據圖8-15(a)的狀態圖來描述此控制的

(34)

HDL Example 8-5

// RTL description of binary multiplier

// Block diagram Fig. 8-13 and ASM chart Fig. 8-14 // n = 5 to compare with Table 8-4

module mltp(S,CLK,Clr,Binput.Qinput,C,A,Q,P) ; input S,CLK,Cir;

input [4:01 Binput.Qinput; //Data inputs output C;

output [4:0] A,Q;

output [2:0] P;

//System registers reg C;

reg [4:0] A,Q,B;

reg [2:0] P;

reg [1:0] pstate, nstate; //control register parameter T0=2'b00, Tl=2'b01, T2=2'bl0, T3=2'bll;

//Combinational circuit wire Z;

assign Z = ~|P; //Check for zero

//State transition for control //See state diagram Fig. 8-15(a)

always @(negedge CLK or negedgo Cir) if (~Clr) pstate = T0;

else pstate <= nstate;

always @(S or Z or pstate) case (pstate)

T0: if (S) nstate = Tl; else nstate = T0;

Tl: nstate = T2;

T2: nstate = T3 ; T3: if (Z) nstate = TO;

else nstate = T2;

endcase

//Register transfer operations //See register operation Fig. 8-15(b) always @(negedge CLK)

case (pstate)

TO: B <= Binput; //Input multiplicand

Tl: begin A <= 5'b00000;

C <= 1'b0;

P <= 3~b101; //Initialize counter to

n=5

Q <= Qinput; //Input multiplier

end T2: begin

P <= P - 3'bOOl; //Decrement counter if (Q[0])

{C,A} <= A + B; //Add multiplicand end

T3: begin

C <= 1'b0; //Clear C

A <= {C,A[4:1]}; //Shift right A Q <= {A[0],Q[4:l]}; //Shift right Q end

endcase

endnodule

(35)

測試乘法器



測試平台如HDL例題所示,被乘數和乘數是 輸入部份存在B與Q裡;而乘積是輸出,存 在A與Q內。我們也要檢查進位C及計數器P 的值,而這5位元的二進位輸入和表8-4裡用 的相同。



第二個啟動的敘述提供了13個時脈,每個時 脈有10個時間單位。



從狀態的轉移可以看出,狀態T2與T3的週期 在迴圈裡出現了5次,(每一個部份乘積)這需 要10時脈週期。至於另外的三個時脈週期是 T0,T1以及當Z=1時,返回狀態T0所需要 的。

HDL Example 8-6

//Testing binary multiplier module test_mltp;

//Inputs for multiplier reg S,CLK,Clr;

reg [4:0] Binput,Qinput;

//Data for display wire C;

wire [4:0] A,Q;

wire [2:0] P;

//Instantiate multiplier

mitp mp(S,CLK,Clr,Binput,Qinput,C,A,Q,P), initiAl

begin

S=0; CLK=0; Clr=0;

#5 S=l; Clr=l;

Binput = 5'b10111;

Qinput = 5'b10011;

#15 S = 0;

end

(36)

乘法器的行為描述



通常,行為描述的基本演算法是不能被合成 的。

HDL Example 8-7

//Behavioral description of multiplier

(n = 8)

module Mult (A,B,Q);

input [7:0] B,Q;

output [15:0] A;

reg [15:0] A;

always @ (B or Q)

A = B * Q;

endmodul

使用多工器來的設計

 組合邏輯電路可以使用多工器來取代邏 輯閘以完成電路

 使用多工器來取代邏輯閘的結果可以形 成一種元件三層級的規則。

– 第一層級由多工器組成,可以決定暫存器的 次一狀態。

– 第二層級包含一個暫存器,他可以用來保留 現在的二進位狀態。

– 第三層級則是一個可以提供每一個控制狀態 不同輸出的解碼器。

(37)

具有四個控制輸入的 ASM 圖例題

多工器製作控制

(38)

多工器輸入條件



了方便多工器輸入的計算,我們準備了一個表以便 在ASM圖上表示每一個可能轉變的輸入條件。表8-7 即給出圖8-19 ASM圖的這種資訊

目前狀態 次一狀態 輸入

G1 G0 G1 G0 輸入條件 MUX1 MUX2

0 0 0 0 w′

0 0 0 1 w

0 w

0 1 1 0 x

0 1 1 1 x

1 x′

1 0 0 0 y′

1 0 1 0 yz

1 0 1 1 yz

y yz z

y+ = yz

1 1 0 1 yz

1 1 1 0 y

1 1 1 1 yz

z y z y

y+ = + yz+yz=y

設計範例 - 計算在暫存器裡 1 的個數

 所要設計的數位系統包含兩個暫存器R1 與R2,及一個正反器E。此系統可以計 算存放在暫存器R1內二進位數裡1的個 數,並將暫存器R2設定給此數。

 此控制利用一個外部輸入S來啟動操

作,並使用兩個資料處理器的狀態輸入

E與Z。

(39)

Count-of-ones 電路的 ASM

Count-of-ones 電路的方塊圖

(40)

設計範例的多工器輸入條件

目前狀態 次一狀態 多工器輸入

G1 G0 G1 G0 輸入條件 MUX1 MUX2

0 0 0 0 s′

0 0 0 1 s

0 s

0 1 1 0 z

0 1 1 1 z′ z′ 0

1 0 1 1 none 1 1

1 1 1 0 E′

1 1 0 1 E

E′ E

Count-of-ones 電路的控制製作

參考文獻

相關文件

mov ax,var1 ;將其中一個記憶體內容先複製到暫存器 xchg ax,var2 ;分別執行記憶體與暫存器內容的交換動作 xchg ax,var1 ;完成交換。 Swap var1

具備 (凌陽格式 ) 串列 SRAM 介面. 7 通道10位元電壓類比/數位轉換器 (ADC) 單通道聲音類比/數位轉換器

此位址致能包括啟動代表列與行暫存器的 位址。兩階段的使用RAS與CAS設定可以

MOV reg,data reg ← data 轉移立即資料(data)到暫存器 reg 內 MOV dreg,sreg dreg ← sreg 轉移暫存器 sreg 的內容到暫存器 dreg MOV segreg,reg segreg ← reg

強制轉型:把 profit轉換成double的型態

Data larger than memory but smaller than disk Design algorithms so that disk access is less frequent An example (Yu et al., 2010): a decomposition method to load a block at a time

engineering design, product design, industrial design, ceramic design, decorative design, graphic design, illustration design, information design, typographic design,

The schematic diagram of the Cassegrain optics is shown in Fig. The Cassegrain optics consists of a primary and a secondary mirror, which avoids the generation of