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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9079|回复: 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 d5 E. e9 Z% h* `/ E- z
分享到:  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
+ @4 N$ {9 x8 H" @; F4 x你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
) P' ?$ b, m6 Y; {2 T( d
数据是写到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, k0 r, y8 |1 K) R' z0 A3 d$ }
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
9 H2 C" u# Q7 a6 C# U. W, T
数据是写到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
5 D2 I: c/ B# F' {3 j你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
9 ~7 S4 l% Z1 t$ Z* ~
数据是写到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/ Y$ y. w% _: I  K. r/ Z
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
+ v- p) s& q2 b, z/ G/ |; W
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19
; i+ x& d# m6 Y; \4 i" BDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

7 c# c+ N  |9 y# z/ z2 V% S你好,”接收数组放在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# ?1 L6 M0 R, E8 }( N- y3 |) Z- T
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
  C* W# [3 T' d. `
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):* G" I5 z' @7 N
static void UPPInit(void)
3 E. K' t, W# Y3 t{1 q4 [& R, H: M
    unsigned int temp_reg = 0;
% s. C0 ^+ X5 i1 ]* J7 c; u. ]3 f( O& ^/ ]" m+ u
    // Channel B params
& x8 S& ~, f* M( q    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled0 {1 X/ O2 J" k% ^$ w0 ~/ H& P- s
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface1 j+ N" {5 F9 ]/ ~2 ~
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8) L! E# f7 D; w& X1 ~6 n7 ^
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate5 |; h* h& M1 z
5 D3 H* x' K% h8 L) d, S4 t9 e, L
    // Channel A params
' Y& \; f4 `7 H1 H    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
5 f" U1 {# d8 P* z    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface3 m, q. u) b6 A9 z; b8 a! f8 b! z
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
  n: y- j; u+ ~* u* p  G$ @    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate2 G  S0 M& I+ C5 V  ?3 P; v% {

% w. J7 J: \. S- [! z/ q    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.- m. P# @, a% k6 `" j
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive) U7 p7 o5 F% W$ L0 L& ]( ^3 g
  \) J+ J' r. j" K; s+ ]- I! `2 A% `
    upp_reg_hdl->UPCTL = temp_reg;
# s. k' U" v9 G1 m$ z
- R% J  ]" O0 ?9 E$ ]% I    temp_reg = 0;   
0 F: u7 g4 _4 X4 R' G
9 \( h+ E- }& Y. X7 Z    // Channel A params" A# Y: o( i( I! Z# G" v& G
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
+ m+ D& [" _4 Z$ v1 r    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor% Y1 F+ _1 K. G- \2 Z
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
: J7 O* o* I0 e! i+ z  t3 E) T    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable  D% @: y6 E1 N7 @
' r/ J: W4 H& u" ~' W4 ~1 U
    // Channel B params
; V8 o0 @  h  ^# Q! d, X- _8 |, ~    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);2 G* |6 r: F8 k( z- A! k! A2 L8 G. Q
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.9 F$ H5 L( O& S, m0 F: z
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable( i7 y  B- m1 o
# c$ z" {) }) K% E/ l
    upp_reg_hdl->UPICR = temp_reg;$ F0 i% \6 z; T( v: s' \

- l) k: t# h  m, q    //temp_reg = 0;
' `% |& @8 X& ?+ H5 \' I; n1 Z) r: N& ^: [  }+ Z
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value* k/ h& M, M0 a9 R( K' L
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value5 T- H  F) H- o; N- p% |& O3 e

& H! @; k8 s7 c: ]    //upp_reg_hdl->UPIVR = temp_reg;
, ~9 t, z# v  s! j7 }
1 }' D! r- U9 r3 H3 l    //temp_reg = 0;
- I$ z. J  g- n3 k4 G. F# s' n9 b9 \  M! c  w  b7 K, K7 n- \1 `- o; l8 i
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I / C& {  D2 N- a! g
    //upp_reg_hdl->UPTCR = temp_reg;
9 `$ p. e8 E8 e2 U! {2 X
% P: A1 \. p; q& M$ d    //temp_reg = 0;7 l! {  C8 W3 R, A, a
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
6 h0 \  [9 b/ n7 l% Y3 S# j    //upp_reg_hdl->UPDLB = temp_reg;
5 j: K6 H% L( g4 u: ~9 D * a3 q9 m* l' B1 K4 C
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 10:26 , Processed in 0.043566 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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