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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11650|回复: 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信号,才开始接收数据呢?
$ ?3 H. T3 {6 e$ 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" I" O. i$ H3 U6 Z% u9 h8 f
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

( V) j" Q# e1 \+ Q7 W数据是写到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 d9 ^, v- Q4 D" A; c% N
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
2 h3 T' r+ C4 w' Y+ K
数据是写到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
2 A: A$ x* E  S8 Y) i! v你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

$ {8 g) R- g' [数据是写到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
& d4 ], F# K! q& U7 t数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
6 m* X/ Z8 O: X2 B" g$ j" E
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:197 S' @# U( r$ Z  o: X; d7 o
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
: a2 G) y5 q. M5 _
你好,”接收数组放在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
  A$ O7 J" H$ e. u0 _" B. Ol楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
& K# R- U5 r2 s* l* O( ^
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
5 O( _8 L" A  n0 D* cstatic void UPPInit(void)) y% n" L- W$ N# X+ W6 E: N0 d
{6 v0 F8 e% A' g$ z
    unsigned int temp_reg = 0;
6 _* j$ ?  @5 W3 U: k; C
7 q. _5 |$ u7 |7 l8 ]    // Channel B params* B7 c6 V9 C. D
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled/ d7 I7 }* f# r, I5 i
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface( F/ y" b+ i2 M% Q
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
# F5 f% z8 M! `$ U$ T    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate! Y1 Z/ R, d) ]3 V6 j

. n4 |, D, Y9 Y$ |" ^& f* y    // Channel A params  t* T. h* |$ o
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled+ F6 S9 `+ ?* i5 s1 q" {3 b" I
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface2 p" V+ {$ O3 j; H1 R+ U# A
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8/ }; p# A6 n+ ~3 y' G
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate6 g- \$ D" W) `/ T7 d& c
% B2 L; T5 B2 F4 L" P! j
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.
. w, h/ ]. T5 v9 T    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
8 s* k- e8 @7 J/ b5 q+ [. ]3 R# T* ]! Z; X2 b8 Z+ d8 n
    upp_reg_hdl->UPCTL = temp_reg;
  z- T0 d# D9 X6 }2 Z% J
$ y' w3 t: w8 S' P; k2 e    temp_reg = 0;   
. l% Q9 S+ f# ^( o# b1 q8 O" x2 p5 V& K. R
    // Channel A params
+ C' ^& [- E# R, a- f" H    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle6 d" Y% b7 K/ O) g% L0 s. p
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
8 k) ?. l# a. S- t6 n    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.0 y7 M2 \5 ~, |# z
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable0 U3 V% \* v3 n/ k

% y( x8 C8 ^1 Y6 l( s/ C    // Channel B params% U) u9 Q0 ]/ [2 X; n* ^$ E
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);8 A. ^7 o0 M. }, W# a( ~# s
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
: A( g4 ?' |; e0 X    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable' _7 f  B0 M; p2 R1 F% g

3 m; v8 ?5 @& \6 k$ W    upp_reg_hdl->UPICR = temp_reg;5 Z& y0 v* J; U9 }1 X; p

; S7 a: B- e- P; o2 ?    //temp_reg = 0;
3 s) z& F4 n5 k" M4 A. ]
3 F" ]4 i/ X/ E( ?; a7 d    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
2 E* _. z1 p- R4 k; P8 ?. f    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value7 e1 i2 o* ]* V+ `7 ~
6 W8 v3 H$ L3 [1 K% ^
    //upp_reg_hdl->UPIVR = temp_reg;, a5 c0 U+ o+ o% N

# d4 x; E) d$ E    //temp_reg = 0;( }- C" a' }9 K# D/ y
0 @. c# K' }/ d
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I 1 o3 _& w% B8 N' ~
    //upp_reg_hdl->UPTCR = temp_reg;" O0 Q% T* A8 L
8 e2 c1 B& n4 h1 l* o% Q& B
    //temp_reg = 0;
5 O8 U' h! a. G) e1 E# F    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable# _2 ?9 w, P8 x
    //upp_reg_hdl->UPDLB = temp_reg;1 V/ l4 P% o8 S9 m9 K( E

! B" w* o0 E/ D1 V9 {}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-23 12:58 , Processed in 0.046043 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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