Перейти к содержанию

    

BSACPLD

Свой
  • Публикаций

    381
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о BSACPLD

  • Звание
    Местный
  • День рождения 16.06.1986

Контакты

  • Сайт
    http://www.mcu-cpld.narod.ru
  • ICQ
    0

Информация

  • Город
    Москва

Посетители профиля

3 282 просмотра профиля
  1. Уважаемые коллеги! В НИИРЭТ МГТУ им. Н.Э. Баумана требуется инженер-технолог по монтажу печатных плат. Обязанности: - Проверять файлы печатных плат разработчиков/заказчиков на этапе их запуска в производство и при необходимости внесения изменений информировать разработчика/заказчика; - Расчет стоимости монтажа печатных плат (при выпонении внешних заказов); - Обеспечение подготовки производства; - Поиск и внедрение в производство новых технологий; - Разработка технических требований к комплектующим и материалам; - Расчет и контроль норм расхода комплектующих и материалов; - Контроль качества комплектующих и материалов и готовой продукции; - Запуск изделий электронной техники в серию, подготовка опытных партий и опытных образцов; - Подготовка трафаретов; - Выводной и поверхностный монтаж печатных плат (в том числе нестандартных); - Ремонт печатных плат. - Отвечать на электронную почту в течении 1 суток после поступления письма. Требования: - Высшее техническое образование; - Знание способов и методов монтажа сложных блоков, узлов, модулей; - Знание технологии пайки радиокомпонентов поверхностного и навесного монтажа; - Умение паять BGA, QFN, LGA; - Знание критериев контроля качества паяных соединений; - Общие знания современной элементной базы, владение технологией отмывки электронных узлов; - Личные качества: аккуратность, ответственность, обучаемость; - Особые требования: прямые руки, умение думать головой, хорошая письменная грамотность, доброжелательность, умение общаться; - Знание ЕСКД, умение работать с технической документацией; - Умение работы c офисными и CAD приложениями (Microsoft Office, CAM350); - Минимальный рабочий стаж по специальности: 5 лет; - Опыт работы на госпредприятиях приветствуется; - Знание английского (чтение технической документации); - Гражданство РФ. Условия: - Уровень оплаты от 60 000 р. в зависимости от уровня квалификации; - Оформление в соответствии с ТК; - Рабочий график 5/2, 8 часов. Начало в 9:00, но можно скорректировать в небольших пределах; - Работа в Дмитрове (загородная база) недалеко от платформы 75 км (56.429463, 37.488787). Свои резюме и организационные вопросы просьба присылать на почту нашему руководству: min-st-1986(собака)mail.ru Технические вопросы и вопросы по взаимодействию разработчиков и производства просьба присылать мне: bsa-one(собака)yandex.ru или bsa(собака)bmstu.ru
  2. Пытаюсь организовать общую память между FPGA и HPS. Сделал мост fpga2sdram и простейший DMA со стороны FPGA. Тестирование провожу следующим образом: 1. Выделяю в Linux приложении буфер uint32_t размером 1024 элемента (с выравниванием по страницам) и заполняю его тестовыми значениями. 2. Получаю физический адрес буфера и передаю его в DMA контроллер. 3. Запускаю DMA на копирование данных из HPS SDRAM в FPGA. 4. Смотрю считываемые данные со стороны FPGA с помощью SignalTap. Если зарустить DMA сразу после заполнения буфера, то в FPGA копируется мусор, если подождать несколько миллисекунд, то корректные данные. Есть предположение что при заполнении буфера данные сначала хранятся в кэше процессора и лишь затем сбрасываются в SDRAM. Каким образом я могу заставить процессор протолкнуть буфер из кэша в SDRAM или как выделить некэшируемый буфер?
  3. Заработало :) Я сам себе злобный буратино :) Копировал preloader не в тот раздел sd карты. Остался только вопрос почему linux пишет сразу во все gpio хотя я прописал linux,default-trigger = "heartbeat"; только для GPIO53.
  4. Пробовал через loanio. Такой вариант вообще не работает. Пробовал на GPIO54, 55, 56. Т.е. сам linux стартует, но переключать пины настроенные как loanio не получается (на oe подавал 1, out выводил на кнопки). Причем если GPIO54 настроить как gpio, то он начинает работать. 55 и 56 не удалось заставить работать ни как gpio, ни как loanio. Подозреваю, что дело в некорректной настройке pinmux в preloader. Пробовал собирать preloader как в 15.1, так и в 18.0. Результат один и тот же. u-boot также пересобирал. Где-то читал, что вроде начиная с 13.1 loanio и gpio окончательно поломали. Так ли это? Во всяком случае очень похоже, т.к. при чтении регистров GENERALIO7 (GPIO55, 0xFFD0849C) и GENERALIO8 (GPIO56, 0xFFD084A0) для варианта gpio возвращается 1, хотя согласно документации там должен быть 0. При этом для GENERALIO6 (GPIO54, 0xFFD08498), который работает, как и положено, возвращается 0.
  5. Написал программу для тестирования GPIO. dts переделал так чтобы система моргала только GPIO53 (linux,default-trigger = "heartbeat"). Остальными GPIO управляет моя программа. #include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <fcntl.h> #include <sys/types.h> #include <sys/mman.h> #include <unistd.h> #include <errno.h> int main() { int fd = 0; void *fpga_leds = 0; void *hps_leds = 0; try { fd = open( "/dev/mem", O_RDWR | O_SYNC ); if(fd < 0) throw "mem open error"; printf("fpga_leds\n"); fpga_leds = (mmap(0, (16/4), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xFF203000)); if(fpga_leds == MAP_FAILED) throw "fpga_leds mmap error"; for(int i=0 ; i<(16/4) ; i++) { uint32_t a = *(((uint32_t*)fpga_leds) + i); printf("0x%08X\n", a); } *(((uint32_t*)fpga_leds) + 0) = 0x0000000F; usleep(1000000); *(((uint32_t*)fpga_leds) + 0) = 0x00000000; usleep(1000000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000A; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x00000005; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000A; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x00000005; usleep(500000); *(((uint32_t*)fpga_leds) + 0) = 0x0000000F; printf("\n"); usleep(1000000); printf("hps_leds\n"); hps_leds = (mmap(0, (120/4), PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0xFF709000)); if(hps_leds == MAP_FAILED) throw "hps_leds mmap error"; for(int i=0 ; i<(120/4) ; i++) { uint32_t a = *(((uint32_t*)hps_leds) + i); printf("0x%08X\n", a); } for(int i=0 ; i<32 ; i++) { *(((uint32_t*)hps_leds) + 0) = 1 << i; usleep(500000); } *(((uint32_t*)fpga_leds) + 0) = 0x00000000; *(((uint32_t*)hps_leds) + 0) = 0xFFFFFFFF; usleep(500000); printf("\n"); } catch(const char* msg) { printf("\n%s\n", msg); } if(fd != 0) close(fd); return 0; } GPIO со стороны FPGA отображенные в память процессора работают нормально, а вот со стороны HPS удается зажечь только первые 2 из 4. И ещё странный эффект. После того как я записываю 1 в GPIO54 он должен непрерывно гореть, но он сбрасывается после того как система моргнет GPIO53. P.S. Описание регистров и их адреса я брал вот отсюда: https://www.intel.com/content/www/us/en/programmable/hps/cyclone-v/hps.html#topic/sfo1410069909712.html#sfo1410069909712
  6. Очередные грабли. Пересобрал preloader и u-boot. Подправил dts и сделал из него dtb. Закинул все это дело на SD карту, но проект заработал не так как я ожидал. GPIO53, 54, 55, 56 настроены как GPIO. I2C0 отключен. Светодиоды прописаны следующим образом: Для HPS. leds { compatible = "gpio-leds"; hps0 { label = "hps_led0"; gpios = <0x33 0x18 0x0>; linux,default-trigger = "heartbeat"; }; hps1 { label = "hps_led1"; gpios = <0x33 0x19 0x0>; linux,default-trigger = "heartbeat"; }; hps2 { label = "hps_led2"; gpios = <0x33 0x1a 0x0>; linux,default-trigger = "heartbeat"; }; hps3 { label = "hps_led3"; gpios = <0x33 0x1b 0x0>; linux,default-trigger = "heartbeat"; }; }; Для FPGA. leds { compatible = "gpio-leds"; fpga0 { label = "fpga_led0"; gpios = <0x31 0x0 0x0>; linux,default-trigger = "heartbeat"; }; fpga1 { label = "fpga_led1"; gpios = <0x31 0x1 0x0>; linux,default-trigger = "heartbeat"; }; fpga2 { label = "fpga_led2"; gpios = <0x31 0x2 0x0>; linux,default-trigger = "heartbeat"; }; fpga3 { label = "fpga_led3"; gpios = <0x31 0x3 0x0>; linux,default-trigger = "heartbeat"; }; }; По идее все светодиоды должны моргать одновременно, но: 1) 2 и 3 светодиоды на HPS вообще не моргают. Причем это именно те GPIO на которые в изначальном проекте был выведен I2C0. Я его отключил, но они все равно не работают. 2) Светодиоды на HPS и FPGA переключаются по очереди. Что я делаю не так?
  7. UPD. Нашел в чем была проблема с переназначением светодиода на уже имеющийся GPIO. В u-boot.scr неправильно указал имя файла.
  8. А если система в QSYS не менялась и есть свободный GPIO, достаточно просто пересобрать dtb? Просто я пробовал вообще убрать светодиод из dts чтобы его отключить, но даже с пересобранным dtb он продолжил моргать.
  9. Есть отладочная плата с Altera SoC у которой светодиод, задействованный в linux (моргает при загрузке/работе HPS), выведен на GPIO53. Хочу вывести его на другой GPIO. Подскажите, пожалуйста, как его правильно переназначить. Пробовал вручную править dts, а затем собирать его в dtb, но это не сработало.
  10. Может временный глюк форума? Сейчас проверил, все скачивается.
  11. Мы у них пытались не платы купить, а самые большие чипы семейства Arora. Причем не одну штуку, а наладить контакт для постоянной закупки их чипов для всех наших проектов. Результат как я написал выше :(
  12. Мы уже месяц пытаемся договорится с GOWIN о поставках. Цитата нашего отдела снабжения: "GOWIN на поверку оказался матёрой военщиной, и пока они готовы продать продукцию, но с полным контролем на всех циклах, начиная от нашего обучения там и заканчивая их представителями при проведении работ." На таких условиях они естественно идут лесом. Так что GOWIN, к сожалению, не вариант :(
  13. Народ, а кто-нибудь слышал про следующих производителей ПЛИС? http://www.isilicontek.com/FPGA1 http://www.alta-gate.com/products.aspx?lan...;id=61&p=14 Реально ли их купить в России и достать документацию на английском языке?
  14. Коллеги, помогите, пожалуйста, решить проблему. Сделал Block Design, но он почему-то не работает. Сигнал waitrequest на любой из шин Avalon всегда в 1. Если принудительно выставить write или read, то waitrequest переключает в 0 и дает записать/считать некоторое количество данных, но после этого возвращается в 1 и намертво зависает. P.S. Hardware Manager пишет, что контроллер успешно проходит калибровку, так что видимо дело в остальной части схемы.
  15. На всех альтеровских ПЛИС в момент конфигурирования все выводы в третьем состоянии со слабой подтяжкой (20-50кОм) к VCCIO. Возможно, что в 5576ХС эта подтяжка не реализована, поэтому приведены требования на внешние резисторы. Попробуйте померить напряжение на каком-либо входе у не сконфигурированной ПЛИС и сразу станет ясно нужна внешняя подтяжка или нет.