乘法器之三(半并行乘法器)
2) 半并行乘法器(Semi-parallel multiplication)
半并行乘法器將輸入乘數的部份位乘上被乘數或者系數,然后將每次得到的部份積移位累加后得到乘法結果。
舉個例子,一個16位輸入總線可以被分成四組四位,四組數據被依次送到RAM塊的地址端口,每個時鐘送入
一組,低四位先送。在每個時鐘周期,RAM塊依次輸出每一組數據和系數相乘的結果。圖10顯示了是如何分
解一個16位輸入、14位系數來實現半并行乘法操作的。
圖11顯示了用一個M512RAM LUT實現圖10所示的半并行乘法器。實現方法是在每個時鐘周期加載四位輸
入到RAM塊,根據權位通過移位累加每個時鐘周里RAM塊輸出的部份積,在六個時鐘周期(四個時鐘用于
加載輸入值到RAM塊,兩個時鐘用于流水延遲)后完成一個乘法操作。每次部份積移位相加后輸出會增加4
位,在第四次部份積累加完成后,乘法器產生一個30位的輸出。
圖11顯示的是用一個M512實現16位輸入被分成4組4位的例子。在本例中,對于同一個存儲器塊的使用,
輸入總線的位寬將決定乘法器輸出的位寬以及延遲。增大分組的位寬(比如在本例實現一個大于4位位寬的分組)
可以減小乘法器的延時。但這樣也許會需要更多的M512塊或者使用大的RAM塊M4K。
也可以用QuartusII 的Megafunction altmemmult來實現半并行定系數乘法器。設計者可以通過MegaWizard
Plug-in Manage窗口在自己的設計中訂制生成半并行、定系數軟乘法器。同樣,乘法器的輸入和系數的位寬以
及RAM塊的類型決定了altmemmult Megafunction實現的是半并行還是并行軟乘法器;然而,不管實現的那
一種乘法器,Megafunction都非常高效的。圖12顯示了實現圖11所示的16位輸入、14位系數的半并行乘法器
所需的參數設置。本例中的系數是常數值2。
sload_data信號和MegaWizard窗口右下方顯示的信息指示altmemmult Megafunction實現的是半并行或者并行模式軟乘法
器。半并行軟乘法器有sload_data信號且要多個時鐘周期才能接受一次新的輸入。圖11中的半并行乘法器是將16位輸入分成
4組4位s小塊。因為必須花費4個時鐘周期才能將一個完整的16位輸入加載到RAM塊中,所以在加載新的輸入之前當前的輸入
必須穩定地保持4個時鐘周期的時間。sload_data信號上出現一個時鐘周期的高電平表示可以開始加載新輸入數據塊。
圖13顯示了圖11中例子的仿真結果。例中,輸入是一個十進制的數10,系數是一個常數2。
表20和表21分別給出了在StratixII和Stratix器件中實現半并行定系數乘法器的結果。
表22和表23分別顯示了在StratixII和Stratix器件中實現半并行可變系數乘法時的結果。
總結
以上是生活随笔為你收集整理的乘法器之三(半并行乘法器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 郑好办app查询房产信息流程
- 下一篇: 搜狗输入法怎么打出来罗马数字123(尽在