Chip123 科技應用創新平台
標題:
RAM疑問
[打印本頁]
作者:
daiyoung
時間:
2012-8-27 04:59 PM
標題:
RAM疑問
我現在已經把1024點的資料存到FPGA 的RAM裡面
* k O3 x- X4 L. x8 |
signal tap II也可以看到0~1024點的資料
) r, N& A# y0 Q: d* x
但是我想取512~1024點的時候
) u: |- ~4 ] y( D2 h# [& q7 L$ C
往往在compiler的時候 fitter那邊就是過不去
3 |1 ]( H y/ D9 A. W9 n3 T
我看了error 說 LEs 不足....
/ W2 s6 J: n& `' F {/ K- ?
為什麼只要特別取某區段的資料時都會遇到這個問題呢
# E, Z/ S; m- J0 b- t
程式碼如下
; ]# R) a% Y* C8 T& ]5 S
ram_data已經存取1024點資料
: m% O6 Q! m# r2 r9 c$ f: q- M
, n3 W( L; S( R3 e' t$ C
always@(posedge clk or negedge reset)
$ j+ o v8 X7 p, F0 p' y
begin
" S8 c/ `* E# D! s4 m8 f( N
count_L1<=10'd1;
+ M9 w7 X+ u4 \" y2 n
L1_addr<=10'd0;
& b0 K% h3 I# o
if (reset ==1'b0)
. t/ E/ Q+ Q; z2 C2 X2 f- N
begin
6 a+ a" r) d$ ~. _3 t8 P& e
count_L1<=10'd1;
5 D# _* R. D$ p" _4 W
L1_addr<=10'd0;
4 A( y7 N* R: _- ~6 b- j
end
0 M _! w X( F+ i3 t- q/ x
else if(start_fft_flag == 1'b1)
" }( b6 X* x7 [& K5 ?+ K0 t
begin
b+ Q7 I. R) U. g4 t& `
realdata_L1ain <= ram_data[L1_addr]; // 0~512的數值傳到realdata_L1ain
8 K& x) }" ]& E2 ^4 x
realdata_L1bin <= ram_data[L1_addr+512]; //513~1024的數值傳到realdata_L1bin
1 N8 `1 m; Z' b; @
count_L1 <= count_L1+1'b1;
1 ` d; n$ m+ O# j4 s8 A
L1_addr <= L1_addr+1'b1;
6 X* N- ?: [4 j
if(count_L1==10'd513)
( t7 m( w" q/ Q
begin
, Q, A6 l2 z: B+ }2 ^
count_L1<=10'd1;
" M: i7 \8 _, N- J- c
L1_addr<=10'd0;
8 A: g' M2 i$ `8 r y7 Q8 }2 G# C6 n
end
- ~6 b% [ n+ m
end
9 y9 d$ Y( {; d
end
作者:
eric994
時間:
2012-8-31 01:59 PM
你的寫法不對,這樣合不出block ram
$ `( q! ~, k+ ?( ?7 u/ J
不能同時做這兩行
- c$ P$ a9 y$ |' w
realdata_L1ain <= ram_data[L1_addr];
' K2 I9 o$ G6 k v+ l7 E0 }# C, o
realdata_L1bin <= ram_data[L1_addr+512]
8 Z' ~1 U! p7 l3 M7 \3 m" m3 o i
當合不出Block ram時
7 s# \8 S! p4 N* I
tool就會用LE去合,想當然而,一定不足的
作者:
michael6172
時間:
2012-9-11 11:36 AM
如果你硬要這樣取值的話,把RAM 拆成兩顆就可以了
歡迎光臨 Chip123 科技應用創新平台 (http://www.chip123.com/)
Powered by Discuz! X3.2