我是靠谱客的博主 正直铃铛,最近开发中收集的这篇文章主要介绍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的计算,明明还未使能,怎么就有输出了呢?

诸如此很多都是刚开始数据笔者有点搞不拎清,其他都正确啦,知道的朋友可以告诉一声,谢谢,但是基本的机理算是弄清楚啦。

 

最后

以上就是正直铃铛为你收集整理的dsp48e1略知一二的全部内容,希望文章能够帮你解决dsp48e1略知一二所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部