計算機組成的一些總結(15)乘法器的實現及優化

2022-08-05 18:42:13 字數 1456 閱讀 7799

乘法器的實現及優化

實現一個四位的乘法器,首先需要一個暫存器儲存被乘數,被乘數暫存器是一個八位的暫存器,而且帶有左移的功能,它有一個左移的控制訊號輸入,當外部的控制邏輯將這個訊號置為有效時,在下一個時鐘上升沿到來的時候,被乘數暫存器當中的內容就會向左移動一位。第二個暫存器是乘積暫存器(存放所需的運算結果),這也是八位的暫存器,用來儲存運算的結果,被乘數暫存器當中的內容和乘積暫存器當中的內容需要進行加法運算,還需要一個八位的加法器,它會將被乘數暫存器當中的內容和乘積暫存器當中的內容進行相加,並將結果送到乘積暫存器當中。還需要一個四位暫存器來儲存乘數,乘數暫存器的最低位被連線到了控制邏輯,就是控制邏輯可以觀察當前乘數暫存器的最低位,並據此生成相關的控制訊號,這些控制訊號包括是否要讓加法器進行加法運算,以及是否要讓乘積暫存器儲存當前的運算結果。乘數暫存器需要有向右移位的功能,同樣也是由控制邏輯發出的訊號來進行控制的。

乘法器的工作過程,首先要初始化,先把被乘數放到被乘數暫存器當中(高四位置0),乘數放到乘數暫存器,乘積暫存器當前為0,初始化工作完成。運算過程,(1)首先檢查乘數暫存器的最低位,如果是1,就需要將被乘數暫存器當中的內容和當前乘積暫存器當中的內容進行相加,控制邏輯會控制加法器,將被乘數暫存器的內容和乘積暫存器當中的內容進行加法運算,然後將加法器的運算結果送入乘積暫存器,在下一個時鐘上升沿來臨的時候,因為乘積暫存器的寫入訊號是有效的,所以乘積暫存器就會取樣輸入端的資料,並儲存到乘積暫存器當中;如果是0,直接執行第二步。(2)然後控制邏輯會給出左移的訊號,在下一個時鐘上升沿來臨的時候,被乘數暫存器就會完成一次左移,最左端的0被丟棄了,在最右端補入一個0。(3)控制邏輯給出右移的控制訊號,當下一個時鐘上升沿來臨的時候,乘數暫存器就會向右移動一位,這樣只是方便對乘數的對應位進行判斷。(4)由控制邏輯進行判斷,現在是否已經完成了運算。

對這個四位的乘法器來說,一共要產生四個中間結果並將它們進行相加,控制邏輯可以判斷出當前是否是第四次迴圈。

乘法器的優化

優化當第一步檢查“乘數暫存器”的最低位,如果最低位是1,則相加、左移、右移將同時進行,如果最低位是0,則同時執行左移和右移。

減少不必要的硬體資源,(1)“被乘數”暫存器縮減為4位,而且取消左移功能

(2)取消“乘數暫存器”,乘數初始置於“乘積暫存器”低4位

(3)“乘積暫存器”增加右移功能,乘積初始值置於其中高4位,隨著運算過程不斷右移

(4)“加法器”縮減為4位寬,“乘積暫存器”只有高4位參與運算

現在需要把乘積暫存器的最低位連線到控制邏輯,就是當前所需要觀察的乘數的對應位,如果為1,控制邏輯需要向加法器發出執行加法運算的控制訊號,並向乘積暫存器發出寫入的控制訊號,這個寫入只發生在乘積暫存器的高4位,每個週期發出右移的控制訊號,隨著乘積暫存器的右移,放在低四位的乘數就逐漸的被移出,而原先只在高4位的乘積則逐漸佔滿了乘積暫存器。