реклама на сайте
подробности

 
 
10 страниц V  « < 8 9 10  
Reply to this topicStart new topic
> FAQ по языкам описания аппаратуры
andrew_b
сообщение Jan 23 2018, 05:51
Сообщение #136


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Flip-fl0p @ Jan 22 2018, 16:32) *
Но столкнулся с проблемой, что меняя индексы строки т.е проводя записи в memory(0, 0) , memory(0, 1) memory(0, 2) итд. у меня данные пишутся только по адресу memory(0, 0).
Код покажите.

Цитата
Ну и второй вопрос.
А каким образом можно аналогичный массив создать (чтобы можно было обращаться к данным по адресу строки и столбца) в неситезируемом подмножестве VHDL, для минимизации вычислительных ресурсов.
От массива никуда не уйти всё равно. Для минимизации ресурсов используйте переменную, а не сигнал.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 23 2018, 05:53
Сообщение #137


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Вроде разобрался в проблеме !
Проблемой оказалась то, что у меня адрес из типа 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.gif
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Jan 25 2018, 06:36
Сообщение #138


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Господа, а можете объяснить в чем особый смысл применения типа record в VHDL ?
Ну да, удобно когда вместо кучи выходных\входных портов - применяется готовый тип.
Но за это мы платим ухудшением читаемости кода. Во всяком случае мне такой код понимать сложнее.
Более того разрядность векторов такого типа не всегда можно настраивать параметрами.
Нпример если я в пакете обьявлю такой тип, то в пакет я не могу передать параметры с модуля верхнего уровня (во всяком случае Quartus 13.1 не поддерживает эту фичу VHDL 2008)
Читал статью http://www.gaisler.com/doc/vhdl2proc.pdf и др. Но как-то не впечатлило... Если не сложно поделитесь пожалуйста примерами, когда применение типа record оправдано и позволяет упростить код и улучшит его читаемость.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Apr 4 2018, 06:06
Сообщение #139


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Господа, столкнулся с некоторым неудобством при работе с "безразличными" значениями.
В 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 ?
Go to the top of the page
 
+Quote Post

10 страниц V  « < 8 9 10
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th April 2024 - 13:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016