dsp48e1略知一二

筆者會根據自己的工程說明爲例,講述,以此類推;

工程所用的是dsp48e1的原語,應用於cnn的計算。調用了16個SP;每個SP中又有兩個unit;其中只看參數傳遞:

在此之前先看一下手冊,瞭解一下OPMODE。以OPMODE = 0110101

Z=C;

Y=M;X=M;

得到,P= A*B +D*B + C;

具體實現,以自己工程爲例:

      (A_DLY,B_DLY,CREG,ACC)

0:    (0,0,1,0)           --------->                 (1,1,0,0)        P= A*B +D*B + C;              --------->        P= A*B +D*B + PCIN;         

else:(0,0,0,0)           --------->                 (1,1,0,0)        P= A*B +D*A + PCIN;              --------->        P= A*B +D*B + C; 

15:(0,0,0,0)           --------->                 (1,1,0,0)        P= A*B +D*B + PCIN;              --------->        P= A*B +D*B + PCIN;   

計算符合設計的原理。

l另一個參數,INMODE:

assign ad_bit = A_DLY==1'h1 ? 1'h0 : 1'b1;
assign bd_bit = B_DLY==1'h1 ? 1'h0 : 1'b1;

inmode = {bd_bit,1'b0,*,*,ad_bit};

根據自己工程的調用,得到bd_bit與ad-bit 一樣的值,其中*也是同一數值;

當imode = {10**1}時兩種情況:C/PCIN據定於 opmode

inmode = 10001      A1*B1 +C/PCIN;

inmode = 10111      D*B1 +C/PCIN;

當imode = {00**0}時兩種情況:

inmode = 00000      A2*B2+C/PCIN;

inmode = 00110      D*B2+C/PCIN;

 暫時按着自己想法還是正確的。

再來繼續驗證:前部分opmode=P= A*B +D*B + PIN;現在做P= A*B +D*B + C;

parameter integer A_DLY = 0,
parameter integer B_DLY = 0 ,
parameter integer CREG = 1,
parameter integer ACC = 0

只需要將參數(0,0,0,0)       ------->        (0,0,1,0) 

筆者實在看不懂cc_en的使能信號的做妖,

在原語中控制如上:對於圖中3的計算,明明還未使能,怎麼就有輸出了呢?

諸如此很多都是剛開始數據筆者有點搞不拎清,其他都正確啦,知道的朋友可以告訴一聲,謝謝,但是基本的機理算是弄清楚啦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章