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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10904|回复: 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信号,才开始接收数据呢?
, ~( q( {# V. 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, x- k# J, Y* Z9 o' @) ]- a2 L
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
( B8 ~9 A+ k) j* L  W7 a
数据是写到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  H# S$ {2 j% x4 K% q9 O7 H
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

5 D7 ?" x, K; A, [5 |数据是写到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:400 g* O$ ?' l/ M3 P5 k2 _2 a
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

& |$ H! {( Z0 B: 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; l3 d! t$ Q8 K4 M8 V/ z
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...

4 \  m* {, j1 h, i1 ODDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19) {- l" k7 [" _/ [$ ]. {/ I
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

0 M4 q7 C8 I( a. L你好,”接收数组放在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& L2 Y3 G$ U- @9 ], S8 M
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
1 q6 c4 H9 i4 t! _1 A3 B' Y8 `$ F
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
" L. H, O# L3 W4 Q4 p) ]+ Q% hstatic void UPPInit(void)
% L2 {5 u$ D, o: q3 E{
$ X7 V: u: b: [4 J    unsigned int temp_reg = 0;% \6 l6 G$ Z+ n9 S

' g/ a, m, J0 m! D1 g/ n    // Channel B params. g0 H8 e* l! h9 B/ I
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled  E2 f6 ?+ g! C, X' M- @& J$ u
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface, L" K5 I- q# d4 c* c/ T
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
1 X7 [/ _5 W8 K    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate$ x2 C' _9 O! E  F
( R3 s" p1 G5 k3 S5 R2 k1 F1 [
    // Channel A params
- M- M2 I; j* t8 i2 Z8 X2 }    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled
1 ?/ S2 B: |' j! g/ I+ Q    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface8 J2 Q2 S+ D7 J1 L0 z: `, S# l
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
4 S: s8 e& b# z. \' A8 I! \- d* c    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate- S0 K! g6 `" s3 o$ ?- w2 b
% p# w- l. R, ?$ S- y/ J% [
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.- H' }. f4 _. t
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
9 }4 X8 n8 N6 Y( ]; c5 e1 w/ x6 z3 ~+ S$ K
    upp_reg_hdl->UPCTL = temp_reg;0 y$ r/ R7 d! Y1 z) Q, b/ [

0 o; X, @9 z7 P    temp_reg = 0;   
% q: [+ D2 v. e; ]; C! u- k, b" X1 z2 F% B  w
    // Channel A params
7 M  Q" e0 m1 i- g) G9 N8 K    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle% `7 O. X- }1 c3 v4 p* A# k
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
$ [" e  R6 A- A. S    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.4 o) h  z2 x. T) H
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
7 w# }& u, @: a( h
0 E) F. r2 h  x( M& Y# h8 p    // Channel B params# M) H, Z/ W7 v8 m3 I0 M
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
: ^3 [# O: f3 R    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
- P. ?3 o8 s, w4 M    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
  e$ V8 p* s. o; T: \+ u. j5 I' p6 y. r) g
    upp_reg_hdl->UPICR = temp_reg;
% g8 J$ d# c5 W5 }- l6 i! M% Q$ L) t
    //temp_reg = 0;3 d, T5 I, K+ j+ l- ?, h# R6 ]
7 \0 V  |4 H/ p: @
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
& |+ _9 {0 m) q+ H- s- G    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value9 o# y& S- E2 e( o* p9 H6 W
$ m* Y( y) |2 u, C4 X
    //upp_reg_hdl->UPIVR = temp_reg;0 Z$ J! Z! Y" @8 o

! u; R% e  \9 `2 |. L7 p2 l    //temp_reg = 0;
% S( K# ~9 t4 k; ]
- F+ U, q: Q& t" K+ s    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
7 [  z/ o' {9 [$ |; H+ X2 a  \    //upp_reg_hdl->UPTCR = temp_reg;
( q" e; I" j* l/ [- ~4 l1 s' P" K+ U
    //temp_reg = 0;: I" L# R: ?4 z0 g2 r
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable) X& g: g5 K  Q" |, z# b8 }- F
    //upp_reg_hdl->UPDLB = temp_reg;
0 U" E, X/ z( Z' B 9 A' p0 z7 ?( ?  i7 B2 |8 l
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-9 00:19 , Processed in 0.043225 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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