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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10379|回复: 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信号,才开始接收数据呢?
  y# p9 a/ N2 A; R7 U$ 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
/ z" s) o1 ^  o你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

$ i. z# L- X% o% M/ Q数据是写到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
9 |, }  }% A) |9 \& z3 Y5 \/ U( Z你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

0 \3 C. \' }8 T9 j/ L数据是写到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
6 z2 z3 @. Y0 d" j9 B7 h* g你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

, I+ C- e2 L# l9 c数据是写到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
$ |: b; O. n: h- z3 c5 r( M- u数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
( \+ K5 S5 A% j$ h
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:19( d# r3 Q4 y: {# h, J$ i
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...
/ ^* g0 N0 s. |1 J2 ]
你好,”接收数组放在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:540 |4 e0 i8 R3 e) d% n9 }
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
, L  t) n- V# `1 q' _
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
/ ?$ m  `: @& ^( mstatic void UPPInit(void)+ @3 d' @8 m2 q  g& U* w: _# M1 r
{
# ?" j. g% n- P: e    unsigned int temp_reg = 0;* j3 K1 z. P# A! Z
/ h. ~2 Y+ D6 A7 `
    // Channel B params
4 v3 |  N/ p* b) p    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled! G. u; B. w; T1 h: C
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
7 m+ C; w+ _- d    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
7 K# @  ?6 F0 E3 j    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate. Q& t6 G; i: @  ~) g0 `' _7 X& }

3 Z' F# l1 K8 e& ]    // Channel A params) x" ]6 }. ?% F/ p
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled3 U' s  f4 {0 W$ e2 r# R; M
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
0 v  L' t& o1 o4 ]8 X. l    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8. G; a- Y! H* V
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate/ W  u' t' F$ O

9 A) _. @# ^/ f! ?8 ^/ v    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.9 L9 P) [3 l, P* m: I/ x
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive8 Q- \( w+ v) }7 T% g0 N0 I

. Z# E* l, Z8 e6 O    upp_reg_hdl->UPCTL = temp_reg;4 b2 G+ _! n) K# H. {- H2 h5 |7 n
5 `1 H: H# }8 @
    temp_reg = 0;   
  e5 E* R3 z; N% n
, T  H* o# S+ u0 O$ \8 P    // Channel A params7 y  ?# w' Z' s: q0 ^8 E
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
! U" |* ~0 y" Q$ v" [% T6 x% h! I    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
3 B3 ^; Q0 g9 f4 W    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.
3 Z$ x! @% f: R* Z    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
& |; w" B$ y! c0 a8 H. H) y3 `+ J
    // Channel B params% N6 d( v. j0 W" ]: }' J
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
/ S8 Q% D+ p% C) r: O; K8 p) H; n. P    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.; [8 j, o; e" {4 q# l
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
+ i# g! I4 U( @8 ?/ ~- F+ p, |1 s! X6 ^% k- C$ J6 q4 l( |0 b+ G
    upp_reg_hdl->UPICR = temp_reg;/ j- c$ {: q8 d# z( n

; b' e' i4 r- }. S& i& H" ?    //temp_reg = 0;
/ ~1 T/ j9 M9 I% b7 J. c0 V% O9 D' f) q% m' O$ @  g: u( I
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value  |- o$ ]6 }$ {# n
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
! q: ^  j" Z6 C9 g. t; Y5 ?4 ^
. ~0 d+ Y: y0 C9 ~# Q    //upp_reg_hdl->UPIVR = temp_reg;
3 u0 a8 B& S* ^( v- r% r9 [* x& u
    //temp_reg = 0;
* o! K9 X/ D5 T7 u6 _
$ m! U" \# p  t6 E# M2 @    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I " ]' R! m6 I9 ?
    //upp_reg_hdl->UPTCR = temp_reg;
7 |$ c9 c2 ^8 ?! V8 \+ H& a+ f# v8 b( M) h0 a+ F" x0 ~6 {/ b* j+ K
    //temp_reg = 0;8 J/ f( {  q: |: R! G" Y
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
( U4 H0 K- a2 V, g) y! v# T/ ^/ P. V    //upp_reg_hdl->UPDLB = temp_reg;
, p: P9 P5 |* f# }% y   n3 _- V8 V: d) r) f  \
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-30 15:50 , Processed in 0.043748 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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