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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10940|回复: 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信号,才开始接收数据呢?, x) C. A$ K0 N" f2 [) w
分享到:  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
8 W7 R7 _0 f8 D7 P# e# T2 J# U你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

' e: ?+ f' C8 j' a) h2 ]5 C4 `数据是写到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:406 u, F- p: j7 G. I4 Y# V
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

" U6 _, H" l. x9 Q. j8 S数据是写到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:404 g$ y2 [, C% S0 I( i, t& `6 T
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

" s+ r: B5 Z- \& j$ h2 O$ J数据是写到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: x2 Y2 \: W$ x1 ^  Q
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
5 ?0 i5 o9 ~& ~) t9 M9 z
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
+ S- q5 W; _1 G  |* Q8 fDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

$ l& a# a: y% ~* u你好,”接收数组放在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
0 V2 i1 l/ _2 ^2 O+ Y7 w5 |, wl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

+ ~9 F7 A2 h# o4 c寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
7 X' U+ e3 z, nstatic void UPPInit(void)1 N& Y! t( X6 W! P- S
{
$ H+ j8 I1 R4 l    unsigned int temp_reg = 0;
  N5 V) R# _8 ^3 s7 R- l. ^$ N/ ^, U# I0 k3 g2 F3 n9 G
    // Channel B params3 A! Q, ]9 b  F9 R$ `0 z
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
- ]- A) x4 U: R+ T7 s: M8 T    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface$ j/ C' f9 P: S0 s& _9 J9 W2 f4 |
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
. m2 n; C$ K- K' A8 e% y9 O6 r    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate) h+ F# F# M4 H. O

8 o" i8 E" a. D7 P0 G7 I2 w& i4 d    // Channel A params: |6 x/ r# D7 H8 T9 |. d3 b
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled9 l: A' M+ t" Q5 P
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface3 H' `/ h5 J: n. r2 U
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
" S0 H" T/ W1 G3 Y7 Y' `    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
0 b4 K9 q' _4 I5 c0 X
3 G. i! `# R6 L- Q    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
/ N7 P- Z" P: @5 E* N. W4 s    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
0 ?: z: L7 ]; L  M9 C/ R/ p9 {' [  ?, C4 t; F/ w
    upp_reg_hdl->UPCTL = temp_reg;5 Q7 Q. k7 e. I5 z1 q% {* _: W

7 L9 p2 d( o: O    temp_reg = 0;   
1 G; a) F, L& {8 [* i" }0 R
3 @9 I3 A- V, W7 c3 Y) M& G* p2 T' ~1 ]    // Channel A params
! `, `- |, x# o8 P+ x& j    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
: y$ J9 g- y( J; M# h- V0 ?  k    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
. q/ S2 Y6 L- Z( Q  ?    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.( @- D: c0 W- O  j; X* g
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable3 M. Z; v' }* d. N- v
% \1 u1 g% k' ^6 X8 M# v$ i
    // Channel B params; g( k- D2 A$ l4 G* t: Y; v2 }
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);: k8 z) i2 J  l' m( _4 f/ K
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.) Z; x9 i! f* ?4 w8 i& x+ X
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
# R4 _2 W+ _/ y1 c8 f, @1 X( n& i& h9 |- A9 n! g% ~
    upp_reg_hdl->UPICR = temp_reg;
( j5 Q4 e: i1 a0 Y4 ~
; L" r  v1 h" U. R' G8 U    //temp_reg = 0;2 H2 B& S5 |! y

. q/ W; u! C1 l) Z4 E5 B. ^    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value% ]5 u$ L( ^5 u- J5 F; S0 X
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value0 N! V2 l' S. a' Y3 K3 G; r7 e

1 L6 ?( W4 _" X( h9 p" A  @    //upp_reg_hdl->UPIVR = temp_reg;# c7 i: @) c1 O
3 j3 `/ W1 B7 j7 S7 L3 c
    //temp_reg = 0;
- k, F& y- }. D* P! m" }! m
" F" I9 ?; M( e    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
$ a' [% t  E% [& {6 z1 P    //upp_reg_hdl->UPTCR = temp_reg;( x$ _( X' V( r

1 G4 r7 V7 D: `* a, T    //temp_reg = 0;5 X5 T) a+ o- j" m+ ]3 Y
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
0 a- n: w+ C& t6 ~    //upp_reg_hdl->UPDLB = temp_reg;
9 ~$ T: W& F7 |+ p
0 \% p+ N: j" t, D, A' D2 `. n}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 05:15 , Processed in 0.043565 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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