|
NIOS II начало. |
|
|
|
Dec 17 2009, 09:09
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Здравствуйте, начал изучать nios и появилось у меня несколько вопросов, если кому не трудно буду рад прочитать ответы.
1)Есть ли возможность симулировать работу NIOS + логику FPGA в quartus simulator?
2)Создал я SOPC в котором само ядро, память и выход PIO, написал програмку на assembler типа счетчик .text .global main
main: movi r10,0x0 movi r11,0xff
loop: addi r10,r10,2 beq r10,r11, loop
.end
Как мне теперь выдать в PIO содержимое регистра r10?
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 32)
|
Dec 17 2009, 09:32
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Kuzmi4В SOPC Builder PIO имеет адреса BASE 0x00000000 и END 0x0000000f и куда мне писать?
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Dec 17 2009, 10:07
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 17 2009, 12:56)  в BASE mov 0x00,R10 так вот не получается
|
|
|
|
|
Dec 17 2009, 11:44
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 17 2009, 13:59)  mov переносит между регистрами. stwio R10,0x00 Спасибо могу ли я теперь увидеть диаграмму работы в quartus simulator?
|
|
|
|
|
Dec 18 2009, 07:18
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 17 2009, 18:08)  теоретически-да(подать клок,ресет и т.д.), но в моделсиме гораздо удобнее. в сигналтапе тоже удобно(www.altera.com/literature/an/an446.pdf). чем в моделсиме удобнее? там же на вхдл тестбенчи писать нужно, а в симуляторе быстренько нарисовал и готово
|
|
|
|
|
Dec 18 2009, 08:14
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 18 2009, 11:01)  быстренько нарисовал - это когда 2 сигнала, а когда 22 - скопипастить тестбенч быстрее будет. да и сколько-нибудь сложное воздействие сымитировать в визуальном редакторе нереально. Впринципе да, надо изучать моделсим, щас попробую сначала в сигналтабе. Спасибо за ответы.
|
|
|
|
|
Dec 18 2009, 13:52
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(torik @ Dec 18 2009, 17:34)  Ну а какова реальность? Я вот не очень представляю, как увязывается выполнение программы на NIOS с внешними воздействиями на железо, прописанными в тестбенчах. Чё-то вообще бред получается. Если отладка без учета программы ниоса, то это уже моделирование SOPC с шиной авалон. Не? а в чем разница с моделсимом? так же берется нетлист, на входы подаются воздействия. программа присутствует в виде файла инициализации памяти (понятно, надо on-chip юзать). другое дело, что по функционалу убого, ну так и сказано уже не раз было, что м-сим удобнее. Цитата(Evgeniiy @ Dec 18 2009, 17:41)  И еще вопросик, когда я создаю воркспейс в другой папке, у меня не создается проект, выдает ошибку error parsing project STF file, могу создавать проекты только в директории по умолчанию, как бы от этого уйти? поподробнее, что за проект, какой воркспейс. ни фига не понятно
|
|
|
|
|
Dec 18 2009, 14:11
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 18 2009, 16:52)  а в чем разница с моделсимом? так же берется нетлист, на входы подаются воздействия. программа присутствует в виде файла инициализации памяти (понятно, надо on-chip юзать). другое дело, что по функционалу убого, ну так и сказано уже не раз было, что м-сим удобнее.
поподробнее, что за проект, какой воркспейс. ни фига не понятно если я меняю workspace в NIOS II IDE стандартный там nios2-ide-workspace-8.0_1, на другой в другой папке и создаю проект не в директорию по умолчанию а в свою,то проект не создается и появляется ошибка error parsing project STF file. я просто хочу создать проект не в c\altera\nios..., а скажем на диске d, а могу создать тока туда
|
|
|
|
|
Dec 18 2009, 14:21
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Evgeniiy @ Dec 18 2009, 20:11)  если я меняю workspace в NIOS II IDE стандартный там nios2-ide-workspace-8.0_1, на другой в другой папке и создаю проект не в директорию по умолчанию а в свою,то проект не создается и появляется ошибка error parsing project STF file.
я просто хочу создать проект не в c\altera\nios..., а скажем на диске d, а могу создать тока туда так это эклипсовские настройки там лежат, они ценности не представляют. сам проект и его system library лежат в папке software в квартусовском проекте. если в настройках эклипса поковыряться, то, наверное, можно найти способ, но какой смысл в этом?
|
|
|
|
|
Dec 22 2009, 13:50
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 18 2009, 17:21)  так это эклипсовские настройки там лежат, они ценности не представляют. сам проект и его system library лежат в папке software в квартусовском проекте. если в настройках эклипса поковыряться, то, наверное, можно найти способ, но какой смысл в этом? Я просто хотел создать проект и все к нему относящееся в другой папке, на другом диске и пока не создал там папку эклипс, IDE выдавал ошибку и не создавал его. А есть ли возможность в порт выдавать числа напрямую, а не через регистры r1,r2 итд. я вот хочу например регистр таймера snapl выдать в PIO
|
|
|
|
|
Dec 24 2009, 08:30
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Написал програмку для таймера, счетчик загружается из регистра периода и досчитав до нуля не выдает сигнала timeout и перезагружается всеми единицами, а не как написано в пдф числом из регистра периода, в ригистре статус всегда горит бит RUN, как бы исправить это? CODE .equ timer_status, (0x20) .equ timer_control, (0x24) .equ timer_period_low, (0x28) .equ timer_period_high, (0x2C) .equ timer_snap_low, (0x30) .equ timer_snap_high, (0x34) .text .global main
main: movui r12,0x0 movui r15,0x4 movui r16,0x12
stwio r16,timer_period_low(r12) stwio r15,timer_control(r12) loop: ldwio r14,timer_status(r12) stwio r16,timer_snap_low(r12) ldwio r17,timer_snap_low(r12) bne r12,r15,loop .End
Причина редактирования: Оформление кода
|
|
|
|
|
Dec 24 2009, 09:56
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 24 2009, 11:59)  а вот это Код stwio r16,timer_snap_low(r12) ldwio r17,timer_snap_low(r12) зачем? так он до второго пришествия считать будет. настройки таймера в SOPC`е какие? период не маловат? и почему инициализируете только младшие разряды? содержимое всех регистров тоже выкладывайте. stwio r16,timer_snap_low(r12) ldwio r17,timer_snap_low(r12) r17 выдаю в порт и тем самым смотрю, что на счетчике. Все записав в старшие разряды 0, все заработало. Спасибо за ответ.
|
|
|
|
|
Dec 25 2009, 06:08
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 24 2009, 17:38)  самый простой вариант - висеть в цикле, смотреть соотв. флажок; когда срабатывает прерывание, вызывается обработчик, который сбрасывает флаг. более интересный вариант - сделать interrupt vector. или прикрутить EIC (в последних версиях ниоса появился, я еще не пробовал, обхожусь софтовыми) Если я буду висеть в цикле и смотреть флаг, то когда ж моя программа выполняться будет?
|
|
|
|
|
Dec 25 2009, 07:08
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Цитата(vadimuzzz @ Dec 25 2009, 09:49)  никто же не говорил, что в цикле нужно только смотреть флаг  в любой из описанных выше реализаций подразумевается наличие бесконечного цикла. разница только в способе, которым вызывается обработчик прерывания Ну вот началась у меня программа я глянул флаги и пошел выполнять свою прогу, допустим на середине кода взвелся флаг, те у меня будет задержка обнаружения флага равная остатку кода?
|
|
|
|
|
Dec 25 2009, 07:19
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Evgeniiy @ Dec 25 2009, 13:08)  Ну вот началась у меня программа я глянул флаги и пошел выполнять свою прогу, допустим на середине кода взвелся флаг, те у меня будет задержка обнаружения флага равная остатку кода? прерывания по своей сути предполагаются достаточно редкими событиями, в сравнении с тактовой частотой процессора. т.е. если, к примеру проц на 50 МГц, а таймер, скажем, на 50 кГц - то это нормально. а если, проц 50 МГц, а таймер 25 МГц - то инструмент(МК) выбран неправильно. также неявно подразумевается, что обработчики прерываний - это маленькие куски кода имеющие наивысший приоритет. ну и если у вас реальная задача, так озвучьте ее, может вам ни ниос, ни прерывания и не нужны.
|
|
|
|
|
Dec 25 2009, 07:41
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
vadimuzzzРеальной задачи у меня для ниуса нет, просто появилось свободное время, решил изучить ниус, до этого работал только с ПЛИС.
Причина редактирования: Избыточное цитирование
|
|
|
|
|
Dec 29 2009, 07:53
|
Частый гость
 
Группа: Участник
Сообщений: 84
Регистрация: 5-03-09
Из: СПБ
Пользователь №: 45 705

|
Написал пример счетчика, нажимаю debug, и начинаю тыкать step info дойдя до места где счетчик досчитывает и выдает прерывание, я прыгаю на выполнение этого кода. я думал, что после выдачи прерывания его номер просто записывается в регистр ipending и моя программа продолжает выполнятся , если я не слежу за этим регистром. Код 0x00002024 <_start+4>: ori sp,sp,16384 0x00002028 <_start+8>: movhi gp,0 0x0000202c <_start+12>: ori gp,gp,41736 0x00002030 <_start+16>: movhi r2,0 0x00002034 <_start+20>: ori r2,r2,8980 0x00002038 <_start+24>: movhi r3,0 0x0000203c <_start+28>: ori r3,r3,8980 0x00002040 <_start+32>: beq r2,r3,0x2050 <_start+48> 0x00002044 <_start+36>: stw zero,0(r2) 0x00002048 <_start+40>: addi r2,r2,4 0x0000204c <_start+44>: bltu r2,r3,0x2044 <_start+36> 0x00002050 <_start+48>: call 0x2098 <alt_load> 0x00002054 <_start+52>: call 0x217c <alt_main>
Причина редактирования: Оформление кода
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|