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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9157|回复: 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信号,才开始接收数据呢?
" D; q. K6 B/ ]4 D2 r
分享到:  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:402 a$ i0 y- }3 c/ J$ n
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
. \4 Y. _) C) j: [+ 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:40& d! g4 S5 S/ b& Y* G* T2 t( w
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

) x* r2 g1 j; n+ @9 {9 P8 B数据是写到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: ]% ^) h+ D0 X$ U
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

  V; S( U1 e$ ^8 l! d  G数据是写到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/ i( L. N1 F- n( \+ P2 U% c) o, H2 }
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

3 \' w9 o( J, u# P0 S. UDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
+ u8 f! ~# o+ u( M5 r4 V' BDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

. \: I" E/ I9 ~) z. P你好,”接收数组放在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
* r* P3 P/ x# [0 z' U6 ]l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
- T! h% n$ O1 l; @- u) z  i
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
+ V! L+ r- x. H" C. P& n3 Astatic void UPPInit(void)
0 y) z1 ^5 P* F0 N{' v* L: K4 `4 K* R3 g2 r
    unsigned int temp_reg = 0;. a+ ]* [# J  J6 S: p
; t8 L- \5 ?  i  c, p
    // Channel B params: K# a9 |, J# m8 C& z" B( k; ?
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
5 ^- i, g# t  d% E5 {% r& x8 U' z    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface! {/ ~% m2 i8 P5 q" g0 x5 n
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8' Y* g! d: @( I7 W1 H" u) @3 q
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
/ A2 Z$ P& n, o( x1 O% {+ {, [
+ R) {4 s$ ]6 B    // Channel A params
  |' s' Z" g2 f. y, O- \    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
' c& ^5 c- s6 W$ ]    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface9 i9 P' E( R2 v3 Y1 W& ~
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 87 X  A- R" {; q8 O
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate/ g: ]+ x1 p  A1 B/ g
. _# k3 X: e% k6 Y
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.3 j  E& g7 k7 R% l! g+ r
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive4 E0 M4 [: F, c8 p$ Z4 h" C
; x5 g6 A8 S8 I" m! ^& Q
    upp_reg_hdl->UPCTL = temp_reg;0 Z9 v3 B$ H5 \8 t1 p
) p& F& v  N1 I
    temp_reg = 0;   
  X0 ?  T: c: v. y$ E0 s! V$ P0 v
* t$ L; B1 z% O    // Channel A params- o4 N# r! q1 P7 Z0 b3 L
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
. n( r# T5 P& O    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor+ |  {& h, ]6 [7 o% `+ E
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.3 i9 C' t4 S1 r
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
' _3 n; A: O: Z; m8 v/ h( Q% S
    // Channel B params
6 q& b- K, W! }& }' T1 g9 G! e) L    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
1 H( x3 k. z7 p0 h0 T4 w    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.: L' S8 I5 Z; I+ a( C4 F- g0 @
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
5 y8 {) ^, r( E; P
9 E9 b- {" s& s! A/ t2 N    upp_reg_hdl->UPICR = temp_reg;
7 J( O7 r4 Q; w! U3 g1 H% U4 A. V5 x$ \; [0 L' s
    //temp_reg = 0;1 M! _; b# [$ h/ R1 j  c- v2 P

0 x5 k: h( O; P) J8 _; b+ S' }. R    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value2 F0 V. B7 {- O: ~1 P. Z: ~' z
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
; k  [! o" \( {# ~* I' }, k0 |. n
, o' _5 i" Z, n. |5 x9 \    //upp_reg_hdl->UPIVR = temp_reg;. g6 p/ t" Z5 V. X% D" q

! Y( {9 p0 a1 `7 c5 T7 ~    //temp_reg = 0;) F9 X* l' G  u$ J8 N
! T# X7 z1 U8 u+ q& k( w3 N9 q
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
7 M5 A) N4 q" w5 I9 I5 g    //upp_reg_hdl->UPTCR = temp_reg;8 r- v1 T! {- [" ^& m4 D) o7 L

$ u0 q/ \' {7 F0 O( d    //temp_reg = 0;, P  K; m+ z/ X9 ?0 s! _+ V1 Q
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable, P- Z0 K! ]2 S; O/ b
    //upp_reg_hdl->UPDLB = temp_reg;
0 \7 a5 ^. m' r* L! ? . r9 Q8 i/ Y* ]+ c' ~
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 04:53 , Processed in 0.043724 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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