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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10997|回复: 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信号,才开始接收数据呢?- G! M9 _, _; P# Z/ L$ H3 R0 ~
分享到:  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/ Q* [6 c5 b4 x% {' Y8 b' }5 B
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
! D3 J/ k5 S  @
数据是写到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
3 t3 v# y% M3 U% @2 H) L) i5 [; r你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
3 y8 `4 R) r: r
数据是写到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
  J9 l$ M' |9 N# U+ d1 W4 h0 b3 w你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
/ L* ]0 m5 X0 N* l# q1 |4 {
数据是写到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:344 S# J8 E- L7 ]
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
% q9 U! p) c0 x2 h
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:191 J$ p2 x1 g6 T/ ^9 {% z5 [3 \
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
: H& A7 \% z( n2 G( z, D
你好,”接收数组放在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# m7 H4 j7 v, [% j; [- u
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

0 m* i$ B  x4 T8 S9 w. s2 @寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):* t9 ^; o. x2 h) P
static void UPPInit(void)
$ _8 i7 p" V) `: L: _* x- P7 W{) b/ c( {/ Y, S# h8 }5 X
    unsigned int temp_reg = 0;: Z3 H  I/ Q) V/ X/ d3 c0 {

# b# c3 t; ^$ }    // Channel B params1 ^: R" M* J5 Z
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled, s* Y+ w8 M8 w1 ~+ d+ x
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface& {+ D* Q# G* a4 p/ U5 T2 X
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8; r" W  i$ x: b
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
% E1 x* X4 Q+ O& Y# M/ R5 K0 O8 L" l' {
    // Channel A params
, z% e2 U. N' _- k    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
& P4 Y, N- @5 u) ~7 |    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
8 D# ~! @* V9 u0 ]    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8* z- T, M  K1 A9 ^
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate0 O$ F/ Q6 \8 S! `2 }

, b' T8 w+ b% Q; ]6 S    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active./ y! p/ F: B. Z; }3 {2 J7 i
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
5 C* T* B$ A, n7 C3 F6 L  h* E6 H7 x3 ~6 f) g4 |
    upp_reg_hdl->UPCTL = temp_reg;+ p% b$ j/ e& g- r6 q
7 k5 L: l$ n! C9 s! ]0 E& Y) I
    temp_reg = 0;   : g2 e% g4 Z* `( M2 x; n8 ?
- ], J+ E3 z  R/ f& [( z* m
    // Channel A params. q$ U$ ?  D% P0 S2 p
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
6 X3 M8 p: \$ \' `! d8 j    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor0 W! {8 G8 s% k9 s- `
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
- k! P& g! S$ c) x3 J    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable5 f! C; Q2 C/ P+ z

/ p5 o+ f) A8 M1 J6 v    // Channel B params# i0 `* X, m0 G
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
6 M4 b* v% W0 D4 w2 I" ~: N0 _    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.. Q) k5 e* C) a* S& Q: H
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
/ z" e9 x3 O  C9 B- x2 N) h/ L: Z
8 w  [5 S: L' }, e6 i    upp_reg_hdl->UPICR = temp_reg;$ h; ^: T" a, z2 Y( ^! K1 W% V. w
" x# Y1 ^9 P6 w% w; O
    //temp_reg = 0;  X, f' O# K, c4 t1 O+ ^8 S% g5 l
6 q8 y, T; L/ A9 V
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
2 x: P6 h7 K5 L7 N4 Y  J    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
3 U8 u. k- X. ?. _; ]$ ~3 m5 D  _+ d8 f0 L( |# K5 s9 b9 \
    //upp_reg_hdl->UPIVR = temp_reg;  e7 x4 C/ K3 R: L. b% K* a, {
5 T& A) S; W/ H( h9 v3 _. e/ [6 t: E6 Z
    //temp_reg = 0;8 r. [4 w  n7 M. C! g4 y" i6 q
. g3 s' g, Z& j
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I 3 l2 d3 E$ ^7 E  \5 m
    //upp_reg_hdl->UPTCR = temp_reg;
2 ~2 t4 _" d$ _) a( p9 p- |/ B/ M9 X* E0 `! ?9 }' a
    //temp_reg = 0;( ^7 y) v# U  C6 h) I" ^6 @
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
3 h! H5 i* {$ M; P  J2 [    //upp_reg_hdl->UPDLB = temp_reg;
. Y' Q0 P" N5 ? " u6 s' r* R4 s& H( _
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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