Jump to content

    

billidean

Свой
  • Content Count

    245
  • Joined

  • Last visited

Everything posted by billidean


  1. При работе со страницами/блоками перед записью нужно стереть записываемую область памяти, а стирание+запись это и есть "нехорошие" факторы, влияющие на долговечность ячейки. Для моей же задачи необходимо скидывать информацию может всего один раз, но вот перезаписывать нужно постоянно. Я конечно пока не расчитываю общее время жизни флэшки в моем проекте, т.е. частоту записей в секунду/минуту/час; пока я разбираюсь с вариантами выбора в целом.
  2. Спасибо за совет. Посмотрю повнимательней в этом направлении.
  3. Спасибо за отклики. По SLC/MLC я прочитал в Вики. Далее по существу моей задачи. Мне необходимо постоянно писать данные в энергонезависимую память, т.е., как сказал aaarrr, использовать память в качестве оперативного хранилища. Объем, который должен быть сохранен после сброса питания, не очень большой, около 10МБайт. Почитав в инете, я понял, что выбирать придется между NAND с однобитной структурой(т.е. SLC), NOR и FRAM. Кстати, последняя по своим характеристикам очень даже хороша, практически неограниченный ресурс, высокое быстродействие. НО очень малые объемы на одном кристалле. Вывод: при использовании любого из этих типов необходимо городить контроллер памяти для анализа целостности данных, что очень огорчает, так как чем сложнее система, тем сложнее её отладка.
  4. Народ, 160 просмотров, и ни одного посетителя, кто работал с флэш-памятью??? Что успел накопать: 1. NAND - память применяется при работе с большими объемами данных, имеет малую стабильность сохранности ячеек, поэтому необходим дополнительный контроллер, завязанный на контроль данных. Имеет большие времена записи/чтения/стирания по причине больших блоков/секторов. Также довольно небольшой ресурс около 10,000 записей. 2. NOR - довольно быстрая память, имеет не большие блоки для записи/чтения, НО имеет относительно малые объемы, из-за чего для больших объемов данных придется ставить несколько корпусов. А самое интересное, что я вычитал на эту память - она не нуждается в контроле битых ячеек!!! Вот эту последнюю информацию я не понимаю, ведь ресурс у них тоже ограничен, около 100,000 записей. (Кто что может сказать по этому вопросу, прошу высказаться, чем больше инфы, тем лучше!!!) Прошу поделиться опытом использования тех или иных флэшек для хранения/перезаписи данных.
  5. Да само собой не отдельные ячейки блокирую, а страницу. И вопрос вообще не про это, а про то: кто как работает с флэшками???
  6. Добрый день всем. Недавно занимался разработкой контроллера для NADN-Flash, при этом стояла задача минимальной потери данных вследствие "битости" ячеек. Т.е. пришлось реализовывать алгоритм контроля целостности используемых ячеек флэшки. В результате получился довольно серъезный алгоритм. Сейчас стоит задача использования обычной флэшки(её еще предстоит выбрать) для хранения каких-то данных, и будет нехорошо, если часть данных пропадет. На сколько мне известно у флэшек периодически бъются ячейки, и после этого с ними нельзя работать. Вопрос к тем, кто работал с флэшками в подобных проектах: Вы также занимались контролем целостности используемых ячеек флэшки? Неужели и здесь придется городить эту немалую систему контроля? З.Ы.: с Flash-памятями мало знаком, буду благодарен за полезные ссылки.
  7. Создал проект заново, прочитал доки по SG-DMA, переписал код для НИОСа, и вроде заработала система. Сейчас пинги проходят стабильно, тьфу-тьфу. Данные вроде тоже нормально принимаются. Благодарю всех за ответы.
  8. Если после заливки программы в ПЛИСину винда начинает выдавать очень плотный поток запросов, причем не связанных с моей платой, адреса не её. Но если подождать около минуты, то потом поток запросов почти до ноля падает, и можно уже свои пинги посылать. Это конечно все муторно, но выбирать не из чего. есть такое дело. А как его сбрасывать? Если я для пинга использую cmd, то как очистить кэш обмена?
  9. Спасибо за советы, попробую предложенные программы. Пока что решил написать простенькое приложение на Qt с использованием UDP. Но на данный момент у меня проблема немного не в этом вопросе: у меня есть прошивка для кристалла + прога для НИОСа, которые при запросе пинга что-то отвечают, пакеты правильные вроде, если смотреть с помощью wireshark. Недавно начал поднимать этот проект далее. Начал дорабатывать НИОСовый код и заметил такую вещь, если где-нибудь поправить код, даже в той части, которая не участвует в основном процессе работы интерфейса, то пинг перестает проходить полноценно. А если точнее, то пинг начинается с АРП-запроса, а затем уже запрашивает ЭХО, так вот НИОС почемуто не видит этот АРП запрос, как-будто данные попортились и пакет стал битым. С помощью отладчика не получается этот пакет увидеть так как при подключении платы к ПК в линии довольно много всяких запросов. В квартусе тайминги нормальные. Как вариант попробую переписать проект заново.
  10. А что это даст? Вообще-то у меня имеется наработка с использованием Simple Socket Server. Добился такого же результата, т.е. пинга, и забросил это дело. Я так думаю, что и со стеком на данном этапе нужна какая-то прога, чтобы сформировать правильный пакет и послать его на определенный IP-адрес, хоть по UDP хоть TCP IP. Просто я не знаю какую прогу использовать для этого, и вообще, думаю многие уже через это прошли, поэтому прошу у них помощи и подсказки для упрощения жизни.
  11. Решил оживить тему. После последнего сообщения Езернетом больше не занимался, другие задачи появились. Сейчас же свободного времени побольше и я хочу добить этот вопрос для себя, т.к. очень много где стал использоваться Езернет для передачи между платой с ПЛИС и ПК. Теперь вопрос к знатокам: я добился того, что пингование платы происходит успешно. Далее я так понимаю нужно передать в плату с ПК что-то определенное, т.е. например передать число 5 или пакет какой-то. Как я могу сформировать необходимый пакет, с помощью какой программы? Или как-то не так это должно быть. Я не системный программист, поэтому не смейтесь над моим незнанием данного вопроса. Можно ссылки на полезную информацию.
  12. Мне бы поконкретнее, т.к. если в самом начале изучения начать прикрывать глаза на некоторые важные вещи, то потом все это может в хороший "хвост" накопиться. Если можно, то мне бы ссылочку на "правильную" литературу.
  13. т.е. такая конструкция: module xxx(a,b, res); input a; input b; output [2:0] res; reg [2:0] res = 3'b000; будет нормально работать и при моделировании и при синтезе? Возможно ли применение такой строки: output [2:0] res = 3'b000;
  14. Не всегда сигнал Ресет имеется в наличии, например если пишем Мастер-модуль, который уже сам будет управлять остальными модулями и раздавать им Ресеты. Да и вообще написание модуля без Ресета. Довольно часто сам такие конструкции использовал, если хотел, чтобы при подаче питания на выходе был определенный сигнал. Мне хочется иметь систему, которая и при начале моделирования и при подаче питания в железе инициализировалась нужными мне значениями.
  15. Здравствуйте всем. Сейчас уже не модно писать коды только на одном VHDL, все работают сразу на двух языках VHDL и Verilog. Либо пишут только на одном, а примеры читают на обоих языках. Вот и я решил изучить Verilog. И первое, с чем столкнулся это начальное состояние входов/выходов. Например в VHDL я пишу data_in : input std_logic_vector(7 downto 0) := (others => '0'); data_out : output std_logic_vector(7 downto 0) := (others => '1'); . А как это же сделать на Veriloge? В википедии нашел такую фразу: и стало вообще непонятно, как мне правильно инициализировать входы/выходы/регистры. Прошу помощи у знающих.
  16. Вопрос к модераторам: я сегодня обновил объявление, добавил, что я сейчас свободен, и надеялся на то, что оно будет на первой странице форума "Ищу работу". Но получилось как-то все совсем не так. Или это Вы сами так сделали, объединили все мои сообщения в одно, но с датой самого первого поста(8 мая 2013)?? Если так, то скажите, зачем Вы так сделали?? И как мне поднять тогда свое объявление на первую страницу??
  17. А удаленно с вами не получится сотрудничать??
  18. Да уж, теперь так приходится всегда оформлять определение обработчика прерываний, т.к. не известно на каком квартусе все будет компилиться в итоге. А код получается некрасивым из-за таких вставок.
  19. Спасибо. Убыстрение на 150-200 тактов на перевод между типами, т.к. C_FPU содержит инструкции по переводу int2float, float2int.
  20. Спасибо, я понял где прокосячил: при настройке параметров НИОСа нужно было выбрать параметр "Hardware multiplication type" = "Embedded..". Но у меня все равно ничего не вышло, пишет ошибку типа "Данное устройство не поддерживает данный параметр". Вроде Стратикс4 (EP4SGX230KF40C2) повыше циклона будет, для которого пример создан. Может лицензии нет на данную опцию? кто-нибудь знает? НИОС f-типа у меня генерится как тайм-лим., может с этим и связано?
  21. Чо-то я задолбался с этими флагами. Всякие разные флаги/галочки ставил, все-равно строка call ххх <__floatsisf> присутствует в месте выполнения вычисления. Неужели у вас всех все нормально, т.е. без этой строки??? Если так, то не могли бы вы выслать мне минимальный проект, где все как надо, чтобы я смог проанализировать настройки системы и компиляции. З.Ы.: примерный проектик был бы ваще нормально :rolleyes:
  22. Здравствуйте. Ищу удаленную работу по разработке систем с использованием ПЛИС фирмы Альтера. Имеется опыт работы с Квартусом, Еклипсом (для НИОСа), МоделСимом. В разработанных мной проектах использовал следующие IP-ядра: UART, DDR3, PCI-Express. Есть опыт использования процессора НИОС (также с использованием RTOS uCOSII) и написании компонентов для подключения к нему по шине Авалон. Если Вам пригодится моя помощь пишите на ob6k508[собака]mail.ru Несколько проектов, над которыми я работал: без использования НИОСа - прием данных по линиям от АЦП(либо напрямую, либо по доморощенным интерфейсам с ALTGX), конвейерная обработка, запись этих данных в ОЗУ(в качестве ОЗУ используется DDR3), после сбора определенного количества данных они вычитываются из ОЗУ и отправляются на ПК по PCIExpress. Самым сложным здесь оказалась разработка циклограммы работы с ОЗУ (запись и чтение) при условии, что входной поток данных непрерывен. Еще были проекты с использованием НИОСа - передача/прием данных по линии RS232 с ПК с использованием ОС uCOS. Здесь НИОС являлся модератором работы нескольких модулей, контролировал процесс, получал данные, обрабатывал их и отсылал на ПК. Несколько проектов поменьше: обработка данных КИХ-фильтрами, написание специализированных интерфейсов. Был занят работой над контроллером NAND Flash. Сейчас свободен.
  23. Это мне тоже показалось подозрительным, но у меня не было времени сильно в этом копаться. Спасибо за ссылку, поковыряюсь обязательно. О результатах отпишу.
  24. Извиняюсь за такую длительную паузу. Вот часть из файла .objdump: //------------------------------------------------------------- temp_U = IORD(F1_3_3A_8_BASE_ADDRESS, F1_3_3A_8_ADDRMAP_U_LPF_0); 413ac: 00800234 movhi r2,8 413b0: 10945404 addi r2,r2,20816 413b4: 10800037 ldwio r2,0(r2) 413b8: e0bffd15 stw r2,-12(fp) f1_3_3A_8_array_u_lp_0[f1_3_3A_8_index_u_lpf] = temp_U; 413bc: d0a6c517 ldw r2,-25836(gp) 413c0: 00c00174 movhi r3,5 413c4: 18df4804 addi r3,r3,32032 413c8: 1085883a add r2,r2,r2 413cc: 1085883a add r2,r2,r2 413d0: 10c7883a add r3,r2,r3 413d4: e0bffd17 ldw r2,-12(fp) 413d8: 18800015 stw r2,0(r3) temp_F = (float)(temp_U) * f1_3_3A_8_calc_coeff_0; 413dc: e13ffd17 ldw r4,-12(fp) 413e0: 00421540 call 42154 <__floatsisf> 413e4: 1007883a mov r3,r2 413e8: d0a6c717 ldw r2,-25828(gp) 413ec: 1885ff32 custom 252,r2,r3,r2 413f0: e0bffc15 stw r2,-16(fp) f1_3_3A_8_array_u_lpf_0[f1_3_3A_8_index_u_lpf] = temp_F; 413f4: d0a6c517 ldw r2,-25836(gp) 413f8: 00c00174 movhi r3,5 413fc: 18ddb804 addi r3,r3,30432 41400: 1085883a add r2,r2,r2 41404: 1085883a add r2,r2,r2 41408: 10c7883a add r3,r2,r3 4140c: e0bffc17 ldw r2,-16(fp) 41410: 18800015 stw r2,0(r3) IOWR(DATA_MODULE_F1_3_3A_8_0_BASE, 3003, 0); 41414: 00800234 movhi r2,8 41418: 108bbb04 addi r2,r2,12012 4141c: 10000035 stwio zero,0(r2) //------------------------------------------------------------- для кода:
  25. Здравствуйте. Работаю на ките Стратикса4, Квартус11.1. Недавно столкнулся с такой проблемой: 1. создал в квартусе qSys-систему: 2. в настройках НИОСа выставил галочку "Hardware divide": 3. в настройках BSP проекта выставил три галочки: 4. флаги в файле public.mk у меня генерятся следующие: 5. в коде обработчика прерывания имеется следующие строки: а.) temp_U = IORD(F1_BASE_ADDRESS, F1_ADDR_U); б.) f1_array_u[f1_index_u] = temp_U; в.) temp_F = (float)(temp_U) * f1_3_3A_8_calc_coeff_1; г.) f1_array_u_float[f1_index_u_float] = temp_F; д.) IOWR(DATA_MODULE_BASE, 3003, 1); 6. по СигналТапку отслеживаю сигналы на шине Авалон. Проблема в следующем: от Авалоновской пересылки в строке а.) до пересылки в строке д.) насчитывается до 300 тактов. НИОС и СигналТап тактируются частотой 50МГц. Пробовал менять флаги вместо 60-1 ставил 60-2 - стало даже хуже :05: Что не так с моей системой? Или все должно быть так? И можно ли в обработчик прерываний совать плавающую математику? Есть мысль вообще использовать внешний компонент "умножитель", тогда пересылки по Авалону туда/сюда займут тактов 30-40, вычисление на "умножителе" - тактов 5-6, ИТОГО выигрыш в 6-7 раз.