Chip123 科技應用創新平台
標題:
RAM疑問
[打印本頁]
作者:
daiyoung
時間:
2012-8-27 04:59 PM
標題:
RAM疑問
我現在已經把1024點的資料存到FPGA 的RAM裡面
7 C$ c9 J9 M2 u6 X
signal tap II也可以看到0~1024點的資料
) b: t8 \6 C% G& L2 t
但是我想取512~1024點的時候
% t5 U/ P' n# [$ ^) r
往往在compiler的時候 fitter那邊就是過不去
, c& s# h9 M# L: F: G, K
我看了error 說 LEs 不足....
/ K1 o. C, a% R' S
為什麼只要特別取某區段的資料時都會遇到這個問題呢
+ W* Z& u( r) L# u0 w# p, O2 O
程式碼如下
4 d8 n: `, U) c3 ]9 S
ram_data已經存取1024點資料
" T9 _) x' R2 N8 F; w1 V7 ^1 X
: m' X, A7 P4 T$ t8 }
always@(posedge clk or negedge reset)
4 r2 Z- ?: O/ i. N( d
begin
0 t' k, J2 s% @! W% d
count_L1<=10'd1;
+ J, z4 R; _; F& }
L1_addr<=10'd0;
( U$ T/ ] p, C+ k4 _
if (reset ==1'b0)
y" Y6 J4 G& l/ h% S1 h5 @- p9 \
begin
0 |% k! ^4 w1 L% o* V
count_L1<=10'd1;
2 `# ?, m' O2 f, ?0 q
L1_addr<=10'd0;
# B0 t+ J& K6 F8 ` X0 X
end
# l0 d# T4 r k2 @0 ?1 ~
else if(start_fft_flag == 1'b1)
( M* W; ~3 |' i3 e2 ~. {
begin
9 D q7 o9 F+ G( R/ Y+ h' A K
realdata_L1ain <= ram_data[L1_addr]; // 0~512的數值傳到realdata_L1ain
* q' K9 t) m$ s+ m2 w6 |
realdata_L1bin <= ram_data[L1_addr+512]; //513~1024的數值傳到realdata_L1bin
* n1 a( O2 h3 O7 |
count_L1 <= count_L1+1'b1;
; V+ E- H2 p! e2 D" F
L1_addr <= L1_addr+1'b1;
7 t( ]% O1 i' b+ S/ d
if(count_L1==10'd513)
: s O6 e9 M+ i) M1 Q$ s; [ Y# B
begin
) n: W: R) r1 Z0 A% R/ P3 W
count_L1<=10'd1;
. S7 _- K; m7 R" H: ^
L1_addr<=10'd0;
; ?/ Z( S8 c! i1 y% e% {
end
0 a& L$ v2 R# j0 d+ E
end
. |. u/ Q& ]6 ]# s, v; Y
end
作者:
eric994
時間:
2012-8-31 01:59 PM
你的寫法不對,這樣合不出block ram
+ p5 L9 D n: V6 J' @. y
不能同時做這兩行
7 k3 h. q8 z, ^) E w
realdata_L1ain <= ram_data[L1_addr];
4 `' x% W, c' J
realdata_L1bin <= ram_data[L1_addr+512]
7 o" x# T' A# _% k" \
當合不出Block ram時
" T: |7 ~5 j( S! s' b- p
tool就會用LE去合,想當然而,一定不足的
作者:
michael6172
時間:
2012-9-11 11:36 AM
如果你硬要這樣取值的話,把RAM 拆成兩顆就可以了
歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/)
Powered by Discuz! X3.2