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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9151|回复: 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信号,才开始接收数据呢?/ h7 i  ~1 ^/ D1 l6 y
分享到:  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
7 t0 J# L; X; e' w% s7 D( R- C& |2 i你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
3 g8 q3 ^; G' k/ C. ]
数据是写到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
0 O9 m& z) R1 Q/ x9 T$ Q: R你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

1 r( n: l2 M5 z" t" S+ D6 n数据是写到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
1 [7 L2 E+ U$ x你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
2 d: C4 O  d/ K- y& ?4 S
数据是写到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; P  m* h! ]' }/ z
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

. }4 E0 {1 L$ h4 p# P( S4 ~DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
& Q$ U+ L& m3 Z+ X: A" J& p+ c2 T4 }DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

4 V& v4 l( W: X0 A+ F1 c  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
' v6 K( S! c8 r4 U$ i, C6 W8 D3 tl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

4 p3 G/ C* P& K( d2 ]寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
" Y1 \$ w- {7 Q4 Nstatic void UPPInit(void), I$ N4 ^6 E! Q5 G
{
, k2 F" W' H1 Z    unsigned int temp_reg = 0;
7 z: h' l1 D0 H* w3 E4 h/ s- b0 G+ ]1 U' d' I7 {
    // Channel B params9 c( {0 o5 D# y, k% [+ R8 g6 b  O0 t+ a
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled( E5 ^* w  ^0 U2 O% n
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface8 h' N  [7 s3 B. X
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
+ S: B% i1 v% O7 U# B9 y- l    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate5 h) r# d" T' b4 b% R

4 t/ Q! T. C. I% a0 d9 C    // Channel A params- q1 s$ b- X: S' L+ ]0 [8 Z
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
- u: U  T+ Q/ r" G$ `    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface& y9 F+ F3 d( |$ S
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8" ?: K# R; E& @$ k3 M1 Z
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
; S/ |( U5 O2 n: X5 _6 R& z
" K6 W7 x4 I' Z! e: P    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.: L4 z( {* G* p, g2 A
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
3 B! e, V% p3 r' K; w4 j# A! l/ r9 F: H* h
    upp_reg_hdl->UPCTL = temp_reg;
4 i1 _/ ^1 s# k4 ^5 S7 V* h5 ^. v. q7 }' N2 V! W8 d+ f6 V
    temp_reg = 0;   ( ^9 O5 c, K9 H$ G

  c* ^, z# s5 J+ u  F% [5 a    // Channel A params4 E$ K3 S- Q4 S% j! t) ~! O
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
* Z" h$ {: _. m/ ?) |    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor  k7 p2 {& K2 a. a
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.* l  G, l! d. k. n/ A  x3 N
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable3 J" @( N/ y' V. _" q
+ ~4 c4 I0 s$ P2 Y6 H
    // Channel B params1 d& t; H1 h0 _4 Z0 N1 Z
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
, i( u1 L5 F/ g    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
) w/ I) r7 a/ h% z- N# W    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable) C! ?+ z" c2 j  u+ m+ \
- l% b4 w' ]0 R
    upp_reg_hdl->UPICR = temp_reg;' s4 o* [9 j7 W3 R9 O0 ^
$ d8 u% f& a# V. \7 A
    //temp_reg = 0;
2 R* Y5 G( P$ ^; X  w
0 {* o. @: {# Q$ V  W/ }    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value2 ^7 n) |6 ^4 |2 A
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
' ^* [* C) b7 m+ m$ {! c1 ?0 H
6 m0 {3 M* _: G# L6 @  p    //upp_reg_hdl->UPIVR = temp_reg;
; T, P' m0 E+ ~! _3 ^7 x0 g# Z
    //temp_reg = 0;
5 J4 J7 T& [7 @$ Q+ P0 T6 e  K# _( \' \4 r( D! W1 T
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I 8 b, B6 D" ]* C, s
    //upp_reg_hdl->UPTCR = temp_reg;! r( ]2 G7 K* w3 n
( b0 Q1 c2 {" X3 h* d6 l6 b# M
    //temp_reg = 0;0 c2 v# A' [- A( z: N9 T4 t
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
; [; K* S( y, W    //upp_reg_hdl->UPDLB = temp_reg;
. Z2 K6 i: D3 ]  m' y$ u  N6 W ) D% Y+ y7 h- s7 I
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 01:24 , Processed in 0.048312 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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