Nuts 0 26 июля, 2008 Опубликовано 26 июля, 2008 (изменено) · Жалоба Здравствуйте!!! Написал в ISE программу для ПЛИС XILINX на VHDL, программа состоит из одного процесса. Скажите пожалуйста, можно средствами ISE посмотреть за сколько тактов выполнится программа, тоесть процесс? Изменено 26 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 26 июля, 2008 Опубликовано 26 июля, 2008 · Жалоба Здравствуйте!!! Скажите пожалуйста, можно средствами ISE посмотреть за сколько тактов выполнится программа? О какой программе Вы говорите? Если Вы имеете в виду получение результата на выходе Вашего модуля (проекта), то ISE этим не занимается, т.к. не знает логики работы модуля и воздействий, которые будут производиться на модуль. Но Вы можете воспользоваться встроенным в ISE симулятором или каким-нибудь внешним симулятором, чтобы промоделировать проект и узнать, за какое время появляется требуемый результат при заданных входных воздействиях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 26 июля, 2008 Опубликовано 26 июля, 2008 · Жалоба Спасибо. За совет. makc Программа такая, по последовательной шине принимаю данные, накапливаю их до 16-ти бит и выбрасываю по параллельной 16-ти разрядной шине. Мне нужно за 16 тактов: накопить 16 бит и выбросить из в параллельную шину(я хочу главным генератором ПЛИС назначить генератор последовательной шины.). Вот интересно при обращении к переменным: сложение, вычитание сколько тактов тратится? :05: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 26 июля, 2008 Опубликовано 26 июля, 2008 · Жалоба Написал в ISE программу для ПЛИС XILINX на VHDL, программа состоит из одного процесса. Если весь модуль состоит из одного процесса, то, понимая логику его работы (ведь Вы его создатель), не составит большого труда посчитать время его выполнения. makc Программа такая, по последовательной шине принимаю данные, накапливаю их до 16-ти бит и выбрасываю по параллельной 16-ти разрядной шине. Мне нужно за 16 тактов: накопить 16 бит и выбросить из в параллельную шину(я хочу главным генератором ПЛИС назначить генератор последовательной шины.). Вот интересно при обращении к переменным: сложение, вычитание сколько тактов тратится? :05: Приведите пример кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 26 июля, 2008 Опубликовано 26 июля, 2008 (изменено) · Жалоба Если весь модуль состоит из одного процесса, то, понимая логику его работы (ведь Вы его создатель), не составит большого труда посчитать время его выполнения. Я вот новичок, может глупости спрашиваю :) С логикой понятно, а вот например на присвоение значения переменной сколько тактов тратится? С кодом чуть позже, мне его восстановить надо :crying: например : .... I,x,b:integer; ... I:=100; b:=300; x:=65; ... за один такт выполнится? Изменено 26 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 26 июля, 2008 Опубликовано 26 июля, 2008 · Жалоба Если после присвоения переменной Вы будете ее использовать где-то дальше в теле процесса, то использоваться будет новое, присвоенное значение. Т.е. можно считать, что оно присваивается в том же такте. На примере это выглядит так: .... variable a,b,c:integer; ... a:=1; b:=2; c:=a+b; ... с станет равной 3 в том же такте, что и будет выполнено присвоение a и b. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 27 июля, 2008 Опубликовано 27 июля, 2008 (изменено) · Жалоба А если такой случай где будет счетчик например: variable a,b,c:integer; ... a:=1; b:=b+1; --счетчик c:=a+b; Тоже за один такт выполнится? :05: Изменено 27 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 27 июля, 2008 Опубликовано 27 июля, 2008 · Жалоба А если такой случай где будет счетчик например: variable a,b,c:integer; ... a:=1; b:=b+1; --счетчик c:=a+b; Тоже за один такт выполнится? :05: Да. Но это только в случае, если a и b - variables. Если они signals, то будет по-другому. Почитайте любую книгу по VHDL. Все возможные варианты на примерах не рассмотришь, нужно понимание общих принципов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 27 июля, 2008 Опубликовано 27 июля, 2008 (изменено) · Жалоба Makс, пасибо вы очень помогли. :) Изменено 27 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 27 июля, 2008 Опубликовано 27 июля, 2008 · Жалоба А если такой случай где будет счетчик например: variable a,b,c:integer; ... a:=1; b:=b+1; --счетчик c:=a+b; Тоже за один такт выполнится? :05: Только здесь вместо счетчика у Вас будет 32 разрядный сумматор :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 27 июля, 2008 Опубликовано 27 июля, 2008 (изменено) · Жалоба Maverick, хорошо я запомню :) . Есть вопрос Пример: .......... .......... Port ( LED_1,LED_2: out STD_LOGIC:='1'); .......... .......... Process begin ........... ........... if i=10 then LED_1<='0'; -- LED_2<='0'; end if; ............ ............ end process; В примере сначала изменится порт LED_1 на '0', затем изменится LED_2 на '0', а можно как нибудь прописать чтобы в процессе LED_1 и LED_2 изменились одновременно? Если можно напишите примерчик :05: Изменено 27 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
makc 222 27 июля, 2008 Опубликовано 27 июля, 2008 · Жалоба В примере сначала изменится порт LED_1 на '0', затем изменится LED_2 на '0', а можно как нибудь прописать чтобы в процессе LED_1 и LED_2 изменились одновременно? Если можно напишите примерчик :05: Что значит одновременно в Вашем понимании? Если "одновременно", значит "по какому-то событию", то соответствующий сигнал должен быть указан в списке чувствительности процесса. И тогда активация процесса будет привязана к конкретным событиям в модуле. Но, в любом случае, в приведенном примере изменение произойдет в один и тот же момент времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CaPpuCcino 0 27 июля, 2008 Опубликовано 27 июля, 2008 · Жалоба я бы предложил товарищу вопрошающему всё-таки сначала ознакомиться с осносами языков описания аппаратуры и проектированию с их помощью цифровых систем. для начинающих есть большой спектр литературы на русском. а потом уже если будут оставаться какие-то неясности задать соотв. вопр. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts 0 28 июля, 2008 Опубликовано 28 июля, 2008 (изменено) · Жалоба makc Если писать команды в теле самого модуля то они будут выполняться параллельно, чтобы команды выполнять последовательно нужно создать процесс и в нем писать команды. Так как у меня в примере LED_1 и LED_2 находятся в процессе и выполняются по одному событию, но сначала изменится состояние LED_1 а затем изменится состояние LED_2 - так как в процессе команды выполняются последовательно. А если нужно чтобы они выполнились параллельно, как выполняются команды в теле модуля? Может можно написать что-то вроде :LED_1,LED_2<='0' , чтобы сигнал одновременно полетел на 2 порта сразу LED_1 и LED_2. PS: ушел читать VHDL :05: Изменено 28 июля, 2008 пользователем Nuts Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 27 28 июля, 2008 Опубликовано 28 июля, 2008 · Жалоба Вот к чему приводит непонимание основ... "Программа для ПЛИС на VHDL"... Никакая это на самом деле не программа, а конфигурация железа, записанная алгоритмическим языком. И то, что "команды" записаны друг за другом, совсем не определяет порядок их "выполнения". Может, лучше начать со схемного ввода, пока ясность не наступит? Основная идея - ПЛИС - это не процессор, и "программу" не "выполняет". А функционирует как цифровой автомат, логика которого задаётся конфигурацией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться