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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9146|回复: 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信号,才开始接收数据呢?
. x1 a) Q% a! R1 O- p  u" r, P9 D- 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:40% f0 v7 J- f9 Z, A" \" l5 e
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
1 n2 S3 X! P7 b2 l5 E0 t- b
数据是写到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* M$ J2 M' s! Q6 ^0 F# q你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
! v* z! a8 y2 u- m6 N
数据是写到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
4 M. h  R  F+ {% j! S, m3 |( n你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
5 E, {! @" W% c, \
数据是写到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/ {+ h$ M: k# i* l. l! W: @
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

% i9 M9 |3 ~9 t2 E) J4 y, q& o  RDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19$ S) j$ k6 H! B) L; ?* H2 f
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
& E: ^" B# o1 J( 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* q3 t+ j5 w- G& q" |
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
! B/ X0 Q6 h$ b( d9 u1 |
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
1 a" S% Y" D% F: ~4 \$ g' W; V0 z1 sstatic void UPPInit(void)! g( i. r$ J4 e6 {2 `4 t
{; v2 u0 z- r  H5 ^' o! F1 X
    unsigned int temp_reg = 0;
( n7 N( J) r1 t/ |1 `4 _* Y: y$ P, n- q4 r
    // Channel B params+ g( d$ j* s4 t7 ?+ L2 E, R7 e
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
  e% w' ]4 v( R6 M& l  {0 \    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
+ M% z4 @+ D8 F" R) |# ~    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 82 l  }5 c8 H6 q
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate, I. g( N) v) n8 b6 a% ^
4 B9 W1 ~5 g2 U8 e$ U
    // Channel A params0 S$ [/ ^2 T, C* u0 n( A- b% p
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
1 t. N( }6 k' o. u$ R) m3 K    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface% a0 }# g( D- n5 B$ ]/ {3 A6 V$ `. G
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
# W* x0 P( [: \/ r    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate/ K2 O8 _8 ~5 s% A, }( x6 C7 W  m
7 z0 i% f4 n# E7 @% F4 N* T: S" U8 w
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.6 W/ o) o& e) W& r
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive( [  ^, p  r* [) f5 K1 c) H. p1 p

5 @4 @$ A* L$ y& r    upp_reg_hdl->UPCTL = temp_reg;
  K1 I: h9 g7 Y8 n( X% m* E* \: @
; B! ^" W' f1 m1 @    temp_reg = 0;   # K; b$ J8 q% c: B

2 x' h+ `( T" H5 X    // Channel A params1 S$ {- f0 i" H0 C6 E8 m, C4 q, t
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle  f( Y5 w( g. Y6 ~# O
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor- Q! U" G- F7 ~, @  [
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.$ ]; y  O+ O, S5 ?0 Y$ D: `
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
3 P( Q* _5 J; Z, j) s* \5 w
+ w% w6 i# k. m3 E    // Channel B params
$ y+ m2 y$ R6 J; R) N) M8 |    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);" v" r) W0 z2 |& D+ ~- p' \
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
! n7 W/ C5 J1 C# t( u    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable6 B6 O: `' k/ s: C: g( \. S2 l
: G- h6 h% |( }7 y/ a! O# q
    upp_reg_hdl->UPICR = temp_reg;
1 g% p; ~4 |( z% W+ J3 N
& |* _& B. l3 M) f( M6 d2 U    //temp_reg = 0;# b% r, X& A9 l/ [; d3 M3 z3 f- V2 d

- M0 z2 s9 P- Q    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
: ~' Q4 R" v" J, M    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value, B6 Z# |* A! _2 s
0 C) i: f$ Y* B
    //upp_reg_hdl->UPIVR = temp_reg;& i1 O* `$ K1 u) O! m) s  P) X
6 j& B4 ~  _0 X, O  F' ^
    //temp_reg = 0;7 _0 c6 M8 F1 U8 z& a8 l

( b9 _! y. @$ g% {- z6 j" ]) b    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I , t! }- {( g7 l( j  p0 C' F3 P% [+ j- b0 D
    //upp_reg_hdl->UPTCR = temp_reg;
  a( S0 w3 y! O% H5 ^% t( I7 Z' Z0 D
    //temp_reg = 0;: ?1 v/ n+ _2 r+ w' ]& W
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable  Z3 q& y! ]4 ?# j4 j2 f
    //upp_reg_hdl->UPDLB = temp_reg;
5 ^9 T  e1 ^& B; j  H3 ?: [ 2 Y' Z) O" J7 `. Q' T; f  |4 q1 B% S
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 21:08 , Processed in 0.043497 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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