Golikov 0 12 июня, 2006 Опубликовано 12 июня, 2006 · Жалоба Блин, они ж закоментированы! - как они могут влиять на что-то? В этом вся фишка. За счет применения "synthesis read_comments_as_HDL on/off" этот код видит только квартус. это желание перехода от FPGA к ASIC, Флаг в руки:). Слов нет : "Сходи туда, не знаю куда. Сделай то, не знаю что." Вам необходимо выделить из схемы необходимые для работы синхронной памяти сигналы. Память обязательно вынести из схемы в самостоятельные единицы для синтеза! Элемент LCELL необходимо использовать только для управления упаковкой логических элементов в LUT, и НИКАКИХ задержек. Т.е LCELL(и ему подобных) в вашей схеме вообще не должно быть. Источником сигналов, используемых в качестве тактовых должны быть триггеры. а вот у меня тут вопрос организовался:)... а что такое ЛЦЕЛЛ в данном контексте? как управлять им упаковкой в ЛУТ, и как на нем организовывать задержки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
badwm 0 13 июня, 2006 Опубликовано 13 июня, 2006 · Жалоба а вот у меня тут вопрос организовался:)... а что такое ЛЦЕЛЛ в данном контексте? как управлять им упаковкой в ЛУТ, и как на нем организовывать задержки? LCELL - это такой стандартный компонент в кварусе, который никакой логики в себе не несет. Просто вход передает на выход, но, так как в железе на прохождение сигнала в любом компоненте требуется какое-то время, то, следовательно, выходной сиганла сдвигается относительно входного на небольшое время (порядка 3нс вроде). В нашем исходном проекте, чтоб организовать большую задержку, используется несколько последовательно соединенных lcell'ов (соответсвенно общая задержка будет равна 3нс*N, N-кол-во lcell'ов). А про ЛУТ я ничего не знаю:) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 июня, 2006 Опубликовано 13 июня, 2006 · Жалоба а вот у меня тут вопрос организовался:)... а что такое ЛЦЕЛЛ в данном контексте? как управлять им упаковкой в ЛУТ, и как на нем организовывать задержки? LCELL - это такой стандартный компонент в кварусе, который никакой логики в себе не несет. Просто вход передает на выход, но, так как в железе на прохождение сигнала в любом компоненте требуется какое-то время, то, следовательно, выходной сиганла сдвигается относительно входного на небольшое время (порядка 3нс вроде). В нашем исходном проекте, чтоб организовать большую задержку, используется несколько последовательно соединенных lcell'ов (соответсвенно общая задержка будет равна 3нс*N, N-кол-во lcell'ов). А про ЛУТ я ничего не знаю:) что то мне подсказывает что это хороший стиль разработки... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
badwm 0 13 июня, 2006 Опубликовано 13 июня, 2006 · Жалоба что то мне подсказывает что это хороший стиль разработки... Ну да, странновато слегка :) . Однако, нам что дали - с тем и приходится работать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vetal 0 14 июня, 2006 Опубликовано 14 июня, 2006 · Жалоба LCELL primitives provide the most control. Analysis & Synthesis minimizes all logic that drives an LCELL primitive so that the logic fits into a single logic cell. LCELL primitives are always implemented in a logic cell, and they are never removed from the project even if they are fed by a single input. If the project is minimized so that an LCELL primitive is fed by a single input, you can use a SOFT primitive instead of an LCELL primitive so that the SOFT primitive is removed during logic synthesis. Это основное назначение. А задержка "порядка 3нс вроде" - побочный эффект. Цифра с потолка? У меня средняя задержка получилась примерно 2.534нс/LCELL для цепочки из 100 LCELL. Разнизца с вашей цифрой указавает на то, что эти данные зависят от результатов разводки на кристалле и пр. факторов. Причем эта задержка может быть и меньше, т.к. средства временного анализа дают наихудший результат, которй будет меняться от температуры, напряжения питания и пр. физ. воздействий. Добавлено: По документации задержка на LCELL может составлять примерно : tLUT+tCOMB=1.7+0.6=2.3. И как уже отмечалось выше - нормируется только верхний предел. Если Altera в очередной партии "ускорит" микросхему , а ваше устройство не сможет работать, то в этом будет виноват разработчик, потому что паспортные данные микросхемы не нарушаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rundll 0 18 июня, 2006 Опубликовано 18 июня, 2006 · Жалоба Прошу прощения. Скажите пожалуйста, мне тоже необходимо описать SRAM желательно асинхронную, хотя синхронная тоже подойдёт. У меня таже проблема с нераспознованием памяти от логических элементов. Юзаю синтезатор Leonardo Spectrum. В отличие от проекта товарища badwm, я абсолютно ничем не ограничен, в плане использования других библиотек в своем проекте. Был бы очен признателен вам за информацию о LMP_RAM_DQ. Что это такое и с чем его едят и может ли он помочь мне в описании статического ОЗУ? С уважением Никита! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rundll 0 19 июня, 2006 Опубликовано 19 июня, 2006 · Жалоба А лучше всего пример использования привести, если не трудно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MurrVK 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Я думаю, вам будет полезно почитать этот pdf, раздел VHDL SRAM Design. Там и пример должен быть, но по моему асинхронной памяти. Удачи :) vhdl__.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
badwm 0 20 июня, 2006 Опубликовано 20 июня, 2006 · Жалоба Был бы очен признателен вам за информацию о LMP_RAM_DQ. Что это такое и с чем его едят и может ли он помочь мне в описании статического ОЗУ? LPM_RAM_DQ - библиотечный тип памяти. Присутсвует в Quartus'е. Имеет входы: data - данные, address - адрес ячейки памяти, we - write enable - разрешение записи. Выход один - q -читаемые данные. На VHDL с использованием библиотеки lmp, описывается так(пример асинхъронной памяти 128 слов по 32 бита): library lpm; use lpm.lpm_components.lpm_ram_dq; ------------ LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY RAM_DQ IS GENERIC( ADDRESS_WIDTH : integer := 7; DATA_WIDTH : integer := 32 ); PORT( data : IN std_logic_vector (DATA_WIDTH-1 DOWNTO 0); address : IN std_logic_vector (ADDRESS_WIDTH -1 DOWNTO 0); we : IN std_logic; q : OUT std_logic_vector (DATA_WIDTH-1 DOWNTO 0) ); END RAM_DQ; ARCHITECTURE logic OF RAM_DQ IS begin my_ram:lpm_ram_dq generic map ( LPM_WIDTH => DATA_WIDTH, LPM_WIDTHAD => ADDRESS_WIDTH, lpm_indata => "UNREGISTERED", lpm_address_control => "UNREGISTERED", lpm_outdata => "UNREGISTERED", LPM_TYPE => "LPM_RAM_DQ" ) port map ( data => data, address => address, we => we, q => q ); END ARCHITECTURE logic; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MurrVK 0 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба Еще один интересный момент: в моем проекте описано 17 констант, каждая из них представляет собой матрицу 6х8(итого 816 бит :)). При компеляции проект занимает очень много пространства( кристалл Ацекс1К) - 33%, хотя сам проект не очень большой. Скорее всего для представления этих констант Квартус использует внутренние триггера плиса. А можно ли не переписывая много кода сделать так, чтоб при конфигурации плиса все эти константы записывались в память на борту Ацекса? Исходники прилагаются :) LCD_con.txt LCD_inf.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 24 июня, 2006 Опубликовано 24 июня, 2006 · Жалоба даже не смотря на ваш код, ручками, ручками переписываем обращения к константам как к регистровому файлу например а вот ваша фраза Скорее всего для представления этих констант Квартус использует внутренние триггера плиса меня вообще убивает :cranky: а посмотреть отчеты мапера и глянут RTL ? что это за программисткое скорее всего Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться