Chip123 科技應用創新平台

標題: 記憶體的迷思 [打印本頁]

作者: w10789173    時間: 2008-2-10 02:31 PM
標題: 記憶體的迷思
最近我被要求設計一顆的控制chip,其中裡面有RAM來暫存控制的指令
  m4 N7 K1 W1 Y8 t- Z7 F" h
1 l$ M4 W3 h- V! b" J! y但是蠻多的問題困擾著我,先說記憶體好了,要求RAM的基本架構如附圖' z* C# y- N5 C

: k: Z% @1 w4 W0 a( [8 W* Z但是用VDHL直接寫一個8 X 64的記憶體是很簡單的一件事,我不是很了解為什麼- R6 E6 ~1 E" v! c
9 Q7 {, y8 T7 z5 A1 S7 u# o
不直接用VHDL陣列方式寫一個RAM,為何要被要求先設計一個D-latch然後使用4 a( C) t! Y. R# s3 D

0 e2 g, R9 o3 n5 y2 Dport map的方式,再用generate語法成8 X 8個,然後設計column decoder與row decoder
" M1 e0 O& r+ \! J0 P% i
, [& k$ s) z+ F7 [,對我而言,這是一個笨方法,有點土法煉鋼,但是我不是很懂這兩種作法的差異...
# l. P* T9 c% t2 f- j8 ?$ _) j. \4 ^8 {- P3 C- Q
有哪位大大可以指導我嗎?我將非常的感謝...
作者: yhchang    時間: 2008-2-10 06:10 PM
標題: 回復 1# 的帖子
我的想法是/ L: @1 o' K  ?8 d4 q
如果你用VHDL陣列的方式做MEMORY
8 w' ^( {: f6 {8 u3 s1 V那就是純粹的 software access9 F8 ~. ?) v# c
而不是 hardware access; ^- r; U0 Q* [. u* _" k  X* j

3 v2 \6 m( }2 s( w0 H7 g7 }! c6 T0 n( I1 C6 E你有一個Memory array  但是你如果想要順利的讀寫它" ?3 j6 {# c/ `; v  V. |
首先 Controller 就要讀入 正確的 row address
9 j4 L4 d! t7 A, t9 fcolumn address,  還要讀入正確的 Command
2 b" X; L1 B6 O% _6 m這時候就需要Row decoder 與 Column Decoder的電路: v* g" I" N: W# T8 d$ [, b
才能夠解到 正確的那一個位置  W4 B% c  v8 e; \
這些 controller 電路與 Decoder 電路 都不可能在短期間內運算完- F' Y( R& [5 ^, i8 h- C

, R/ q) i1 g$ }" y其次 Memory Array 如果只是 64X8 那還算小2 ~8 h$ I# V; }$ Q  {: v6 v1 [
如果是 512K  16M , 256M ....etc 那就是一個巨大的Loading
- h9 ]. n7 D9 h( b5 t一條運送 讀寫Data 的 Line 會看到很重的負載. j! g  C- l( F. f3 o

! D) J3 E& ?6 C! x" y從Memory Cell 讀出來的訊號 會跟電子學的 Small signal 一樣小
6 j9 x' S6 o% l  e  W5 `6 W所以Memory Array中處處還得有 Sense Amp. 的電路存在
+ O7 @- ^0 v( h% n+ @才可以把小訊號放大成完整的 0與1 送到 XIO端
' d2 a4 U  ~+ g) ~3 I( LData 從sensing到訊號夠大到 運送到XIO PAD的過程同樣也需要花費一些時間.3 V4 J2 P3 x% Q

8 ^4 c* k4 y$ Z寫那麼多只是想說明
- Z' Z4 o* T4 g9 V' i" K0 w/ _4 Q# y! HVHDL 與 Verilog 都是硬體描述語言* R3 M4 `+ B3 X  D; m! K9 L
所以Memory 裡面當然要包含 Decoder電路  控制電路 甚至是電源供應的電路2 R+ X/ L0 ?9 n9 l6 O9 W$ {1 @% Q
並不是單純的軟體 N-Dimension 陣列,  可以用很快的速度去 Access 或Write  它.
1 {; `5 i# [/ x
9 p6 n. W! ^1 ^+ e% ?# Z' q[ 本帖最後由 yhchang 於 2008-2-10 06:12 PM 編輯 ]
作者: aiken    時間: 2008-3-9 04:07 AM
The answer is...you are now simulating a Hardware....but not software.
' x) n, I  [/ o) v! T' Z# GSoftware only see the "function"" j6 v& d: d7 b! S$ E
Hardware need to see Timing and function.
" h  l( q8 F! r3 b8 d' M
8 Q8 n0 M/ s0 _; ~9 PIf you use HDL's memory array, then your tools will help you design what they thinks is good for them...but not for your design..* s$ b  `" ]0 ^5 o; W9 G2 o1 B0 E
The result is ...the may make a very "stupid" design for you.
4 q. v( W  z; Y8 X& {* {. wE.g..you can use A*B to do the operation or you write your rtl code to make your fast multipler.! d7 y( C' D0 _$ c  B( G
That's the difference between computer Sci and computere engineer
作者: tommywgt    時間: 2008-3-11 12:18 PM
我想...
- ~' i( a$ l  D" m  T" I5 I/ W" R" C  N' x
寫成獨立的module是為了彈性
  U  G/ Y' X& I' a; b8 S3 F
% P  u2 |7 K; S1 s用D-latch寫是為了將來:  a: \6 h' A2 @  n
1) 做成ASIC時, 體積比較小
! J, t+ {6 o) e3 \5 a2) 如果需要大一點的RAM block時, 可以用RAM marco, 這時如果你的code相容性夠的話, 將來遇到時就好處理了




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