关于UPP速度问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11598|回复: 9
打印 上一主题 下一主题

关于UPP速度问题

[复制链接]

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
跳转到指定楼层
楼主
发表于 2015-5-14 19:31:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      小弟最近在用138的UPP跟FPGA通信,使用的是8位数据线宽,单速率模式,每1ms从FPGA端发送2K左右字节的数据,DSP端接收数据,每次写完DMA的三个寄存器后直到DMA传输完成,接收这2KBytes需要的时间竟然用了1.7ms左右,不知道为什么会这么慢?FPGA发送的时钟为20MHZ。请问DSP的UPP侧不是不每次收到FPGA发的start信号,才开始接收数据呢?
7 W4 V7 f2 [0 i4 [* g& a( e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

2

主题

50

帖子

502

积分

版主

Rank: 7Rank: 7Rank: 7

积分
502
沙发
发表于 2015-5-14 19:40:04 | 只看该作者
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
板凳
 楼主| 发表于 2015-5-15 11:33:01 | 只看该作者
weibo1988821 发表于 2015-5-14 19:40
  I6 ~+ r; B3 P; Y你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

% D* w) ?/ O5 I* O; }; {数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了,呵呵,大侠,如果要用32K 的L2 Cache存UPP接收数据的话,应该怎么用啊?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
地板
 楼主| 发表于 2015-5-15 11:33:43 | 只看该作者
weibo1988821 发表于 2015-5-14 19:405 q9 |7 k! H! T9 `5 }5 g
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
. u' T' N$ @& K% @# T( D
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了,呵呵,大侠,如果要用32K 的L2 Cache存UPP接收数据的话,应该怎么用啊?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
5#
 楼主| 发表于 2015-5-15 11:34:18 | 只看该作者
weibo1988821 发表于 2015-5-14 19:40- [& o* @6 Y2 b( c
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

) l6 n/ n/ I. h# F  X( b数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了,呵呵,大侠,如果要用32K 的L2 Cache存UPP接收数据的话,应该怎么用啊?
回复 支持 反对

使用道具 举报

2

主题

50

帖子

502

积分

版主

Rank: 7Rank: 7Rank: 7

积分
502
6#
发表于 2015-5-15 15:19:47 | 只看该作者
378087736 发表于 2015-5-15 11:34
6 v) y) m3 @* o7 E5 a5 W$ b数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

5 L8 A4 A$ i& |* }. f  _DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19: q, z% m0 W% s" D% h! E+ W. X4 h
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

/ R4 K; E0 C+ }6 X1 Q+ ]: z' _你好,”接收数组放在L2区“语句怎样实现?
回复 支持 反对

使用道具 举报

1

主题

11

帖子

1064

积分

金牌会员

Rank: 6Rank: 6

积分
1064
8#
发表于 2015-9-11 09:54:41 | 只看该作者
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置是怎么样弄得,我研究了创龙给的事例程序,感觉没有在里面找到关于这几个信号的配置信息,楼主能不能指点一下?
回复 支持 反对

使用道具 举报

0

主题

184

帖子

1137

积分

QQ游客

积分
1137
9#
发表于 2015-11-3 09:33:28 | 只看该作者
CLOCK需要配置频率,START和ENABLE配置使能或者禁用,还有极性
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
10#
 楼主| 发表于 2015-11-10 18:53:34 | 只看该作者
zhuma 发表于 2015-9-11 09:54/ `; q3 t5 w0 c. ?
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

3 }, [0 \( j3 Q+ b( v寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
1 N0 e# |4 u/ E5 e- O! M' `; I  g) |static void UPPInit(void)5 q' N0 l6 }5 V
{
& L1 I9 K+ r3 `& v, V4 p    unsigned int temp_reg = 0;% Q, f% h, j1 K. o# j& D0 K
& w* W8 E, Q8 h( m7 {2 M7 Y' j
    // Channel B params
& N; i7 t; i, a- I. M& a4 E    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled; |- y0 X" u& F; i  k# ~
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
5 R0 Y- S- \( z0 j3 j4 @0 v5 F    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
3 d) i, f0 J5 z0 D- {* c) X    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate3 ]1 C* h! C1 P* M% k
' I& i; r8 F8 D& V
    // Channel A params0 A0 d  q' o6 h0 m5 b! Z9 f2 I
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
, ]1 Z7 S9 _+ t  u9 I    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface: G0 b, a+ C: C/ N
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8: Y) t7 C3 s" \# @0 S( B9 s' y& B) E
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate0 b2 m# p" c5 ^8 l! O

) I1 S3 r) c. d' x7 Y0 r    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.( S" l$ L0 d8 [  d8 H* L2 s
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive) a7 E( ]; L+ k+ u& H2 t' i
* O3 j* p8 f! T4 o
    upp_reg_hdl->UPCTL = temp_reg;
) k, j- g' G4 Z* p+ r, G0 o0 [8 d- w" s* Z2 f7 c
    temp_reg = 0;   
; g) N1 ~8 K) z1 s3 c
4 O# ]2 O1 w* w' `# u8 Z    // Channel A params6 \* B* g' x4 c& O
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle* A. y) n; _5 d6 _: v
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor5 ]5 b- U9 h6 _
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.# P* D/ ]. h1 y# \7 M
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable/ R" }) ]# \6 g, r8 H# ]

4 s3 |! A1 x6 e2 r" K1 R* h% J    // Channel B params  B( \' y) x2 |9 q+ n  K
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
: {% ^9 @7 }0 O+ P' ^& D    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
( p$ h3 ~! g" a& L  j3 e    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable& z( o$ g3 \2 A) ^2 Q1 _" K0 f

$ z3 R. K4 ~, X! s) g    upp_reg_hdl->UPICR = temp_reg;: i2 o* Y  @2 K4 C
; O. [5 o, c! q" h2 a: M  c0 _
    //temp_reg = 0;! I# N8 R4 N# m- ]* Q. d- H6 g# s

; l( N' H, }  m$ K6 Z    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value  |1 ~" z& q1 ]& y& K
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value  o7 L* N" e$ L  a  j. G! y6 z% }
+ X% f& B& i! m8 N1 O/ E& k& A
    //upp_reg_hdl->UPIVR = temp_reg;
8 Y  d8 W. j" m$ Z' ]( |+ g
2 V7 q( R* l* s) ]    //temp_reg = 0;  u% ^, j& K% H. P3 z  b
# F5 z; C' E: u  j
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I - p! k; G5 `" U- t" B" Z
    //upp_reg_hdl->UPTCR = temp_reg;
! @+ f( N- I8 d' A  {' h4 E$ t. Z4 N- ~8 v1 S( n3 m; }! g, ~
    //temp_reg = 0;
3 _! L. q8 I4 @$ n4 |    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
# B# s9 Y- {8 t6 B    //upp_reg_hdl->UPDLB = temp_reg;
. B, t$ {5 T$ m' N. n; X
7 H% x# w7 [% C4 O4 y; D}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-11 23:17 , Processed in 0.044818 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表