Chip123 科技應用創新平台

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

作者: w10789173    時間: 2008-3-7 06:34 AM
標題: 記憶體問題
各位VHDL高手們,小弟寫了個6 X 64的記憶體,不過我試用實際的硬體電路來思考,並非使用軟體陣列的方式,如下:8 S6 ~2 T: J7 Z
我設計了一個decoder for column address selection,一個decoder for row address selection,然後使用generate產生64個latch陣列,但是現在我不知道該如何指定我的腳位,懇請各位給點意見,謝謝!
0 q0 M  ^6 Q0 `7 |$ D8 P+ g
6 N$ O- g  E8 z) [3 zLIBRARY ieee;+ ?% Y( ^0 j4 a1 ]
USE ieee.std_logic_1164.all;
! D6 O" p: F1 o7 C, Y  oUSE ieee.std_logic_arith.all;
* d$ p4 o$ c/ L
' U4 S& {3 K. ^2 jENTITY memory_64 IS
+ o  u/ C' w. l+ h  w   PORT(
) d7 J7 s( D6 Q* m  ?6 J3 Z      mem_in   : IN     std_logic_vector ( 5 DOWNTO 0 );" x8 n( f( N) y+ |" x) O0 ]% t0 s
      mem_out  : OUT    std_logic_vector ( 5 DOWNTO 0 );; A. q. b" C# J* x9 z4 [1 x
      clr_l    : IN     std_logic;. `) n! o; V. X+ p6 f$ n$ a/ ~
      mem_addr : IN     std_logic_vector ( 5 DOWNTO 0 )
; E! L, T3 Q9 `& e; @( J: Z' ]   );. @2 k! g0 t( J' J' f

% A/ k5 J* s. @-- Declarations
9 m  b! r, ^! G8 ?$ R) ]; b7 E# n
END memory_64 ;
/ E6 W" b2 ~- |
' u9 b  N8 y+ T' k/ o% M0 |--
  g/ N0 K# p5 E) [6 \& P2 mARCHITECTURE arch OF memory_64 IS
& m  f/ H8 V7 j-- column decoder
6 S8 b* P! ~% S7 m( ycomponent mem_coldec
$ p( [  R6 m7 {5 R) |( e% A   PORT( ; `) F( d+ y% L
      col_addr : IN     std_logic_vector ( 2 DOWNTO 0 );
6 y- m/ n& ^, E      col_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 )
9 f. ]' K  H3 b   );
- Y4 [) O3 ^6 B& r# L& hend component;$ ]" i/ H) c8 A
-- row decoder7 |! W- O4 @1 g& ^( m6 a; W
component mem_rowdec
4 T5 e) h( t3 z8 y6 H& L   PORT(
- L6 s  R* F; }! K" }# i* j      row_addr : IN     std_logic_vector ( 2 DOWNTO 0 );
4 W1 o- a, ]3 @. _. b      row_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 )
% c+ ]* _) }, W) ~   );
1 x1 \; m0 ?5 n' @5 |3 u- qend component;   + |. \% f8 h+ `) n4 s
-- latch array   
5 P& T3 u8 s+ m2 [: y$ ?3 @component latch_cell5 C0 K' R# g  w6 H; h8 K+ O* R
     PORT( + B9 ?3 }/ O4 V# X! h0 r
        clr_l    : IN     std_logic;9 S! O! _' w/ s3 q: M8 _. _
        col_sel  : IN     std_logic;. I$ V" ~4 [( n
        row_sel  : IN     std_logic;        
' M& s: K- K7 k. W' U5 E' T        data_in  : IN     std_logic_vector ( 5 DOWNTO 0 );
' a* Q* S. ~8 T8 q% ?3 Z: b* L        data_out : OUT    std_logic_vector ( 5 DOWNTO 0 )
9 N" {$ M( X; `3 J, i) [8 O6 R     );* L0 L( d% l0 S) a+ c; ~
end component;    , X! H/ v+ n+ y3 ]. h% n  O# O1 T" Y

) R4 Q" R" I5 Y9 d' _signal smem_out : std_logic_vector ( 5 downto 0 );) w' ^7 O) Z6 d: ?' D+ T
signal scol_sel,srow_sel : std_logic_vector( 7 downto 0 );% v$ U1 ]0 n+ Y, A! F
BEGIN
' Q- e+ O; Y7 o7 j# O$ R  u_0 : mem_coldec port map(mem_addr( 5 downto 3 ),scol_sel);
  D) u% @; b8 Z. z( l  u_1 : mem_rowdec port map(mem_addr( 2 downto 0 ),srow_sel);2 c0 ~# H- c, H0 m* t
  g0 : for i in 0 to 7 generate -- column generate
3 A+ E, l! ]9 K( j/ y    g1 : for j in 0 to 7 generate -- row generate/ ?7 ]( ]" L8 I; S( u8 `1 p
         u_2 : latch_cell port map(clr_l,scol_sel(j),srow_sel(i),mem_in,smem_out);( h; c# e6 e: c2 R: F6 R
    end generate;; S$ R0 T6 C2 N4 m7 `4 d  X, {
  end generate;4 V& w- H" C2 R4 k
END ARCHITECTURE arch;
作者: addn    時間: 2008-3-7 11:27 AM
您好
3 [+ |3 U  l  N) U0 E" P不用將address分成row跟column
% {9 Q5 @, M) F( _5 K4 M/ K這樣只是將問題複雜化而已- L; f8 }' t" y9 Y8 m' t$ a
你可以想成有64個6 bit的暫存器,來組成你要的ram
( r0 p7 k9 s- b4 Y# u7 t
# z. x7 U: D7 R1 y" i7 O" ?( X& R. K用陣列寫法,code比較簡潔,建議使用
8 ~$ H1 h% w& U" Y3 N以下有範例,請參考/ I* O9 f% \: z2 s
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
您好3 L5 y; R% W6 A8 k, G
不曉得你為甚麼要捨近求遠9 l- F) A8 L6 j5 \( P: q4 {1 Y
可以說說這麼做的原因嗎?
3 R* |; X) }. w& C- ]0 ?還有這是要做甚麼樣子的應用5 k  B& K1 j8 f; G
謝謝
作者: w10789173    時間: 2008-3-12 11:02 PM
標題: 記憶體問題
我只是試著把FPGA規劃成一顆RAM
4 P1 Y: E. Z8 N" b" a; |! S8 P4 K7 H  z
$ g8 q6 p; R8 Q: ^3 X沒有什麼特別的啦^^...




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