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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9138|回复: 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信号,才开始接收数据呢?
  y3 X5 P6 O) s" _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
沙发
 楼主| 发表于 2015-5-15 11:33:01 | 显示全部楼层
weibo1988821 发表于 2015-5-14 19:40
" a6 T" B& U5 u) @你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
+ W6 G7 A; X  v) R/ `9 Q6 V
数据是写到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% o8 v: l- O) H7 [( ]5 A. G
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

: p8 d2 U( v* q' f' T8 K数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了,呵呵,大侠,如果要用32K 的L2 Cache存UPP接收数据的话,应该怎么用啊?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
地板
 楼主| 发表于 2015-5-15 11:34:18 | 显示全部楼层
weibo1988821 发表于 2015-5-14 19:40
$ P' A& `0 I7 U. ^( e你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
4 C% F. X1 F3 I: v) Y8 H; G
数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了,呵呵,大侠,如果要用32K 的L2 Cache存UPP接收数据的话,应该怎么用啊?
回复 支持 反对

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
5#
 楼主| 发表于 2015-11-10 18:53:34 | 显示全部楼层
zhuma 发表于 2015-9-11 09:54
- A% z/ w4 Z! o% O( F+ C" |7 _l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

. e5 R" R( X. M& Z5 p寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):: \% |6 ]3 q8 m( `6 u2 \1 Q* M
static void UPPInit(void)
( k! C6 z% E1 v' S3 j2 d8 x{' T+ R( E( J: ~" G
    unsigned int temp_reg = 0;, w  N( c9 o7 J& e* P. L7 k

9 o2 T6 t) k2 Q    // Channel B params
1 I% x+ J0 n' D  r& K! k7 c    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
+ _/ z) ~% [1 Q2 Q% R$ a+ ^, A4 V    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface2 }, n# [; o& n4 J5 G
    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
: f( ~* s9 W3 ]( r    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate4 b" p1 i! ~& E8 L6 w% e
4 D' F9 K- R& J
    // Channel A params3 p& Z. e! x6 V
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled" t4 Y' H( Q' k3 n! ?+ ]+ S$ e7 M
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface8 x! ^+ W  j& u2 f
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
& X' h/ G- E: {+ n) o2 h    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate& ~1 c# D6 k% B0 u3 v

' X' f; c# u. l% ]0 @: j  \    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active./ ^( k+ g1 E2 A3 X3 j% }# D7 M. c
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive) R; a( A6 Y' k7 C/ R3 n
* m3 g* A& E/ [3 K
    upp_reg_hdl->UPCTL = temp_reg;
% b: n/ m  x6 p3 g9 [) X) @4 X# A8 j$ [3 c  Y5 b  k! [
    temp_reg = 0;   
3 W6 [4 m1 T! B$ C- M8 C
. f* k; }9 G: e# V1 s1 Q    // Channel A params+ l4 H9 ?1 n# K
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle
  q) c* ~" d! x    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor8 @, V& B  Y2 k6 A$ \  ]) Y
    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.! @. Z0 p# L; L
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
- C' j1 N+ D* t) J8 |, J0 @5 L* ~' k* r, f6 o+ X& h
    // Channel B params, z+ u, ~) H& _3 d
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
1 A- Q  q: U  X% O  U- k' U+ g    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.* ^1 r' |4 z  C( G3 t4 c
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
# G9 j5 ]5 y7 T* l% A5 ~3 a" L' F1 l! y5 h( _
    upp_reg_hdl->UPICR = temp_reg;
: P' ~& _! F- q% H+ H/ y
, {6 S+ D7 Q8 k, z    //temp_reg = 0;
1 i& x2 G# ~( }; Z8 L- i
1 M: _1 v2 H/ ~8 E    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
# R6 U& R! ]4 x    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value/ N' B# L7 W  O2 A3 O$ n# l
2 c4 p' a2 ?1 q6 r
    //upp_reg_hdl->UPIVR = temp_reg;
) X, f- }; F5 e' m; J
; z  r. _/ u5 `    //temp_reg = 0;
& c  n1 ^! S. h- p1 w" Q- X: v
) g+ {" _0 U2 a4 j) {. B    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
4 ]% z2 k# t. w- [9 o1 o  q    //upp_reg_hdl->UPTCR = temp_reg;
7 Q! B- G: H- N. N) O1 U+ c) O( d& ~5 m# I7 e, M7 G
    //temp_reg = 0;1 ~) F* V, H! k) |* ]: c/ Y) t
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
4 Y# m5 W& z$ G4 s! Z# `- D4 Z    //upp_reg_hdl->UPDLB = temp_reg;& a4 ]% P3 X. d( _
, ~% _7 H. L; X. `8 Q3 a
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 11:20 , Processed in 0.039413 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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