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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11388|回复: 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信号,才开始接收数据呢?, r2 X( _# ^2 N( F/ j1 w" 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:408 J, L( P# c- R! I1 B
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

( A  x) G/ w" @' ^( a/ ~数据是写到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+ ^- A( V# ?$ s2 J( y
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

/ w# `/ X. ~$ f* Y数据是写到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, d% ~8 r" g0 G3 G# a* a
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

, M7 u5 M' r2 j1 }1 {* T数据是写到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- L$ i5 b1 _  w3 H7 {
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

; B" i1 @/ ?: d* nDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:193 }9 a5 A! _6 ~5 _2 C
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
5 g8 j0 |# ?9 i8 C6 x" h
你好,”接收数组放在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
5 Q( d, [. E/ Q, R! M7 yl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
  L( v! T) k$ b7 w  `
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):# ~* m+ ?* _- s! s
static void UPPInit(void)
  L2 ]9 E; k9 s8 J, B- \" I" w0 K{
9 |2 R/ y3 l; T' S2 {2 s    unsigned int temp_reg = 0;
  \3 m! h0 L' l& ]4 k# J3 \7 C! X1 z1 c1 [% Q
    // Channel B params
0 L; X  a% I9 h( y. G* a. J& Y7 s    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled, p$ Y: {' t4 m/ B3 m7 R. D
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
" _+ W2 S# B! A" c    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8) F0 E) F5 A: l: R- \9 r1 T5 A, P* U/ ]
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
' `' ]+ k. \' q* m6 z9 p8 K# q, i- `) J
    // Channel A params
3 m7 x9 {' Z2 i$ e: Z6 C    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
3 Z. q& X5 X2 Y+ T% }" D, S( [- q! I    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface" e* p, d5 I) R, ^
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8% |: ?" i+ E# P* N* S3 m- a
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate# j5 {1 F' F( d6 W  e

: R( z6 V* c/ ~$ {' l3 j    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active./ Z: w( \/ m4 A: _$ q+ q/ g
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
: t5 T. u  ~) d+ l3 _6 d5 l; S% V* w! G
    upp_reg_hdl->UPCTL = temp_reg;6 L: [  j* ^& c8 @
8 l, L% }# n* R5 L) ^% a5 r. f) }
    temp_reg = 0;   / J1 h! w6 P1 T9 l" `

, V+ T: H: E5 w! }    // Channel A params
1 I# v/ W; \; Y5 d5 d    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle2 J( T* G& |( z) v
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor& ]& A9 q) M7 h4 e5 W+ }  D% x
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable., d$ U+ e9 X: f5 c
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
! ~8 ]1 H3 }) P* A
7 a% r( ?+ t  E5 g# [% l) N, o    // Channel B params7 a9 b; d' M0 V  d2 q7 U9 [, C
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
" @; y7 C: c6 y- y& }( l    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.2 d  u. p& @: s3 {2 Y: T: {+ o
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable0 P% Z& R0 m+ N
* h9 B; i1 q, ?, b7 K; d& K
    upp_reg_hdl->UPICR = temp_reg;
0 }  }4 e! z2 @: w6 E
" V  t  ^4 \  ^* ?    //temp_reg = 0;
1 A( j* w3 a7 B1 A  V, A# T1 G& `7 z, J8 A# @1 V3 @
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value/ @  W$ ]; ]. I) c1 A  G/ ?
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value1 u& o: O+ V1 Q% X9 H3 y: N$ [8 k
7 O5 k9 ?4 T1 A& s6 y7 \% W
    //upp_reg_hdl->UPIVR = temp_reg;8 ~* z" b/ S# ^/ x
% ]/ I- i/ e# b. l" C3 ]5 \1 q$ }+ \
    //temp_reg = 0;" o, O. f. S. C$ |3 K% X
- E4 C9 f. F& _
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
5 J: B1 W! q9 J+ @" [4 u    //upp_reg_hdl->UPTCR = temp_reg;( w* E' |$ p1 b4 v
+ W$ y  y+ y4 T9 I5 ?; L
    //temp_reg = 0;$ H' ]1 g) `4 l
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
8 K6 q- l! P0 i4 }$ V5 R4 j    //upp_reg_hdl->UPDLB = temp_reg;( E- Q# M8 A* P( T( V, m( Z9 q0 `
' F7 A0 e8 F/ N2 f! \' u
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-16 10:42 , Processed in 0.045286 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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