Помощ в SRAM блок?

D

dcreddy1980

Guest
Не знам къде съм сгрешил в следния код, когато се симулира
код ... аз съм се RWD <= "ÛÛÛÛÛÛ" в Waveform резултати ....

SRAM лице е
порт (CADDR: в std_logic_vector (3 downto 0);
RADDR: в std_logic_vector (6 downto 0);
RWD: Inout std_logic_vector (15 downto 0);
BNKSEL: в std_logic;
RDCAS: в std_logic;
WRCAS: в std_logic;
DTRDY: Няма std_logic);
края SRAM;

архитектура поведението на SRAM е
започвам
процес (BNKSEL, RDCAS, WRCAS, CADDR, RADDR, RWD)
подтип ПТУ е std_logic_vector (15 downto 0);
тип memory_array е Array (число от 0 до 127, число от 0 до
15 );--- 128 редове и колони 16
променлива Mem: memory_array;
започвам
IF (BNKSEL'event и BNKSEL = '1 '), тогава
IF (RDCAS = '1 '), тогава
RWD <= кор (conv_integer (грозен (CADDR)), conv_integer (грозен (RADDR)));
DTRDY <= '1 ';
крайна сметка, ако;
IF (WRCAS = '1 '), тогава
кор (conv_integer (грозен (CADDR)), conv_integer (грозен (RADDR))): =
RWD;
DTRDY <= '0 ';
крайна сметка, ако;
крайна сметка, ако;
край процес;
края поведение;TESTBENCH:
------------

лице е tb_SRAM
края tb_SRAM;

архитектура на tb_SRAM е TB
компонент SRAM
порт (CADDR: в std_logic_vector (3 downto 0);
RADDR: в std_logic_vector (6 downto 0);
RWD: Inout std_logic_vector (15 downto 0);
BNKSEL: в std_logic;
RDCAS: в std_logic;
WRCAS: в std_logic;
DTRDY: Няма std_logic);
края компонент;
RDCAS сигнал, WRCAS, DTRDY, BNKSEL: std_logic;
сигнал CADDR: std_logic_vector (6 downto 0);
сигнал RADDR: std_logic_vector (3 downto 0);
сигнал RWD: std_logic_vector (15 downto 0);
започвам

Uut: SRAM пристанище карта (CADDR, RADDR, RWD, BNKSEL, RDCAS, WRCAS, DTRDY);

CADDR <= "0010010";
RADDR <= "0010";
RWD <= "0001000100010001";
BNKSEL <= '0 ', '1', след 8 NS, '0 ', след 16 NS, '1', след 24 NS, '0 ', след 30
NS;
RDCAS <= '0 ', '1' след 26 NS, '0 ', след 34 NS;
WRCAS <= '0 ', '1' след 10-NS, '0 'след 18 NS;

края TB;

 
Сигурни ли сте, код Ур е събиране на чисти???
Аз съм се компилация за грешка в следния ред код!

тип memory_array е Array (число от 0 до 127, число от 0 до 15);Защо се опитваш да се използват два мерен масив за памет!
Само един масив измерение е достатъчно!

Можете да получите безплатно Sarm VHDL модели от SRAM manufaturers
търсене в Мрежата получите тон на модел за изследване!

 
Аз съставила код в NC-Сим ... аз не получи никаква грешка компилация ...

Имам нужда да се използва матрица с памет с 128 редове и колони, 16 .. поради тази причина .. аз съм като се използват две-мерен масив ..с уважение,
dcreddy1980

 
Здрасти,

Това е нормално за вас, за да "Е" в симулация, тъй като паметта масив сте
създаването не се инициализира.

 
Здрасти,
Опитах се и промяна на кода, за да го компилирани.Сега си съставяне и даване на правилното резултати.Все още кодиране стил не е ефективно и достатъчно, за да бъдат призовани като SRAM.Вие трябва да имате Данните за ПИН кода, както добре.Почти всеки чип изисква Power-On нулиране, където ще инициализира всички необходими сигнали.
Причината, поради която сте били Първи "U" е в основите на VHDL, както и SRAM.As SRAM has same data-bus for read as well as write, you need to force 'Z' from DUT on bus during write operation to allow external module to force data on bus (external module can be TB or Memory Controller).

Това е ясно посочено в листа SRAM данни, данни автобус ходи "Я" по време на операция пиша.Също така, след четене на данни автобус ходи "Z", след определено време, което е споменато в информационните листове за следващата операция да се даде възможност да бъдат изпълнени.
Що се отнася до VHDL сте били принуждава данни за RWD от DUT както и туберкулозата, така че е повече от един случай на водачи на сигнала.
Също така предлагам ви да използвате Име асоциация вместо позиционен асоциация за картографиране на пристанището, то помага в по-големи проекти.
виж промяна на кода по-долу: =

==============================================
БИБЛИОТЕКА IEEE;
ИЗПОЛЗВАНЕ ieee.std_logic_1164.all;
ИЗПОЛЗВАНЕ ieee.STD_LOGIC_arith.all;
ИЗПОЛЗВАНЕ ieee.STD_LOGIC_unsigned.all;SRAM лице е
порт (CADDR: в std_logic_vector (3 downto 0);
RADDR: в std_logic_vector (6 downto 0);
RWD: Inout std_logic_vector (15 downto 0);
BNKSEL: в std_logic;
RDCAS: в std_logic;
WRCAS: в std_logic;
DTRDY: Няма std_logic);
края SRAM;

архитектура поведението на SRAM е
започвам
процес (BNKSEL, RDCAS, WRCAS, CADDR, RADDR, RWD)
подтип ПТУ е std_logic_vector (15 downto 0);
тип memory_array е Array (число от 0 до 127, число от 0 до 15) на TMP; --- 128 редове и колони 16
променлива Mem: memory_array: = (другите => (другите => (другите => '0')));
започвам

IF (BNKSEL'event и BNKSEL = '1 '), тогава

IF (RDCAS = '1 '), тогава
RWD <= кор (conv_integer (грозен (RADDR)), conv_integer (грозен (CADDR)));
DTRDY <= '1 ';
в противен случай
RWD <= (другите => 'Z');
крайна сметка, ако;

IF (WRCAS = '1 '), тогава
кор (conv_integer (грозен (RADDR)), conv_integer (грозен (CADDR))): = RWD;
DTRDY <= '0 ';
крайна сметка, ако;

ELSIF (BNKSEL'event и BNKSEL = '0 '), тогава
RWD <= (другите => 'Z');
крайна сметка, ако;
край процес;
края поведение;
==============================================
- TESTBENCH:
--------------
БИБЛИОТЕКА IEEE;
ИЗПОЛЗВАНЕ ieee.std_logic_1164.all;
ИЗПОЛЗВАНЕ ieee.STD_LOGIC_arith.all;
ИЗПОЛЗВАНЕ ieee.STD_LOGIC_unsigned.all;

лице е tb_SRAM
края tb_SRAM;

архитектура на tb_SRAM е TB
компонент SRAM
порт (CADDR: в std_logic_vector (3 downto 0);
RADDR: в std_logic_vector (6 downto 0);
RWD: Inout std_logic_vector (15 downto 0);
BNKSEL: в std_logic;
RDCAS: в std_logic;
WRCAS: в std_logic;
DTRDY: Няма std_logic);
края компонент;
RDCAS сигнал, WRCAS, DTRDY, BNKSEL: std_logic;
сигнал CADDR: std_logic_vector (3 downto 0);
сигнал RADDR: std_logic_vector (6 downto 0);
сигнал RWD: std_logic_vector (15 downto 0);
започвам

Uut: SRAM пристанище карта (CADDR, RADDR, RWD, BNKSEL, RDCAS, WRCAS, DTRDY);

RADDR <= "0010010";
CADDR <= "0010";
RWD <= (други => 'Z'), "0001000100010001" след 22 NS, (други => 'Z') след 28-NS;
BNKSEL <= '0 ', '1', след 8 NS, '0 'след 16-NS, '1' след 24-NS, '0 ', след 32 NS, '1', след 40 NS, '0 'след 48-NS;
RDCAS <= '0 ', '1', след 6 NS, '0 'след 10 NS, '1', след 37 NS, '0 'след 43 NS;
WRCAS <= '0 ', '1' след 22 NS, '0 'след 28-NS;

края TB;
==============================================

Компилиране и Пусни го, проверете дали е пускането на своите цели.Чувствайте се свободни да публикувате всякакви въпроси.

С уважение,
Jitendra

 

Welcome to EDABoard.com

Sponsor

Back
Top