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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10764|回复: 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信号,才开始接收数据呢?' B0 t  U, I6 W- B; t0 }( o
分享到:  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:400 {5 r& A9 p* d5 a
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

4 P( H6 `/ F) Z  M! F数据是写到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
( x' H+ }; q8 O* i( n# S" k- a你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

6 Z8 S7 y- J- i# t, J. H( ]6 \5 V数据是写到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:409 t: `* @; r; h5 O: \
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
" \: e& L" f9 y/ {1 W% Z; u7 E2 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
# v% V9 C6 Z7 ]; c, ?* S数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
( j* g. a" h7 T; @5 {+ S& j
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
: x8 z. D1 D4 X& GDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
, @& w, v5 G  `! |
你好,”接收数组放在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: Y% \; C$ E+ T: ^' [
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

9 h  J6 V; u/ O* ^; n1 K寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):; H2 Y5 L% s, ?! ~
static void UPPInit(void)6 k, b6 X* o/ y( J7 m' I
{. Q% u) [; @! b! ~$ Y% O4 R
    unsigned int temp_reg = 0;
3 A7 P: O9 c, |' c2 N' q8 p& A* x( k# l
    // Channel B params
) l8 G# H' L5 C' b: v- d! E    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
7 r$ X5 }/ s8 w4 U* H( I    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
* h& ?5 F, Z6 \    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8# b' c. S; ]9 F' J
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate" {! K% w. C& R& V

* G* Y4 Q$ |( ]5 h    // Channel A params2 H3 T1 \& V# _! z3 F
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
/ C' ~/ n' X9 @' r; u3 @8 K' a    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
5 k0 k4 K# \' v: E4 E    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 84 s; T5 U8 \7 e9 ~
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate; U; V# D& m. w1 P
& d+ J, C; ~2 c/ c, c
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active." \: O- ?/ V* ], d% l
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive' p- b4 h7 E9 T7 T1 V: |5 L
$ B- S1 D' T1 S; [. R" u
    upp_reg_hdl->UPCTL = temp_reg;& `& o- E/ Q9 t6 I0 K- r" ~0 O! U, S
% e6 B& y/ ^( m# L
    temp_reg = 0;   
; t+ c5 r9 s  ]) i0 g( [- R/ l! N4 t1 `
    // Channel A params
) n; |8 b  N- F$ B    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
4 H* H% [& g, I( m% W! V    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
; C, |5 q% ]% M& u: D  o    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
3 j$ ^9 V  U# D' X9 t; z' h3 m/ @    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
- i& x. c! G* Z
/ r. \. t- c$ n! I: ]3 r2 _    // Channel B params
! N5 K: u  k& Y+ e. o    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
/ K7 [; f3 v+ q; T6 w) |    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
! S; W" m) P: S' G# t6 M8 r! D& v    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable# O" u( u: F; v8 H* ?+ [

% r# r  ?: k! s) y! h2 y    upp_reg_hdl->UPICR = temp_reg;2 a0 d& a! b/ X3 {2 s# C
: k% P1 k; v) e5 \2 J7 ]. l" m. ]
    //temp_reg = 0;
, D4 R3 \4 M3 o) x$ j
1 A+ p+ G1 e1 b% ]/ P    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value* A5 @! @# z/ \/ L6 H
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value- O/ u- t( B& K

- I  U2 p% Y1 I/ p" _3 Z& b1 p    //upp_reg_hdl->UPIVR = temp_reg;1 r' Y7 S5 }2 i+ p2 `3 V
6 C4 l# ~! ]4 o. s9 t# {. y6 _1 k; z4 C
    //temp_reg = 0;/ F5 B8 ~9 b; u$ f. _7 d6 @

2 ~' n9 p, c5 x" C& I    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
3 k+ S' b& X8 i4 I5 p! V    //upp_reg_hdl->UPTCR = temp_reg;
3 y4 b: w1 T2 Q/ ~0 |3 x
% \% j" o* G. l8 |7 N  z0 X; p% i    //temp_reg = 0;
' H- I0 [  A; V' ]    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable, Y) `1 Z/ j) r/ y$ s- f2 m& d
    //upp_reg_hdl->UPDLB = temp_reg;; j7 e' M2 t6 H1 I, S. B6 E+ w

! T5 C! H. Z9 K, A  J9 g}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-14 18:30 , Processed in 0.042254 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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