Chip123 科技應用創新平台

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

作者: w10789173    時間: 2008-3-7 06:34 AM
標題: 記憶體問題
各位VHDL高手們,小弟寫了個6 X 64的記憶體,不過我試用實際的硬體電路來思考,並非使用軟體陣列的方式,如下:' `+ P$ i8 ^% a3 N7 P3 H% Z
我設計了一個decoder for column address selection,一個decoder for row address selection,然後使用generate產生64個latch陣列,但是現在我不知道該如何指定我的腳位,懇請各位給點意見,謝謝!3 I7 ^5 Y8 I0 q+ \
* F- H# x0 n, x- T6 A* _" @& w
LIBRARY ieee;
/ `2 ?4 J' D$ SUSE ieee.std_logic_1164.all;8 g8 i6 D6 }" N, z3 E# G1 f6 w
USE ieee.std_logic_arith.all;
0 `- M3 h! [, ~" I4 `1 p8 B
; r2 }* W$ F0 E  L5 i, C+ P. qENTITY memory_64 IS
6 b( Z# B8 E5 t1 o   PORT(
, S" ~4 |: I3 a' x# d      mem_in   : IN     std_logic_vector ( 5 DOWNTO 0 );, K, g% h0 C3 |
      mem_out  : OUT    std_logic_vector ( 5 DOWNTO 0 );- M) C8 A# C8 T4 ^" |0 _
      clr_l    : IN     std_logic;: t  v8 t( ]; l
      mem_addr : IN     std_logic_vector ( 5 DOWNTO 0 )
0 C  M# \& L4 W   );
2 r6 w  s( G/ ~) g& R5 ?6 {. q. V9 q  c3 g
-- Declarations: C" D0 y6 M8 k( O
4 {9 c, M: b0 F
END memory_64 ;
$ T5 j% o/ q4 R% [# C# O3 \/ j2 e+ z" V6 @0 W( {% `# I- ?0 u1 H0 q
--
0 _! ~' ?5 D  o1 NARCHITECTURE arch OF memory_64 IS
3 ~: W$ G* G. B4 A  X7 h+ `1 p% |# x-- column decoder
! ~2 j6 ^0 N5 l  \component mem_coldec' i1 D. {5 ]5 w3 q# i
   PORT(
; `/ R$ y9 b' b# G2 d2 f: B; u      col_addr : IN     std_logic_vector ( 2 DOWNTO 0 );4 u8 N! z: R2 B- C- U
      col_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 ), W# j' f; Y$ _/ D& n& u4 O3 f2 |
   );7 `( d0 P! E7 U7 d- B
end component;. ?7 S2 j# R( ~
-- row decoder) l, i6 g0 j5 Y# D
component mem_rowdec
9 Z- }0 q( s( b8 I   PORT(
; `! A! J" p- c, b      row_addr : IN     std_logic_vector ( 2 DOWNTO 0 );3 J5 c$ `: H' _! q
      row_sel  : OUT    std_logic_vector ( 7 DOWNTO 0 )
7 ^+ f0 d/ @' Z& A* q0 H   );
8 t" t7 Q0 a2 }+ b; |8 O, Z( A; F8 iend component;   
4 F4 A+ Q0 h  X9 k-- latch array   $ B6 h% N: U. B- i( q/ j
component latch_cell
/ S- K, q) s" d8 i) e     PORT(
2 X0 a- ?7 W8 [, R! G        clr_l    : IN     std_logic;
5 R: u( p% y( R  F) W        col_sel  : IN     std_logic;! g9 H: G. B4 \8 n
        row_sel  : IN     std_logic;        5 }1 D. h0 T/ c9 K" h  J( g
        data_in  : IN     std_logic_vector ( 5 DOWNTO 0 );: n( r% B6 d5 ~0 q! {
        data_out : OUT    std_logic_vector ( 5 DOWNTO 0 )
0 @: c- k) w2 p0 l! F: w7 b     );* Q7 V0 Y4 W) X! l
end component;   
; J( ^' S4 d+ t% K/ A
- i( O+ J$ X; fsignal smem_out : std_logic_vector ( 5 downto 0 );
, p& H' T$ x: s& r( Wsignal scol_sel,srow_sel : std_logic_vector( 7 downto 0 );
* a6 S2 |/ F1 c1 H' x; MBEGIN
+ Z) W' o% S6 M) F8 t( a  u_0 : mem_coldec port map(mem_addr( 5 downto 3 ),scol_sel);+ z. V+ w  }/ E5 h: g
  u_1 : mem_rowdec port map(mem_addr( 2 downto 0 ),srow_sel);
* }; J& \2 b) t! |% E( s  g0 : for i in 0 to 7 generate -- column generate
% o6 K9 k$ y/ g    g1 : for j in 0 to 7 generate -- row generate
6 h# n. a% i( \3 K, n         u_2 : latch_cell port map(clr_l,scol_sel(j),srow_sel(i),mem_in,smem_out);
4 i% A7 f' t) |9 {    end generate;& ?- ?- ~, z0 W
  end generate;
( T' o0 I* p* \# R" \+ x9 i& ~END ARCHITECTURE arch;
作者: addn    時間: 2008-3-7 11:27 AM
您好
1 s5 |( P) S$ u不用將address分成row跟column' q7 d0 m- s6 d% \
這樣只是將問題複雜化而已. ]( A2 P) Y0 O6 ~5 B2 |7 O6 z
你可以想成有64個6 bit的暫存器,來組成你要的ram- h6 W& Y/ O9 q

0 y. W+ n2 K8 p7 V. ^6 B用陣列寫法,code比較簡潔,建議使用! g  B& V4 u5 M# ]2 Q: S5 R
以下有範例,請參考1 i5 e$ o* K7 D* T
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
您好
- H. N% |2 A. v* u% w: Y$ G不曉得你為甚麼要捨近求遠
! y0 b) z1 |& q( _  k8 j2 Q可以說說這麼做的原因嗎?
* Y' p0 w; M  f% U4 n! r' e還有這是要做甚麼樣子的應用* @9 y: _& }* b4 q$ G
謝謝
作者: w10789173    時間: 2008-3-12 11:02 PM
標題: 記憶體問題
我只是試著把FPGA規劃成一顆RAM, W' t( W! j$ j

2 U0 c$ n/ M% G8 j) ]沒有什麼特別的啦^^...




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