文章作者:公眾號 FPGA之旅 (電擊小子) ; 歡迎大家關(guān)注作者公眾號FPGA之旅 ;在此特別鳴謝!
一. 簡介
在本篇文章開始之前,先對上篇文章中的一個(gè)錯誤進(jìn)行指正一下。在部分積生成的時(shí)候,需要計(jì)算-2A和2A的值,我的做法就是直接左移了一位,這樣就會有一個(gè)問題,符號位被移掉了,為什么我的計(jì)算結(jié)果還是對的呢 ? 因?yàn)?a target="_blank">仿真的A比較小,15位的值和符號位是一樣的,沒有影響,所以當(dāng)時(shí)沒有發(fā)現(xiàn)。需要對符號位擴(kuò)展一位,變成17位的數(shù)之后,再進(jìn)行計(jì)算2A和-2A。如下圖這樣,擴(kuò)展一下最高位。
本次的優(yōu)化在上次的基礎(chǔ)上,進(jìn)行了一定程度的優(yōu)化,下面就一一介紹一下。
二. 計(jì)算-A,-2A,2A部分
先來看一下之前的代碼,可以看到取反模塊,這里使用了兩次,其實(shí)是沒有必要的,
先移位再取反,和先取反再移位是完全等價(jià)的,但是在門電路的消耗上卻節(jié)約了17個(gè)非門和17bit加法器。
三. 部分積部分
在之前的代碼中,生成的8個(gè)部分積的位寬全部是32bit,在進(jìn)行部分積壓縮的時(shí)候,使用了3個(gè)32bit的4:2壓縮器。
但是將按照下列方式分組,將8個(gè)部分積分成兩部分,每部分、每個(gè)部分積均為24bit,這樣在使用前兩個(gè)4:2壓縮器可以選擇24bit的;然后第三個(gè)4:2壓縮器選擇32bit的,將第一部分進(jìn)行符號位擴(kuò)展,第二部分末尾進(jìn)行補(bǔ)0,將其擴(kuò)展為32bit即可。
這樣就將3個(gè)32bit的,優(yōu)化到了 2個(gè)24bit和1個(gè)32bit的4:2壓縮器了。
這里的三目運(yùn)算符,替換為用搭建的選擇器了。
四. 取反加一操作
在求A的負(fù)數(shù)的時(shí)候,需要有個(gè)加一的操作,可以將這個(gè)操作添加到部分積壓上面去,如下圖所示,第一個(gè)部分積的加一,添加到了第二個(gè)部分積的對應(yīng)的位置,依次類推,第八個(gè)部分積的加一,會添加到第九個(gè),但是,部分積的個(gè)數(shù)只用8個(gè),所以這里就會多出一個(gè)部分積出來,在壓縮的時(shí)候,會額外使用一個(gè)3:2壓縮器。測試知道這樣的操作是可取的。
在進(jìn)行booth編碼的時(shí)候,添加一個(gè)變量,可以認(rèn)為是這里的S,看看該部分積是否需要加一操作。只要set0為0,inv為1,即有取放操作。
然后在部分積生成的時(shí)候,將第一個(gè)部分積的加一標(biāo)志,添加到第二個(gè)部分積對應(yīng)的位置。
其中需要注意一點(diǎn),由于我們對部分積進(jìn)行了分組,第一組的最后一個(gè)部分積,是加不到第二組的第一個(gè)部分積的,需要在部分積壓縮的時(shí)候添加上去,為什么可以看完整代碼的位寬。
五. 小結(jié)
本次在上篇文章的基礎(chǔ)上,進(jìn)行了初步的優(yōu)化,門的使用和延時(shí)有了初步的提升,在Vivado中延時(shí)從16ns下降到了15ns,DC中從6ns下降到了5ns。
審核編輯:劉清
-
加法器
+關(guān)注
關(guān)注
6文章
183瀏覽量
30437 -
門電路
+關(guān)注
關(guān)注
7文章
200瀏覽量
40453 -
乘法器
+關(guān)注
關(guān)注
9文章
207瀏覽量
37496 -
選擇器
+關(guān)注
關(guān)注
0文章
109瀏覽量
14670
原文標(biāo)題:定點(diǎn)乘法器設(shè)計(jì)(4)(華為杯)---優(yōu)化V1
文章出處:【微信號:FPGA之旅,微信公眾號:FPGA之旅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
fpga中定點(diǎn)乘法器設(shè)計(jì)(中文)
分享--fpga中定點(diǎn)乘法器設(shè)計(jì)(中文)
怎么設(shè)計(jì)基于FPGA的WALLACETREE乘法器?
乘法器的基本概念

1/4平方乘法器

脈沖-寬度-高度調(diào)制乘法器

變跨導(dǎo)乘法器的基本原理

變跨導(dǎo)乘法器
基于IP核的乘法器設(shè)計(jì)

基于FPGA的WALLACE TREE乘法器設(shè)計(jì)

定點(diǎn)乘法器設(shè)計(jì)(中文)
使用verilogHDL實(shí)現(xiàn)乘法器

乘法器原理_乘法器的作用

評論