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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11239|回复: 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信号,才开始接收数据呢?
+ T! p3 c" u; B8 |5 D2 g7 I
分享到:  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- W9 {  [: y' P4 p/ o3 L2 l
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

8 J) P/ M; f- \/ t数据是写到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
" j& m- L3 f  n( J0 i7 A5 F" I你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

1 s# E( S% a. v7 Z* d% o8 C数据是写到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% w/ `1 |( E9 h& ?9 i: l
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
! I5 k1 s( g0 T5 `+ ?$ W( k2 f; [6 |. C
数据是写到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' U7 o7 K8 `' l0 C+ f" p
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

1 w0 u# ?7 o2 r) t% j0 G+ tDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
/ N" K) w; \5 _3 B7 i6 YDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

( s% S' r' L1 C9 Y& x8 {7 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" `4 k( u) z2 Y
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

0 @1 j6 `& W: h寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):% H: V  C" R0 n7 g0 v
static void UPPInit(void). D; z9 i" U. C' g
{
0 _8 \" j' P; j. w  c! {8 a( i    unsigned int temp_reg = 0;
' l9 Y, ]' ^! X& g( _9 P$ `. r3 m# F0 ?( J5 B" c  q8 F5 m
    // Channel B params
" ?$ W. g. O$ o! f    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
' l! ]+ N, `# a5 }5 ^    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
6 ~& J' k! J$ t: P    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 85 h% q0 D8 |; _( L4 h9 u7 W
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate. x; o$ H: j9 h! o% O! U7 q

* j/ ^, Y& D2 d& U, D    // Channel A params: u' m/ s. S+ \  C
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled. g0 s* k1 b$ d
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
4 ~* E+ R* l6 `7 T    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8/ d+ l& h- z3 _& l
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
! J, o, l1 \* z6 b* Z3 h- W9 |# O( P
! ~5 @. p# x# Z9 T    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
* \  U& M: N, |1 u2 H    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
% F! i2 x  i4 }  D8 J* A) T( A
4 V, s, m. c$ ~9 v    upp_reg_hdl->UPCTL = temp_reg;
# D+ K( z5 }. @: s) i! K( F3 c' S2 G. b/ f
    temp_reg = 0;   # N0 s6 g# N# B8 X4 D. s7 t
% w3 {; s% ?; x) \
    // Channel A params3 p4 \4 T$ n/ y: a' z; m+ C
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle: Q, Y  ^0 ^& t7 L0 \& N
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
2 W3 M* z& B$ l. b- a; G1 d    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
0 B% L: v1 l3 C) q! U0 Y1 Q/ K* Z    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
+ [; t! e2 @! c( A( m1 a- C- |  c
    // Channel B params
7 o8 r9 y$ B, D  x: S    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
8 \5 m8 u6 Z. T. I    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
4 k# R, T8 V& ?* V$ [4 h" V    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable2 @  i; p- u  @" |

, W$ a( o" _2 o1 ?; c    upp_reg_hdl->UPICR = temp_reg;- T) S! F  ~& b

5 }$ ]# d/ k! K+ O0 J    //temp_reg = 0;
! T: O% v8 t. d5 ?: Z
% O$ T: F8 C6 V6 Z    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value4 u; e" {1 I9 i  \
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
- w/ |$ X7 g* P& j. y+ U$ e1 k1 E* r. M5 l; a! v# Y% s4 s8 ]
    //upp_reg_hdl->UPIVR = temp_reg;9 t0 \: M* J7 J$ E- k' R, R6 h
1 I  X6 j! `5 Z
    //temp_reg = 0;, u2 t  W+ i! d' j9 l/ c, z

- f, C* A7 `- C    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I 9 l% t0 Y: M: |. Y6 H
    //upp_reg_hdl->UPTCR = temp_reg;  M8 g* `5 Y' A, L" X; \+ O2 C, d
$ d) p2 I1 }  F4 z4 [0 H9 W. l. E
    //temp_reg = 0;2 ?. }6 q! j# v" P( m4 Q
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
) |$ G& S3 Z& F1 |9 w5 X    //upp_reg_hdl->UPDLB = temp_reg;/ ?- h( [" d! c

( t. f' S& c  E}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-17 11:26 , Processed in 0.044006 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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