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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11599|回复: 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信号,才开始接收数据呢?* i1 Q- @) R! v* D% |
分享到:  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
0 L1 D- y* k5 j/ \" g! K. P& d你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

9 c! y* f( Y& A7 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" g9 [2 n' S8 l; m, x% M% w" S6 W& [8 j
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

' u  c( V# C% c! e% ~数据是写到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
1 B4 z! I3 O  R4 p你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

# S2 r- t7 h; n/ l  d0 u% F" y数据是写到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
3 ^: b  v0 M* ]  ]3 z数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
& Q9 ^; q) p  A0 Z
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19. b6 r& U" G3 G0 \+ }
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

$ ]' A8 A/ \3 ^! _) w9 {7 e你好,”接收数组放在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: Q0 ~5 p% S( ~; @
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
0 m2 w! {/ I6 h0 _
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):  F, l; w2 e4 J) b
static void UPPInit(void)
; m& ?/ u% E9 z  n7 y& [0 r5 ?{
- d! K" X! [2 j5 l( c    unsigned int temp_reg = 0;# B0 O5 g6 k8 H4 K4 f, W+ A" D$ B

) I1 L; F3 M/ _& X& I5 W: a4 x* R    // Channel B params
4 K) q0 t4 f, \" b8 I    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled! ]5 u0 Q$ Y. f8 e# @  d. o9 D9 l
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface& E/ }. P. L4 d+ J0 M
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
- D4 C4 |3 e+ G  D    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
# i! H6 U# Z* a; O* S; _, `. x1 ?0 z! b
    // Channel A params# m- |$ D& s" S
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled2 }6 a8 L6 n# D/ I
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
1 F0 j& r" A" V6 C% \    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
0 V* r/ t* ]- U) K2 z) m0 j    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
6 V3 |3 x- A' X' {. X8 G1 l; l4 e
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
" }& v- L* \; j' z  z0 K    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
! j8 r* O! C1 l0 y- |: Y  C5 D0 Y; n, n* X  ^5 P2 H+ P
    upp_reg_hdl->UPCTL = temp_reg;6 g  [7 _6 X& e
! P7 U, R7 J3 _5 }0 u2 N2 e
    temp_reg = 0;   1 t2 |3 z1 D3 r# A9 G! i7 Z
9 w2 v4 H: U: Y1 _$ e1 W8 o
    // Channel A params, F6 m9 K% H- _- m' f
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
6 f+ Y2 C  d) i' h7 h    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
1 J8 a  b" u$ J" H( B( a    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
! R# H7 V. }. G* D  s. L! y. U    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable, u3 I7 F( X1 i2 [! B( l$ ~
7 z5 K: |& \) i5 f* S' Q& ~
    // Channel B params
+ s* j+ X4 {) H, L6 K    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);2 e4 e& o3 a* a! P1 E
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
, Y, Y8 X4 z. X+ E& R7 N/ H    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable; i6 P  s$ n! {7 M1 k% ]

: S" p' {2 X. x/ n/ z    upp_reg_hdl->UPICR = temp_reg;
+ i; B! M$ F. ~
: w7 J3 u7 M+ [. p3 Q* K    //temp_reg = 0;" O1 O" x2 U0 t, ~4 x

& w9 g. f; v! b- v    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value. d3 L$ ]6 s& m1 ^
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
( x. }% Q% z  r; o6 T1 b: @! D1 B$ A" T" T/ ~0 P3 O0 ]( W
    //upp_reg_hdl->UPIVR = temp_reg;0 y/ p, ^1 K% V
5 Q9 r; [9 ?6 n) z% V2 `& p
    //temp_reg = 0;! ]/ v$ i5 K) q
" H  ^: x" N+ D& g! U7 G4 [0 K
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I ) h/ u! o; @0 ^, Q
    //upp_reg_hdl->UPTCR = temp_reg;
4 Y% M1 H1 m2 o( \) L
6 R( F. v6 u. |3 E5 ^* h    //temp_reg = 0;
& {, {- M+ X6 k0 N. Y1 M    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable* s! q' d0 O1 Y  C7 B& H, W$ g& i3 g
    //upp_reg_hdl->UPDLB = temp_reg;
) q+ e. v' K1 v% o; \- s
5 w3 k" d9 D9 b" x}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 01:09 , Processed in 0.044058 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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