Mega Function Wizard로 구현한 LPM_RAM_DQ의 동작...


 

ALTERA의 Mega Function Wizard는 매개변수화되어 있고 대상 Programmable Device 구조의 효율적인 사용을 위하여 최적화 및 사전 검증된 IP 블록을 쉽게 생성시켜주는 도구입니다...  Mega Function Wizard를 사용하면 설계자는 일반적인 기능을 또 설계할 필요 없이 더 많은 시간과 노력을 시스템 레벨의 제품을 개선하고 차별화하는데 전념할 수 있습니다...  또한 Mega Function Wizard는 기존 HDL (Hardware Description Language) 설계를 포함한 모든 PLD (Programmable Logic Device) 설계 방식을 지원합니다...  복잡한 시스템 구조를 구현할 경우에 이미 만들어져 있는 IP를 사용함으로써 설계 시간을 단축할 수 있습니다...

이러한 Mega Function Wizard에서 제공되는 메모리관련 IP의 종류는 LPM_RAM_DP, LPM_RAM_IO, LPM_RAM_DQ 이렇게 3종입니다...  그중 LPM_RAM_DQ는 Single Port Memory를 의미하며, 여기서는 바로 이LPM_RAM_DQ의 동작방법에 대해 간략히 설명을 합니다... (2000.5.15)

아래 그림은 APEX 20K Device에서 제공하는 LPM_RAM_DQ의 구조입니다...

그림에서 보이는 것처럼 2Kbit의 Memory주변에 배치된 Flip Flop의 활용 방법에 따라 순수 비동기식 Memory 혹은 동기식 Memory로서 활용이 가능합니다...

아래의 그림은 MAX+plus II 혹은 Quartus S/W의 MegaWizard Plug-In Manager에서 LPM_RAM_DQ Module을 선택하였을 때 나오는 입출력 특성을 정의하는 선택항목 화면입니다...  "Address"의 Width와 Data Output인 "Q"의 Depth를 정의하는 항목과, 각각의 입출력에 대해 Clock과의 동기맞춤을 선택할 수 있는 "Which ports should be registered?"라는 선택항목이 있습니다...  "Which ports should be registered?" 부분에서 선택된 항목들은 해당Pin으로 Data가 들어오거나 나갈 때 항상 Clock에 동기가 되어 움직입니다...  아래 그림에서는 모두 선택이 되어있는 상태를 나타냅니다...  기본적으로는 'q' output port는 선택이 되어있지 않습니다...

위의 선택 사항으로 LPM_RAM_DQ를 생성하면 다음과 같은 동작을 합니다...

  • "we"가 High일 경우 Write, Low일 경우 Read...
  • 'data'와 'address[7..0]'는 "inclock"에 동기가 맞추어 동작...
  • 'q[7..0]'만이 "outclock"에 동기가 맞추어 동작...
  • "Wirte"동작 뿐만아니라 "Read"동작도 "inclock"과 연계되어 움직임...
  • "outclock"은 단지 'q[7..0]'의 출력에만 연관...  ("we"가 Low일 때, "inclock"에 맞추어 'address[7..0]'에 값이 주어지면, 해당 번지의 data가 'q[7..0]' 출력 레지스터 앞단까지 출력이 되고, "outclock"에 맞추어 실제 'q[7..0]'으로 data가 출력됨...)

아래의 파형은 위에서 설명한 내용의 이해를 돕고자 "inclock"과 "outclock"을 여러 조건으로 바꿔보면서 Quartus S/W에서 Function Simulation한 결과입니다...

여기까지가 LPM_RAM_DQ 동작에 대한 간략한 설명입니다...  Block Diagram과 Function Simulation결과를 비교해서 보시면 도움이 되시리라 생각됩니다...

  Send to a colleague | Print this document