|
|
  |
Освоение ISE |
|
|
|
Jul 26 2008, 12:12
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
Здравствуйте!!! Написал в ISE программу для ПЛИС XILINX на VHDL, программа состоит из одного процесса. Скажите пожалуйста, можно средствами ISE посмотреть за сколько тактов выполнится программа, тоесть процесс?
Сообщение отредактировал Nuts - Jul 26 2008, 12:29
|
|
|
|
|
Jul 26 2008, 12:29
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Nuts @ Jul 26 2008, 16:12)  Здравствуйте!!! Скажите пожалуйста, можно средствами ISE посмотреть за сколько тактов выполнится программа? О какой программе Вы говорите? Если Вы имеете в виду получение результата на выходе Вашего модуля (проекта), то ISE этим не занимается, т.к. не знает логики работы модуля и воздействий, которые будут производиться на модуль. Но Вы можете воспользоваться встроенным в ISE симулятором или каким-нибудь внешним симулятором, чтобы промоделировать проект и узнать, за какое время появляется требуемый результат при заданных входных воздействиях.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 26 2008, 12:49
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
Спасибо. За совет. makc Программа такая, по последовательной шине принимаю данные, накапливаю их до 16-ти бит и выбрасываю по параллельной 16-ти разрядной шине. Мне нужно за 16 тактов: накопить 16 бит и выбросить из в параллельную шину(я хочу главным генератором ПЛИС назначить генератор последовательной шины.). Вот интересно при обращении к переменным: сложение, вычитание сколько тактов тратится?
|
|
|
|
|
Jul 26 2008, 12:51
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Nuts @ Jul 26 2008, 16:12)  Написал в ISE программу для ПЛИС XILINX на VHDL, программа состоит из одного процесса. Если весь модуль состоит из одного процесса, то, понимая логику его работы (ведь Вы его создатель), не составит большого труда посчитать время его выполнения. Цитата(Nuts @ Jul 26 2008, 16:49)  makc Программа такая, по последовательной шине принимаю данные, накапливаю их до 16-ти бит и выбрасываю по параллельной 16-ти разрядной шине. Мне нужно за 16 тактов: накопить 16 бит и выбросить из в параллельную шину(я хочу главным генератором ПЛИС назначить генератор последовательной шины.). Вот интересно при обращении к переменным: сложение, вычитание сколько тактов тратится?  Приведите пример кода.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 26 2008, 13:06
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
Цитата(makc @ Jul 26 2008, 19:50)  Если весь модуль состоит из одного процесса, то, понимая логику его работы (ведь Вы его создатель), не составит большого труда посчитать время его выполнения. Я вот новичок, может глупости спрашиваю С логикой понятно, а вот например на присвоение значения переменной сколько тактов тратится? С кодом чуть позже, мне его восстановить надо  например : Код .... I,x,b:integer; ... I:=100; b:=300; x:=65; ... за один такт выполнится?
Сообщение отредактировал Nuts - Jul 26 2008, 13:00
|
|
|
|
|
Jul 26 2008, 14:48
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Если после присвоения переменной Вы будете ее использовать где-то дальше в теле процесса, то использоваться будет новое, присвоенное значение. Т.е. можно считать, что оно присваивается в том же такте. На примере это выглядит так: Код .... variable a,b,c:integer; ... a:=1; b:=2; c:=a+b; ... с станет равной 3 в том же такте, что и будет выполнено присвоение a и b.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 27 2008, 04:00
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
А если такой случай где будет счетчик например: Код variable a,b,c:integer; ... a:=1; b:=b+1; --счетчик c:=a+b; Тоже за один такт выполнится?
Сообщение отредактировал Nuts - Jul 27 2008, 04:01
|
|
|
|
|
Jul 27 2008, 06:01
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Nuts @ Jul 27 2008, 08:00)  А если такой случай где будет счетчик например: Код variable a,b,c:integer; ... a:=1; b:=b+1; --счетчик c:=a+b; Тоже за один такт выполнится?  Да. Но это только в случае, если a и b - variables. Если они signals, то будет по-другому. Почитайте любую книгу по VHDL. Все возможные варианты на примерах не рассмотришь, нужно понимание общих принципов.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 27 2008, 16:32
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
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 изменились одновременно? Если можно напишите примерчик
Сообщение отредактировал Nuts - Jul 27 2008, 16:37
|
|
|
|
|
Jul 27 2008, 17:57
|

Гуру
     
Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904

|
Цитата(Nuts @ Jul 27 2008, 20:32)  В примере сначала изменится порт LED_1 на '0', затем изменится LED_2 на '0', а можно как нибудь прописать чтобы в процессе LED_1 и LED_2 изменились одновременно? Если можно напишите примерчик  Что значит одновременно в Вашем понимании? Если "одновременно", значит "по какому-то событию", то соответствующий сигнал должен быть указан в списке чувствительности процесса. И тогда активация процесса будет привязана к конкретным событиям в модуле. Но, в любом случае, в приведенном примере изменение произойдет в один и тот же момент времени.
--------------------
BR, Makc В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
|
|
|
|
|
Jul 28 2008, 04:51
|
Участник

Группа: Новичок
Сообщений: 28
Регистрация: 21-07-08
Пользователь №: 39 128

|
makc Если писать команды в теле самого модуля то они будут выполняться параллельно, чтобы команды выполнять последовательно нужно создать процесс и в нем писать команды. Так как у меня в примере LED_1 и LED_2 находятся в процессе и выполняются по одному событию, но сначала изменится состояние LED_1 а затем изменится состояние LED_2 - так как в процессе команды выполняются последовательно. А если нужно чтобы они выполнились параллельно, как выполняются команды в теле модуля? Может можно написать что-то вроде :LED_1,LED_2<='0' , чтобы сигнал одновременно полетел на 2 порта сразу LED_1 и LED_2. PS: ушел читать VHDL
Сообщение отредактировал Nuts - Jul 28 2008, 04:53
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|