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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10894|回复: 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信号,才开始接收数据呢?5 Z# u( P- j0 k: L
分享到:  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
+ g/ H2 K, `) [/ A2 a! F) K你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
& H6 p  {) M9 ]8 g8 f) W2 p# 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$ w! q2 ~$ k3 J. w
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

: U5 L  W4 z5 w! [2 g: f数据是写到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
3 x; {1 @: U. _6 Z- c3 K7 m你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

: Q  z: C( @% s3 Z/ n1 P0 m& M数据是写到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
6 l/ g6 t) f5 ?* k) Q; U' v数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
7 y8 ?% t2 e: \# ?: X0 y
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:196 h/ |+ I7 ]6 @; L
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

5 N# }8 F! @1 F( F! a你好,”接收数组放在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" H( s1 m7 |! F
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
' Z) m3 h8 O: i/ q
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):4 J2 N0 M, X: X6 _4 m
static void UPPInit(void)
+ H% h5 i! ], {/ @1 N{
' D. d/ m. L5 n0 q5 R/ w6 c( b    unsigned int temp_reg = 0;( J+ F8 m( s! h( D
0 s6 k, \; C: ?) ]% z2 m3 G+ ~
    // Channel B params3 b: k8 F+ d( c
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
1 F# J' |3 B% g/ K    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface) `5 w- M5 s+ S
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
: W! B% ~- e8 |: C- R. {* K    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
. \) m" D" d* Y- t% i
$ w4 @+ j: ?3 d4 u! B0 _# ^    // Channel A params* `% p' U$ F6 a6 D( Y
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
6 h  k& n( p# w  j7 o    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface5 s6 \6 `9 N/ x2 n3 w" X
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
" v' ?3 p4 s  h5 R    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
/ a( C. W" H( L5 S" V' \
7 I: k* P( \4 |9 r0 E    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
4 L. j8 o- \2 Q9 F    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive3 }. _. ~3 P; }. @, M' @
1 T3 Y7 @5 V! b# X8 S
    upp_reg_hdl->UPCTL = temp_reg;
: I, i# \! X& L: @  N" n
  Y! T% A0 h) W8 Z$ \; m& v    temp_reg = 0;   
  r9 V% _3 e9 M1 j+ Q
* O# {+ `5 E# a  E& e9 L# S  M4 m) ]    // Channel A params5 M& t3 }1 H  o2 L# ~8 x% @7 z6 J
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
- o) b9 U. i' i2 v9 g    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
5 Q1 t0 V1 Y5 a) X% N    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.1 G0 O0 Q% U  ]  O; f
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable) _% _( \* T$ F2 a& T5 @' b, w9 A; z8 l
3 X; w1 k1 O0 `* R( N
    // Channel B params% s- p* Q. A) S) N. x( m
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);/ v& T4 |* u# `# ^" w/ O& D  F! u
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
+ B& r$ w% E. {# \6 O    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable2 _+ S: A4 q, I. U* A. |  _1 [

5 L1 K9 h7 I, W- F8 x    upp_reg_hdl->UPICR = temp_reg;
$ I/ c9 T+ N' B
  Q8 {- D* A7 d% @2 `( z+ i    //temp_reg = 0;
  x! g0 z+ K, q2 R6 \1 U; x# [- z2 T% ~2 Y  G% w' F8 M
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value3 D4 q* R* C! M+ ^, C& i) M
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value( @7 r+ b8 h, v

, i$ D( o7 m# m9 G( q. [$ ]    //upp_reg_hdl->UPIVR = temp_reg;
) }/ ?2 I, J3 |7 k3 Y. a0 `1 X/ o# o) r
    //temp_reg = 0;
% p& U0 b; M6 j
4 a; N' [8 K' _5 F; G    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
, T1 R7 f: l, Z; h/ ]/ \    //upp_reg_hdl->UPTCR = temp_reg;
9 E0 X8 J8 Z. r8 e- P$ i. l/ ]
6 h: R& M& M% V4 [    //temp_reg = 0;/ z3 j& B! [; o$ i& e
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
# p- m# v& H7 l    //upp_reg_hdl->UPDLB = temp_reg;$ p& k) }1 f' A5 y& O5 \
; d$ e( m$ c6 e; ~7 {
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 17:01 , Processed in 0.046013 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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