|
|
  |
NIOS II, программирование ниос2 на СИ |
|
|
|
Jan 26 2015, 10:24
|
Профессионал
    
Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539

|
Цитата(Golikov A. @ Jan 26 2015, 12:26)  В целом конечно я не прав. Цитата(Golikov A. @ Jan 26 2015, 12:26)  Все же вопрос частоты. Я как то не подумал что люди могут ставить DDR3 и работать с ним на 60 МГц... (условно все конечно) Для FPGA с которой сейчас работаю характеристики DDR3-контроллера на рисунке (или можете просмотреть cv_52006.pdf). Для FPGA Xiinx - поинтересуйтесь пожалуйста сами. Чтобы не получилось Цитата(Golikov A. @ Jan 20 2015, 15:28)  ну пипец ваша ...
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 28 2015, 06:26
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122

|
Цитата(Golikov A. @ Jan 23 2015, 14:59)  Вам FIFO надо.
Данные поступают в FIFO а оттуда в DDR, через какой либо DMA контроллер.
Если данные нужны кому-то еще вы их читаете из ДДР, это приостанавливает DMA контроллер, и данные на время задержек падают в FIFO.
Ничего руками разруливать не надо, потому что проц не долбиться в шину постоянно (хотя может НИОС опять по чудному сделан, но надеюсь что нет). Вот и пока проц делает что-то еще, ДМА сам займет шину и успеет положить еще кусочек. Систему надо строить именно на таком принципе. Кстати ДДР контроллер разьве изначально не 2 портовый?
Вам надо перейти на следующий уровень абстракции, надо забыть про то какая у вас память, это забота контроллера, вы же не собираетесь еще сами следить за тем вовремя ли он подает ревреши, я надеюсь%)... Так же забота контроллера обеспечивать доступ к памяти по нескольким портам, во всяком случае у ксалинкс контроллер точно несколько портовый с арбитражем, наверяка у вас тоже, если это не так, то надо делать свой контроллер - арбитр, но не лезть к памяти напрямую, это дело контроллера памяти.
Обратите внимание что контроллер памяти ДДР - это не что-то собранное из вентилей ПЛИС, а отдельная область, готовый блок, слишком там все по таймингам не просто. ФИФО максимум как я понял на 8 кБайт. Требуется считать 1.2 МБайт памяти. Пока будет задержка на переключения ддр2 плюс чтение из ддр2 фифо будет переполнена. Поэтому придется по кусочкам производить чтение. On-chip memory можно сделать двухпортовым, а DDR2 насколько мне известно работает либо на чтение либо на запись.
|
|
|
|
|
Jan 28 2015, 07:08
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122

|
Цитата(doom13 @ Jan 28 2015, 09:59)  Что за данные собираетесь писать, какова скорость потока? На входе приходят данные с АЦП со скоростью 60 мегаслов в секунду (1 слово = 8 бит). На выходе считываются данные со скоростью 2 мегаслова в секунду. Скорости потоков разные плюс надо не потерять входные данные. Объем выводимых данных 1.2 мегабайта.
|
|
|
|
|
Jan 28 2015, 08:09
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122

|
Цитата(doom13 @ Jan 28 2015, 10:26)  А поясните, кто такие "вход" и "выход"? 8-бит АЦП с тактовой 60 МГц, а что такое 8-бит на 2МГц? Какое-то тут противоречие - нельзя писать данные 8*60 Mbit/s, а читать со скоростью 8*2 Mbit/s и не переполнить память? То что я пытаюсь сделать является маленьким блоком большого устройства. Входом условно назвал АЦП. Выходом назвал приемник (пользователь), т.е. устройство которое предоставляет пользователю наглядные данные (скорее всего экран). Приемник не постоянно считывает данные, а только по запросу (т.е. пришел человек к терминалу и нажал кнопку сказав: а выведи ка мне ты последние 1.2 МБайта данных которые пришли с АЦП). Между АЦП и Приемником нужно создать такой проект чтобы он связал их, т.к. у них разные скорости работы. Проблема возникает в том, что из-за разницы скоростей возникает момент, когда необходимо где то сохранить данные от АЦП во время чтения из ОЗУ этих 1.2 МБайта. На рисунке под плис подразумевается процессор NIOS II и другие устройства которые управляют DDR2 и данными.
Эскизы прикрепленных изображений
|
|
|
|
|
Jan 28 2015, 08:31
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 7-05-10
Пользователь №: 57 122

|
Цитата(x66 @ Jan 28 2015, 11:09)  Из Ваших пояснений не понятно, каким образом получается скорость чтения 8*2 Мbit/s, есть только желание получить объём данных в 1,2 МБ? Чтение производится готовым блоком, что именно там я не знаю, но оно читает со скоростью 2 Мбайта/с и нужно выводить последние 1.2 МБайта данных
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|