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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10376|回复: 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信号,才开始接收数据呢?8 p! R% \' L0 t& r
分享到:  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
& l% W# U4 H/ _+ q你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

) d( r" b8 B' |; U6 y1 O数据是写到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
- e& b* X) ^/ H4 c( e! `# j你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

8 v* {+ Y( P2 ^/ z数据是写到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
' F* N) c8 _6 Z& F: U3 d- r% {你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

5 h% Z7 `& \' W- W/ Z2 q数据是写到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:343 h" D& L& [  }2 ?
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

9 s8 q4 |2 e6 j* `DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
# y" V+ h' w( w3 a* }5 a! X. EDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
& Z. y8 c; n, O" Z- x' Y
你好,”接收数组放在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$ s! F8 [' X9 g! Y2 `7 v$ r
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

- Z- l4 \5 m% T% B2 }7 J1 s寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):! Y) |- a1 q/ h* q0 L
static void UPPInit(void)
) B$ O5 T( R5 \0 q{
4 d4 Z: B: G( U$ ?3 d4 }! r* {    unsigned int temp_reg = 0;$ S3 e1 t/ o! Z' H

! z) [& J5 f$ H+ v+ Q    // Channel B params6 k2 k5 ?" m7 B
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
: |$ m( d. e3 J- A    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface1 X8 d8 ?5 F6 S0 z
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
; E: l* X$ X) h    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate
, |" U( v% X' N/ a, H. b1 w2 s
$ o9 D: C; p- [    // Channel A params
. w0 ?% x" d; @    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
+ u' J2 M" ^8 n0 M2 P8 ^    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
' ]; \/ |: G* o. E4 u: Y: Z+ e    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
' H8 ^. x* G1 C8 _* r; n6 y    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
6 o, g! r, c0 U% I# J
8 h' Z' K# l/ H1 i    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
+ L2 U- o0 f, c9 W, I- H# M    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive" z! d# e( L! r" C& p

/ t. K4 Y( U( z, t    upp_reg_hdl->UPCTL = temp_reg;
! Z: \( h1 g! y, t  {- S) h. n$ B/ c4 g* R
    temp_reg = 0;   0 u; g7 I8 ^! {0 o
% d# M- W# i/ [7 m
    // Channel A params
: i8 R, L% v6 r0 o: o    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle9 D" G9 I: B5 ]4 A8 f2 Q# O$ ]
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor+ R7 H- @$ l( O+ W5 F
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.* w( Y% |( P' I; w2 \
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable1 C; h. R& y( u0 o0 \# g
4 ~2 j0 _8 R2 |
    // Channel B params4 S- u" i$ g/ Y& e2 G
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);1 |; X& T" H" t/ M# ^5 s5 T5 N" S
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
4 L/ x  L* {$ [0 {. o* t) i1 x    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable( n: }# @. ]. T6 ]4 n
# E. c" Y! a. q* s
    upp_reg_hdl->UPICR = temp_reg;3 Q" Z3 j5 ]/ O3 `% \" U) t
$ H, P1 J7 E+ @' l" y0 Q
    //temp_reg = 0;
/ G4 ?! e) l4 L, |7 O; d" [( a2 m3 a  {* Y+ X( [
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
9 u- z+ m4 X# I" t8 b    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value# b! `5 }& J0 U2 ?6 P  e* m
0 j: v6 v! S. a3 H/ ^
    //upp_reg_hdl->UPIVR = temp_reg;! z  ]8 E, i% v, I

8 D" x1 ^$ u5 X1 Q    //temp_reg = 0;5 `7 m, {- i5 I0 M
8 k2 K# R# `3 x$ B
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I * P  A) q% t  x# v5 X3 y0 f; G( W: P. Y
    //upp_reg_hdl->UPTCR = temp_reg;
( x( V' m( W4 w/ i6 S1 A3 c/ @7 y9 y+ E% O- n% T5 W) f% N% `
    //temp_reg = 0;
/ r7 u3 i* ^9 x9 @5 L6 ^/ N    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable- P# o: Z2 @% B0 t) z
    //upp_reg_hdl->UPDLB = temp_reg;( i3 @3 }1 Q0 X  i1 q, w- L5 ^- E

2 M+ V* w  B( S# \}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 12:11 , Processed in 0.041671 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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