Pull to refresh
35
0
Сергей Новиков @Pisikak

Embedded-разработчик

Send message

Здравствуйте.

У меня получилось перенести этот дизайн в VIVADO под Kintex XC7K325T.

Я решил это сделать в графическом виде.

Общий вид
Общий вид
Конечный автомат и i2c контроллер
Конечный автомат и i2c контроллер

В процессе возникли сложности с синтезом. Никак не хотели синтезироваться конструкции с тремя состояниями из прошлой статьи.

assign scl_io = (scl_r) ? 1'bz : 1'b0;

У меня от такой записи синтезировались просто OBUF ну и конечно же обе линии (SCL, SDA) "лежали за "земле". Кстати если заменить "z" значение в этом мультиплексоре на "1", то осциллограмма получалась верная, но OBUF не работают на вход.

Мной были использованы OBUFT (https://docs.amd.com/r/en-US/ug953-vivado-7series-libraries/OBUFT) для SCL и IOBUF (https://docs.amd.com/r/en-US/ug953-vivado-7series-libraries/IOBUF) для SDA.

В коде это выглядит вот так:

// assign scl_io = (~scl_r) ? 1'b0 : 1'bz; // избавляемся от мультиплексора

OBUFT #( // включаем OUTPUT в библиотечный элемент 
   .DRIVE(12),     // Specify the output drive strength
   .IOSTANDARD("DEFAULT"), // Specify the output I/O standard
   .SLEW("SLOW")   // Specify the output slew rate
) OBUFT_inst_scl (
   .O(scl_io),     // Buffer output (connect directly to top-level port)
   .I(1'b0),       // Buffer input
   .T(scl_r)       // 3-state enable input
);

Теперь в SCHEMATIC можно наблюдать правильный выход после синтеза:

С SDA чуть-чуть посложнее. IOBUF был включен в TOP-LEVEL файле. Для это из I2C_bit_controller потребовать вывести сигнал наружу:

//---------------------------------------------------
assign T = into_w || sda_r; // здесь Т - это OUTPUT
//---------------------------------------------------

Теперь в TOP-LEVEL файле подключаем библиотечный элемент:

wire T;     // провод для design_wrapper
wire sda_w; // провод sda, по нему пойдут даннные из SLAVE в MASTER через IOBUF

IOBUF IOBUF_inst_sda (
  .O(sda_w),     // Buffer output
  .IO(sda_io),   // Buffer inout port (connect directly to top-level port) // sda_io
  .I(),          // Buffer input
  .T(T)          // 3-state enable input, high=input, low=output // (into_w || sda_r)
);

В design_wrapper включаем правильные сигналы:

...
.scl_io_0(scl_io),
.sda_io_0(sda_w), // sda_io
...

Теперь это будет работать на реальном железе. На моей кастомной плате нет семисегментников, поэтому для вывода данных была использована двухпортовая BRAM память. Один порт в Microblaze, а второй управляется кастомным контроллером из прошлых статей автора. Так для отображения всех данных я буду использовать терминал, данные в который поступают из софт-процессора MICROBLAZE. По линии I2С на этой плате управляется PLL LMK03318 (https://qeeniu.net/product/LMK03318#all). В cnt_0_data (по адресу 0xC000000C) отображается номер регистра, в cnt_1_data (по адресу 0xC0000010) данные, которые мы хотим записать по i2c линии в микросхему, а в cnt_2_data (по адресу 0xC0000014) считанные данные.

После включения питания и сброса (по кнопке RESET) адрес регистра устанавливается в 0xA, а данные, которые необходимо записать в 0xDE.

Нажимаю кнопку чтения.

В регистр записалось значение 0x0A, что по даташиту соответствует адресу микросхемы по-умолчанию.

Установим адрес 0xC

и запишем по этому адресу значение 0xDE в микросхему. Это будет соответствовать отключению функции AUTOSTART LMK03318.

Делаю сброс (кнопкой RESET) и считываю регистры в приложении для Microblaze:

А потом опять 0xDF

Summary. Пользуясь моментом хочу сказать спасибо автору этих статей, я думаю что благодаря Вам проектирование под плис и программирование становится доступным каждому кто захочет в этом разобраться. Комментарий получился объемным, но очень поверхностным. Если у кого-то будут вопросы - не стесняйтесь писать, я постараюсь ответить.

Пробовал я герметизировать вал вот в этом проекте https://habr.com/ru/articles/748346/. Использовал сальник. Обороты двигателя достигают 5000 в минуту и это разогревает сальник до критических значений даже под водой! Он деформируется и начинаются проблемки

Фото девайса, который меня заинтересовал
Фото девайса, который меня заинтересовал

Отличный проект! Я как-то увидел в магазине такой девайс и тоже захотел повторить успех с помощью 3d принтера, но еще не брался даже. А тут уже и статья есть. Меня особенно впечатлило Ваше видео, спасибо.

Ну этож делать надо) сил, времени и денег хватило на самое необходимое

Да вобщем-то пока никак. Пульт, который я использую оснащем курком на пружине, отпустив который тяга пропадает. Но с этим лучше что-то сделать, потому что некоторые бросят курок от испуга падения, а некоторые выжмут до конца и будут держать. В идеале я бы реализовал курок с рабочим положением в центре. А в крайних положениях тяга отсутствовала бы. Самое плохое, что часты ситуации, когда я падаю вперед и не убери я тягу, доска наедет на меня

Flipper zero тоже ничего ;) Мечты должны сбываться) я тоже стал интересоваться темой передачи и приема радиосигналов. Собирая разные приемопередатчики не знал на что грешить. Теперь есть заведомо рабочая вещица и жить стало легче. Ну и с отладкой вообще почти нет проблем, потому что я теперь точно знаю что сигнал уходит в эфир.

P.s. спасибо Вам за статью и Ваше усердие)

Отправитель и получатель
Отправитель и получатель

Кстати, у Flipper Zero тоже есть возможность принимать пейджинговые сообщения. Я хотел купить пейджер на Авито, но продавец, который ближе всех не хотел отправлять, а встретиться мог только на выходных. В общем пока я ждал выходных, отправил сообщение на FZ и успокоился :-)

Даже не представляю как герметезировать двигатель без использования фрезеровки=)

Я заметил, что без SSD теперь можно сойти с ума, пока пережидаешь "тормоза" ОС

GoPro это хорошо, но на эти деньги можно купить новый пульт, срарку для 18650 и пару акб собрать.

Можно собрать DIY дрона что бы снять видео про DIY электрофойл, вот это было бы круто😃

Чехол для телефона работет) спасибо за совет

https://vk.com/wall111262040_4094

Вот видео от первого лица) видео не передаёт тех ощущений, поэтому лучше попробуйте прокатиться :)

Фото моего электроскейта
Фото моего электроскейта

Постараюсь повспоминать, чтобы набралось для статьи) На самом деле, я на нем аккумуляторы тестировал:)

https://vk.com/wall111262040_4094

Вот что получилось снять на телефон. Видео от первого лица. Вживую в этлм участвовать интереснее)

Отличная идея, спасибо!

А я до Вашего комментария рассматривал вот этот
https://sl.aliexpress.ru/p?key=PGRNZhm

А раз Ваш проверен, буду брать) спасибо

Спасибо за совет. Я тоже решил для себя перейти на сварку, потому что качественно паять аккумуляторы это по-настоящему долго

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Embedded Software Engineer
Lead
From 300,000 ₽
STM32
Arduino
AVR C
FPGA