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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10927|回复: 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信号,才开始接收数据呢?; m! r5 M7 U/ N$ @! O2 p+ i
分享到:  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( s0 h, Z/ q- T" G' _
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

& O8 }4 K8 C5 _+ d数据是写到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
: e: P7 O  j- |9 F9 |7 b你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
) }# R( J) H* [. `( b4 `- l+ g
数据是写到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
: y9 u; j; H* ~/ u* i8 L$ }你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

% V9 ~2 G' S6 M; p% R数据是写到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, g# q4 h# }7 a2 g4 J0 g数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

/ A$ t/ ^, O  Q) z1 I- C  M! tDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
" B  V+ c( t' ?7 o2 Q9 IDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
* d- r. ^+ A1 `( G, d: c' S
你好,”接收数组放在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
0 j! V. O% V+ E% V  I* [  H" Y+ yl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

. x. M& j8 A% g& `9 |1 n寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
* S2 j, k7 i0 W, |, z# Z, [static void UPPInit(void)0 J- f' y4 B3 t+ U7 s# H+ p
{
: k7 y9 L4 m& r/ V    unsigned int temp_reg = 0;+ }5 `$ P7 @. Y% s9 P6 Z
( j$ R4 x4 O" q. K4 t- x
    // Channel B params" x' }: D6 ?" M0 V
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
2 G( B. Y9 u( v; [. j& G; j6 S+ l( ^    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
, @. i- ^! a5 P% {3 D5 I    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
! S7 g, A% e2 e  d    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
- T5 }4 S5 R  [
+ Q' k8 ^/ R( Y1 M6 @% ]/ J+ e    // Channel A params! d* U7 w5 t. H: g7 F  ^, I$ O/ o
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled- y+ K4 J& F6 E( ~
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
! ?5 S$ L" x8 q9 ?; @9 H5 [$ L    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
, V5 r8 B, q! u) C    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate1 k- _/ ~& H7 P) }3 ^. N* ]3 c  t) Z
0 g  n/ h7 ]( r" @) s" h
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
: \7 [- l% o* l: s3 S8 s    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
0 J2 a9 j7 o/ Y0 J, u# E3 n: a
& C; ?4 q* p2 Y    upp_reg_hdl->UPCTL = temp_reg;) s, M6 @: \, L1 r+ ^; f7 T
/ U& L) z+ z: X+ h/ x, y
    temp_reg = 0;   
1 M* j$ r  `6 H5 [4 A7 n
8 Z$ q. ?$ Z- u    // Channel A params) Q" x* s/ p5 l2 k" B( L) J
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
4 v) m: w9 Y5 r# q    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor1 i+ Q" \8 L. T$ G2 d& X# ^
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.: F4 j* w( e5 [" y! x  t  G' B
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable" G# m" Y9 k8 P# U9 w, k" M

. y' B0 k0 l6 S9 U    // Channel B params
! l7 r, K3 ?- a) u    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);3 Q/ d! Q: k* Z! F
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.& d4 c1 k/ J0 Z
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable  `8 W4 a& ]2 f: t8 h3 p
6 h# Z$ S: _( g& e2 r
    upp_reg_hdl->UPICR = temp_reg;6 J: _( x0 X5 v& p% B% w/ z4 \

" q! c, ]5 |# l+ O# x9 u$ ~    //temp_reg = 0;* Y5 v: \$ p3 [6 u9 t4 G* D7 p

, T& i$ ^7 T4 z4 X% T    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
3 ~9 O+ h4 i3 W( C% e    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value! [) q1 B3 [1 t7 q9 ]

; G4 N/ b, O+ G6 z  N    //upp_reg_hdl->UPIVR = temp_reg;
, R- _( W1 I# i' f% \5 \" i
# F2 J6 _+ b, e# n( [    //temp_reg = 0;  E5 g8 h. P8 H8 B

/ e) a3 b9 }8 }: D: v, o    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I ! ]; _9 B/ D/ Q2 a( S
    //upp_reg_hdl->UPTCR = temp_reg;
& Y! g, D( v9 o, [( K3 t% y9 s% m! {! g. c
    //temp_reg = 0;
4 h# I! U; y9 b6 N+ ?0 S' g* A/ w    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable6 ]) N( a  h1 n
    //upp_reg_hdl->UPDLB = temp_reg;# X: R7 G* K$ M5 ~

; `8 I( I# |( o5 U. Y}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 15:00 , Processed in 0.043561 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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