Chip123 科技應用創新平台

標題: 記憶體問題 [打印本頁]

作者: w10789173    時間: 2008-3-7 06:34 AM
標題: 記憶體問題
各位VHDL高手們,小弟寫了個6 X 64的記憶體,不過我試用實際的硬體電路來思考,並非使用軟體陣列的方式,如下:( K( [; j5 w0 |: l
我設計了一個decoder for column address selection,一個decoder for row address selection,然後使用generate產生64個latch陣列,但是現在我不知道該如何指定我的腳位,懇請各位給點意見,謝謝!
: M/ p& K/ N( H- b& g# E. \
4 R2 t. V  [+ n, w" y5 LLIBRARY ieee;$ s# w9 L% D0 Q( B* p1 N
USE ieee.std_logic_1164.all;8 `4 U9 x8 ~0 t  ?7 L
USE ieee.std_logic_arith.all;
4 c2 }) T3 X9 {0 Q' F1 I4 a7 u( C
ENTITY memory_64 IS! Z. o  o2 `  b0 q. f& d
   PORT( 6 \' V2 X; Q/ Q5 d/ D! A% g
      mem_in   : IN     std_logic_vector ( 5 DOWNTO 0 );
* a) F1 }& s2 E3 |% _" m      mem_out  : OUT    std_logic_vector ( 5 DOWNTO 0 );: d  Z2 O  @$ v9 }% ~
      clr_l    : IN     std_logic;0 a% c2 I# D& N- L( u8 }
      mem_addr : IN     std_logic_vector ( 5 DOWNTO 0 )+ M; b. v1 ?) X2 z8 ?2 g; A
   );' Z$ F, v' L8 I' k

6 ?) O1 c0 H! d8 L* [-- Declarations0 s  X7 Y6 f/ w& \
  C" Q- ~8 M8 N* }. t4 v5 f
END memory_64 ;
' q9 h) v. ^( j' h
6 \& Y6 G: e4 w) b$ V9 o8 `% p2 p--& k3 l8 B& V# N" a  w4 u
ARCHITECTURE arch OF memory_64 IS1 d; ]: A* A4 g8 j9 [2 s7 D: n6 P
-- column decoder( n% c6 T4 Z+ J6 s, k9 [
component mem_coldec9 e* d; O+ O- C8 J& H0 {
   PORT( * X9 D: l* M5 \
      col_addr : IN     std_logic_vector ( 2 DOWNTO 0 );
; Q7 @2 i8 _% J3 H( M6 k% c) T      col_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 )  W; h# t0 |3 o. i/ m8 Q
   );! Q! h- E* W+ ]3 K
end component;
" |2 y3 c2 Q5 b/ ?4 @" I-- row decoder" {) N: c/ P& J* j. [
component mem_rowdec7 O3 b' O  i: Q$ w' |+ @
   PORT( ; V/ Q3 {) O+ c4 ?
      row_addr : IN     std_logic_vector ( 2 DOWNTO 0 );2 ?9 X+ K( ?  I1 t5 L/ S- U/ J
      row_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 )' e' o2 |0 r/ J* Q: V4 W5 B
   );
5 R! Y# e3 {- c  ]7 ?, G! J* uend component;   ) B6 K! ^7 A. x2 Q. m- W- b- _( n
-- latch array   
  {! p5 r, R* T! icomponent latch_cell
& n; o# \& Q) L) \; u+ k/ ^2 [6 d- M     PORT(
  P/ n$ \+ u7 _& D- T        clr_l    : IN     std_logic;
' D) c  T$ f! f9 L        col_sel  : IN     std_logic;7 U, I. Q) c8 C# g1 R1 w7 j1 a2 q* e
        row_sel  : IN     std_logic;        
9 \1 |7 C7 g* V; c; g+ y        data_in  : IN     std_logic_vector ( 5 DOWNTO 0 );
2 ]2 }4 Y8 E  N  X        data_out : OUT    std_logic_vector ( 5 DOWNTO 0 )6 ?9 h( ^4 T% P# ^7 e) Y
     );+ _/ r' {/ J5 Y% G/ [
end component;   
2 ~% a. g7 w0 y; w8 l4 ?$ s2 o' ~% c
signal smem_out : std_logic_vector ( 5 downto 0 );
4 j& V. t3 m* ]' W, m* G1 t0 Qsignal scol_sel,srow_sel : std_logic_vector( 7 downto 0 );* U3 K. f' B; Z2 U5 w! q7 C% ?* h1 u
BEGIN# p4 m/ k% y- C- p4 i: h
  u_0 : mem_coldec port map(mem_addr( 5 downto 3 ),scol_sel);# s% w; @/ ~9 I' t
  u_1 : mem_rowdec port map(mem_addr( 2 downto 0 ),srow_sel);1 J9 ^- w0 ]  z
  g0 : for i in 0 to 7 generate -- column generate  B2 a; a( C7 }# [. Y$ \
    g1 : for j in 0 to 7 generate -- row generate% q5 s$ S; Y0 D
         u_2 : latch_cell port map(clr_l,scol_sel(j),srow_sel(i),mem_in,smem_out);
$ ?, X( R$ {; T1 W- b/ r    end generate;4 R' Q1 E4 H6 x9 x$ Y, I
  end generate;
1 ~8 ^+ D6 m! N+ _1 G( ]3 rEND ARCHITECTURE arch;
作者: addn    時間: 2008-3-7 11:27 AM
您好
* Q- a) L, [3 ?! W1 s  p不用將address分成row跟column
0 {/ B  f( f* |& A  O' y1 g) Z+ s這樣只是將問題複雜化而已) A+ c" r7 g/ C4 m. k7 c
你可以想成有64個6 bit的暫存器,來組成你要的ram
% C5 H+ I. H0 [1 B9 a; Z4 \3 t5 G- q
+ |" k1 P. z2 w) k/ s用陣列寫法,code比較簡潔,建議使用. y2 @* L* ~$ \9 V* k! [
以下有範例,請參考+ S2 o$ O5 ?+ r! W2 k
http://www.doulos.com/knowhow/vh ... s/simple_ram_model/
作者: w10789173    時間: 2008-3-7 12:30 PM
不行耶,這樣就好了,我就是要講將實際的RAM電路寫成VHDL,不過還是感謝你的提示,難道真的沒有人這樣子做過嗎?
作者: addn    時間: 2008-3-8 11:26 PM
您好
6 D6 f+ z; t) r( K* m* N不曉得你為甚麼要捨近求遠
) `. `5 K7 F0 A6 d, A8 P# n+ x可以說說這麼做的原因嗎?
$ V) r/ A; g! A4 i( @. z9 F還有這是要做甚麼樣子的應用' f! D1 [3 L  v; h2 R4 J
謝謝
作者: w10789173    時間: 2008-3-12 11:02 PM
標題: 記憶體問題
我只是試著把FPGA規劃成一顆RAM
! J' _! r+ _. e3 }. U2 ^+ P6 Q6 I/ L: e5 j  O: K
沒有什麼特別的啦^^...




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2