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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10886|回复: 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信号,才开始接收数据呢?) b2 g1 P2 O* t1 `8 {
分享到:  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
! [9 |; m" j4 D+ Y9 o+ z你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

5 ^8 j5 R5 l: F" U数据是写到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
4 N% v9 w5 \" w你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

& K4 t( }1 ]0 u# J: x! L# p数据是写到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 F  I5 J  _" [( S( X+ ~* v$ K你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
8 T8 E& z) d: v! C, U. z4 {
数据是写到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
: X$ U4 m8 s5 c9 }; O. Z6 f" F6 m数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

( J! \" T; z. P0 ~5 HDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19: h# z2 A; f% ]% g0 T- [& _3 l
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

% e  V) @3 K6 [3 H你好,”接收数组放在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
$ _( j6 A, v' g  h; g# dl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
3 S& ]: X+ C+ S9 B8 a5 Y) I
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
, c  X2 W: }- v- F0 \# U) w1 Fstatic void UPPInit(void)
- i6 I1 O9 A8 ]9 N{
7 C+ H! A) l  x4 w7 r    unsigned int temp_reg = 0;% ^7 C4 |4 W* K: Y* t  I, ^* _$ t. T
% n5 D" x! L, _5 E
    // Channel B params8 Q5 n$ P& C, m9 L
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
: Y% s7 ~# y0 A/ h- L# @    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
% I, c' z$ x; z6 v% W/ z0 M    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 80 n8 Y' W  P9 i& b" V
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate( j& ]) i# g: y1 A

3 @  L5 t" s1 v8 m1 g% m    // Channel A params
6 `" j/ k) t8 \( C( f    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
% _, U* ?5 X' j3 `) s$ K    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface# b) |5 D0 \; H/ Z( L9 c9 C
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
8 H8 l8 E. |; D  q2 f0 d, j3 e5 m    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
3 c& v/ s8 V4 d' i' B" G+ E6 H" K0 U
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
. \* O+ ~2 @6 M& K5 Z    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
4 R! y+ n8 Q- }. h
- ?# e0 \) n; G  m    upp_reg_hdl->UPCTL = temp_reg;8 f; \0 {) p, c" i: @
. S% y$ K, J4 n5 V6 x+ \! s; I
    temp_reg = 0;   
6 v. z( `5 k' w/ ^' @& D
8 L* i% [  s0 a  E: e    // Channel A params
  E5 s  V& j# }* g! ^    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
# H1 o7 i# ~+ [7 E6 Y    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
; z6 l2 f: [: x1 ]4 m6 p    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
4 y( B9 q$ ?3 i: ?1 p' n. |( _    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable$ @- q: ?; P6 L& T+ h9 T
' K# K3 r* ~1 L5 {3 }
    // Channel B params% j, t. p$ h8 R& }& ^5 w
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
  q( s6 N3 @' A  r2 K) J2 U# d6 Y    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
' r2 a5 C" y. W1 T    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
  F) r9 H4 m; X3 R+ u
3 \7 L* w) c0 g5 l3 @    upp_reg_hdl->UPICR = temp_reg;* u, a" L) P1 A
/ H$ C+ m  v; a) G& |' S$ {
    //temp_reg = 0;
4 X: m- ~8 h# b: A9 G  [6 u3 X- r3 x* l% s! M) D
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value0 G# M7 o! ^( d5 J. y
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value8 s- \* a) H0 T  z/ h$ h: O

' Q: i" s" }4 g# g. c- \# v2 r    //upp_reg_hdl->UPIVR = temp_reg;/ S/ ~& c8 U$ E. |
- e# z% S5 r0 X) e$ Y
    //temp_reg = 0;
# O1 X, Z+ D/ Z; o9 J0 F/ Z8 a+ v/ j! w
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
! V8 }; z* j9 ^    //upp_reg_hdl->UPTCR = temp_reg;( f) |( E) b& o
* Q3 A# Q' T  N" w1 O0 j
    //temp_reg = 0;- p: [0 }, m4 }/ C: \5 X- x
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable$ F$ b9 M( R" Q- R) f% X- ^+ O
    //upp_reg_hdl->UPDLB = temp_reg;+ \# ?5 H: j1 B8 A) ^
8 ^/ f0 D$ {& i
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-4 18:16 , Processed in 0.049120 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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