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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10926|回复: 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信号,才开始接收数据呢?" A5 Y2 p% M5 ?9 z' ~2 @& t4 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

13

主题

41

帖子

1181

积分

金牌会员

Rank: 6Rank: 6

积分
1181
QQ
沙发
 楼主| 发表于 2015-5-15 11:33:01 | 显示全部楼层
weibo1988821 发表于 2015-5-14 19:40" x; r$ Z4 i0 l" ?
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
, o0 E: k4 L$ U( ^4 C4 @9 u+ |
数据是写到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, k$ P: H# I/ w" O# ~
你的数据是写入L2区还是DDR?DDR的数据读写是很慢的
5 Y- |* h) _! O' e
数据是写到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
5 v* S0 d. j% q+ M) J  b你的数据是写入L2区还是DDR?DDR的数据读写是很慢的

9 j9 A  Y% p' u% O; O数据是写到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
; n% c7 e# V3 O6 i7 P) \: x& c9 fl楼主你好,我最近也在做FPGA与DSP之间的图像数据的传输,我想请教一下,请问这个CLOCK START ENABLE 配置 ...

5 D# X+ h# F, i' R- D寄存器初始化那里就给出来了啊,如果DSP要发数据给FPGA, 那么CLOCK是由DSP去控制的,如果DSP要接收FPGA的数据,则CLOCK是由FPGA控制的,START跟ENABLE信号是用来控制发送使能的。这是我的初始化配置(我是用8位宽度通信的,对于DSP来说,B是发送,A是接收):
% C* u% d0 C1 ]/ ~) W4 Sstatic void UPPInit(void)- c% w- C  P. f7 S( f* @
{5 c& r$ x- E4 N$ E: p3 |
    unsigned int temp_reg = 0;
/ N( v( ~; J, q8 Y5 O1 Z5 K7 F$ L! t+ @9 I1 a. G0 x' C/ R4 }
    // Channel B params) W1 H% U. j% e; o. W
    CSL_FINST(temp_reg, UPP_UPCTL_DPFB, LJZF);     //Left-justified, zero filled8 ^. ]0 T. M7 _$ `3 j
    CSL_FINST(temp_reg, UPP_UPCTL_IWB, 8BIT);      //8-bit interface
4 s4 z! R. C: X+ O  f    CSL_FINST(temp_reg, UPP_UPCTL_DPWB, FULL);     //Channel B bit width = 8
- l2 u# @1 d8 x! Q    CSL_FINST(temp_reg, UPP_UPCTL_DRB, SINGLE);    //Single data rate6 {+ k+ a; e# T) b( Q9 L

2 g2 y1 T- P" b2 V, A    // Channel A params" J0 _  O" b9 {" g
    CSL_FINST(temp_reg, UPP_UPCTL_DPFA, LJZF);     //Left-justified, zero filled% t, Z0 Q+ r' h1 p3 Y- k4 V
    CSL_FINST(temp_reg, UPP_UPCTL_IWA, 8BIT);      //8-bit interface
0 Q* T  M' u( {! ]& s    CSL_FINST(temp_reg, UPP_UPCTL_DPWA, FULL);     //Channel A bit width = 8% f: c7 d' F0 y0 c+ ?6 Q
    CSL_FINST(temp_reg, UPP_UPCTL_DRA, SINGLE);    //Single data rate
, E, E3 j& l% D1 z* f
% H# {' [7 J, l, s, n4 X& A    CSL_FINST(temp_reg, UPP_UPCTL_CHN, TWO);       //Channel A and Channel B are both active.5 J. z+ r3 \9 H3 H/ O0 B2 z
    CSL_FINST(temp_reg, UPP_UPCTL_MODE, DUPLEX0);  //Channel B transmit Channel A receive* g2 X3 e9 R# U! _7 P
) P5 m3 a& v; `/ t  T8 @5 y6 R6 y5 `; A. i
    upp_reg_hdl->UPCTL = temp_reg;% k4 S" k: V- C6 y' b

8 V" m5 C7 u! Y5 Y7 W. a7 D    temp_reg = 0;   
3 F! D' r1 H* N8 w* `. R  W! A, W. w
    // Channel A params0 L' V3 x5 K9 f8 }
    //CSL_FINST(temp_reg, UPP_UPICR_TRISA, ENABLE);  //Channel A data pins are in a high-impedance state while idle( q, J& l! d- G- i: g3 k
    //CSL_FINS(temp_reg, UPP_UPICR_CLKDIVA, UPP_CLOCK_DIV); //Clock divisor
; T7 z7 M  C8 T    CSL_FINST(temp_reg, UPP_UPICR_STARTA, ENABLE); //Channel A START Signal Enable.$ Q8 _4 G4 n+ K  u, ?/ |
    CSL_FINST(temp_reg, UPP_UPICR_ENAA, ENABLE);   //Channel A ENABLE Signal Enable
! m* O( \8 \- v; k3 ]% _
# Q  a4 n: @) P. t" H: g    // Channel B params, q+ e6 h& j6 {; [: H, {
    CSL_FINS(temp_reg, UPP_UPICR_CLKDIVB, UPP_CLOCK_DIV);
4 k' u8 Z- G2 d$ o$ I( A7 [    CSL_FINST(temp_reg, UPP_UPICR_STARTB, ENABLE); //Channel B START Signal Enable.
' ]  D! g; a" H2 _& W    CSL_FINST(temp_reg, UPP_UPICR_ENAB, ENABLE);  //Channel B ENABLE Signal Enable3 y( N3 V  |) L' v

& e/ p7 e& {" |" `/ x    upp_reg_hdl->UPICR = temp_reg;8 |' t" w% ~" W
; K" P& g" s! H" P3 ^4 _
    //temp_reg = 0;, P0 Q! x8 m- \
+ p" d3 z7 ^: c2 j/ T5 S3 m, A( ]& N
    //CSL_FINS(temp_reg, UPP_UPIVR_VALB, 0x7b7b);   //Channel B idle value5 Y( c- Q0 q' k8 K6 O/ t9 _
    //CSL_FINS(temp_reg, UPP_UPIVR_VALA, 0x7f7f);   //Channel A idle value
5 B5 S4 m0 o2 E6 f  a; S
" _" V& C! N. H. }& J    //upp_reg_hdl->UPIVR = temp_reg;
* F6 _. z5 G9 ?3 q0 O# O/ A! J% E1 c5 B
    //temp_reg = 0;2 u6 v3 j2 ^- ?" y
" F9 \- L3 T$ L2 g
    //CSL_FINST(temp_reg, UPP_UPTCR_RDSIZEI, 256B);  //set 256B DMA I
  X$ q" z* G/ ^0 z+ t2 Q/ i    //upp_reg_hdl->UPTCR = temp_reg;
, |9 H- i  v( }4 ?# s. M' ?# B$ e, \9 e9 {/ N/ I
    //temp_reg = 0;3 A" e# p! F/ s+ d6 B% o( m
    //CSL_FINST(temp_reg, UPP_UPDLB_BA, ENABLE);  //B to A loopback mode enable1 A8 o( v- D" ?7 C
    //upp_reg_hdl->UPDLB = temp_reg;
( S$ }6 g* s3 P
, x0 V: n9 V/ W" }1 o! R}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 10:20 , Processed in 0.038002 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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