关于UPP速度问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11782|回复: 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信号,才开始接收数据呢?
$ Y* [, a" a' E+ v
分享到:  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
9 p  @* c& |/ n- j& z你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
/ A6 }. v4 {) ~4 \3 y6 ^& E: i
数据是写到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
( }& f% t: a' E7 {; F你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

+ d( u9 O; k4 P1 K9 ]数据是写到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: T' g$ r8 y4 V( O
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
; l( v8 @3 j! j3 s' A. f
数据是写到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
5 N% f- W8 Z' n7 v# W0 c  Y* W数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
0 f6 V- u& [9 Z5 d0 n( t+ H
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

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

& {% ~  Z! C- B+ ]你好,”接收数组放在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# }8 Z0 n3 s& [
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

8 H8 M/ o4 l- O0 R- I' L寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):# ]+ s+ d7 Y* A+ M0 M( o6 h# W
static void UPPInit(void)
2 W/ w8 ~- z; }" H  w6 N0 }{
) v0 ^& S/ ^, x1 ~( K7 ?    unsigned int temp_reg = 0;( s% _4 s* X. ]5 {% k4 ^
- b: s, A. ^$ s( }( V) B$ E9 U
    // Channel B params
% a% k" U; ~; j9 U    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled  k: F" [. u9 u! X$ d
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface7 S+ Z- n( i. g( ^
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8! O* q" {3 {! i& T
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate8 [5 \" n6 f- E9 i

3 L7 o; J4 A5 M" D! c0 Q    // Channel A params
  R$ E. u0 E3 u    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
9 ]) r! A4 a9 d5 m6 C    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface- r/ \4 P* s* w% T
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
2 `% W* h' S; G# g* n: i    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate' u. v3 ^5 P$ h6 w- S& v5 y

5 g  S  \- u# f! Q    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
# e- z4 }5 o# y0 N/ U; I    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
/ c2 r8 {" V- }' t* k. a  B3 ~$ U  I7 z2 j
    upp_reg_hdl->UPCTL = temp_reg;0 C: M0 ~# ]7 m: b0 I  R# l
+ a. B! t/ {5 G
    temp_reg = 0;   
- L+ E" c3 S; ]& L) o7 @+ q" \$ k- v" K0 [0 z+ \
    // Channel A params- Q$ o: W' R9 ?; @5 U
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle0 M  E3 A5 |6 f; A
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor( G8 c* u5 @/ i9 K
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
4 I+ Q" n6 H9 |) z0 a% K9 i0 b    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
+ F7 P# k0 J  m4 G0 g1 o' A+ i
$ }9 k: |! U+ r: }0 W    // Channel B params
' X4 }' ~* s* Z% X( p! [8 c7 b0 i    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
, g) F; @- o+ i- u    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.- @) e+ w/ j; E$ ^  \+ X0 q
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
0 \# D2 h2 G$ k$ b1 Z% L2 j) l9 ~) w) u7 e) d7 L6 p0 }" g: j
    upp_reg_hdl->UPICR = temp_reg;' }( a$ q! Z! B, C; k
. v0 ~9 F& X; X1 c" o5 F
    //temp_reg = 0;
( k, x9 G: f6 ^- A
$ w/ F5 e" U2 f    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
, g: b* C  ?1 V/ t3 n2 k7 U    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
$ d, o1 F' B" _" h! q2 {- z7 |6 x. E$ k3 y" s2 G
    //upp_reg_hdl->UPIVR = temp_reg;9 R# ]7 _+ ?9 h  {; v/ |, `1 }9 |% r

4 M  Q$ e& g* b9 {: Q- I+ [    //temp_reg = 0;8 t% j( V3 Z' @% W" T: z5 R

0 S! G/ M2 h: N; d& L, D9 _9 k/ H    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
' S, c0 b. l$ C* ^4 l: L    //upp_reg_hdl->UPTCR = temp_reg;
$ g) Z$ q3 G& S1 @: ]+ K- p
, y3 f2 E4 o1 O' {  m6 C    //temp_reg = 0;
) P1 F# t6 s9 N( u    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
/ E& w4 H( c; P" V0 b5 }% b    //upp_reg_hdl->UPDLB = temp_reg;* |1 u) [# s7 `& Q" i% C

1 }3 m$ P" [8 ?}
回复 支持 反对

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-31 02:07 , Processed in 0.072442 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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