Перейти к содержанию
    

FAQ по языкам описания аппаратуры

Но столкнулся с проблемой, что меняя индексы строки т.е проводя записи в memory(0, 0) , memory(0, 1) memory(0, 2) итд. у меня данные пишутся только по адресу memory(0, 0).
Код покажите.

 

Ну и второй вопрос.

А каким образом можно аналогичный массив создать (чтобы можно было обращаться к данным по адресу строки и столбца) в неситезируемом подмножестве VHDL, для минимизации вычислительных ресурсов.

От массива никуда не уйти всё равно. Для минимизации ресурсов используйте переменную, а не сигнал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вроде разобрался в проблеме !

Проблемой оказалась то, что у меня адрес из типа std_logic_vector конвертировался в тип integer.

Но в векторе адреса у меня присутствовали безразличные значения. И при конвертации в integer из -за этих безразличных значений integer всегда оставался нулем.

Например:

Есть шина адреса

addr : in std_logic_vector(3 downto 0)

В моей модели памяти данная шина мультиплексированная (модель SDRAМ потому-что)

Поэтому адрес фактически у меня передавался за 2 этапа.

В первом этапе у меня декодировался адрес строки.

Потом декодировался адрес столбца.

row_addr <= to_integer(unsigned(A)); -- к примеру адрес строки  b"1111" т.е 15 
col_addr <= to_integer(unsigned(A)); -- А в случае столбца адрес выглядел так:  b"--11" т.е 3. Т.е первые 2 бита безразличны.

Из-за безразличных значений адрес столбца всё время декодировался как 0...

Буду теперь внимательнее быть :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, а можете объяснить в чем особый смысл применения типа record в VHDL ?

Ну да, удобно когда вместо кучи выходных\входных портов - применяется готовый тип.

Но за это мы платим ухудшением читаемости кода. Во всяком случае мне такой код понимать сложнее.

Более того разрядность векторов такого типа не всегда можно настраивать параметрами.

Нпример если я в пакете обьявлю такой тип, то в пакет я не могу передать параметры с модуля верхнего уровня (во всяком случае Quartus 13.1 не поддерживает эту фичу VHDL 2008)

Читал статью http://www.gaisler.com/doc/vhdl2proc.pdf и др. Но как-то не впечатлило... Если не сложно поделитесь пожалуйста примерами, когда применение типа record оправдано и позволяет упростить код и улучшит его читаемость.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, столкнулся с некоторым неудобством при работе с "безразличными" значениями.

В VHDL есть так называемые безразличные значения, которые дают подсказку синтезатору, что нам все-равно какое значение у сигнала, что позволяет более корректно описать поведение схемы, и дает больше свободы для синтезатора, например:

...
constant  dont_care : std_logic_vector(31 downto 0) := (others => '-');
signal    a         : std_logic;
signal    b         : std_logic_vector(31 downto 0);
signal    c         : natural range 0 to 511;
...

a <= '-';                             -- Присваиваем сигналу а безразличное значение. 
b <= (others => '-');                 -- Присваиваем вектору b безразличное значение. 
c <= to_integer(unsigned(dont_care)); -- Присваиваем числу   c безразличное значение. 

...

Но неудобство возникает, когда есть сигнал типа integer/natural.

Т.к для того, чтобы ему присвоить безразличное значение приходится объявлять константу, содержащую безразличное значение. И через преобразования типов присваивать эту константу. Жить конечно можно. Но не очень удобно.

А по-другому никак не присвоить такое значение для типа integer. Во всяком случае у меня не получается...

Как можно по-другому присвоить безразличное значение для integer ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...