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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9185|回复: 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信号,才开始接收数据呢?1 x5 ~5 D3 C5 r# U- V1 O9 Y
分享到:  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: ]2 }. S; n3 l3 Z: \1 R
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

8 w" w- W/ {  J4 S2 r( E数据是写到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
5 F( y! @& Y# P3 M你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

" T/ }1 o- c$ c+ x数据是写到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:402 v/ C/ \, w# f5 C( @
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
* `# n0 r% J0 t2 ^
数据是写到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) s( b  B& |* V' m
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

* ~' f9 n7 C* x4 @' _DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
! k' W7 Q8 ?7 J/ V5 j; p' v4 e/ UDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
: l6 A/ E: k& |% w0 T
你好,”接收数组放在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
; O2 _4 J( E* U9 Nl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

3 h5 ?& g( E# @/ |, O寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):4 }$ N: A) D" G! F
static void UPPInit(void)
8 Q3 S- q1 V8 t) v{! W6 e( m% o8 {9 m- l
    unsigned int temp_reg = 0;
9 F2 u/ {& T, O7 O' F$ D8 V* O
  L" H/ o8 C( H' \) f& ?) o; |    // Channel B params
3 o# A- U2 B) V' t* h: Y3 h    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled3 g/ S) ?& |0 [  w/ t9 p4 a2 X. H
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
2 ^- h! i% e0 N. J    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 81 |4 {, k; n8 D& s
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
' o' e, `% \+ b. C6 ]+ i
+ |! n  c+ M, |( P    // Channel A params
' H: c! ^0 q/ u2 w8 F2 d/ P    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
2 g, W% U/ T( j" r    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
* p9 d2 x  z1 X& W$ t$ G2 [    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
9 X5 o8 E0 S. }* L6 |( q$ l- n    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
1 Y3 h% z$ S  C7 v! n8 A
' D2 j  s, x: Z* D' ~7 \    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
) D0 W) O8 b4 x5 F. w: J% p( V    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
  a- x  A4 V, T0 l& a5 V
% R6 E% i: k5 ^, F    upp_reg_hdl->UPCTL = temp_reg;0 h' C4 @! M" R- \3 i; a

% Q" m$ ~: H- Q8 S5 t! n" n' P    temp_reg = 0;   
9 L2 L: [: I! F- P; p$ o4 P' ^1 v* D7 c; S
    // Channel A params& B4 t, D( H1 U3 ]- o9 n0 \
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
, r0 [: c! h" T9 L, n( h    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
6 k5 J3 E. ~. v+ Y/ K* A    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
' F! h4 L% \* J# z    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
4 ~( E: D! `# v4 [
" ~/ W& T' @& c& c. V' g0 G    // Channel B params0 v" O; G) e# T
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
7 N2 S9 K) y0 `6 r( l$ q: N    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
! Q0 ]" _) `( X6 O/ m& l    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable5 e# a0 k8 s9 O+ i' d" j
! n$ A" T5 {0 c+ G" h
    upp_reg_hdl->UPICR = temp_reg;
1 u! i/ Z% x  D2 H3 |* C: l! S0 R+ O1 ?
    //temp_reg = 0;0 K4 l: c3 ~- V; Q. q+ D! j- n

" _8 g& Y) A% ]8 W3 v, a. b. L    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value) `, o- J: l8 I3 d' [% A
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value: ~6 g. K/ c1 u" I* D6 O
) l0 i7 p' L: X# F6 i
    //upp_reg_hdl->UPIVR = temp_reg;" X% Q$ C" G) N  d3 E0 ~
7 w6 Q* Z2 N, G# O
    //temp_reg = 0;
. q# m( n  Q  e/ I4 d6 D3 d9 q; M; I! s" Z' f! M/ w9 M
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I 3 P# H# V, }) Q1 s6 p' R1 ]. E# w1 Z
    //upp_reg_hdl->UPTCR = temp_reg;' g# j1 X3 \, z$ U9 J% d( M
' h7 T7 m9 x: Z, p' W0 M
    //temp_reg = 0;
5 J2 @0 L6 ?. X* m/ [    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
5 V/ _! [$ z9 a    //upp_reg_hdl->UPDLB = temp_reg;6 G: [; X, ]! o5 P, f" H, ?9 t
9 F6 }1 y% _' l6 J4 D# @% w6 a
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 03:59 , Processed in 0.045009 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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