FROL_256 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба Добрый день. Я делаю простой процессор. Пока что я просто забиваю программы прямо в VHDL код так: signal program : PROGRAM_MEMORY := ( 0 => x"02010400", -- add R[1], R[4] 1 => x"04020100", -- mul R[2], R[1] 2 => x"00000000", -- nop 3 => x"05010300", -- cmp R[1], R[3] 4 => x"e2000000", -- jle 0 5 => x"00000000", -- nop 6 => x"00000000", -- nop 7 => x"21020500", -- store R[2], *(R[5] + 0) 8 => x"66000000", -- hlt 9 => x"66000000", -- hlt 10 => x"66000000", -- hlt others => x"00000000" -- ); Это относительно удобно на симуляторе чтоб гонять. Но у меня такая проблема возникла. Квартус при синтезе оптимизирует схему в зависимости от программы. Например, если не будет команд обращения в память, то модуля работы с памятью в конечной схеме просто не будет. Квартус его выбрасывает. Причем, в RTL Viewer-е модуль работы с памятью присутствует, а вот уже в Post Mapping его нет. Я ставил attribute noprune of memory : signal is true; на память где хранится программа, на регистры и на память для данных. Но это не помогает. Мне бы хотелось, чтобы характеристики схемы не зависели от того, какую программу я изначально зашил в память. И еще мне бы хотелось иметь возможность просто перезалить программу, не выполняя синтез заново. Я помню, мне говорили что есть аттрибут, который это позволяет, но я что-то не могу найти эту тему уже. Знаю, что можно через мегавизард создать компоненту памяти, но хочу именно атрибут найти такой. Сейчас читаю про разные аттрибуты в квартусе, но как-то много непонятно много там для меня. Например, я не понял, обязательно ли вставлять LIBRARY altera; USE altera.altera_syn_attributes.all; Я вставил перед каждой сущностью на всякий случай, но у меня такое ощущение что атрибуты просто не работают. Например на encoding кода операции я хочу отвести ровно 7 бит, и пишу: attribute syn_encoding : string; attribute syn_encoding of OPERATION_CODE : type is "gray"; Но если посмотреть в RTL Viewer-е получающуюся схему, то там встречаются элементы, как на скриншоте (и так все 128 команд). То есть как будто используется "one_hot" encoding. Что-то у меня явно не так, мне кажется) Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба а зачем симулировать в квартусе? чего не хватает в том же моделсиме? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FROL_256 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба а зачем симулировать в квартусе? чего не хватает в том же моделсиме? Я не говорил что в квартусе симулирую, конечно я использую моделсим для симуляции. Просто у меня исходник один и тот же. Квартус собственно для синтеза, уже хочу зашить в железку проект, посмотреть что получится на реальной схеме. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба Квартус собственно для синтеза, уже хочу зашить в железку проект, посмотреть что получится на реальной схеме. а что, ждете отличий в результатах? :) если сильно хочется, то можно сделать так: сгенерить корку памяти с возможностью редактирования содержимого (не помню точное название фичи), посмотрите отклик процессора на разные команды Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FROL_256 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 (изменено) · Жалоба а что, ждете отличий в результатах? :) если сильно хочется, то можно сделать так: сгенерить корку памяти с возможностью редактирования содержимого (не помню точное название фичи), посмотрите отклик процессора на разные команды Да не, ну не отличий :) Я хочу знать реальные возможности схемы - ограничение по частоте, сколько ресурсов использовано и прочее. Потому что у меня в зависимости от каких-то мистических событий, то 500 то 12K лутов используется. Вот я и хочу понять, сколько же на самом деле требует моя схема, если требует 12K, то почему так много. Но собственно цель-то сделать железку, сделать процессор, чтобы я мог заливать в него разные программы и прогонять их. Посмотреть, что все лампочки мигают так как надо. А не только одну какую-то программу. Понятно что можно просто КА какой-то сделать чтобы лампочки мигали, цель не в этом. Цель в том, чтобы я точно знал, что внутри FPGA у меня схема именно с той функциональностью, с какой я хочу. И чтобы я знал ее ограничения и требования по ресурсам. Конечно можно использовал библиотечную компоненту, слава богу я могу теперь с ними работать в симуляторе :) Просто я хотел иметь версию процессора, которая существует вообще без каких-либо библиотечных компонент и конкретных привязок к вендору. Чистый VHDL. Изменено 13 февраля, 2011 пользователем FROL_256 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба так отчет о компиляции поковыряйте на предмет использованных ресурсов на каждый модуль. там же пишется и что было выброшено. да, если выбрасывается при оптимизации именно память - сделайте ее 2-портовой, второй порт выведите наружу, синтезатор не сможет ее выкинуть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
FROL_256 0 13 февраля, 2011 Опубликовано 13 февраля, 2011 · Жалоба Ясно, Спасибо! Буду внимательно изучать отчет. Попробую на сложных программах погонять. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
POVRU 0 23 февраля, 2011 Опубликовано 23 февраля, 2011 · Жалоба Если весь код забить NOPами то ядро составит 0 LUT Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 23 февраля, 2011 Опубликовано 23 февраля, 2011 · Жалоба ... Просто я хотел иметь версию процессора, которая существует вообще без каких-либо библиотечных компонент и конкретных привязок к вендору. Чистый VHDL. "Чистый VHDL" хорош только теоретически для отладки\моделирования алгоритма или структуры. Для эффективного использования архитектуры того или иного чипа все равно придется переделывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
POVRU 0 23 февраля, 2011 Опубликовано 23 февраля, 2011 · Жалоба "Чистый VHDL" хорош только теоретически для отладки\моделирования алгоритма или структуры. Для эффективного использования архитектуры того или иного чипа все равно придется переделывать. Нужно понимать, что есть модули кросс-платформенные и нет. Например математические узлы кросс - платформенные, а память, схемы генерации клока приходится делать под конкретную ПЛИС даже в рамках одного вендора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 23 февраля, 2011 Опубликовано 23 февраля, 2011 · Жалоба Например математические узлы кросс - платформенные.... Не факт, например есть у Xilinx DSP48 Slice, а у Altera DSP Blocks для математики. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться