找回密码
 注册
关于网站域名变更的通知
查看: 1937|回复: 8
打印 上一主题 下一主题

FPGA引脚分配问题(DDR2控制器)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-6-19 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本项目使用的是cycloneIII的芯片,利用IP核生成了一个DDR2的控制器,但是再分配引脚的时候产生了如下问题,如+ [, q' q- J$ J2 L9 B; @
        Error: The assigned location PIN U21 for DQ pin "mem_dq[0]" is not a legal location, i* {6 G$ A; F3 q0 a. b$ c7 ~
                Info: There is no legal DQ location that supports 9 DQ pins6 s7 v3 V3 L* Z8 v9 g
此时才知道,利用ip核时候,输出引脚是需要分配到特定的引脚上面的,,,,
+ X9 B: S1 w6 e) F- Z1 R这个倒是没有什么,对于仿真的人员而言,是可以修改的,但是我的程序是跑在自己设计的板子上面的,而且已经制作成功,所以修改引脚分配是木有用的,这才是欲哭无泪的地方啊!!!!. N" f, w) q8 Z  q; g8 N9 C
针对于这种情况,有没有其他解决方案,而不是从新设计硬件PCB板的,求助!!!!!

该用户从未签到

2#
 楼主| 发表于 2012-6-22 17:29 | 只看该作者
自己顶一个吧!
# r6 T6 b: w/ W! ~5 _法一:自己重新设计一个DDR控制器,这个比较难,而且时间不允许,放弃;如果走运的话,可以在网上找到别人贡献的DDR控制器,做一下修改可以的。根据本人经验,这个对于altera系列的来说,还真是少,有strrixt系列,但是cyclone系列那就比较悲剧了,大部分都是Xilinx的。全凭个人人品啦* |1 Q# U0 h: t" T4 m1 T. Z
法二:重新设计PCB,这个是没有办法的,建议先配置DDR控制器,这样就可以根据FPGA来调整PCB,并且回想调整直到满意为止。
/ r- H+ e1 e: r+ u( U. g
+ W: e2 ^4 |) e' g遗留问题:altera的IP核位宽只能设置为4,这个比较头疼,效率太低了,唉,,,,
5 e: t7 U: A4 \
$ ~' ^$ O; S$ K8 Z经验教训:下次做这种IP核的时候,一定要完全软件配置完成,包括引脚配置,这样可以降低成本!减少弯路

该用户从未签到

3#
 楼主| 发表于 2012-6-22 17:31 | 只看该作者
另外还有个问题是,我使用的是cycloneIII系列的板子,发现居然引脚输出支持的只有167MHZ,而不是配置时候推荐的200MHZ,无语了,估计这个与电平标准有关,不过我试过SSTL_18,一样问题,木有办法

该用户从未签到

4#
发表于 2012-7-13 08:35 | 只看该作者
教训表明,你没有认真熟悉这款FPGA就使用错误的方案,

该用户从未签到

5#
发表于 2012-7-15 15:33 | 只看该作者
verilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?# k2 R- w6 W7 S  ~- h/ K% K1 E

2 h/ v. A8 z4 T* q8 B& n/ @4 qmodule s4_7seg(clk,rst,; M0 L! ~! c6 k+ t' Z+ ]2 a( {
, \7 L- v; a7 u* D2 E
   s0,s1,s2,s3,
% Y5 d! t; t% ^# g) k( K* y1 Z$ B  Y( l& c* M+ |
   d0,d1,d2,d3,d4,d5,d6,d7
4 U& r4 Q2 e; F5 M1 S4 o9 j1 X3 E* s. c
   );
( A1 |/ [( z/ k7 r
, d0 G8 x+ f: t% l1 M8 R input      clk,rst       ;- |1 |+ g& P# @! M3 u' W+ _8 i1 K
* f; l5 M1 G0 N1 A' C
output     s0,s1,s2,s3   ;
& F: C; Y9 \9 W2 H( k4 Q
0 e% E/ Y7 V: f# ?7 q output     d0,d1,d2,d3,d4,d5,d6,d7 ;) ^' \/ P- R( B& A- K" n

$ @2 @2 D9 X% U reg [2 :0 ] state ;! F0 a* q' p( H! s# T$ @

: B2 d. B" g" T( Z& D reg [2 :0 ] sn ;
5 ?) F% y0 A/ h& f( ~; G+ p2 n/ u+ M( N3 ?0 I) R
reg [7 :0 ] data ;
3 t' v) N* y' q  h' A4 G
/ G% z4 M' z) ~( f1 ]6 r: z reg [23:0 ] cnt ;4 z# S; \( _, \! k! @/ ]9 j: j: ^
, g8 q. n- A  l2 P! ^
5 Y0 u8 C7 @3 I7 w/ ]! n/ k$ J7 @

  g; u2 |6 V& q6 l1 x. V" R. k wire       s0,s1,s2,s3   ;- N* v8 X' B  K; G+ P$ d% }
- T: `9 n$ E5 g' J! ~, q
wire       d0,d1,d2,d3,d4,d5,d6,d7 ;
6 Q+ D) ?9 \* Z+ I
) _4 m: V* Z7 l0 L assign     {s3,s2,s1,s0} = sn ;
: t1 \+ z9 W4 m
! H! K: f+ E. K% S. _/ d assign     {d7,d6,d5,d4,d3,d2,d1,d0} = data ;
/ p+ [8 i$ L+ w) o5 a" }
$ r: s  j8 [9 _. O  Z always @ ( posedge clk )% i8 F% F4 `0 N' f* {
" B& A' n, w" a# W6 u: t1 }0 R
  if( !rst )
/ o9 j9 R) a* ?! s1 n; C% d; g0 `& k: G9 Y9 H$ @3 o
   cnt<=16'b0;
* s/ G/ j$ w- N1 M9 @
2 S! p( [, L/ `( f& H# ~  else
" K/ n3 h, y# k6 \
) D4 u7 W' `9 ^" z. j1 |   cnt<=cnt+3'b1;
8 ]4 a* \) T4 x' w
+ m" _- Y; s: R; Z1 \1 k8 z wire clk_slow = cnt[24] ;, P* b) f" A. F
3 V2 M4 T* j6 \. q9 n/ [% v
always @ ( posedge clk_slow or negedge rst )2 p" K- z: X- p$ |- s

9 r% C  u' {6 ]: N  if( !rst )
# R6 k5 Y, k$ }) p; _/ f0 `6 ^
: K; t5 _) Z9 D8 U5 f5 o   state<=3'b000;3 _1 @3 |9 R3 \. r( _

' w3 J6 ~5 X6 n) k' g  else3 ~7 h( P1 F: P, c6 k1 h5 Y
  V) J$ i+ \( U: o2 Z" M& w3 D
   state<=state+3'b001;; l2 i+ d8 u1 o! M
# ]: I$ U) ]6 W( Q" `6 A2 [3 C
always @ ( posedge clk_slow or negedge rst )% h, h3 z6 `  k6 O1 W" g
5 @, L/ @3 p  m% _( k) n
  if( !rst )
$ R2 l' k; ?0 r$ j) @& R. S& u) H& ^5 f: I: L# L$ s) D
   begin; e, ?( a& F* c( y- D. E! Z4 E0 I
% s+ I4 }+ T+ l$ d- N  u
    sn<=4'b0;, E4 \$ g3 e. W  F# t+ {

/ C/ P2 n" [0 @1 t0 m5 ~1 z    data<=8'b0;
# P4 \2 j, m0 O$ _1 o* N$ c% n: o" x# v) y( [; Y1 f9 f6 E' N
   end
6 J+ ], c+ a4 f1 C) |7 X; B$ D. y8 a) i8 c' D/ L$ i% N
  else
( s6 N5 X' G, ]
6 M* ^2 L1 Q7 }/ N3 c  u* \   case(state)
0 r8 F# C! o# P1 g3 _+ c# \
8 @3 Q& g: r% k1 C    3'b000:* [& O# |- \( l. {- R' T
  r+ p* h  O# W# l1 k
     begin
3 Z# S7 s; U; X$ F) Z& z9 ?
( G4 I" f  C, [; T9 O/ C, \      sn<=4'b0001;8 }- {0 o+ F% o5 D& R" |

" V2 Y; u1 k* f# m+ a      data<=8'b0110_0000; ; K" \2 W" V, b

9 v' [% u7 T& ?4 ~5 h7 P& Z8 @3 W     end7 \4 ^+ D7 M7 U

, k7 Z' q3 W: y' I1 A    3'b001:' Y3 J" B1 e0 V7 Q- o$ G
/ M2 d; c. D/ ?/ g0 G9 I
     begin
0 f6 S: L  k6 J" B, I
$ s5 Y/ f0 m+ ?" d/ T1 R4 p( W      sn<=4'b0010;' S3 t* o, c6 j$ u8 |$ p7 k1 C
6 f: |$ S4 J; V1 N2 q2 N9 c
      data<=8'b1101_1010;
0 V7 Y$ h1 ^8 |) T9 V
( v  [% I. h) Z3 k/ v     end
2 W; j  U1 n! E! e; Q2 O: J9 v/ ^6 y( O; y9 Z3 M& q1 v
    3'b010:4 k; V' Q' p  J( G

9 q2 _. ~; t# l- Y' E6 B6 w0 S     begin
3 U4 m4 ]1 g% [+ C: @1 \. D' W7 _, J( B! a+ J9 o
      sn<=4'b0100;
9 D' ]. o4 {9 u# R' x( q
' p1 _! W9 E3 K3 v: X6 y7 v& v3 ]      data<=8'b1111_0010;
) y+ X7 R+ n5 }- E# `& a3 A3 W7 P. ]4 L, E) \
     end1 E+ S5 \* V1 Z, i* c
- A4 F3 w! ~1 `8 |" j8 z
    3'b011:
2 a& _6 O; ?2 ^) p, g" v0 u3 |4 i5 v' O" S
     begin, V/ u9 m% G9 b: r- j5 A# @

+ T2 U/ D4 Z! E# S4 \9 T: _      sn<=4'b1000;' x+ l  ?  L% u

/ y# {3 b2 z9 ~1 }; V$ P      data<=8'b0110_0110;  f- A# W# I/ }
+ {' K: I7 B6 ?; a  o" Z
     end
- r5 A/ d$ X0 @+ P# x( ^7 K9 R% G0 t# L  i% c
      3'b100:, k  F3 A2 v" C* u- y) I
$ l, ]; O) |, s
     begin5 T, h! w, V5 o( _
2 ]& M# O! x2 N# G
      sn<=4'b0001;0 |, u: V$ A3 D1 o

) R5 y- I8 G4 v2 H4 h) x      data<=8'b1011_0110;
% r0 T) k! @" ]% Y! c) h/ i; ?) `/ E) z0 w8 T. g' M
     end. @: d) y9 K+ l" l, ]
& R6 }; [. }6 C- Y3 s( T  D; K; _1 v
    3'b101:
) m, E2 ]* V7 T
+ x4 N- i; g# O# m     begin
5 B& j. ?/ {! `9 ?- Q4 b% W5 L; j3 I. Z
      sn<=4'b0010;
0 I6 I) l7 I8 m/ q
0 C% W% w' m2 t) S! F- V2 ]      data<=8'b1011_1110;
+ T/ ~- E% U! i4 I9 F, o, z
1 h! Y$ E$ m7 N' H     end
* V+ i* f. }! u4 r( Q3 k$ |) i; C4 x* _- \6 Y4 I/ {6 t
    3'b110:
$ l9 |% [: T' n8 M3 v; T
0 @4 f5 H' D8 o, A- Y4 k, G9 x; V     begin
  y; u" I! ]) Q0 X
4 E% u5 e! F. D2 Z) x1 M) u2 D      sn<=4'b0100;
5 I$ A' {4 g. c8 H2 ~+ B: s2 k
* g% l* n) v; C1 o      data<=8'b1110_0000;# K7 i- H3 A1 D9 `3 \
+ U8 y7 l, Z; p) ~
     end5 c% W% m, U( l8 _. s

9 n" i$ t3 E# y% |+ I    3'b111:' c$ W% V& @: y" ?- E' F! J
' t4 z0 w4 J! l  r# L
     begin
; B6 f/ U# J! @. |. B& a+ @; R/ N
4 J5 I, ?+ P0 ^5 b0 J: c      sn<=4'b1000;6 k0 c6 n& Z9 t. h  E8 g" H& P
0 k' [! C% m/ N& ~1 O3 i( j, p
      data<=8'b1111_1110;8 j! i" Q7 {  L' {0 u

  t- J6 \3 P! T- [) ~, }9 K! _     v1 `" z( H: {( i( {! y4 u
  y# u+ k& r. |  I! E! j
     end! i  o( }# x% C6 e1 D; s

# O3 Y  E) C& r6 d   endcase, F- t+ x% D6 a* ~( E* e  ?  O, k
* \' q3 ]' C8 i" J1 x) N' @
endmodule1 i; c3 X. s) s- u7 |1 h

! _7 g- S& @- R& a" n这是我自己编写的一段程序,但只有前三个数码管显示123,567,第四个数码管不显示,按照程序应该显示1234,5678的,请哪个大神帮帮忙看看是哪出了问题?
/ j  M6 ]  c- L# W$ m/ S5 @4 A

该用户从未签到

6#
 楼主| 发表于 2012-7-18 09:12 | 只看该作者
huangzj 发表于 2012-7-13 08:35
/ p( J/ {0 Z1 }; n4 d( W教训表明,你没有认真熟悉这款FPGA就使用错误的方案,

2 Q8 Q9 n& ?, ~1 @6 @0 D+ n确实,才开始入手这个东西,走了弯路

该用户从未签到

7#
 楼主| 发表于 2012-7-18 09:13 | 只看该作者
chenbingen 发表于 2012-7-15 15:33
' ~  l( |3 K  Yverilog编写的程序有四段数码管分别显示1234,然后又显示5678,就这样循环下去?
$ P8 u, N, |% B; R; v/ f7 E1 S
' t2 S: q4 J& J* O8 f8 y+ X3 Xmodule s4_7seg(clk,rs ...
% `0 X) M- |) ?$ ^3 k
第四个数码管有问题!

该用户从未签到

8#
发表于 2012-7-19 09:21 | 只看该作者
硬件可能要重新设计了

该用户从未签到

9#
 楼主| 发表于 2012-7-20 11:47 | 只看该作者
绝。对 发表于 2012-7-19 09:21
/ `2 E8 ]3 {9 S! X硬件可能要重新设计了

' p/ Y. V& I+ ~5 W! z- D# K已经重新设计了
6 x1 s1 V; ]9 L" \6 h: @6 ROK了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-5 14:30 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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