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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9082|回复: 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信号,才开始接收数据呢?
& B) e. R3 D( f& s# D5 h# p
分享到:  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$ ?3 k) n1 B  ]) h$ @4 e
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

- `5 K8 i! j) R! b( G& S" |数据是写到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:406 T  r9 d  g! N3 h
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

. C5 y( P' [" J4 v2 \: x数据是写到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
  S; R' G0 H5 c4 \% _' q你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
$ o/ ?$ W; c5 `5 B4 k0 R0 c  K) h7 `
数据是写到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
; j% x5 o2 Z$ V数据是写到DDR的呢,我在16M的DSP内存开了一段收UPP数据的,原因是DDR慢啊,我程序中实在是找不到原因了 ...
8 o$ `% [# n, i2 A+ G( f7 ^; N5 l
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可
回复 支持 反对

使用道具 举报

3

主题

14

帖子

75

积分

注册会员

Rank: 2

积分
75
7#
发表于 2015-5-18 10:56:05 | 只看该作者
weibo1988821 发表于 2015-5-15 15:194 F2 R0 R0 O' G1 C& D: q
DDR存储数据慢是必然的,L2不用开缓存使用,直接使用就行,把你的接收数组放在L2区即可 ...

6 [6 r! u  n; G6 G$ N: P0 C. @' I你好,”接收数组放在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:548 v6 D  b0 E* f
l楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...
8 |; N( f! e# V3 ~
寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
1 W8 ^/ t+ v9 _5 ?! w$ Ustatic void UPPInit(void)
5 p4 r. ^' j2 V4 Q. h- i{( O* A" @) s4 Z
    unsigned int temp_reg = 0;
9 r3 {  Z" r) m% J) E% A
+ {, Q) l! ?6 t2 p, h, F    // Channel B params
% Y1 _/ T+ t4 b# r    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled
% O2 Z- R$ s  O    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
% H) X; w' w2 P. q3 ^  C7 H  Q    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8$ x7 {5 x* ^$ @" q4 r
    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate; \  `1 l$ \  I5 {
0 G7 ]! f8 c7 g* [% b# {. u* f) h7 T
    // Channel A params
8 E8 X  K5 l: _/ Y    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled, \: e% S% W0 ?0 ~0 k* |* F
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface* X' y/ T* u% \0 M# a; v
    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8
$ S$ F  K3 ?& _& `2 l    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
% x4 k" H3 k0 I! [/ Y* s9 L8 _0 }: A* Q4 L- ?' ?8 R8 B( B. ?# }8 ?
    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active." t: B& Q: E  Z
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive
9 T# b4 Q; C8 X$ c. D, _) t6 ^9 R: B
    upp_reg_hdl->UPCTL = temp_reg;
+ J  ^: r# L" B1 Y* v+ M
) G% L* B( R$ g  w1 q4 O, X! ~8 T    temp_reg = 0;   2 f: a+ W; K/ ~2 C" r% A$ P' a4 _
& H5 e, m: Z& d+ X9 C# f
    // Channel A params) P& `  b+ r% F
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle, T& e9 ^4 ]2 K' H
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
" G0 \4 O- ^/ W: n    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.+ `( o# A$ g% C$ _; N" L/ f: j3 {
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
/ `9 {; }' ~% e( |- @$ `2 v) y, ?) f: p7 D0 S% C
    // Channel B params
% A9 F0 I2 I4 C$ I# x5 ?3 z    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
  _6 H  T( {( I7 f% p* J% p    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable." c/ U2 p4 v6 ?7 W2 p8 x& e
    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable
) O+ D: a( K( M$ q2 b6 Y, ^6 b
4 g* r; {  ]% |( K5 {5 x    upp_reg_hdl->UPICR = temp_reg;
5 q& z$ ]: e# i) |+ ?9 U8 @5 `# T# z  o1 [  L, P. e
    //temp_reg = 0;) k  T2 U$ O: `- S
$ l* w- b$ ^3 c) X9 L0 W
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value
% g1 W( r8 m5 b    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
6 m" H* c, q. |7 ?
% r% m' G6 W% a8 v) U$ D" g    //upp_reg_hdl->UPIVR = temp_reg;; `) {2 Y0 T, v9 O: x

8 D3 C+ q1 W9 [4 l) F# f4 b    //temp_reg = 0;7 r3 [6 @1 [( A1 }) M9 y5 M

) I: u, w1 a2 s% U1 Z    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I ) ~3 ^9 C% q- G6 `3 U0 ~; ^' A5 T1 M5 v9 X4 f
    //upp_reg_hdl->UPTCR = temp_reg;* ^1 C+ q, D# l8 ^# z# _2 {% V
/ D( ]: t) ?& B: u/ i
    //temp_reg = 0;; E% @, P* f: e( B0 n! Q9 {+ V
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable
: Z: k) n5 x8 {* R! l2 b    //upp_reg_hdl->UPDLB = temp_reg;) U) @) V: {0 L/ G  ~( x
( t2 |. R$ `3 _  @& Z
}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 02:18 , Processed in 0.052319 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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