vetal 0 23 декабря, 2005 Опубликовано 23 декабря, 2005 · Жалоба МПА и/или FSM! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgeniy_s 0 23 декабря, 2005 Опубликовано 23 декабря, 2005 · Жалоба Сдаеться мне что афтор путает пведенческое описание и синтезируемой подмножество. Да еще и пытаеться сделать все с "наскока". Настоятельно рекомендую все забросить взять книгу HDL Chip Design и пока ее не изучите (3-5 дней) к работе не прикасаться. Узнаете много нового и критически оцените ваш дезайн Абсолютно согласен с des00. Уважаемый Duke, ну один, ну два листинга ещё проанализировать можно, а дальше, Вы что же будете продолжать нас кормить этими исходниками, да ещё всё большего и большего размера? Действительно почитайте книги. У нас на форуме, в соответствующем разделе, я выложил достаточное количество книг по VHDL в открытом виде, причём некоторые на русском языке - не ленитесь, потратьте пару дней и почитайте их - это полезно. А уже потом, если остануться вопросы - пишите, поможем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexandr 0 23 декабря, 2005 Опубликовано 23 декабря, 2005 · Жалоба COMPONENT alg PORT ( y : in std_logic_vector (11 DOWNTO 0); clkk : in std_logic; x1 : out std_logic_vector (11 DOWNTO 0); x2 : out std_logic_vector (11 DOWNTO 0) ); END COMPONENT; Откуда взялись Х1 и Х2. Компонент alg был ранее описан как entity alg is Port ( y : in std_logic_vector(11 downto 0); clkk: in std_logic; x : out std_logic_vector(11 downto 0) ); end alg; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dukenev 0 25 декабря, 2005 Опубликовано 25 декабря, 2005 · Жалоба Спасибо за разъяснения! понял свои ошибки, просто не так всё быстро понимаю как надо т.к. по специальность я механик а тут на тебе для дела с этим надо рабираться, тяжело когда не электрик, а пытаюсь решить исходя из знаний программирования! Ошибки в коде до просто опечатка т.к. код модернизировал и проверял и забыл вернуть обратно. Больше кода и листингов таких не будет! Вот вопрос код для инициализации значений ячеек памяти --synopsys translate_off generic( init_00: bit_vector:=X"1111111111111111"; init_01: bit_vector:=X"1111111111111111"; ); --synopsys translate_on располагать в ентити или где (у меня Ксилинкс 5.2 и загрузку данных из файла не поддерживает) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgeniy_s 0 25 декабря, 2005 Опубликовано 25 декабря, 2005 · Жалоба Уважаемый Duke, вся инициализация должна проходить по сигналу RESET, надеюсь он у Вас есть в системе. Инициализация в каком-то другом месте, кроме области действия сигнала RESET, является плохим стилем проектирования, и может вызвать ошибки при синтезе и/или разводки схемы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dukenev 0 25 декабря, 2005 Опубликовано 25 декабря, 2005 · Жалоба evgeniy_s в теле модуля памяти я его написал правда на схеме у отвда памяти RST ничего не подведено, т.е. я так понял что в коде писать не надо система сама сбрасывает её. добавление кода -- generic ( INIT_00 : bit_vector := X"11111111111111111111111111"; INIT_01 : bit_vector := X"11111111111111111111111111"; INIT_02 : bit_vector := X"11111111111111111111111111"; INIT_03 : bit_vector := X"11111111111111111111111111"); -- не выдаёт ошибок всё синтезируется а вот в модел симе я сразу пытаюсь считать занчения начиная с 0-го адреса и выдаёт все нули. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
evgeniy_s 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Уважаемый Duke, Вы бы почитали какой-нибудь мануальчик по работе с блочной памятью или хотябы просто с памятью, можно даже что-нибудь из документации к вашему Xilinx'у, а то у Вас какое-то странное представление о памяти. Это регистры надо "обресечивать", а динамическую память не надо. Вообще под ресетом памяти подразумевается всего лишь перевод внутреннего выходного мультиплексора в определённое состояние (например, на Virtex II Pro на выходе Block SelectRAM появляется значение константы SRVAL="0101"), при этом содержимое памяти не меняется. Поэтому и сигнала "RESET" как такового в памяти нет, а есть сигнал Synchronous Set/Reset (SSR) - синхронный сброс, по активному уровню которого при наличие фронта тактового сигнала, происходит описанное выше действие. Не знаю, что за память у Вас, но думаю, что она должна работать примерно также. Если Вы конечно не путаете её с каким-нибудь регистровым файлом, который действительно надо обресечивать. P.S. Поскольку всё вышесказанное является стандартом при работе с оперативной памятью (да и не только с ней), то Вам следует знать, что для определения состояния памяти существует механизм флагов. В самом простом случае это один флаг V (Valid) - действительность данных, который выставляется в случае записи блока данных в соответствующую ячейку памяти и информирует всех, что данный блок можно использовать (естественно количество флагов зависит от вашего разбиения памяти на ячейки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dukenev 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Уважаемый evgeniy_s В тех примерах что вы давали я полностью разобрался и в теории тоже немного. Всё работает записываю и считываю из памяти нормально. Просто щас я пытаюсь утановить значения ячеек памяти как указанов в книге (Основы ПЛИС Xillinx Зотов В.Ю.) и там сказано что для инициализации содержимого памяти нужно указать параметр generic ( INIT_00 : bit_vector := X"11111111111111111111111111"); Просто чем дольше я с ней работаю тем больше пухнет голова уже. Мнебы просто пример рабочий память с выставленными начальными значениями её ячеек (любые значения) и вопросов у меня не будет точно. Я наверно просто не правильно выражаюсь т.к. пытаюсь выразится с точки зрения программирования а не электроники. Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Dukenev 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба О ввеликий метод тыка! Спасибо всем за консультации хоть я и не научился вручную инициализировать память! Зато случайно вместо того что я ломал голову как присоединить VHDL файл корегена сгенерированного оказалось что просто надо присоединять к проекто .xco файл и пока всё работает как надо! Но если посоветуете как вручную без корегена инициализировать значения памяти то буду очень признателен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alexandr 0 26 декабря, 2005 Опубликовано 26 декабря, 2005 · Жалоба Если память (моя а не ПЛИС :) ) не изменяет, то помимо прописанного generic(INIT_00...) в entity необходимо прописать еще generic map(...) вместе с port map при подключении компонента памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться