Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 5850|回復: 2
打印 上一主題 下一主題

[問題求助] RAM疑問

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-8-27 16:59:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
我現在已經把1024點的資料存到FPGA 的RAM裡面
# Z1 C# Y/ M' _9 \signal tap II也可以看到0~1024點的資料
; U. n, K0 X4 N8 u0 i* }& K* I; t但是我想取512~1024點的時候
* S' K  o% ?; D& }( r! }往往在compiler的時候 fitter那邊就是過不去( q! s2 K+ ], S/ |
我看了error 說 LEs 不足....
; _) R$ v9 R( g- w' J0 g為什麼只要特別取某區段的資料時都會遇到這個問題呢4 V$ r+ G1 \/ z7 p: N. w1 o7 m  L
程式碼如下- v- |6 k, k! f+ a$ |) o
ram_data已經存取1024點資料
/ B$ B2 v) t- J6 h% v: x7 F. @% A! t- }6 D
always@(posedge clk or negedge reset)
* o5 s. S2 f% ^$ u8 ~" P8 M        begin6 o/ {, g  v" N/ n* @
                count_L1<=10'd1;               
+ R3 v% j* \/ ~  V- a: v8 N! `                L1_addr<=10'd0;        ! ]4 c! B' X* m3 Y; X7 i/ o
                if (reset ==1'b0)
9 \# }1 A% w4 \( G+ v( v' |                        begin
7 @6 P3 o& h/ h# Q- V                                count_L1<=10'd1;
" r. Y& K1 y6 s3 @3 ?8 U) E( S( w                                L1_addr<=10'd0;
# }- D- D0 y3 X# A3 B                        end
6 I9 y/ \; B0 R  M                else if(start_fft_flag == 1'b1)    ; z. E% i) e! G- D0 y% C
                        begin
0 K. `  f$ G3 |* J! }! R                                realdata_L1ain  <= ram_data[L1_addr];                           // 0~512的數值傳到realdata_L1ain                         
$ Q' K! t8 \$ f( U3 K1 X! k% _3 u                                realdata_L1bin  <= ram_data[L1_addr+512];                   //513~1024的數值傳到realdata_L1bin         
) N$ [7 t8 L. v; _0 ^6 `                                count_L1        <= count_L1+1'b1;
/ p# `3 R( m3 s5 O0 B                                L1_addr         <= L1_addr+1'b1;                               
' }' L- |( `% z) I4 [                                if(count_L1==10'd513)                " ]2 X7 U2 \% s8 y* V
                                        begin9 P7 F' z9 B* s, X
                                                count_L1<=10'd1;
; A/ V# ~8 j& l6 s                                                L1_addr<=10'd0;       
: V, }. O9 A# V* p3 A3 \  [                                        end                                                        4 N! T1 H! T: ]- G  H: `
                        end+ v2 _( j; }- L$ c' ^* u. U
        end
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2012-8-31 13:59:54 | 只看該作者
你的寫法不對,這樣合不出block ram
! q2 o% `' }: Q) I/ d不能同時做這兩行
- @: K( D$ Z1 Zrealdata_L1ain  <= ram_data[L1_addr];2 S$ L, c( z- o2 P' B% D
realdata_L1bin  <= ram_data[L1_addr+512]
0 `5 l* m& e0 M4 ^9 M( o! ]: L; v當合不出Block ram時, D& }& s  {' d" @# O) i" w+ K
tool就會用LE去合,想當然而,一定不足的
3#
發表於 2012-9-11 11:36:50 | 只看該作者
如果你硬要這樣取值的話,把RAM 拆成兩顆就可以了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-4-29 03:47 PM , Processed in 0.102006 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表