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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9152|回复: 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信号,才开始接收数据呢?
; ^0 y: b) k+ V$ x9 P7 I
分享到:  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:405 j+ r, I  a9 @) N
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

8 s6 _  ?3 k- B3 |7 c0 w" n% 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
7 Z0 X4 i3 p. Y% B7 v2 ?: g你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
$ I; [$ f' R! _; s% 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:407 t; o) D) r) l2 [: a! h6 E
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
( [, B* e% i$ t3 `
数据是写到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
, ]- @% e/ d- i( k8 ~数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

/ U9 Y, j2 l0 d% K$ L! N/ Q& DDDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

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

9 U* _" n. Y2 o& \# ]你好,”接收数组放在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( L# y! X9 k+ C' e6 L
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
: k% @& b7 Y2 q. M! g: B4 Z, {
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):2 n  r7 u* O. }. o) s
static void UPPInit(void)' [. h. M, S/ G1 a1 @
{. T8 k6 d; d3 ?0 m, @
    unsigned int temp_reg = 0;& L6 x2 p& m  I" S

" w# L3 m/ s5 S+ \, z+ v$ X    // Channel B params# S- O# h0 J. a7 t- x7 g5 M
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled4 ~% E# O$ y4 X5 e# K% G* O
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface, Q4 x: [' Y0 K2 h2 I9 Q
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
. g4 L% H7 U$ Z6 m    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate3 w& n5 b6 @! ~, s7 g6 u1 O) I

0 u$ E1 R: B- w1 [5 E5 `    // Channel A params- e' ?5 U3 i5 `% N' T
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
5 g1 o: x1 k/ r9 s, y    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface0 d, H  T% @6 q
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
: Z* X4 k/ m% o" A5 w    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate4 A, y; q8 {- X
% h: W/ n8 {- h% T( w  u
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.+ ]: L9 c$ b: ~, e
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
. e! ?( c& k! P3 i9 }( `2 `+ G9 Y9 k$ e: L' f
    upp_reg_hdl->UPCTL = temp_reg;/ o  Z) d$ j3 r6 W+ L
1 g" y+ }& g4 D$ D- z0 f0 q4 s( ^0 {
    temp_reg = 0;   
9 t( `  x. h! s: n. t
$ P8 y/ z+ l2 q" ?    // Channel A params  o( T. s/ ]- z1 ~
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
* r2 W* x: f3 c) a: D  o2 \    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
! ]3 A. v* q' W    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
5 c) s9 I$ \0 ^. p  s4 o% E    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable9 r6 |2 z/ l" l5 H! q3 ~
1 B& B; S: R6 a. z* E
    // Channel B params. l* M6 A- T5 x
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);& Y+ }  \3 [- @+ i7 G
    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.0 k4 R4 s4 h0 B9 ^+ B
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable9 m/ z- v8 C4 U

$ z) T! L7 J. b; I3 k- Z! O    upp_reg_hdl->UPICR = temp_reg;9 Q8 t8 s( ^: l; o$ h
( y: Y5 w6 T( {/ b  c# g
    //temp_reg = 0;
) v& p# a- L! K" c
5 Y* l0 f8 d# y7 j    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
) `4 A# ]! [' j' ^6 B8 K; J) b    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value: E2 d( f( x9 s% ?+ S

# e, P# j# ]+ w3 Y" s9 _8 G    //upp_reg_hdl->UPIVR = temp_reg;4 F* u# M' U) I. {

8 m; O7 k: m. D' Q! c+ n    //temp_reg = 0;( S0 c+ y% Z- H4 F: O

" \, y! y* p/ s( ?7 u    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I ) T+ ]/ u( q; g
    //upp_reg_hdl->UPTCR = temp_reg;# P; Z9 @& _3 N" X( @
& a# j' B9 \7 ?; x5 c7 m
    //temp_reg = 0;0 `) J0 O% ]+ H8 l/ Y& @
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
$ O! Z  n0 M" {3 t  q    //upp_reg_hdl->UPDLB = temp_reg;
  H& b: d: c6 }5 c* v. ?5 g$ W 2 P& a3 |- @3 M7 b( u0 L% b- U  M; o/ @
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 01:45 , Processed in 0.048603 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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