Вы видите копию треда, сохраненную 19 февраля в 20:27.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый тред >>316943 (OP)
74LVC1GX04? В чем разница буферизированный инвертор и небуферизированный инвертор?
Для третьего пика
module ClkGen(clkIN, clkOUT);
input clkIN;
output clkOUT;
wire clkOUT;
assign clkOUT = ~clkIN;
endmodule
Один не включается совсем, EP3C40F484C8N греется, жрет пару ампер, питание ядра просаживается до 1.1в. Чип под замену или возможно проблема где-то раньше в процессоре не загружающим в него конфигурацию?
Со вторым сложнее, устройство включается и работает во многих режимах, но не работает часть входов а именно AES3 аудио. Все входные цепи - трансформаторы, mc3486 и куча lm358 непонятного предназначения уже менялись. Индикатор линка (вероятно что pll lock) загорается, но sampling rate не показывает, звука нет.
Что стоит посмотреть прежде чем приступать к прожарке и замене чипов по 70 евро?
На XP тоже отказывается видеть, если что.
1) Начни вот с этой книжки
https://www.amazon.com/Digital-Design-Computer-Architecture-Edition/dp/0123944244
Там все очень хорошо расписано. От азов до верхов. Читать обязательно.
2) После этого можешь начать какой-нибудь онлайн курс смотреть. Скачаешь IDE, симулятор какой-нибудь и будешь делать лабы. Здесь просто пиши исходники на VHDL, запускай и смотри результат.
3) Здесь уже можешь решить, что тебе интересно. Направлений много. Выбери свое и двигайся. На этом шаге ты уже будешь знать, что к чему.
Ее хабр перевел, ищи лучше.
>Тогда начни
Ты посмотри на комплект плат этого "начинающего" вкатывателя. Он тебя траллирует, а ты ведешься как нуб.
Какой-то мусор на пике, и не факт, что этот мусор его. Может это сорокоёб постил, без сап-а вообще поебать на картинки.
А мне английскую, а то бесплатную книгу на амазоне продают, а чтобы скачать надо где-то регаться и кучу движений совершать.
>>398380
Чем эта книга лучше Таненбаума?
Потому что был ниос, а потом завезли циклоны с интегрированным армом?
https://aliexpress.ru/item/4000238415432.html
https://aliexpress.ru/item/4000090399617.html
https://aliexpress.ru/item/32915690009.html
https://aliexpress.ru/item/32879727790.html
Не совсем оно, но очень и очень близко.
Фапальщик на гидроавтобус Hydrabus
>а зачем, если в пятом уже встроенный арм?
Уважаемый, пиздеть надо ОСТОРОЖНО!
В этом куске говна НЕТ HPS https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-v/cv_51001.pdf стр.5 табличка 3 строка 1 - "Cyclone V E Optimized for the lowest system cost and power requirement for a wide spectrum of general logicand DSP application".
HPS в виде ARM ядер есть в серии SE SX ST
Запостил бы старую ссылку на Zynq 7000 с прошлого треда - https://www.aliexpress.com/item/4000323573953.html . Тут да, реальный SoC в виде FPGA+ARM.
Когда я на них смотрел (лет так 7-9 назад) — в районе $100 за плату, сейчас (у пары продавцов на алиэкспрессе) примерно $85/$58 (голая плата) - $134/ $111 (набор с какой-то фирменной хуйнюшкой в качестве отладчика — перевода с китайского не завезли).
Я помню что её цена была значительно ниже, чем сейчас.
https://www.ebay.com/itm/zaloopa/172259870747
Но поскольку мой кукарек беспруфный, то да, чот дороговато получается на данный момент (20$+15&+10(?)$ vs 90$)
Толсто.
Слушай, пожертвуй мне плату, всё равно ж валяется у тебя без дела.
Ещё чем-то. Где-то читал, но забыл где.
Тем, что там ничего нет. Поддержки 64 бит — нет, поддержки многоядерных процессоров — нет… https://www.edaboard.com/showthread.php?195003-What-is-difference-between-Questasim-amp-Modelsim&p=1393929&viewfull=1#post1393929
> Уже два года вкатываюсь, тоже что покупал пылится в шкафу. Пока периодически читаю тред здесь.
Аналогично. Курсы Jack0v мотивируют + есть хоть и бредовая, но идея для проверки, а это значит что пора действовать, а не прочитал/послушал и забыл.
Пока что застрял на таком веселом моменте как нужен отладчик отладчика для отладчика. Здесь нет ошибки. Отладчик для отладчика. Лол. Практически готов, успел одну флексину спалить.
Иногда сосу хуй (пикрил), приходится что-то другое придумывать.
Платиновый вопрос: а почему голый чип стоит больше 100$, а обёрнутый в кусок китайца стоит 66$?
Потому что ты хуй те китайцы, что эти платы делают, покупают чипы не на алиэкспрессе не по розничным ценам.
Наркоман штоле? Чипы на алиэкспрессе это какой-то осбой вид извращений. Я не вижу оптовых партий этого чипа в этих ваших ентернетах. Покажи, что ли, охота на оптовую цену посмотреть.
>Платиновый вопрос: а почему голый чип стоит больше 100$, а обёрнутый в кусок китайца стоит 66$?
Пизженный скорее всего. Или демонтаж с плат с такими чипами.
Ну, по 60-70$ всё-таки есть в проверенных магазинах, так что могут вполне нормальными оказаться.
А чем пизженные ненормальные?
Есть тут ребята кто мониторил этот вопрос в теории или на практике?
Тупой вопрос 1: Насколько глубоко нужно понимать процессоры? Достаточно ли знать систему команд и принципы работы АЛУ, или нужно что-то ещё?
Тупой вопрос 2: Какой нужно брать ПЛИС? Сомневаюсь, что MAX3000A хватит...
>Какой нужно брать ПЛИС? Сомневаюсь, что MAX3000A хватит...
https://opencores.org/projects/a-z80
MAX сразу в помойку или на замену россыпчатой логики.
FPGA минимум на пару тысяч LE и больше. Намного больше.
Если делать спектрум целиком, то процессор может даже не самый объемный по занимаемым ресурсам. К примеру та же память, не будешь же лепить ее снаружи, когда ее в относительно дешевых FPGA и так хватает для спектрума. А если процессор почти без ничего, то почему именно Z80?
Можешь посмотреть самые дешевые платы на циклоне 4 с алиэкспресса, на подобное вполне должно хватить.
> К примеру та же память, не будешь же лепить ее снаружи,
Честно говоря собирался...
> почему именно Z80?
Ну процессор середины 70-х, много где использовался, вроде как несложный сам по себе, имел море клонов. Стало быть, для начала сойдёт. Плюс спектрумы, есть вариант собрать-поиграться-вспомнить детство, speccy2010 ЧСВ не потешит :)
>Насколько глубоко нужно понимать процессоры?
Нужно знать архитектуру своего процессора с точностью до вентиля.
Нет, он вовсе не такой простой. Например, чем 8-разрядный сумматор с последовательным переносом проще такого же 16-разрядного? Вот и с процессорами аналогично.
Да и не так интересно процессоры делать, их и так полно готовых. Быструю свертку и то немного интереснее будет делать.
>>400129
Про точность до вентиля, у того анона естественно был бред, но совпадение по тактам разве не требуется?
>но совпадение по тактам разве не требуется?
А как ты добьёшься совпадения по тактам не повторив структуру? Ну получится у тебя +/- инвертор.
Элементарно. В качестве примера можно привести сумматоры, которые бывают с быстрым переносом, а бывают с простым последовательным.
Посмотри хоть схему К155ИП3 (74181), можно сделать как там, а можно тупо отдельные сумматоры, инверторы и прочее через мультиплексоры и демультиплексоры. И так далее вся комбинационная логика и не только.
В ПЛИС вообще на LUT-ах все делается, какие там еще вентили. На ПЛИС вообще нет смысла повторять такое как К155ИП3, из-за структуры ячеек.
Други, нужно из частоты в 5 МГц получить 100 МГц (вероятнее всего должен быть умножитель на ФАПЧ). Какие ПЛИСины лучше под это дело взять?
Именно под это дело бери Альтеру, Циклон 4 например, как там в 5 я не знаю, я с ним толком не работал, но по логике вещей должно быть лучше. PLL там хороша тем что очень точно могёт выдавать нужную частоту, с очень мелким шагом, вплоть до 3-х знаков после запятой, а может и больше. Спартан 6 в этом плане и рядом не валялся.
Да причём здесь луты и внутреняя архитектура плис? Всё равно на верилоге всё писаться будет.
Ну так чтобы мочь разработать свои сумматоры и прочее нужно, как минимум, в этом соображать. И второй вопрос, зачем пороть отсебятину, чтобы наделать там ошибок и потом 100500 часов сидеть их вылавливать? Не проще ли уже имеющуюся архитектуру как есть переложить на плис? Ну да, про "знать" это я немного не так сказал, нужно не знать, а понимать или смочь понять архитектуру с точностью до вентиля.
> Не проще ли уже имеющуюся архитектуру как есть переложить на плис?
А смысл? Тогда проще взять готовое на https://opencores.org/
А ещё проще вообще взять готовую микруху, а не ПЛИС.
Опять не соглашусь. Просто делаешь так, чтобы по тактам было не больше чем в оригинале, тем более что двухпортовая память FPGA в этом сильно поможет, после чего добавляешь дополнительные такты. Можно даже параметром сделать, либо быстро, но не совпадает по тактам, либо медленнее и совпадает.
ФАПЧ можно взять отдельной микросхемой. Что-то вроде LMK03000 или попроще.
Первое - idt5v9885 с EEPROM для хранения настроек.
Второе - Si5326 + тактовый генератор + еще один генератор на 114Мгц для очитки джиттера.
Третье от анальных девайсов AD9518.
Вообще - тысячи их. На любой вкус и цвет. Проблема в том что оно конфигурируемое и не все умеют в подсос конфига с внешней микросхемки памяти.
>Второе - Si5326 + тактовый генератор + еще один генератор на 114Мгц для очитки джиттера.
SI5351 нашё всё, один кварц + кондёры по питанию, сигнал чище, чем встроенные ПЛЛ в ПЛИС-ках
>SI5351
Какой из? С буквой А не умеет во внешний тактовый сигнал (заявлено в условиях) в явном виде, нужен кварц. Версия С умеет во внешний тактовый сигнал.
Любая работает
>Ну да, а всякие флаги, стеки и прочая срань, это не говоря о недокументированных функциях - как это всё?
Флаги со стеками это по сути часть набора команд. Есть набор команд и набор регистров (доступных программно) с описанием их работы, то есть то, что в русскоязычной литературе называют программной моделью, а в англоязычной называют ISA. Среди набора команд есть команды, которые работают со стеком и есть команды, как-то взаимодействующие с регистром флагов. Делаешь все в соответствии с этой моделью и у тебя все работает как в оригинале, за исключением недокументированных команд, либо набор команд будет не от Z80. А недокументированные команды также все описаны.
Не при чем тут эта структура "с точностью до вентиля".
>Тупой вопрос 1: Насколько глубоко нужно понимать процессоры? Достаточно ли знать систему команд и принципы работы АЛУ, или нужно что-то ещё?
Правильней будет ответить, что требуется умение нарисовать схему процессора из одних NAND-ов.
>что в русскоязычной литературе называют программной моделью, а в англоязычной называют ISA.
https://electronics.stackexchange.com/questions/365367/what-is-a-programmers-model
ISA is a part of the programming model
Допустим возьмем http://cs.istu.ru/index.php?project=asm&page=_theory_pacm_programmodel_
Перечисляются регистры, виды адресаций и прочее, далее, где-то в приложении, приведена таблица команд с описанием. И сравни это с определением ISA хотя бы из википедии. В ISA по любому должно входить описание доступных программно регистров и всего такого, то есть то, что написано в первом ответе по твоей ссылке. Так что это программная модель может быть частью ISA (если к программной модели не прилагается список команд с описанием), а не наоборот.
Вообще какого-либо общепринятого стандарта на эти термины нет, поэтому ими могут называть несколько разные вещи.
>Так что это программная модель может быть частью ISA (если к программной модели не прилагается список команд с описанием), а не наоборот.
>This section [programming model] normally presents the core registers of the processor, operating modes, endianness and the instruction set.
В "программной модели" описывают, что как используется, взаимодействует и вообще есть описание ISA:
>>>400327
>далее, где-то в приложении, приведена таблица команд с описанием.
"programming model" - это описание более высого уровня абстракции и оно опирается на ISA (и часто содержит описание ISA в каком-либо виде, часто сокращённом).
>>400327
>(если к программной модели не прилагается список команд с описанием), а не наоборот.
Без "списка команд" нельзя сделать програмную модель, потому что нужо опираться на что-то - это регистры, datapath, команды. Как ты представляешь програмную модель без этого?
Только вот интел не очень охотно возит плисины в рашку, поэтому приходится давиться вивадой.
Хотя ися вроде нечего.
Ты охуел. Он для суровых дидов, которым мозги не позволяют уже использовать HDL и прочие хипстерские технологии для милениалов.
>ПЛИС / FPGA
Т.е. мне тут не рады и мне придеться создавать отдельный тред?
мимо CPLD-боярин
Кажется что-то было под салат Lattice, включая даже обратный "диазссемблер" конфигурации. Но это не точно.
Ага, я вот что-то такое видел, но так и не понял, на какое количество вентилей можно примерно рассчитывать.
Сколько в Lattice iCE40 и китайских GW1N/GW2A есть, на столько и рассчитывай: http://www.clifford.at/yosys/faq.html
Если что - с тобой. То же интересно потыкать цинк палочкой для переката на их дешманские RFSoC. Платка от QMTech есть, клон platform cable на ft232H есть, какая-то блевада стоит. Максимум запускал штатную поставку. На этом пока все, поглядываю в Embedded SoPC Design with Nios II Processor and Verilog Examples от Pong P. Chu
Да.
>Можно ли тактировать ПЛИС синусом
Зависит от амплитуды и от подключения "синуса"
Нужно ставить разделительный конденсатор и смещение в пол-питания на входной пин, пик-ту-пик (размах) желательно около напряжения питания буфера.
Добра тебе, анон!
>Проц тоже через jtag
Немного мутный вопрос - сейчас мало кто дебажит тяжелые ARM ядра особенно когда запущен Linux - отладчик не нужен, если только не упарываешься BareMetal. У Альтеры краем уха слышал можно через тонну анальных прог и освидетельствований дебажить ARM ядро синхронно и потактово с FPGA частью.
Если не в падлу будет - попробую. Хоть и малоактуальный, но интересный вопрос.
Тоже хочу вкатиться, другой анон. Harris&Harris прочитан, был курс в шараге цифровой схемотехники где на верилоге писал bcd в bin переводилку, архитектуры были, электродинамика. Так вот что дальше, есть какие то путные задачники по fpga? Или куда приебаться стажёром?
Мнение мимохуя - попробуй упарываться Ethernet-ом. Максимально тупо https://marsohod.org/index.php/projects/94-ether-send или прилепить внешнее PHY по rmii или mii и тупо по UDP слать говно компу. Вот реально - самый конченный, тупой и дебильный вариант - это выставить MAC в FF (лучше хотя бы жестко прописать MAC приемного компа что бы не ебаться с ARP), IP адрес компа (или широковещательный подсети, но не стоит так делать), неизменный заголовок UDP (с одним и тем же портом назначения) и... Profit!
Получил односторонний обмен на довольно хорошей скорости - под 100 мегабит (если использовать стандартные фреймы по 1.5К). Для отправки даже MAC корка не нужна - заранее подготовленный фрейм с преамбулой выдаешь по 2 или 4 бита за такт и соблюдаешь паузу между высиранием фреймов. Вот и все.
Согласование скорости с PHY - пока забей хер. Ну вот где сейчас встретишь полудуплекс или те же 10 мегабит? 100 мегабит и фулл дуплекс. А там и на гигабит переедешь.
>Ethernet-ом.
Слишком сложно будет для новичка сразу погрузиться в протокол tcp/ip и код манчестр 2.
Лучше пусть для начала соберет простенький УАПП. Поначалу будет слать байты, потом можно протокол какой-нибудь реализовать с адресом и аппаратной генерацией контрольной суммы.
А потом уже можно браться за интернет и более сложные протоколы связи.
>сразу погрузиться в протокол tcp/ip и
Поосторожней на поворотах. Явно же описано что это (tcp/ip который реально сложен в отличии от UDP) нахуй не надо на первых порах, так как тупо скопировал заголовок из реального UDP пакета с контрольными суммами, где в поле данных дописывать свои данные ну и CRC фрейма что бы свич не отбросил фрейм как ошибочный, или класть хуй при прямом подключении к компу в выделенную сетевую карту и wireshark покажет приниятые битые фреймы.
>код манчестр 2
Вдвойне нахуй эти анальные утехи. Сейчас такой херней никто не страдает, потому как ставится специальные Ethernet PHY для "низкоскоростной" меди/оптики с подключением по хxxMII, при подключении только оптики - высокоскоростные SERDES и прямое подключение к SFP модулям.
Можно доебаться про 10G PHY которое делит/собирает линк на 4 по 2.5G для использования менее скоростных SERDES в ПЛИС.
Еще добавлю некрофилии и садомазо:
http://www.equicom.ua/ping/ping1/ping1.htm
http://caxapa.ru/51876.html
https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=44276
Кто там рассказывал про стек TCP/IP? Вы серьезно?
Кто там кукарекал про Ethernet PHY? А не пошел бы ты нахуй?
> и тупо по UDP слать говно компу.
Нахуа? Комп отлично принимает и чистый езернет.
>что бы не ебаться с ARP
А зачем с ним ебаться? Он вообще тут не причём.
>Нахуа? Комп отлично принимает и чистый езернет.
Не могу не согласиться, но для таких довольно низкоуровневых работ нужно больше прав, чем у обычного пользователя и далеко нестандартный софт. Прилепив UDP с портом больше 1024 - уже из пользовательского пространства можно подключаться к сокету и слушать его. Про винду не знаю, в unix - через программу nc открыл сокет и как минимум можешь спокойно дампить содержимое в файл, перенаправлять по конвейеру в другие программы. Для отладки на ПК - ни строчки кода не писал, только штатные утилиты. Ну и tcpdump в помощь при особо тяжелых случаях.
>>401700
>ARP
>Он вообще тут не причём.
Ты из ПомогиТупомуУстроиться? Расскажи что делает ARP и потом продолжим.
O RLY? Как на канальном уровне будешь до компа доставлять бурлящие потоки говна? Ебанешь броадкастом что бы прям все знали что кто-то пытается просраться? Поэтому и писалось - прибить гвоздями МАС адрес компа чтобы не задристать всю сеть.
На первое время, а не на постоянку - крайне порочная практика
>Ты из ПомогиТупомуУстроиться? Расскажи что делает ARP и потом продолжим.
Ну так я и говорю что без использования TCP/IP никакие ARP не нужны. Всё происходит на уровне МАС-адресов. А как его узнать - ну так первое время не надо в сеть выходить. Соединил плисину с ПК витой парой на прямую и радуйся жизни. На первое время этого более чем достаточно.
Если делать что-то, управляемое по Ethernet, проще делать это сразу с помощью готового стека протоколов на nios и готового ядра типа triple speed Ethernet. У интела на сайте куча примеров, тот же simple socket server (https://fpgacloud.intel.com/devstore/platform/15.1.0/Standard/nios-ii-simple-socket-server-ethernet-example-for-cve/), изменил под себя и уже срешь в сеть полноценными пакетами. Но для этого нужна более жырная ПЛИС, ну и дополнительная плата с Ethernet PHY и трансформатором.
У нас были задания сделать антидребезг на кнопку, поебаться с датчиком по spi/uart, потеребить энкодер, сделать АЦП последовательного приближения на внешних компараторе и цап-царапе на r2r цепочке, можно ещё осциллограф/генератор на внешнем АЦП/ЦАП сделать, но это дольше и дороже.
А вообще, все зависит от области, куда хочет вкатиться анон - интерфейсы, цос, вычисления, измерения, etc, областей работы плисоконтор в его городе и железяк, которые у него есть.
> triple speed Ethernet
А не чё что он платный и работает только пока подключён программатор?
Не, ни чё страшного.
Где спиратить The RISC-V Reader на инглише? Все ссылки гугла ведут в лучшем случае на амазон, в большинстве же случаев - вникуда.
Я представляю что это некоторое усреднённое значение быстродействия кристалла, но хотелось бы конкретики.
2 по скорости выше чем 3?
Сильно сосну, если вместо 3 возьму 2?
Попробуй как у Altera - где-то под конец даташита есть табличка где написана максимальная частота для каждого спидгрейда.
Имеющееся говнецо SL200C3 почти самое быстрое в серии.
А впрочем, вру. Это в Яндексе нашлось. Его тоже стоит использовать, если хочешь что-то платное бесплатно найти.
Эх, ещё в китайнете много годноты, вот прямо очень много, но там везде нужен китайский телефон и китайская платёжная система. Хоть в Китай едь на их форумах регаться.
бля чо это?
Есть у него, конечно, важное преимущество: всю уёбищность симулятора вивады дл SV, написанного потными индусами из колл-центра как прошивка от Боинга, который неспособен адекватно обрабатывать "<=" внутри классов и интерфесов, которые приходится из-за этого обмазывать омерзительными костылями уровня "менять сигналы на posedge, считывать значения по negedge", за которые в обычном верилоге я бы давно уже сделал судоку, которые стыкуются через интерфесы с обычными синтезируемыми модулями, где всё, естественно, делается исключительно по posedge — всё это говно можно инкапсулировать в класс driver и делать вид, что там ничего этого нет, перекидывая байтики в виде объектов на более высоком уровне абстракции.
Почему не пользуешься бесплатным модельсимом?
Есть у меня подозрение что ты не очень понимаешь таймслоты симулятора если у тебя беды с присваиваниями в классах. У меня у студентов такая ошибка частая (гонки сигналов, приемник принял сигнал раньше чем передатчик его отправил в тот же такт)
>Почему не пользуешься бесплатным модельсимом?
Сижу на виваде, начал с того, что есть в ней.
>Есть у меня подозрение что ты не очень понимаешь таймслоты симулятора если у тебя беды с присваиваниями в классах. У меня у студентов такая ошибка частая (гонки сигналов, приемник принял сигнал раньше чем передатчик его отправил в тот же такт)
Да я как бы не первый день замужем, знаю, чем блокирующие присваивания от неблокирующих отличаются. Вот проблема, ужатая до самого минималистичного варианта, счётчик + интерфейс с шиной и парой сигналов ready/valid: https://pastebin.com/6ASBKYRD
В драйвере в цикле ждём валидную транзакцию posedge iff (ready && valid) и устанавливаем для data следующее значение. На 1.png видно, что симулятор сперва меняет значение ready, потом читает его и обновляет data, хотя ready присваивается через <=, и на фронте клока, по идее, должно действовать старое значение. С valid всё норм, так и происходит..
Один вариант костыля: сделать присваивание ready с задержкой через <= #1, чтобы значение менялось гарантированно после posedge clk. Работает (2.png), но этот костыль совсем уж кривой.
Другой вариант костыля: читать внутри драйвера значения по negedge, менять по posedge. Работает и приемлемо выглядит (3.png), пока остановился на нём.
Бумп. Я про байтбластер/программер если что.
>работает только пока подключён программатор
Поставить кряк на квартус нам, конечно же, лень?
Нужен лицензионный файл, в который прописаны все нужные корки. Если квартус пропатчен, то можно просто скопировать какую-нибудь строку (например, с лицензией на сам квартус) и заменить там название feature на нужное тебе (только важно его выяснить - например, узнать у кого-нибудь на форумах или посмотреть в настоящий лицензионный файл, если есть возможность).
Спасибо няша
Как избавиться от этого пиздеца?
assign out = bus[0] || bus[1] || bus[2] || bus[3] ||
bus[4] || bus[5] || bus[6] || bus[7] ||
bus[8] || bus[9] || bus[10] || bus[11] ||
bus[12] || bus[13] || bus[14] || bus[15]||
bus[16] || bus[17] || bus[18] || bus[19]||
bus[20] || bus[21] || bus[22] || bus[23]||
bus[24] || bus[25] || bus[26] || bus[27]||
bus[28] || bus[29] || bus[30] || bus[31]||
bus[32] || bus[33] || bus[34] || bus[35]||
bus[36] || bus[37] || bus[38] || bus[39]||
bus[40] || bus[41] || bus[42] || bus[43]||
bus[44] || bus[45] || bus[46] || bus[47]||
bus[48] || bus[49] || bus[50] || bus[51]||
bus[52] || bus[53] || bus[54] || bus[55]||
bus[56] || bus[57] || bus[58] || bus[59]||
bus[60] || bus[61] || bus[62] || bus[63];
Ну как бы да, есть унарные версии всех логических операндов
https://www.nandland.com/verilog/examples/example-reduction-operators.html
Именно
>Вхдльщики сосут в этом плане
В VHDL есть функции or_reduce и подобные, а в VHDL 2008 появились унарные операторы как в верилоге.
Унарный оператор - это оператор, который работает с одним операндом. Оператор редукции принимает один операнд, а не два и не три, поэтому он унарный.
Операторы с двумя операндами - бинарные. С тремя - тернарные. ТАкие дела.
Операторы редукции работают с каждым битом на шине как с самостоятельным операндом. Поэтому их и выделяют в отдельную категорию.
>>405134
>Операторы редукции работают с каждым битом на шине как с самостоятельным операндом.
Ещё раз повторюсь, оператор редукции принимает один операнд. Значит это - унарный оператор.
А то, что унарные операторы могут принимать (в общем случае) значения разных типов и если принимают сложные (составные, вроде вектора) типы, то это никак не делает из унарного оператора неунарный. Так же как работа бинарного оператора И над двумя векторами не делает из бинарного оператора небинарный.
`timescale 1ns/1ps
module Zhopa(input [15:0]AdrBus,
inout reg [15:0]DataBus,
input nCS, nWR, nRD);
always @
if(!nCS & !nRD & nWR)
case(AdrBus)
16'h0000: DataBus = 16'h00_00;
16'h0010: DataBus = 16'h00_0F;
16'h0080: DataBus = 16'h00_F0;
16'h0081: DataBus = 16'h0F_00;
default: DataBus = 16'dZ;
endcase
else DataBus = 16'dZ;
endmodule
module TestZhopy();
reg [15:0]AdrBus = 0;
wire [15:0]DataBus;
reg nCS = 'd1;
reg nWR = 'd1;
reg nRD = 'd1;
Zhopa Zhopa(.AdrBus(AdrBus),
.DataBus(DataBus),
.nCS(nCS), .nWR(nWR), .nRD(nRD));
initial
begin
#10 AdrBus = 'h0080;
nCS = 0;
#10 nRD = 0;
#10 nRD = 'd1;
#10 AdrBus = 0;
nCS = 'd1;
#10;
$stop;
end
endmodule
Моделсиму не нравятся присвоения значений к регистровой переменной в cаse, выдаёт ошибку
* Error: ../#SRC/Zhopa.v(8): (vlog-2110) Illegal reference to net "DataBus".
Хотя Квартус и компилирует и моделирует нормально. Чё за нах?
`timescale 1ns/1ps
module Zhopa(input [15:0]AdrBus,
inout reg [15:0]DataBus,
input nCS, nWR, nRD);
always @
if(!nCS & !nRD & nWR)
case(AdrBus)
16'h0000: DataBus = 16'h00_00;
16'h0010: DataBus = 16'h00_0F;
16'h0080: DataBus = 16'h00_F0;
16'h0081: DataBus = 16'h0F_00;
default: DataBus = 16'dZ;
endcase
else DataBus = 16'dZ;
endmodule
module TestZhopy();
reg [15:0]AdrBus = 0;
wire [15:0]DataBus;
reg nCS = 'd1;
reg nWR = 'd1;
reg nRD = 'd1;
Zhopa Zhopa(.AdrBus(AdrBus),
.DataBus(DataBus),
.nCS(nCS), .nWR(nWR), .nRD(nRD));
initial
begin
#10 AdrBus = 'h0080;
nCS = 0;
#10 nRD = 0;
#10 nRD = 'd1;
#10 AdrBus = 0;
nCS = 'd1;
#10;
$stop;
end
endmodule
Моделсиму не нравятся присвоения значений к регистровой переменной в cаse, выдаёт ошибку
* Error: ../#SRC/Zhopa.v(8): (vlog-2110) Illegal reference to net "DataBus".
Хотя Квартус и компилирует и моделирует нормально. Чё за нах?
Посмтри вот здесь, как написать модуль с портом inout.
https://electronics.stackexchange.com/questions/22220/how-to-assign-value-to-bidirectional-port-in-verilog
Там, в частности, написано, что inout не может быть reg.
Да, но почему в Квартусе он может быть reg, а в Моделсиме не может?
Я знаю, можно написать по типу
assign inoutvar = (expression)? (true_value_expr) : (false_value_expr);
Но дело в том что условие переключения намного сложнее чем в примере и писать его потоковом способом чёт не хочется.
>Да, но почему в Квартусе он может быть reg, а в Моделсиме не может?
Потому что если чего-то делать нельзя, то "правильного" поведения в этом случае нет, кому как нравится, тот так себя и ведёт, в том числе от версии к версии. Если рассчитывать на какое-то определённое поведение в этой ситуации, то можно очень легко выстрелить себе в ногу.
Но ведь на язык есть стандарт, который либо допускает, либо нет. Что за разброд и шатания?
Во-первых, есть такая хуйня, как
https://ru.wikipedia.org/wiki/Неопределённое_поведение
Во-вторых, компиляторы пишут люди. Людям свойственно ошибаться, а некоторые из них ещё и индусы.
Ну так неопределённое поведение возникает как раз тогда когда в стандарте есть недосказанность. Да и индусы скорее что-нибудь забудут, нежели напишут что-то сверх нормы.
>Да и индусы скорее что-нибудь забудут, нежели напишут что-то сверх нормы.
Можно забыть написать проверку на допустимость входных данных, и начнёт работать код, который с ними работать не должен и не предназначен. В каких-то случаях он даже может давать осмысленный результат, но это лотерея.
Не "чисто случайно отсинтезировал нужный код", а использовал работающий код для данных за пределами области, где подразумевалась корректная работа. А надо было написать проверку пределов.
> Я хочу в одном файле описать все входы и выходы. А в остальных уже писать основной код.
But нахуя? Или ты имеешь в виду модуль для верхнего уровня, где нет ничего кроме связей между отдельными частями (каждая вынесена в отдельный модуль)?
Какова сфера применения ПЛИС? Только цифровая обработка сигналов по 10 каналам одновременно и вычисление каких-нибудь оверсложных алгоритмов кодирования типо CRC-256 в одну микросекунду?
Может ли ПЛИС заменить МК, чтобы на него написать довольно сложную программу с кучей внешней перифирии и библиотек для работы с ними, как на атмегу или стм32?
Вариант, когда на ПЛИС в несколько сотен тысяч ячеек создают простенький МК типо attiny13 не рассматриваем, понятное дело, что это делают плисоводы только для того, чтобы выпендриваться между себе подобных и на практике это не применяется.
>понятное дело, что это делают плисоводы только для того, чтобы выпендриваться между себе подобных и на практике это не применяется.
Лол.
Погугли microblaze или nios ii. Самый что ни на есть продакшен. Именно для этого они и используются — куча периферии, сложная программа с кучей библиотек. Плюс ещё какая-нибудь частная задача, которую не сделать на микроконтроллере, и поэтому надо городить плис (видео 4К, управление по 100 линиям без задержек, числодробление).
Анон, поясни за PLL.
Вот у меня есть Cyclone 10 LP 10cl006YU256C8G, тактируется кварцем 50мгц.
Я что, с этим PLL могу завести NIOS 2 на 400мгц?
Ты сможешь вытянуть из PLL сколько захочешь в его рабочем диапазоне, но ты не сможешь тактировать логику быстрее, чем сигналы в ней проходят от регистра до регистра (время прохождения зависит от реализуемой схемы).
Точнее, теоретически сможешь, но тебе это не понравится.
>Именно для этого они и используются — куча периферии
То-есть на мощном FPGA можно одновременно играть в змейку на TFT-дисплее, записывать файлы на юсб-флешку и заходить с браузера на него через lan-кабель?
>сложная программа с кучей библиотек.
Аноны выше наоборот говорят, что это плохо, надо всю программу ПЛИС писать в одном файле. >>407396 >>407484
>Аноны выше наоборот говорят, что это плохо, надо всю программу ПЛИС писать в одном файле.
Ты, долбоеб блять, речь шла о том, чтобы не писать входы и выходы модуля в отдельном файле.
>То-есть на мощном FPGA можно одновременно играть в змейку на TFT-дисплее, записывать файлы на юсб-флешку и заходить с браузера на него через lan-кабель?
А ещё слушать SDR-радио, замутить клон денди, спектрума, запустить сразу 100500 uart/spi/i2c-трансиверов, ethernet, pci-e и много ещё чего. И всё это будет работать сразу и одновременно в одном кристалле.
Ого, класс.
Прости, я не заметил.
Тебе надо вот этот курс навернуть. Как раз по твоей теме.
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
10КГц получаю на счётчике, который считает от 0 до 4999, т.е. период его работы 5000 тактов (50 000 000 / 10 000).
Теперь посчитаем период счётчика для сигнала 11КГц: 50 000 000 / 11 000 = 4545,45(45) тактов.
Но теперь, для сигнала 11КГц, попробуем посчитать по другому:
5000 + 10% = 5000 - 5000 0.1 = 4500 тактов.
4545,45(45) первым способом vs 4500 вторым.
Я дурак и чего-то не понимаю. Откуда вылезла разница в 545 тактов?
Ебучая макака.
Ещё раз с учётом разметки.
Есть тактовый генератор 50МГц. Нужно сформировать 2 сигнала: 10КГц и 10КГц + 10% (т.е. 10000Гц х 0,1 + 10000 = 11000Гц).
10КГц получаю на счётчике, который считает от 0 до 4999, т.е. период его работы 5000 тактов (50 000 000 / 10 000).
Теперь посчитаем период счётчика для сигнала 11КГц: 50 000 000 / 11 000 = 4545,45(45) тактов.
Но теперь, для сигнала 11КГц, попробуем посчитать по другому:
5000 + 10% = 5000 - 5000 х 0.1 = 4500 тактов.
4545,45(45) первым способом vs 4500 вторым.
Я дурак и чего-то не понимаю. Откуда вылезла разница в 545 тактов?
Спасибо уважаемый, но не то. Запись ужасная. Буду искать по теме в англотубе.
Спасибо еще раз.
Киса, 10 / 11 и 11 / 10 это разные 10%.
Ну или делить на 0.9 это не то же самое, что умножить на 1.1
>Но теперь, для сигнала 11КГц, попробуем посчитать по другому:
>5000 + 10% = 5000 - 5000 0.1 = 4500 тактов.
А если 5000 + 100% (в два раза большая частота), то = 5000 - 5000 * 1.0 = 0 тактов?
Два латча тебе нужно. Один латчит по клоку, другой — по инверснутому клоку. Дальше сам.
Да, это было оче давно. И https://www.euclidea.xyz/en/game/ прошёл. Это было оче давно. Я стар :\
> это было оче давно
> ссылка на домен в зоне xyz
> зона xyz появилась в 2014
Чёт отпаялся с этого олдфага
Это первая ссылка на евклид паззл из гугла. Я гамался, когда он был сырой, уровни добавлялись и я репортил баги
Что ты злой такой? Это же детская игрушка.
https://tinyfpga.com/
output [7:0] Lock;
reg [7:0] RegLock;
или возможен вариант только assign Lock[1] = RegLock [1]; и т.д.
Если на выходе не настоящий регистр, хотя и написан как reg
always @(звездочка)
begin
RegLock = Lock;
end
Если выход настоящих регистров на выход wire
assign Lock = RegLock;
или не понял вопрос...
Мое почтение за объяснение.
Нашёл на трекере для win32. Закину в виртуалку.
Попробуй слить отсюда http://download.altera.com/akdlm/software/acds/9.1sp2/350/download/91sp2_quartus_free_linux.tar
Если не прокатит отсюда https://yadi.sk/d/piZSdZHv7fFt9A
Лучше такую ковыряй, если экзотики захотелось:
https://www.aliexpress.com/item/4000252730237.html
https://fpga-systems.ru/publ/gowin/review/kitaj_gowin_ao_vostok_plis_luchshe_menshe_da_luchshe/52-1-0-101
C особой осторожностью скажу - говно. Фапать на это или Lattice если не из секты Altera-Xilinx
Извиняй за .ru - али вообще затрахал этим ебаным переводом и редиректом https://aliexpress.ru/item/4000121272355.html
https://cnx-software.ru/2018/09/05/licheetang-anlogic-eg4s20-плата-fpga-нацелен-на-разработку-risc-v/
"FPGA — Anlogic EG4S20BG256 с логическим блоком 20K (гибридная архитектура LUT4 / LUT5), около 130 КБ SRAM, 64 Мбит SDRAM"
Вот это я даун. Спасибо!
> последовательный сигнал фиксированной частоты, но с рандомным содержимым.
Сдвиговый регистр подойдёт? https://ru.wikipedia.org/wiki/Регистр_сдвига_с_линейной_обратной_связью
input [3:0] A, B;
wire [3:0] X;
assign X[3] = (A[3] && B[3]) || (!A[3] && !B[3]),
X[2] = (A[2] && B[2]) || (!A[2] && !B[2]),
X[1] = (A[1] && B[1]) || (!A[1] && !B[1]),
X[0] = (A[0] && B[0]) || (!A[0] && !B[0]);
Чтобы каждому биту в шине X соответствовали биты в шинах A и B.
>>410130
Запутался, раньше пробовал сделать так:
>assign X = (A && B ) || (!A && !B)
И не работало корректно, а сейчас попытался, и все хорошо работает. Возможно, я не привык еще с моделсимом работать, и он как-то запоминает прошлые симуляции.
>assign X = (A & B) | (~A & ~B)
Звучит логичнее, я ведь получу как раз 4 бита.
Сейчас еще поковыряю, спасибо, аноны.
Эта результат симуляции для девайса, который сравнивает 2 числа
Да, я проебался в симуляции.
На первой картинке результат симуляции при assign X = (A && B ) || (!A && !B).
На второй при assign X = (A & B) | (~A & ~B). Все работает хорошо.
Еще раз спасибо.
Алсо, пожалуйста, посоветуйте какой-нибудь проект для нуба, чтобы поковыряться и освоиться.
Вторую картинку перепутал.
>Алсо, пожалуйста, посоветуйте какой-нибудь проект для нуба, чтобы поковыряться и освоиться.
Его не существует. Делай любую, даже бредовую идею и получишь намного больше опыта и практики. Можешь начать с клонов ретрокомпов в FPGA.
Думаю попробовать написать максимально тупой конечный автомат для приема-отсылки данных по UDP без использования корок. В качестве phy - бомжевская lan8720 по rmii.
>Алсо, пожалуйста, посоветуйте какой-нибудь проект для нуба, чтобы поковыряться и освоиться.
Пройдись по этим видосам
https://www.youtube.com/playlist?list=PL4UMfOeGYsvbPDapirH9GOJ93CBSOe49Y
Как у тебя с высшей математикой (в частности — многочленами над конечным полем)? http://www-math.ucdenver.edu/~wcherowi/courses/m5410/m5410fsr.html
P.S. Если не OCHE, то можно просто брать готовые полиномы:
https://web.archive.org/web/20121021184350/http://www.eej.ulst.ac.uk/~ian/modules/EEE515/files/old_files/lfsr/lfsr_table.pdf
https://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
>Как у тебя с высшей математикой (в частности — многочленами над конечным полем)?
Охуенно. Я не вычислял многочлены над конечным полем уже двадцать минут. Пойду повычисляю.
Я чёт не догнал, там в табличке n - это количество разрядов в регистре, а LFSR-2/LFSR-4 количество исключающих ИЛИ и их позиции?
>приема-отсылки данных по UDP без использования корок. В качестве phy - бомжевская lan8720 по rmii
Держи в курсе если что. У меня отладка на этой фихе тоже валяется, накупил их по 300 рублей.
На ночь глядя не понял прикола - явно что-то со страпончиком связано. Просто подав питание - ловит линк, а воткнув в плату и подав тактовый сигнал - уже нет. Может конфликт с txen от weak pullup. Как разберусь - сигналтапом подсмотреть фрейм и синхрозаголовок фрейма и можно думать как действвовать дальше
Походу да, TXEN ебал мозги, но это не точно.
Как-то запустил что от мимо пролетающей мухи дохнет, главное снял данные сигналтапом. Добро пожаловать в декодирование фрейма и маков.
Покажи отладку если она с FPGA? Если просто модуль с 8720 - то не интересно, можешь не показывать.
Таки да - TX_EN посадил в 0 - получше стало и соснул хуйца.
На самой платке с FPGA есть генератор на 50 МГц и если их гнать через FPGA на выход и тактировать 8720 - сосу хуй может звон-отраженка от пустой линии до снятого генератора и как не перезагружай, дергая reset - ей похуй. Вернул в зад генератор - заработала намного стабильней.
assign Z = swap ? data[7:0] : data [0:7]
Вспоминая защиту от прострела ноги становится грустно что надо руками слеивать по биту.
>отладку если она с FPGA
С фпга тоже есть, но она не 300₽ стоит.
Nexys 4 ddr от digilent.
У меня прием нормально получался, но дико с преамбулой ебался.
Лучше бери синхру с модуля, надёжнее будет.
Когда нужно - можно назначить передачу данных как есть или поменять порядок бит. Не пытайся отсинтезировать - будет ошибка, Verilog явно запрещает такое делать.
Например было 10101010 станет 01010101 или же 11001001 и станет 10010011.
> если их гнать через FPGA на выход
Для этого не каждый выход годится, ты же в курсе, да? Плюс Ethernet требует частоту +-50 ppm, а генератор на плате небось самый дешевенький.
Действительно. А ты хорош, исключающее ИЛИ тут увидел.
Использую что было - а там хуй тебе, а не PLL OUT. Там даже кнопки повесили на тактовые входы.
http://www.alinx.vip:81/ug/AX4010_UG.pdf
Нашел какую-то железку с STM32 с микропитоном + RMII PHY где снял дамп пинга - вижу прием и передачу фрейма. Уже есть где подсмотреть несколько вариантов передачи и как писал анон выше - посмотреть латентность от CRS или TX_EN до первых битов данных преамбулы. Сколько говна вручную разбирать у тестового фрейма и через mif "заливать" фрейм в память для тестов CRC которая как-то через жопу считается.
А че это такое?
У матлаба есть реализация аппаратного распознавания цифр на плис. С помощью нейросетей.
Сдвиговый регистр даёт псевдослучайное значение относительно предыдущего, т.е. последовательность значений после запуска будет каждый раз одна и та же. А вот как получить рандом при каждом запуске? - вопрос!
>А вот как получить рандом при каждом запуске? - вопрос
Помню у меня автомат-десериалайзер от наводок на неподключенный разъем генерил просто рандомные значения.
Ну это как повезёт.
Ну, можно попробовать поиграть в асинхронщину: https://github.com/teknohog/rautanoppa/blob/master/common_hdl/ringosc.v
Так, что у него будут хрен знает какая частота и джиттер. По той ссылке генератор случайных чисел именно так и сделан: https://github.com/teknohog/rautanoppa/blob/master/common_hdl/hwrandom_core.v
P.S. Ну или можно забить на случайность начального значения и не париться, как в этом генераторе гауссовского шума (там ГСЧ сделан на трёх 64-битных сдвиговых регистрах): https://opencores.org/projects/gng
есть автоматы Мура,
а как называются автоматы у которых выходы выводятся напрямую с регистра состояния?
ЕРМ3032 хватит для синтеза частотомера?
Не утверждаю, но в этом случае выкинь в помойку.
MAX3000 "4.5–ns pin–to–pin logic delays with counter frequencies of up to 227.3 MHz"
Измени Альтере и возьми конкурента ispMACH 4000V/Z от Салата https://www.latticesemi.com/en/Products/FPGAandCPLD/ispMACH4000VZ "operate at SuperFAST™ frequencies of up to 400 MHz."
Только вот хуй ты просто так 400 МГц (или даже 200Мгц) загонишь в single-ended режиме.
Ничего. Только потом не ной тут что забил на согласование и у тебя все звенит, большая погрешность, вообще не считает и прочее, амплитуды нехватает на тактовом входе, у соседа снизу в коронках начал играть Rammstein и прочие бредовые последствия.
Глянь сюда - тут рассматривается частота в 1 мегагерц и из какой полосы частот он состоит https://www.youtube.com/watch?v=fCbAafKLqC8
> А как получают рандом на всяких микроконтроллерах и прочих ардуинах?
Линейно и конгруэнтно:
https://github.com/vancegroup-mirrors/avr-libc/blob/master/avr-libc/libc/stdlib/random.c
https://github.com/vancegroup-mirrors/avr-libc/blob/master/avr-libc/libc/stdlib/rand.c
https://en.wikipedia.org/wiki/Lehmer_random_number_generator
Берут некое число x, а потом вычисляют следующее по формуле X_{n+1}=(a*X_n+c) mod m (mod m — вычисление остатка от деления на m): https://ru.wikipedia.org/wiki/Линейный_конгруэнтный_метод
А, знаю, это называется затравка. Но откуда берут её? В персональном компуктере её роль выполняет системное время. Но в МК такой способ не прокатит, ибо после запуска все счётчики обнулены и если через какое-то определённое время нужен рандом, то и счётчики, запущенные на старте, к тому времени будут иметь каждый раз одно и тоже состояние.
Из младших разрядов adc например.
1. По трассировке плат отдельный тред.
2. Альтиум - убогая хрень. Используй OrCAD или Expedition.
А что тебе надо от нас? Посмотри видосы/книжку Сабунина для начала.
Бамп вопросу.
Кейденс - сила, Альтиум - могила.
Вот тебе схема, которая пиздато ложится в ПЛИС. Здесь X - это входные сэмплы, в твоем случае которые падают с АЦП. Прямоугольники - это триггеры, образующие конвейер. По этому конвейеру твои сэмплы двигаются. Пришел новый - протолкнул старые, сдвинул конвейер.
Я так понимаю каждый семпл умножается на каждый коэффициент, а потом результат умножения суммируется? Всё равно не понимаю. Я тупой. Допустим у меня фильтр 10 порядка, это надо десять умножителей. Пришел семпл, сразу умножился на все 10 коэффициеетов и высрался в общий регистр, с которого уже можно подавать на ЦАП. Так?
> FIR
КИХ
> сэмплов
отсчётов
> LPF
ФНЧ
> сэмплами
отсчётами
> инпута
входными
Отчёты сигнала умножаются на коэффициенты фильтра и складываются. Что такое z-преобразование и z в минус первой степени ты наверное знаешь.
Спасибо за урок русского языка.
>>412198
Давайте ещё раз для дауна, на пальцах.
>Отчёты сигнала умножаются на коэффициенты фильтра и складываются.
Допустим поступил один отсчет сигнала, его исходное число умножается на все коэффициенты или результат умножения на первый коэффициент умножается на следующий? Второй вариант, думаю, не имеет смысла, потому что на выходе будет пиздецки большое число, поэтому остается первый вариант. Дальше, все результаты умножения исходного отсчета складываются вместе. Не понятно как запилить такой конвейер. Алсо, схема должна работать оче быстро, чтобы перемножить всю хуйню до поступления следующего отсчета. Извините, я просто математику не знаю она доставляет мне боль.
Посоны, мне срочно нужен VGA контроллер на ПЛИС для языка vhdl
Нашел вот код
https://cyberleninka.ru/article/n/razrabotka-kontrollera-vga-na-yazyke-vhdl-v-srede-quartus-ii/viewer
Но он не работает, накосячили с типами данных, я сам еще нуб в этом языке. Выручайте срочно посоны, проект для универа горит
Сколько денег отсыпешь?
Эмм, я думал вы может ссылки знаете
Я могу свой код скинуть, у меня ошибку выдает из за того что я 1 пытаюсь прибавить к std_logic, как решение найти?
Тут на Verilog (платка от них, проверял, работает) https://github.com/alinxalinx/AX4010/tree/master/SRC
Не проверял(портировал) https://www.waveshare.com/wiki/File:EP4CE10-Verilog-VHDL.7z тут есть и на vhdl.
video_en <=horizontal_en and vertical_en;
process
begin
wait until(clk'event)and(clk='1');
if (h_compteur ="1100011111") then --799
h_compteur<="0000000000";
else
h_compteur<=h_compteur + "0000000001";
end if;
Вот где h_comyeur + "000000001" мне выдает ошибку:
Error (10327): VHDL error at VGA_controller.vhd(31): can't determine definition of operator ""+"" -- found 0 possible definitions
Шо делать?
Лол
library ieee;
use ieee.numeric_std.all;
use ieee.std_logic_1164.all;
Мало?
А с вектором сложение правильно сделал?
Я люблю боль.
>4-х входового xor
Да проще заново от руки нарисовать, всего 16 комбинаций, к тому же там есть функции для автоматизации рисования входных последовательностей.
https://youtu.be/4be1In4xArk
А что, я вот тоже в математике не особо, смотря какие задачи решаешь.
>Извините, я просто математику не знаю она доставляет мне боль.
Same, Bro! Умею только складывать, вычитать и умножать. На бумажке.
>марсоходов?
Ебанутый за 10к покупать эту хуйню? Лучше чекни алик, там магазин FPGA board Store норм платы.
Не знает никто случайно ресурсы где есть проекты?
Добра посоны
Зависит от твоей подготов_очки. Если адовый задрот, любишь лотереи и есть время - пиздуешь на ебей-лохито-другое ищешь по словам "for chip recovery" и подобным минимум лот с минимум 2 одинаковыми железками. По большей части это все полностью живое оборудование и можно узнать его историю у продавца. Одну потрошишь на органы и срисовывание топологии + получаешь ЗИП на случай если выставишь подключать неиспользуемые выводы к земле или еще какими методами спалишь выводы. Получаешь емкие FPGA(на сотни тысяч LE) с расчитанным питанием и тактированием + обычно периферия типа динамической ОЗУ и специфичное под данный проект. Profit! Брат жив, зависимость есть. Мигалка светодиодом работает.
Слишком сложна, но спасибо.
>>412797
Вот такой хватит, чтобы проверять упражнения из книжки на железяке? https://aliexpress.ru/item/32813736111.html?spm=a2g0v.12010612.8148356.7.37547baecHLITk
Насколько я помню, в книге строят процессор, но сколько там задействуют LE я не знаю, не дочитал. Этот камень на плате имеет 10к LE, самое то для поиграться, но залезет ли туда проц из книги, не знаю. Сам такую отладку брал, только без перефирии, пробовал NIOS II, камень греется даже от мигалки свктодиодом на Си, поэтому забил на это дело. Алсо, никогда не использовал даже 1000 LE в своих проектах, простор есть. Но вообще на open cores есть много самопальных процессоров, думаю найдешь чего для изучения под эту борду.
Харрис Цифровая схемотехника и архитектура компьютера
>Насколько я помню, в книге строят процессор, но сколько там задействуют LE я не знаю, не дочитал.
Ну на однотактный хватит, но там есть и задания на самостоятельную разработку ковейерного процессора с разными степенями сложности hazard-блока, от сброса конвейера до предсказания ветвлений, разработку кэшей.
>пробовал NIOS II, камень греется даже от мигалки светодиодом на Си
WAT? Не шутишь? Насколько греется?
У меня логики одного конченного автомата на полтысячи+ регистров, не тактируемых постоянно - не греется (или еле заметно) при тактировании на 30-40МГц.
Stratix III - даже без конфигурации начинает заметно греться, а залив ту же конфигурацию конченного автомата - за пару минут разогревается вместе с радиатором что становится горячим независимо от того - работает автомат или нет. Настройки выводов проверял - стоят "input tristate with weak pullup"
Вот еще например.
Аккуратнее с программатором - я взял дешевый usb blaster на stm32, он при обнаружении квартусом бсодил комп (win10 x64 1909).
Хотя из виртуалки с виндой/линуксом работал норм.
Взял какой-то за 1.5к на cpld+ftdi, этот норм работает.
Как разводить печатки под самопалки с плисинами? Рисовать как лучше дороги укладываются, а потом под эти пины рисовать проект?
Смотря что рисуешь. Если всякую херню типа мигалок светодиодами - да, как угодно.
Если подключаешь память - то лучше следить за группами выводов, где не на каждый можно вывести бит линии данных, особенно у DDR памяти.
LVDS - неделимые пары и должны вестить максимально симметрично. Есть эмуляция LVDS где нужно ставить 3 резистора.
Не проебывать тактовые входы и выходы - это очень важно!
Не забывай про то что есть много банков питания, могут быть разные напряжения и типы сигналов. Например если используешь LVDS - считай весь банк проебал, даже если тебе надо всего пара линий.
Где-то можно найти что если у тебя очень много быстропереключающихся сигналов - то использовать не более 80%(не помню) выводов в банке и прочие мелочи.
А вообще - лучше вначале примерно накидать проект, синтезировать и посмотреть что будет.
Два нижних варианта. Так же посмотри страницу 18 https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/ug_m10_lvds.pdf
В составе OrCAD есть FPGA System Planner. У Ментора тоже есть тул, не помню, как называется.
У них есть базы по всем современным ПЛИС (Altera, Xilinx, Lattice точно есть, насчёт остальных не знаю). Там ты можешь оттрассировать плату, учитывая особенности используемой ПЛИС (назначение тех или иных её пинов, банки и т.д.) и потом экспортировать полученную распиновку у Quartus/Vivado.
Если интересует, могу выложить RAK от Cadence по FPGA System Planner.
Мой проект содержит такие простые модули:
1. VGA контроллер (почти сделал, но он багнутый еще)
2. Контроллер клавы (найду в инете)
3. Сам модуль игры
Вот тут я лох, как сделать генератор фигурок?
Как потом объединить все в одно, использовать пормап?
Выручите плиз анончики
Добра
Тут дело такое: в двух словах не объяснить, а за тебя делать никто не будет. Попробуй сделай сначала свой тетрис на С, а потом уже готовый и отлаженный алгоритм переложи на схему - управляющий автомат, исполнительные устройства, все дела.
>в Орле
Брось говно. KiCAD и то лучше, опенсорсный, к тому же.
А вообще, если взялся за ПЛИС, то лучше освой нормальный САПР.
>KiCAD
Голосую. Такую херню рисовал и когда получилось 2 FPGA по 484 вывода с плавным переходом на FPGA на 1К+ выводов стало ясно что какую-то несусветную хуйню рисую и надо переделывать.
Пока делалось - уже стало неактуальным. Вот фейл.
Возьми библиотеку ЦЕРН и перечерти УГО на ГОСТовские и поставь ГОСТовские шрифты на посадочных местах.
Греется довольно сильно, а поскольку у меня камень в БГА корпусе, я его долго не держал. Если читнуть форумов по запросу в гугле "греется ПЛИС", то можно сделать вывод, что это какой-то ебаный рандом. Как-то читал, у парня два одинаковых камня, на разных устройствах, выполняющих одну работу грелись по разному. Видимо брак, или типа того.
>Возьми библиотеку ЦЕРН
ЧО?
Я тут установил его и сразу не нашел ЕРМ3032, пришлось лезть на ультралибрариан и качать оттуда
>и качать оттуда
В итоге я проебся с импортом компонента пол часа и соснул. Это же какая-то противоестественная хуета! Футпринт отдельно, символ отдельно. Чо за ёбань? Нахуя вы советуете это говно народу? Орел на три порядка адекватнее этой опенсурсной поделки
а ничего, что у одной микрухи может быть несколько корпусов?
алсо, попробуй диптрейс, он не настолько мозговыедающий но без нормальных тулз под дифпары, пичалька
В игл уже завезли ratline и рисование дорожки до тех пор, пока не ткнешь в пин? Когда я его смотрел, рисование платы отличалось от рисования линией в паинте только наличием сетки и проверкой по схеме
С любой прошивкой греется? Может, статика? Защитные диоды на i/o, идущих наружу, есть?
Отлаживал как-то плату с 5ceba4, уронил pls на резистор обратной связи питальника ПЛИС. Часть обвязки сгорела, сама ПЛИС запускалась, даже nios стартовал, но несколько пинов выгорели и она сильно грелась, пришлось менять. В норме с озу и ethernet была чуть теплая.
>несколько пинов выгорели и она сильно грелась
Лал. У меня такой же фейл был когда спалил одну FLEX, замкнув или -5 или -12 (отрицательное напряжение) на один из выводов.
Без конфига - все норм, только заливаешь конфиг - почти в утюг превращается и частично работает.
Нет, ментор - это совсем серьёзный бизнес, мало кто из мамкиных инженеров его использует (из-за сложности, а также из-за отсутствия в свободном доступе документации). Готовые библиотеки есть, но они продаются за деньги. Есть библиотека Optimus (где есть основные пассивные компоненты, а также некоторые часто используемые транзисторы, диоды, микросхемы и т.д.), но её ты уже наверняка видел.
Более того, у него проблемы с ГОСТовскими шрифтами и в некоторых местах (например, в МЦСТ, когда я там работал) на них клали болт.
Сам решил в своих проектах не мучиться с ментором и поставить OrCAD.
Чего-чего?
Да, LP Wizard/ipc7351 land pattern creator (есть в pads/ee), можно найти/рассчитать посадочные места для почти всех корпусов, ещё можно экспортировать в оркад/аллегру/etc.
Ещё на snapEDA куча всего, но там встречается говно, надо внимательно проверять.
Кстати, в оркаде можно создавать компонент (УГО) из таблицы (New component from spreadsheet). Берешь таблицу с распиновкой ПЛИС и раскидываешь выводы по частям УГО и их сторонам, как тебе удобно.
Я так понимаю, он именно про создание символов. Потому что создание посадочных мест по сравнению с созданием и правкой символов на несколько тысяч пинов - ерунда (распространённые есть в базовой библиотеке, остальные - да, LPWizard, про который все знают).
>Кстати, в оркаде можно создавать компонент (УГО) из таблицы (New component from spreadsheet). Берешь таблицу с распиновкой ПЛИС и раскидываешь выводы по частям УГО и их сторонам, как тебе удобно.
Не особо удобно переделывать каждый раз. Лучше таки освоить FPGA I/O Optimizer (если Mentor) или FPGA System Planner (если Cadence). Там как раз можно сначала оттрассировать наиболее подходящим образом, а потом отправить уже получившуюся распиновку в САПР для ПЛИС. И эти тулы ставят пины не абы как, в них есть база ПЛИС и выбор пинов идёт исходя из особенностей используемой ПЛИС. Т.е., память получится поставить только туда, куда её можно поставить, трансиверы, тактовые входа - аналогично.
>про который все знают)
google ultralibrarian
Ещё но может сканить и OCR .pdf даташитов, охуенно удобно.
Сейчас делается устройство на плис, которая делает расчет и формирует инфу, ну хз, 10 4б слов. Связанную инфу, это всё поля одного свойства.
Как лучше сделать регистры чтения? Первый вариант: (размер регистров пусть 4б) 10# регистров, содержащие нужные поля, а регистр статуса - счетчика, показывающий глубину ФИФО данных, декрментируется только тогда, когда будут прочитаны все 10 полей. Если одно поле прочитать дважды, то на второе чтение будет та же инфа.
Второй вариант: хранить в одном регистре данных всю сериализованную инфу, и получается, счётчик декрментируется только через 10 считываний из этого единственного регистра.
Первый вариант мне кажется наиболее предпочтительным, так как хорошо ложится на любой ДМА, но я опасаюсь, не будет ли коллизий или какого-то такого говна.
Где их скачать можно?
1. Берёшь AXI streaming FIFO (pg080) бесплатно без смс или эквивалент для альтеры, который, вероятно, ест)
2. Берёшь драйвер для него.
Axi4 stream похож на сериализатор данных, а я спрашивал больше о полной организации внешних регистров в плиске. Вероятно, axi4 stream и будет стоять.
А как оно будет дружить с pcie?
Усе заработало спасибо
Однако при попытки загрузить мой проект на алтеру ничего не происходит, только маленькая надпись failed возникает
В чем фейл????
>а я спрашивал больше о полной организации внешних регистров в плиске.
Родина дала тебе готовое решение с счётчиками, флагами и прерываниями. Не нужон этот полный регистр, диды акси фифо использовали и ты используй.
>А как оно будет дружить с pcie?
Так же, как и любая лежащая в памяти инфа, которую можно вычитать процессором или на которую можно натравить DMA.
>В чем фейл????
Камень автодетектом видит?
Сам ебусь третий день, нихуя понять не могу. Пытаюсь разлочить свои залежи ЕРМ3032, сжег два буфера 244 в бластере, поотслоились дороги и сижу теперь жду новый от китайцы. За 1800 в терре покупать чота неохота.
А если там 10 интов? В документации вроде ограничивается размером акси, для лайта это только 32 бита. Как связанно передавать несколько интов тогда? Или иметь фифо под каждые данные, тогда придется как-то хуево синхронить их
>А если там 10 интов?
Отучайся от этого, оно архитектуроспецифичное. int16_t?
В любом случае, AXIS width converter — переупакует в 32 бита даже аллаха. А на выходе разупакует обратно во сколько надо.
А если я хочу кастомный протокол поднять поверх распространенного интерфейса (i2c, spi например), что-то такое могу использовать?
А то на квартусе всегда сам писал контроллеры/драйверы, а в вивадо вроде что-то удобное есть.
Естественно, есть контроллеры i2c и spi с готовыми драйверами (которые делают элементарные пересылки) и примерами. Пишешь обёртку вокруг xilinx'овых драйверов и гоняешь что хочешь. Мне казалось, это везде так, уж как минимум по такой стандартной хуйне (сам имел дело только с Vivado и ISE).
1. Ну вроде да
2. Ага, софом. Что самое удивительное, у меня есть тестовый соф файл, он без проблем заходит, а вот мой vga контроллер не хочет
Вот пикча
Хз, вроде второй
Error (209015): Can't configure device. Expected JTAG ID code 0x020B10DD for device 1, but found JTAG ID code 0x020B30DD.
Вот такую ошибку выдает, как пофиксить?
Васянокод исполняется на Microblaze и дёргает функции из драйвера от xilinx. Драйвер от xilinx через axi lite ебёт регистры контроллера, контроллер гоняет байтики по своему соответствующему интерфейсу. Может, я тебя неправильно понял просто? По крайней мере, AXI streaming FIFO — он именно про это.
pg142, pg090, pg153
>Microblaze
Ну это не очень эффективно будет.
Я то на Vhdl пишу. Могу кастомно настроить cpol, cpha и саму частоту (чего в драйвере не увидел).
И тайминги вплоть до наносекунд просчитать.
Нет каких-нибудь стандартных ip-ядер на интерфейсы, но без софтпроца?
Софтпроц же априори будет менее надёжным и быстрым, чем простенький автомат на вхдл.
Вроде пошло, я просто не ту схему сыклона 2 выбрал, однако экран черный, а он должен мне вывести был белый квадратик. Код правильный, компилируется без ошибок
В чем беда посоны?
Понятно. Я не так понял, что означает "драйвер" в твоём посте. Пиши эффективные автоматы тогда.
Да. В chip-planer или в говнокоде писать (chip_pin = "xx") перед именем вывода, например
(chip_pin = "22") input wire CLK
Я мимоанон же. Так что, софтпроцессор так хорош? Или я могу вместо микроблейза написать такой же автомат под axi?
Слушай, там было 2 колонки - Locate и Fitter Locate
В первой пусто, а во второй было выставлено, я скопировал из второй в первую адреса. Все равно экран черный и пишет не сигнала, я уже устал посоны
Как запустить этот ссаный вга контроллер?
Что не ясно? Когда нигде выводы не задавал - fitter раскидывает выводы как хочет и куда что вывел - он пишет в колонке fitter locate. Что бы задать руками где какой вывод - прописываешь locate и делаешь полную пересборку проекта можешь подъебать - тыкнуть в fitter и далее - он не будет делать анализ и синтез.
Когда задаешь руками выводы - внимательно следи за I/O standart - в пределах банка он должен быть одинаков.
Какой пиздец анончик, на этом мои знания закончились, а сдать работу надо завтра к вечеру
Это, я так понял вывод и вход каждой переменной/константы с in и out надо делать? А как я узнаю что к чему лол
Так это, в фиттере уже были раскинуты рандомно, фиттер всегда неправильно делает?
Просто у меня нихуя на экран не вывилось, пишет нет сигнала
Гуглишь свою отладку, соотносишь с пинами и уоп, прописываешь все что нужно в пинпланер.
>Так это, в фиттере уже были раскинуты рандомно, фиттер всегда неправильно делает?
Не неправильно, а рандомно. Просто рандомно. Он ничего не знает о том что и как у тебя снаружи подключено. Есть исключения - например память DDR, высокоскоростные SERDES.
Этот правильно говорит >>413747.
Картинка из мануала что куда подключено. Неужели так сложно прописать 14 выводов?
Где тактовую частоту берешь?
Есть 27МГц на D12, E12, 50 МГц на L1, 24 МГц на A12, B12.
Потенциально подходит 27МГц, есть PLL через который получешь нужную частоту. Используешь его?
Хорошь троллить. Показывай скрин чип-планнера.
>>413789
Все используют микроблейз, никто не жалуется. Каково это — пересобирать проект, когда надо поменять какой-то параметр в конфиге — я даже не представляю. Наверное, у тебя проекты собираются по две минуты (а у меня часа по полтора на мощном core i7 с 64гб рамы).
>проекты собираются по две минуты
В квартусе нормальные проекты собирались по 5-10 минут, точно такие же проекты в виваде - минут 15-30, хуею с говнокодеров.
Какие задержки у микроблейза? Может ли он среагировать на управление и уже на следующий такт начать обработку?
>мануала
Альтеры мануал? Я реально чет запутался
Так, я написал контроллер, ок.
Теперь надо распиновку сделать, CLK я понял найду,
а RGB и прочие сигналы как? Ладно анон, пойду попытаюсь разобраться
Туда ли ты вкатился, петушок?
Оттуда же - кусок схемы как устроен ЦАП для создания аналоговых сигналов красного, синего, зеленого цвета и 2 сигнала вертикальной и горизонтальной синхронизации..
Какой к какому выводу ПЛИС подключен - смотри выше.
Не понимать вопроса.. Что ту может пойти не так или вызвать затруднение в назначении и сопоставлении выводов схемы и плисины ((не)рабочесь говнокода неучитываем).
Да это я понял, у меня просто контроллер + кадровый буфер к нему, выходы на вга коннектор идут от кадроового буфера
Однако в пин редакторе мне показывает только коннекты между кадровым буфером и вга конроллером, пикча моя выше
Это боль..Снести к хуям файл QSF в корне проекта
Ебанутый у них редактор выводов. Тыкаешь в заголовок Location (3-я колонка) потом курсором в первый сверху вывод, зажимаешь шифт и тыкаешь в самый последний вывод, отпускаешь шифт, жмешь delete.
Так же можно массово менять тип вывода (7 и 9 колонка)..
Обычно сортирую по банкам в таких случаях.
Вот в чем засада у меня
Смотри анончик - у меня должно было получится как на левой пикче, а получилось то что справа.
Я использовал один и тот же код, только разные переменные, но все подходит. В каком месте я обосрался? Главное код компилируется без проблем.
Алсо, сам контроллер состоит из 2 vhd файлов
А еще добавлю - справа по сути это второй блок пикчи слева, а 3ий он не вывел.
Какой метод использовать, чтобы получилось как на пикче слева?
>>413830
Вдвойне не понимать.. У тебя вопрос по наличию-отсутствию выводов, то что они прибиты гвоздями к 1 или 0?
Читай варнинги "вывод стикед to gnd|vcc"
В том что у тебя каждый блок развернут, а тебе нужно каждый блок в блок завернуть?
Используй еще один блок верхнего уровня, где создавай три файла (с PLL уже создан), второй есть, а один - прйдется полностью переписывать.. но зойчем???
Да про выводы я понял, он тупо не видел выводы от последнего.
У меня блоки эти не объединены, я хз как это сделать
Не может, разумеется. Ты прав. Не надо использовать микроблейз. Пиши автоматы. Пиши их на вхдл.
https://www.digikey.com/eewiki/pages/viewpage.action?pageId=15925278#VGAController(VHDL)-Connections
И получил вот такое недразумение
>>413829
Как связать два vhd файла вместе?
Эээээээээ, блэд... А чо, теперь кряктус веб-эдишн нельзя скачать? Зарегался на интеле, выбираю - СКАЧАТЬ, а мне - ацес денайд
Какой из?
Надо бы слить пачку кактусов - пишут летом основательно прикроют раздачу такой некрофилии.
>выдавало - ХУЙ ВАМ
Неужели отказался от такого уникального предложения?
Хуй от Интела.. Он какой жесткости? Чисто из кремния?
>Он его и разобьёт, и руки порежет.
Разобьет - хуй с ним. Порезать руки - не так страшно, как порвать анус. Анальная контузия - это не шутки! Какртинка с обезьяной опаздывает.
Ты бы всё же уделил время и посмотрел
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
А то совсем нубские вопросы задаёшь, на которые текстом даже сложно отвечать.
Спасибо
Я нашел другой контроллер и переделал его, сейчас буду подключать тестировать
Тот что был раньше, был под сыклон 4 и ДЕ2, а у меня ДЕ1.
Ну ладно, посмотрим
Ты бы еще Altera UP1 выкопал. Да, я флексоёб.
При первом приближении VGA контроллер крайне прост - это пачка счетчиков которые на любое говно можно перенести, хоть в CLPD (жирную, например EPM3128 http://micklab.ru/IgrosoftIGP1.htm ), единственный геморрой - это приделывать память которую отображать.
Код по большей части кроссплатформенный, поэтому может просинтезировать на любую FPGA с некоторыми ограничениями по быстродействию (например отсутствие аппаратных умножителей и будут делаться на логике).
Вникай как на рассыпухе собрать:
https://www.youtube.com/watch?v=l7rce6IQDWs
https://www.youtube.com/watch?v=uqY3FMuMuRo
Ну у меня получилось, вывел квадратик этот лол
Однако хотел поменять фон ну другой цвет, но походу карта не тянет
А теперь, анон, мне как то надо собрать тетрис на плис к середине мая примерно, даже кривой.
Я нашел в инетете проекту, но сложновато еще
Я принцип не пойму как сделать генератор фигурок и как сделать подвижное изображение, счетчик???
Будем ждать. Добра.
Отпишитесь, если кто возьмётся, пожалуйста. Я вам даже аккаунт зарегаю и курсы оформлю.
>>413996 - хуй.
Кто-нибудь смотрел? Толково объясняют?
пакетные данные.
Хуита, гундосит что-то невнятное, очередной самопальный процессор пытается пилить. За Верилог как таковой не поясняет.
Сап анон - вот мой контроллер, у него пока один вход только - часы. Он выводит на экран квадратик, работает.
Однако мне надо сделать тестбенч для него, но как тайминг правильно ввести для CLK?
Я запутался, помоги плиз
Какие это, блядь, часы?.. Это тактовый синхросигнал!
В чём моделируешь, в МоделСиме? Если делаешь функциональную симуляцию, то без разницы какая будет у него частота, в функциональной симуляции главное не абсолютные, а взаимные соотношения и длительности сигналов.
Ага в моделсиме
Проблема в том, что у меня всегда вертикальный и горизонтальный импульс на 1, не показывает blanking, а препод требуюет чтобы весь процесс был показан. Может я в тестбенче накосячил со временем что то?
Если нужно увеличить время симуляции, делай так:
initial
begin
#555;
$stop();
end
555 - это время симуляции, увеличивай число пока не добъёшся нужного времени симуляции.
Окей
Я вот для синхроимпульса сделал это
clk_25<='1';
wait for 25 ns;
clk_25<='0';
wait for 35 ns;
clk_25<='1';
wait for 25 ns;
clk_25<='0';
wait for 35 ns;
Нормально?
Все равно вертикальная и горизонтальная на 1 все время
На ВХДЛ что ли пишешь? Я не знаю как там, на Верилоге тактовая частота создаётся просто:
always #1 clk_25 = !clk_25;
Получается частота периодом в две временные единицы.
И что значит
>на 1 все время
?
Пробовал. Присматривался. Китаеза наебал, отправил не ту, схему не предоставил. Ввиду того что она одна - потрошить на скалывание схемы нет смысла, заказал у Qtech.
Что за пиздец последнее время? Даже Альтеру некогда дрючить, не говоря о тесте Блевады в цинке.
Если платка не одна - за день вполне реально прозвонить все линии данных - управления. Сам так делал, зависимость есть.
Я так понимаю китайцы и не дают схем на антмайнеры.
Бушные по 100-500р вообще отдают пачками. Помимо того что эти платы использовались и в хвост и в гриву для майнинга, что ещё может оправдать такую дешевую цену? JTAG вроде как выведен, но не распаян. Блока какого-нибудь у них нет?
И кстати хуею с тупых майнеров, ни у кого на форумах даже таких мыслей не возникало, просто воспринимают цинк как специализированный проц для майнинга.
>контрольные платы от Antminer
Контрольные платы это же arm какой-нибудь. Ты о других платах, вероятно, где fpga-шки.
Какие интерфейсы есть на них?
Вот такие с цинком. Судя по количеству дебаг дырок - JTAG.
>>414593
>>414594
Иногда читал что цинк магическим образом выгорает.
Из интерфейсов - обвязка озу+пзу+езернет+(питание) и gpio наружу, те чуть меньше, чем нихуя, но разве надо больше? Для первоначального вката хватит геморроя с головой.
Схем нет, только реверсом. Как eval норм после реверса.
Реверсил модуль памяти от VIOLIN memory со Stratix III на 200К LE - вызыванивал чуть больше 700 выводов. А мне норм, довольно быстро получилось..
>>414594
Похожа не левую, честно искал минут 10 - проебал у себя в залежах, не покажу модельку, а ссылка с али ничего не даст.
Нашел фото, где правая плата соединяется с левой. У твоей левой снизу разъемы для 2.54 двойной гребенки?
А белые разъемы куда на левой?
Эти две платы это контрольный блок или майнер полностью?
Не ебу. Поищи даташит или референс мануал и посмотри есть ли вообще LVDS выводы и прикинь по фотке куда идут.
Скорее всего да, но.. Только в одну сторону или в обе если есть встроенная терминация LVDS.
>>414596
Это не правая с левой соединяются, а разные версии контрольных плат у меня. У тебя на картинке мой второй пик с платой носителем.
Все торчащие пины для соединения с асиками/запитки охлаждения для них.
Чисто контрольный блок, который общается с 40+ Asic.
>>414597
Будто на дешёвых отладках такое бывает. Обычно через FMC какой-нибудь выводят.
Нашел свою (левая). Как видишь чуть меньше, чем нихуя.
Можно распотрошить на органы для реверса, но явно не за спасибо.
Что-то у тебя даже слот под микросд не напаяли, хотя место есть. Под USB с PHY тоже место есть.
Мне как раз нужна цинкоборда с gpio. Чем банки цинка запитаны можешь глянуть? 3.3/2.5/1.8?
>по 500р
antminer-ы уже не обновляются? Нельзя поставить платы с новыми asic на старую контрольную плату и бп?
>Некоторая ебля распиновкой
Возможно, для того чтобы узнать, на какие пины подключен rom, придется отпаять чипы.
Когда брал выбирал - мне было вообще поебать.
Не спрашивай почему одну взял, а не две и больше.
Включать не рискну, по контрольным точкам возле преобразователей надписи 1V5 3V3 1V8 1V0.
> Включать не рискну
Почему? К виваде вообще подключал платку? Хотя ты похоже не распаял жтаг даже.
>>414614
Да, бушные, поюзанные.
>>414611
Видимо да, иначе не вижу причин продавать так дешево.
>>414610
> ебля распиновкой и загрузчиком
А как они изначально прошивают? Я думаю там просто нужно напаять jtag и вивада увидит цинк.
>Почему?
Вроде мелочь, но бля пока найдешь где высрать 12 вольт, припаяться..
>К виваде вообще подключал платку?
Очевидно нет. Иногда плата-схема важнее чем ее работоспособность, поэтому если берется на органы - то нет разницы. Каждый ебаный раз как начинаешь что-то делать сваливается куча херни. Краем глаза заглядваю в тред.
От QMtech брал просто по рекомендации в прошлом треде.
А так - в планах просто для себя пореверсить платку. Глядишь в будущем пригодится, но глядя как блевада компилит - на любителя
Фанат Альтеры с их колючим кактусом, а не хиленьких с их блевотной блевадой
> Фанат Альтеры с их колючим кактусом, а не хиленьких с их блевотной блевадой
Неистово дрочую.
> глядя как блевада компилит
Даже дико мелкий проект компилит по 5 минут, я просто хуею с индусов-кодеров.
За сколько брал плату?
>нужно напаять jtag и вивада увидит цинк.
Что это тебе даст? Максимум достучишься до FPGA части и подавая тестовые сигналы вычислишь кто куда и хорошо если есть доступ к выводам. Всякие конфигурационные выводы типа MSEL (Altera) как будешь искать, не говоря о выводах памяти и прочем в BGA корпусах?
>>414617
>За сколько брал плату?
Стоила кажется 3300, но из-за ошибки (не ту выслали, присматривался к версии с 2 чипами озу, а выслали с одним) через диспут не зверствовал и взял за 40% стоимости.
> до FPGA части и подавая тестовые сигналы вычислишь кто куда и хорошо если есть доступ к выводам
Ну за 500р тоже неплохо. А про BGA точно, совсем не подумал. Может они конечно по референс дизайну раскидали, но надеяться на это глупо.
Поищи у себя на авито. Я вот зараженную планирую брать, один хуй прошивка для майнинга не нужна.
Жаль конечно l3+ на проце, сразу и не заметил, так бы накупил и поюзал, выглядит очень удобной.
Я думал за 500 рабочая, типа распродажа барахла у которого нет будущего в майнинге. Велик шанс, что получишь нерабочий хлам, потому как майнеры и асики перепаивают и контрольки чинят - есть у них мастера, они не совсем уж лохи.
> mii/sdio
Ну это еще не сложно. А вот с ром хз как. Разве там так много вариантов куда на сок приделать конфигурационную флешу?
Вот скажи, тебе жалко 500 рублей? Это меньше чем поход в магазин. Возьми на одну платку больше и отреверси и глядишь ЗИП образуется. Увлекательное медитативное занятие, может и смехоту узнаешь из первых рук.
Только вот в этой стране ни одна тварь даже сраное спасибо или благодарю не скажет за это.
Одно дело коммерческие железки реверсить, другое - "любительские" или особоузкоспециализированные, на которые всем похуй, как например эти мозги управления.
Лол. Походу долго тут не протянешь.
Просто прикинь - НеведомаяЕбанаяХерня делалась под срисовку одной схемы. Под одну ебаную платку и скалывание ее топологии.
>>414657
>Снимешь чипы и прозвонишь.
Посмотри какой медитативный процесс. Да, камера на телефоне плачет по помойке где ей и место. Даже на таком мыле суть хорошо передается. Такая вот звонилка, как работает - сам догадаешься и очень бысто. Показан отлов одиночных линий, спаренных и 3+ линии. Особо внимательные заметят баг в работе, но похуй на него, он редкий и исправляется при повторном тесте.
https://yadi.sk/i/RqQcgVBhNXW2Ng
>Такая вот звонилка, как работает
Сердес какой-нибудь? На каждый пин свой уникальный код транслируешь? Чем принимаешь только, не очень понял.
Охуенно сделано, мое почтение.
Я бы просто нули и единицы на каждый пин выдавал и управлял бы через инсистем.
Тупо UART же. Через пачку (де)мультиплексоров на каждый вывод вывожу. Выбираю "номер анала" и в него же дрищу его номером по UART-у и ловлю. Соответственно сколько байт поймал за цикл опроса, столько и пытаюсь отобразить. Просто, тупо, работает, иногда глючит когда флюс не смываешь от мест припайки. Потенциально 256 аналов за раз можно сканить, но остановился на железке на 128 аналов коих и так дохуя.
>>414663
Прикалываешься? Сам подумой и сопоставь ее назначением этой НЕХ.
>Я бы просто нули и единицы на каждый пин выдавал и управлял бы через инсистем.
Не актуально или тебе надо по максимум осторожно все говно снести, оставив сам камень и схемы питания. Но нахуй надо. Проще +одна железка (кои идут по цене лома), которую не долго думая на органы и остается чистый рисунок топологии без влияния резисторов, конденсаторов и прочего говна на линиях.
Опять же вспомни про говно в BGA корпусах. У меня нет знакомых которые снимут и поставят назад BGA, поэтому доктор сказал в морг на органы, значит на органы и ЗИП.
>Прикалываешься? Сам подумой и сопоставь ее назначением этой НЕХ.
Нихуя не понимаю - подключаюсь щупом на вывод ром и подаю на выводы fpga по порядку номера. Индикатор покажет номер вывода к которому подключен вывод ром.
И неебет! За чистые измерения.
>или тебе надо по максимум осторожно все говно снести, оставив сам камень и схемы питания
Ну хз, что я там такого смогу поломать 3.3в лвттлями? Разве что флешу/ддр заблочу, но по питанию все сбросится.
>ддр заблочу
Дальше не читал. Вот как доберешься до того какой вывод куда подключен? NAND память бывает и в BGA и тут соснешь соснешь со своим подходом.
Вот как у этой NAND памяти узнаешь кто куда подключено своим методом? Сквозных VIA нету что бы снизу присосаться.
Еще "эталон" - это LVDS сигналы с внешней терминацией и у тебя получается.. Сигнал сразу на двух выводах меняется при изменении на одном, так как они соединены через резистор в 100 Ом. Вот и думай.
> и тут соснешь соснешь со своим подходом.
Да я не спорю, я про это и раньше писал.
> А про BGA точно, совсем не подумал. Может они конечно по референс дизайну раскидали, но надеяться на это глупо.
Как вариант иметь несколько плат и с одной спаять необходимые части и проверять по дыркам.
Но моим способом это пиздос долго.
> Еще "эталон" - это LVDS сигналы с внешней терминацией и у тебя получается.. Сигнал сразу на двух выводах меняется при изменении на одном, так как они соединены через резистор в 100 Ом. Вот и думай.
Лвдсы же можно по дорожкам запалить как раз, так что все ок, плюс питание на банках можно сразу посмотреть, благо в 7ой серии теперь нет 3.3 лвдса. Только вряд ли на этих антмайнеров вообще есть лвдсы.
Я не понимаю что я там нулями и 3.3 вольтами поломать смогу?
>Я не понимаю что я там нулями и 3.3 вольтами поломать смогу?
Если коротко - ничего, если все выводы как входы и только один вывод работает как выход.
Я же давлю на то, что не во всех случаях можно отследить сигналы куда какой идет, поэтому самое простое решение - это тупо все снести и прозванивать чистую платку. Линии данных практически сразу палятся, а вот с питанием и всякой служебной херней, тактированием и подобных что не всегда подключается точка-точка или через резисторы - немного сложнее, но реально.
Конкретно в обсуждаемой платке самое сложное - это DDR срисовать, остальное (условно) доступно. У нее снизу 16+8 резисторов штабелями и еще штук 5 рассыпухой. Вот как отследишь кто куда? У той же Альтерки (про FPGA, а не SoC) - линии данных жестко прибиты, а сигналы RAS, CAS, адресные и подобные - как хочешь раскидывай и гадай кто куда.
Пикрил - выдержка из схемки от платки на QMtech и походу память гвоздями прибита, но кто его знает...
> схемки от платки на QMtech и походу память гвоздями прибита
У них там на цинк тоже охуительная схемка в один лист? Я по советам анонов тоже их платку, но ддровскую с артиксом купил.
> походу память гвоздями прибита
Можно сравнить с схемотой других отладок на том же соке, но что-то мне подсказывает, что нифига не прибита, а просто в референс дизайне так было.
>схемка в один лист
Упоролся? http://www.chinaqmtech.com/xilinx_zynq_soc
Вау. У них новая платка вышла...
> Упоролся
Вот такое у них на артикс.
> новая платка
Неплохо, можно одноплатник на ней собрать, по цене как ZynqBerry, но сок мощнее стоит, жаль коммутатор не поставили для юсб.
Еще спартан7 завезли за 2к всего.
А чем такое шить? Только внешним житагом? Или можно упороться и погромировать флешку напрямую с ch341a? схему не смотрел мимокрокодил.
> Только внешним житагом?
Как что-то необычное. Программатором бластером по JTAG.
> погромировать флешку напрямую с ch341a
Наверное можно, но это же пиздос, спаивать, напаивать ради каждой перепрошивки?
Да это, конечно, ничего необычного, вот только бластер только под альтеру, не? Под хилых свой погроматор. Просто на отладках типа arty и иже с ними есть возможность залить, тупо подключившись по usb. Там стоит ftdi232 или 2232, вот и мне интересна возможность получить заливку бинарника занидорага. вдохновлялся идеей hscope, чтобы можно было из говна собрать себе некоторое подобие измерительного устройства
>Под хилых свой погроматор.
Да, купил китайский за 2-3к. Все равно дебажить надо. Я бы на таком не экономил, это же жесть как неудобно иначе и велик шанс наебнуть.
>из говна собрать себе некоторое подобие измерительного устройства
Бля, ты - это я. Только вот пока не продвинулся дальше идей, работа поглощает все время.
Ну и естественно бластер зайлинкс несовместим с альтерой и стоит в разы дороже.
Есть ещё какой-то супер программатор за 500 баксов, но я так и не понял нахуя он такой дорогой.
>>414801
>>414802
Какой-то с Али. Имя затерто, но все же знают что это FT232HL.
На том же Марсоходе из FT2232H делают байтбластер под Альтеру.
Салат прошивал через FT2232D Проверить на H не могу - софт проебан и впадлу получать новый ключ и все восстанавливать.
Так же на Али есть программатор 3 в одном - Altera+Xilinx+Lattice.
Ставлю что тут разница только в содержимом EEPROM, чисто спижженном с платок от Digilent.
>Ставлю что тут разница только в содержимом EEPROM, чисто спижженном с платок от Digilent
Про это кстати вычитал и правда так.
Для дебага точно нормально подойдёт? На зайлинксовских платах со встроенным отладчиком не работал, только через бластер.
У меня пикрил вообще, разницы с официальным за 500$ не заметил.
В душе (shower) не ебу. Ньюфаг же в мире хиленьких поделок и блевотины. Больше нравится жрать колючий кактус.
FT Prog-ом опозналось - уже хорошо, а блевада на то время не стояла. Может на днях попробую загрузить импакт или как-там программер зовется и автодетект прогнать для цинка.
>Больше нравится жрать колючий кактус.
Да мне тоже, но все новые проекты на зайлинкс перевели.
>Может на днях попробую загрузить импакт или как-там программер зовется и автодетект прогнать для цинка
Да ну его, он не интересный. Через виваду хотя бы можно посмотреть данные с встроенных датчиков плисы Xadc.
>Через виваду хотя бы можно посмотреть данные с встроенных датчиков плисы Xadc.
Запили что ли гайд что сделать для тупых макак птенчиков, которые первый раз разгружают блеваду. Какой говнокод пилить, в каких ебенях компилить, как загружать и тестить..
Да я сам нюфаг вивад ещё, лучше кого-нибудь опытнее попросить.
А так просто заходишь в нее и сразу жмешь "open hardware manager". Даже без создания проекта. Там конектишься к плисине и смотришь в списке устройств Xadc/sysmon, он через жтаг подрубается напрямую, без проекта даже.
Лови как бонус за короткое и понятное объяснение куда тыкать.
О, это все ты. А у этой платки разве программатор не вшит? Алсо, запитать от юсб хотя бы можно?
За сколько брал программатор? По идее плисовый программатор должен быть производительнее.
Вообще у qmtech есть куча рабочих проектов, которые идут для этой платы, можешь открыть проект, скомпилить и залить.
Правда с цинками я не работал, так что как зашивать проц не знаю видимо через сдк.
>А у этой платки разве программатор не вшит?
Тебе не кажется что ответ очевиден?
>Алсо, запитать от юсб хотя бы можно?
На шнурке USB->POWER как вроде запускается и идет в комплекте, но не уверен, не помню, гарантий не даю.
Самые правые - спокойно работают от USB, с цинком - спорно, но грузится и неизвестно как поведет себя под нагрузкой. 5-й циклон - только внешнее питание...
Так же у цинка есть "баг" - он сука питается от порта usb (который преобразователь на компорт) и не до конца гаснет при выдергивании штатного внешнего питания.
>За сколько брал программатор?
Пикрил. Можешь обдристать, но мне похуй. Схема получена, дамп есть. Задание выполнено.
>По идее плисовый программатор должен быть производительнее.
Не понимать.
https://metrotek.center/fpga-webinar.html
Это реклама. Тебя никто не связывает и не вставляет спички в глаза что бы принудительно смотрел происходящее.
Кому интересно - перейдут, кому неинтересно - пройдут мимо.
Поэтому только один вопрос - не лень было писать? Если бы каждый лид писал что ему не подошло, а не гадаешь по статистике и CTR, что не так с лендингом или куда там льешь трафик.
То что по ссылке уже каждый школьник знает. Вот если было бы скажем углубленное изучение ТаймКвеста, методы как уложить неукладывающийся по частоте проект, как поднять Ниос, его архитектура, как под него кодить. А так очередной детский сад.
А можно где-нибудь почитать, как они работают с Ethernet на полной скорости, а ещё лучше проект глянуть?
Ты б написал сразу, что бесплатно, а то я только на хабре это увидел
Укрощаю АЦП, поясните за CiC дециматор. Нужна софтверная реализация, и перенос дециматора в центр цепи очень сэкономит память.
Я правильно понимаю что в таком варианте дециматор не просто пропускает каждый N-ный (в примере 4-й) сэмпл, но и сбрасывает весь каскад аккумуляторов слева?
>Я правильно понимаю
Нет, конечно ничего сбрасывать не требуется.
Просто распиши разностное уравнение того что будет на выходе (для второй картинки) и станет видно, что это эквивалентные варианты. Собственно разностное уравнение соответствует программе 1 в 1.
Также полезно рассмотреть с частотной точки зрения. У фильтров с твоей второй картинки АЧХ вида |sin(DхFнорм)|, D=2R, Fнорм - нормированная частота относительно частоты дискретизации. Т.е. Fнорм=2pi (или еще чему, в зависимости от того как нормировали) соответствует реальной частоте равной частоте дискретизации. Что происходит при прореживании отсчетов (там где у тебя квадратик R)? Частота дискретизации на выходе получается в R раз ниже. Поменяется ли АЧХ для тех двух вариантов с этой точки зрения? Нет. АЧХ цифровых фильтров периодическая и тут поменяется только период повторения АЧХ относительно реальной частоты. Но там еще поменялось D и период синуса останется прежним. Разумеется еще нужно учитывать алиасинг, поэтому для доказательства эквивалентности, разностное уравнение все равно придется расписать.
Тебе точно нужен именно CIC фильтр? Ты точно в этом уверен?
Может я в чем-то ошибся, пусть поправят если что.
Спасибо, бро. Спектральную часть я понимаю, и даже этот финт с переносом. Но ведь слева от него опущен каскад интеграторов как они не переполняются если их сразу не компенсирует гребенка?
Вот как я рассуждаю для одиночного CiC:
Уравнение цепи до дециматора выглядит так:
>y=y[i-1]+x-x[i-D];
Считаем на каждый новый семпл:
>y=y+data[0]-data[D-1];
И буферизуем входные семплы по вкусу.
Для высоких порядков нужно хранить >data[D][N]
чисел, что слишком накладно.
А вот как сюда засунуть дециматор, чтоб хранить >data[2][N] семплов?
ЦыЦ самый быстрый.
Если к RISC процессору нужна экзотическая периферия или очень-очень много периферии. В остальном stm32 в разы дешевле.
https://aliexpress.ru/item/4000316821863.html
Видел еще у qmtech новую с 7020, но 512 мб ддр и без юсб. Хотя бренду и доверяю, но по хар-кам немного хуже получается.
Этих тоже рассматривал, но выйдет дороже, да и синезуба с вайфаем встроенного нет, что уж говорить про отдельную плату для жпио.
Зато хотя бы ацп распаян.
Что именно fpga-шное ты собираешьcя на ней делать?
Если нужен именно одноплатник - бери лучше малинку. С маргинальными одноплатниками и так головняка много, а тут ты еще серьезно ограничен выбором дистрибутивов.
Ultra96-v2
> Что именно fpga-шное ты собираешьcя на ней делать?
Все подряд по работе по сути поднятие всяких интерфейсов и протоколов для тестов и пару домашних извращений. Есть платка с артиксом-7, но хочется еще больших извращений.
> С маргинальными одноплатниками и так головняка много
Это же самое веселое. Придется головой думать и пердолиться, а не на все готовое садиться.
> Ultra96-v2
Еще такое есть "FZ3 Card - Deep Learning Accelerator Card", но оно сильно дороже получается, я даже 14к не очень хочу тратить.
С доставкой не все так гладко, кто-нибудь заказывал вообще с авнета или миюра? С алика все просто будет.
> Как успехи с запуском цинка с antminer?
Я из дома даже не выхожу. С барыгами с авито не очень хочется контактировать в это время. Поэтому позже буду пробовать.
>antminer
Посмотрел на авите, за 900-1500р можно купить даже новую. Чота заинтересовало. Такие копейки за такую йобу. После карантина прикуплю
> Такие копейки за такую йобу
Я вот чисто случайно наткнулся на такое и решил с анонами поделиться. Просто в интернетах даже не поднимается такая тема. Благо один из анонов оказался уже прошаренным.
Ебли там конечно много будет, но чисто фпга поднять просто думаю.
Сможешь конечно, только фпу тебе надо будет "программно" писать и они не будут столь быстры, как аппаратные фпу.
Я думаю для меня бессмысленно покупать Стратикс 10 для 1-2 вычислений не имеет смысла. Буду думать как мне обойтись без этих вычислений, тем более что у меня SoC в наличии
Это конечно выход из положения и я даже думаю скорее всего мне этот вариант подойдет. Все равно я пока не понимаю как бы мне это реализовать. Я только начал изучать ПЛИС и верилог в частности.
А собственно в чём проблема?
Скорее всего потому что сигнал t в тестбенче асинхронно с тактовой частотой. Формально активный (нарастающий) фронт тактового сигнала совпадает с нарастающим фронтом сигнала t. По факту в симуляторе может быть так что нарастающий фронт сигнала t появляется сразу после (с нулевой задержкой) после активного (нарастающего) фронт тактового сигнала, вот и получается что когда есть активный фронт тактового сигнала, то в этот момент сигнал t ещё не в 1. Попробуй в 32 строке заменить
#20
на
#21
Не помогло. Даже если ставлю вход t в 1 с самого начала, все равно выход не переключается.
Проверь букву "с" в clk, в модуле триггера, чтобы она не была русской и попробуй заменить logic на reg. И почитай ворнинги которые выдаёт МоделСим может там есть подсказка.
И кстати, проблема про которую я говорил у тебя есть. Посмотри как переключается D-триггер, он меняется в том же такте что и сам сигнал d, а это не правильно. С JK-триггером тоже самое, новое состояние должно быть на следующем такте после команды.
>Посмотри как переключается D-триггер, он меняется в том же такте что и сам сигнал d
Это потому что в тестбенче значения сигналов устанавливаются через "=".
Фишка цика в том, что он работает с переполнением. Основной затык в том, что растёт разрядность по выходу каскада. Поэтому и применяют всякие хаки типа перестановки интегратор-гребёнка.
НО.
Если ты хочешь сделать децимацию в 2-4 раза можно смело забить на все хаки и сделать в лоб. Разрядность вырастет не очень сильно и по выходу сможешь ее сбросить вниз округлением. гугл на тему rounding half up/down.
Мой совет: перепеши на простом верилоге, без logic и always_ff. Проверь. Если заработает, то ну ты понел.
Заведи отдельную переменную и её перекидывай по сигналу t. Так же можно вытащить сигналы прям из модуля t_flip_flop_ar, а не из flip_flops. Мб при подключениях что-то сломалось...
Первый про вот эту штуку -> http://llhd.io/ SV нормально компилит, без проблем. Для VHDL не может найти IEEE-шные либы на линухе. Кто-то теребонькал вообще этот LLHD c VHDL? Судя по доке с vhdl не должно быть проблем, может я просто где-то проебался.
Второй про тулзы на линухе. До этого в основном пользовался вивадой, сейчас на винде с квартусом играюсь. А на линухе не совсем понимаю где и какие тулзы смотреть. Нужен синтезатор и симулятор. Чтобы просто из cli небольшие модули с тестбенчами синтезировать в RTL, видеть картинку, что получилось на схеме, и запускать симуляцию потом. Кто может просветить?
Но это же какая-то нелепая нездоровая хуйня. Всю жизнь писали #10 a<=0; #10 a<=1; etc
А если только ресет в начале добавить, работает?
Но это настолько нелепо, что никаких эмоций кроме недоумения не вызывает. Зачем люди это делают?
Я кароч понял, в чём твоя исходная проблема.
Ты в коде тестбенча t и qt сбрасываешь через {t, qt} <= 0;
Так не делается, потому что qt это выход схемы, им должна управлять симулируемая железка. Вероятно, авторы симулятора не ожидали, что кто-то так попробует наебать систему, поэтому не отловили попытку сделать явную хуйню. Сбрасывать выходы модулей в исходное состояние надо через сигнал ресета и никак иначе.
Это двощи, тут каких только шизиков не бывает.
А у него видимо вызывает
Да, работает, если добавить ресет, и писать просто t <= 0; #10; t <= 1;. Но есть такой прикол, что при использовании блокирующих присваиваний для изменения значений входов, выходы меняются в том же такте, что и входы. А если использовать неблокирующие, то все норм.
>>416674
Да, я думал можно тупо присвоить выходу значение. Еще в моделсиме ворнинг был какой-то, типо несколько источников у выхода.
>Lattice
Могу только посочувствовать если поставишь их IDE под некроCPLD 4000 серии и около нее. Все в округе заблюешь при попытке нарисовать что-то на схемном вводе + Ежегодичная анальная привязка к маку карты (тестовую(?) нахаляву выдали и давно протухла. Для программирования - хватало ft2232D)
Именно FPGA - не тыкал, не знаю, не скажу, только CPLD ispMACH4000, выдранные из свичей.
Краем уха слышал обоснование тотальной разницы цен на примерно равные по объему FPGA - салат строит "с нуля" и вширь, а Альтера/Хилинькие - делают максимально жирную FPGA и обрезают их. Это было давно и неправда.
Микросеми слышал и не более того. Сектант-фанат кактуса и атмосферных циклонов да хуй там. даже обосснаный стратикс 3 будет потолще чем циклон и больше простор для ошибок и бредовых схем
https://aliexpress.com/item/32577556541.html
https://aliexpress.com/item/32860986925.html
https://aliexpress.com/item/32294513740.html
https://aliexpress.com/item/32293741737.html
Да хуй его знает что выбирать. Ближайшие примеры.
> Все в округе заблюешь при попытке нарисовать что-то на схемном вводе
Мне и вивады хватило после квартуса.
Да, забыл указать, что именно FPGA хочу.
Zynq от зайлинксов заказал, Танг и Прайм от Gowin заказал, с стратиксами и ссыклонами и так довольно много работал. Надо еще таки купить антмайнеры и трайнуть их реверсить, но что-то мне кажется сосну с PS пинами.
Спасибо за ответ!
С одного из типов плат есть такая картинка - может поможет.
Спасибо, понял куда курить дальше. Неочевидный момент что с одной стороны фильтр может переполняться и это нормально, а с другой его усиление приводит к переполнениям и это плохо.
Сейчас сделал децимацию 8х в лоб. Разрядность на моих порядках фильтра как раз впритык возросла с 24 до 64 бит. А дальше бью Кихом в целых числах а дробные с постоянным запятой осиливать лень т.к. есть сопроцессор .
Совсем забыл про блог этого чувака, там оказалось все, что я искал.
https://joelw.id.au/FPGA/CheapFPGADevelopmentBoards
Спасибки. Схоронил
Это же не для майнинга, схематик гуглится за секунду.
https://github.com/Elrori/EBAZ4205
https://aliexpress.ru/item/4000042572307.html
Зря спросил, уже разобрался
Сап плисач. Я программист микрокотроллеров и с недавних пор решил перекатиться в ПЛИС. Посудите сами, прогая мк максимум, чего можно добиться - это зарплаты 100к в ДСах, но это потолок по сути, а на ПЛИСинах и карьерный рост привлекательней, и возможность для трактора(релокейта) есть.
Ещё рассматривал варианты перекатится в промышленные компьютеры и малинки, но там линукс и это уже чисто для программистов имхо, и в проганье ПЛК, но там какие-то поехавшие петровичи, настраивающие плк и регуляторы в тайге на лесопилках и заводах.
Но в целом полагаю, что ПЛИСы должны быть проще чем МК, ведь в мк приходится читать сотни страниц даташитов, знать с десяток семейств разных мк и их параметры, а ПЛИСы отличаются между только количеством ячеек.
Посему вопрос - мне ведь должно быть легче вкатиться в ПЛИС чем обычному программисту или мимокроку, п-правильно?? На что обратить внимание, с чего начать?
С цифровой схемотехникой немного знаком - в университете изучал логические элементы, триггеры, мультиплексоры, дешифраторы, автоматы Мура и Мили, таблицы истинности, СДНФ и так далее. Т.е. в крациях помню, как всё это работает, но по памяти нарисовать схему, скажем, синхронного RS-триггера не смогу.
Когда прогаю мк знания цифровой схемотехники мне пригождаются, например, чтобы запихнуть байт в сдвиговый регистр и отправить по линии связи, настроить предделитель частоты таймера или выбрать нужный канал АЦП с помощью мультиплексора. Но так как пишу в основном на Си, то мои познания об архитектуре микропроцессора весьма скудные, знаю только, что там внутри АЛУ, которое складывает и отправляет байты, а про то, как оно работает, как там устроены шины и адресации не знаю.
Как я понял, мне нужно сделать следующее:
1) Подтянуть знания цифровой схемотехники, пособирать разные триггеры и регистры в каком-нибудь мультисиме. Ещё как опционально выучить архитектуру микропроцессоров, на дваче мне посоветовали книжки Харрис и Харрис "Цифровая схемотехника и архитектура компьютера" и "Код" Петцольца. На сколько у плисоводов вообще востребована задача собирать soft-процессоры в своей работе?
2) Выучить verilog и vhdl.
3) Сделать пару пет-проектов и залить их на гитхаб(и завести гитхаб сначала). Для отладки купить на алике отладочную плату altera с максимальным количеством элементвов и программатор(Byte-blaster). Ещё есть xilinx, но altera проще, как я понял altera это avr от мира плис, так что лучше начну с неё.
4) Рассылать резюме и устроиться куда-нибудь прогать плис.
Сколько времени может понадобится на вкат, годика неспешного проганья плис после основной работы хватит?
Сап плисач. Я программист микрокотроллеров и с недавних пор решил перекатиться в ПЛИС. Посудите сами, прогая мк максимум, чего можно добиться - это зарплаты 100к в ДСах, но это потолок по сути, а на ПЛИСинах и карьерный рост привлекательней, и возможность для трактора(релокейта) есть.
Ещё рассматривал варианты перекатится в промышленные компьютеры и малинки, но там линукс и это уже чисто для программистов имхо, и в проганье ПЛК, но там какие-то поехавшие петровичи, настраивающие плк и регуляторы в тайге на лесопилках и заводах.
Но в целом полагаю, что ПЛИСы должны быть проще чем МК, ведь в мк приходится читать сотни страниц даташитов, знать с десяток семейств разных мк и их параметры, а ПЛИСы отличаются между только количеством ячеек.
Посему вопрос - мне ведь должно быть легче вкатиться в ПЛИС чем обычному программисту или мимокроку, п-правильно?? На что обратить внимание, с чего начать?
С цифровой схемотехникой немного знаком - в университете изучал логические элементы, триггеры, мультиплексоры, дешифраторы, автоматы Мура и Мили, таблицы истинности, СДНФ и так далее. Т.е. в крациях помню, как всё это работает, но по памяти нарисовать схему, скажем, синхронного RS-триггера не смогу.
Когда прогаю мк знания цифровой схемотехники мне пригождаются, например, чтобы запихнуть байт в сдвиговый регистр и отправить по линии связи, настроить предделитель частоты таймера или выбрать нужный канал АЦП с помощью мультиплексора. Но так как пишу в основном на Си, то мои познания об архитектуре микропроцессора весьма скудные, знаю только, что там внутри АЛУ, которое складывает и отправляет байты, а про то, как оно работает, как там устроены шины и адресации не знаю.
Как я понял, мне нужно сделать следующее:
1) Подтянуть знания цифровой схемотехники, пособирать разные триггеры и регистры в каком-нибудь мультисиме. Ещё как опционально выучить архитектуру микропроцессоров, на дваче мне посоветовали книжки Харрис и Харрис "Цифровая схемотехника и архитектура компьютера" и "Код" Петцольца. На сколько у плисоводов вообще востребована задача собирать soft-процессоры в своей работе?
2) Выучить verilog и vhdl.
3) Сделать пару пет-проектов и залить их на гитхаб(и завести гитхаб сначала). Для отладки купить на алике отладочную плату altera с максимальным количеством элементвов и программатор(Byte-blaster). Ещё есть xilinx, но altera проще, как я понял altera это avr от мира плис, так что лучше начну с неё.
4) Рассылать резюме и устроиться куда-нибудь прогать плис.
Сколько времени может понадобится на вкат, годика неспешного проганья плис после основной работы хватит?
Плис у нас в основном в военке, а тебя туда не возьмут, пока матан цифровой фильтрации не осилишь
>Но в целом полагаю, что ПЛИСы должны быть проще чем МК
Это ты зря. В разработке на ПЛИС тебе также придётся читать сотни страниц даташитов на различные блоки ПЛИС, ип ядра.
>выучить архитектуру микропроцессоров
Это нужно, если собираешься проектировать свои процессоры, но обычно используют готовые.
>На сколько у плисоводов вообще востребована задача собирать soft-процессоры в своей работе?
Довольно часто, но для этого не надо знать досконально как внутри устроен процессор, достаточно почитать мануал как его настроить, подключить нужную переферию. Часто используют хард процессоры, как в цинке например.
Ещё посмотри, как Ethernet делать и оперативку подключать по альтеровским примерам, они нередко используются.
С кучей логических ячеек у китайцев есть неплохой вариант на ep4ce115
https://a.aliexpress.ru/_eLzDcT с озу, gigabit ethernet и программатором.
Я думаю, идеально было бы потом связаться с начальниками отделов, в которые хочешь вкатываться и узнать из первых рук, с чем они работают и что лучше изучить.
>в целом полагаю, что ПЛИСы должны быть проще чем МК, ведь в мк приходится читать сотни страниц даташитов
Тогда ты ПРОСТО ОХУЕЕШЬ и будешь визжать как сучка с того, что тебе предстоит читать для ПЛИС.
Чтобы осознать масштаб пиздеца, пролистай юзер гайд на один лишь мультигигабитный трансивер (используется для последовательных интерефейсов со скоростью полтора гигабита в секунду и выше — Ethernet, PCI-E, HDMI, SATA, etc) одного лишь семейства Ultrascale и прикинь, как быстро ты сможешь передать и принять по нему хотя бы один байт): https://www.xilinx.com/support/documentation/user_guides/ug576-ultrascale-gth-transceivers.pdf
Безусловно, глаза боятся руки делают, но нет, ПЛИС — точно не та область, куда стоит вкатываться в расчёте меньше курить маны.
>Довольно часто
А что, на Hdl никто не кодит? Там же cycle-accurate, по сути вся прелесть плис.
> прогая мк максимум, чего можно добиться - это зарплаты 100к в ДСах
Да и в плисах больше не светит по большому счёту. Хочешь денег - иди веб-макакой.
>1) Подтянуть знания цифровой схемотехники
>2) Выучить verilog и vhdl.
https://www.youtube.com/user/jack0ov/featured
>Сколько времени может понадобится на вкат, годика неспешного проганья плис после основной работы хватит?
Смотря до какого уровня. Помигать диодом сможешь уже через пару часов.
>>419090
Ну хз, смотря что делаешь, у меня вот, например, такой необходимости нет. Хотя лишним и не будет.
Только местами немного дезинформирует, например в предыдущем треде про case было.
>Хочешь денег - иди веб-макакой.
Тоже так думал. А вот хуй там. Надо идти в... Рекламу!
Стань рекламщиком, работай за проценты от продаж.
Еще жеще - берешь биту, присасываешься к трейдеру и ебашишь на бинарных аукционах. Ахуенный рандом и непредсказуемость, везение и сможешь гребсти десятки-соткиК в день.
Обычная, бейсбольная для мотивации трейдера. Личный трейдер - это очень недешевое удовольствие и попробуй найди нормального с опытом.
>Плис у нас в основном в военке, а тебя туда не возьмут,
Я и не собираюсь идти в военку и становится невыездным, ведь, как указал, пепспектива завода трактора - одна из причин, почему вкатываюсь в ПЛИС. наслышан об историях плисоводов, которые завели трактор
>пока матан цифровой фильтрации не осилишь
Та что там его осиливать, всего лишь выучить преобразование Фурье, фильтры каллмана, вот и всё.
https://developer.arm.com/ip-products/designstart/fpga/fpga-xilinx
Смысла особого нет, я конкретно про наличие возможности. Большинство производителей проверяют дизайн сначала на плис, а уже потом заказывают асики.
Либо это бред, либо я что-то не понял.
Для чего используют софт-процессоры или готовые по типу цинков? Часто просто для управления, приходят какие-то управляющие данные, хоть по какому интерфейсу, хоть по UART, выдаются настройки по каким-нибудь SPI во всякие АЦП/ЦАП и делаются другие подобные вещи.
А ты что предлагаешь? И сколько ресурсов ПЛИС займет то что ты предлагаешь?
>>419704
Почему именно кортекс? Сейчас гитхаб завален разными RISC-V и не только. А можно и что-то совсем простенькое сделать, не торопясь, за день.
> приходят какие-то управляющие данные, хоть по какому интерфейсу, хоть по UART, выдаются настройки по каким-нибудь SPI во всякие АЦП/ЦАП и делаются другие подобные вещи.
Протокол необязательно стандартный, частоты тоже. Плюс стандартные корки используют акси, что оверкилл для большинства задач. Разве если нужна точность до наносекунд софтпроцы подойдут?
> А ты что предлагаешь? И сколько ресурсов ПЛИС займет то что ты предлагаешь?
Предлагаю вручную на HDL писать автоматы для конкретных задач.
Похоже мы не поняли друг друга. Одно другого не заменяет, оно для разных задач, хоть и частично пересекающихся.
Если кратко - софтпроцы для управления/сложных для плис протоколов, а hdl для точной потактовой оптимизации/решения узких задач?
Как можно в виваде например напердолить кастомный протокол под SPI-корку? Придется писать своего AXI-мастера, без этого никак?
ПЛИС это не ваш последовательно работающий МК, тут параллельные процессы от которых у тебя с непривычки кукушка съедет во все поля.
Зачем для SPI нужно AXI? SPI это тык-тык через сдвиговый регистр и все. AXI это только если к микроблейзу подсоединять. Но если скрость не важна, то хоть ногодрыгом можно, если через процессор.
А если так просто выдать что-то по включению в SPI, то тоже AXI ни к чему, счетчик, сдвиговый регистр и практически все.
>Предлагаю вручную на HDL писать автоматы для конкретных задач.
Как ты себе это представляешь для типичной задачи для процессора? Для сравнения, простой процессор займет несколько сотен ячеек (т.е. в которых по LUT и триггеру) и немного блочной памяти, а сколько займет твой автомат, если он не будет разновидностью процессора с тем или иным набором команд?
Хочешь сказать, что прилинкованный докумет тебя не особенно впечатлил? Тогда вкатывайся, буду горд называть тебя своим коллегой.
Только не называй код для ПЛИС программой, это схема.
Впрочем, программы писать всё равно придётся — для встроенных в проект хард- или софт-процессоров типа Microblaze. У него тоже дохуя периферии, с ней надо ебаться, зацени ну, например, контроллер прерываний: https://www.xilinx.com/support/documentation/ip_documentation/axi_intc/v4_1/pg099-axi-intc.pdf
Ахаха, напугал жопой ежа микроконтроллерщика параллельными процессами.
Внутренняя переферия микроконтроллера может одновременно принимать и получать байты по интерфейсам в полный дуплекс, измерять АЦП и выдавать напряжение в ЦАП, откликаться на внешнее прерывание, шимить и считать время таймером, записывать в память. По завершении процесса поднимается соответствующий флаг и мк обрабатывает прерывание (если его предварительно разрешить).
Ну, все вектора прерываний одновременно будет использовать только поехавший, но одно или несколько прерываний одновременно используется очень часто.
Это только начинающий/любитель будет, не используя прерываний, ждать флага завершения процесса, чтобы начать другой, вот у него да, микроконтроллер будет работать последовательно, обрабатывая один процесс за другим.
>Только не называй код для ПЛИС программой, это схема.
Да, верно.
В крайнем случае можно сказать, что это прошивка ПЛИС, потому что как и в мк она заливается в энергонезависимую память.
> фильтры каллмана
Хуйня полная. ЦОС не про это вообще. Удачи выкатиться с ПЛИСами из рашки. Проще питон задрачивать.
хотя сам в Швеции в одной компании на букву Э асики разрабатываю, лол
Хе-хе, это совсем не то, ты только запускаешь периферию, а потом её опрашиваешь в программе последовательно.
А ты попробуй удержать в уме одновременную и взаимную работу хотя бы десятка устройств, счётчиков, регистров, мультиплексоров, автоматов и прочей срани. При этом всё это надо вместе увязать, что бы всё работало согласованно, одно другому выдавало данные с точностью до такта и прочее. Это тебе не программу писать.
>Хуйня полная. ЦОС не про это вообще.
Слишком сильное утверждение. ЦОС и про это в том числе.
Это штука, которая описывает системы, которые можно приблизительно представить как линейные, с шумом, который можно приблизительно представить как белый гауссовый. Она охерительно общая.
Я тоже тащился по фильтру Калмана, когда только узнал о нем. Поверь, в этой штуке нет ничего особенного или сложного.
>в этой штуке нет ничего особенного или сложного
Я ровно об этом и написал — она описывает наиболее распространённую в технике модель систем (линейные стционарные) с наиболее распространённой в технике моделью помех (белый гауссов шум). Ты возражаешь на какой-то выдуманный тобой же аргумент, а не на мой.
>Хе-хе, это совсем не то
Самое что ни на есть то, в этом посте >>419749 речь шла о "последовательно работающем МК". А в МК может одновременно работать несколько счетчиков, ацп, цап.
>, ты только запускаешь периферию, а потом её опрашиваешь в программе последовательно.
Вектор прерывания вообще не об этом. Прерывание может выдернуть МК из его последовательной программы в любой момент, заставить выполнить программу прерывания, а потом уже разрешит ему вернуться к основной программе.
>А ты попробуй удержать в уме одновременную и взаимную работу хотя бы десятка устройств, счётчиков, регистров, мультиплексоров, автоматов и прочей срани. При этом всё это надо вместе увязать, что бы всё работало согласованно,
Ну когда пишу программу для МК как то удерживаю в уме и увязываю работу одновременную работу нескольких usart, i2c, spi, usb, ацп, цапов, таймеров по десятку векторов прерываний.
>одно другому выдавало данные с точностью до такта и прочее.
Вся ПЛИСина тактируется от одного кварца. Разные блоки ПЛИС можно тактировать от частоты кварца, или от частоты кварца деленной на 2/4/8/.../1024. Поэтому совместить работу нескольких объектов до такта не составит труда.
>Это тебе не программу писать.
Ну я не думаю, что написать прошивку для ПЛИС прям намного сложнее, чем написать программу для МК. Ты же не выдумываешь каждый раз, скажем, схему счётчика или сдвигового регистра, верно? Ты берешь книжку по цифровой схемотехнике и собираешь его на языке Verilog или VHDL, ну или ты читал книжку раньше и можешь сделать это по памяти. Вот из таких отдельных блоков и состоит конфигурируемая цифровая схема, которую загружают в ПЛИС.
>А в МК может одновременно работать несколько счетчиков, ацп, цап.
Ты долбоеб? Проц, который обрабатывает показания с перифирии (внимание, последовательно!) чаще всего один.
>речь шла о "последовательно работающем МК". А в МК может одновременно работать несколько счетчиков, ацп, цап.
Я не про периферию как таковую, а про работу процессора, и тебя как программиста, ты составляешь программу которая исполняется последовательно.
>Прерывание может выдернуть МК из его последовательной программы в любой момент
И что? Процессор как выполнял машинные инструкции одну за другой так это и делает, пускай прыгая по программе взад вперёд, это ничего не меняет. Процессор сначала выполняет одну инструкцию полностью, потом берёт другую. Все эти ваши конвейеризации, многопоточности, многоядерности это всё детский сад по сравнению с тем то делается в ПЛИС.
>удерживаю в уме и увязываю работу одновременную работу нескольких usart, i2c, spi, usb, ацп, цапов, таймеров по десятку векторов прерываний
Это всё не то. Ты просто знаешь что они у тебя запущены и с каким-то интервалом или по событиям генерят прерывания, тут ничего сложного.
>Вся ПЛИСина тактируется от одного кварца. Разные блоки ПЛИС можно тактировать от частоты кварца, или от частоты кварца деленной на 2/4/8/
Невинная толстопростота. У меня для тебя плохие новости. И это ты ещё наверно не слышал про метастабильность.
>Ну я не думаю, что написать прошивку для ПЛИС прям намного сложнее, чем написать программу для МК.
Когда наберёшься опыта - конечно.
>Вот из таких отдельных блоков и состоит конфигурируемая цифровая схема
Да, только этих блоков одновременно существующих может быть очень много. И нужно прокачивать свою "оперативную память" в мозгу чтобы всё это держать в голове. Симулятор, конечно, в помощь, но на начальных этапах будет сложно, готовься.
Для примера попробуй хотя бы сделать UART-приёмник, именно приёмник, если знаешь что такое счётчики, регистры, автоматы, то подучив hdl, для начинающего по силам, тогда примерно поймёшь что это такое. А на практике схемы будут в разы, а то и в десяток раз сложнее и объёмнее.
Написание прошивки для ПЛИС - это по сути создание схемы из цифровых элементов. Представь, что собираешь свой блок на макетной плате из логических элементов, триггеров, счетчиков, только на несколько порядков быстрее и эффективнее.
>Удачи выкатиться с ПЛИСами из рашки. Проще питон задрачивать.
Да, но почему-то веб-макак, перекатившихся в гуглы-фейсбуки, по-пальцам пересчитать, зато среди плисоводов каждый второй - тракторист.
Олсо, ты же сам себе противоречишь:
>с плисами не выкатится из рашки
>сам плисовод и работаешь за бугром
>Ты долбоеб?
Нет, ты.
>Проц, который обрабатывает показания с перифирии (внимание, последовательно!)
Ты думаешь, что это происходит так. Проц померял показание ацп, потом послал сообщение по uart, потом принял байты по spi. Но чаще происходит по другому. МК одновременно меряет ацп, в любой момент, вне зависимости чем проц занимается, он может принять байты по uart, spi, и шимить что-нибудь таймером. Все эти события обрабатываются в прерываниях, которые выдергивают МК из его последовательной работы.
>чаще всего один.
Не один же, в МК кроме собственно процессора (АЛУ, CPU), ещё есть куча перефирии.
>Для примера попробуй хотя бы сделать UART-приёмник, именно приёмник, если знаешь что такое счётчики, регистры, автоматы, то подучив hdl, для начинающего по силам, тогда примерно поймёшь что это такое.
Думаю, осилю. Делал программный UART-приёмник. Написать и откалибровать для надёжной работы софтварный UART-ресивер для МК куда-сложнее, чем просто соствить его из блочков на ПЛИС, потому что приходится учитывать время, за которое выполняются инструкции процессора и согласовать работу нескольких прерываний.
Да я вкурсе.
Просто чисто на практике вся эта "конфигурация цифровой схемы" заливается во flash-память плиски через программатор как самая настоящая прошивка. А уже из неё она модифицирует плис, превращая его в нужную схему.
А если нужна другая схема, можно перепрограммировать плис, залив другую прошивку.
>заливается во flash-память плиски
В FPGA обычно нет энергонезависимой памяти.
Если ты такой умный, то почему еще тут что-то пишешь, а не зубришь учебник?
С трудом верится что сможешь так прямо легко сделать UART, учитывая что ты ранее писал:
>но по памяти нарисовать схему, скажем, синхронного RS-триггера не смогу.
Ну хоть как-то, пусть не сразу, а немного подумав, пусть неоптимально, тоже не сможешь?
А потом:
>мои познания об архитектуре микропроцессора весьма скудные, знаю только, что там внутри АЛУ, которое складывает и отправляет байты, а про то, как оно работает, как там устроены шины и адресации не знаю.
Другими словами ты написал, что не сможешь сообразить простейший процессор с несколькими инструкциями? Знать для этого ничего особого не нужно, кроме какого-нибудь набора команд в качестве примера. Это несложная задача. Конечно сомнительно что именно такая задача встретится на практике, но задачи, возникающие при программировании FPGA, часто весьма близки к этой.
Тут можно сколько угодно так распинаться, но знаний у тебя от этого не прибавится. Так что если собрался, то бери учебник и вперед.
>Если ты такой умный, то почему еще тут что-то пишешь, а не зубришь учебник?
Сперва надо купить макетную плату с ПЛИС, программатор, учебник.
Вот найду всё это и буду сидеть учиться по учебнику, сразу же повторяя схемы, которые узнал на практике(то есть в ПЛИС).
>Другими словами ты написал, что не сможешь сообразить простейший процессор с несколькими инструкциями?
Да. А разве когда делаешь на ПЛИС процессор или приёмник uart нужно каждый раз изобретать велосипед или можно использовать проверенные временем схемы из учебника?
>Знать для этого ничего особого не нужно, кроме какого-нибудь набора команд в качестве примера. Это несложная задача.
Ничего себе не сложно. Насколько я знаю, микропроцессорная техника это вообще отдельная отрасль цифровой электроники. Гарвардская и фон-неймонавская архитектура, наборы команд cisc, risc - для меня это темный лес, потому что пишу на Си и ассемблер никогда не использую. У меня только обрывки знаний(как на пикрелейтед), типо вот в гарвардской шина адреса и данных отдельно, а в фон-неймановской вместе(или наоборот). Инструкция cisc это несколько очень маленьких инструкций risc вместе. А ведь всё это следует досконально знать, чтобы самостоятельно делать процессоры с нуля из логических элементов.
>Сперва надо купить макетную плату с ПЛИС, программатор
Вовсе не обязательно. Тут другой подход, симулятор просто необходим при разработке. Тестбенчи - не слышал?
>учебник
Полный интернет этих учебников.
Надо же, погромист поясняет плисоводам про параллельную работу блоков микроконтроллера итт. Удачи тебе с неспешным вкатыванием в плисы после основной работы.
>Ничего себе не сложно.
Именно что легко и просто. К примеру брейнфак-процессор, что в нем сложного? А это уже полный по Тьюрингу процессор. Или можно придумать что-то не более сложное в реализации, но более простое в использовании.
>симулятор
Сомневаюсь что можно будет симулировать разные гигабитные интернеты, DDRы.
Плюс симуляция не покажет подводных камней вроде метастабильности.
>погромист поясняет плисоводам про параллельную работу блоков микроконтроллера итт.
А что, разве в МК CPU и переферия не параллельно работают?
>А что, разве в МК CPU и переферия не параллельно работают?
Это не отменяет того, что программа в цпу выполняется последовательно.
Ерунда. Эзернеты ладно еще, да и то вряд ли. А DDR - это любое устройство в котором данные меняются и по заднему и по переднему фронту тактового сигнала, чего в нем такого? Метастабильность на ровном месте не проявится, особенно в простых учебных задачах.
Необходимость использования симулятора от этого никуда не исчезнет. Для обучения симулятора хватит, особенно в начале.
>МК одновременно меряет ацп, в любой момент, вне зависимости чем проц занимается, он может принять байты по uart, spi, и шимить что-нибудь таймером. Все эти события обрабатываются в прерываниях, которые выдергивают МК из его последовательной работы.
Я это все знаю и понимаю. Да, прерывания происходят в любой момент (на самом деле нет), но это вообще ортогонально параллельному выполнению задач, потому что прерывания по-прежнему обрабатываются последовательно, в том числе и вложенные прерывания (если такие разрешены). Кроме того чаще бывает так, что у тебя есть scheduler или scheduling algorithm, который вносит очень большую ясность в то, как работают процессы, как обрабатываются прерывания и т.д. Обычно, задача, которую действительно приходится решать на МК, это синхронизация. Короче, какой-то хуевый из тебя программист МК, скорее фантазер. И еще, тот факт, что у тебя много периферии не отменяет того факта, что CPU с данными с периферии работает последовательно, маня.
>Да, прерывания происходят в любой момент (на самом деле нет).
Прерывания происходят в ближайший тактовый сигнал после того, как произошло событие, вызвавшее прерывание. Это не такая уж большая разница, вполне можно сказать, что происходят в любой момент.
>но это вообще ортогонально параллельному выполнению задач
Задачи выполняются параллельно, одновременно через сдвиговые регистры отправляются и принимаются байты, меряются ацп, работают таймеры. МК только управляет ими в прерываниях.
>потому что прерывания по-прежнему обрабатываются последовательно, в том числе и вложенные прерывания (если такие разрешены).
Инструкции ассемблера в прерываниях - да, последовательные. Но само прерывание может произойти в любой момент, потому что паралельно запущено несколько переферий. Что ты представляешь под выражением: " прерывания по-прежнему обрабатываются последовательно"? Мол, вот сейчас обработали прерывание 1, потом прерывание 2, потом 3? Это вообще не так, они могут происходить в любом порядке и в любое время, потому что процессы, их вызывающие, происходят одновременно.
>Кроме того чаще бывает так, что у тебя есть scheduler или scheduling algorithm, который вносит очень большую ясность в то, как работают процессы, как обрабатываются прерывания и т.д.
Планировщик задач это понятие из операционных систем, он использует аппаратный таймер, чтобы каждому процессу отводилось ровно определенное время. К архитектуре микропроцессора он не имеет никакого отношения. Так же как и задачи операционной системы, на которые выделяет время её планировщик задач и прерывания МК не имеют ничего общего.
>Обычно, задача, которую действительно приходится решать на МК, это синхронизация.
Что ты имеешь ввиду? Приведи пример.
>Короче, какой-то хуевый из тебя программист МК, скорее фантазер.
Я профессионал, делаю устройства, которые работают и получаю за это деньги. А вот о тебе того же сказать не могу, раз у тебя планировщик задач объясняет, как работают прерывания.
Ну давай разберем написанное тобой по пунктам.
>Прерывания происходят в ближайший тактовый сигнал после того, как произошло событие, вызвавшее прерывание. Это не такая уж большая разница, вполне можно сказать, что происходят в любой момент.
Ага, а critical sections не существуют, приоритета у обработчиков прерываний нет и т.д.
>Задачи выполняются параллельно, одновременно через сдвиговые регистры отправляются и принимаются байты, меряются ацп, работают таймеры. МК только управляет ими в прерываниях.
У тебя за такт несколько инструкций процессора выполняется? Параллельно? Ты это на полном серьезе пишешь или троллишь тупостью?
>прерывания по-прежнему обрабатываются последовательно"? Мол, вот сейчас обработали прерывание 1, потом прерывание 2, потом 3
Именно так они и обрабатываются. В однопроцессорном, одноядерном МК иначе быть не может. Даже не знаю, что тут непонятно тебе.
>Так же как и задачи операционной системы, на которые выделяет время её планировщик задач и прерывания МК не имеют ничего общего.
Сами по себе прерывания не связаны с этим, а обработчики уже могут быть связаны.
>Планировщик задач это понятие из операционных систем, он использует аппаратный таймер, чтобы каждому процессу отводилось ровно определенное время.
Ну ты хотя бы википедию почитал бы что ли, чтобы так не позориться. То, что ты назвал это только частный случай - round robin. Есть множество разных алгоритмов sceduling-a. Сразу видно профи))))
>Что ты имеешь ввиду? Приведи пример.
Псевдопараллелизм или истинный параллелизм, семафоры, мьютексы, мониторы и т.д. Это как бы то место, где начинается разработка в области МК, все остальное это детский садик.
>Прерывания происходят в ближайший тактовый сигнал после того, как произошло событие, вызвавшее прерывание.
Если честно я тебя тут не понял. По твоему даже выполнение текущей команды не должно завершиться? Или контроллер прерываний у тебя отработает за один такт? Ты тут только что писал о том, что не знаешь внутренностей процессоров, а тут рассуждать принялся.
Ну как, начал изучать верилог или опять будешь писать что без платы не можешь?
>Именно так они и обрабатываются. В однопроцессорном, одноядерном МК иначе быть не может. Даже не знаю, что тут непонятно тебе.
На всякий случай уточню, что под последовательно я понимаю не только "обработали прерывание 1 до конца, затем обрабатываем прерывание 2 до конца", а только то, что нет в МК истинного параллелизма, в отличие от ПЛИСов. Кажется ты не понимаешь, что в ПЛИСах параллелизм ИСТИННЫЙ, тогда как в МК чаще всего ПСЕВДО.
>А вот о тебе того же сказать не могу, раз у тебя планировщик задач объясняет, как работают прерывания.
Ещё добавлю к твоему высеру, что в посте, который ты комментируешь имелось ввиду то, что наличие планировщика сводит "сложность" большого числа одновременных прерываний на нет. Ведь в этом случае можно иногда даже чисто формальными методами посчитать schedulable у тебя система или нет, т.е. все дедлайны будут выполнены или нет, а также найти и проанализировать worst case execution time (хотя конкретно это уже не такая тривиальная задача). На плисах дело обстоит сложнее, хотя и там формальные способы проверок есть, но с плисами приходится анализировать каждый пук в разрабатываемой схеме, а в МК нет. МК это более высокий уровень абстракции, чем ПЛИС, поэтому там во многом проще. Ты профессионалом по мк где-то в снг работаешь, да? Какие проекты закончил? Что конкретно реализовал?
Ты пиздец душный и закомплексованный. Мамкина плисоилитка, пытающаяся посамоутверждаться на залётном контроллеропролетарии.
мимо
>пук
По делу есть что сказать?
>посамоутверждаться на залётном контроллеропролетарии
Так ладно бы он поспрашивать что-то пришел, но он же выебываться начал и пояснять всем за все с ебалом "профи, который делает работающие устройства". При этом он пишет такую лютую хуету даже про свою "профессиональную" область деятельности, поэтому его и накормили говном.
Все таки с людьми стоит быть помягче. Мало ли кто выебываться начал, можно было просто не отвечать, особенно если видно что собеседнику уже ничего не помогает. И уж точно ненормально называть кого-то душнилой лишь за то что огрызнулся в ответ.
>По делу есть что сказать?
После чего, после твоего предложения пройти в /b?
Ну не знаю. Могу тебе разве что хуёв панамку накидать.
>Ещё добавлю к твоему высеру, что в посте, который ты комментируешь имелось ввиду то, что наличие планировщика сводит "сложность" большого числа одновременных прерываний на нет.
Не сводит, потому что прерывания и задачи планировщика задач это совершенно разные вещи, они по разному реализованы и выполняют разные функции.
Планировщик в операционной системе реального времени выделяет каждой задаче строго определенное время и реализован он на уровне языка программирования(чаще всего ОС пишутся на Си). И он сам использует как минимум прерывание одного аппаратного таймера для своей работы.
Прерывания реализованы аппаратно на уровне архитектуры и могут занимать разное время, а можно и вообще зависнуть в прерывании и не выходить из него.
По поводу того, что планировщик задач может заменить прерывания. Это не так. Допустим, в планировщике задач на каждую задачу у тебя отведено по 1 мс, в очереди 10 задач. А на смену фронта по одному из выводов МК должен откликнуться буквально в течении нескольких тактов. Пока операционная система обработает 10 задач пройдет 10 мс, это слишком много. Планировщик задач тут не поможет. Поэтому придется использовать внешнее прерывание.
>Так ладно бы он поспрашивать что-то пришел, но он же выебываться начал и пояснять всем за все
Я ничего не "пояснял всем за все", я общаюсь с анонами на интересующие меня темы: МК и ПЛИС, в которые я хочу вкатиться.
>с ебалом "профи, который делает работающие устройства".
Перечитай всю ветку разговора. Это было сказно после того, как ты меня обозвал: "Короче, какой-то хуевый из тебя программист МК, скорее фантазер" в этом посте >>420106
>При этом он пишет такую лютую хуету даже про свою "профессиональную" область деятельности,
Приведи хотя бы один или несколько пунктов, где я "писал такую лютую хуету про свою область деятельности", или будешь зачислен в пиздаболы.
>поэтому его и накормили говном.
Разве что в твоих фантазиях.
>>Прерывания происходят в ближайший тактовый сигнал после того, как произошло событие, вызвавшее прерывание. Это не такая уж большая разница, вполне можно сказать, что происходят в любой момент.
>Ага, а critical sections не существуют, приоритета у обработчиков прерываний нет и т.д.
И как это отменяет то, что прерывание происходит в любой момент времени?
>>Задачи выполняются параллельно, одновременно через сдвиговые регистры отправляются и принимаются байты, меряются ацп, работают таймеры. МК только управляет ими в прерываниях.
>У тебя за такт несколько инструкций процессора выполняется? Параллельно? Ты это на полном серьезе пишешь или троллишь тупостью?
А при чем здесь выполение инструкций процессора, если речь о том, что разнообразная переферия МК(АЦП, счетчики) и МК работают параллельно?
>>прерывания по-прежнему обрабатываются последовательно"? Мол, вот сейчас обработали прерывание 1, потом прерывание 2, потом 3
>Именно так они и обрабатываются. В однопроцессорном, одноядерном МК иначе быть не может. Даже не знаю, что тут непонятно тебе.
Контроллер прерываний проверяет сработавшие прерывания последовательно по таблице векторов прерываний, ты об этом? Но он работает параллельно с основной программой, которая выполняется на CPU и если сработает прерывание, то он перенаправит МК по своему вектору и заставит МК выполнить участок кода, связанный с этим прерыванием. Конечно, это не полный парралелизм, как на ПЛИС, но время отклика на событие здесь куда быстрее, чем параллелизм с помощью планировщика задач.
>>Так же как и задачи операционной системы, на которые выделяет время её планировщик задач и прерывания МК не имеют ничего общего.
>Сами по себе прерывания не связаны с этим, а обработчики уже могут быть связаны.
Как?
>>Планировщик задач это понятие из операционных систем, он использует аппаратный таймер, чтобы каждому процессу отводилось ровно определенное время.
>Ну ты хотя бы википедию почитал бы что ли, чтобы так не позориться. То, что ты назвал это только частный случай - round robin. Есть множество разных алгоритмов sceduling-a. Сразу видно профи))))
Как твой алгоритм шедуллинга без аппаратно таймера выйдет из задачи, если время будет превышено? Можно просто в задачиче while(1) поставить и никакой алгоритм тут не поможет, программа зависнет на одной задаче.
>>Что ты имеешь ввиду? Приведи пример.
>Псевдопараллелизм или истинный параллелизм
Ну про это я уже понял, истинный параллелизм, если речь идет о цифровых схемах, только в ПЛИС, в процессорах возможны только разные уровни псевдопараллелизма.
>семафоры, мьютексы, мониторы и т.д.
Это все выполняет операционная система.
>Это как бы то место, где начинается разработка в области МК, все остальное это детский садик.
Какое-то бахвальство. В одних случаях необходимо использовать операционную систему на МК, в других программа будет проще и быстрее без неё, написанная одним циклом.
>>Прерывания происходят в ближайший тактовый сигнал после того, как произошло событие, вызвавшее прерывание. Это не такая уж большая разница, вполне можно сказать, что происходят в любой момент.
>Ага, а critical sections не существуют, приоритета у обработчиков прерываний нет и т.д.
И как это отменяет то, что прерывание происходит в любой момент времени?
>>Задачи выполняются параллельно, одновременно через сдвиговые регистры отправляются и принимаются байты, меряются ацп, работают таймеры. МК только управляет ими в прерываниях.
>У тебя за такт несколько инструкций процессора выполняется? Параллельно? Ты это на полном серьезе пишешь или троллишь тупостью?
А при чем здесь выполение инструкций процессора, если речь о том, что разнообразная переферия МК(АЦП, счетчики) и МК работают параллельно?
>>прерывания по-прежнему обрабатываются последовательно"? Мол, вот сейчас обработали прерывание 1, потом прерывание 2, потом 3
>Именно так они и обрабатываются. В однопроцессорном, одноядерном МК иначе быть не может. Даже не знаю, что тут непонятно тебе.
Контроллер прерываний проверяет сработавшие прерывания последовательно по таблице векторов прерываний, ты об этом? Но он работает параллельно с основной программой, которая выполняется на CPU и если сработает прерывание, то он перенаправит МК по своему вектору и заставит МК выполнить участок кода, связанный с этим прерыванием. Конечно, это не полный парралелизм, как на ПЛИС, но время отклика на событие здесь куда быстрее, чем параллелизм с помощью планировщика задач.
>>Так же как и задачи операционной системы, на которые выделяет время её планировщик задач и прерывания МК не имеют ничего общего.
>Сами по себе прерывания не связаны с этим, а обработчики уже могут быть связаны.
Как?
>>Планировщик задач это понятие из операционных систем, он использует аппаратный таймер, чтобы каждому процессу отводилось ровно определенное время.
>Ну ты хотя бы википедию почитал бы что ли, чтобы так не позориться. То, что ты назвал это только частный случай - round robin. Есть множество разных алгоритмов sceduling-a. Сразу видно профи))))
Как твой алгоритм шедуллинга без аппаратно таймера выйдет из задачи, если время будет превышено? Можно просто в задачиче while(1) поставить и никакой алгоритм тут не поможет, программа зависнет на одной задаче.
>>Что ты имеешь ввиду? Приведи пример.
>Псевдопараллелизм или истинный параллелизм
Ну про это я уже понял, истинный параллелизм, если речь идет о цифровых схемах, только в ПЛИС, в процессорах возможны только разные уровни псевдопараллелизма.
>семафоры, мьютексы, мониторы и т.д.
Это все выполняет операционная система.
>Это как бы то место, где начинается разработка в области МК, все остальное это детский садик.
Какое-то бахвальство. В одних случаях необходимо использовать операционную систему на МК, в других программа будет проще и быстрее без неё, написанная одним циклом.
>Если честно я тебя тут не понял. По твоему даже выполнение текущей команды не должно завершиться? Или контроллер прерываний у тебя отработает за один такт?
Да, это я и имел ввиду. В ближайшую инструкцию, а не такт, инструкция занимает несколько тактов.
>Ты тут только что писал о том, что не знаешь внутренностей процессоров, а тут рассуждать принялся.
Внутренности знаю на уровне, достаточном для работы. Структуру процессора вплоть до того, как собрать его из логических элементов - к сожалению, нет.
>Ну как, начал изучать верилог или опять будешь писать что без платы не можешь?
Да, без камня не могу. Когда рядом с пекой лежит камень и мигает светодиодом как-то быстрее учится, ничего не могу с собой поделать.
У меня DE0 nano soc на циклоне 5, включал пару раз остальное время лежит без дела, ибо лучше подолбиться в мультисиме чем постоянно заливать на циклон и смотреть там как работает схема
Вот именно. Тут роль симуляторов совсем не такая как для микроконтроллеров. А еще так будет слишком затруднительно с конфигурациями побольше, которые компилируются десятки минут.
>>420509
>Структуру процессора вплоть до того, как собрать его из логических элементов - к сожалению, нет.
Нахрена для этого знать внутренности процессора? Процессор это просто конечный автомат, не особо сложный для простых случаев. Это проще нормального БПФ, быстрой сверки, декодеров каких-нибудь помехоустойчивых кодов и прочего. А ты не столь давно грозился на автоматах что угодно сделать.
>Планировщик в операционной системе реального времени выделяет каждой задаче строго определенное время
Заебал, честно слово.
https://en.wikipedia.org/wiki/Preemption_(computing) - читай. Один из примеров, где не выделяется "строго определенное время" и именно этот тип встречается в RTOS-ах чаще всего. Еще раз, то, о чем ты говоришь, это round robin - частный случай, самый простой.
>По поводу того, что планировщик задач может заменить прерывания. Это не так.
Ты вообще не вкуриваешь, о чем тебе пишут.
>Не сводит, потому что прерывания и задачи планировщика задач это совершенно разные вещи
Да, только тебе другое объясняют, овощ.
>А при чем здесь выполение инструкций процессора, если речь о том, что разнообразная переферия МК(АЦП, счетчики) и МК работают параллельно?
При том, что изначально ты заявил, что ПЛИСы не сложнее микриков. Тебе намекнули, что есть фундаментальная разница: ПЛИСы параллельны. Ты заявил, что микрики у тебя тоже параллельны. Заметь, никто не спорит с тем, что перИферия (даун ты неграмотный) работает параллельно, и битики прерываний в регистре прерываний параллельно могу выставлятся. Загвоздка в том, что для программиста под микрики эта параллельность никак на сложность разработки не влияет, потому что все это спрятано под капотом, так сказать. А разработчик под МК имеет дело с написанием последовательных программ. Я не ебу, на кой хер ты, как ты написал, "держишь в голове параллельную работу всей периферии", скорее всего ты вообще не понимаешь что делаешь и не понимаешь принципов программирования. Именно в МК при написании программы ты всегда имеешь дело с последовательным алгоритмом. Еще раз, дебил, да, периферия параллельно триггерится, но дальше те же прерывания разруливаются последовательно. Понимаешь?
> Конечно, это не полный парралелизм
Это вообще нахуй никакой не паРаЛЛелизм (чмо ты неграмотное). Это максимум ПСЕВДО параллелизм. Где твоя единственная проблема это ДОСТУП К ОБЩИМ РЕСУРСАМ, т.е. СИНХРОНИЗАЦИЯ.
>Как?
При обработке прерывания сохраняешь контекст, если надо создаешь таску для обработки события (может быть разный приоритет), восстанавливаешь контекст, попадаешь либо в прерванную таску, либо, если у события приоритет выше, чем у данной таски, начинаешь выполнять созданную в прерывании таску. Фишка в том, что очень легко в этом случае анализировать ПОСЛЕДОВАТЕЛЬНОСТЬ выполнения операций при разных сценариях и относительно легко оценить WCET.
>Как твой алгоритм шедуллинга без аппаратно таймера выйдет из задачи, если время будет превышено?
В этом случае юзается ватчдог, да. В другом смотри пред. пункт и читай статью на вики про preemptive scheduling.
>Это все выполняет операционная система.
А что ты там нахуй погромируешь тогда, если по-твоему, тебя это не касается и это выполняет операционная система? Периферию конфигурируешь что ли? Лол, пиздец какой.
>в других программа будет проще и быстрее без неё, написанная одним циклом.
Ага, а проблемы доступа к общим ресурсам в этом случае не возникает, лол.
И еще, добавлю, что я эти RTOS для микриков писал своими руками еще в университете (ибо учился в развитых странах, а не СНГ), у меня два высших образования и опыт работы как эбмеддед так и в ПЛИСах (сейчас FPGA/ASIC), поверь, я знаю, о чем говорю, и сразу вижу твой уровень (околонулевой). И, к сожалению, я знаю уровень большинства компаний в этой области на постсоветском пространстве и удручающий уровень образования тоже знаю, поэтому с понимаем отношусь к пробелам в твоих знаниях. Попробуй, вместо того, чтобы нести околесицу, прочитать пару хороших общепризнанных книжек по МК и RTOSам, а потом уже возвращайся со своим авторитетным мнением.
Манька, путающая микропроцессор и микроконтроллер, и до которой то, что она это путает, доходит не с первого раза, рассуждает о чьем-то уровне, хвалясь проектами уровня laba.c.
>путающая микропроцессор и микроконтроллер
И в чем их отличие? Мне всегда казалось что там нет более-менее четкой границы. Периферия со всякими таймерами, АЦП, ЦАП и прочим бывает и в тех и других. Память? Тоже по разному бывает. Например, i.MX 6ULL это микропроцессор? Чем тогда его периферия отличается от STM32, что один вдруг стал процессором, а другой микроконтроллером?
>>420528
Это да, действительно мерзко выглядит. Был бы он умнее, вообще ничего в ответ не писал.
По делу есть что сказать?
>https://en.wikipedia.org/wiki/Preemption_(computing) - читай. Один из примеров, где не выделяется "строго определенное время" и именно этот тип встречается в RTOS-ах чаще всего. Еще раз, то, о чем ты говоришь, это round robin - частный случай, самый простой.
Теперь понял. Прерывания - это аппаратный способ распределения задач, а шедуллер - программный. Можно выставить приоритет задач в шедуллере и тогда задача, требующая наибольшего быстродействия, прервет все остальные задачи и выполниться в срок.
>При том, что изначально ты заявил, что ПЛИСы не сложнее микриков. Тебе намекнули, что есть фундаментальная разница: ПЛИСы параллельны. Ты заявил, что микрики у тебя тоже параллельны. Заметь, никто не спорит с тем, что перИферия (даун ты неграмотный) работает параллельно, и битики прерываний в регистре прерываний параллельно могу выставлятся.
Да, это я и имел ввиду. Ведь речь была о чем? О том, что ПЛИСы и МК работают параллельно, и это так.
>Загвоздка в том, что для программиста под микрики эта параллельность никак на сложность разработки не влияет, потому что все это спрятано под капотом, так сказать.
Влияет, нужно учитывать время, за которое периферия выполняет задачи или МК откликнется на внешнее прерывание.
>А разработчик под МК имеет дело с написанием последовательных программ.
Разарботчик МК пишет программы, разработчик ПЛИС - цифровые схемы. У МК и ПЛИС разные задачи и нельзя говорить, как утверждаешь ты, что, мол, плиски для элиты, а микроконтроллеры для быдла.
>Я не ебу, на кой хер ты, как ты написал, "держишь в голове параллельную работу всей периферии", скорее всего ты вообще не понимаешь что делаешь и не понимаешь принципов программирования.
Я все прекрасно понимаю.
>Именно в МК при написании программы ты всегда имеешь дело с последовательным алгоритмом.
Т.е. ты утверждаешь, что вся программа для МК представляет собой последовательный алгоритм. Но это не так, если используется хотя бы одно прерывание.
Еще раз, дебил, да, периферия параллельно триггерится, но дальше те же прерывания разруливаются последовательно.
Прерывания обрабатываются последовательно, но при этом параллельно(псевдопарралельно, ведь ядро у МК одно) алгоритму основной программы.
>>Как твой алгоритм шедуллинга без аппаратно таймера выйдет из задачи, если время будет превышено?
>В этом случае юзается ватчдог, да. В другом смотри пред. пункт и читай статью на вики про preemptive scheduling.
Ещё лучше.
Представим твой алгоритм шедуллинга.
//задача 1
...
//задача 2
...
//задача 3
...
//задача 4
...
В задаче 2 ставим while(1).
//задача 1
...
//задача 2
while (1)
{ };
//задача 3
...
//задача 4
...
Watchdog будет каждый раз из задачи 2 возвращаться в задачу 1, а следующие после задач 2 задачи 3 и 4 вообще никогда не будут обработаны.
Сразу виден твой уровень 2 университетов развитых стран и опыта работы в эмбеддед и ПЛИСах, хех.
>>Это все выполняет операционная система.
>А что ты там нахуй погромируешь тогда, если по-твоему, тебя это не касается и это выполняет операционная система?
Касается, я должен знать как это все работает и как настроить в операционной системе. Суть в том, что с нуля операционку писать никто не будет(в продакшене нет на это времени и нет смысла) обычно берется нужная RTOS и она и выполняет разные семафоры и шедуллеры.
>Периферию конфигурируешь что ли? Лол, пиздец какой.
А что, переферию не нужно конфигурировать?
>>Как твой алгоритм шедуллинга без аппаратно таймера выйдет из задачи, если время будет превышено?
>В этом случае юзается ватчдог, да. В другом смотри пред. пункт и читай статью на вики про preemptive scheduling.
Ещё лучше.
Представим твой алгоритм шедуллинга.
//задача 1
...
//задача 2
...
//задача 3
...
//задача 4
...
В задаче 2 ставим while(1).
//задача 1
...
//задача 2
while (1)
{ };
//задача 3
...
//задача 4
...
Watchdog будет каждый раз из задачи 2 возвращаться в задачу 1, а следующие после задач 2 задачи 3 и 4 вообще никогда не будут обработаны.
Сразу виден твой уровень 2 университетов развитых стран и опыта работы в эмбеддед и ПЛИСах, хех.
>>Это все выполняет операционная система.
>А что ты там нахуй погромируешь тогда, если по-твоему, тебя это не касается и это выполняет операционная система?
Касается, я должен знать как это все работает и как настроить в операционной системе. Суть в том, что с нуля операционку писать никто не будет(в продакшене нет на это времени и нет смысла) обычно берется нужная RTOS и она и выполняет разные семафоры и шедуллеры.
>Периферию конфигурируешь что ли? Лол, пиздец какой.
А что, переферию не нужно конфигурировать?
>И еще, добавлю, что я эти RTOS для микриков писал своими руками еще в университете (ибо учился в развитых странах, а не СНГ),
Хоть я учился в СНГ, RTOS своими руками не писал(хотя, запросто смогу написать хоть на Си, хоть на ассемблере, если немного почитаю про это), алгоритмы шеддулинга я писал и как работают семафоры и приоритет задач в RTOS тоже знаю.
> у меня два высших образования и опыт работы как эбмеддед так и в ПЛИСах (сейчас FPGA/ASIC), поверь, я знаю, о чем говорю,
Так ты тот анон из Швеции? Ну завидую, повезло со стартовыми условиями, родаками, мне повезло меньше. Но уровень образования в СНГ не сильно хуже, можно найти как годного спеца в СНГ, так и полного дуба с дипломом MIT. Тут больше от конкретного человека зависит, а не от вуза.
> и сразу вижу твой уровень (околонулевой).
> Попробуй, вместо того, чтобы нести околесицу,
Приведи, пожалуйста, примеры из моих постов, где я нес околесицу и которые свидетельствуют о моем околонулевом уровне.
>Т.е. ты утверждаешь, что вся программа для МК представляет собой последовательный алгоритм. Но это не так, если используется хотя бы одно прерывание.
Ага, только последовательность действий никуда не исчезает. Она прерывается и начинает ветвится, но это не истинный параллелизм, маня.
>Ну завидую, повезло со стартовыми условиями, родаками, мне повезло меньше
У меня не было особых стартовых условий, как ты говоришь. Обычный мухосранск, обычная семья, все. Я не хочу продолжать этот спор. Ты не понимаешь разницу между истинным и псевдо параллелизмом. Ты не знаешь плисовскую специфику, а специфику эмбеддеда знаешь довольно узко. Я могу только пожелать тебе осознать узость и невежество своих представлений и заняться самообразованием.
Кстати, иногда в плис напрямую нужны навыки с микроконтроллеров - при использовании soft или hard ядра в ПЛИС его ПО пишется также, как для МК. Тот же Ethernet + протокол обмена + более-менее сложное управление йоба цифровыми блоками нередко делаются с использованием soft-ядра и rtos.
>>420519
Оффтоп:
Кто хочет учится - тот научится и там, и тут. У меня 30-40% бывших одногруппников также умеют и практикуют в fpga и mcu, кто-то из них asic занимается. Некоторые студенты защищают готовые приборы и блоки для asic как дипломы, было бы желание, впрочем, на работе все равно полноценные специалисты формируются ещё несколько лет.
У нас просто больше людей на бюджете и относительно недорогом платном учатся на отъебись, поэтому средний уровень по больнице несколько ниже.
>Т.е. ты утверждаешь, что вся программа для МК представляет собой последовательный алгоритм. Но это не так, если используется хотя бы одно прерывание.
Именно что так. Если у тебя программа сделала куда-то JMP, то это не значит что твой алгоритм параллельный или псевдопараллельный, он как был последовательным так и есть. То же самое и с прерываниями, там прыжок делается не через JMP, а самим ядром, но принципиально это ничего не меняет, в обоих случаях счётчик команд прыгает с места на место и ничего более. Даже в самом термине "прерывание" заложен весь смысл: основная программа прерывается и выполняется другой участок кода.
>>420569
>Тот же Ethernet
В своё время, я его на чистом Верилоге поднял, так-то.
>Разница не такая уж большая
>>420531
>И в чем их отличие? Мне всегда казалось что там нет более-менее четкой границы. Периферия со всякими таймерами, АЦП, ЦАП и прочим бывает и в тех и других.
Я всегда думал что как раз наличие периферии и ОЗУ внутри кристалла и отличает процессор от МК, в МК она есть , в процессоре нет. Например какой-нибудь intel i7 - это процессор, а вот уже STM - МК.
мимо
>там нет более-менее четкой границы
Все это хуйня для первокуров - взрослые делают работу, а не размышлют "программирую я процессор или микроконтролер?".
>В своё время, я его на чистом Верилоге поднял, так-то
С какими протоколами? Или тут udp датаграммы без запросов arp, dhcp?
Ландау Лифщиц, 2 том
Типа без PHY? Видел такое только для 10мбит.
Хотя вроде теперь какие-то хардблоки под 10+ заложены на плис?
>Типа без PHY?
Без него никак, он же напряжения согласует. Я делал на marvell 88e1111, нужно было поднять 100мб/с.
Но он у меня только контрольную сумму считал, кодировку 8b/10b делал и финальное манчестерское кодирование, может ещё начальную преамбулу добавлял, не помню уже, хотя это всё можно было и самому сделать, не сложно.
>>420644
Ну а чё...
>>Типа без PHY?
>Без него никак
O RLY? Нахуй пошел! Срочно заявление по собственному желанию и что бы тебя завтра уже здесь не было! А мне премию за оптимизацию. А начали тут - PHY им понимаешь ли надо ставить. Совсем разленились и зажрались. Это стеб. Для той же оптики надо чуть меньше чем нихуя. SERDES есть? Дырка под SFP есть? Ебашим. С медью такое не особо катит.
http://we.easyelectronics.ru/plis/softovyy-phy-dlya-ethernet-10base-t.html
https://github.com/donnaware/ZBC---The-Zero-Board-Computer
(палево. Снесли мануал + схему или не нашел. Выкладываю старую копию мануала https://yadi.sk/i/ITnqXTMg09N00Q )
В любом случае, для меди нужен развязывающий транс, для оптики свето-, фотодиод, это всё тоже часть физического уровня.
>В любом случае, для меди нужен развязывающий транс
Ты падла еще здесь? Тебя же уволили еще вчера!
Какие нахуй трансформаторы? Конденсаторы! Гальваническая развязка? Да вертел её на хую! Хуяк хуяк и в продакшен! Еще бздани что разъемы нужны. На плату сука напрямую привариваем! Оптимизация во все поля! Везде глаз да глаз нужен! Такую хуйню сморозят и накрутят!
Где-то был забавный документ от броадкома как согласовывать разные выходы PHY (токовый, напряжения) друг с другом для внутриприборных связей (на коротких дистанциях) без гальванической развязки.
Твой коммент хорош, но не в тему. Чуть выше обсуждаются именно микросхемки PHY, а не трансформаторы и разъемы, поэтому паста про фотодиоды и светодиоды в SFP немного не к месту, так как в большинстве случаев это внешний SFP модуль и нужен только простой разъем под него (и serdes в fpga), а не модули 1х9 или 2х5 которые жестко на плату запаиваются.
Не, ну так то понятно, что согласование сред и напряжений можно и на рассыпухе организовать.
>согласование сред и напряжений можно и на рассыпухе организовать
Может не надо? Возьми за бакс-другой микросхемку PHY. Всяко меньше места займет и без скатывания в такие маразмы:
https://marsohod.org/index.php/projects/94-ether-send Это не упрек в адрес марсохода, прикольные проекты можно выловить
http://www.equicom.ua/ping/ping1/ping1.htm - микроконтроллеры? Стек TCPUDP/IP? Трансформаторы? Гальваническая развязка? Разъемы? Всех НАХУЙ! Только хардкор! ПЗУ с ближайшей помойки и оттуда же россыпчатой логики, стабилизаторов надергаете со сдохших хабов . Стирание ПЗУ? С фонаря лампу ДРЛ спиздите вместе с дросселем. На солнышко положите и мне похуй что оно с неделю будет стираться. Надо быстрее? Пиздуйте к алкашам-сварщикам. Программатор нужен? Да хуй вам. У в стельку пьяного электрика напиздите автоматов вместо выключателей, там же проводов найдете что бы собрать ручную прошивалку ПЗУ.
ЗА РАБОТУ! БЫСТРА БЛЯ! Было бы смешно если бы это не было реальностью здесь.
Такие проекты хоть и выглядят как маразм, но.. Они идеально подходят под обучение - очень отчетливо видно где что как работает и как это можно воссоздать.
Спизженно отсюда https://nag.ru/goodies/resurs/genman.jpg Даже не знаю - существует ли прошивка в сети.
Задрочив этот сайт в свое время без вопросов взяли в инженерный состав провайдера у которого локал_очка из почти 2К абонентских свичей.
>Для примера попробуй хотя бы сделать UART-приёмник
Ну если сделать UART приемник с одним сэмплом на каждый бит принимаемого байта(в середине бита), то он будет не сложнее передатчика. Я так и делал программный UART для МК, потому что если передача ведется по разным промышленным протоколам всё равно отправляемый пакет проверяется по CRC и с надежностью непосредственно UARTа можно не париться.
А вот если сэмплов будет 8 на один бит, как в настоящих аппаратных UART приёмниках, то это будет уже на порядок сложнее, да.
>И в чем их отличие? Мне всегда казалось что там нет более-менее четкой границы.
Микрокотроллер - это когда переферия, ПЗУ и ОЗУ расположены на одном кристале с ядром.
>Ты не понимаешь разницу между истинным и псевдо параллелизмом.
Я прекрасно знаю эту разницу. ПЛИС - это цифровая схема, МК - это ядро, которое выполняет инструкции из своей памяти программ одну за другой.
>Ты не знаешь плисовскую специфику,
Не совсем пониаю, что нужно особго "знать в ПЛИСовской специфике". ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё. От разработчика ПЛИСок требуется только знание цифровой схемотехники и языков VHDL и Verilog, чтобы он мог запрограммировать плиску.
>а специфику эмбеддеда знаешь довольно узко.
В эмбеддеде я разбираюсь не хуже тебя.
>Я могу только пожелать тебе осознать узость и невежество узость и невежество своих представлений
Опять таки, ты врёшь, покажи, где я в своих постах показал свое невежество и узость своих представлений.
> RTOS для микриков писал своими руками еще в университете (ибо учился в развитых странах, а не СНГ), у меня два высших образования и опыт работы как эбмеддед так и в ПЛИСах (сейчас FPGA/ASIC)
Всем похуй вниманиеблядок. ОЧНИСЬ ВСЕМ НАСРААТЬ ПОХУЙЙЙ.
> ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё.
Это провал
>А вот если сэмплов будет 8 на один бит, как в настоящих аппаратных UART приёмниках
В настоящих аппаратных UART приёмниках количество сэплов нечётное число. Чтобы мажоритарное голосование могло работать.
>делал программный UART для МК
Уровня лаба в местной шараге? Ну это судя по твоему высказыванию выше о 8 сэплах.
>>421596
>истинный последовательнизм
именно он и есть, если не брать во внимание всякие многоядерности.
>>421599
>ПЛИС - это цифровая схема, МК - это ядро, которое выполняет инструкции
Так то МК - это тоже цифровая схема. Там тоже регистры ядра работают параллельно, однако суть вещей это не меняет.
>ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё
Ты в общем-то начни изучать ПЛИСы, и через полгодика приходи, тогда и поговорим.
Это ты так считаешь. А в NXP считают иначе, на примере упомянутого i.MX 6ULL.
Ерунда у тебя, а не определение. Например ископаемый 8031 был без ПЗУ, но его все равно называли микроконтроллером, а периферии у него толком не было. А какой-нибудь Intal Atom может иметь GPIO. И так далее.
> А в NXP считают иначе, на примере упомянутого i.MX 6ULL.
Это applications processor, что никак не является синонимом микропроцессора, этот термин ближе к термину SoC
Все это ерунда, граница между одним и другим не становится от этого четче.
>термину SoC
Сок это то же самое что "полный фарш" - обо всем и ни о чем. Какой-нибудь nrf24 с 8051 внутри это сок. Подобных микроконтроллеров с трансивером внутри существует много и далеко не все из них называют соком, например rfPIC. Или ближе к этому треду, цинки тоже соком называют, а сравнивать их с nrf24 бессмысленно.
>Все это ерунда, граница между одним и другим не становится от этого четче.
Тут важно то, в чем соснул именно ты. А ты соснул в том, что открыл даташит, увидел надпись applications processor и подумал, что речь о микропроцессоре. А это сильно разные вещи, практически омонимы. Можно долгоискать границы между applications processor и микроконтроллером, но микропроцессор это довольно определенный термин, хотя сейчас и довольно устарелый. Но это очень унылый спор для аутистов, поэтому больше я писать на эту тему не буду.
Полнейшая чушь. Ты еще написал бы что DSP это не процессор, даже если вообще без периферии и RAM/ROM. Особенно показательно что про SoC ничего не ответил.
>ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё.
Чел, ну что же ты так слился некрасиво и глупо...
>От разработчика ПЛИСок требуется только знание цифровой схемотехники и языков VHDL и Verilog, чтобы он мог запрограммировать плиску.
Ага, конечно. Алгоритмы ЦОСа знать не надо, особенности работы TTL знать не надо, ну и т.д. по длинному-длинному списку. Про vhdl и verilog ты, видимо, не в курсе, что это не вся работа. Там целый комбайн разных тулов и технологий используется от идеи и прототипирования до конечной верификации в железе. Ох, а сколько всего интересного происходит при работе с арифметикой! Там столько всего интересного из численных методов! Ох, а алгоритмы, например, в связи, могут быть довольно сложными даже просто по своему математическому описанию, представляешь что творится в реализации? А как я обожаю метастабильность и signal race condition... мммм. Ох, а как же софтпроцессоры? Про них-то забыли! А еще можно петалинукс поднять!
Попала мне в руки плата с Altera EPM3256ATC144-10N - is any good?
Какой минимальный набор железа и софта, чтобы помигать светодиодиком?
Никогда раньше ПЛИС не ебал с ПЛИС дела не имел
>EPM3256ATC144
Говно мамонта, так еще и CPLD - штука с ограниченным числом перезаписей своей памяти конфигурации, коих по даташиту до 100 раз. Так и написано - ДО 100 раз.
Где-то промелькала инфа что при разводке (fitter) некоторые блоки могут отключаться и использоваться только для коммутации и при попытке создать счетчик на 50 бит в max3064 и немножко логики - соснешь хуйца, хотя у тебя еще якобы 16 триггеров в запасе.
Если забить хуй - норм выбор для начала.
По софту - самый "свежий" Quartus II 13.0sp1, в более свежих версиях убрали поддержку MAX3000.
Для программирования конфигурирования - usb blaster или сам собери на pic18f14k50.
>От разработчика ПЛИСок требуется
Чтобы он квалифицированно въебывал за небольшую зарплату и не бухтел.
Научится писать без говнокода, делать компактные конструкции, констрейнты, что будет плюсом. А потом уже перейдёт на что-то посерьёзнее.
>штука с ограниченным числом перезаписей своей памяти конфигурации, коих по даташиту до 100 раз
Где-то их тестировали на количество циклов. 10000 успешно получилось, дальше просто не стали. Видимо, в даташите написали 100 циклов, чтобы в случае чего не было претензий, что ПЛИС сдохла от постоянной перезаписи.
> Видимо, в даташите написали 100 циклов, чтобы в случае чего не было претензий, что ПЛИС сдохла от постоянной перезаписи.
В шоке от твоего интеллекта и логики.
>Где-то их тестировали на количество циклов. 10000 успешно получилось, дальше просто не стали.
Уважаемый, не надо подтасовывать факты, а если пиздишь - то готовь пруфы вместо пердежа.
Тестировали MAX II на Марсоходе https://marsohod.org/11-blog/91-killmax которая имеет мало общего с более ранней серией MAX3000 или MAX7000. Здесь вопрос про серию MAX3000.
Мое мнение - начинать с любой FPGA, которую можно конфигурить хоть каждую секунду и ей ничего не будет.
>чтобы в случае чего не было претензий, что ПЛИС сдохла от постоянной перезаписи.
Там не только про это, а еще про сохранение конфигурации в течение N лет.
>Научится писать без говнокода, делать компактные конструкции, констрейнты, что будет плюсом.
Про компактность и говнокод сомнительно. Что бы ты не писал, все равно очень мелкие. Что на них делать то? Что-то на уровне частотомера или часов с будильником? Может генератор полос для аналогового телевизора? По моему для начала можно ограничится моделсимом.
>usb blaster или сам собери на pic18f14k50.
Если совсем по минимуму, то можно byte blaster ii от LPT, если найдется комп с LPT.
Засинтезируй проект и посмотри, ежели знаешь моделсим - сделай симуляцию. Вроде асинхронный сигнал, но это не точно.
https://www.intel.com/content/www/us/en/programmable/quartushelp/17.0/hdl/prim/prim_file_dffe.htm
"When the ENA (clock enable) input is high, the flipflop passes a signal from D to Q. When the ENA input is low, the state of Q is maintained, regardless of the D input. "
Вроде в квартусе есть ТТЛ симуляция, а не только RTL. Там точно будет видно синхронный это enable или асинхронный.
Сигнал разрешения на запись должен быть синхронным с клоком.
>Это просто мультиплексор на D-входе с обратной связью от выхода триггера
Скорее всего, но это не имеет значения. В плисине, кроме сброса и установки, не должно быть асинхронных сигналов. Тот же анализатор таймингов считает енейблы синхронными клоку.
Ещё стоит не забывать что те же асинхронные сбился не полностью асинхронные: Включение сброса может быть асинхронно с клоком, но выключение всегда должно быть синхронным. Для этого используют сихронизаторы сброса.
>>422958
Да, про сброс я понимаю, а вот с входом разрешения, сдаётся мне, не всё так просто. Посмотрел в даташитину на циклон 4
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-iv/cyclone4-handbook.pdf?wapkw=cyclone handbook
так он там называется clock enable, что как бы намекает на то, что этот вход не так прост как кажется.
>сдаётся мне, не всё так просто
>так он там называется clock enable, что как бы намекает на то, что этот вход не так прост как кажется.
У тебя шиза какая-то начинается. Clock enable -- это стандартное название входа регистра. Можешь посмотреть у других производителей, например у Xilinx. Есть ещё clock gating, который отключает полностью клок, уменьшая энергопотребление, но это другое.
А так перестань уже ебать мозг себе и анонам, почитай про синхронный дизайн, метастабильность и синхронизацию сброса. А асинхронщину оставь до того момента, как будешь работать в интеле и делать всякие схемы домино (как в 4 пнях).
>А так перестань уже ебать мозг себе и анонам, почитай про синхронный дизайн, метастабильность и синхронизацию сброса.
Ещё раз. Я не спрашиваю про синхронный дизайн или сброс. Я спрашиваю про конкретный вход триггера. Называется он clock enable, что намекает нам на то, что он находится во взаимосвязи с тактовым сигналом. Вот об этом я и спрашиваю. Как он с ним взаимодействует? В идеале бы, конечно, увидеть схему этого триггера, но скорее всего её нет в открытом доступе. Меня терзают смутные сомнения, что этот clock enable просто объединён по И с тактовым сигналом, но это не точно.
>просто объединён по И с тактовым сигналом
Интересно, можно ли проверить это каким-нибудь экспериментом? Для упрощения задачи можно считать что триггер не в составе ПЛИС, а отдельно.
мимопроходил
Я хуй знает уже в чем твоя проблема. Не знаешь какой ena, так подай сигнал в двух случаях - синхронно и асинхронно, да посмотри, что будет в ттл симуляции.
> Что на них делать то?
Бэкапить сеговские картриджи на видеокассету:
http://www.radioway.ru/1999/10/igrovye_programmy__sega__-_na_videokassetah.html
http://www.radioway.ru/1999/11/igrovye_programmy__sega__-_na_videokassetah.html
P.S. Ещё у MAX300A/MAX7000S пятивольтовое питание, за что их до сих пор любят ретрокомпьютерщики.
>Ещё у MAX3000A пятивольтовое питание
Лишь бы что-то бздануть. Даташит на 46 страниц лень пролистать?
МАХ3000 - у них питание 3.3 Вольта, а выводы - да, держат 5 вольт.
Возьми тот же обоссанный некро FLEX10K как на Altera UP2 и еби ее сколько хочешь переконфигурациями. https://habr.com/ru/post/277947/
>что этот clock enable просто объединён по И с тактовым сигналом
Это называется gated clock, об этом я писал ранее, и это не clock enable.
>Называется он clock enable, что намекает нам на то, что он находится во взаимосвязи с тактовым сигналом
Под clock enable обычно понимают синхронный сигнал и это пошло ещё с тех времён, когда появились первые логические ИС а может и раньше. Подразумевается что clock enable управляет мультиплексором, на один вход которого приходят данные, а на другой выход флипфлопа. И у альтеры должно быть также, или по крайней мере поведение схемы должно быть такое же, иначе они не использовали стандартное обозначение флипфлопа.
Для варианта с логическим И enable не может идти с выхода флипфлопа, так как при этом будет укорочение импульса клока.
https://m.eet.com/media/1121681/chapter2_clocks_resets-02.pdf
>>421985
>>ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё.
>Чел, ну что же ты так слился некрасиво и глупо...
Ну и чем же они отличаются, кроме частотой тактирования и колвом ячеек?? Отвечай, либо слит.
>Ага, конечно. Алгоритмы ЦОСа знать не надо, особенности работы TTL знать не надо, ну и т.д. по длинному-длинному списку. Про vhdl и verilog ты, видимо, не в курсе, что это не вся работа. Там целый комбайн разных тулов и технологий используется от идеи и прототипирования до конечной верификации в железе. Ох, а сколько всего интересного происходит при работе с арифметикой! Там столько всего интересного из численных методов! Ох, а алгоритмы, например, в связи, могут быть довольно сложными даже просто по своему математическому описанию, представляешь что творится в реализации? А как я обожаю метастабильность и signal race condition... мммм. Ох, а как же софтпроцессоры? Про них-то забыли! А еще можно петалинукс поднять!
Всё тобою вышеперечисленное и к проганью микриков относится, и ко многим другим сферам, не только к ПЛИС. Основы всего этого дают в вузах, а то, что не дали, не составит труда научится самому. А ты так описываешь всё это, будто это тебе не это, а секретные манускрипты древних, доступные только гениям.
>Всё тобою вышеперечисленное и к проганью микриков относится
Что-то я не слышал, что на МК реализовывали DSP часть современных телекоммуникационных систем. Ага, МК тебе в реалтайме OFDM в FFT разложит, да на современных частотах особенно, в МК из всего реального DSP максимум ШИМом яркость дисплея настраивают, вот и весь ЦОС в МК. Иди дальше конфигурировай свои микрики, да хэндлеры для кнопочек пиши.
Нет ну какой пиздец, сравнить ЦОС, реализуемый на ПЛИСах, с ЦОСом, реализуемом в микриках
Ты, наверное, подумал, что под "алгоритмами в связи" я имел в виду что-то вроде стэка протоколов, которые на МК и реализуются. Однако под алгоритмами я имею в виду такие штуки, как декодеры, турбо-эквалайзеры и т.д.
>Ну и чем же они отличаются, кроме частотой тактирования и колвом ячеек?? Отвечай, либо слит.
Я не тот анон, который тебе про это писал. Но тут ты сильно...
Самими ячейками, внезапно. Как минимум LUT-ы в ячейках (LE, в терминологии альтеры) бывают с разным количеством входов. Возможности таких ячеек заметно отличаются в разных FPGA. Ячейки объединяются в штуки побольше с общей цепью переноса, это тоже может отличаться. Из наиболее очевидного, кроме ячеек (LE) в FPGA есть разные аппаратные блоки, такие как блочная память, умножители с DSP блоками, PLL, высокоскоростные трансиверы SerDes, аппаратные блоки для подключения памяти, даже входы/выходы это тоже отдельные конфигурируемые блоки. И все это отличается в разных ПЛИС.
>>А вот если сэмплов будет 8 на один бит, как в настоящих аппаратных UART приёмниках
>В настоящих аппаратных UART приёмниках количество сэплов нечётное число. Чтобы мажоритарное голосование могло работать.
Ты ошибаешься. Смотри пик 1, даташит на Атмега8, аппаратный UART. В нормальном режиме 16 семплов(они пронумерованы начиная с единицы), в ускореном режиме 8 семплов на один бит данных.
>>делал программный UART для МК
>Уровня лаба в местной шараге?
Чем лаба в местной шараге отличается от лабы в элитном вузе лиги плюща? По-факту результат должен получиться один - устройство должно работать в соответствии с тех.заданием лабы.
>ПЛИС - это цифровая схема, МК - это ядро, которое выполняет инструкции
>Так то МК - это тоже цифровая схема. Там тоже регистры ядра работают параллельно, однако суть вещей это не меняет.
Да, понимаю. Только ПЛИСку можно сконфигурировать под любую цифровую схему, какую захочешь, чего не скажешь про МК.
>>ПЛИСы отличаются друг от друга только количеством ячеек и частотой тактирования, всё
>Ты в общем-то начни изучать ПЛИСы, и через полгодика приходи, тогда и поговорим.
Ну как я понял, в них есть много разных "переферий" как в микропроцессорах - различны полезные блоки подтяжек ног, аппаратных умножений, даже встроенные процессоры есть. Наткнулся на познавательную статью о FPGA, пик 2. Это только у простельнких PLA и CPLD в микросхеме ничего нет, кроме ячеек.
Скоро начну изучать, программатор USB Blaster уже купил, теперь надо заказать с алика отладочную плату с плис с какой-нибудь мощной плис.
Потом еще может разживусь простеньким логическим анализатором/осцилом приставкой, но на первых порах можно обойтись и без этого.
Первый пик отклеился.
Зойчем ты это делаешь, Ирод?
Никак не дотянусь до тестов этой фичи во Flex-ах , которой нет в новых циклонах/стратиксах или в шары ебусь.
Все скачали старые версии квакающих квартусов, часть которых навсегда протухнет и исчезнет после 26-го числа...?
Кто не понял - будут некоторые проблемы с программированием MAX3000/MAX7000 и подобной некрофилии, включая Flex-ы в виду того что только в сети можно будет найти старые версии кактусов.
>Что-то я не слышал, что на МК реализовывали DSP часть современных телекоммуникационных систем. Ага, МК тебе в реалтайме OFDM в FFT разложит, да на современных частотах особенно,
В STM32 есть аппаратное преобразование фурье. А уж если мы возьмем микроконтроллеры с DSP, то они и вовсе могут дать пососать ПЛИС.
Впрочем, и программная ЦОС применяется, интегрировать, дифференцировать, отфильтровать сигнал можно на мк программно.
> в МК из всего реального DSP максимум ШИМоем яркость дисплея настраивают, вот и весь ЦОС в МК.
Ну-ну, и давно ШИМ относится к цифровой обработке сигналов?
>Иди дальше конфигурировай свои микрики, да хэндлеры для кнопочек пиши.
А ты тогда, а ты, знаешь, что ты - иди светодиодом мигай на плиске, бака!
Ну а если серьезно, последний раз нажатие кнопочек и мигание лампочками писал на лабах в вузе, так получилось, что в рабочих проектах мне ни разу не пришлось работать с кнопочками. Всё взаимодействие с пользователем происходит по езернету, витой паре, вай-фаю, инфа выводится на дисплеи без всяких кнопочек и лампочек ебаных.
>Нет ну какой пиздец, сравнить ЦОС, реализуемый на ПЛИСах, с ЦОСом, реализуемом в микриках
И в плисках и в Микроконтроллерах используется ЦОС, для разных задач. И там, и там нужно знать основы ЦОС, чтобы решить поставленную задачу.
>У меня не было особых стартовых условий, как ты говоришь. Обычный мухосранск, обычная семья, все.
>учился в развитых странах, а не СНГ
Родившись в обычной семье из мухосранска в СНГ не возможно учиться в вузе развитых стран. Вот прям абсолютно никак.
Если это бесплатные программы, нужно, чтобы родаки узнали об этой программе, делали все, чтобы ты смог по этой программе поступить, собрать необходимые доки, обучить тебя иностранному языку этой страны, дать хорошее образование, чтобы ты сдал вступительные экзамены, оплатить переезд и проживание в стране на время обучения. Т.е. это должна быть не обычная семья из мухосранска, а семья с достатком выше стреднего, в которой родители заботятся о твоем будущем.
То, что ты смог получить образование в вузе развитой страны это заслуга твоих родителей, а не твоя, скажи им спасибо.
> В нормальном режиме 16 семплов(они пронумерованы начиная с единицы), в ускореном режиме 8 семплов на один бит данных.
Что тут сказать... Если это действительно так, то у меня плохие новости для Атмеги 8.
Какое будет результирующее значение если с линии считаются 4 нуля и 4 единицы?
При этом, судя по картинке, считывания распределены равномерно по биту, что неверно. В начале бита считываний лучше не делать.
>Чем лаба в местной шараге отличается от лабы в элитном вузе лиги плюща?
Ничем, и там и там студенческая лаба, студенческого же уровня. В реальной промышленности более ответственный подход к разработке.
>устройство должно работать в соответствии с тех.заданием лабы
Какое тех. задание такая и лаба, это да.
>>423241
> А уж если мы возьмем микроконтроллеры с DSP, то они и вовсе могут дать пососать ПЛИС.
Спец. устройство всегда будет работать быстрее универсального. Так что ПЛИСы, выполняя конкретный жёстко заложенный алгоритм, накинут на клыка любому DSP-процессору.
А нет, выходит ты прав с мажоритарной системой и нечетным количеством. Вот пик. 16 и 8 это количество тактов, а самих семплов 3 и приходятся они на середину бита. Для семплов отбираются 8,9,10 строб соответственно из 16 стробов.
>Так что ПЛИСы, выполняя конкретный жёстко заложенный алгоритм, накинут на клыка любому DSP-процессору.
Здесь они плюс минус равнозначны.
И в FPGA и в цифровых сигнальных процессорах есть встроенные блоки DSP для ЦОС.
Заебись, аргументируя за ЦОС в МК, скинул мне DSP, разработанный плисовиками/asic разрабами. Разъебал сам себя. Молодец!
Тот же ПЛИСовик этот dsp РАЗРАБОТАЛ, понимаешь? А ты всего лишь его ИСПОЛЬЗУЕШЬ. Осознаешь разность масштабов?
Как-то сомнительно. С чего бы тогда всякие биткойны в свое время майнили именно на FPGA? Может непосредственно к ЦОС такое отношение не особо имеет, но на помехоустойчивые кодеки должно быть весьма похоже.
>С чего бы тогда всякие биткойны в свое время майнили именно на FPGA?
Потому что в процессорах DSP есть строгоопределенный набор алгоритмов ЦОС и алгоритм майнинга битка туда не входит. А на FPGA можно написать алгоритм(конфигурацию схемы) который будет майнить биток.
И как это отменяет все вышесказанное >>423243, ебаный дебил?
Во-первых родители должны узнавать про все эти программы и сделать всё необходимое, чтобы ты в эту программу попал, собирать доки, выбрать вуз, чтобы там была программа по обмену.
Берут туда только с отличными оценками и знанием иностранного языка, то бишь родители уже заранее должны были заранее позаботиться об этом.
Причем тут родители вообще? Я когда поступал, просто сам же подал доки в большой техвуз ДС2, где и учился спокойно 5 лет, а в последний год, а в последний год понял, что меня все заебало, пришел в отдел с разными международными программами, выбрал программу, подал доки и все, уехал на год в зарубежную магистратру, где и защитился.
>Во-первых родители должны узнавать про все эти программы и сделать всё необходимое, чтобы ты в эту программу попал, собирать доки, выбрать вуз, чтобы там была программа по обмену.
Если в 18 лет за тебя все доки собирали родители, и вуз выбирали тоже они, то, естественно, никогда и никуда ты не поедешь, корзиночка мамина.
>Берут туда только с отличными оценками и знанием иностранного языка, то бишь родители уже заранее должны были заранее позаботиться об этом.
Ты долбоеб? Там средний балл нужен 4.5-4.7, это как бы вообще не проблема, если ты в универе хотя бы на половину лекций ходишь. Про иностранный язык тоже хуету городишь. Никакого особого знания не нужно, нужно уметь читать, писать, уметь хотя бы на 60-70% понимать речь на слух, что-то сказать самому. Опять же причем здесь родители? У меня были нулевые знания языка в 18 лет при поступлении в ДС2. На 3-м курсе я понял, что материалов для учебы на русике мне уже не хватает и начал читать на инглише, сначала тяжело и нудно, со словарем, потом бодрее, а через полтора года уже сам писал на английском спокойно.
Ты пишешь какую-то полную хуйню, возможно, ты никогда не учился в нормальном вузе, и даже не интересовался, как такие программы работают.
Родившись у нищих родителей в мухосране в однушке с парашной школой на окрание на 100 человек у тебя ни знаний не хватит, чтобы сдать вступительные/егэ в топ вузы ДСов на бюджет, ни денег на проживание в дсах. Просто иди нахуй, пиздобол маняврирующий, твой успех это заслуга твоих родаков, у меня больше нет желания продолжать этот оффтоп, разговор закончен.
>Никакого особого знания не нужно, нужно уметь читать, писать, уметь хотя бы на 60-70% понимать речь на слух
Ты дибил ебаный, то что ты пишешь это B1 как минимум, в мухосранской школе, где я учился, ты к 11 классу разве что london is a capital of great britan знать будешь, а не понимать речь на слух. Я за 2 года магистратуры больше английского выучил, чем за всю школу, потому что пришлось даташиты на английском читать и литературу техническую.
>ты никогда не учился в нормальном вузе
Да, но это не моя вина, я не выбирал семью, город и страну, в которой родился. Родители ни разу не были в моем вузе, я сам поступил в бакалавр, магу, сам искал места работы по специальности, сам набивал первые несколько лет опыта. Образование в "нормальном вузе" в ДС или Европы я смогу получить лет к 30, когда бабок накоплю на него.
Что за хуйню ты несёшь? У нас в дс в "топ вузе" проходной балл поступивших по второй волне НА БЮДЖЕТ был 200-210 за 3 предмета. Это очень мало, и любая школа такой уровень даёт запросто, ведь это всего лишь 70 баллов за предмет. Тебе дают общагу за 400 р в месяц, а жить можно и за 7-8к, у нас так некоторые жили, сами работали и ещё родителям помогали. Я тебе написал, что английский я нихуя не знал, а начал в универе с чтения тех же даташитов и лекций из иностранных вузов. При учёбе по обмену или программе двойного диплома тебе выдаётся грант, покрывающий все твои расходы на жилье и еду при обучении в другой стране. То, что ты об этом ничего не узнавал это не вина твоих родителей. Не взваливай вину за свою жалкую жизнь на внешние обстоятельства, очень много разных тем и возможностей, особенно в России.
>Тебе дают общагу за 400 р в месяц, а жить можно и за 7-8к,
Вот тут у тебя накладочка выходит.
Так а где ты возьмешь 7-8к на проживание, если тебе нищие родаки не будут давать столько денег? Работать паралельно с учебой? Но, извини, тогда ты будешь посещать мало лекций и средний балл 4.5-4.7 для программы обмена ты не наберешь.
>То, что ты об этом ничего не узнавал
Где я должен был об этом узнавать, когда поступал в вуз в 16 лет? Комп с интернетом у нас дома появился только когда я уже был на 2 курсе, а возможности мотаться по вузам ДСов и рассправшивать там приемные комиссии о их программах у меня возможности тоже не было.
>Не взваливай вину за свою жалкую жизнь на внешние обстоятельства,
Я не взваливаю, а собственными силами выбираюсь из того говна, в котором мне "повезло" респавнутся. Это ты не делай вид, что весь твой успех это целиком твоя заслуга, 90% это заслуга того, что тебе повезло со стартовыми условиями.
>очень много разных тем и возможностей
Для челов с хорошей семьи, который обучился в топ вузе ДС и Европы - бесспорно. А с коркой мухосранской шараги очень тяжело найти высокооплачиваемую работу сходу.
>Так а где ты возьмешь 7-8к на проживание, если тебе нищие родаки не будут давать столько денег?
У нас некоторые работали, еще и родителям кидали деньжат. Это надо быть убер нищуками, чтобы не набрать 7-8к в месяц ребенку на покупку продуктов в другом городе. Есть социальные стипендии в вузах, приносишь справку с доходами родителей, тебе эти 7-8к платит государство каждый месяц потом, на них и живешь. Так и работать даже не придется и лекции не пропустишь. Ты просто не умеешь крутиться.
>Где я должен был об этом узнавать, когда поступал в вуз в 16 лет?
Не знаю, почему ты поступал в 16, обычно люди в 18 поступают.
>рассправшивать там приемные комиссии о их программах
Ну так в любом +- крупном госвузе эти программы есть, это надо быть парашей уровня Синергии, чтобы таких программ обмена не было в принципе. Вот тебе простой ответ - не надо поступать в мутные шараги.
>Это ты не делай вид, что весь твой успех это целиком твоя заслуга, 90% это заслуга того, что тебе повезло со стартовыми условиями.
Лол, ты ничего обо мне не знаешь и рисуешь удобную для себя картину в своем воображении. Моя семья была убер нищуками в 90-е, интернеты у меня появились позже всех, а нормальную пеку я себе только уже в универе купил, самостоятельно на нее заработав. И да, я считаю, что мне еще повезло, я видел истории гораздо хуже среди своих сокурсников, но это не мешало им хорошо учиться, хорошо работать и съябывать забугор, кому надо.
>Для челов с хорошей семьи, который обучился в топ вузе ДС и Европы - бесспорно. А с коркой мухосранской шараги очень тяжело найти высокооплачиваемую работу сходу.
Опять же, тут не корка твоя виновата, а твой майндсет неудачника. Ты сам себе придумал эти правила жизни, по которым ты бесперспективная чмоня, поэтому любое твое действие в этом контексте превращается в превозмогание, таким образом ты тешишь свое эго, вот и все. Вылазь из этого чехла, иначе так всю жизнь и проебешь.
Алсо хотел тупо и смело потыкать в https://github.com/myriadrf/LimeSDR-Mini_GW
Первым делом решил просто сборку прогнать, квартус предложила обновить корки, некоторые провалились но была подсказка что можно обновить в платформ дизайнере. Платформ дизайнер обновил какую то часть. После этого сборка предсказуемо падает и я подозреваю что есть какие то зависимости (на внешние библиотеки или типа того) которые я не указал. Если кому не лень то попробуйте собрать сорцы используя последний квартус лайт или киньте хинт.
Я как-то собирал, но дальше дело не пошло. Подробностей того как именно собирал не помню уже.
FPGA там маловата, мало чего влезет. Ну можно приделать к имеющемуся демодулятору ЧМ еще парочку других, при желании можно приделать динамик, кнопочки и дисплейчик. Но толку то, что-то более интересное уже не потянет.
Пожалуй поддержу этого >>423322
У нас в семье помер батя, мамка осталась одна с двумя детьми на руках. Старший заканчивал школу и должен был поступать в универ, а младший (я) как раз должен был пойти в школу. А это было начало 90-х, то ещё времечко. И вот чтобы поднять двоих спиногрызов мамка пошла работать на корабли вахтовым методом, 2 недели в рейсе, 3 дня дома и так десять лет, без отпусков, выходных и прочего. Ну так вот, старший уехал учится в город до него сутки поездом, а жили мы в такой дыре, что страшно представить, это даже не мухосранск, это вообще ёбаное днище.
Ну и вот, я фактически остался один, был предоставлен сам себе, была ещё бабушка, но у неё у самой из-за войны 3 класса начальной школы, так что ни о каком воспитании и напутствиях речи не шло, она только борщ варила. Ну и какие могут быть интересы у пацаньчика в таком возрасте? С другаганами в компик погонять, да по заброшкам полазить. Да и в школе одни гопники были, туда не то что ходить, появляться в её окрестностях лишний раз не хотелось. Приедет мамка на 3 дня, навесит люлей за двойки в дневнике и опять уедет и всё по кругу.
Школу закончил кое-как на трояки, так что ни о каком бюджете даже и мечтать не мог. Пришлось идти работать на полный день, а поступать на вечернее отделение, сам работал сам себе учёбу оплачивал. Какие тут на хер могут быть программы обмена - не смеши.
Да мне пока j4f и для самообучения т.к. пока едиственная плата с fpga в доме, а вот например дисплей приделать который будет отображать например текущую центральную частоту и настройки даже может быть интересно.
Но пока надо асилить саму среду и понять что ей не хватает.
Ну так в школе учиться надо было, а не по заброшкам лазить. Возможность ходить на уроки в школе и слушать учителей была? Была. Все, иди нахуй, сам же все и проебал, теперь страдай.
Для начала лучше возьми ту же версию квартуса, что и у них. А еще лучше начни с более простого - мигания светодиодом.
>например дисплей приделать
Для такого не обязательно изменять конфигурацию FPGA, я же писал про автономную работу без компа. А если работать с компом, то дисплей без разницы как приделывать. Там у LimeSDR на плате есть программно доступное GPIO, можно через него.
> А это было начало 90-х, то ещё времечко.
>Ну и какие могут быть интересы у пацаньчика в таком возрасте? С другаганами в компик погонять, да по заброшкам полазить.
Ну ты и фантазер. Мать-одиночка, начало девяностых, и... компьютер.
Я читал книги о компах, увидев этот самый компьютер единственный раз в жизни. Потом, когда комп появился (точнее появился у тетки, к которой я ездил раз в неделю), игры всегда казались чем-то очень скучным, я предпочитал ломать сейвы. Сейчас у любого школьника из мухосрани возможностей учиться в 100 раз больше, чем у среднего класса в 90-е.
> Для начала лучше возьми ту же версию квартуса, что и у них. А еще лучше начни с более простого - мигания светодиодом.
Так если там корки просило обновить это ж неспроста, может там пофиксили что.
> Для такого не обязательно изменять конфигурацию FPGA, я же писал про автономную работу без компа. А если работать с компом, то дисплей без разницы как приделывать. Там у LimeSDR на плате есть программно доступное GPIO, можно через него.
Это я и без лайма могу сделать хоть на FT2232, хоть на STM32 или AVR, суть была именно прозрачно всю эту инфу выводить без модификации софта на компе. Или например тот же FFT что для лайма в FPGA сделал на тот же экран гнать.
У меня именно по квартусу вопрос, сам я разраб знакомый и с эмбеддом и с тырпрайзом и вот чес слово хоть оно и на эклипсе но я за полчаса не вкурил концепцию квартуса.
Начинай с мигалки, потом к более сложному перейдешь.
О, в лайммини можно разогнать ацп? А то в старшей версии с точно такой же микрухой сэмплрейт в два раза больше.
Там и мини с модификацией гейтвари может в 80 мегасемплов FFT делать на борту (гугли или смотри один из форков), тому и j4f хочу посмотреть но ппц инопланетное IDE.
Там после АЦП в LMS7002M и так децимация должна использоваться, это с одной стороны. А с другой стороны, не кажется ли тебе что частота дискретизации может упираться в FT601?
Ну ты не сравнивай жизненный опыт ребёнка и взрослого человека, в том возрасте я учёбу на одном месте вертел, собственно как и все вокруг, а наставить на путь истинный было некому.
>>423361
>начало девяностых, и... компьютер
Компьютерами мы тогда называли приставки, Денди там, Сега 16-битная.
А пеку я в первый раз увидел у знакомого знакомого, он на почте каким-то сисадмином работал. Я тогда в Кваку первую погамал, культурный шок испытал, от того какими игры могут быть, после Денди сраного то, через некоторое время у другана 486 появился, с тех пор и заинтересовался компьютерами.
Попробуй посмотри здесь
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
>Моя семья была убер нищуками в 90-е, интернеты у меня появились позже всех, а нормальную пеку я себе только уже в универе купил, самостоятельно на нее заработав. И да, я считаю, что мне еще повезло, я видел истории гораздо хуже среди своих сокурсников, но это не мешало им хорошо учиться, хорошо работать и съябывать забугор, кому надо.
Типичная ошибка выжившего. Зря тригеришь на спор, это так толсто что просто фу
>в свое время майнили именно на FPGA?
Это полная чушь. Их всю жизнь было выгоднее майнить на видеокартах, чем на FPGA.
Не говоря уж о том, что блоки ЦОС для майнинга практически бесполезны по причине отсутствия умножений в алгоритме SHA-256.
>>423241
>Ну-ну, и давно ШИМ относится к цифровой обработке сигналов?
С того же времени, что и любая другая модуляция.
*?
Так от тебя вообще никаких ссылок не видно.
Я на неё ссылаюсь как на легкодоступный справочник для устранения базовой неграмотности.
>Их всю жизнь было выгоднее майнить на видеокартах, чем на FPGA.
Не факт. По соотношению потребляемая мощность/производительность плисы должны выигрывать у видеокарт.
В своё время были исходники FPGA майнера битка и я запускал их на 4 и 5 стратиксах (на DE4 и DE5 бордах). После этого я понял что биток - это наёбка, никакой он не децентрализованный.
Вроде тогда можно было достать бесплатно (или почти бесплатно) плисы со старых базух и на них делали FPGA майнеры. А потом уже разработали асики.
Манипуляция - это частный случай модуляции. Эти ссылки на википедию бессмысленны.
>Не говоря уж о том, что блоки ЦОС для майнинга практически бесполезны
Я просто мимо проходил, но, как мне кажется, DSP это далеко не всегда про ЦОС. Это еще всякие VLIW и SIMD. На DSP, к примеру, декодеры Витерби и всякое такое делают не просто так.
Я объяснил, почему DSP-блоки (они же ЦОС-блоки) практически бесполезны для майнинга. Ты предложение до конца не дочитал, что ли?
кто работал с max plus II?
посоветуйте материалы чтобы хорошо работать в этом старье.
не хочу квартус из-за сотни ячеек качать.
>FLEX
почему-то в голове представляю длиннющего гнутого гепарда в прыжке, типа ФЛЕЕКС, ГИБКОСТЬ ШОПИЗДЕЦ
В этом вся суть ПЛИС
И то и другое. Сам решай. Намного проще и в намного больших количествах какие-то (да, какие-то) непонятные штуки которые так и продаются - на органы или под восстановление. Может попадется кусок FLASH массива, может кусок мультиплексора SDH/PDH, что-то с Ethernet, кусок БС, схема видеозахвата, что-то под PCI или PCI-EX... Схем на них практически не найти, только самому срисовывать поэтому если вкусная платка под запуск - минимум 2 брать (одна рабочая, другую потрошить) или одну если тебе нужен конкретный камушек под свой проект. Найти фирменные отладки под восстановление можно, но надо очень постараться.
только я не понял как искать. по for chip recovery на ebay/amazon не находит "базухи".
блять, я понял. ну да, но такое оборудование стоит охуевших денег и хз как оно через таможню пойдет. это конечно не топ на терабиты в секунду, но девайсы недешевые и часто там бга.
ты же про телекоммуникационные детали, да?
> не находит "базухи"
И не должен находить или ты счастливчик если нашел. Пробуй разные варианты начиная от chip|gold recovery до названия семейства ПЛИС и производителя. Ты же ищешь в явном виде железяки на органы по цене лома. Иногда по смежным запросам можно найти - как тупой пример это поиск карт расширения для ethernet свичей/мультиплексоров E1/../ и там почти всегда можно найти ПЛИС в разных вариантах. Если реально нужен кусок базовой станции для работы-настройки-тестов - тогда мимо, не подскажу. Здесь пытались довести мысль об одном из кучи вариантов где можно разжиться подтекающими ПЛИСами.
Подфапываю на модули от Violin Memory с разъемом в стиле памяти DDR2. Только разъем, если воткнешь в комп - сразу все спалишь из-за несовместимого расположения выводов и питания модуля от 12вольт. Хорошая такая флешка с SLC памятью на сотню-другую гигов.
какой элемент или что используется чтобы переключить сигнал с одного на другой источник подобно крану?
речь идет о цифровых сигналах и cpld.
нужно по событию переключить поток данных как если бы я убрал соединение в редакторе и добавил в другое место, не совсем понимаю как использовать лог. элементы в этом случае.
*что нужно для графического редактора и как можно написать примитив на vhdl для этого если не будет готовой "детальки".
я нашел на логических элементах, но их что-то дофига для большой шины выходит. если бы был бы "кранообразный" вариант с high-z, было бы в 2-3 раза меньше расходов.
>вариант с high-z
Соснешь хуйца. Внутри ПЛИС нет никаких high-z, оно и реализуется внутри на мультиплексорах. high-z существует только на выводах наружу.
>>423959
>какой аналог логической схемы это синтезируется
Хер знает. Тебя ебет? Логики же обычно жопой жуй. У той же Альтеры когда создаешь жирные мультиплексоры через мегавизард - в нижнем левом углу пишется сколько LE уйдет на реализацию.
Еще скажи что собрался схему рисовать в schematics что пишешь про сложность реализации схемы..
Вот рандомный мультиплексор 32 входа по 32 бита занимает 672 lut (с огромным натягом это количество макроячеек(ALM), подправят если неправильно описал).
Во что синтезируется? Так и не выкопал в кактусе 9.0 - он на Flex не дает глубоко заглянуть, а RTL - дохуища уровней вложенности что ебанешься скрины делать.
я пробую маленький чип cpld с макс плюс 2, сейчас нет инета чтобы квартус скачать. суть в том, что логика простая и влезает и еще остается. но хочу иметь максимум представления чтобы хватило еще на что-нибудь.
>нет high-z
как называется принцип, когда можно оптимизировать схему и из двух разных частей слепить что-то минимальное по элементам, беря в расчет что какие-то сигналы будут абсолютно одинаковы.
например я думаю совместить счетчик с мультиплексором, правда не знаю во что синтезируется столько элементов.
пока самый удобный и экономный вариант - это писать на vhdl в квартусе и смотреть в RTLViewer.
>как называется принцип, когда можно оптимизировать схему и из двух разных частей слепить что-то минимальное по элементам, беря в расчет что какие-то сигналы будут абсолютно одинаковы.
Это не твои проблемы, а оптимизатора и твоего ковнокода схемы.
>писать на vhdl в квартусе и смотреть в RTLViewer.
Идея хороша. Один раз люто ёбнуло - на Flex показывает около 40 lut используется, меняю чип на MAX3064 и сосу хуй! Нехватает связей на трассировку внутри и cannot fit design.
в max3000 нет LUT, там иначе все. потому приходится исходить из этих ячеек.
или посоветуй дешевый чип с 44-48 ног примерно, 64 самое большое. tqfp. дешевый и сильный. max3000 и max7000 по цене прям совсем копейки стоят, самое то их так применить.
Другие ответят по камням. Вижу фанат Альтеры? Сам решай что тебе нужно - семейств CPLD у Альтеры не так много.
Посмотри в сторону салата Lattice.
Сам жду с кетая 5 вольтовые FPGA Epf10k10lc84-4 в PLCC84 как временная замена MAX7128S и которую хер сожжешь перепрошивками при тестах.
приглянулись некоторые от lattice, программатор вроде можно самому сделать, лучше чем xilinx.
альтеру хочу попробовать из-за дешевого программатора и потому что ее до жопы на али
>>423969
старые max от альтеры мультивольтовые(3000А точно), а у xilinx максимум логики в самом простом корпусе и небольшой цене.
в целом, они много от кого похожи между собой.
а программаторы нашел что на все три производителя есть самопальные/lpt/com, короче доступные.
большие отличия только у нормальных fpga, но это потом.
наверное марсоход соберу.
>маленький чип cpld с макс плюс 2
>с макс плюс
Может не стоит страдать такой некрофилией и взять что-то посвежее типа того же квартус 2 https://habr.com/ru/post/277947/ ?
> lattice, программатор вроде можно самому сделать
Как минимум подтверждаю что голый ft2232D работает как программатор, ft2232H не тестил.
>лучше чем xilinx.
Мне очень интересно - сколько на тебя говна выльют фанаты хиленьких?
Как раньше пИсалось - бери лучше FPGA (хоть самое ёбаное днище) для облучения - их невозможно убить перепрошивками и жопа не будет гореть если не хватает места что бы вписаться.
>старые max от альтеры мультивольтовые(3000А точно)
Еще один вылез. Что по твоему "мультивольтовость"? Не у всех МАХ-ов есть разделение выводов по банкам.
МАХ7000S - чисто 5В, МАХ3000/MAX7000AE - 3.3В и понимает 5В на входах.
МАХ II / V - если скажешь они держут 5 вольт - с ноги по ебалу без вопросов. Да, они держут, но только самые жирные камни (1270, 2210), остальные же самые камни (коих большинство и как пример - тот же Марсоход 1 на epm240) - уже не держут 5В на входе.
мне понадобились эти девайсы потому что микроконтроллер не успевает, то что нужно реализовать очень просто.
можно на 4000/74 серии даже собрать, но дороговато и паять много придется.
про реализацию спрашиваю потому что сложно понять сколько займет ресурсов готовый примитив, особенно если он написан кодом + триггеры в максах 3000 и 7000 нельзя разделить на логические элементы.
для fpga какой минимум осциллограф и логический анализатор стоит взять?
>логический анализатор
В FPGA он есть и у Альтеры зовется SignalTap. Есть некоторые жесткие ограничения (например невозможность просмотра сигналов на LVDS парах) в которые вряд ли упрешься.
SignalTap только в FPGA, в CPLD его нет может ошибаюсь и есть пародия на него хотя бы из-за крайне малой емкости - и логической и ОЗУ.
>сложно понять сколько займет ресурсов готовый примитив, особенно если он написан кодом
Легко. Полная CUMпиляция(синтез) проекта под выбранный кристалл и не забудь (хотя бы от фонаря) назначить выводы, а не полагаться на мнение фиттера при назначении выводов.
>>SignalTap
У Альтеры вообще внутрисхемная отладка мощная, Хилые и рядом не валялись.
Начинай смотреть отсюда, много интересного узнаешь
https://www.youtube.com/watch?v=f94oo6Q2WZ4&list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO&index=8
>У Альтеры вообще внутрисхемная отладка мощная, Хилые и рядом не валялись.
Только инсистема и нет. Есть ila и vio. Памяти вроде только через софтпроц можно.
У Альтеры, есть ещё Сигнал Пробе Пинс, это когда поверх существующей компиляции можно провести ещё одну быструю компиляцию в которой на неиспользуемые ноги выводятся точки из проекта. И его более продвинутый вариант Логик Анализер Интефейс - управляемый через программатор мультиплексор на который заводятся выходы интересующих элементов, а выходы мультиплексора на свободные ноги. Хотя это всё не совсем внутрисхемная отладка, наблюдение проводятся внешним осцилопом, но всё же. Да и сам СигналТап намного навороченее чем его аналог у Хилых.
Ещё, желательно, эмулятор схемы, чтобы я её сразу проверял.
http://llhd.io/
Там же ссылки на гитхаб с синтезатором и симулятором для этого дела. Все очень быстро и просто. Верилог работает из коробки, для вхдл у меня сразу не получилось, не видит ieee-шные библиотеки.
Вот статья про эту штуку https://habr.com/ru/post/496720/
>3 пик
Нахуй вы лягушкой становитесь блять? Я бы сам вкотился, если бы не мнения интернетов. Помню давно-давно лет 6 назад на верилоге писал всякую фентезийную хуитку, представлял, как я разрабатываю железяки.
А сейчас джава-котлин-тытырпрайс без пяти минут мид с проебанной душой и четким осознанием что деньги тебе счастье не принесут.
Алсо чтобы вкотиться помимо языков описания, что еще нужно? Вспомнить цос, тоэ, потыкаться в борду? Или несмотря на курьерские зп, порог вхождения там все-таки конский?
>Нахуй вы лягушкой становитесь блять?
Из-за этого:
>четким осознанием что деньги тебе счастье не принесут
зачем там их пишут? люди же регистрируются и смотрят на числа. не совсем понятно. поясни
ты и будешь весь отдел
>простейшего синтезатора звука?
да
>Чтобы на монитор картинка выводилась с клавишами, а по нажатию кнопок ps2 клавиатуры на динамик выдавалась частота ноты определенной.
виндовс-ребенок
Возьми какой-то стандарт цифрового сигнала. Сделай демодулятор. Запроектируй в матлабе, посмотри как работает. Потом сюда запиши. Уверен, от самооценки ты потом начнешь трахацца с самим собой
Матлаб то нахуя?
Для синтезатора звука и сраной ардуины хватит, зачем под этот детский сад ПЛИС переводить.
Во что стоит вкатываться в 2к20? Выбираю из нескольких стульев:
1. ПЛК.
2. Микроконтроллеры.
3. ПЛИС.
Куда легче вкатится и под что легче прогать? Где больше зарплата и есть возможность дальнейшего трактора? О себе: есть оконченная вышка радиотехника, небольшой опыт проганья под плк и микирки, под плис не прогал, но на лабах собирали разные цифровые схемы в мультисиме, так что при желании смогу вкатится в любую область.
АйТи не хочу, там все душные, рынок перенасыщен и надо бошку напрягать куда больше, чем в перечисленных выше сферах.
> 1. ПЛК.
> 2. Микроконтроллеры.
> 3. ПЛИС.
Плк это же мк и плисы как раз. Лучше в питун вкатывайся и иди работать в сбербанк.
>Плк это же мк и плисы как раз.
Схуяли? На плк ты пишешь на максимально простых графических и текстовых языках FBD, LD, ST, и на уровень "железа", из которого собран ПЛК, ты не опускаешься.
>Лучше в питун вкатывайся
Писал же, что не хочу в айти. Рынок там переполнен и с джуна требуют, как с синьора. Не хочу унижаться на собесах, когда тебя даже на жалкую зп в 40к заставляют вертеть двоичные деревья или сортировать пузырьком.
>и иди работать в сбербанк.
В такие топ-фирмы берут только закончивших топ вузы ДС с красным дипломом.
>даже на жалкую зп в 40к заставляют вертеть двоичные деревья или сортировать пузырьком.
В плисах ты такую зп только через пару лет достигнешь.
А вертеть ещё и не такое заставят.
>Чтобы на монитор картинка выводилась с клавишами, а по нажатию кнопок ps2 клавиатуры на динамик выдавалась частота ноты определенной
сложная задача для плис, тупо не рационально.
проще на мк.
это надо vga сделать, сделать ps/2 интерфейс и какую-нибудь таблицу для выделения кодов клавишь и отправки этого на блок генератора частоты нот (а частота там не просто n*x от клока.)
проще это все конечным автоматом сделать или недоядром хоть 4битным cpu. все что касается чего-то близкого к "памяти программ" как в мк на плис обходится дороже, они не для этого. собсна сам мк это ядро + периферия, в том числе память.
само ядро арм, например, не определяет память. есть кортексы без встроенной памяти если не считать загрузчика, м.б. даже без него есть.
*vga, ps/2 еще ладно.
но вот ноты генерировать уже геморно будет, придется писать много счетчиков. охуеешь от того как это будет в виде логики выглядеть. потому то
>это надо vga сделать, сделать ps/2 интерфейс и какую-нибудь таблицу для выделения кодов клавишь и отправки этого на блок генератора частоты нот
Хорошая учебная задача.
>а частота там не просто n*x от клока
Почему нет?
мимо_далёкий_от_музыки
>>425452
ой, я же не шарю почти.
частоты для vga, нот и ps/2 делаются таймером встроенным в плис или pll или еще как.
для нот лучше всего регулируемый генератор или pll c цап чтобы задавать частоты нот максимально плавно.
для vga и клавы просто можно делить опорную частоту.
для рисования картинки понадобится фреймбуффер и в дешевых плис с этим не очень. плата марсоход, например, использует внешний чип памяти. для примитивного вывода с низким разрешением в плис тоже может не хватить памяти.
можешь найти готовые проекты по частям (вга, клава, ноты - все это отдельно я видел)
Лол, тут ты будешь осваивать в схемотехнику, рисовать схемы, кодить на Си и HDL, следить за тем, чтобы плату правильно развели (или делать ее самому), а потом сидеть до ночи с осциллографом/логическим анализатором и пытаться понять, почему она не работает. Зато интересно, дохуя всего знаешь и умеешь, можешь свои железки делать.
Короче, вкатывайся туда, где больше нравится.
>Не хочу унижаться на собесах, когда тебя даже на жалкую зп в 40к заставляют вертеть двоичные деревья или сортировать пузырьком.
Братиш, не торопись, подумой. Двоичные деревья ты выучиваешь один раз (надо признать, не без пользы для собственного мозга), сдаёшь один раз, после чего всю жизнь копипастишь куски со стековерфлоу, попивая смузи. А на днищепрограммирование ты вкатываешься легко, потому что никто на такие условия не идёт, а потом всю жизнь за копейки в неотапливаемом цехе ебёшь себе мозг подбором магических значений регистров и задержек, при которых хуйня начинает работать, и больше её не вздумай трогать, еби следующую хуйню.
>Почему нет?
На самом деле да, если используется равномерно темперированный строй, что норма для 2к20. Но пищать синусами, меандрами или треугольниками это дно, надо ебашить Карплуса-Стронга, а там генератор псевдослучайных чисел и полноценный КИХ-фильтр со сменными банками коэффициентов.
мимо_интересующийся
>На самом деле да
(ну или всё-таки нет, потому что даже равномерно темперированный строй — он всё-таки равномерно логарифмический, а не равномерно линейный).
> а потом всю жизнь за копейки в неотапливаемом цехе ебёшь себе мозг подбором магических значений регистров
Блин, как ты узнал?
мимо прогаю микрики зимой в комнате +9 градусов летом + 35
Да мы тут все такие, братишка.
нашел у себя пост карту для ноутов на epm7064. хотел наебать систему и думал что выгоднее заказать пост карту чем готовый чип. так-то оно почти так, но мне подошел бы и вариант за 1$/
есть ли способы скачать прошивку с max7000 чтобы потом записать обратно и пост карта работала?
встречались ли вам подобные дешевые девайсы, откуда можно взять cpld и fpga?
я помнил что раньше видел красную пост карту за три сотки с доставкой где аж три epm7032 или типа того, но оказалось что там совсем мелкие девайсы на 8 логических ячеек.
> но мне подошел бы и вариант за 1$/
чип там большой, мне столько контактов не нужно. а стоят они от бакса до 6-7 в зависимости от корпуса и напряжения.
Да, в 13 есть. Можно выкачать поф из плисы.
Есть ли какие то гайды по этому?
Добавить SignalTap, In-System Sourcec and Probes по вкусу, просинтезировать, залить в реальный кристалл. Profit!
А я чуть соснул - сигналтапа нет во флексах, даже в чуть улучшенной версии EPF10K200S. Похуй, не особо рассчитывал на него, особенно когда раздуплил как реальную систему запускать в пошаговом режиме и можно в статике наблюдать за сигналами даже глазами.
Мелкие тесты гоняю во встроенном симуляторе в 9-м кактусе.
Может так в общем виде? https://marsohod.org/11-blog/113-icarus
Как гонять тесты конкретного камня в моделсим - неебу, самому интересно.
> чем лучше просимулировать программу на verilog для altera max10?
Чем тебя идущий вместе с квартусом ModelSim не устривает?
Зачем моделировать проект для конкретного чипа? Синхронно делай - нормально будет. На крайняк сам квартус моделировать может с точной времянкой. На моделсим тоже можно, я раньше для старых циклонов делал, но потом полностью отказался от такого подхода.
> я эти RTOS для микриков писал своими руками еще в университете
Ты должен понимать, что лабы в университете несколько отличаются от промышленных задач. Ты серьезно пытался кого-то этим удивить? Ты хоть понимаешь, с кем сидишь на одной борде, мальчик?
>(ибо учился в развитых странах, а не СНГ)
По-твоему в СНГ нет серьезных разработок, университетов и промышленности?
На разработку «ОСи» времени уходит очень мало. Тут такая же история как с ассемблером против СИ, просто нужно научиться строить код иначе. Конечно всё зависит от задачи, можно так извратиться, что «сквозные процедуры» не помогут. Но практика показывает, что такие задачи исходят от принципа «так принято всеми, поэтому и и ты пиши так, — другие не поймут». Вот для таких случаев я и включаю к компиляции в проекте ОСь, что бы человек, который не может построить свой код сквозными процедурами мог продолжить проект. Мало того это ооооооооочень сильно экономит память. Каждая задача имеет свой стэк, и если у тебя есть некая ветка, которая выделяет память, по цепочки исполнения процедур, и эта ветка запускается в нескольких задачах, тебе, по сути нужно резервировать двойной объём памяти для каждой задачи. Что тянет за собой удорожание контроллера на котором крутиться ОСь, так же и вообще затраты ресурсов. Я постоянно запускаю медицинские и индустриальные устройства, где очень часто стоит вопрос об энергопотреблении, поверьте тут считается каждый такт. Код пишется очень быстро, задачи какие угодно, и файловые системы, и телекоммуникация, и протокольные части, и графика+анимация, вообщем всё и вся. Применяю как Си, так и ассемблер, постоянно и бесповоротно. Мало того подход со «сквозными процедурами» заставляет писать фактически идеальный код. Понятно, что есть ошибки, но из-за подобного подхода они минимизируются. Для примера, таким методом я запустил проект, в котором медицинское устройство вшивается в человека, если я допущу ошибку, и не дай боже где-то что-то зависнет, то в лучшем случае человека будут оперировать, а в худшем он умрёт. Я просто за последние 15 лет на столько привык иначе относиться к программированию, что вообще не рассматриваю классический метод программирования. Безусловно я свои модули даю другим людям, но очень часто, что бы их могли понять, я вынужден переписывать, не применяя экзотику. Например тот же скрипт-парсер команд для модемов. У меня один такой скрипт-парсер позволяет за одну итерацию поднять как управление модемом, так и какой-нибудь протокол. Причём скрипт-парсер уже содержит в себе автомат переповторов при ошибках, заложенные сценарии, например инициализации, генератор событий. Вообщем полный фарш для протоколов и коммуникаций. Но как доходит вопрос о том, что бы кто-то использовал, приходиться проводить лекцию, а когда кто-то узнаёт что проект на СИ параллельно запускает и мой компилятор, люди вообще впадают в ступор. Я уже говорил, что я могу себя ограничить классическим подходом, и всё написать на IF/THEN/FOR, но это приведёт к емкости и низкому качеству конечного результата.
Я не претендую на самый качественный код, но пять лет в теле человека он обязан проработать без сбоев. Я не претендую на самое энергосберегающее устройство, но имея простые компоненты я получаю своим подходом то, что работает как в телах людей, так и на заводах по миру.
Наверное вы правы это маньячество, и я бы хотел, что бы в программировании были маньяки, ставящие перед собой сложные задачи и решали их с лёгкостью.
— Приведу пример как мои процессы при включенном OS
while(1)
{
u32 flag = prcLoopMeasureParallelPress();
if ( (flag & prflag_MEASPMS58_MASK) == prflag_MEASPMS58_DELAY)
{
taskYIELD();
}
} … больше нет ничего в процессе
— Приведу пример что находится внутри измерительной части
u32 prcLoopMeasureParallelPress(void)
{
u32 res=prflag_NOP;
res |= DoProc(&process_measPM_TruxPress, proc_NOP);
return res;
}
— Внутри DoProc и крутятся все сквозные процедуры, их можно вызывать в простом вечном цикле без ОСь, без лишней затраты памяти. Вот как это выглядит:
u32 prcLoopALL(void)
{
u32 res=prflag_NOP;
res |= DoProc(&process_key, proc_NOP);
res |= DoProc(&process_lcd, proc_NOP);
res |= DoProc(&process_keymenue, proc_NOP);
res |= DoProc(&process_measPM_TruxPress, proc_NOP);
res |= DoProc(&process_measPM_TruxTMP, proc_NOP);
res |= DoProc(&process_measure, proc_NOP);
res |= DoProc(&process_FullProcess, proc_NOP);
res |= DoProc(&process_trux, proc_NOP);
res |= DoProc(&process_power, proc_NOP);
res |= DoProc(&process_main, proc_NOP);
return res;
}
— Вот так выглядит пример «крутилки» изображения:
// LCD Dynamic Refresh
case proc_LNG_LCD:
ProcNext(process);
break;
case proc_LNG_LCD+1:
DoLcdScript(ShowScriptID); // lcdRefUpdateData(); //Update Data Ans Show Window
LCD_SCR_UPLOAD(1);
ProcNext(process);
break;
case proc_LNG_LCD+2:
if ( LCD_SCR_UPLOAD(0) )
{
ProcNext(process);
}
break;
case proc_LNG_LCD+3:
res |= prflag_LCD_DELAY;
ProcJr(process,-2);
break;
— И нет никаких проблем. За день-другой поднимается готовый к разработке код проекта. Дальше дело техники, пиши новое и добавляй процессы. Данный код выглядит на много проще нагромождения под ОСьки, и места занимает меньше. Кстати, приведённые куски это части индустриального прибора, который был поставлен с нуля на серию за шесть месяцев. И всё это работает на тактовой частоте 12 мегагерц, в проекте всё универсально, коммуникация внутри проекта может на ходу смениться на любой интерфейс SPI+I2C+UART или вообще стать виртуальной и быть внутри протокола, который будет внутри другого протокола, который будет работать по чему угодно. Вообщем законченный проект, получен сертификат, прошли аттестацию, вошли в список данного класса прибора как 7 лет работы от батареи. Ассемблер в данном проекте не применялся только на стороне датчиков, где так же есть много особенностей.
> я эти RTOS для микриков писал своими руками еще в университете
Ты должен понимать, что лабы в университете несколько отличаются от промышленных задач. Ты серьезно пытался кого-то этим удивить? Ты хоть понимаешь, с кем сидишь на одной борде, мальчик?
>(ибо учился в развитых странах, а не СНГ)
По-твоему в СНГ нет серьезных разработок, университетов и промышленности?
На разработку «ОСи» времени уходит очень мало. Тут такая же история как с ассемблером против СИ, просто нужно научиться строить код иначе. Конечно всё зависит от задачи, можно так извратиться, что «сквозные процедуры» не помогут. Но практика показывает, что такие задачи исходят от принципа «так принято всеми, поэтому и и ты пиши так, — другие не поймут». Вот для таких случаев я и включаю к компиляции в проекте ОСь, что бы человек, который не может построить свой код сквозными процедурами мог продолжить проект. Мало того это ооооооооочень сильно экономит память. Каждая задача имеет свой стэк, и если у тебя есть некая ветка, которая выделяет память, по цепочки исполнения процедур, и эта ветка запускается в нескольких задачах, тебе, по сути нужно резервировать двойной объём памяти для каждой задачи. Что тянет за собой удорожание контроллера на котором крутиться ОСь, так же и вообще затраты ресурсов. Я постоянно запускаю медицинские и индустриальные устройства, где очень часто стоит вопрос об энергопотреблении, поверьте тут считается каждый такт. Код пишется очень быстро, задачи какие угодно, и файловые системы, и телекоммуникация, и протокольные части, и графика+анимация, вообщем всё и вся. Применяю как Си, так и ассемблер, постоянно и бесповоротно. Мало того подход со «сквозными процедурами» заставляет писать фактически идеальный код. Понятно, что есть ошибки, но из-за подобного подхода они минимизируются. Для примера, таким методом я запустил проект, в котором медицинское устройство вшивается в человека, если я допущу ошибку, и не дай боже где-то что-то зависнет, то в лучшем случае человека будут оперировать, а в худшем он умрёт. Я просто за последние 15 лет на столько привык иначе относиться к программированию, что вообще не рассматриваю классический метод программирования. Безусловно я свои модули даю другим людям, но очень часто, что бы их могли понять, я вынужден переписывать, не применяя экзотику. Например тот же скрипт-парсер команд для модемов. У меня один такой скрипт-парсер позволяет за одну итерацию поднять как управление модемом, так и какой-нибудь протокол. Причём скрипт-парсер уже содержит в себе автомат переповторов при ошибках, заложенные сценарии, например инициализации, генератор событий. Вообщем полный фарш для протоколов и коммуникаций. Но как доходит вопрос о том, что бы кто-то использовал, приходиться проводить лекцию, а когда кто-то узнаёт что проект на СИ параллельно запускает и мой компилятор, люди вообще впадают в ступор. Я уже говорил, что я могу себя ограничить классическим подходом, и всё написать на IF/THEN/FOR, но это приведёт к емкости и низкому качеству конечного результата.
Я не претендую на самый качественный код, но пять лет в теле человека он обязан проработать без сбоев. Я не претендую на самое энергосберегающее устройство, но имея простые компоненты я получаю своим подходом то, что работает как в телах людей, так и на заводах по миру.
Наверное вы правы это маньячество, и я бы хотел, что бы в программировании были маньяки, ставящие перед собой сложные задачи и решали их с лёгкостью.
— Приведу пример как мои процессы при включенном OS
while(1)
{
u32 flag = prcLoopMeasureParallelPress();
if ( (flag & prflag_MEASPMS58_MASK) == prflag_MEASPMS58_DELAY)
{
taskYIELD();
}
} … больше нет ничего в процессе
— Приведу пример что находится внутри измерительной части
u32 prcLoopMeasureParallelPress(void)
{
u32 res=prflag_NOP;
res |= DoProc(&process_measPM_TruxPress, proc_NOP);
return res;
}
— Внутри DoProc и крутятся все сквозные процедуры, их можно вызывать в простом вечном цикле без ОСь, без лишней затраты памяти. Вот как это выглядит:
u32 prcLoopALL(void)
{
u32 res=prflag_NOP;
res |= DoProc(&process_key, proc_NOP);
res |= DoProc(&process_lcd, proc_NOP);
res |= DoProc(&process_keymenue, proc_NOP);
res |= DoProc(&process_measPM_TruxPress, proc_NOP);
res |= DoProc(&process_measPM_TruxTMP, proc_NOP);
res |= DoProc(&process_measure, proc_NOP);
res |= DoProc(&process_FullProcess, proc_NOP);
res |= DoProc(&process_trux, proc_NOP);
res |= DoProc(&process_power, proc_NOP);
res |= DoProc(&process_main, proc_NOP);
return res;
}
— Вот так выглядит пример «крутилки» изображения:
// LCD Dynamic Refresh
case proc_LNG_LCD:
ProcNext(process);
break;
case proc_LNG_LCD+1:
DoLcdScript(ShowScriptID); // lcdRefUpdateData(); //Update Data Ans Show Window
LCD_SCR_UPLOAD(1);
ProcNext(process);
break;
case proc_LNG_LCD+2:
if ( LCD_SCR_UPLOAD(0) )
{
ProcNext(process);
}
break;
case proc_LNG_LCD+3:
res |= prflag_LCD_DELAY;
ProcJr(process,-2);
break;
— И нет никаких проблем. За день-другой поднимается готовый к разработке код проекта. Дальше дело техники, пиши новое и добавляй процессы. Данный код выглядит на много проще нагромождения под ОСьки, и места занимает меньше. Кстати, приведённые куски это части индустриального прибора, который был поставлен с нуля на серию за шесть месяцев. И всё это работает на тактовой частоте 12 мегагерц, в проекте всё универсально, коммуникация внутри проекта может на ходу смениться на любой интерфейс SPI+I2C+UART или вообще стать виртуальной и быть внутри протокола, который будет внутри другого протокола, который будет работать по чему угодно. Вообщем законченный проект, получен сертификат, прошли аттестацию, вошли в список данного класса прибора как 7 лет работы от батареи. Ассемблер в данном проекте не применялся только на стороне датчиков, где так же есть много особенностей.
ты изобрел protothreads, поздравляю
>не допускать комбинационных схем на тактовом входе и входе асинхронного сброса триггеров.
Шо за хэрню я читаю?
Конченный автомат на 155РЕ3! Триппера? Да нахуй надо. Реально, сам подофигел когда срисовывал схему, снял и декодировал дамп памяти. У РЕ3 выходы открытый кАллектор, нужны подтягивающие резисторы, на схеме их нет, она для понимания сути. Такой себе псевдоконтроллер прерываний, дегенерящий команду 11010111 (код 0хD7) - RST 2 (вектор прерывания №2)
Как сделать буфер? Ставить всякие АП или ВА86? Да хуй там!
Берем ЗАЩЕЛКУ ИР22, тактовый вход в 1 (постоянно пропускать сигнал) и... Рулим сигналом ОЕ! Вот это поворот!
Про классику жанра в виде RC цепочек даже говорить не приходится. Чем не триггер на короткий промежуток времени? Или.. МультиВИБРАТОР! Заставит вибрировать и колебаться любой сигнал, который встретится на его пути.
Это наиболее запомнившиеся моменты. Был участок где почти вся схема это ИЛИ в несколько слоев, часть из которых используется как повторитель-разветвитель.
Неужели у тебя не хватило Л - Логики что бы разместить дизайн понять что это стебный пост хотя и не лишенный смысла, так как основан на реальных фактах?
Артефакт в виде ИЛИ-НЕ на тактовом входе триппера ТМ2 мало понятен и в каких условиях он срабатывает. Расспыпуха для декодирования стоп слова состояния 580ВМ80 и еще что-то, как-то связанное с делением адресного пространства.
>у тебя не хватило Л
Хватило. Кроме того, скорее всего это ты тут недавно про езернет затирал в таком же стиле.
>Артефакт в виде ИЛИ-НЕ на тактовом входе триппера ТМ2
Я тоже так делаю, когда плисина к процу подключается как внешняя ОЗУ. Но тут надо хорошо понимать что такая схема гонку не даст в силу самой временной диаграммы по которой работает проц. В общем не для новичков всё это.
>Кроме того, скорее всего это ты тут недавно про езернет затирал в таком же стиле.
Ну да, это я >>401682. Что в этом такого? Выгонишь ссанными тряпками в загон для пердуинщиков?
Люблю контраргументы или очень граничные случаи-варианты.
Скажу больше - у меня все еще фронтофобия. Боюсь фронтов тактового сигнала у триггеров, так как вроде все понятно, а говнокод схема работает не совсем как задумывалось.
Асинхронный дизайн - вот что я люблю!
>Выгонишь ссанными тряпками
И в мыслях не было.
>а схема работает не совсем как задумывалось
А как? Триггер по фронтам работает как и должен.
Есть ли реализации 10/100 Мбит ethernet со стеком и всей хуйней, и количеством используемой RAM меньше, чем у альтеровского Triple-Speed Ethernet?
>>а схема работает не совсем как задумывалось
>А как? Триггер по фронтам работает как и должен.
Нет, так только парашные триггеры работают.
Хороший триггер должен работать не по фронтам, а по уровням.
>Хороший триггер должен работать не по фронтам, а по уровням.
>по уровням
Вот не пойму - это тонкий троллинг? Защелки - ЗЛО! Прямая широченная взлетно-посадочная полоса в Ад и Содомию. На защелках у тебя вся инфа моментов на выход пролетит, а не застрянет по пути как на флиплопах.
Увидев сообщение latch inferred при синтезе проекта - сразу с ноги бьют по ебалу за такое распиздяйство.
А что за приборы и что за компания? Просто не хочу никогда в жизни это покупать, такое говнище.
>двухступенчатые триггеры были хороши в своё время, сам их люблю.
Как ты отличишь двухступенчатый триггер от триггера с "нормальным" динамическим управлением (ну там классическая схема D-триггера из трех RS) по внешним признакам, не смотря на его схему?
мимопроходил
Нужно мерить фазу, амплитуду к шуму + немного простейших вычислений и запустить SPI\I2C слейв чтоб скормить результат дальше.
Можете примерно соориентировать с плис по требуемым ресурсам? Нужен ответ уровня тебе хватит и макса\циклона\спартана\ххх.
Да, разрядность 12б, 4 канала.
И еще вопрос. На сколько имеет смысл скукоживать сигнал логарифматором перед АЦП чтоб сэкономить разрядность чтоб потом софтверно компенировать логарифм? Это сильно усложнит требования к камню?
Опиши поподробнее задачу.
Что значит мерять фазу? Одного генератора относительно другого? Или демодулировать фазовую модуляцию?
>Есть одна частота (около 75МГц, т.е. 200+ MSPS)
Зачем 200 MSPS?
>Можете примерно соориентировать с плис по требуемым ресурсам? Нужен ответ уровня тебе хватит и макса\циклона\спартана\ххх.
Прежде надо выбрать способ решения задачи.
А почему ты их противопоставляешь триггерам с динамическим управлением? Двухступенчатые триггеры это всего лишь способ реализации, пусть и устаревший, триггеров с динамическим управлением.
>Одного генератора относительно другого
This. Но измеряемый будет скачком менять фазу через 5..50мкс.
>Зачем 200 MSPS?
Святой Найквист и апостол его Котельников. Вариант аналоговым образом сделать умножение и анализировать на низкой частоте ПЧ не подходит ввиду малой точности ака малого времени "измерения" фазы. И для этого подойдет любой SDR.
>Вариант аналоговым образом сделать умножение и анализировать на низкой частоте ПЧ не подходит ввиду малой точности ака малого времени "измерения" фазы.
С чего бы это? Квадратурные демодуляторы есть с очень широкими полосами, а тебе для
>5..50мкс.
Явно хватит полосы несколько МГц. Более того, в цифре все равно придется делать то же самое, т.е. умножать а потом фильтровать. БПФ тот же, будет тем же самым по своей сути, только избыточным. Но не столь важно какая часть обработки будет в цифре, а какая в аналоге, а как написал анон выше, способ решения задачи. Сделай для начала модель, без разницы дискретную или непрерывную, но сделай, а потом уже будут ясны требования к ПЛИС.
>Вариант аналоговым образом сделать умножение и анализировать на низкой частоте ПЧ не подходит ввиду малой точности ака малого времени "измерения" фазы.
Поясни почему не подходит. Можно вообще поставить квадратурный демодулятор и на него завести сигнал с опорного генератора, а анализировать на нулевой ПЧ.
>Но измеряемый будет скачком менять фазу через 5..50мкс.
Какая при этом будет полоса модулированного сигнала? Уж точно не больше 100 МГц.
>Святой Найквист и апостол его Котельников
Они говорят больше о полосе, а не частоте.
1 курс, хочу вкатываться в плис и схемотехнику и вот это все железное бездушное и скрытое от глаз мимокроков.
Но вот мне вопрос назрел, если я уже шарю в линуксе и сетях чуть чуть, меня уже приглашают на стажировку админом облака
И это круто, набираться опыта
А вот стажеров схемотехников разводить платки или прогерров fpga где у нас в России берут?
Может мне нахуй не рыпаться, пока не уеду в европку?
Берут. У нас в дс2 кб при универе, например. Только не удивляйся, что тебе будут платить 15-25к и при этом ебать.
Есть вариант вкатываться во всякие научные институты, но там с зряплатами жиденько. Есть в ОИЯИ несколько железячных групп, которые с фпга работают, и заплаты более-менее по сравнению с остальными.
>>426604
У вас почти одинаковые ответы, так что отвечу скопом.
Мне нужно получить точность в доли градуса, для этого придется копить максимум периодов. Сдвиг частоты вниз супергетеродинированием (готовый SDR приемник по сути) мне не нравится как раз тем что мы считаем фазу по низкой частоте и меньшему числу периодов, т.е. с меньшей точностью в условиях ограниченности окна по времени.
Про модель понял, сам начинающий питоноёб, сделаю. Интересует верхняя граница по бюджету решения.
25 после вычета. У нас студенты не оформляются, им тупо на руки выдают.
>Только не удивляйся, что тебе будут платить 15-25к и при этом ебать.
Пусть потом не удивляются, что он научившись всему и освоим параллельно язык, в один прекрасный момент скажет - бай-бай, прыщики, я устал - я мухожук в забугорную компанию, а вы держитесь тут, здоровья вам.
У нас, в ОИЯИ, в случае стажёра где-то около 30 может быть, наверное.
Именно так. Текучка нормальная из-за этого.
Сам уже думаю валить. А то успешно занимаюсь сразу всем, а зп нихуя.
>Вариант аналоговым образом сделать умножение и анализировать на низкой частоте ПЧ не подходит ввиду малой точности ака малого времени "измерения" фазы.
Цифровой ФНЧ сделай для ПЧ. Он будет усреднять тебе измерение фазы, выраженное в виде сигнала ПЧ, насколько душе угодно. Чем больше режет высокие частоты, тем сильнее усредняет.
От чего зависит точность определения фазы? От числа периодов во временном окне фнч (которое ограничено характеристикой сигнала) зависит?
Я правильно понимаю, что ПЛИС это такая микруха с кучей ног, которой можно скомандовать пропускать сигналы с одной любой ноги на любую другую и ещё и переключать их?
Как электрические связи прокидывать программно?
>ПЛИС это такая микруха с кучей ног, которой можно скомандовать пропускать сигналы с одной любой ноги на любую другую и ещё и переключать их?
Отличное определение!
>Как электрические связи прокидывать программно?
Если про то как создавать конфигурацию - руками никак. Только спецсофт от производителя ПЛИС типа того же квартуса, блевады и подобного в котором на том же Verilog или VHDL описываешь что хочешь.
Если про то как переключать в уже сконфигуренной ПЛИС - открой для себя мультиплексор и демультиплексор и триггерящиеся триггера.
>От чего зависит точность определения фазы?
От качества аналоговой части (смесителя, АЦП) в первую очередь и от точности вычислений в фильтре (разрядности арифметики). Частота среза ФНЧ выбирается по принципу "насколько быстро/медленно происходят интересующие нас изменения фазы, а где интересующие нас изменения заканчиваются, и начинаются шумовые флуктуации". Апертура идеального фильтра бесконечна, для реальности подходит принцип "чем больше, тем лучше", на практике выбирается либо такой размер, что погрешности фильтра оказываются либо ниже интересующей нас точности, либо сравнимы с другим погрешностями (АЦП, округления арифметики).
Капитан, у меня абсолютная частота среза фильтрации определяется исходным сигналом, который изменяется по времени. Вопрос в том будет ли увеличиваться точность измерения при усреднении сигнала находящегося в более высокочастотной области. По моему разумению - да. Тогда должно быть выгоднее собирать фазовый детектор на рабочей частоте сигнала (в цифре или аналоге не важно), чем после переноса спектра вниз.
>Я правильно понимаю, что ПЛИС это такая микруха с кучей ног, которой можно скомандовать пропускать сигналы с одной любой ноги на любую другую и ещё и переключать их?
>Как электрические связи прокидывать программно?
Посмотри начало здесь
https://youtu.be/FSRaHsGdTYo
здесь
https://youtu.be/HHKZroRlJR8
ну и для общего развития можешь глянуть тут
https://youtu.be/PdfDkC3Jbpk
Жаков, плиз.
>Тогда должно быть выгоднее собирать фазовый детектор на рабочей частоте сигнала (в цифре или аналоге не важно), чем после переноса спектра вниз.
Фазовый детектор — это тупо перемножитель двух сигналов, принимаемого и опорного, плюс ФНЧ. В цифре или аналоге — неважно, суть выполняемой операции одна и та же, её один хуй надо сделать перед любыми дальнейшими манипуляциями. В аналоге это гораздо дешевле, потому что быстрые АЦП с хорошими характеристиками стоят дорого. А дальше начинай в цифре фильтровать медленно меняющуюся измеренную фазу, сильнее профильтруешь — больше флуктуаций отсечёшь — точнее получишь усреднённое значение.
by Richard E Haskell, Darrin M Hanna
Хочу такую книгу найти. Она у меня раньше была, а сейчас потерялась.
Если это просто перемножитель, то как отличить амплитуду принятого сигнала от фазы?
Не понял вопроса. На вход ФД подаются два сигнала, на выходе ФД сигнал пропорциональный разности фаз входных сигналов. Все, точка. Не понимаешь, читай и считай, разбирайся, как оно работает.
АРУ нет? Тогда нужны два перемножителя, опорный+квадратурное дополнение (I, Q). Есть готовые решения в одном корпусе и даже сразу вместе с АЦП.
Да, без АРУ, амплитуду тоже учесть нужно. Ага, смотрю. Есть даже со встроенным геном.
А нет, в этой нити не писал.
если недостаточно вводных могу дополнить
Рабу Райбу, плис.
Тебе там правильно подсказали. У альтеры есть встроенные ромки, в которые можно зашить mif/hex и даже организовать к ним доступ через инсистем.
Да в том-то и проблема, что на работе уже все написано и менять нельзя, а надо только писать в уже готовые ромки.
Сейчас руцями через In-place-memory-content-editor, но хочется либо избавиться от этого тыканья мышкой, либо автоматизировать его
Ну так это значит у ромки стоит галка в настройках ip-ядра. Нельзя залезть в эти настройки и пропихнуть мифку/хекс туда или тебе вообще в проект лезть нельзя?
Та уже разобрался, не стал изворачиваться и просто сделал зашивку через тсл. Там основной прикол в том, что мифки могут меняться в зависимости от тестов и изначально я хотел какую-то неведомую хуйню. Всем спасибо!
>Опять же, тут не корка твоя виновата, а твой майндсет неудачника. Ты сам себе придумал эти правила жизни, по которым ты бесперспективная чмоня, поэтому любое твое действие в этом контексте превращается в превозмогание, таким образом ты тешишь свое эго, вот и все. Вылазь из этого чехла, иначе так всю жизнь и проебешь.
Все так. Все свое детство мать кормила супами, макаронами, а на завтрак делала бутерброд из белого хлеба, маргарина и обильно посыпала его сахаром. В школе я не ел, т.к. у меня не было денег на питание. Родители отдали в ближайшую муниципальную школу и не особо заботились о том, какие учителя, а главное ученики там учатся. В итоге, я попал в школу, где процентов 90 были дети из неблагополучных семей, а некоторые старшеклассники уже успели отсидеть по малолетке за разбой и сопротивление, тогда еще, милиции. В школу постоянно приезжали мутные типы на тонированных жигулях или разбитых бмв и запрягали старшеклассников, чтобы они терроризировали школьников и вымогали у них деньги на "грев". Классы были переполнены. 30-35 человек в классе - обычное дело. Учителя никак не контролировали дисциплину в классе и либо забивали на уроки, либо бубнили себе под нос материал, а потом весело ставили трояки даже самым отбитым.
Я однажды пожаловался мамке, что меня бьют и травят в школе, а учиться там и вовсе невозможно. На что она сказал, что "это везде так, нужно потерпеть пока не выпустишься из школы". С самого первого класса у меня начались проблемы с домашними заданиями. Мамка, вместо того, чтобы разобраться в чем причина низкой успеваемости, просто решала домашние задания за меня.
А уже в 5-7 классах начала меня избивать, когда я не мог понять какую-нибудь формулу. Заставляла учить математику "как стихи" и била по голове кухонной утварью, да так, что у меня кровь из носа шла, в голове темнело, и болела голова.
А так да, ты абсолютно прав - "кто на что учился". Ведь тебе никто не мешал, а даже всячески помогал, закончить школу с хорошими отметками, поступить в приличный ВУЗ и устроиться в хорошую компанию. Не нужно жаловаться на какие-то там мелочи.
>Опять же, тут не корка твоя виновата, а твой майндсет неудачника. Ты сам себе придумал эти правила жизни, по которым ты бесперспективная чмоня, поэтому любое твое действие в этом контексте превращается в превозмогание, таким образом ты тешишь свое эго, вот и все. Вылазь из этого чехла, иначе так всю жизнь и проебешь.
Все так. Все свое детство мать кормила супами, макаронами, а на завтрак делала бутерброд из белого хлеба, маргарина и обильно посыпала его сахаром. В школе я не ел, т.к. у меня не было денег на питание. Родители отдали в ближайшую муниципальную школу и не особо заботились о том, какие учителя, а главное ученики там учатся. В итоге, я попал в школу, где процентов 90 были дети из неблагополучных семей, а некоторые старшеклассники уже успели отсидеть по малолетке за разбой и сопротивление, тогда еще, милиции. В школу постоянно приезжали мутные типы на тонированных жигулях или разбитых бмв и запрягали старшеклассников, чтобы они терроризировали школьников и вымогали у них деньги на "грев". Классы были переполнены. 30-35 человек в классе - обычное дело. Учителя никак не контролировали дисциплину в классе и либо забивали на уроки, либо бубнили себе под нос материал, а потом весело ставили трояки даже самым отбитым.
Я однажды пожаловался мамке, что меня бьют и травят в школе, а учиться там и вовсе невозможно. На что она сказал, что "это везде так, нужно потерпеть пока не выпустишься из школы". С самого первого класса у меня начались проблемы с домашними заданиями. Мамка, вместо того, чтобы разобраться в чем причина низкой успеваемости, просто решала домашние задания за меня.
А уже в 5-7 классах начала меня избивать, когда я не мог понять какую-нибудь формулу. Заставляла учить математику "как стихи" и била по голове кухонной утварью, да так, что у меня кровь из носа шла, в голове темнело, и болела голова.
А так да, ты абсолютно прав - "кто на что учился". Ведь тебе никто не мешал, а даже всячески помогал, закончить школу с хорошими отметками, поступить в приличный ВУЗ и устроиться в хорошую компанию. Не нужно жаловаться на какие-то там мелочи.
на первых курсах тоже денег не было, тратил на еду 500р в неделю. Не то чтобы я хочу повторять этот опыт, но если придется выбирать между питаться макаронами всю неделю или сидеть дома и ныть, снова выберу первое
если диф, то что ему будет? Главное между парами землю сделай
Да, gth на xilinx ultrascale.
Куда делся FPGA Board Store? https://aliexpress.com/store/620372
Магаз есть, а сочных платок уже нет. Как так то?
PSoC (Programmable System-on-Chip) - это что-то среднее между ПЛИС и микроконтроллером?
Это когда процессор, модем, GPS приёмник и прочая переферия находятся в одном чипе, снаружи только память, в которой программа и соединительные кабеля к переферии. Если проще, то мозг любого сотового - SoC.
Почитал тут про SoC:
https://ru.wikipedia.org/wiki/Система_на_кристалле#Разработка_систем_на_кристалле
>Для того, чтобы удостовериться в правильной работе созданной комбинации блоков, драйверы и программу загружают в эмулятор аппаратной части (микросхему с программируемыми цепями, FPGA).
Получается, что любой разработчик FPGA может перекатится в разработчики цифровых микросхем и процессоров(как и наоборот)?
SoC имеет строго внешнюю программную память. PSoC может имеет встроенную программную память?
>These chips include a CPU core and mixed-signal arrays of configurable integrated analog and digital peripherals.
Это МК + FPGA
Методичка, при помощи которой следует писать тестбенчи для модулей на HDL. Нацелена на то, чтобы меньше думать, больше действовать по шаблону и вылавливать в результате больше багов. С задачей справляются неплохо.
720/768/1080p@60hz со входа на 2/3/4/5/6/10/12/15 выходов с таким же разрешением и частотой. Фишка в дублировании кадров, каждый следующий пишется в буфер следующего выхода. Соответственно получается возможность выводить с одного устройства (малинки) картинку на кучу мониторов пусть и с меньшим фпс.
Какую девборду мне посмотреть и вообще какие тут подводные камни?
То, что это делается тупо разветвлением сигналов на несколько выходов. Единственная проблема от нескольких мониторов - это едид и разный набор разрешений в нем, и скалить изображение под каждый уже задача достойная плисины, но это не твой случай
А не проще разрезать картинку на 15 мониторов и получить полную частоту, чем так заморачиваться?
У dvi-s/hdmi1.2 предел 1920x1200@60hz на скорости 5Гбит.
Hdmi посвежее поддерживает 4к но мне этого мало (хотя тут существуют готовые решения) Hdmi2.1 с 8к фантастика.
Пк с таким количеством выходов тоже собрать не просто. Самая простая видеокарта на 3 монитора 1500р. Плюс майнинговая матплата и ведро рейзеров, которые совершенно не собираются дешеветь несмотря на потерю актуальности.
Все это выходит дороговато, когда 20" мониторы отдают по 300р.
Впрочем можно и не заморачиватся видеовходом, для начала хватит и простого открытия .bmp с флешки или как вариант эмуляции usb-флешки и открытия файлов с нее.
Мне в этой схеме интереснее всего, осилит ли малинка перерисовавать фреймбуфер заново каждый кадр, причём чем-то осмысленным, и не тупить.
>Впрочем можно и не заморачиватся видеовходом
Всего-то видеоинтерфейс. DVI так вообще не сложнее VGA.
>для начала хватит и простого открытия .bmp с флешки
А это уже usb-интерфейс и процессор с поднятой на нём операционной системой, имеющей поддержку usb и файловых систем.
Очень информативно.
эй.
а эти плис они многоразовые?
можно запиндырить туды чева,
потом стереть,
а потом чево нового засунуть?
Несколько тысяч раз. А если в энергозависимую память, ту которая хранит до сброса питания - бесконечно.
>а эти плис они многоразовые?
Ниет. Одноразовое говно. Не слушай тех кто пишут что конфигурация хранится во внешней памяти. Это полнейший бред!!
Они ОДНОразовые! Может повезет и найдешь пикрил и сможешь ультрафиолетом стереть конфигурацию и накатить новою. Большинство же изготовлено по методу пережигаемых перемычек, наподобие тех, что используются в 155РЕ3 и ПЗУ типа 556РТ4 и им подобных.
Используй лучше GAL и PAL. Они больше доставляют.
Вряд ли. Заочно знаком. Вот от чего пригорело - так это каждый ВЫВОД схемы - одна макроячейка.
То есть если ее использовать как тупой повторитель, у которого 8 входов и 8 выходов сразу проебется 8 ЛЕ.
а чо на них можно зделать таково прекольново
например микрокалькулятор чтоле
>Плисаны, почему так происходит
Всё работает правильно.
>и как с этим жить?
Начать вкат не тупо с изучения языка, а прочесть сперва учебник по цифровой схемотехнике.
Причем здесь вообще схемотехника, когда вопрос про работу симулятора?
Есть временная диаграмма на которой видно, что у сигналов абсолютно одинаковые фронты, есть два одинаковых триггера, которые описывает олвейс-блок. Так почему на выходе совершенно разный результат?
Понятно, что ИРЛ никто не будет выставлять сигнал четко по фронту клока, я просто хочу разобраться как симулятор обрабатывает разные виды присваиваний. Нигде про это не пишут.
Раньше я считал, что если поставить маркер по фронту клока в таблице значений слева будут данные, которые триггер защелкнул и их можно забирать уже на следующем такте, но в моём примере это не так.
> как с этим жить?
Прочитать про неблокирующее и блокирующее присваивание и жить себе спокойно дальше.
Челик-то использует блокирующие и неблокирующие присваивания, то есть прочитать он про них где-то как-то прочитал.
Но его экзистенциальный кризис возник из-за того, что он не понимает, нахуя ему дано то и другое, ведь оно его только путает и не несёт никакой видимой пользы.
Вид присваивания влияет на очередность этого самого присваивания внутри одного процедурного блока. В моём примере вообще разные initial-блоки и разные регистры. Почему вообще возникает эта разница?
Кажется я наконец разобрался как это работает. В случае неблокирующего присваивания симулятор вставляет Zero Delay. Но какого хуя эта Zero Delay не отображается на временной диаграмме? Могли же на диаграмме где поставлен маркер у signal_b и signal_c отобразить значение 0 в таблице и у меня бы никогда не возникло такой непонятки. Видимо проблема в структуре данных временной диаграмме.
Хули смешного?
>была единственная адекватная попытка объяснить
Блокирующие / неблокирующие присвоения обладают своей спецификой, но глобально здесь дело в том, что во время активного фронта тактового сигнала происходит асинхронная смена сигналов a, b, c. Т.е. по фронту clk как бы захватывается фронт асинхронного сигнала, симулятор "не знает" как быть в этом случае и захватывает либо 1 либо 0, как карта ляжет, на самом деле это всё объясняется внутренней логикой работы симулятора и зависит от очерёдности обработки операций, можешь погуглиить про дельта-цикл. Такие ситуации в стандарте не прописаны, а значит каждый симулятор это делает по своему. Если промоделировать в другом симуляторе результат может быть другим. Потому таких конструкций лучше избегать.
Надеюсь понятно объяснил.
Понятно, то есть нужно всегда выставлять значения сигналов перед фронтом клока, тогда вообще не будет значения какой тип присваивания использован при формировании сигнала.
А почему в тестбенчах большинство разрабов используют блокирующие присваивания?
>нужно всегда выставлять значения сигналов перед фронтом клока
Не совсем так. Нужно делать это синхронно, т.е. через always @(posedge clk).
>тогда вообще не будет значения какой тип присваивания использован при формировании сигнала
Говорю же, с типами присвоений есть свои нюансы. Где-то на ютубе попадался чел, он как раз долго и нудно, но подробно рассказывал о типах присвоения.
>А почему в тестбенчах большинство разрабов используют блокирующие присваивания?
Необязательно. Просто блокирующее присвоение в большей степени подходят под регистровые передачи.
Лет восемь валялась горсть EPM3032 от игровых автоматов с залоченным JTAG. Всё рука не поднималась выбросить. И вот недавно решил очередной раз погуглить на тему разлочки. И снова меня привело на zx-pk и оказалось, что тамошний чувак, спустя 10 лет, таки совладал с ними - https://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld)/page13.html Цепкими лапками молниеносно вытравил плату, спаял, подключил бластер и 10.5В, запустил Кряктус и трясущимися руками, предварительно нажав кнопку, жмакнул на Start, и.... ОНО СТЕРЛОСЬ!!!
Пропускная способность в одну сторону требуется около 13 мбит (трафик в обе стороны примерно одинаковый).
Частота кодеков -48к, плюс кратная частота х512 (cs4244 или подобное)
Я так понимаю, нужно немного локальной памяти к плису, чтоб аккумулировать там ввод/вывод кодеков, и возможность быстренько их гонять по DMA с пека.
Пока переписываюсь с магазинами, у которых нет в списках рашки, чтоб может быть купить более мощную плату за тыщи баксов ( https://www2.hdl.co.jp/en/ft600-series-m/edx-009-m1.html ) , заказал с алиговна такое:
USB 3,0 (CYUSB3014) Artix-7(XC7A35T) макетная плата Параметры:
Встроенный чип USB 3,0: Cypress's CYUSB3014;
Бортовой осциллятор для чипа USB 3,0: 19,2 МГц;
CYUSB3014 ядро: ARM926EJ @ 200 МГц;
Внутренняя память CYUSB3014: 512KB S RAM;
Встроенная флеш-память SPI для CYUSB3014: W25Q64, 8 Мб;
Бортовой 5,0 V-> 3,3 V DC/DC: м/с, MP2315;
Бортовой 3,3 V-> 1,2 V, 1,5 V, 1,8 V DC/DC: на полу, NCP1529;
Макетная плата обеспечивает 3 режима загрузки, выбор переходников, для управления загрузкой CYUSB3014 от USB или внешней вспышки SPI;
Макетная плата использует разъем USB 3,0 Type-B;
Бортовой FPGA: XC7A35T-1FTG256C;
Бортовой внешний кристалл FPGA, частота: 50 МГц;
Встроенный 16 Мб байт для кода настройки пользователя: MT28QL128A SPI Flash;
Встроенный 512 Мб микрон DDR3: MT41K256M16TW-107:P;
Макетная плата, размер печатной платы: 83,8 мм x 83,8 мм;
По умолчанию источник питания для доски: 1A @ 5V DC, DC заголовок Тип: DC-050, 5,5 мм x 2,1 мм;
Вопрос опытному анону, хватит ли этой платы, или надо искать что-то получше?
Осилю ли я программування (полный нуб в плисах, но вообще соображаю), и за какое время?
Нужен ли яйцелограф (если да, то какой)?
Важна ли длина проводки к кодекам, можно наговнякать в макетку как обычно, или могут возникнуть нюансы?
Пропускная способность в одну сторону требуется около 13 мбит (трафик в обе стороны примерно одинаковый).
Частота кодеков -48к, плюс кратная частота х512 (cs4244 или подобное)
Я так понимаю, нужно немного локальной памяти к плису, чтоб аккумулировать там ввод/вывод кодеков, и возможность быстренько их гонять по DMA с пека.
Пока переписываюсь с магазинами, у которых нет в списках рашки, чтоб может быть купить более мощную плату за тыщи баксов ( https://www2.hdl.co.jp/en/ft600-series-m/edx-009-m1.html ) , заказал с алиговна такое:
USB 3,0 (CYUSB3014) Artix-7(XC7A35T) макетная плата Параметры:
Встроенный чип USB 3,0: Cypress's CYUSB3014;
Бортовой осциллятор для чипа USB 3,0: 19,2 МГц;
CYUSB3014 ядро: ARM926EJ @ 200 МГц;
Внутренняя память CYUSB3014: 512KB S RAM;
Встроенная флеш-память SPI для CYUSB3014: W25Q64, 8 Мб;
Бортовой 5,0 V-> 3,3 V DC/DC: м/с, MP2315;
Бортовой 3,3 V-> 1,2 V, 1,5 V, 1,8 V DC/DC: на полу, NCP1529;
Макетная плата обеспечивает 3 режима загрузки, выбор переходников, для управления загрузкой CYUSB3014 от USB или внешней вспышки SPI;
Макетная плата использует разъем USB 3,0 Type-B;
Бортовой FPGA: XC7A35T-1FTG256C;
Бортовой внешний кристалл FPGA, частота: 50 МГц;
Встроенный 16 Мб байт для кода настройки пользователя: MT28QL128A SPI Flash;
Встроенный 512 Мб микрон DDR3: MT41K256M16TW-107:P;
Макетная плата, размер печатной платы: 83,8 мм x 83,8 мм;
По умолчанию источник питания для доски: 1A @ 5V DC, DC заголовок Тип: DC-050, 5,5 мм x 2,1 мм;
Вопрос опытному анону, хватит ли этой платы, или надо искать что-то получше?
Осилю ли я программування (полный нуб в плисах, но вообще соображаю), и за какое время?
Нужен ли яйцелограф (если да, то какой)?
Важна ли длина проводки к кодекам, можно наговнякать в макетку как обычно, или могут возникнуть нюансы?
>>398380
Сразу возник вопрос, бестпрактис софт уже поддерживает SystemVerilog, или придется reg/wire ?
Надо вставлять буфер из библиотек альтеры, у которого будут один выход и два входа (сигнал и ОЕ).
https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_low_level.pdf
А просто присвоить output_port <= 1'bz , где к регистру outpot_port подключены IO пины?
>>нужно всегда выставлять значения сигналов перед фронтом клока
>Не совсем так. Нужно делать это синхронно, т.е. через always @(posedge clk).
пиздец
даже я - погромист знаю что надо перед фронтом.
здаеццо мне что этот ваш верилог это шняга уровня ПыХаПы супротив Ассемблера
А, сорян, спутал с другой хуйнёй. Тогда всё норм, просто пиши по гайдлайнам, синтезатор всё синтезирует ок.
>я - погромист
Оно и видно. Специально для долбоёбов.
В плис используются триггеры с динамическим управлением, т.е. по активному фронту триггер запоминает сигнал со входа Д и выдаёт его на выход Ку, а это значит, что выход триггера меняется сразу после фронта. И если надо выставлять сигналы вручную, но синхронно надо их выставлять с учётом вышесказанного или незаморачиваться и применять always @(posedge clk)
Мой нубский взгляд на это такой- ресивер должен тригериться по фронту старт-бита, затем с некоторой частотой, близкой к -10% получать 8 бит, после чего значение должно быть доступно в другом модуле.
>как назвается такая ситуация
Да так и называется синхронизация тактовых домнов.
>ужно получить данные в модуле с другой частотой (выше в разы)
Загружаешь 8 бит в сдвиговый регистр, на каждом сдвиге инкрементируешь счётчик, как счётчик досчитал, выставляешь флаг в свой быстрый модуль. В быстром модуле этот флаг пересинхронизируешь на его частоту, просто пропускаешь сигнал через Д-триггер. И когда на выходе этого Д-триггера появляется 1-ца - значит в сдвиговом регистре уже всё загружено и можно от туда считывать. Остаётся продумать механизм сброса флага, но это попробуй сам.
Я пока пытаюсь прочувствовать, как при этом избегается неопределенное состояние?
Ну так флаг выставляется после того как регистр будет заполнен, неопределённое состояние исключено.
Как правильно это сделать?
1) Синхронная логика с одним клоком, который в раз 10 выше самого быстрого клока на параллельном интерфейсе и конечный автомат внутри always (posedge clk)
2) Завести 2 клока с обоих интерфейсов и по фронтам крутить в логику внутри always
>Нужно сделать FIFO
>Как правильно это сделать?
Взять готовый блок от производителя плисы.
Если этот вариант не подходит, то надо взять простую двухпортовую память и написать логику для записи в домене клока входных данных, а логику для чтения -- в домене клока выходных данных, с передачей флагов и указателей между доменами.
Для передачи указателей можно использовать код грея.
Походу не ошибся с платой, збс контроллер CYUSB3014, охуеть вообще. Так-то даже fpga понадобится на полшишечки для мультиплексинга разве что, основное можно в виде программы настрогать.
>Если этот вариант не подходит
Это очевидная домашка по схемотехнике. Кому ещё надо FIFO писать? Я в прошлом треде на точно такой же вопрос уже даже отвечал — >>394543 →
Ого! Код Грея для того, чтобы при асинхронном доступе к указателям головы/хвоста фифо не было ошибки более, чем на 1 разряд?
А как полностью избежать рассинхронизации в этом месте?
>Вопрос по прежнему без ответа. Какой из двух вариантов правильнее и почему?
Оба говно потому что аксиома Эскобара первый не будет надёжно работать при неудачном совпадении фаз Луны клоков, а второй не описывает приблизительно ничего.
>Код Грея для того, чтобы при асинхронном доступе к указателям головы/хвоста фифо не было ошибки более, чем на 1 разряд?
Код Грея для того, чтобы передаваемое из другого домена значение указателя было либо правильное, либо предыдущее. И не возникало ситуации, когда надо поменять несколько битов, часть успела поменяться, часть нет, в итоге указатель указывает хуй знает куда.
О! Я теперь понял почему вариант асинхронного фифо у меня не работал. Мне фифо для подключения АЦП к процессору нужно.
А интерконнектом никак? Я уже забыл, это старое или актуальное ядро?
Там axi, или старье какое-то?
я хз вообще, пока опыта нет, просто читаю всякие документы.
Интерконнекту тоже какой-то последовательный интерфейс нужен, под который надо подстраиваться, как я понел.
Интерконнект это как usb hub если в двух словах.
Подстраиваться так или иначе придется, если только не брать готовое.
В ise был генератор регистров на axi4- lite. Я его использовал для этих целей.
создаёшь axi lite peripheral визардом. Он тебя спросит сколько регистров заданной разрядности (32 бита) ты хочешь создать. Эти регистры будут сделаны на триггерах плис, их можно читать и писать микроблейзом как любую axi-периферию, к ним можно дописывать другую логику.
Спасибо. Потихоньку картина мира выстраивается
Уроки кончились, читай даташиты.
я типо малюю схему типо щщоччик с переполнением на 62,
а оно само применяет к схеме всякое кардано,
дизъйюнктивно нормальная форма,
чтоб только или-не,
и отэто самое прошивает?
Есть разные стили, твой один из.
Можно вставлять блоки в текстовом редакторе. Можно и в графическом в последние годы.
Есть и арифметика с логикой как в программировании.
Чтобы именно счёт до 62 сделать, нужно будет счётчик 6-битный объявить и сбрасывать по сигналу сравнения с константой. То есть просто не выйдет, надо вручную.
Обычно сначала объявляешь регистры, потом комбинаторную логику (то есть арифметику и логику и или не над этими регистрами), потом какие сигналы в какой регистр защелкиваются на следующем такте.
Отдельно объявляются входные и выходные сигналы.
Все, модуль готов. Дальше его либо в другие модули вставлять, либо к физическим пинам на ПЛИС назначать.
Можно и на питоне это все делать (litex на гитхабе), очень рекомендую. Там по сути метапрограммирование с экспортом в верилог.
главное отличие от того, что ты описал — функции реализуются не через "или-не", а через таблицы логических функций (LUT). Они программируемые, таблица с двумя входами и одним выходом может быть функцией "или-не", а может быть любой другой функцией двух логических переменных. А ещё они могут быть на большее число входов, для экономии связей.
Ещё там есть триггеры, и они делаются не из кучи "или-не", а сразу в кремнии. Каждый такт триггер отправляет значение на входы LUT, на выходе другой триггер получает посчитанное значение и сохраняет его до следующего такта.
пикрандом отклеился
http://iverilog.icarus.com/
Либо litex который я предгал.
Оба могут генерировать файлы с временными диаграммами, которые можно открыть через gtkwave.
Для litex нужен питон, для остального Линукс.
Нарисовать точно не выйдет, все из командной строки.
Что касается синтеза, то все плисы и их форматы файлов наглухо засекречены.
Команда реверс инженеров кое-что смогла сделать впрочем, с некоторыми моделями.
https://symbiflow.github.io/getting-started.html
Litex с migen то ещё говнище. Они полностью проебали модульность. Все эти бесконечные self.sync =+ и self.comb=+ без которых твоя логика без всяких предупреждений не реализуется.
Если последовательность статична - зачем автомат? выгружай из ПЗУ. Если не сильно длинная, то чем сдвиговый регистр плох?
Если аки - так это уже интерфейсы, тут автоматы во все поля.
Не понял, что именно тебе удалось сделать. Объясни по-подробней плиз.
мимопроходил, но увидел пост на нулевой и заинтересовался
Вот это там правда чуть наоборот клок, но это очевидным образом исправлено.
На картинке загогулина константная, просто выверял такты там.
Ето мои первые потуги в Verilog'e прост.
Всё это как водится реклама, на железе ещё не опробовал.
Первой пришла плата с FT600, делаю на ней. Но это оверпрайс яебанею, 80к за штуку, ну или где-то заказывать урезанную версию после разработки прототипа А я сам делаю потому что на фрилансе чет туго делают, дохуя лаве зря потратил и так. А мне нужно будет как минимум 3 девайса изготовить. Так что с FX3 тоже
FT600 стоит 4 доллара, FX3 стоит 10 долларов.
Рекомендую взять любую отладку с FMC разъемом + UMFT600X-B
Меня все интересует. Но больше интересует конечный результат, причем желательно на компонентах с военной приемкой. И не только для FPGA, может DSP окажется целесообразнее, хотя их я ни разу не трогал. Пока не к спеху, эта работа пока отпала, но весьма вероятно что к такому придется вернуться.
>>434977
Это не то, всего лишь один из нескольких способов. А попробуй еще определить когда целесообразнее применять один способ, а когда другой? И там подобных нюансов полно.
>на компонентах с военной приемкой
>эта работа пока отпала
Вот и хорошо. Опять у мартыхачеров будет тяжёлая ночь.
Может есть анончики, которые умеют в ней хорошо работать?
Нажми правой кнопкой мыши на ядро и выбери в меню генерировать шаблон для вставки.
Точное название не помню конечно.
Вот такое есть
Спасибо большое, анон, что откликнулся
Подскажи еще, пожалуйста, в чем можно моделировать вообще весь процесс? Например задать сигнал с шумом, потом пропустить его через схему и посмотреть результат?
Там сверху над списком файлов есть переключатель simulation. Я симулировал через встроенный isim. Есть ещё modelSim, это отдельная программа, которая интегрируется с ise. Вроде как мощнее.
Для стимуляции нужно сгенерировать и дописать специальный vhdl или Verilog файл, который называют test bench, в котором будет подставлен тестируемый модуль, сгенерированы нужные сигналы и в котором будут отсутствовать внешние сигналы.
Когда переключишь simulation, внизу должен появиться пункт сгенерировать шаблон для симуляции.
В файле симуляции другой набор допустимого, там можно много того, что нельзя при синтезе, например вызывать функцию синус. Но сигналы все равно придется писать руками.
Советую гуглить примеры и разбираться.
Там ещё есть кнопочка с жёлтой лампочкой откуда можешь копипастить примеры в том числе для симуляции.
На рисунках мой старый пример для общей картины. Модуль нужен был чтобы уменьшить частоту шины за счёт удвоения ее длины. Вряд ли это хороший модуль, просто для примера.
Можно симулировать через командную строку в Icarus Verilog и litex, но там и проект должен быть на верилоге или питоне соответственно. Там на выходе файлы временных диаграмм, которые можно смотреть через gtkwave.
Я перешёл на это когда в конец надоел глючный ise и долбаный vhdl. Verilog проще и понятнее, а питон тем более. Причем питон никаких ограничений на производительность не накладывает, потому что используется как макроязык, как обёртка для верилога.
Все-таки с FX3 плата попроще и там практически лишнего ничего нет, кроме памяти.
Ну а пикрил няша качественная, специально взял по максимуму, логических ячей дохуя, можно виртуальный синт запилить там заодно, если делать совсем нехуй будет
Алсо сейчас помигал светодиодоме, затактировавшись от FT, так оказалось эта сучка отдыхает, если коннекта нет, часы не идут. Может wakeup задействовать..
в топ- модуле
input RXF_N
module2 m( RXF_N);
в module2:
input RXF_N
always_ff ...
if (RXF_N)
так вот эта хуета всегда тру (RXF_N от FT600, active low), а если в топе написать
assign xxx = RXF_N;
где xxx- реальный пин, то всё работает как надо.
В чем подвох, м?
Текстовое описание не православно. Только блоки, только хардкор. Хотя вивада это пиздец конечно.
Перепиши на чистом верилоге. Когда я пробовал sv для синтеза, то по итогу решил, что нахуй пока это счастье.
Ты видимо написал такое условие, что этот сигнал ни на что не влияет.
Типа если сигнал 0 записать 1, если 1 - тоже записать 1.
Тогда это условие не начинало бы вести себя по-другому от добавления выходного порта и точно так же оптимизировалось бы в константу.
Переписал, вроде пока стало получше.
>Пропускная способность в одну сторону требуется около 13 мбит
И нахуя тогда тебе usb3?
Ethernet хватит за глаза.
>Все-таки с FX3 плата попроще и там практически лишнего ничего нет, кроме памяти.
есь две ещи, про которые я вычитал на дваче
- FX3 плата
- баофенг
обе хрени мне не нужны, но я рештльчто покупаю.
Где брать fx3? А то что-то даже на алике по 5к стоит, а на сайте производителя написано 10$.
джиттер видимо
Что за программа позволяет мерять пинг с такой точностью?
Так у него на скриншоте все видно. ARPING это. Только это ARP, с обычным пингом наверняка будет заметно больше, если конечно он вдруг реализовал ICMP. Но это я так, как диванный теоретик.
На винде с полным стэком будет хуй.
В ядре линупса и не такое возможно.
Один хуй из 100мгц я много не высру в момент, поэтому минимальный пакет будет израсходован впустую
Ну это просто контрпродуктивно - что-то там намодохать в пользовательских файлах и ничего не сказать, чтоб юзер потом полдня искал, а что же не так. Интерпрайз солюшен 24/7. Если бы это не был хоббипроджект на бесплатной версии, я бы имел полное право выставить счёт за потерянное время или как минимум пригласить представителя компании на serious talk.
>>436593
Потом покажу.
>Ну это просто контрпродуктивно - что-то там намодохать в пользовательских файлах и ничего не сказать, чтоб юзер потом полдня искал, а что же не так. Интерпрайз солюшен 24/7. Если бы это не был хоббипроджект на бесплатной версии, я бы имел полное право выставить счёт за потерянное время или как минимум пригласить представителя компании на serious talk.
Ты сам определил в проекте констрейнт факл как таргет, сам где-то мышкой натыкал, а потом сам нажал ctrl+s. Так что оплачивал бы ты зря потраченное время представителя компании.
Такого нет в природе. Для ядер только дата шиты + есть обычно example project к каждому ядру. У меня есть слитые архивы курсов xilinx academy, там побольше инфы, но все равно все не то. Только экспериментирование и практика, больше никак.
Даже fifo generator ip core делается из шифт-регистров в частности, так что ты хуй.
Ты о чем? Такое вообще может использоваться описания памяти, чтобы не пихать IP блоки каждый раз. Описываешь однопортовую или двухпортовую память с таким регистром, а синтезатор почти наверняка сделает это на блочной памяти. Если ты хочешь трехпортовую память или что-то еще и получаешь в результате неожиданные результаты - то сам дурак.
мимо
аноны я придумал идею для майнера
что если на одну плату поместить много много FPGA и написать для них прошивку майнера и получится очень мощный майнер битков
как вам идея??
В анусе твоём будет congestion, прокачиватель мамкин.
Младший Intel Cyclone 3/4/5 за косарь с алика.
Я про то, что он какие-то шины на регистрах приплел. Я не спорю, что fifo на регистрах делается, таблетки прими, шизоид.
Тогда любую от terasic какая нравится.
[Common 17-55] 'set_property' expects at least one object.
на строку
set_property IOSTANDARD LVCMOS33 [get_ports TX0}]
set_property IOSTANDARD LVCMOS33 [get_ports RX0}]
потом выдает
the following two ports in this bank have conflicting VCCOs:
RX0 (LVCMOS18, requiring VCCO=1.800) and CDRESET (LVCMOS33, requiring VCCO=3.300)
потому что в первый раз не наложила констрейнт, уже джва часа ябусь, в чем дело? Однако номер банка присвоился, значит констрейнт с пином наложился. Я уже даже пробовал переназначать эти несчастные RX0 и TX0 на пины, которые юзались раньше - всё тщетно.
Бле }, ебаная скобка.
В Tcl это не синтаксическая ошибка. К разработчикам вивады в этом месте не должно быть претензий, кроме разве того что выбрали стандартный в этой области Tcl.
Во-во, у вас там ошибка, ебитес.
Хуя ты порвался. Я ушел из ПЛИС в веб, но не работаю, если уж тебе так это важно. Спрашивай ещё, расскажу о своей личной жизни, о том на что дрочу и прочее.
А вот ебанутая логика всего зайлинкс софта это не отдельный случай, это система. Оправдать ее можно разве что закрытостью, ориентацией на штучную разработку, чтобы никто не пытался популяризовать.
На вопрос то ответь, о уважаемый знаток низкоуровневого кода? Объясни несчастной безработной веб макаке, почему смайлик не требует предупреждения?
Я так то не ебануый учить очередной недоязык когда есть питон. Но если ты шаришь, молодец.
Нахуй иди.
Может быть и стоило выдавать предупреждение. Но это совершенно точно не синтаксическая ошибка. Возможно разработчикам вивады в процедуре get_ports действительно стоило сделать вывод предупреждения, а может стоит самому проверять что возвращает get_ports.
>учить очередной недоязык
Не уверен на счет того что Tcl знает анон отвечавший тебе ранее, но в Tcl вообще ничего нет кроме двух видов скобок, кавычек и $ для подстановки значения переменной, поэтому учить там нечего.
Контроллеры изучил, ПЛИС изучил а до веба все руки не доходили.
ПЛИС забросил, нет ни плат, ни желания что-то делать.
Через полгода-год кончатся деньги, может начну шевелиться.
Слышал пару месяцев назад что собираются.
https://youtu.be/iMfNlCZPsBQ
https://www.nytimes.com/2020/10/27/technology/amd-xilinx-35-billion-stock-deal.html
Только наверное не месяцев, а недель, судя по новостям.
>Производитель чипов AMD договорился о крупнейшем приобретении в своей истории — покупке конкурента Xilinx за $35 млрд.
Мда, вот тебе и Форбс.
Как я понимаю, AMD решили бороться за рынок серверов, имеется в виду конкуренция там.
Скажите, пожалуйста, пикрил йоба нормас для новичка в ПЛИСировании?
Рекомендую циклон iv как минимум, хоть он и в 3 раза дороже.
CPLD очень ограничен по сравнению с FPGA.
А циклон ii который был в похожем исполнении у меня за 15$, как оказалось, уже не поддерживается новым софтом.
Их стоит брать, если ничего серьезного нет цели делать. Только обычные регистры, логика, частоты строго до 100 МГц. Например логический анализатор можно сделать, какой-нибудь адаптер для sdram памяти или дисплея, или несколько ШИМ, все что очень простое по сути.
А если хочешь продвинутые блоки вроде синтезатора частот, порты с поддержкой lvds, и при этом не ебаться с софтом, лучше взять старшего.
Вообще места в ПЛИС всегда не хватает, только захочешь что-нибудь посерьёзнее светодиодом помогать, там протокол какой-нибудь типа ethernet, выч блоков несколько, опа и уже 30% на младших моделях занято.
А больше 70-80 % все равно заполнить нельзя просто так без извращений типа ручной расстановки, синтез на этапе расстановки пошлет тебя нахуй со словами: извини, брат, сложна:)
Так что сколько ни купишь места, все равно будет мало.
Можешь брать дешёвую, но на многое не рассчитывай.
>А циклон ii который был в похожем исполнении у меня за 15$, как оказалось, уже не поддерживается новым софтом.
Уже как несколько лет и Циклон 4 считается устаревшим. Последняя версия Квартуса, которая его поддерживала, если правильно помню, 16-ая.
>>437517
>места в ПЛИС всегда не хватает
У меня подгарает с другого. Почему в ПЛИС не вставляют периферию, как по типу с МК? Понятное дело всякие счётчики и таймеры не нужны, но могли бы хотя бы PHY стандартных протоколов засунуть, езернет там, усб, уарт, цапы/ацп, и всё такое прочее? Как бы сильно жизнь упростилась, не надо было бы с внешней обвязкой ебаться.
> Почему в ПЛИС не вставляют периферию, как по типу с МК? Понятное дело всякие счётчики и таймеры не нужны, но могли бы хотя бы PHY стандартных протоколов засунуть, езернет там, усб, уарт, цапы/ацп, и всё такое прочее?
Думаю ты сам знаешь ответы, но я перечислю что сам знаю.
На старших есть и phy для usb3.0(super speed)/sata/PCIe, и АЦП какое-то до 1 МГц. Точно знаю что в artix7 есть АЦП, а в kintex и virtex гигабитные передатчики.
Ноги где это поддерживается ничего больше не могут.
На xilinx ultrascale серии, которой несколько лет всего, вроде как собирались ставить быстрое АЦП для цос. Стоит бешеных бабок наверное.
Я лично ебался с GTX передатчиками на работе наверное целый год, пытаясь реализовать jesd204b, который у АЦП современных, когда их айпи блок ещё не взломали. Сейчас не знаю, может уже есть кряк и на него.
Для ethernet все равно нужен трансформатор вроде. UART ты наверное для кучи добавил, для него phy не нужен и так.
USB 2.0 (high speed) phy, хз, почему нигде не встроено. Full speed можно и так реализовать ногодрыгом. На гитхабе есть проект, но я его так и не попробовал.
Ну а стеки протоколов продаются в виде ip.
Ого. Огромное спасибо за ответ! :)
Тогда подумаю что брать. В принципе, ничего архимега сложного пока не собирался пилить - максимум, выплюнуть что-то по VGA или, таки да, запилить генератор ШИМ на несколько каналов.
>На старших есть и phy для usb3.0(super speed)/sata/PCIe
Может я и ошибаюсь, но все эти высокоскоростные транисиверы поддерживают эти интерфейсы на уровне протоколов, напряжения всё равно нужно согласовывать внешней обвязкой.
И зачем всякие дорогущие АЦП, можно же и по проще вставить.
>Для ethernet все равно нужен трансформатор вроде
Да, но на него напряжение подаётся тоже не 3,3.
>UART ты наверное для кучи добавил
Имел в виду RS-232/485 и подобные.
>Думаю ты сам знаешь ответы, но я перечислю что сам знаю.
У меня есть две версии на этот счёт.
1. Если в дешёвую плис напихать кучу интерфейсов, то мы не сможем реализовать работу со всеми сразу, по причине малого объёма дешёвых плис, хотя есть же Ниос. А значит большая их часть будет простаивать и за них будут зря заплачены деньги. Отсюда следует 2.
2. В дешёвые плис надо вставлять из всего возможного набора только несколько требуемых интерфейсов, а это приводит к резкому росту номенклатуры, что, видимо, для производителя не эффективно с экономической точки зрения.
К разработчикам вивады не было бы вопросов если бы она не падала каждые 15 минут, или при прикосновении к окошку с прогрессбаром, или не затирала текущий проект при падении, так-то я был бы повнимательнее к себе, прежде чем искать проблемы в среде разработки...
> эти интерфейсы на уровне протоколов, напряжения всё равно нужно согласовывать внешней обвязкой.
Нет, на скоростьях выше 200 МГц (условно) никаких напряжений нет, там токовые драйверы. Погугли lvds.
USB 2.0 тоже токовые драйверы имеет, но он двусторонний, поэтому не поддерживается в gtx. Наверное его можно сделать на простом serdes, но не встречал.
Остальные гигабитные интерфейсы примерно одинаковые на низком уровне, поэтому для них универсальные блоки gtx.
Из согласования только резисторы видел на плате и конденсаторы.
Там действительно есть целый набор блоков низкого уровня, восстановления клока, 8/10 кодирование, скрамблинг (кодирование без постоянной составляющей), куча опций, просто потому что там гигагерцы частоты, без этого нереально принять данные. На выходе все равно сырые байты, как и на входе.
> И зачем всякие дорогущие АЦП, можно же и по проще вставить.
Да просто на работе у меня другие не считались за АЦП вообще, скорее как игрушки. ПЛИС же для цос чаще всего нужна в промышленности.
> >UART ты наверное для кучи добавил
> Имел в виду RS-232/485 и подобные.
Тут без вариантов, кто ж а ПЛИС 15 В ставить будет, в МК то же самое.
>никаких напряжений нет, там токовые драйверы. Погугли lvds.
Хочешь сказать что и USB и у PCIe одни и те же lvds?
Те линии что на 3.0 появились да. Там только кодирование отличается, оно в ПЛИС настраивается.
На этих частотах просто нет особого выбора, никакие стартовые биты и клоки как в spi здесь не придут одновременно, и за счёт более высокой частоты не примешь, очевидно.
В ПЛИС есть несколько типов приемопередатчиков. Обычный serdes на частотах 200-600 МГц (обычно до 400), которых достаточно много и их можно на любые линии почти назначить. Получится обычный lvds, если конечно настроить линии правильно.
И гигабитные на частотах выше 1 ГГц, на которых работают все современные протоколы. Gtx, gtp это названия модулей конкретно у xilinx. Они отличаются только скоростями и немного управляющими сигналами .
Чтобы покрыть частоты 600-1000 МГц есть режим оверсемплинга то есть когда один бит растягивается на два и более тактов, и так же принимается.
Этих передатчиков обычно немного, от одного до десяти, стоят на выделенных линиях, имеют отдельный опорный тактовый сигнал на каждый лэйн, лэйны можно связывать чтобы они работали в группе как в pcie или гигабитном эзернете.
Гигабитные интерфейсы не называют lvds, потому что это стандарт другой, но принцип там тот же.
lain это пара приемник и передатчик, по паре проводов на обоих т.е. в сумме 4 провода на лэйн, в usb3.0 ровно один лэйн (помимо старых сигналов usb2.0), в sata в 3 версиях тоже, в PCIe x16 - ровно 16 лэйнов и т.д.
По ссылкам явно не указано usb3, но можешь мне верить.
https://en.m.wikipedia.org/wiki/Multi-gigabit_transceiver
https://www.xilinx.com/support/documentation/user_guides/ug476_7Series_Transceivers.pdf
И ещё частоты конечно разные.
Ясно, спс.
Возьми лучше ep4ce6
https://a.aliexpress.com/_AkueoD
Если потом будет нужна большая плис с ethernet и ддр2 - есть неплохой вариант с EP4CE115
https://a.aliexpress.com/_9is8YD
И каким образом интерпретировать результаты? Если у меня длина преобразования 32бит, частота БПФ 250 МГЦ, то на выходе я буду иметь 32 числа, где 1е это постоянная составляющая, а остальные соответствуют шагу частоты 250/32=7,8 МГц?
> Какая часть этого числа отвечает за целую, какая за дробную?
В настройках же задаётся. Там есть и плавающая запятая.
> И каким образом интерпретировать результаты? Если у меня длина преобразования 32бит
32 отсчёта имеешь в виду?
> частота БПФ 250 МГЦ, то на выходе я буду иметь 32 числа, где 1е это постоянная составляющая, а остальные соответствуют шагу частоты 250/32=7,8 МГц?
БПФ это чисто математическая операция, ей безразлично на какой частоте идёт преобразование, важно какая частота отсчётов.
Если частота АЦП, которым этот сигнал был захвачен, равна 250 МГц, то будет 250/2, 250/3 .. 250/16 и вторая часть зеркально отраженная. Это если мнимая часть нули.
4/10 по цос, после пересдачи было, могу путаться.
В настройках задаются пикрелейтед. Среди них нет вроде выбора количества разрядов, отвечающих за целую/дробную часть числа.
Только тип (плавающая, постоянная).
Да, 32 отсчета на каждое преобразование.
Частота отсчетов как раз 250, с этим понял, спасибо.
Просто я на вход подаю вот такие значения:
максимальное 8191, минимальное -8192. Тоесть целые, а на выходе получаю совсем не то, что должно быть.
Видимо ты прав насчёт частоты, там фиксированный шаг Fd/N
https://stackoverflow.com/questions/4364823/how-do-i-obtain-the-frequencies-of-each-value-in-an-fft/4371627#4371627
На втором твоём скрине же задаётся число разрядов на входе. Из них получается и выходная точность. Вроде бы там на выходе тот же формат что и на входе.
Там же есть масштабирование, если нужно подогнать выход.
Я и не могу понять, какие числа должны быть на входе.
Число разрядов у меня задается предположим 14.
Это может быть 00 0000 0000 0000 0000 - целое число
либо 0' 0 0000. 0000 0000 0000 - где 0' знак, 0 000-целая часть,
0000 0000 0000 - дробная. Выбрать никак нельзя, в датащите не нашел, но тем не менее, мы выбираем fixed point data
За ссылку спасибо!
Так там же два поля, первое сколько всего бит, второе дробная. Вроде, не помню точно.
Хз, почему она называется там фазой.
>А нвидия вроде как хотела интелов выкупить.
Шта?! Или ты имеешь ввиду, что она хотела выкупить у них Альтеру?
> Последняя версия Квартуса, которая его поддерживала, если правильно помню, 16-ая.
Ты про какой именно циклон? Потому что 4E и 4GX поддерживаются вплоть до последней (не считая Pro) 20.1.
>>437598
Ещё у QMTech посмотреть можно (правда USB Blaster надо будет покупать отдельно):
https://www.aliexpress.com/i/32949281189.html
https://www.aliexpress.com/i/1000006634063.html
Мне кажется или спартаны подешевели? Раньше как-то все были от 50$
Не верю, что такое вообще возможно. Я думал, скорее Интел купит Нвидию (но сейчас уже вряд ли, она сильно разжирела).
МК-холоп, мечтающий хотя бы немного научиться в ПЛИС и понять работу процессора репортинг ин.
С одной стороны, мельком я понимаю(на уровне, достаточном для проганья мкшек) устройство микропроцессора, разные виды памяти(flash, ram), что такое бутлоадер, dma, как работают разные регистры сдвигов или как работает uart.
Но с другой, прогаю я на си, собрать регистр или суматор из простых элементов не смогу, что такое архитектура процессора или набор команд, стек, регистр статуса, cisc, risc, mips я вообще не понимаю, что это и зачем, для меня это просто слова. Т.е., скажем так, я работаю с API и набором функций, которые читаю в даташите/описании либы, а что происходит "под капотом" мк для меня "магия".
Конечно, профи по ПЛИС я не стану(этому надо учиться в вузе на соответствующих специальностях), но смогу делать разные поделки на плисках как хобби + наконец-то начну понимать, как внутри работает проц.
Итак, как вам мой план?
1. Прохожу книгу "Код" Петцольца, и параллельно собираю разные триггеры и сумматоры на листочке/ в симуляторе на пеке из логических элекментов.
2. Прохожу книгу "Цифровая схемотехника и архитектура компьютера" Харрис и Харрис, покупаю ПЛИС и простенький логический анализатор/осцилл, делаю упражнения из книги на verilog/vhdl и проверяю на живой ПЛИС, и рано или поздно разрабатываю на плис простеньки процессор с переферией и набор команд и прерываний для него.
>Итак, как вам мой план?
3. Штудировать ютуб. Начать можно отсюда
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
Дичь какая-то. Похоже чувак какую-то нейросеть запилил по созданию прошивок.
Это вопрос самомодифкации кода? Только старшие ПЛИС могут менять сами себя и то только на уровне внутреннего порта программирования.
Видимо он сидел и прошивал все 3000 итераций, сгенерированных на компе.
Ну по сути нейросеть видимо, но я бы взял лучше обычную программу под Винду с самомодифкацией кода или вообще симулятор обычный сделал.
Ничего кардинально интересного реализация в железе здесь не даёт. Даже если он сделал так, что ПЛИС сама меняет каким-то образом свое поведение за счёт дополнительного слоя абстракции, например сделал дохуище мультиплексоров соединённых с памятью (по сути ПЛИС внутри ПЛИС, но уже с возможностью менять себя в реальном времени), то это мало чем отличается от симуляции.
Скорее так.
Наконец поднялась жопа дошло дело до ебли собственно с кодеками, однако оказалось не всё так просто кто бы мог подумоть, путём многократного прикидывания хуя к носу удалось установить что I2C я реализовал верно, т.к. кодек реагирует на запись регистров (ето удолось понять по переключению напряжения на его аналоговом выход например), но всё остальное делать отказывается. В частности он отказывается работать в мастер режиме, когда на выходах должны быть сгенерированы 2 частоты сэмплинга. Диагностика осложняется так же тем, что пайка в qfn формате выполнена кустарно и нет никакой гарантии качества, однако на 2х спаяных платах поведение одинаковое. Заказал на всякий случай QFN сокет, если совсем пизда дурная голова ногам покоя не даёт, хуле, но пока у меня осталась только одна гипотеза - кодеку не нравится клок, самонадеянно сгенерированный внутри FPGA добавление ODDR не помогло, на вид у него довольно таки дохуя гармоник, и фронт вялый. Успокой меня анончик, подтверди эти выводы?
Завтра попробую подключить внешний кристал.
Дай угадаю, там рассказывают байку про ПЛИС, которую заставили изображать из себя таймер
Противник эволюции порвался.
ПЛИС даже самая хуевая может 50 МГц на выходе давать. Для I2c по-любому хватит частоты. Проблема софтовая, подключай ChipScope и смотри сигналы.
Попробуй готовый блок с GitHub какой-нибудь.
Напряжения совпадают? В ПЛИС 3.3 В считается много, может там 2.5 В или 1.8 В и нужно согласовать?
Открыл один из первых своих проектов на ПЛИС (то был мост uart - i2c).
Ебать быдлокод. Но учитывая мизерную частоту i2c можно что угодно писать и тайминги сойдутся.
Скорее всего прошивка создавалась путём многократного перебора рандомных значений. По типу как на видосе
https://www.youtube.com/watch?v=SfEZSyvbj2w
с I2C проблем как раз нет
Ты конечно такой загадочный. Хорошо хоть чип назвал.
У тебя там 50 МГц максимум мастер клок. ПЛИС спокойно его сгенерирует.
1. Регистры неправильно записаны?
2. Клок генерируется от PLL? Там у тебя 45% - 55% требования к коэффициенту заполнения.
3. Напряжения не согласованы? Клок просто не доходит.
В датащите уровень описан как 70% от 5v, т.е. вероятно не доходит. Хотя I2C доходит. Регистры чекал уже тыщу раз. Регистр, переключающий VQ Ramp (кодек у меня CS4244, если чо) по крайней мере действует, напряжение на ноге меняется. Чтение регистров пока лень делать было. Щя раздобуду USB I2C, потыкаю как следует.
Выходит, нужно будет пикрил приделать?
Нет, пикрил не подходит для больших частот, потому что подтяжка очень медленная вещь. Чтобы она работала на высоких частотах, нужен маленький резистор (постоянная времени как известно R x C, соответственно частота 1/(RC)) который просто закоротит порт.
Нужен полноценный драйвер, чтобы вверх напряжение тоже успевало вырастать. Самый простой вариант txs0108, на 3.3в он до 100 МГц (по даташиту).
Но есть и более профессиональные микросхемы, вот кусок схемы виртекса-6.
>>438807
Попробуй.
Так PLL задействован? Без PLL будет работать наверное, но с ошибками из-за джиттера.
Чо правда, что вашими потешными микросхемами можно обрабатывать данные на скоростях в несколько Gb/s? Или они начинают стоить как спутник GPS?
Даже у старого pci порта скорость 32х33= 1056 Мб/с. Сегодня даже телефон может принимать такой поток и что-то с ним делать.
Вопрос в сложности вычислений.
3.3 не помогло
Тут я всмомнил что моя фпга может и сама выводить сразу 5в, но это тоже не помогло.
В клоквизорде стоит опция MMCM.
Попробую поменять на PLL.
В общем где-то закралась фундаментальная хуета, чую придется ждать сокета, чтоб уже быть уверенным хотя бы в том что микросхема в норме.
В общем я от безысходности подключил i2c scan с ардуины, и всё дико нагрелось сгорело нахой ))), теперь и на сигналы от FPGA не реагирует. Осталось ещё пара чипов в запасе.
Я начинаю в таких случаях ножом резать ножки микросхем под корень пока не останется ровный квадратик. Очень успокаивает, рекомендую.
И часто у тебя такие мысли?
Давай ты внесешь ясность: либо подключай чипскоуп и показывай сигналы, либо запускай симуляцию и показывай сигналы.
Подключай готовый рабочий i2c и показывай нам регистры ошибок.
Показывай, как ты соблюдаешь процедуру старта.
>>438613
>>438638
Схоронил
https://arhivach.net/thread/630902/
Добавьте в шапку на следующем перекате.
Например, как в этом цикле сделать счетчик, который меняет значение регистра i?
Регисторы я только пока не читал, но там всего то 3 флажка. Клок еррор в мастер режиме не может происходить, сериал еррор тащемта тоже. VQ Ramp переключается, аки на I2C есть (правда вялые какие-то хз, в чем дело, может драйвер слишком мощный). Это разве что если в суппорт письма писать... Прочие регистры можно конечно попробовать повтыкать.
>>439045
Во-первых, у always-блока должно быть тело
always @(posedge clk)
begin
...
end
Во-вторых, assign внутри always-блока писать нельзя.
А вообще наверни этот плейлист
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
>begin-end нужны для объединения в один блок
Да, но начинающим лучше этим голову не морочить.
>Вредные советы.
Что это? Вполне годный контент, мне самому хорошо помог в свое время.
Тогда нужно уж и про резет пояснить для полноты картины
Собрал яйца в гулаг, надрочил I2C с ардуины с пулапами.
Микросхема начала генерировать сигнал!
Не воспринимались команды судя по всему, из-за того что я не удлинял первый такт I2C клока. Втф из тхис щит, нигде не написано.
Тайминги в датащите об этом ничего не говорят. Вобщем, как обычно.
Однако настоящей глыбой является Cirrus Logic - работает даже после пригорания с дымком!
Вивадо не существовало до 7 поколения. Не неси чушь.
Это единственный документ, который научил меня писать простой понятный быстрый (333 МГц параллельный FFT на virtex 6) код.
Вообще не понимаю, что там можно смотреть >>439090 чуть ли не целые сутки. Основы языка помещаются на листе А4, а все остальное без практики пустой звук. Лучше читать чужой код.
Уходя в сторону, лично я гораздо больше получил опыта изучая и используя проект litex https://github.com/enjoy-digital/litex (который на питоне), чем все остальные игры с сигналами. Пока вы сидите и разбираетесь, как объявить сигнал в верилог (или не дай бог vhdl ебал в рот его создателя), там люди сходу объявляют структуры из сигналов, пишут периферию, отлаживаются через uart или ethernet (или PCIe но это я не пробовал).
Проект сам сгенерирует вам констрейны .ucf или вивадовские или квартовские по желанию.
Нужно только один раз вбить описание вашей платы. Миграция между платами и между семействами ПЛИС гораздо проще.
На питоне можете хоть синус, хоть порно заливать в прошивку и строить графики, в отличие от верилога где вычислить триг. функцию это задача для сеньёра, а о графиках можно только мечтать.
> Ряяя питон в ПЛИС ты долбоеб
В который раз поясню, что питон в этом проекте - макроязык, он не занимает никаких дополнительных ресурсов, он просто генерирует код так как вы ему скажете.
Моргание светодиодом будет занимать столько же ячеек, сколько и на Verilog, потому что на выходе будет тот же верилог.
> ряяя у меня весь код на верилоге/vhdl
Просто и без задней мысли можно подключить и верилог, и vhdl, и оба сразу, и как следствие любые специальные блоки из вашего конкретного чипа.
Например первое что я сделал это написал обёртку для PLL. Теперь у меня всех платах генерация частот выполняется одинаково в одну строчку.
> inst.CRG(100e6,"sys")
Вы видели когда-нибудь "100е6" в верилоге? Конечно нет, ведь его хуй синтезируешь. Ты обязательно должен писать 1000000000 в настройках в лучшем случае, к чаще вообще коэффициенты.
А в питоне просто округляешь дальше и все.
> дебил возьми божественную виваду и настраивай все мышкой.
Вивадо, фигурально выражаясь, это делфи для ПЛИС. Каждый раз лазить в тормозную хуйню чтобы поменять что-то, не для меня.
Вы знаете сколько сигналов в GTX мать его приемопередатчике? Там под 500 строк только установка этого модуля! (Пик 1)
А шины как установить, а процессор? Там тоже несколько сотен сигналов, вы заебетесь их назначать по одному.
Именно в таких случаях становится просто необходимо часть сигналов присвоить здесь, часть в другом блоке, чтобы не мешать в кучу.
Поэтому просто пишешь функцию подключатель шины и соединяешь все сигналы в одну строчку.
Вы же не будете припаивать процессор в свой компьютер по одной ножке в сокет? Вы просто вставите весь проц сразу. Так делайте так же и в ПЛИС. Подключайте шины целиком.
Это единственный документ, который научил меня писать простой понятный быстрый (333 МГц параллельный FFT на virtex 6) код.
Вообще не понимаю, что там можно смотреть >>439090 чуть ли не целые сутки. Основы языка помещаются на листе А4, а все остальное без практики пустой звук. Лучше читать чужой код.
Уходя в сторону, лично я гораздо больше получил опыта изучая и используя проект litex https://github.com/enjoy-digital/litex (который на питоне), чем все остальные игры с сигналами. Пока вы сидите и разбираетесь, как объявить сигнал в верилог (или не дай бог vhdl ебал в рот его создателя), там люди сходу объявляют структуры из сигналов, пишут периферию, отлаживаются через uart или ethernet (или PCIe но это я не пробовал).
Проект сам сгенерирует вам констрейны .ucf или вивадовские или квартовские по желанию.
Нужно только один раз вбить описание вашей платы. Миграция между платами и между семействами ПЛИС гораздо проще.
На питоне можете хоть синус, хоть порно заливать в прошивку и строить графики, в отличие от верилога где вычислить триг. функцию это задача для сеньёра, а о графиках можно только мечтать.
> Ряяя питон в ПЛИС ты долбоеб
В который раз поясню, что питон в этом проекте - макроязык, он не занимает никаких дополнительных ресурсов, он просто генерирует код так как вы ему скажете.
Моргание светодиодом будет занимать столько же ячеек, сколько и на Verilog, потому что на выходе будет тот же верилог.
> ряяя у меня весь код на верилоге/vhdl
Просто и без задней мысли можно подключить и верилог, и vhdl, и оба сразу, и как следствие любые специальные блоки из вашего конкретного чипа.
Например первое что я сделал это написал обёртку для PLL. Теперь у меня всех платах генерация частот выполняется одинаково в одну строчку.
> inst.CRG(100e6,"sys")
Вы видели когда-нибудь "100е6" в верилоге? Конечно нет, ведь его хуй синтезируешь. Ты обязательно должен писать 1000000000 в настройках в лучшем случае, к чаще вообще коэффициенты.
А в питоне просто округляешь дальше и все.
> дебил возьми божественную виваду и настраивай все мышкой.
Вивадо, фигурально выражаясь, это делфи для ПЛИС. Каждый раз лазить в тормозную хуйню чтобы поменять что-то, не для меня.
Вы знаете сколько сигналов в GTX мать его приемопередатчике? Там под 500 строк только установка этого модуля! (Пик 1)
А шины как установить, а процессор? Там тоже несколько сотен сигналов, вы заебетесь их назначать по одному.
Именно в таких случаях становится просто необходимо часть сигналов присвоить здесь, часть в другом блоке, чтобы не мешать в кучу.
Поэтому просто пишешь функцию подключатель шины и соединяешь все сигналы в одну строчку.
Вы же не будете припаивать процессор в свой компьютер по одной ножке в сокет? Вы просто вставите весь проц сразу. Так делайте так же и в ПЛИС. Подключайте шины целиком.
>бидон
а на жабе есть, чтоб для людей?
>>439121
https://forums.xilinx.com/t5/Design-Entry/Can-t-select-the-Virtex-5-device-I-need/td-p/156984
плоти нологе
Есть ли вообще темативеские сайты об этом? Если знаете, поделитесь плиз
>там люди сходу объявляют структуры из сигналов
В vhdl это тоже делается просто
>в отличие от верилога где вычислить триг. функцию это задача для сеньёра
Тоже простая задача для vhdl. Можно спокойно делать rom с синусом, да и в принципе с любой функцией: любая комбинация из тригонометрических, логарифмов, экспоненты и других.
>или не дай бог vhdl ебал в рот его создателя
Просто ты неосилятор, не могущий в абстракции.
А litex с migen то ещё говно.
На алишке есть такая ёба
https://aliexpress.ru/item/32821185351.html?spm=a2g0s.8937460.0.0.5bc02e0eXTgUgt&_ga=2.101097603.388267347.1605216794-1050923915.1597244878
У этой ёбы есть ёба- описание
https://dropmefiles.com/IBSWx
Этой ёбой можно управлять по ёба-разъёму. 1 пик - это картинка из ёба-описания, на ней он не подписан (внизу по центру четырёхконтактный разъём).
Есть описание этого ёба-разъёма, судя по всему там какой-то уарт-подобный протокол
https://dropmefiles.com/W9EfH
Какие там напряжения на этом ёба-разъёме я пока не понял, но это сейчас и не важно. Мне больше интересно как считается контрольная сумма, выдержка на пике 2.
Из того что я понял. Сначала заполняем 16разрядный регистр единицами, затем по исключающему ИЛИ добавляем туда байты сообщения, потом, зачем-то, сдвигаем на один разряд в сторону младших разрядов и если выдвинули 0 то ничего не делаем, а если выдвинули единицу то вот тут я уже не понимаю, какую-то фигню пишут. И как у них в результате всего этого 16разрядное CRC получается тоже непонятно. Анончики, прошу помощи зала.
>какой-то уарт-подобный протокол
>какой-то
Modbus RTU, дубень. Гугли про него и наслаждайся порядком вычисления CRC
Википедия
> В vhdl это тоже делается просто
Объявить можно, да и все на этом. Ничего особенного с ними не сделаешь.
> Можно спокойно делать rom с синусом...
Смотри пикрил. Спокойно не получится. Спокойно это питон. А на vhdl нужно ебаться с кодом.
> Просто ты неосилятор, не могущий в абстракции.
Просто ты ничего сам нипесал на своем vhdl, максимум готовое юзал.
А я писал.
> А litex с migen то ещё говно.
Уровень аргументации ясен.
Клоун.
>Ничего особенного с ними не сделаешь.
В vhdl можно объявить не только записи, состоящие из сигналов, но и операции с ними. Например для работы с комплексными числами можно определить следующую запись:
complex_signed is record
re : signed;
im : signed:
end record;
Для этой записи можно определить операторы "+", "-" и функции abs(), resize(). Тогда работа с комплексными числами значительно упрощается. Пусть объявлены следующие сигналы:
signal a : complex_signed(re(7 downto 0), im(7 downto 0));
signal b : complex_signed(re(7 downto 0), im(7 downto 0));
signal c : complex_signed(re(8 downto 0), im(8 downto 0));
Сумма двух комплексных чисел будет выглядеть просто как c <= a + resize(b, 9);
>Смотри пикрил.
И что я там увижу? Функции преобразования типов? Какая неожиданная новость для языка с сильной типизацией. Чтобы избежать многочисленные преобразования типов, нужно правильно подобрать типы для своей задачи и написать свои. Например небольшие счётчики, особенно если они используются селекторами в мультиплексорах лучше сразу объявлять как integer.
>А на vhdl нужно ебаться с кодом.
Нет не нужно. Сильная типизация отсеивает многие ошибки на этапе компиляции.
>Просто ты ничего сам нипесал на своем vhdl, максимум готовое юзал.
Очень сильное заявление. Я писал и пишу очень много того что тебе и не снилось, различные FEC и сложный ЦОС. Так что давай оставим меренье пиписьками.
>Уровень аргументации ясен.
Здесь уже кто-то поднимал тему Litex и я писал что основная проблема - почти полное отсутствие модульности. Сигналы интерфейса модуля размазаны по всему коду и не понятно какие сигналы необходимо завести в модуль. Работа с клоковыми доменами не очень удобна. В Litex pcie не сделали нормальные констрейнты, чтобы он синтезировался без критических ворнингов.
Бтв в режиме double speed & x128 он вообще не работает, в датащите пиздёж, побрутфорсил ардуиной, пришлось поднять клоки.
Радует что платы спроектированы верно (это мои первые платы!), не придется перезаказывать.
Щя добъю основнюу плату для коммутации и збс.
А теперь объяви массив комплексных чисел с настраиваемой длиной массива и самих чисел, через генерики.
Ты конечно скажешь, что в 2000 версии добавили возможность передавать генерики в рекорды, но это 1. Костыль, требующий дикой писанины, 2. Работает далёко не везде, потому что везде гарантировано работает только vhdl-93. 93 год карл
А если нужно комплексное умножение разбить на несколько тактов? Заебись тебе поможет написанный с таким трудом код для всех типов?
Вдобавок невозможно сделать одно поле рекорда входом другое выходом. Как следствие макаронный код из разрозненных сигналов.
В питоне я напишу универсальную функцию, которая сможет и синхронно, и комбинаторно вычисляться в зависимости от параметра и мне для этого не нужно будет писать целую библиотеку из модулей. Я просто напишу эту функцию.
И мне не нужно будет каждый промежуточный сигнал прописывать в заголовке, только нужные.
Вот объявление комплексных сигналов. Некрасиво, согласен. Но всяко проще чем рекорды где-то в других компонентах и библиотеках.
def cpx_lay(dw):
return [("re",(dw,True),DIR_M_TO_S),
("im",(dw,True),DIR_M_TO_S),
]
А это вычисление умножения за 4 такта с расчетом что система подставит аппаратные умножители. 3-й такт просто задержка. Решетка - комментарии.
Функция (самописная) sync добавляет регистр указанной длины, назначает ему указанный сигнал или выражение и возвращает новый сигнал. comb делает то же самое без регистра.
#--complex multiplication in 3 real multiplications
#--re(bw) = (b.re - b.im)w.im + b.re(w.re - w.im);
#--im(bw) = (b.re - b.im)w.im + b.im(w.re + w.im);
#n:=1;
#--b.re-b.im
#--w.re-w.im
#--w.re+w.im
s1=sync(sink.b.re - sink.b.im,(b_size+1,True))
s2=sync(sink.w.re - sink.w.im,(b_size+1,True))
s3=sync(sink.w.re + sink.w.im,(b_size+1,True))
sink=sync(sink)
#n:=2;
#--s1=(b.re - b.im)w.im
#--s2=b.re(w.re - w.im)
#--s3=b.im(w.re + w.im)
s1=sync(s1 sink.w.im,((b_size+1)2-2,True))
s2=sync(s2 sink.b.re,((b_size+1)2-2,True))
s3=sync(s3 sink.b.im,((b_size+1)2-2,True))
sink=sync(sink)
#n:=3;
s1=sync(s1)
s2=sync(s2)
s3=sync(s3)
sink=sync(sink)
#n:=4;
#--re(bw)
#--im(bw)
re_bw=comb(s1 + s2,((b_size+1)2-2+1,True))
im_bw=comb(s1 + s3,((b_size+1)*2-2+1,True))
#sink=sync(sink)
Заметь в последней строчке, чтобы убрать регистр, например, я просто комментирую одну строчку.
В результате я имею пайплайн с четким разбиением на действия, без макарон, без простыней промежуточных сигналов в заголовке.
>>439438
> Сигналы интерфейса модуля размазаны по всему коду
Это не баг а фича. Любой модуль может получить любой сигнал из другого модуля без изменения entity, которого нет.
> и не понятно какие сигналы необходимо завести в модуль.
Для этого существуют комментарии.
> Работа с клоковыми доменами не очень удобна.
Ох нихуя себе, а в vhdl есть работа с клоковыми доменами?
> В Litex pcie не сделали нормальные констрейнты, чтобы он синтезировался без критических ворнингов.
А в vhdl уже все это сделано?
>>439460
Как ты себе это представляешь? Сначала компилируем Яву, потом из Явы делаем верилог? Зачем?
А теперь объяви массив комплексных чисел с настраиваемой длиной массива и самих чисел, через генерики.
Ты конечно скажешь, что в 2000 версии добавили возможность передавать генерики в рекорды, но это 1. Костыль, требующий дикой писанины, 2. Работает далёко не везде, потому что везде гарантировано работает только vhdl-93. 93 год карл
А если нужно комплексное умножение разбить на несколько тактов? Заебись тебе поможет написанный с таким трудом код для всех типов?
Вдобавок невозможно сделать одно поле рекорда входом другое выходом. Как следствие макаронный код из разрозненных сигналов.
В питоне я напишу универсальную функцию, которая сможет и синхронно, и комбинаторно вычисляться в зависимости от параметра и мне для этого не нужно будет писать целую библиотеку из модулей. Я просто напишу эту функцию.
И мне не нужно будет каждый промежуточный сигнал прописывать в заголовке, только нужные.
Вот объявление комплексных сигналов. Некрасиво, согласен. Но всяко проще чем рекорды где-то в других компонентах и библиотеках.
def cpx_lay(dw):
return [("re",(dw,True),DIR_M_TO_S),
("im",(dw,True),DIR_M_TO_S),
]
А это вычисление умножения за 4 такта с расчетом что система подставит аппаратные умножители. 3-й такт просто задержка. Решетка - комментарии.
Функция (самописная) sync добавляет регистр указанной длины, назначает ему указанный сигнал или выражение и возвращает новый сигнал. comb делает то же самое без регистра.
#--complex multiplication in 3 real multiplications
#--re(bw) = (b.re - b.im)w.im + b.re(w.re - w.im);
#--im(bw) = (b.re - b.im)w.im + b.im(w.re + w.im);
#n:=1;
#--b.re-b.im
#--w.re-w.im
#--w.re+w.im
s1=sync(sink.b.re - sink.b.im,(b_size+1,True))
s2=sync(sink.w.re - sink.w.im,(b_size+1,True))
s3=sync(sink.w.re + sink.w.im,(b_size+1,True))
sink=sync(sink)
#n:=2;
#--s1=(b.re - b.im)w.im
#--s2=b.re(w.re - w.im)
#--s3=b.im(w.re + w.im)
s1=sync(s1 sink.w.im,((b_size+1)2-2,True))
s2=sync(s2 sink.b.re,((b_size+1)2-2,True))
s3=sync(s3 sink.b.im,((b_size+1)2-2,True))
sink=sync(sink)
#n:=3;
s1=sync(s1)
s2=sync(s2)
s3=sync(s3)
sink=sync(sink)
#n:=4;
#--re(bw)
#--im(bw)
re_bw=comb(s1 + s2,((b_size+1)2-2+1,True))
im_bw=comb(s1 + s3,((b_size+1)*2-2+1,True))
#sink=sync(sink)
Заметь в последней строчке, чтобы убрать регистр, например, я просто комментирую одну строчку.
В результате я имею пайплайн с четким разбиением на действия, без макарон, без простыней промежуточных сигналов в заголовке.
>>439438
> Сигналы интерфейса модуля размазаны по всему коду
Это не баг а фича. Любой модуль может получить любой сигнал из другого модуля без изменения entity, которого нет.
> и не понятно какие сигналы необходимо завести в модуль.
Для этого существуют комментарии.
> Работа с клоковыми доменами не очень удобна.
Ох нихуя себе, а в vhdl есть работа с клоковыми доменами?
> В Litex pcie не сделали нормальные констрейнты, чтобы он синтезировался без критических ворнингов.
А в vhdl уже все это сделано?
>>439460
Как ты себе это представляешь? Сначала компилируем Яву, потом из Явы делаем верилог? Зачем?
> Сначала компилируем
Вот тебе далось на что своё время тратит исполняемая программа, сомневаюсь даже что это время сильно возрастет. С твоей точки зрения это просто вызов из командной строки.
>зачем
На жабе уберлегко программировать, декомпозировать, оптимизировать и т.п.. если прокачан скил ООП бгг. Но одебилевшие дауны любители "скриптования" например используют в джава билдах гредл яхуею с таких вообще, пиздос, в языке с манагед памятью делать второй язык, почти такой же блед, под который только нет нихуя нормальных сред для автозаполнения и хуй че поймешь как писать, с красными глазами на эту ебанину смотреть только, и всё только потому, что стоит в голове какая -то галочка про скрипты, зачем так жить, типизация и компилякр резко снижает количество ошибок до нуля. Можно отточить качество без ограничений. Скорость развитие проекта будет моё почтение.
https://modbus.org/docs/PI_MBUS_300.pdf
Пиздец какой-то. В трёх местах написано как считать и везде по разному.
Так у тебя всего одна ошибка и 4 ворнинга. Твой модуль "шаги" не определён. Такое обычно бывает когда имя модуля верхнего уровня в Верилоге(, а может и в ВХДЛ тоже,) несовподает с названием файла в котором он сдержится. Имена одинаковые сделай.
Вроде да, проверь.
Так настраивай эти свои клоки быстрее, чего ты ждёшь, Болдуин?
> в датащите пиздёж
Такого быть не может. Разве что есть errata со списком обнаруженных ошибок "особенностей" микросхемы, прилагаемая к даташиту/референс мануалу, но для ПЛИС errat-ы не делают, как мне кажется.
>настраивай эти свои клоки быстрее
Зачем ты мне предлагаешь сделать то, что я уже сделал и о чем написал в посте, на который ты отвечаешь? Ты ебанутый?
>Такого быть не может
Ты скозал?
В любом датащите есть ошибки, и всем пох.
В датащите FT600 клок нарисован вверхногами, только колупание чужих и референсных исходников помогло понять реальное положение фазы клока.
В датащите CS4244 - неработающий режим double speed x128, некорректное описаное I2C.
По дороге нашел проект на другой кодек cirrus, cs43.. че-то там, там разные разработчики жаловались на то что надо подрочить резервный бит в регистре, и только тогда достигается работоспособность, притом что саппорт производителя категорически отрицает такую возможность. Итого как минимум 1 ошибка на продукт. Да что далеко ходить, неоднократно был свидетелем некорректной работы ГОСТ сертифаед 24/7 оракл интерпрайза например, полностью ломающего транзакционность и корректность обновления данных, или напрмер тупой баг когда агрегаты с кейсом можо сортировать по возрастанию, а по убыванию возникает интернал еррор - и это продукт с историей, репутацией и сертификатоме. Мир полон нелепого говна и говноделов. Так что пока ты юноша верующий в швитых производителей - не пиши.
Ничем, это вообще другое.
Ты профессионально ПЛИСами занимаешься?
Какой бекдор? Там обычный аппаратный AES (+ SHA еще что-то наверное), который обязан работать идентично любому другому AES, хоть программному, хоть аппаратному. Или ты про бекдоры, требующие физический доступ к устройству?
>>441012
Может быть я что-то не понимаю, но мегафункции это обычные модули. А разве можно засовывать модули в функции?
Либо они тупо пропустили его, как всегда. Я так понимаю цинк-7000 более новое семейство, все просто забили.
>3 пик
Молодежь пошла ленивая. Ты сначала лаборантом/техником отработай поучись у мужиков уму разуму. Через три - четыре года получишь должность инженера 3 категории. Через еще пять лет имеешь право на повышение категории. К сорока годам станешь ведущим. Вот тогда и будешь себе требовать зарплату 80 тысяч как у опытных мужиков. Мужики опытные по 12 часов работают как говориться от забора и до упора. И не ленятся. А молодежи нужно зарплату чтобы минимум была 40 тысяч. Мы в советские времена не за зарплату работали. А знали что надо. Бывало закончишь наладку схемы в 9 часов вечера и ложились спать в кабинете у осциллографа с ЭВМ, а утром в семь часов уже опять вставать на работу.
>Через три - четыре года получишь должность инженера 3 категории.
А как же должности техников 1-3 категорий и младший инженер?
мимо техник-инженер-ведущий
Нахуя это говно в плисотреде? Съеби в питушатник
Пошел нахуй отсюда, дрищара
Работал в 2013г в aldec, мы уже тогда пилили поддержку system verilog для линтинга. Судя по тому, что алдек плелся в хвосте инноваций, то ксайлинксы и альтеры должны работать с ним. Но это мое вангование
Есть примитив ALITIO... че то там, что бы указать явно.
но можешь присваивать выходу Z состояние, может скомпилируеться :)
Все fpga сычи сидят в телеге @fpgasystems
Я понимаю, что простые автоматы на 3-5 состояний можно написать и так, но если состояний штук 15? Рисуется классический граф с кружочками и стрелочками и по нему уже пишется код? А если у нас входных сигналов штук 20 и соответствующее количество переходов, то даже граф будет весьма запутанным. А если у нас выходных сигналов тоже много, то код будет на сотни строк. Как быть?
Миша, плес.
По-моему такие кейсы это бэд дизайн бай дефолт, проще подумоть и переделать
>А если у нас входных сигналов штук 20 и соответствующее количество переходов, то даже граф будет весьма запутанным.
В смысле, из каждого состояния есть 20 вариантов переходов? Обычно есть варианта-три четыре, типа "остаться здесь", "перейти на следующее состояние", "перейти на обработку ошибки/начать сначала".
брутальные - используют модули и абстрагируют логику ровно так же, как это делают программисты на высокоуровневых языках
Ну хз как переделать. Софтпроцессор поднимать? - излишество. Да и если таких автоматов в проекте штук 5, то что, 5 Ниосов поднимать?
>>441831
> смысле, из каждого состояния есть 20 вариантов переходов?
Не, не 20 конечно, переходов 5-7 в среднем, но всё равно автомат до шиша большой и сложный получается, когда таких состояний штук 15.
>>441835
Вот здесь не понято.
Есть у тебя в протоколе 20 типов сообщений с разными индукторо идентификаторами, но 1-2 црц. Как будешь поступать? Сократить кол-во сообщений не вариант.
>Вот здесь не понято.
Часть состояний можно инкапсулировать в более мелкий автомат. Получится один главный fsm, оркестрирующий более мелкими, которые выделены в отдельный модуль. Ну и 20 входных сигналов, если там не буфер, тоже не ок вообще-то
Это не всегда может сработать.
Протокол в студию.
Алсо, поясните за ПО, которое генерит transistor-level схему под целевую технологию и техпроцесс. Это доступно рандомному мимокрокодилу или там лицензия стоит под 10к долларов?
>Хочу заказать изготовление чипа на пластине на каком-нибудь TSMC или аналоге.
Ты же в курсе, что енти чуваки меньше чем за несколько миллиардов долларей даже не взглянут в твою сторону? А с несколькими миллиардами поставят тебя в конец многокилометровой очереди которую не переживут даже твои внуки
Ищи комьюнити, где народ скидывается и заказывает свои кристаллы на одной пластине, у них же и спросишь требования.
Но я слышал, с русскими больше не хотят сотрудничать
>Ты же в курсе, что енти чуваки меньше чем за несколько миллиардов долларей даже не взглянут в твою сторону?
Сомневаюсь. Во-первых никто не делает серийное производство без выпуска тестового чипа, соответственно существует MPW, во-вторых им вообще похуй, производство автоматизировано, в оборудование надо только пластину подать, а в управляющий компьютер отправить шаблон схемы. Через 3 месяца на выходе появится напечатанная пластина, которую и отгрузят заказчику в специальном боксе. Нарезка пластин - это один из этапов packaging, делается на отдельных фабриках.
>>442119
>Но я слышал, с русскими больше не хотят сотрудничать
Коммьюнити или TSMC? А почему?
> Алсо, поясните за ПО, которое генерит transistor-level схему под целевую технологию и техпроцесс. Это доступно рандомному мимокрокодилу или там лицензия стоит под 10к долларов? >
http://opencircuitdesign.com/qflow/
>This small 32-bit processor was designed for embedded mixed-signal applications and has a 100MHz internal clock. The RISC-V processor core has over 20,000 gates, synthesized by yosys, placed and routed by graywolf and qrouter, and validated by vesta static timing analysis. It was a first-time silicon success triumph for open-source EDA tools.
Да, ошибся. 3 месяца - то про другое.
Где то на electronix была тема про дизайн-центр, глянь там.
Обратись в какой-нибудь местный универ/дизайн-центр, в общем случае без нескольких миллионов/десятков миллионов рублей там делать нечего. Тестируют пластины на зондовой станции. Пример ПО - cadence virtuoso, для техпроцесса надо получить pdk фабрики, заключив с ними соглашение.
Asic нужен, если у тебя идут неебацца крупные серии сотнями тысяч/миллионами штук, для малых тиражей определенно лучше ПЛИС/ПАИС+дискретка.
Спасибо да ответ. А что такое ПАИС и дискретка? А то гуглится оче плохо
>если у тебя идут неебацца крупные серии сотнями тысяч/миллионами штук
чипов или пластин?
>Тестируют пластины на зондовой станции
На этапе packaging? Как происходит взаимодействие с фабрикой? Буду очень признателен, если ты напишешь в деталях весь производственный процесс выпуска ASIC от разработки до упаковки.
Нежели в моделсиме никто не работает?
https://www.xilinx.com/support/documentation/user_guides/ug198.pdf
Странный вопрос. Если оно тебе действительно было бы нужно, то ты бы самостоятельно открыл документацию (по этой ссылке). А так выглядит будто студенту дали такое задание. Вот разобраться в этой документации это уже куда сложнее чем загуглить документацию.
Так и есть, студенту дали задание. Спасибо за ссылку, видел этот документ, но как понял он работает только с 20-ти битными данными, поэтому почти сразу отмел его, так и не поняв для чего он. В этом моя ошибка
тогда съеби отсюда студень ебучий...
нафиг вы все лезете и демпингуете и без того маленькие зп у плисовиков??
и помагать ему еще за это, лол
мимо профи
Ой, бля, дошеслась отрыжка с зассатого гос предприятия.
Учи английский и все будет заебись.
И отдемпингуй этого мудазвона по самые уши :)
>Учи английский и все будет заебись.
даун у инжереров, решает все образование, в первую очередь смотрят на диплом а только потом на скиллы и портфолио
если закончил топвуз дс или вуз в европе то тогда будешь работать на какой-нибудь интел, а если замкадскую парашу то ничего кроме зассатого гос-предприятия и не светит
>с зассатого гос предприятия.
да ты угадал я с зассатого госпредприятия и работаю за 40к, но это не моя вина что я родился в мухосрани и родители забили болт на мое образование, а английский мне зачем? все равно зп не поднимят за знание английского, а на качестве работы это не влияет переводить я и гугл транслейтом могу
>И отдемпингуй этого мудазвона по самые уши :)
да кого он будет демпинговать, такие тупые зумерки у нас даже собес не пройдут, потому что ничего не умеют а хотят по 25к получать, а западному барину они тем более не сдались пускай лучше сразу в макдак идет
Хочу запилить компрессор звука, примитивный, но шобы в реалтайме, без использования буферов вообще. Или наоборот, шумодав, где важно компенсировать шум в текущий момент времени, а не когда там сработает прерывание о заполненном буфере.
>>443272
Я не вникал в ваши срачи, но читать твой пост крайне неприятно, так как ты показываешь не только отсутствие английского языка, но и русского.
>а английский мне зачем? ... переводить я и гугл транслейтом могу
Чтобы доки свободно читать и понимать без гуглтранслейта, так тупо быстрее.
>все равно зп не поднимят за знание английского, а на качестве работы это не влияет
Ну так подтяни скиллы и перейди на другую.
>>443280
>типа Циклона 6
Ты имел в виду или Циклон 4/5 или Спартан 6.
>Хочу запилить компрессор звука, примитивный, но шобы в реалтайме
Должно хватить.
> а английский мне зачем? все равно зп не поднимят за знание английского
Проиграл с уебка, с английским ты сможешь заключить контракт и работать по ВЭД с зарубежными дядьми сразу за деньги.
>гугл транслейтом могу
гугл транслейт слабо может в пассивный залог и деепричастный оборот, который в техдокументации используется очень мощно. Это надо осознавать и уметь читать бегло.
Алсо вот https://hackaday.io/project/7041/logs?sort=oldest проект интересный, не ПЛИС правда, но на 4-6 каналов даже производительности хватило.
Можно оставить эти разборки уровня /hw за пределами этого треда? Тут место приличное, тут вам не это
Мда, зашел написать что погарячился, но передумал
Родители виноваты в том что ты жрешь дерьмо, ну да...
Можешь гнить в шараге сколько тебе хочеться, но не ставь себя пример молодым специалистам, пожалуйста.
П.С. Всегда с радостью помогу молодым специалистам. Делаю это тут часто.
>если закончил топвуз дс или вуз в европе то тогда будешь работать на какой-нибудь интел, а если замкадскую парашу то ничего кроме зассатого гос-предприятия и не светит
Братан, это не так. Закончил обычный вуз в Харькове, у нас преподы выполняли подряды интела на верификацию, а выпускники вполне себе работают во всяких интелах и амуде. Плюс справедливости ради, в вузе ты помимо схемотехники должен был изучать архитектуру эвм и программирование. Так что нет никаких причин гнить за 20к в нии, можно просто пойти работать джавомакакой и получать 100к на старте (в дс). А через пять лет выйти на 300к. Тебе шашечки или покушать?
Пости приличное. Постинга все равно нет.
Пардон, не сталкивался
Почему именно в моделсиме? Разве это не к VHDL/Verilog самим по себе на уровне стандартов относится? И по моему воспринимать часто это проще воспринимать как очередность событий, а не какие-то задержки.
Спорить с тобой не могу ибо сам в тем плаваю, но насколько понимаю термин "дельтацикл" относится именно к моделированию. Там какая-то тема про то, что моделирование параллельных процессов на ПК невозможно в силу последовательной работы процессора, а потому используется последовательный просчёт состояний элементов за нулевое время в симуляции и разбивается оно на вот эти дельтациклы.
Вот хотелось бы поподробнее, желательно с примерами.
Конечно само понятие "дельтацикла" это из симуляторов. Однако симуляторы не должны делать в этом плане ничего выходящего за рамки стандартов VHDL или Verilog. Поэтому наличие или отсутствие дельта-циклов это внутреннее дело моделсима.
>внутреннее дело моделсима
Но представление об этом деле лучше иметь всё же. Так результаты работы симулятора становятся более понятны и предсказуемы.
>Я не вникал в ваши срачи, но читать твой пост крайне неприятно, так как ты показываешь не только отсутствие английского языка, но и русского.
а на каком языке я по твойму пишу на немецком или на французском ?
ебать даун
>молодой специалист
>зумер студентик без опыта работы и портфолио который ходит за советами на двач
пффф)))))
помогай студентишкам сколько влезет, раз делать нечего
>результаты работы симулятора
Определяются стандартами языков, а вовсе не дельта-циклами. А если у тебя undefined behavior, то бессмысленно в этом контексте рассуждать о дельта-циклах.
>Проиграл с уебка, с английским ты сможешь заключить контракт и работать по ВЭД с зарубежными дядьми сразу за деньги.
>>443287
>все равно зп не поднимят за знание английского, а на качестве работы это не влияет
>Ну так подтяни скиллы и перейди на другую.
Хотите сказать, что 3-й пик из шапки этого треда - это фотошоп?
Конечно. fpga-ники это элита технарей - не всякий веб-программист может вкатиться в fpga, но всякий fpga-ник может вкатиться в веб.
>не всякий веб-программист может вкатиться в fpga, но всякий fpga-ник может вкатиться в веб.
Ошибаешься манюнь как раз наоборот.
У веб-макак мозжечка скудного не хватит в параллельные процессы, а уж про метастабильность им что-то объяснять даже и пытаться не стоит.
Может раскроешь свою мысль? Про делта-циклы расскажешь что-нибудь? И зачем нужно о них думать, когда в стандартах верилога о них не упоминается. А так ты просто мерзко выебнулся и все. Очень некрасиво.
Я говорю, что нечего комплексовать FPGA разработчикам перед веб. Как эту мысль сообщить по другому я не знаю.
>Ну, я тебе скажу что моя ЗП выше самой большой цифры на этом рисунке.
Но ты не из Рашки, верно?
>параллельные процессы
>метастабильность
Ну почему же, web-ingeners это такие же технари, как и любые другие. Имеют прямое отношение к вычислительной технике, знакомы со стеком TCP/IP, многие ардуинами и малинками балуются как хобби.
Уверен, что за одну лекцию объяснить суть этих понятий веб-разработчику можно.
> комплексовать FPGA разработчикам перед веб
Есть смысл комплексовать только по уровню зарплат, ведь у веб-разработчиков (в пределах одной страны, разумеется) зарплаты намного больше.
При том, что по трудозатратам разработка FPGA намного сложнее: надо сидеть с осциллографом, паяльником и генератором сигналов, и прогать железяку непосредственно на рабочем месте, когда веб-макака может сидеть на мальдивах с ноутом на пляже и работать удаленно.
>это такие же технари, как и любые другие
Ой ли? Среди этих пруд пруди кто не смог в высшее образование.
>за одну лекцию объяснить суть этих понятий веб-разработчику можно
Только перед этим нужно лекций пять объяснять что такое логические элементы, триггеры, гонки сигналов, принципы синхронного проектирования и хотя бы основы работы транзисторов.
>логические элементы, триггеры
>основы работы транзисторов.
Это же базовый computer science, который должен знать каждый уважающий себя прогер.
В вузе(да что там в вузе, даже в техникуме) образовательные программы программистов начинаются именно с этого и потом уровень абстракции плавно увеличивают до языков высокого уровня.
>Это же базовый computer science, который должен знать каждый уважающий себя прогер
Лол, блядь, тут недавно (в этом разделе) сразу несколько обезьян доказывали, что им не нужно знать, как компы работают, они хотят быстро научиться, какие кнопки нажимать, чтоб было заебись
> а уж про метастабильность
Хосспаде, что о ней можно не понять по первой попавшейся статье в википедии и картинке с шариком на холме между двумя лунками? Концепция явно попроще какого-нибудь шаблона абстрактной фабрики, при всём уважении.
>начинаются именно с этого
Но на это все веб-макаки забивают болт.
>>443687
А ещё нужно освоить тулзы, в коих разобраться не так-то просто.
>>443698
Надо не просто понять шарик на холме, нужно понять как эту проблему решать. Все форумы завайпаны вопросом "а как перейти в другой клоковый домен?" хотя, по сути, задача стандартная при понимании принципов работы.
>Все форумы завайпаны вопросом "а как перейти в другой клоковый домен?" хотя, по сути, задача стандартная при понимании принципов работы.
Это просто студенты-ньюфаги, ну чё ты. И борются они не столько с метастабильностью, сколько со своим незнанием инструментов. Всё давно есть в готовом виде и помещено в шаблоны кода/IP, даже про шарик знать не требуется.
Тут анон переборщил, согласен.
Но в осатльном он прав.
ПЛИСо-господа это элита технарей-инженеров.
А веб-макаки - самое дно.
Кто нибудь работал с Actel/Gowin?
Как у них дела с качеством IDE и емкостью ПЛИС по сравнению с младшими линейками интола?
Стоит ли перекатываться или ну его нахуй?
С говин работал, собственно название отражает всю суть.
Иде очень кривая, но зато не перегружена как вивада/квартус. Покупал несколько tang nano со встроенным программатором, пердолинг тот ещё.
>ПЛИСо-господа это элита технарей-инженеров.
да нихуя не элита. Обычные технари, сложность во всех инженерных направлениях плюс-минус одинаковая. Серьезный civil engineer напрягает мозг ничуть не меньше, чем серьезный hw-engineer или фулстак гребец.
Не знаю как у вас, но у нас плисоведу приходится шарить хотя бы немного во всем, абстрагироваться не получится. Ну либо я просто не похуист и стараюсь смотреть наперед и не ломать систему.
Дело не в том что кто-то напрягает мозг больше или меньше, экономисты с юристами тоже свои мозги напрягают. Дело в том что порог вхождения в ПЛИС более высок, это на питоне каждая макака может начать кодить после трёх дней изучения, здесь не так.
>это на питоне каждая макака может начать кодить после трёх дней изучения
Сомневаюсь, что за три дня можно осилить что-то вроде Django в должной мере. И это только веб-макакинг, при том что питон используется не только в этой области.
Двачаю.
В том же питоне есть data-science и нейросети.
Туда вкатиться еще сложее чем в плис, потому что матан знать надо.
>Туда вкатиться еще сложее чем в плис, потому что матан знать надо.
Ну в плисах есть цос, для которого тоже матан нужен.
Самая сложная работа у плисовиков, разрабов микросхем и тех, кто занимается машин лернинг и нейросетками. Вот там рили рокет сайнс.
Все остальные инжеренрые специальности это детский сад по сравнению с этим.
охуительные истории. Передам знакомому материаловеду, что его специальность - детский сад по сравнению с богоподобными плисовикАми.
Нам(программистам) эти плисовики кофе носили, когда я работал над программным продуктом для верификации. И че теперь, плисовики хуже программистов? Лол нет, просто конкретно те спецы - маньки, способные только на написание тестовых кейсов на vhdl/verilog. Или перформанс инженер из оракла, который над jvm пыхтит, он - лалка по сравнению с средним плисовиком?
Сравниваешь красное со вкусным, короче. Объем знаний и сложность во всех специальностях (не только технических) примерно одинаковая. Факт того, что большинство учебных программ бакалавра/магистра/phd длятся одно и то же время, как бэ намекает.
И вообще быть мизантропом - это фу
Блядь, с кем я сижу в одном треде?
Надо разделять инструмент и задачу которую решают этим инструментом. Задачи, в любой области, могут быть сколь угодно сложными.
Речь идёт конкретно за инструмент - овладеть ПЛИСами сложнее чем всем остальным, за малым исключением.
>Речь идёт конкретно за инструмент - овладеть ПЛИСами сложнее чем всем остальным, за малым исключением.
Нихуя, абсолютно рядовая специальность. Хватит уже насасывать себе ЧСВ, просто открой учебный план по этой специальности и убедись, что из ~40 курсов по специальности к непосредственно проектированию плис относится до 5. Все остальное - математика, алгоритмы и низко/высокоуровневое программирование.
>нейросетки
Я с ними на "ты, сука, работать!". И я подбираю коэффициенты для лучшего срабатывания. И обучаю их, снова и снова.
>к непосредственно проектированию плис относится до 5
В этом и проблема, шараги и 1/10 не дают того что нужно для того чтобы хотя бы начать работать плисоводом.
>В этом и проблема, шараги и 1/10 не дают того что нужно для того чтобы хотя бы начать работать плисоводом.
ага, тайное знание ситхов, передается из рук в руки. Давай так, ты открываешь учебную программу микроэлектронщиков любого топового вуза РФ или мира и говоришь, чего там мало, чего надо добавить и сколько. А то истории одна охуительнее другой.
Давай так, ты сам сюда несёшь то что пытаешься доказать, а мы посмотрим. Не знаю как там дела обстоят за бугром, так что неси наши.
Если ты учился по этой специальности как я, то ты можешь по памяти рассказать, какие курсы для плис там преподают. А если не учился, то ты любитель и тебе бы вообще поднимать эти темы.
Вот, например, учебный план на физкеке. Ну и чего тут не хватает?
короче хуй знает, как там в физкеке учат микроэлектронщиков, я не нашел хоть сколько-либо приближенной к микроэлектронике программы. Вот тебе программа из светоча науки - MIT. Как видишь, те самые 5 курсов по electrical engineering.
>Если ты учился по этой специальности как я, то ты можешь по памяти рассказать, какие курсы для плис там преподают. А если не учился
Я учился в мухосране миллионике по специальности "вычислительные машины, системы, комплексы и сети". Из всех предметов, что хоть как-то можно связать с ПЛИС были теория автоматов (там где графы с кружочками и стрелочками), цифровая схемотехника (там где триггеры, регистры, счётчики, лог. элементы с прочими мультиплексорами) и архитектура процессоров (на примере 8088, кек). Лабораторных работ с использованием ПЛИС не было от слова совсем, это не говоря про изучение Квартуса/Айса, Авалона/Акси, Ниоса/Микроблейза, Сигналтапа/Чипскопа и даже, о ужас, Верилога/ВХДЛя? всё это я осваивал непосредственно работая на месте.
Но я шарагу и не виню, не её это задача учить всему этому, у шараги задача дать теоретическую подготовку.
Так вот моя мысль состоит в том, чтобы освоить всё это, а документация на всё это на буржуйском языке, что добавляет сложности, нужен интеллект и упорство выше среднего по больнице.
>>444343
Я хуй знает что ты принёс и откуда, но не одной аббревиатуры FPGA тут не видно.
Подразумевая, что на других специальностях учат тому, что пригодится на работе.
Лол. Тоже учился на 230101 (Вычислительные машины, комплексы, системы и сети). Довольно точно описал. Верилог не тыкали. Только на цифровых автоматах в древнющем xilinx ise делали лабы - рисовали схемы и защищали их работу в симуляторе. В железе не делали. Изучали на модели 580ВМ80А.
Знающие могут сдеанонить институт по имени преподов по схемоте - Антик и Жемчужникова.
Тут все зависит от уровня - писать простенькие блоки на verilog и моделировать их может любой студент после 3-5 курсов, въехать в цифру и программирование по сравнению с аналоговыми и смешанными системами вообще довольно просто. За рубежом где-то писали, что на обучение цифрового дизайнера asic нужно 2-3 года, аналогового - 5-7 лет, по опыту плюс-минус так и есть.
Я бы отнес к исключениям как минимум разработку аналоговых схем/блоков ИС, мощную силовую электронику, радиосвязь и СВЧ, туда въехать сложнее.
>Можно запросто. Если нужен АЦП/ЦАП можно сразу кодек CS заюзать.
Мне нужен в РЕАЛТАЙМЕ, а не когда оно там что-то домеряет, заполнит буфер и отдаст мне.
ПЛИС для этого нинужон, сойдёт любой сигнальный процессор.
> Или перформанс инженер из оракла, который над jvm пыхтит, он - лалка по сравнению с средним плисовиком?
Да.
Цена ошибки высока у разрабов силовой электроники, у который один конденсатор или силовой ключ может стоить, как квартира в замкадье.
>силовой ключ может стоить, как квартира в замкадье.
Ты пизди да не запездывайся. Чо это за ключи по 2кк?
Прогер на jvm всего лишь пишет программу на процессор, который разработали asic/fpga разрабы-плисовики, понимаешь?
>Или перформанс инженер из оракла, который над jvm пыхтит, он - лалка по сравнению с средним плисовиком?
Заебись, аргументируя за сложность программинга, скинул мне jvm, которая пишется под камни, разработанные плисовиками/asic разрабами. Разъебал сам себя. Молодец!
Тот же ПЛИСовик эти процессоры, под которые прогер пишет среду jvm, РАЗРАБОТАЛ, понимаешь? А прогер его всего лишь ИСПОЛЬЗУЕТ. Осознаешь разность масштабов?
>ключ может стоить, как квартира в замкадье
Объзмеился с тебя.
А ты представь что будет когда asic-инженер объебётся и ошибку не заметит, а чипов уже наклепают партию размером во многие тысячи единиц, затратив миллионы баксов. Что там квартира, до конца жизни ты, твои дети и внуки в анальном рабстве будут.
>Тот же ПЛИСовик эти процессоры, под которые прогер пишет среду jvm, РАЗРАБОТАЛ, понимаешь? А прогер его всего лишь ИСПОЛЬЗУЕТ. Осознаешь разность масштабов?
Оба они по этой логике сосут у мужика с лопатой, который копает песок, из которого потому будут вытягивать монокристалл кремния. Ведь они всего лишь чё-то там делают с кремнием из песка, который этот мужик ВЫКОПАЛ!
>кк
Блядь, откуда вы сюда такие лезете? Я ещё понимаю в каком-нибудь маняме-реде так напишут, но тут то?!
>2к+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
>даже уже почти что 2к+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
>бомбить от кк
>>2к+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
>>даже уже почти что 2к+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
Что ты высрал?
>>бомбить от кк
>быть технарём и писать "кк" вместо "М"
Если у машины пробег 2000км, ты будешь говорить, что её пробег равен 2Мм?
2Gm
Ты тупой или тралишь?
Ты написал 2кк вместо 2000000. Если применяешь подобные сокращения, то применяй так чтобы окружающие кринж не ловили, в /ra/ всё таки сидишь.
Плисовики всего-лишь компонуют между собой транзисторы, как обычные водопроводчики, которые потом вытравляются на кристаллическом кремнии. И по сравнению с технологом, который изготавливает пластины с помощью аж 3 химических реакций, плисовики - так, васяны-птушники. А технолог в свою очередь пресмыкается перед богоподобным водителем экскаватора, который песок для пластин подвозит. Мастер аналогий, это ты?
>Ты написал 2кк
Это не он, а я написал. Проблемс? Ты так и не предоставил ссылки на ключи и кондеры, ценой в 2 000 000 рублей
>когда asic-инженер объебётся и ошибку не заметит, а чипов уже наклепают партию
Маня не слышала про тестирование на проверку безотказной работы?
Любое устройство перед выпуском проходит тестирование в десятки тысяч часов во всех режимах работы, и там уж ошибка точно всплывет.
Вот маленький IGBT-модуль, 1,5 килограмм веса, за 100к рублей.
https://www.chipdip.ru/product0/9000670385
В сложном электрооборудовании их может быть с десяток, а на электростанциях и подстанциях наверняка силовые ключи намного мощнее и дороже.
>за 100к
Во первых - это ЧиД с ебанутыми ценами. У нормальных продаванов по 900 евро от 12 штук. Во вторых - 100к очень далеко от двух миллионов. То что их там десятки, нихуя не значит. Показывай конденсаторы и ключи ценой с квартиру в замкадье или пиздобол!
Ты даже не знаешь чем плисовики занимаются. "Компонуют между собой транзисторы" у него, у школотрона сраного, вообще пиздец. Это тебе твоя училка - тётя Срака по информатике в твоей недошколке рассказала?
>>444807
>Маня не слышала
Маня, иди почитай про то как даже сама Интел обёбывалась и была вынуждена отзывать назад свои процессоры, с возвратом денег естественно.
>>444810
Сранный гуманитарий решил блеснуть скудным умишкой и поверхностными знаниями перед технарями, но был обоссан. Ожидаемо.
Я не он, но тут тебе никто и ничем не обязан.
Возможно такие ключи есть, скажем, в поездах на магнитной подушке или много-осевых погружных платформах. Но никто не побежит курочить поезд или платформу и убивать людей, только ради того, чтобы предоставить тебе пруфы. Смекаешь?
2Е6
>>444813
Дело не столько в стоимости ключей, сколько в стоимости ремонта кучи промышленных потребителей и тушения потенциального пожара. В случае с транспортом/инфраструктурой вообще можно устроить гуро с несколькими сотнями человек.
>>444807
У кучи широко распространенных чипов есть большие эрраты, нередко баги находят уже конечные пользователи при отладке. Time to market - наше все.
>Ты даже не знаешь чем плисовики занимаются. "Компонуют между собой транзисторы" у него, у школотрона сраного, вообще пиздец. Это тебе твоя училка - тётя Срака по информатике в твоей недошколке рассказала?
диагноз по юзерпику от мастера аналогий. Программисты "всего-то" пишут код, используя средства процессора, ну так и плисовик всего-то соединяет логические элементы между собой. Ну потом еще кнопочку нажимает и ему фоточку в транзисторном исполнении умная программка хуячит. Все по твоей логике, максималист мамкин
Ты хоть смотри кому отвечаешь. В споре кто больше умственных усилий прилагает программист или плисовик я вообще не участвовал.
>и ему фоточку в транзисторном исполнении
И снова очередной обсёр.
Скачай лучше квартус, лабы для студентов по Verilog/VHDL и посмотри, как там все работает. Или на ютуб зайди. Конечно, там можно напрямую соединять примитивы логики и триггеров, но это неэффективно.
Нахуя ты мне это пишешь? То был ответ местному интеллектуалу, у которого программисты jvm всего-то используют инструкции, которые СПРОЕКТИРОВАЛИ! плисовики.
Подключать 2 керамических конденсатора последовательно можно если они по напряжению рабочему маловаты?
Никаких приколов от такого лайфхака на высоких частотах работы не будет?
А с чего ты собсно взял, что напряжение на каждом будет половина от общего? Конденсаторы не идеально идентичны даже в одной серии
Да нахуй мне ровно половина?
Частично сбить напряжения, чтобы перегруза явного не было
Я же не 6 вольт кондёры в выдающую 12 вольт схему собрался ставить.
Ну ESR удвоится, например, вместе с напряжением, а тебе зачем?
Что лучше - DSP или ПЛИС?
Лучше один на нужное напряжение.
На ВЧ есть резонанс емкости с паразитной индуктивностью, на частотах выше него импеданс кондера начинает расти, как у индуктивности. У последовательно соединенных ESR и ESL будут в 2 раза больше, соответственно пульсации увеличатся, а максимальная рабочая частота уменьшится. Глянь kemet ksim, чтобы примерно прикинуть для конкретных конденсаторов.
>>445461
Зависит от задачи. Плис лучше подходит для параллельных вычислений, DSP для последовательных.
https://youtu.be/FmvqK5lEwxk
Да, но все равно у меня ощущение, что в половине ра сидят одни и те же люди.
Как называется специальность, после которой можно работать ПЛИСовиком, ASIC разрабом?
"Вычислительные машины, комплексы, системы и сети", я правильно понял?
"Конструирование и технология электронных средств", но на самом деле похуй, по специальности тебя будут учить КР580, а математика база, которой ты потом будешь пользоваться осваивая актуальные знания по профессии у всех технарей одинаковая.
А на чем еще настолько же простом ты предлагаешь обучать студентов? И чем это будет лучше 8080?
>А на чем еще настолько же простом ты предлагаешь обучать студентов?
MIPS
>И чем это будет лучше 8080?
Конвейер, RISC.
Хорошо, а теперь расскажи, как студенты справятся с заданием написать программу допустим выдачи пилы на ЦАП, потом вручную перевести в машинный код и руками ввести эти коды на стенде? Это при том что до этого они не трогали руками ассемблер.
>Конвейер, RISC.
Чем это лучше для обучения?
>Чем это лучше для обучения?
Тем, что оно актуально, ёпт.
>потом вручную перевести в машинный код и руками ввести эти коды на стенде?
Под водовку и картофан.
Ты пишешь какую-то ерунду. Если цель лабораторной работы это показать на примере какого-то процессора что там внутри машинные команды, то зачем изощряться? Этот 8080 можно осилить за один вечер при подготовке к лабораторной работе, а потом забыть. Порассуждай еще тут об актуальности.
Студентам еще кучу предметов учить, что им там MIPS или 8080, сколько из тех кто пойдет работать по специальности будет потом касаться MIPS?
>"Вычислительные машины, комплексы, системы и сети"
Про принципы синхронного проектирования схем нам именно на этой специальности преподавали. На сколько знаю, на других специальностях такого не рассказывают.
Если ты о всяких триггерах, регистрах и счтечиках, т.е. основах на которых все строится, то на радиотехническом факультете на всех специальностях это изучали. Был еще курс о том как строятся всякие ЦОС штуки, такие как БПФ и быстрые свертки, но не на всех специальностях и препод был не то что совсем маразматик, но...
>триггерах, регистрах и счтечиках, т.е. основах на которых все строится
Да, но не только о них самих, а ещё про то что нельзя комб схемы ставить на тактовых входах, нельзя обратные связи в кобмб. схемах делать и всё такое прочее. А ещё про автоматы хорошо рассказывали, те что Мили, Мура, как из графа автомата схему получить и тд.
Заканчивал в 2005. Да, было что-то такое. И даже курсовая по WHDL была.
Но с нашего потока хуй кто ушел в микросхемостроение.
>а ещё про то что нельзя комб схемы ставить на тактовых входах, нельзя обратные связи в кобмб. схемах делать и всё такое прочее.
Нам не то что рассказывали, а заставляли прямо на лабораторных работах перед допуском к практической части для начала схемы синтезировать, а потом задержки руками считать и в комбинационных устройствах и в последовательностных. А если ошибся, то свободен и ждем на пересдаче.
>и всё такое прочее.
Про асинхронные счетчики например? Было дело, тоже считали для них задержки.
>как из графа автомата схему получить и тд.
Принцип тот же что и при синтезе любого последовательностного устройства, нашел чем удивить.
Но это все ерунда, ничего сложного по сравнению с другими курсами.
Если будущих ASIC разрабов и разрабов процессоров - то PDP-11, у него самая простая и лучшая архитектура и набор компанд.
Если специалистов, которые будут разрабатывать устройства на основе МК - то 8051, потому что научившись в этот мк потом без проблем можешь выучить любой другой мк.
>Но с нашего потока хуй кто ушел в микросхемостроение.
Почему никто не захотел(не смог?) связать жизнь со столь интересной деятельностью?
>асинхронные счетчики
Препод, помню, нас за такое чуть ли не матом крыл.
>Принцип тот же что и при синтезе любого последовательностного устройства
Ну я бы не сказал что прям тот же, автоматы строятся не совсем так как регулярные регистровые устройства.
>ничего сложного по сравнению с другими курсами
Я не про сложность, а про сам факт наличия. Со мной на работке один поцик работает, он заканчивал ту же шарагу что и я, только радистом, так вот он про такие вещи даже не слышал. Допускаю, что может у них и была пара лекций на эту тему, но он лютый раздолбай - мог и прошляпить. У нас же это были одни из основных предметов на 3-5 курсах.
Либо препод дурак, либо ты ничего не понял. Такое нельзя делать в FPGA, это безусловно верно. Простейший ассинхронный счетчик это два Т-триггера друг за другом для деления частоты. Или ты скажешь что тактовую частоту еще делить нельзя триггерами?
Ты как-то написал не понятно. Я не пойму, асинхронные счётчики можно делать, или всё таки нельзя?
А вообще, делитель частоты можно и нужно построить и на синхронном счётчике, работать будет не хуже чем тот, а может даже и лучше.
Если поделишь частоту одним Т-триггером и подашь эту частоту на счетный вход любого счетчика, то что получится в результате, если не асинхронный счетчик?
Если речь про FPGA, то это уже совсем другое дело, там своя сеть для тактового сигнала и все такое.
>Если поделишь частоту одним Т-триггером и подашь эту частоту на счетный вход любого счетчика, то что получится в результате, если не асинхронный счетчик?
Получится счётчик считающий импульсы на своём входе.
Если ты имеешь в виду, что использовать асинхронный счётчик, как на пике, для деления тактовой частоты и не для чего больше? - то конечно можно, но так мы получи деление только 2^n.
А если использовать нормальный синхронный счётчик, то можно получить деление на любое целое число, да ещё и скважность менять.
Ты спрашивал:
>асинхронные счётчики можно делать, или всё таки нельзя?
Ответ - можно. У тебя асинхронный счетчик получится сам собой, если в генераторе тактовой частоты по выходу стоит делитель частоты.
>Если ты имеешь в виду, что использовать асинхронный счётчик, как на пике, для деления тактовой частоты и не для чего больше?
Я имел в виду, что если использовать любой счетчик для деления тактовой частоты, и использовать получившийся сигнал для тактирования любого последовательностного устройства (например синхронного счетчика) то у тебя автоматически получится асинхронное устройство. А во многих генераторах тактовых частот по выходу стоит делитель. Я не предлагаю использовать асинхронные счетчики, я всего лишь пишу что вот оно, существует и проявляется в окружающей нас технике как минимум таким образом.
Поэтому либо препод у тебя дурак, либо ты ничего не понял.
>то конечно можно, но так мы получи деление только 2^n.
В этом ты не прав. Такая схема лишь частный случай. Раньше асинхронные счетчики использовали для уменьшения количества элементов, когда делали все на рассыпухе, конечно сейчас это по большей части история, но работало же.
>да ещё и скважность менять.
Генератор тактовой частоты, который выдает что-то сильно отличное от меандра - это будет чем-то слишком специфическим.
У меня это была соседняя "Информатика и вычислительная техника", кафедра вычислительной техники, перешел туда с вычислительных машин после 2 курса.
Поспрашивай лучше у студентов или посмотри на сайте ВУЗа/позвони туда.
Специалистов по интегральным схемам готовят МИЭТ в ДС и Политех в ДС2.
Видюхи гораздо лучше по хэшам на джоуль. А ещё есть асики. Плисы для майнинга давным-давно неактуальны.
>Ты спрашивал:
>>асинхронные счётчики можно делать, или всё таки нельзя?
Это был вопрос на уточнение. Было похоже что ты сам запутался.
>У тебя асинхронный счетчик получится сам собой, если в генераторе тактовой частоты по выходу стоит делитель частоты.
Я про то что делитель частоты можно построить на счётчиках двух типов, асинхронном как на пике >>445820 и синхронном как на этом пике. А первого, перед вторым преимуществ нет, а значит не нужен.
>то у тебя автоматически получится асинхронное устройство
Это не так. Синхронное устройство предполагает, что все его элементы тактируются одной частотой, т.е. все они (элементы) работают синхронно. А откуда эта частота поступает неважно, главное чтобы удовлетворяла требованиям. Генератор частоты не является частью устройства которое он тактирует.
>>то конечно можно, но так мы получи деление только 2^n.
>В этом ты не прав.
Прошу привести схему асинхронного счётчика которая может поделить частоту, скажем, на 5.
>Раньше асинхронные счетчики использовали для уменьшения количества элементов, когда делали все на рассыпухе
Ты бы ещё времена реле и ламп вспомнил.
Как не крути, а выходит что у асинхронного счётчика перед синхронным нет никакого преимущества, так что...
>Поэтому либо препод у тебя дурак, либо ты ничего не понял.
...Препод - толковый мужик. Похоже что ты втираешь какую-то дичь.
>буфер
Ты походу вообще не одупляешь как че работает, датащиты лень читать? Инглиш не можешь?
>А первого, перед вторым преимуществ нет
Перед тем как что-то утверждать, сравни задержки в этих схемах. Какая схема сможет работать на большей частоте?
>Прошу привести схему асинхронного счётчика которая может поделить частоту, скажем, на 5.
Для примера рассмотри схему https://www.ti.com/lit/ds/symlink/sn54ls193-sp.pdf А именно на 5 конечно не будет.
Остальной твой тупняк даже комментировать не буду.
>Какая схема сможет работать на большей частоте?
Ну ок, нашёл одно преимущество. Но и у синхронного счётчика, знаешь ли, цепь переноса можно сделать не последовательной, а параллельной.
>Для примера рассмотри схему
Тут вообще двоично-десятичный счёт. И посмотри сколько там элементов на пути прохождения сигнала - 3. Так что этот быстрее работать не будет.
Что касается конкретно твоего примера, я вообще не понимаю зачем его делать асинхронным. Синхронный бы работал не хуже. Частота, скажешь? Так там всего 32 МГц, для современной элементной базы это тьфу. Видимо по старым шаблонам с 80-х годов как штамповали так и штампуют.
>Остальной твой тупняк даже комментировать не буду.
Давай сделаем вид, что ты не обосрался, а у тебя просто шоколадка растаяла.
>Поясните по хардкору, какая область применения у ПЛИС?
ЦОС
Прототипирование асиков
Обработка больших потоков информации, коммутоторы Ethernet
Любое другое применение, где у стандартных решения не подходят: например не хватает производительности или слишком высокое энергопотребление, мало линий ввода-вывода
Что делать, если хочешь использовать в своих коммерческих проектах софт-процессоры, но при этом не готов раскошелится на дорогостоящие IP-блоки?
>Прототипирование асиков
Прототипирование цифровых асиков.
Пофиксил.
Аналоговые асики с помощью плис не выйдет прототипировать.
Я бы задался еще одним вопросом - может ли кто-нибудь узнать о наличии/отсутствии у тебя лицензии на эти ядра.
Ну, что бы сделал, например, я, если бы хотел продавать чьи-то коммерческие разработки для своей прибыли, но не хотел платить закупочную цену? Пошёл бы и украл, это же очевидно.
>софт-процессоры
Разве за microblaze (к примеру) берут дополнительные деньги? Оно в бесплатном вивадо вебпак доступно. У Intel в целом вроде бы аналогично, а у Lattice кажется все опенсурсное.
О какой периферии? Всякие контроллеры прерываний и ПДП, которые идут отдельными блочками, можно считать частью процессора, только опциональной, денег за них не требуют. Подключение внешней памяти (всякие (LP)DDR3/4 и прочее) - тоже есть. Мелочь вроде FIFO, портов, SPI, I2C и прочего - тоже дают в вебпаке. А что еще остается из того, что можно отнести непосредственно к софт-процессору?
FAE(field application engineer)
Инженер по применению. Типа инженер-манагер. Хз стоит ли бросать разработку, не заебет ли меня это.
Кому надо тот знает.
Сомневаюсь, что с таким знанием русского языка ты пройдешь первый тур собеседования.
Экземпляры, которые не способны выражать свои мысли строго и без формальных ошибок, испытывают большие трудности при взаимодействии с другими участниками производства и при оформлении документации.
Хотя, если вспомнить, как на пост-совке относятся к оформлению документации, то, возможно, тебя и взяли в какую-то парашу.
>Но появляешься ты в этом треде судя по всему достаточно регулярно. И если все так, то почему не ответил тому анону
Потому что я не такой частый гость здесь. Но вангования выглядят забавно.
Зачем это может понадобиться на относительно дохлых софт-процессорах? Если вдруг потребовалось такое, то скорее будет уместен SoC типа цинка.
>HDMI, DVI, DisplayPort
Но у Xilinx есть AXI VDMA, а дальше уже не проблема.
>MIPI
А это чем не устраивает https://www.xilinx.com/products/intellectual-property/ef-di-mipi-csi-rx.html ?
>USB
С этим действительно есть определенные сложности. Но в самом простеньком цинке оно уже есть.
>SATA
Этого действительно нет.
>а дальше уже не проблема
Хуй знает. Мне на список параметров и портов мультигигабитного трансивера даже смотреть страшно, не то что обёртку для него писать.
>даже смотреть страшно
Мне тоже. Однако скорее всего можно найти что-то готовое. Например Digilent дает для HDMI что-то (полу)готовое. Но я не пробовал, потому что не требовалось пока. К тому же можно взять внешний трансивер, тем более что все равно снаружи придется ставить буфер. Еще на работе в соседнем отделе один человек (который вряд ли такой крутой специалист, если за такую зарплату там работает) что-то такое сделал на трансиверах пятого циклона.
Только идея пихать HDMI в дохлый софт-процессор мне кажется сомнительной. Конечно я могу ошибаться, но с высоты своего дивана я так вижу.
(пикрилейтед)
Работаю в квартусе пока на уровне хэлоуворлда. Собсно у меня есть пара ламерских вопросов:
- В квартусе есть два режима: код на вхдл и принципиальная схема. Я, как настоящий олд, знающий, как собрать и проапгрейдить ЮТ-88, привык именно к схемам, плюс вхдл декларативный язык, а я привык к императивным. Как преобразовать вхдл-код в схему и обратно? Я нашел как сделать из вхдл кода компонент (symbol), но что у него внутри - не видно.
- В теории из компонентов я могу собирать на более высоком уровне схемы, но т.к. компонент - это отдельный файл, как его редактировать?
- Задумал сделать махарайку с миди-входом, сама разводка с оптопарой у меня осталась от аналогичных опытов с пердулиной. С FPGA непонятно, куда заводить сигнал и как его принимать в коде. На фото там есть ряд RX и RT в две линейки по бокам и куча всего. Частоту, на которой работает миди, я могу организовать на счетчиках, но как засинкать частоты разных девайсов?
>Частоту, на которой работает миди, я могу организовать на счетчиках
Только использовать ее в качестве тактовой частоты не стоит. FPGA - это даже близко не набор рассыпухи, которую можно соединять как угодно. Как минимум по этому вопросу тебе нужно знать что для тактовых сигналов в FPGA есть отдельные линии, которые имеют свои ограничения. Изучи хотя бы в первом приближении внутренности FPGA.
>но как засинкать частоты разных девайсов?
Скорее всего это не требуется, пусть все работает на большей частоте, а твои низкочастотные сигналы, которые ты собираешься использовать в качестве тактовых, лучше использовать в качестве стробирующих.
>плюс вхдл декларативный язык, а я привык к императивным.
Это не совсем так, даже скорее всего совсем не так.
>Как преобразовать вхдл-код в схему и обратно?
Не стоит заниматься глупостями.
>С FPGA непонятно, куда заводить сигнал и как его принимать в коде.
Открой схему, даташиты почитай. Помигай для начала светодиодами на плате.
Спасибо, посмотрю. Редактировать там нельзя?
>>448636
>Только использовать ее в качестве тактовой частоты не стоит.
Это не совсем тактовая, но да, мне нужно просто с определенной частотой мониторить RX на появление стартового бита, отличая его от шума.
>для тактовых сигналов в FPGA есть отдельные линии
В плате уже есть генераторы тактовой частоты и можно пользоваться любым из доступных, в зависимости от нужд и схемы.
>пусть все работает на большей частоте
Там же типа UART, и мне надо таки понимать, когда приходит стартовый и конечный биты, для этого у меня должна быть частота больше или равная частоте сигнала, это понятно. Но тут мне надо точно понимать, что у меня между старт и стоп битом ровно восемь с данными.
>Не стоит заниматься глупостями.
Почему? Принципиалки я хоть сейчас рисуй, а тут язык еще, спеку учить.
>Открой схему, даташиты почитай. Помигай для начала светодиодами на плате.
Да эт все пройденный этап. К махарайке не то чтобы подробные даташиты и схемы идут. Но вроде разобрался, можно пхать куда хочешь в те две шины.
>вхдл
ВХДЛ - днище, учи Верилог.
>привык именно к схемам
На схемном вводе далеко не уедешь, один сраный автомат заколупаешься делать. Поэтому ещё раз, учи Верилог.
>Как преобразовать вхдл-код в схему и обратно?
https://youtu.be/Jt87cbQThSc?t=10560 с таймкодом
>>448671
>Там же типа UART, и мне надо таки понимать, когда приходит стартовый и конечный биты, для этого у меня должна быть частота больше или равная частоте сигнала, это понятно. Но тут мне надо точно понимать, что у меня между старт и стоп битом ровно восемь с данными.
UART на схемном вводе - специально для тебя. Начиная с 29 лекции и далее:
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
>Принципиалки я хоть сейчас рисуй, а тут язык еще, спеку учить.
Учи классику — "лучше день потерять, а потом за пять минут долететь".
>На схемном вводе далеко не уедешь
Как по мне на схематике гораздо удобнее ваять проекты, естественно не на базовых логических элементах, а превращая свой код в символы. Сразу отпадает необходимость вести схему связей в каком-нибудь визио/компасе. И разбираться в чужом проекте так гораздо легче.
>ВХДЛ - днище, учи Верилог.
Верилог - это язык для долбаёбов, если можешь хоть немного в абстракции то лучше VHDL.
Тут поддержу. Верхний уровень делать из блоков, соединённых по интерфейсам — очень удобно, пиздец как удобно (вроде block design в vivado). Описание типа structure в HDL — это просто какая-то моча говна из бесконечных объявлений wire, накопипащенных по названиям портов соединяемых модулей, читать которые невозможно. А вот где надо описать работу на уровне регистров и гейтов через behavioral — там только HDL без вариантов.
>если можешь хоть немного в абстракции то лучше VHDL
Вроде бы могу, но не уверен. О каких абстракциях идёт речь?
>если стрелять в ногу то ходить неудобно
Ну, наверное. У меня к виваде много претензий, но тут их скорее нет.
Спасибо огромное за видосы, оч полезно. Странно, что они мне не попадались раньше.
>ВХДЛ - днище, учи Верилог.
Тут уже микросрач поднялся ВХДЛ против Верилога, в чем же неоспоримые преимущества того или иного?
>>448710
Отчасти соглашусь, но бывает тоже муторно каждый раз пересоздавать символ для модуля если в нём изменились порты. Да и в сложном топлевеле обилие соединений также не способствует лёгкому восприятию схемы.
>Сразу отпадает необходимость вести схему связей в каком-нибудь визио/компасе. И разбираться в чужом проекте так гораздо легче.
Ну здесь частично спасает РТЛвьювер. Последние версии Квартуса научились снсоно его рисовать.
>>448722
>Странно, что они мне не попадались раньше.
Хз, первые выскакивают по запросу "verilog" и "quartus".
>в чем же неоспоримые преимущества того или иного?
За Верилог скажу, что если знаешь С/С++ то перейти на Верилог будет проще, ибо синтаксис очень похож, точнее там гибрид С и Паскаля. Как по мне зря, лучше бы полностью с Сишника передрали. По этой причине в последствии SystemVerilog будет проще освоить, а тенденция идёт к тому что именно он и победит. А о каких абстракциях говорит этот >>448703 месье, называющий приверженцев противоположного мнения долбоёбами, мне не ведомо.
>Ну здесь частично спасает РТЛвьювер. Последние версии Квартуса научились снсоно его рисовать.
Он даже не предназначен для этого. Это инструмент, чтобы искать, какого хера сигнал соптимизировался в константу вместо того, что ты от него ожидал. Изучать функциональную структуру проекта по выходящим с разных сторон блока простыням цепей, в которые синтезировались интерфейсы — это несерьёзно.
>Он даже не предназначен для этого.
Я этого и не утверждал.
>выходящим с разных сторон блока простыням цепей
С лева входы, с права выходы, всё как обычно.
>простыням цепей
В РТЛвьювере есть группировка по шинам, если ты не знал, так что цепей там будет не больше чем в схемном файле. Хотя в схемном файле необязательно провод тянуть через всю схему, есть соединение по имени. Но если таких соединений много, то чем это лучше
>какой-то мочи говна из бесконечных объявлений wire, накопипащенных по названиям портов соединяемых модулей
?
Правда в схемном файле Квартуса цепи можно объединять в каналы и подключать действительно со всех сторон, но это несильно помогает.
В общем моя мысль такая, что блок-схема топлевела - хорошо, но без неё вполне можно обойтись.
Чтобы клок включился за полтакта до своего положительного фронта, иначе может возникнуть ситуация, что
1) сначала клок поднимется, потом он включится
2) от этого первый фронт включенного клока на выходе съедет немного назад
3) период между соседними фронтами клока уменьшится
4) тактируемая схема один период будет вынуждена сработать на более высокой частоте, чем та, на которую она была рассчитана, логические состояния где-то изменятся неправильно, данные распидорасит, придётся всё ресетить
По принципиальным отличиям да, на этом всё. Есть ещё мелкая фигня типа интегер по дефолту сигнед, а бит — ансигнед.
for (i = 0; i < 17; i = i + 1) {
for (t = 7; t < 25; t = t +1) {
number <= [t:i] key;
}
}
Сложно сказать, я знаю только verilog и vhdl, а этот код написан ни на одном из них.
Потом проверил msel - там была половина питания (хотел протестить разные режимы, поставил резисторы в обе стороны, забыл убрать ненужные), исправил, все заработало.
Очевидно он не покупал. У меня на работе тоже куча таких валяется, причём нигде не числятся, но мне пиздить зашкварно.
Я сам себе собрал.
я на этой няше учусь тупо потому что прородитель 5576ХС
есть ещё целая куча МАХ2, кому надо - вышлю это говно для самоделочных отладок
>Очевидно он не покупал.
Я себе уже тысяч на 100 накупил отладок инб4: даже ни одну нормальную не купил. Почему бы и нет?
И линуксиодом.
Сап, плисоводы. Посоветуйте плз откуда вкатываться в microblaze?
Сам я вроде не совсем нуб, родом с алтеры, на алтере делал пару проектов. Одна из первых функций которую хочу реализовать - обновление прошивки во флешке. На алтере я делал это на верилоге конечными автоматами, но теперь на Xilinx повторять подобный подвиг уже не хочу, и нужен софт-проц.
Picoblaze вроде освоил, программное шевеление ножками spi получил 2,5МГц при клоке проца 50МГц. Приделывать аппаратную периферию к слабому picoblaze смысла не вижу, отсюда вот и вопрос.
В пикоблейз я пыттался начать с книжки Зотова, но это пиздец полный. Во время чтения зотова я случайно наткнулся на гайд самого Кена Чапмана из комплекта KCPSM6, и это был как глоток свежего водуха после душного зотова.
Нет ли каких-то нормальных гайдов по микроблейзу?
Пикрил - скриншот страницы той самой книги Зотова. Вместо того чтобы сказать "Выберите Device Size, Package и Грейд" - эта стена текста.
Мои мозги плавятся от этой книги, спасите помогите
Мигал. Светодиодом на RGB панэльке. Зависимость есть.
>>449939
Когда-то вкидывал кусок чека из ЭФО. За свой счет брал. Сколько времени то прошло. Подфапываю на православную Altera UP2.
>>398368
Вообще-то там есть личная подпись. Так что запросив пруфы моментом сольешься. Пруфанешь с датой и подписью?
>Чем мгтфные сопли усаживал?
Не понимать вопрос. Обычная термоусадка же. Почему в термоусадке, а не в стандартных пластиковых гнездах?? Уже не вспомню почему так делал.
Если вопрос чем грел - то феном, очевидно же.
Это херню со светодиодами надо переделать.
>Обычная термоусадка
Я подумал там как у родешварцевских сопель для логического анализатора внутри сердцевина и они в бх вставляются/вынимаются.
>Посоветуйте плз откуда вкатываться в microblaze?
С разглядывания референс-дизайнов от Xilinx.
Вот такие штуки, например. Идеально садятся на стандартные 2.54 и при этом не так сильно убиваются со временем.
https://www.rohde-schwarz.com/ru/products/test-and-measurement/oscilloscopes/probes/oscilloscopes-probes-accessories_251225.html#image10849
И въехал и нет... Чем оно отличается от обычных цанговых панелек для микросхем в DIP корпусах (исключая тот факт что даже кувалдой не вбить обычный вывод разъема в цангу для вывода микросхемы)? Они просто больше размером? Или я дебил или у меня цанги почти одноразовые были. Первый раз туго идет + почти не вытащить и после нескольких втыканий-вытыканий похожи на обычные панельки где контакты из загнутой жести или подобного.
Может подскажешь чем вменяемым можно цепляться на выводы SOIC-а и поменьше с шагом выводов 0.8, 0.65, 0.5мм?
>Чем оно отличается от обычных цанговых панелек для микросхем в DIP корпусах
Тут оно скорее как замена dupont (пик1). Т.е. рассчитано на кучу перетыканий, но гораздо прочнее.
>цепляться на выводы SOIC-а и поменьше с шагом выводов 0.8, 0.65, 0.5мм
Ну в идеале прищепка, но можно использовать крючки, они охуенны, даже китайские (пик2-3), но лучше родиковские конечно.
Алсо, на третьем пике прошивал плисину напрямую с ножек.
Не стоит вскрывать эту тему. Да это кривая легаси-хуйня, не обращай внимание, ножкодрыг относительно быстрый.
Сап, плисаны. Поясните, пожалуйста, за set_max_delay констрейн у хилых. Это влияет на place and route? На что это вообще влияет? Интересует в частности вот какой случай. На работе многие пихают его, когда тайминг на каком-то внутреннем участке между двумя флип-флопами с общим клоком не сходится. Хотя у хилых нигде нет такого варианта применения. Из сбивчивых объяснений одного индуса на работе я так и не понял, почему так можно делать и что это помогает достичь. Может кто-нибудь просветить, пожалуйста?
Вхдл строже, меньше шансов накосячить. Еще можно прокидывать матрицы между блоками.
>Хотя у хилых нигде нет такого варианта применения.
Естественно, это тупо отключение проверки тайминга по стандартным правилам, замена требования по максимальной допустимой задержке сигнала на взятое от балды менее строгое.
Это может работать или не работать в зависимости от того, насколько сигнал критичен. Если это какая-нибудь кнопка. то похуй, но вообще-то для таких случаев используется set_false_path. Если это разряд на шине, то можно знатно наебать самого себя при отладке.
Ебать у вас там индусы, конечно.
Спасибо, сам тоже почекал кучу всего сегодня на эту тему. У нас оказывается это практически common practice, а потом удивляются, почему в лабе нихуя не работает при билде с как бы хорошими таймингами. Пиздец, никому нельзя доверять, особенно индусам. Теперь все только самостоятельно проверять.
>Вхдл строже, меньше шансов накосячить.
Надо просто ворнинги компиляторов читать, а не хуй на них забивать.
Анончик, вы там сейчас буквально идёте по пути легендарного Боинга и его популярного 737МАХ. Не знаю, кто это такое придумал наверняка, как обычно, эффективный менеджмент, проигнорировав мнение R&D, но хорошего из этого ничего не получится. Вангую, индусы там не просто закидывают листьями и ветошью небольшие violations в пределах наносекунды, а у них там за такт ебашутся на LUTах сразу все вычисления без малейших попыток в конвейер.
Эта среда старше студентов, которым предстоит её изучать. На аналогичного возраста операционке.
Не то что бы с её помощью нельзя было научиться основам цифрового дизайна, но ты же сам спросил за среду. Если доведётся поработать в актуальных Vitis/Vivado — будешь смотреть на них как на новые ворота кабину истребителя.
Там правда за такт ебашится несколько сложений, умножений многоразрядных чисел, но это в асике, который мы верифицируем на плисине. Проблема в том, что никто не дает трогать асиковский rtl и индусы прикрывают фейлы по таймингам вот такими констрейнами, а потом челы в лабе смотрят на результаты и охуевают. Так и живем.
>Там правда за такт ебашится несколько сложений, умножений многоразрядных чисел, но это в асике
Даже асик не поможет от такого, лол. Если, конечно, не запускать его на 1MHz.
Теоретически есть возможность нормально делать вычисления, идущие дольше одного такта, без разложения на конвейер, для этого на регистры вместе с clk должны приходить сигналы clken. Если они идут, скажем, один раз в 10 тактов, то вычислительная логика после появления новых данных имеет возможность устаканиваться следующие 10 периодов clk, и в течение этого времени регистр на выходе не будет пытаться защёлкнуть результат. Такое делается при помощи set_multicycle_path.
Разумеется, количество операций в секунду падает до частоты clken, а честный конвейер может их молотить на скорости clk. Индусам про это не рассказывай — не сможешь потом отличить, где они мухлюют, а где реально делают multicycle_path.
Я когда-то рисовал процессор условного микроконтроллера и у меня вышло так, что каждая инструкция исполняется 3 или 4 такта.
В первый такт идёт запись в регистр инструкции с ОЗУ (к ОЗУ от процессора шина read/write + data на запись N бит + дата на чтение N бит + адрес) и тут же происходят вычисления в АЛУ, открывая нужные регистры исходя из инструкции и тут же записывая результат в промежуточные невидимые регистры.
Во второй такт из этих регистров идёт запись в РОН.
В третий такт там что-то с load register и store register инструкциями связано, уже не понимаю свои каракули, у меня тут тупо шины и провода между модулями проведены.
Я просто думаю, неужели в реальных процессорах какие-то фокусы с нижним и верхним фронтом, чтобы удвоить тактовость, ещё и разные длины дорожек сделать, чтобы из одного места один сигнал успел уйти, до того как придёт другой?
Не путай пропускную способность и задержку. процессор может принять одну инструкцию за такт, но выполняет её за кол-во ступеней конвейера тактов.
Анон выше написал в целом правильно. Однако можно взять двухпортовую память, тем более что блочная память в FPGA вся двухпортовая, за исключением каких-нибудь флексов, которые не стоит принимать во внимание. Если с двухпортовой памятью один порт выделить под считывание следующей инструкции, а другой под данные, то ситуация улучшается. Получается что-то вроде гарвардской архитектуры. Или можно взять раздельные памятюшки под код и данные. Если после этого ограничиться инструкциями попроще, т.е. чтобы каждая инструкция делала поменьше всего, то легко сделать по инструкции за такт почти что без конвейера. Вот пример такого процессора https://excamera.com/files/j1.pdf
for (i = 0; i <= N; i = i + 1) begin
case (i)
0:temp [7:0] <= number[7:0];
1:temp [7:0] <= number[8:1];
...
endcase
Как оно должно было работать по твоей задумке?
Если рассматривать синтезируемое подмножество, то можешь считать что весь код в блоке always выполняется (почти) мгновенно. И это в симуляторе код выполняется, а синтезируется оно в константу. Еще присваивания у тебя неблокирующие, возможно что ты с этим тоже путаешься, но и с блокирующими ничего бы не изменилось.
Если ты хочешь чтобы в temp по очереди с какой-то задержкой что-то откуда-то писалось, то сделай счетчик и так далее.
always@(posedge clk) begin
i <= (i + 1) % N;
case (i)
0:temp [7:0] <= number[7:0];
1:temp [7:0] <= number[8:1];
...
endcase
end
И оно будет у тебя переключать по фронту clk.
Спасибо за дельый совет.
Разглядел туториал по microblaze от avnet, там всё предельно понятно и работает.
В том туториале показано что при создании проекта софтовой части микроблейза можно выбрать example test peritherial
Но вот теперь я добавляю xps_spi, а где брать к нему драйвер? Хотя бы хедер с описанием регистров устройства, неужели надо самому рисовать по даташиту xps_spi?
И ещё вопрос: шину какую надо брать, PLB или AXI? Какая шина занимает меньше ресурсов? Или на что приходится смотреть при выборе той или другой шины?
Дрова есть в BSP, который генерируется SDK на основе hw description, экспортированного из Vivado. В BSP же есть example designs под microblaze (они генерируются в разделе для соответствующего IP-кора).
Если я создам, скажем, регистр с неким стартовым значением
reg [3:0]REG;
initial REG <= 4'd5;
always @(posedge Clk, posedge Reset)
begin
if(Reset) REG <= 0;
else
if(Shift) REG <= {REG[2:0], D};
end
то после асинхронного сброса он обнулится. А нужно чтобы он был равен стартовому значению, т.е. пяти.
Можно, конечно, в сбросе написать и
if(Reset) REG <= 4'd5;
но как эта пятёрка будет сформирована? Скорее всего она будет сформирована путём проставления инверсий на выходах триггеров регистра. А ведь это приведёт к искажению результата задвигаемого значения. Если бы это был первый Сыклон так там, по мимо асинхронного сброса, была ещё и асинхронная установка и такой проблемы бы не возникало. У триггеров нынешних плисин есть только асинхронный сброс и как быть в этом случае не совсем понятно.
Да как-то был уже такой опыт, правда не помню где и когда. Да и других вариантов не вижу.
>судьба такая
Вообще непонятно зачем убрали асинхронную установку в триггерах. Я, конечно, всё понимаю - минимизация, экономия, вот это всё, но всё же.
> FDPE-регистры
Это что за зверь.
Arms Sales:Termination of (a) sales to Russia under the Arms Export Control Act of any defense articles, or defense services, and (b) licenses or other approvals for the export to Russia of any item on the United States Munitions List, except in support of commercial space cooperation following a six-month transition period, and government space cooperation.
Exports of National Security-Sensitive Goods and Technology:Prohibition on the export to Russia of any goods or technology on that part of the control list established under Section 2404(c)(1) of the Appendix to Title 50.
Можно. Это же довольно размытое понятие. Им и сейчас вроде как нельзя на военку торговать, но все равно пропихивают под видом гражданки.
>Им и сейчас вроде как нельзя на военку торговать, но все равно пропихивают под видом гражданки.
Что значит "под видом"? Сейчас им можно торговать с гражданкой и нельзя с рядом предприятий под санкциями типа Алмаз-Антея. А теперь в РФ в принципе нельзя будет оставлять продукцию, имеющую значение для обороны и национальной безопасности.
>рядом предприятий под санкциями типа Алмаз-Антея
И они все равно покупают виртексы и ултраскейл+, просто дороже. Вангую всегда найдут способ.
А уж про софт на сайте зайлинкс каждый раз спрашивают сферу деятельности и страну без пруфов, соответственно ставить все кроме рашки.
И это прокатывало в каком-нибудь Иране, к примеру? Не стоит считать всех чересчур тупыми, мне кажется.
Даже в советское время умудрялись покупать то что нам не продавали, через вторые и третьи руки. А вообще у них капитализм, санкции санкциями, но денег то всем хочется, как говорится: ничего личного, только бизнес.
Ну а сейчас, как бы там ни было, братушки-китаюшки не дадут пропасть.
Я думаю, ты понимаешь, что мы в данный момент не в пораше, и речь не о том, найдётся ли взвод чепиг с канистрой новичка и чайником полония, которые проберутся к врагу и скачают там вивадо для нужд оборонки, тем самым показав, какие пиндосы тупые, только и могут, что программировать вивады у себя в силиконовой долине, а про смекалочку даже не слышали.
Речь о том, что для кучи контор риск сидеть без официальной вивады, корок и предсказуемости поставок плисин может оказаться неприемлемым, и анону-плисовику придётся идти торговать шаурмой.
Поищи у китайцев и иранцев, я оттуда последние патчи к САПРам Cadence тягаю, если на наших и забугорных торрентах нет. Как правило, всегда находится кто-то, время от времени сливающий последние версии.
>>453944
Пару лет назад ЧиД не смог поставить санкционку - просто обратились к другому поставщику, привезли без проблем.
Имхо эффект от санкций преувеличен.
Лол, ещё после первых санкций предлагали прожигаемую космическую пзушку за 1.5 лимона. чем закончилась история не знаю, я больше там не работаю
Можно, но плата со стратиксом/виртексом и кучей памяти будет стоить 5к долларов, дешевле на видюхах.
>для кучи контор риск сидеть без официальной вивады
А кому это создавало трудности.
Мы в околооборонной конторе всю жизнь сидим на левых САПРах и никого это не напрягает.
>и предсказуемости поставок плисин
Это тоже всегда было. Жили как-то раньше и дальше проживём.
Бамп вопросу
Хз че там у тебя,
1) заведи тупо 448 регистров и раздай по проекту, каждый должен писаться из одного места (или с арбитражем заебешься)
2) используй Avalon-mm или AXILite
Чмоки
>в актуальных Vitis/Vivado
Т.е. в мире существовали вещи, ещё более дебильные чем современные высеры Xilinx?
>Как они по сравнению с современным кряктусом?
>Не забагованы
Даже после 9 кактуса вивада 2020.1 как говно багованное ощущается. Хз как люди на ней годами работают.
делал лабы в квартуе в прошлом семестре. 4К не поддерживает совсем буквы не читаемые и при этом часть кнопок пропадает так что еще как забагованный
>4К не поддерживает совсем буквы не читаемые
Надо в свойствах запуска просто ставить масштабирование, как и в любой другой старой проге на вин10.
Охуеть, да это же бюджетная девборда для 5576хс!
Какая вкусняшка. Правда не мое. ПоФАПал.
У меня правда немного бомбит что что у флексов, что у макс 7000 всего два оффициальных тактовых входа.
На самом деле эта некрофилия полезна для тормозов - проект синтезируется намного быстрее чем под тот же циклон или стратикс и моментом заливается. Хороший такой плюс для неумеющих в моделсим.
Уже стер полсвоей шишки на эту ФАП фантазию. Где бы выкопать? Что это за ёбань? Где бы схемку на нее глянуть? Как не ёбнуться когда сам начнешь писать под нее конфигурацию?
флексоеб
>Как не ёбнуться когда сам начнешь писать под нее конфигурацию?
Начни с чего-то уровня пикрелейтед и подобных девайсов, где лепили кучу простых стареньких PLD вместо одного МК или ПЛИСины. Принцип тот же.
>Хороший такой плюс для неумеющих в моделсим.
Не уметь в моделирование — это безнадёжная профнепригодность.
https://www.tiktok.com/@ehleonorahatcuka/video/6932832673270402310
в нормальной.
в моём "высшем учебном заведении" на всю группу была одна отладочная платка на основе атмеги 8. Садился самый умный и проверял на ней свой говнокод, а остальные смотрели. Ещё ругали за постоянное перепрограммирование, ибо это уменьшает ресурс, лол. Про ПЛИС вообще никто не говорил ничего и лаб естественно небыло, ибо препода знающего ПЛИС и умеющего с ней работать просто нет.
и это специальность, напрямую связанная со схемотехникой! Сейчас, на сколько я понял, там даже этого нет, а все дипломы уровня - измерить температуру в помещении и если она выше N градусов - включить вентилятор. Естественно на ардуино, лол.
Это норма. У нас то же на курсе "Цифровая схемотехника" в разных инкарнациях ничего не было, только симулятор Xilinx ISE на лабах.
Определенно интересный симулятор внутри был - можно было в "реальном" времени задавать сигналы и смотреть на них реакцию, а не так что подсовываешь готовый waveform и смотришь на результат симуляции. Генерировать руками клок это было больно.
А у нас даже плисочных симуляторов не было. Цифровые схемы моделировали либо в мультисиме, который вечно тормозил и лагал, либо в каком-то самодельном убогом симуляторе, видимо это была чья-то курсовая или даже дипломная работа. Зато препод пояснял по хардкору за синхронное проектирование, кек.
>>457797
>в нормальной.
А где это у нас такие нормальные? Платы эти не дешёвые, сомневаюсь что даже в МГУ такое практикуют - раздавать на дом каждому по отладке.
Скорее всего это и было снято в непосредственно в шараге.
>Зато препод пояснял по хардкору за синхронное проектирование, кек.
Для этого много ума не нужно, асинхронщина то посложнее будет.
Тут все зависит от преподов.
У нас на одном предмете был десяток старых терасиков на циклонах 3, на группу как раз хватало.
Другой препод развел, заказал и собрал пару десятков кастомных дешевых плат на вторых/третьих циклонах и наделал к ним периферийных плат с энкодерами/драйверами/АЦП/ЦАП/etc. В итоге за сравнительно небольшие деньги обеспечили железом несколько предметов.
Вообще новый терасик - это лютый оверпрайс, взять ту же de2-115 за 50к+ и китайский аналог a-e115fb за 10к.
Для неё тоже много ума не нужно. Нужно только немного ушибленности, чтобы пытаться в неё на плисах, которые архитектурно для этого не предназначены.
Это не совсем так. По крайней мере задачи синхронизации клоковых доменов встречаются весьма часто, можешь посмотреть количество результатов по запросу в гугле. Таким образом во многих более-менее сложных конфигурациях будет заметный кусочек асинхронщины.
Да я не про ум, а про то что схемотехнику нам преподавали фактически в базисе рассыпухи, где асинхронщина вполне себе нормально живёт, но препод тем не менее всё равно топил за синхронное проектирование.
>>457904
>ообще новый терасик - это лютый оверпрайс, взять ту же de2-115 за 50к+
300 баксов академическая цена
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=502
Только говорят хрен купишь в связи с санкциями.
Ох и зажрались программисты
https://2ch.hk/po/res/42638471.html (М)
Или ПЛИС-разработчиков это не касается?
initial
begin: sin
reg [15:0]Word[7:0] = {16'hA57E, 16'h8000, 16'hA57E, 16'h0000, 16'h5A82, 16'h7FFF, 16'h5A82, 16'h0000};
for(integer i = 0; i <= 7; i++)
begin
for(integer j = 15; j >= 0; j--)
begin
DI = Word[i[2:0]][j];
@(posedge C);
DI = 0;
end
end
end
Для того чтобы в МоделСиме вывести на диаграммы переменную Word пишу
add wave -hex sin/Word
Но как вывести переменную i?
Пробовал написать так:
for(integer i = 0; i <= 7; i++)
begin: i_
Т.е. блоку присвоить имя i_ и вывести на диаграмму командой add wave -hex sin/i_/i
Но не получается.
Сам юзаю Diligent ARTIX-7, но для детей нужно попроще, в районе 6-7к на штуку.
Где купить сабжа в РФ, чтобы с чеком и доставкой в ДС?
Перерыл половину магазов, 20к+ минимум по цене.
Цистерну чая тем, кто не останется равнодушным.
Себе возьму, но для цели не подойдёт. Они заказываются в Китае, что не кайф, тяжело провернуть офф закупку. Есть альтернативы, которые можно найти в России?
Хотя не надо, они уже всё.
Посмотри Arduino Vidor, в рашкомагазинах есть. C Квартусом работает.
https://amperka.ru/product/arduino-mkr-vidor-4000
Благодарствую, гляну. Выглядит неплохо на первый взгляд
Мне кажется, что за эту цену можно уже самую простенькую терасик смотреть. Лично брал через эфо, правда 4 года назад. Если официально через юр лицо покупать, то мб и академическую цену можно выбить.
Братан,
\t\t\tчесно0x20говоря\r\nтупо\tлень\tпарсить0010000твой8'd32говнобенч\n\r
Думаю, если запостишь почитабельнее, то подскажут
Да как бы содержимое бенча тут вообще ни при чём. Скорее всего, переменную нельзя добавить на дашбоард потому что он предназначен смотреть сигналы, а не переменные. Мне, по крайней мере, ни разу не приходило в голову им переменные смотреть. ХДЛ-код это же описанная железка, только к физически существующим объектам можно прицепить осциллограф, а физически сущестуют в железке только wire и reg.
Но это не точно.
Так я ж не виноват что макака тег для выделения кода не может прикрутить. Вон уже кто-то добрый поправил.
>>458683
ХДЛ-код он только тогда ХДЛ-код когда в прошивку компилируется. А когда запускается на симуляцию то по сути скриптовый язык, немного специфический, но в принципе ничего необычного. Вот как говорит этот >>458738 господин я делал, так работает. Но почему я не могу вывести переменную объявленную в шапке цикла мне категорически непонято. По сути она должна быть видна в этом блоке и достаточно только дать ему имя. Но её не видно.
А если, как ты говоришь, переменные не выводить, то как же свой говнобенч отлаживать?
ну что, FPGA-инженеры, смогли войти в средний класс?
https://2ch.hk/po/res/42674731.html (М)
или деньги на этом рынке не такие уж?
Проще смириться с особенностями моделсима.
Предполагаю что причина подобного поведения в области (времени) существования переменных, объявляемых подобным образом. Если Word существует можно сказать что непрерывно, то с i, j это не так. Сейчас то они вроде как существуют непрерывно, но если вставить перед циклом @(posedge C);, то уже все. Можно предположить что Wave может выводить только сигналы с (гарантированной) непрерывной областью существования.
Самое странное, что если переменную объявить внутри тела цикла, то к ней доступ есть, а вот если именно в заголовке, то уже нет.
> но если вставить перед циклом @(posedge C);
А это как влияет?
Я хотел сказать 2⁹ потому что вход + running disparity.
Официальная флэшка легко меняется на сторонние, надо просто сверить коды операций и тайминги по даташиту + разрешить ее в настройках. Проверял замену epcq128 на en25qh128 и n25q128a13e. Посмотри еще циклон 5 и 4, они дешевле и достать проще.
>Посмотри еще циклон 5 и 4, они дешевле и достать проще
Вот как раз с ними и сравнивал и даже без учёта флешки циклоны получились в 5+ раз дороже младших максов, под проект реально хватит 10м02. Но будет занимать 80% плисины.
>Но будет занимать 80% плисины.
Это залет, Господин. У фиттера может начаться попаболь при попытке вписаться в нужные тайминги и ограничения. Без синтеза реального проекта это очень и очень плохая затея.
>при попытке вписаться в нужные тайминги и ограничения.
Там частоты <50МГц. Изначально проект был на втором циклоне.
Если у тебя основной критерий это стоимость, то может быть посмотришь на Lattice? Если я не ошибаюсь, то у них вроде аналогичные по количеству LUT есть подешевле, только умножителей меньше, а блочной памяти наоборот больше. Но это я так, теоретически, сам я их не касался.
Несколько факторов помимо дешевизны. Например полное отсутствие желания возиться с легаси и реворкать проект под другого вендора. В идеале просто поменяю плисину, поменяю пины, примитивы, если будут отличия и все.
В чем их ИЛИТНАСТЬ?
Если проект готовый, перекомпилируй под 10М04/02 да посмотри, куда влезет, это не займет много времени.
Сначала без пинов, потом с пинами.
Я только PLL заново добавлял, остальное само перекинулось.
Лучше брать с запасом, фиттер может начать хуевничать и на низких частотах.
Вот кстати и вылезла проблема младшего макса - он не умеет инициировать памяти.
Есть конечно костыль через юфм, но мне лень ебаться с этим, лучше с запасом поставить предпоследний снизу макс. На нем все нормально скомпилилось, но пару ядер пришлось заменить.
А так ещё мелочи типа отсутствия 24ма при 3.3 лвттл.
https://citizen1980.livejournal.com/310.html
"Я отношусь к среднему классу", — с гордостью говорит человек на Западе, а потом выходит из ветклиники, в которой работает, садится за руль автомобиля и возвращается в свою виллу. На балконе виллы — благоухающие цветы и обеденный столик со стульями. "Я отношусь к среднему классу", — с гордостью говорит врач в России, а потом подходит к подъезду, возле двери которого толпится круг из десятка курильщиков, протискивается между ними, заходит в свой подъезд и нажимает на копчёную, обугленную кнопку, которая изначально была белоснежной, чтобы лифт (картинки 26 и 27) его поднял на 8-й этаж "виллы". На балконе "виллы" — лестница-стремянка, матрац, удочка и старый холодильник.
>>460077
Лол, опять эта кривая паста.
Ищи вакансии. Удаленка в разработке аппаратуры - вещь редкая из-за специфики профессии.
Зарубежный вариант очень маловероятен - помимо отправки отладочной платы с сомнительными гарантиями нужно будет потом отлаживать твою прошивку на реальном устройстве, в том числе в составе системы, а позже иногда оперативно вносить корректировки и проверять их там же. Отладка запросто может занять пару недель с прототипом, питальником, осциллографом/анализатором и паяльной станцией/девочками с местного монтажного участка наперевес.
Проще взять местных васянов или понаехавших китайцев.
Вполне реален вариант с частичной удаленкой по договоренности в городе проживания.
Если ты с Украины/Казахстана/etc, можно перекатиться к нам, взять квартиру в нормальном районе/хороший загородный дом и ведро, к 35-40 все выплатить.
Прошаренные люди с опытом и кучей связей типа дихальта разрабатывают свои устройства и удаленно работают на кучу заказчиков, но таких очень мало.
К 40 годам можно и получше варианты поискать, чем квартира в ипотеке и жизнь в России
возможно
Жиза.
представим что я типичный длбб, зачем мне может понадобиться дома ПЛИС?
сажа сука
Ну, например, несколько лет назад тут один анон показывал свой самодельный SDR трансивер. А сколько еще не показывало?
Вычислительная мощь вообще-то никогда не будет лишней для любителей. Например, можно сделать такую ЦОС вместе с помехоустойчивым кодированием, с которыми и современные суперкомпьютеры не справятся, но зато будет немного помехоустойчивее чем то, что используется сейчас. Причем ничего сверхсложного, что-то на уровне того чтобы взять фильтр с очень большим порядком (причем максимально тупо, без быстрой свертки) и сделать декодер Витерби для полиномов очень большой степени.
А есть где почитать про это в популярной форме? Я умею в линейную алгебру и ЦОС, но грызть сухо-академично не готов, если мне это не сдавать и не делать по работе. С другой стороны, всё это должно быть очень просто-интуитивно на уровне реализаций, если ты не академик, вычисляющий, сколько нулей после запятой осталось до предела Шеннона.
Знаю ПЛИСочника, который не любит контроллеры и примерно так же про них выражается. Купленная просрочка ПЛИС с какого-то завода за копейки оптом - и вопрос на года, или всю жизнь, закрыт.
Плюс контроллеров заключался в большей распространённости, большей вариации в количестве выводов и начинке, в конце концов под МК проще самому платку сделать, особенно если задачки скудные.
Сейчас, когда можно легко за недорого плату заказать - плис не проблема, если ты умеешь с ними работать, конечно.
Да. В нашем миллионнике FPGA-инженегры получают около 150-200к, при общем дефиците специалистов. Предприятия занимаются переманиванием таких специалистов друг у друга. При этом обычный схемотехник может получать 30-60к, зависит от уровня и саморекламы.
Вообще, для микроэлектроанона, умеющего работать с ПЛИС и МК хорошее время настаёт: после 90-х разработка восстанавливается, а специалистов мало, вышка рождает больше инженеров которые могут бумажки перекладывать, чем инженеров которые могут что-то разработать, конкуренции нет в общем то.
>В нашем миллионнике FPGA-инженегры получают около 150-200к, при общем дефиците специалистов. Предприятия занимаются переманиванием таких специалистов друг у друга. При этом обычный схемотехник может получать 30-60к
Можешь, пожалуйста, пруфануть ссылками на вакансии?
Оффтоп, конечно, но вот я хочу сделать девборду для ВЕ92У. Понимаешь, эти МК у меня есть, преобразователи напряжения тоже есть, даже кварцы смд есть, озу, пзу, прочий обвес, а вот платку заделать времени нет, ну совсем нет.
И если бы нашёлся анон, который трассировал платку да заказал её изготовление, я бы обменял на такую платку определённый комплект элементов включая МК (в металлокерамике).
>Можешь, пожалуйста, пруфануть ссылками на вакансии?
а нету вакансии, столько получают проверенные ФПГАшники. Вакансии висят на гораздо меньшие суммы. И не спрашивай про логику этого, у нас СТАНДАРТНЫЙ отдел кадров, который нифига никого найти не может.
Пришедший с улицы (с другого города, так как в этом паспортные данные всех ФПГАшников всем предприятиям известны) приблизится к такому же после подтверждения квалификации, считай после закрытия соответствующей задачи, а до этого будет получать полтос.
Я не он, но желания у тебя странные, прямо как плата у того анона.
Можно просто, быстро и не дорого купить отладку у https://ldm-systems.ru/ только в пластике. Но зачем для какой-то отладки металлокерамика? Тем более что 1986ВЕ9х не особо интересные, по сравнению с 1986ВЕ1Т.
>пзу
Зачем?
>времени нет, ну совсем нет.
Но при этом будет время на то чтобы играть с этой платой?
> я прав?
Nyet:
http://s100computers.com/My System Pages/FPGA Board/FPGA Board.htm
http://s100computers.com/My System Pages/FPGA Z80 SBC/FPGA Z80 SBC.htm
http://s100computers.com/My System Pages/FPGA 80286 SBC/FPGA_80286 SBC.htm
http://s100computers.com/My System Pages/Lava-10 Board/LAVA-10 Board.htm
>Я не он, но желания у тебя странные
Я нищий, который вкатывается в электронику и которому знакомый дед с завода подогнал кучу радиоэлементов и даже б/у измериловку. И зачем мне тратить деньги на что-то готовое, когда есть всё для того что бы собрать что-то похожее по цене платы.
>>461202
>Но при этом будет время на то чтобы играть с этой платой?
В конце мая я поменяю место работы и время появится.
Ну как знаешь. Только миландровские микроконтроллеры ничем существенным не выделяются на фоне других микроконтроллеров. С тем же успехом ты мог раньше взять плату с STM32F103C8T6 на алиэкспрессе, хотя теперь то понятное дело их там не осталось.
Кстати, а как ты собрался формовать эти микроконтроллеры? А J-Link для их программирования у тебя найдется или будешь через бутлоадер прошивать?
> Только миландровские микроконтроллеры ничем существенным не выделяются на фоне других микроконтроллеров.
всякие свистоперделки типа ацп, цап, уарт, таймеров и прочего там есть и ладно, для изучения хватит.
>Кстати, а как ты собрался формовать эти микроконтроллеры?
тип корпуса хороший, контакты идут снизу, формовка не нужна
>А J-Link для их программирования у тебя найдется или будешь через бутлоадер прошивать?
уже нашёлся, китайская пародия, но говорят работает нормально
>тип корпуса хороший, контакты идут снизу, формовка не нужна
Может быть, особенно если на пузе нет ничего металлического. Но вообще подобные корпуса обычно все равно формуют и клеют на плату через прокладку. У меня на работе должны быть компоненты в пикаде и наверное в оркаде, но скорее всего под формованные корпуса.
https://ic.milandr.ru/products/programmno_otladochnye_sredstva/otladochnye_komplekty/otladochnyy_komplekt_dlya_mikrokontrollera_1986ve92u_k1986ve92qi/
Берешь PCAD 2006
Ищещь панельку или меняешь ее на посадочное место под 92У
???
PROFIT!!!
Вот, открыл пикад, достал микроконтроллер и пририсовал JTAGA. Что тебе еще нужно кроме питания?
Футпринт похоже рассчитан под формовку, поскольку между краями контактных площадок 26,6 мм (смотри второй скриншот), когда на чертеже указано 26,43 max. Можно и без формовки припаять, считаю что будет почти нормально.
Решил попробовать вкатиться, уже взял платку, а теперь думаю, не полное ли говно взял? Стоило это по скидке около 15-16 евро с USB-blaster и двухстрочным экраном в комплекте.
Если начинать углубление в SDL, с чего лучше начинать: Verilog или SystemVerilog?
>SDL
HDL ты хотел сказать?
Verilog. SystemVerilog это развитие Верилога, и предназначен в большей степени для тестирования схем. Поэтому начинай с чего попроще.
Это значения std_logic из VHDL. https://www.cs.sfu.ca/~ggbaker/reference/std_logic/1164/std_logic.html
Верилогохолопы ожидаемо соснулей у вхдл-бояр.
Надо будет проверить...
Пример дизайна и применения топовых ПЛИС.
Стоит ли вкатываться в Verilog из С и Embedded в России чтобы в необозримом будущем завести трактор? А пока, смогу ли я рассчитывать на ЗП 200 и выше (в принципе столько и получаю как Сишник), далее быть архитектором, или до архитектора дольше грести в этой теме, чем даже в С? Или времена захвата своего места под солнцем в теме проектирования микросхем прошли и пробиться сложно?
Суть такова - есть желание ебаться с микросхемам на низких уровнях, но и кушать дораха тоже хочется. Или в Linux Kernel, DSP и Video процессинге легче придти к успеху (что мне тоже нравится, но не настолько)?
В общем на таком распутье...
Не стоит. Вакансий меньше, чем в какой-нибудь яве или крестах. Еби линуксы, и точно будет на тебя спрос, а с плисинами — как повезёт.
Как человек перекативший из электроники в программирование, не советую. Это два разных мира, и если у второго есть деньги и найти работу на 200к довольно не сложно с норм опытом работы и знаниями, то первый очень тухлый и с минимумом вакансий. 200к это только с цифровым анализом, только у военных с подпиской о невыезде, и хрен ещё ты попадешь на это место, будучи левым хером с улицы
У Яндекса есть яндекс.контест, где они устраивают всякие соревнования. Регайся, тренируйся писать код сразу, не переписывая все, и можешь спокойно идти на собес к ним.
Потом 5 лет работы по ночам, и 200к твои
> А где взял?
А там нету, тот магазинчик на алиэкспрессе, где можно было за смешные деньги купить плату с шестым Виртексом, давно закрылся, разве что иногда остатки всплывают.
Как вариант, можно взять за $30 (плюс доставка), но программатор придётся покупать отдельно (аж целых три бакса за китайскую коробочку): https://www.aliexpress.com/item/33007471265.html
мимо другой анон
А что скажешь про Arduino MKR Vidor 4000? С одной стороны я понимаю, что отладкой это назвать нельзя, с другой, там же по сути можно будет на какие то тестовые воздействия запрограммировать мк, который на плате стоит.
Какие могут быть подводные с такой жирной плиской/платой? Сразу исключаем то, что я могу спалить плату нахуй, благо этих плат как грязи нет, я не майнер пидарас, просто повезло оказаться под крылом одного хорошего человека, который за бабосы обслуживает майнерскую требуху
подводные в том, что у тебя нет схемы, и ты не знаешь, какой пин куда выведен. Как ты будешь подключать периферию?
>подводные в том, что у тебя нет схемы, и ты не знаешь, какой пин куда выведен
Это да, но распиновку ответных разъёмов хэш плат найти не сложно
>Как ты будешь подключать периферию?
Никто же не запрещает написать тестовую прошивку, которая по порядку выдаст на пины по высокому уровню или на бредни шиза походит?
Да и можно сдуть камень > перекатить шары только хз где трафарет искать, если там не "дефолтное" расположение шаров.. и посадить на свою плату
А мне то по началу казалось что схема есть в открытом доступе. Ну тогда присоединяюсь к анону выше: выкини.
>Это да, но распиновку ответных разъёмов хэш плат найти не сложно
Это почти ничего не даст.
>Никто же не запрещает написать тестовую прошивку, которая по порядку выдаст на пины по высокому уровню или на бредни шиза походит?
99.9% что в этом случае соединишь выход с выходом со всеми вытекающими последствиями. Ну может как-то не спалишь в процессе.
>посадить на свою плату
Интересно где тебе сделают такую плату и чтобы в сумме обошлось не дороже нормальной простенькой отладки с тем же цинком?
Если так хочешь именно цинк, то https://aliexpress.ru/item/4001309317597.html
Достаточно дешево и схема есть.
>Интересно где тебе сделают такую плату и чтобы в сумме обошлось не дороже нормальной простенькой отладки с тем же цинком?
Ну если под этот же цинк плату разработать и заказывать у китайцев, то ~2-3к ₽, а если учитывать что плата для разработки на этом же камне на ебей стоит 200$, то вполне сносная экономия выходит.
Но по отношению к затраченному времени будет лучше плюнуть и просто отладочную плату на плиске попроще взять, тут я не отрицаю, но меня спортивный интерес подогревает
Чаю тебе, сохранил
>у китайцев, то ~2-3к ₽
Где ты такие цены видел? Или ты рассчитываешь развести в двух слоях и с шириной/зазорами по 0.15 мм? Что-то я не уверен что даже питание получится развести, а даже если получится, то толку то.
Покупаешь вторую
&
Сдуваешь чип
&
Вызваниваешь соединения
&
Профит
А вообще во времена пасты и direct heat трафаретов не уметь в bga как-то странно
>уметь в bga как-то странно
Зачем? Делать свои платы под такие корпуса слишком дорого и при возможности намного дешевле обойтись TQFP корпусом и двухслойной платой. Это только тем кто ремонтом занимается такие умения необходимы.
Правда китайцы как всегда ахуевшие и доставка выходит почти в 1/4...
На Али брал, но у того продавана ("FPGA Board Store") уже нету вообще ничего, и точно такого же комплекта в поиске нету. Изначально искал так: "fpga cyclone iv usb blaster".
>>466658
Может совсем левак какой-то был, меня немного смущает, что в Квартусе есть чипы EP4CE10E22C8 и EP4CE10E22C8L, а моего EP4CE10E22C8N нет.
Перспективы, как и во всём, ненулевые, но опять же, значительно меньшие, чем для кодера. Единственный минус — кодера проще держать на удалёнке в его родном Мордоре.
А есть вариант упороться в проектирование кристаллов? Если точнее, есть ли какая то связь между эйчдиэльщиками и проектироващиками кристаллов?
>>3
Если ты не смог свалить с айти, где тракторы уже клепают на конвейере, то вряд ли у тебя хватит мозгов свалить с микроэлектроникой, где требования к людям куда выше, сорри
А ты сам какую цель преследуешь, деньги, слава или забабахать штуку, которую больше никто не может?
У меня не работает конструкция "if (testvectors[vectornum] === 4’bx) begin", зато работает " if (testvectors[vectornum] === ’x) begin"
Вопрос, почему так? Пробовал выводить значения testvectors[vectornum], все с ними норм, после того, как вектора в файле заканчиваются выводит xxxxx, но симуляция не заканчивается.
И еще, что за формат .tv?
Да я ж говорю, как полечить я понял. Интересует, почему оно не работает как в книжке? У них используется ModelSim Altera edition, а я юзаю ModelSim Intel FPGA Starter edition, может там компилятор по другому работает?
На vhdl у меня осталось впечатление, что -93 версия работает четко и однозначно, как топор, но нужно много костылей чтобы сделать что-то сложное (я сломал голову пытаясь сделать массив векторов с настраиваемой через генерики длиной и векторов и массива).
Версия 2000 работает везде хуй пойми как, но содержит ряд упрощений для разработчика.
Самое смешное, что я этим занимался в 2015 году, блять. За 15 лет не смогли допилить компилятор (синтезатор, транслятор, похуй).
Короче, проверь может версии языка у себя, не знаю что там у тебя за язык, но вдруг проблемы схожие.
Привыкай, хуле. У меня при переходе от одной версии вивадо к другой код тестбенчей ломается. Это та самая причина, по которой на странице загрузок у вендора лежит не только последняя версия среды и, скажем, парочка "стабильных", а все выпущенные релизы. И мигрировать проекты в другую версию вызывает больше ебли, чем держать у себя несколько версий среды (если ты не столкнулся с каким-то мощным багом, который невозможно обойти, и который был точно исправлен в новой версии).
Ну это в целом логично, мне было надо понять, что дело не в том, что я криворукий
Тогда ему придется оригинальные картриджи подключать, а не ромы
>На сколько реально реализовать игровую приставку 80-х NES Famicom на ПЛИС.
https://youtu.be/R-nf4N9ZTbY
Да он скорее весго из гитхабовских что-то собрал.
Спрос вырос
Ну ты и соня… Ты где был, когда весной цены, с радостным блеяньем, поскакали к зияющим вершинам?
https://finance.yahoo.com/news/chipageddon-could-last-until-2023-132341226.html
Ядро ПЛИС - таблицы истинности и триггеры запилить легко (любая sram является таблицей истинности). А вот периферию, интерконнект и чтобы все работало хотя бы на 100 МГц - это задача схемотехников. Открывай не открывай, все равно там (как я себе представляю) серьезные дяди сидят и за большие деньги рассчитывают физику твердого тела, схемотехнику, всякие СВЧ микрополоски от которых мне в универе кошмары снились.
Конечно, если это возможно, обычно целесообразнее взять готовое ядро, особенно если что-то сложное.
>типа корректирующих кодов и эллиптических кривых
Если что, то умножение в поле Галуа делается через небольшие таблицы логарифмов, в результате оно не так много места займет.
>FPGA же обсираются на сложной арифметике?
По моему не особо, хотя с кодами у меня небольшой опыт, только Витерби с Ридом-Соломоном, причем уже довольно давно и я успел подзабыть все это. В целом все как обычно, комбинационную логику длинную лепить нет смысла, нужно по возможности делать конвейеры.
Это надо публикации читать. Вооружаешься инглишом и гуглишь.
https://www.esat.kuleuven.be/cosic/publications/article-2661.pdf
Пару лет назад видел пресс релиз у ST, про какой-то SoC, с процессором и программируемой логикой (типо SRAM-FPGA), но найти его не получается.
Может быть помнит кто-то, как железка называлась, или как её искать?
Про ST не знаю, но у интела точно есть системы с уже имеющимся армом на борту
Нет конечно, есть специальные САПР, которые все генерируют по коду на verilog/vhdl и обеспечивают весь маршрут от разработки и моделирования до топологии и разварки.
Например, cadence virtuoso.
Про нее есть статьи/учебники на русском.
Интересно, а как это все в 70х годах делали.
Если наша цивилизация рухнет, сможем ли мы когда нибудь восстановить электронику хотя бы до уровня 90х-2000х?
Конечно сможем. И не так медленно как многие думают
>Интересно, а как это все в 70х годах делали.
Точно также как и платы рисовали - ручками. В те года микросхемы были не такие уж и сложные.
В 70-е уже существовали какие-то инструменты автоматизации так-то.
Там на Ютубе уже в гаражах свои микросхемы делают 20 мкм техпроцесс, собирают свои компьютеры на макетах и программируют. Да даже в нашей гребаной Беларуси есть Интеграл с какой-то логикой и жк. Как-нибудь соберутся и восстановят. Там судя по всему процесс аналогичный травлению печатных плат, но в масштабах нанометров.
А спроектировать с нуля? Тот же HDD это еботня еще та. Ну да, по сути компьютер можно собрать из микросхем типа Xerox Alto. Представь писать заново компиляторы/gui и так далее.
Ты изучи вопрос, и твоя паника сразу упадет. HDD можно сделать легко после кассет с данными. Кассеты даже васян освоит - ленту тяни да читай данные. А имея данные можно любой софт написать. А у hdd всего-навсего другой способ считывания.
Компиляторы как нехуй делать создаются. Изучи регулярные выражения и вопрос станет прозрачным.
Выглядишь как брат-близнец того >>471842 (OP) шизика. Ты случайно не он?
В качестве наглядного примера из наиболее распространенного это куча игрушек для спектрума, которые были написаны естественно на ассемблере. Хотя это может и не совсем то что ты хочешь, но тем не менее. Или есть более современная игрушка - KolibriOS. Куда уж низкоуровневее.
Но выше один анон написал что компиляторы - не проблема. А какие компиляторы? Ассемблер? Так это вообще ни о чем по сложности, тут не о чем говорить даже. Какой-нибудь простейший бейсик, лисп или форт могут быть даже проще ассемблера. Значит речь шла про компилятор сишечки или около того, который будет несколько сложнее. А на Си и вовсе куча всего написано. Если не касаться винды, то из современного и достаточно популярного есть GTK3 и GTK4, как пример.
Но вообще вся постановка вопроса это полнейший бред.
Жаль, что 99.9% современных it петушков даже понятия не имеют, как все устроено внутри подробно. Научили обезьянок тыкать компиляторы и все им придумали.
Тру компьютерщики были в 50-80х годах. Современные это скорее продвинутые юзеры, чем программисты
Я не программист чтобы мочь такое и вообще не претендую.
Могу сделать какой-нибудь процессор на FPGA, т.е. сам напишу весь код на верилоге, собственно в каком-то из предыдущих тредов я этот код приводил. Графику тоже сделаю, если оно тебя так особо волнует. Более того, по работе "графикой" немного занимаюсь как бы, только со своей спецификой.
Написать программу для GUI? Это в зависимости от того что ты под этим понимаешь. Если вроде менюшек в досовских играх, то такое совсем не сложно, можно вообще и без компиляторов обойтись, написать на ассемблере на бумажке и руками по табличке перевести в машинные коды.
Если ты вдруг подумал что я могу только написать год на верилоге, а на более низкий уровень мне никак не спуститься, то это вовсе не так. Любой кто делает что-то осмысленное на FPGA должен понимать как оно устроено внутри. Поэтому я также смогу нарисовать схему допустим на 74-ой серии микросхем, а уже разрисовать внутренности этих микросхем на отдельных транзисторах тем болеее не сложно.
Однако объяснить тебе как оно устроено внутри? Точно не буду, максимум отправлю читать учебники. Если с восприятием текста проблемы, то можешь посмотреть видосики, тут как-то бегал один анон, пиарил свои видосики (так себе, слишком много воды).
Ну ладно.
А ты знаешь, как работает gui? Точнее как адрес находит?
Допустим, приложение с точки зрения файловой системы это таблица с адресами и командами. Ладно.
Ярлык на рабочем столе это сорт указателя. Он содержит координату адрес ярлыка с указателем на программу нужную
Мышь/сенсорный экран отсылает координаты клика. Если они совпадают я координатами ярлыка, то запускается приложение. Получается процессор делает условный переход.
Значит где то должна быть таблица адресов всех ярлыков.
Так же? Я просто криво выразился, но суть ты понял
>Я просто криво выразился
Нет, не криво, просто поток шизы. Попробуй выбросить весь этот бред из головы и заново прочитать учебник. И еще в учебниках часто есть задания для самопроверки или чего-то около того, так вот эти задания лучше выполнять, так намного лучше доходит, особенно если соображалка средненькая.
Наверняка бы ты не спрашивал свой тупняк, если бы читал внимательнее и пробовал бы делать простейшие упражнения на каком-нибудь бейсике для детей (или что сейчас там предлагают вместо бейсика).
>приложение с точки зрения файловой системы это таблица с адресами и командами.
Нет. Какая еще точка зрения у файловой системы? Если ты про винду, то экзешники хранятся в файловой системе точно так же как и любые другие файлы, никаких особенностей нет. А внутри у экзешников конечно свой формат https://ru.wikipedia.org/wiki/Portable_Executable , но к файловой системе это не имеет отношения. Тем более что можно обойтись без файловой системы, для чего-то простого конечно. Короче, у тебя все в голове перепуталось, шиза полная.
>Получается процессор делает условный переход.
Забавные у тебя рассуждения. Как бы для того чтобы запустить программу, операционная система (ты же про тот случай когда оно используется?) должна прочитать всякие данные типа объема требуемой памяти для разных секций программы, из PE-файла (т.е. экзешника), ну или ELF, если у нас не винда или еще чего-либо. Потом оно должно проверить всякое разное, выделить память в ОЗУ, скопировать туда содержимое нужных секций, потом сделать еще кучу действий, о которых я не знаю (я же не претендую). После чего оно должно добавить в https://ru.wikipedia.org/wiki/Диспетчер_операционной_системы соответствующие данные, а потом уже оно периодически будет выделять процессорное время для запущенной программы.
Ну и где тут твой условный переход? Да тут немеренно будет условных переходов, только очевидно не так как ты думаешь.
Не уверен правильно ли тебя понял, но все это может быть сделано по разному. Оно вероятно и сделано по разному в разных операционных системах (и в разных DE).
>Я просто криво выразился
Нет, не криво, просто поток шизы. Попробуй выбросить весь этот бред из головы и заново прочитать учебник. И еще в учебниках часто есть задания для самопроверки или чего-то около того, так вот эти задания лучше выполнять, так намного лучше доходит, особенно если соображалка средненькая.
Наверняка бы ты не спрашивал свой тупняк, если бы читал внимательнее и пробовал бы делать простейшие упражнения на каком-нибудь бейсике для детей (или что сейчас там предлагают вместо бейсика).
>приложение с точки зрения файловой системы это таблица с адресами и командами.
Нет. Какая еще точка зрения у файловой системы? Если ты про винду, то экзешники хранятся в файловой системе точно так же как и любые другие файлы, никаких особенностей нет. А внутри у экзешников конечно свой формат https://ru.wikipedia.org/wiki/Portable_Executable , но к файловой системе это не имеет отношения. Тем более что можно обойтись без файловой системы, для чего-то простого конечно. Короче, у тебя все в голове перепуталось, шиза полная.
>Получается процессор делает условный переход.
Забавные у тебя рассуждения. Как бы для того чтобы запустить программу, операционная система (ты же про тот случай когда оно используется?) должна прочитать всякие данные типа объема требуемой памяти для разных секций программы, из PE-файла (т.е. экзешника), ну или ELF, если у нас не винда или еще чего-либо. Потом оно должно проверить всякое разное, выделить память в ОЗУ, скопировать туда содержимое нужных секций, потом сделать еще кучу действий, о которых я не знаю (я же не претендую). После чего оно должно добавить в https://ru.wikipedia.org/wiki/Диспетчер_операционной_системы соответствующие данные, а потом уже оно периодически будет выделять процессорное время для запущенной программы.
Ну и где тут твой условный переход? Да тут немеренно будет условных переходов, только очевидно не так как ты думаешь.
Не уверен правильно ли тебя понял, но все это может быть сделано по разному. Оно вероятно и сделано по разному в разных операционных системах (и в разных DE).
Я про ярлык спрашиваю
То что мы видим на экране, это тупо отображение видеопамяти для гоя юзера, ладно.
Когда ты кликаешь на ярлык нужной тебе программы, каким образом адрес ярлыка запускает нужное приложение? Мне подробно нужно. Я прекрасно знаю, как устроена логика компьютера, архитектуры, логические порты/регистры/счетчики и так далее, все что на уровне железа. Мне хочется узнать именно как ОС и графический интерфейс работают, только подробнее, чем это написано в вики.
Если ты мне найдешь код GUI от xerox alto, его операции BITBLT подробно, ты буду благодарен.
Если ты не понимаешь, то еще раз - мышка отсылает координату указателя + прерывает цпу. Идем дальше. Ярлык так же имеет координату свою. Мне этот момент и интересен. Получается, цпу сравнивает адреса ярлыков и адрес указателя мыши. Если они совпадают, цпу подает флаг и происходит условный переход (зависит от архитектура конкретной машины) по указанному адресу, где находится первый адрес для запуска программы (сама программа содержится в множествах ячеек памяти)
Если тебе интересно, как работает цпу в потробностях, то вот, почитай
https://diary.ru/~blakkot/p163874886_ustrojstvo-i-princip-dejstviya-processora.htm
Лучшее не находил.
Проблема всех вузиков, что либо рассказывают очень подробно об устройстве, на уровне ТТЛ транзисторов, либо очень поверхностно, мол ЦПУ копирует данные ко ко пок пок затем умножает и так далее.
Прекрасная пикча, ни один вузик так не пояснял, примитивно, и сразу все понятно.
Еще бы узнать, как УУ работает,особенно на микрокоде
> Мне подробно нужно.
там происходит ебейшее количество операций, подробности целиком и полностью зависят от конкретной реализации гуя.
>мышка отсылает координату указателя + прерывает цпу
какая именно блетб мышка? usb, например, опросами работает, никаких прерываний.
чуть подробнее, но все равно очень в общем - обработчик событий гуя так или иначе получает инфу от драйвера мыши, что-де произошло событие клика, координата такая-то. Этот обработчик уже занимается всей херней по поводу того, чо дальше делать.
Я тебя немного разочарую. Между
>мышка отсылает координату указателя + прерывает цпу.
и
>цпу сравнивает адреса ярлыков и адрес указателя мыши. Если они совпадают, цпу подает флаг и происходит условный переход
существует очень много промежуточных действий.
Происходит примерно так:
Операционная система (ОС) получает координаты мыши, каким образом это отдельный вопрос. Далее ОС, а точнее её алгоритмы, которые, кстати говоря, все исполняются на процессоре, сравнивает координаты мыши с координатами ярлыков на рабочем столе, координаты ярлыков, скорее всего, хранятся где-то в реестре. Если совпали - начинается процедура загрузки программы с винчестера в ОЗУ, это тоже большая и сложная процедура. Программа в ОЗУ тоже хранится не абы как, там свои правила, дескрипторы, страницы и прочее. После того как программа, или её часть, загружена в ОЗУ она ставится в очередь на исполнение, ведь компуктер - многозадачное устройство, это значит что он может выполнять несколько программ одновременно. Но процессор один (многоядерность и многопоточность - отдельная тема), а потому все запущенные программы исполняются по очереди, сначала немножко одна, потом немножко другая, потом третья, потом по кругу. ОС может управлять очерёдностью исполнения.
В общем как-то так. Если тебе надо прям подробно, то упарывай исходники какого-нибудь линукса.
мимодругойанон
>Этот обработчик уже занимается всей херней по поводу того, чо дальше делать.
дополню: у тебя может сложиться впечатление, что этот самый обработчик будет запускать твое "нужное приложение". Хера с два, он так или иначе передаст это событие соответствующему приложению - в твоем случае тому, которое в текущий момент отображает оный ярлык.
ЮДалее ОС, а точнее её алгоритмы, которые, кстати говоря, все исполняются на процессоре, сравнивает координаты мыши с координатами ярлыков на рабочем столе
строго говоря, ОС как таковая этой херней не занимается. Рабочий стол с ярлыками - обычная юзерспейсная приложуха.
Вы ебанулись, пиздуйте в нюфаго тред.
>Рабочий стол с ярлыками - обычная юзерспейсная приложуха
Ну тут как посмотреть. Всё же является частью ОС.
>Проблема всех вузиков, что либо рассказывают очень подробно об устройстве, на уровне ТТЛ транзисторов, либо очень поверхностно, мол ЦПУ копирует данные ко ко пок пок затем умножает и так далее.
У тебя проблема в том что читаешь жопой.
>Я прекрасно знаю
Не верю.
>Еще бы узнать, как УУ работает,особенно на микрокоде
А теперь говоришь что не знаешь. УУ может быть обыкновенным комбинационным устройством. Если процессор не может за один такт выполнить команду, то можно например дополнить УУ счетчиком. Вообще все цифровые устройства это кучка триггеров (т.е. память), подсоединенные к комбинационному устройству.
>Прекрасная пикча, ни один вузик так не пояснял, примитивно, и сразу все понятно.
Это какой-то гипотетический процессор, даже у 8080 внутри все не так.
Вобщем этого уже достаточно для того чтобы поставить диагноз: смотришь в книгу, видишь фигу, только все очень запущено. Так что объяснять что-либо тебе бесполезно.
>Всё же является частью ОС.
ну так себе является частью. Даже в десктопной винде можно его прибить и все продолжит работать.
Дополню. УУ может почти полностью отсутствовать. Можно брать все эти управляющие сигналы прямо из кода команды (который загружен в регистр команд с >>472245
картинки)? Вот прямо каждый битик из "регистра команд" - отдельный управляющий сигнал.
>>472244
>Я прекрасно знаю
Так что если ты это не сообразил, то значит и не знал ничего.
>>472250
>>472251
Во, вот сейчас дельно пояснил, спасибо анон.
Тогда получается, что ОС сравнивает координаты всех ярлыков с адресом указателя?
Например, у меня на рабочем столе 50 ярлыков. Получается, ОС будет сравнивать координаты всех 50 ярлыков с адресом мыши, пока не будет совпадения? Хотя учитывая частоту процессоров, то это оче быстро и займет микросекунды, если не нано.
Кстати, я еще разбирался с BITBLT инструкциями, это те которые отвечают за перемещение блоков пикселей.
Если я правильно понял, то они действует только в двух направлениях. Смотри, пусть у нас есть видеопамять и экран. Координаты начинаются с левого верхнего угла слева направо, пусть в десятичном для удобства 0 1 2 3 4 и так далее. Самая последняя координата 1024 будет в правом нижнем углу. Просто взял от балды. Представь, у тебя открыто окно, которое начинается с координаты 100. И ты такой решил его переместить мышкой вниз, до координаты 800. Тут запускается инструкция BItBLT, которая начинает инкрементировать сдвиг окна от 100 до 800. Т.е. для юзера создается эффект что окно моментально туда сверху вниз перешло, но в реале оно сдвигается постепенно. Просто опять таки из за высокой частоты это за миллисекунды происходит и незаметно глазом. Ну я так понял
анон с шизовопросами
Пытаюсь разобраться с понятием мощности сигнала в Верилоге. Пишу так:
wire (strong1, strong0) [3:0]A = 4'hff;
wire (weak1, weak0) [3:0]B = 4'h00;
wire result;
assign Result = A;
assign Result = B;
Ожидаю на Result увидеть ff, т.к. strong сильнее weak. По факту МоделСим показывает состояние Х.
Или МоделСим не моделирует мощность, или я в лыжи обутый.
съебал нахуй, аноны выше уже пояснили, это ты просто сам нихуя не понимаешь, и строишь из себя умника
>огда получается, что ОС сравнивает координаты всех ярлыков с адресом указателя?
еще раз: ОС похер. Она передала событие приложению, дальше - его проблемы.
как именно приложение поймет, что за херня у него под мышиным указателем и что делать с событием нажатия на эту херню - целиком и полностью зависит от реализации.
А понял, спасибо бро
Слушай, а в чем главное отличие i/o port и i/o memory mappped.
Первый это напрямую данные со входа идут в цпу по отдельной шине, а во втором данные идут через DMA в зарезервированное место в ОЗУ, и уже потом ЦПУ читает их.
Вот это я реально плохо понял, признаюсь.
Вроде бы корректно будет так:
wire A = 1'b1;
wire B = 1'b0;
wire result;
assign (strong1, strong0) result = A;
assign (strong1, weak0) result = B;
initial #1 $display("Result: %v", result);
И результат будет St1.
Потому что у такого:
wire (weak1, strong0) A = 1'b1;
wire result;
assign result = A;
initial #1 $display("Result: %v", result);
Будет результат St1, а не We1, как казалось бы можно было ожидать, если не прочитав стандарт (попробуй еще осилить его...) начинать тыкать.
>>472264
Ну молодец. Я постарался и объяснил тебе про устройство управления, а ты меня посылаешь. Те аноны про "ярлыки" только общие слова, да и то частью спорно. И так очевидно что проверка должна быть на вхождение в определенный диапазон значений координат, для каждого "тыкабельного мышью" элемента интерфейса. Причем ярлыки ничем таким существенным не отличаются от остальных элементов графического интерфейса. Это настолько очевидно, что можно и не писать об этом.
>Слушай, а в чем главное отличие i/o port и i/o memory mappped.
Хоть ты меня и послал, но я все же отвечу.
Не знаю откуда ты взял, но под "i/o port" имеется в виду то как это сделано у 8080 и некоторых других. То есть имеется отдельное адресное пространство (отдельное от адресных пространств данных и программ), на котором "висят" устройства. Запись и чтение в это адресное пространство осуществляются отдельными инструкциями. Схемотехнически это может быть отдельной шиной например. Процессор по такой инструкции выдает адрес для устройств на эту отдельную шину, а устройство почуявшее свой адрес выдает на шину свои данные, либо наоборот забирает данные которые выдал процессор.
>i/o memory mappped
Это должно быть имеется в виду когда доступ к устройствам осуществляется через общее (с данными) адресное пространство. Схемотехнически это еще проще - вместо какой-нибудь ячейки памяти приделываем устройство.
>Первый это напрямую данные со входа идут в цпу по отдельной шине
Что-то вроде того, только не совсем. Тут первична не отдельная шина, а отдельное адресное пространство. Шина у самого процессора может быть одна, только будет мультиплексироваться как-нибудь (особенно во всяком старье мультиплексируется все подряд).
>а во втором данные идут через DMA в зарезервированное место в ОЗУ, и уже потом ЦПУ читает их.
А это не так.
И конечно же ты ничего не поймешь из моих объяснений, а если поймешь, то все не неправильно.
Ну вы и тупые даже я знаю в совершенстве архитектуру персонального программного обеспечения (смотрел гайвера) и то могу подробно об этом рассказать.
Ладно признаю, вы такие молодцы, всё рассказали. Спасибо! Хотите хуй?
Можете ещё помочь я тут загулил какую-то хуйню про плис. А сколько у таких профессионалов помещается хуев во рту?
>Можете ещё помочь я тут загулил какую-то хуйню про плис. А сколько у таких профессионалов помещается хуев во рту?
Смотря какое семейство и степень матёрости.
>assign (strong1, strong0) result = A;
>assign (strong1, weak0) result = B;
Работает, но не так как нужно.
Вот такой вариант
assign (weak1, weak0) result = A;
assign (strong1, strong0) result = B;
даёт х-результат, если В == 'dz
Мне, собственно надо промоделировать пик.
Микросхема В умеет переводить свой выход в z-состояние, в это время сигнал должен проходить с микросхемы А. А когда на выходе В есть уровень, то он должен перебивать уровень от А.
>адресное пространство
>i/o port
Вот тут уточнить - это зарезервированный участок памяти оперативной или все таки используется регистр с адресом контроллера устройства i/o?
блэ.
_адресное_ _пространство_. Для ALU не существует никакой "памяти оперативной", это просто набор адресов, откуда оно будет выгребать данные и куда потом складывать. Вся разница между port и memory-mapped в том, попадают ли адреса периферии и RAM в одно пространство (читай как "набор возможных адресов") или нет.
для cpu
>даёт х-результат, если В == 'dz
Странно.
module test1;
reg A = 1'b1;
reg B = 1'bZ;
reg enableZ = 1'b0;
reg [3:0] cnt = 0;
wire B1;
wire result;
assign B1 = (enableZ ? B : 1'bZ);
assign (weak1, weak0) result = A;
assign (strong1, strong0) result = B1;
initial begin
for (cnt = 0; cnt <= 3'b111; cnt = cnt + 1) begin
enableZ = cnt[2]; A = cnt[1]; B = cnt[0];
#1 $display("enableZ: %d, A: %v, B: %v --- result: %v", enableZ, A, B1, result);
end
end
endmodule
Результат:
enableZ: 0, A: St0, B: HiZ --- result: We0
enableZ: 0, A: St0, B: HiZ --- result: We0
enableZ: 0, A: St1, B: HiZ --- result: We1
enableZ: 0, A: St1, B: HiZ --- result: We1
enableZ: 1, A: St0, B: St0 --- result: St0
enableZ: 1, A: St0, B: St1 --- result: St1
enableZ: 1, A: St1, B: St0 --- result: St0
enableZ: 1, A: St1, B: St1 --- result: St1
>даёт х-результат, если В == 'dz
Странно.
module test1;
reg A = 1'b1;
reg B = 1'bZ;
reg enableZ = 1'b0;
reg [3:0] cnt = 0;
wire B1;
wire result;
assign B1 = (enableZ ? B : 1'bZ);
assign (weak1, weak0) result = A;
assign (strong1, strong0) result = B1;
initial begin
for (cnt = 0; cnt <= 3'b111; cnt = cnt + 1) begin
enableZ = cnt[2]; A = cnt[1]; B = cnt[0];
#1 $display("enableZ: %d, A: %v, B: %v --- result: %v", enableZ, A, B1, result);
end
end
endmodule
Результат:
enableZ: 0, A: St0, B: HiZ --- result: We0
enableZ: 0, A: St0, B: HiZ --- result: We0
enableZ: 0, A: St1, B: HiZ --- result: We1
enableZ: 0, A: St1, B: HiZ --- result: We1
enableZ: 1, A: St0, B: St0 --- result: St0
enableZ: 1, A: St0, B: St1 --- result: St1
enableZ: 1, A: St1, B: St0 --- result: St0
enableZ: 1, A: St1, B: St1 --- result: St1
Да это я понял
Мне технически понять - отдельное адресное пространство как реализуется? Резервируется часть ОЗУ только для входа и выхода девайсов их адресов, или каждый девайс имеет свой адрес в регистре и отдельную шину?
ты опять хочешь прям подробных подробностей для очень общего вопроса.
гуглишь референс на архитектуру той конкретной железки, реализацию которой хочешь "технически понять", и там читаешь, как чего в ней нагорожено.
Действительно. Просто гуглёжь ещё такой способ показал
buf (strong1, weak0) buff1 (y, a);
buf (pull1, supply0) buff2 (y, b);
http://verilog-r2klab.blogspot.com/2014/07/verilog-strengths.html
Но, видимо, эти примитивы не пропускают z-состояние, потому у меня и была такая лажа.
А по поводу
>Потому что у такого:
>wire (weak1, strong0) A = 1'b1;
>wire result;
>assign result = A;
>initial #1 $display("Result: %v", result);
>Будет результат St1, а не We1, как казалось бы можно было ожидать
с одной стороны как бы понятно, у wire-а есть своя мощность по умолчанию, она равна strong. Но с дрогой стороны, почему тогда
wire result;
assign (strong1, strong0) result = A;
assign (strong1, weak0) result = B;
работает? Ведь у result точно также есть своя мощность по умолчанию, и как минимум
assign (strong1, strong0) result = A;
должен создавать конфликт.
Вообще вся эта кухня какая-то не очевидная.
Это другой анон, накидай учебников
i2c_single #(
.SLAVE_ADDR (SLAVE_ADDR),
.NUM_OF_TRANS (NUM_OF_TRANS),
.HIGH_CYCLE (HIGH_CYCLE),
.LOW_CYCLE (LOW_CYCLE),
.GAP_COUNT (GAP_COUNT)
) i2c_single (
.sys_clk_i (sys_clk_i), // 24 MHz
.rst_n_i (rst_n_i),
.scl_i (rx2_scl), //(scl_in),
.scl_o (csi_scl),
.sda_i (rx2_sda), //(sda_in),
.sda_o (csi_sda),
.done_o (done_o),
.ack_err_o (ack_err_o)
);
.SLAVE_ADDR (SLAVE_ADDR),
.NUM_OF_TRANS (NUM_OF_TRANS),
.HIGH_CYCLE (HIGH_CYCLE),
.LOW_CYCLE (LOW_CYCLE),
.GAP_COUNT (GAP_COUNT)
) i2c_single (
.sys_clk_i (sys_clk_i), // 24 MHz
.rst_n_i (rst_n_i),
.scl_i (rx2_scl), //(scl_in),
.scl_o (csi_scl),
.sda_i (rx2_sda), //(sda_in),
.sda_o (csi_sda),
.done_o (done_o),
.ack_err_o (ack_err_o)
);
Верилоговские параметры соответствуют generic в VHDL, если ты об этом.
https://allaboutfpga.com/vhdl-component-port-map-tutorial/
https://www.ics.uci.edu/~jmoorkan/vhdlref/generics.html
Вот тебе ссылки на примеры.
Анонче, а не скажешь открытые проекты и схемы где я могу их скочать и заказать платы чтобы запилить хлебную доску для PCI или PCI-e, чтобы поизучать этот протоколы. А то как-то дороговато выходит - купить готовую за 20-40К с ПЛИСиной Циклон-2 на борту не более чем за 3К.
> апилить хлебную доску для PCI или PCI-e, чтобы поизучать этот протоколы.
Пиздуй к китайцам:
https://www.aliexpress.com/item/4000970958552.html
https://www.aliexpress.com/item/4001072461753.html
https://www.aliexpress.com/item/4001125245990.html
https://www.aliexpress.com/item/1005001275162791.html
Да я сам думал об этом. Но ни гарантии, нихуя , сам про эти платы что думаешь?
Ну как быть с примерами и докой?
https://m.aliexpress.ru/item/32790810998.html
https://m.aliexpress.ru/item/32845001106.html
гарантия, примеры и дока под конкретную доску как раз и стОят 20-40к. Выбирай, что тебе важнее.
> Но ни гарантии, нихуя ,
При всём богатстве выбора другой альтернативы нет(ц) Потому как если у тебя нет денег на покупку готовой платы, то изготовление того же Simple PCIe FMC carrier тебе тем более не по карману.
> сам про эти платы что думаешь?
А именно эти то нахуя брать (тем более, что вторая это не разу не PCI-E, а просто PCI)?
P.S. Во времена прошлого треда один анон купил такую плату. А также на eevblog: https://www.eevblog.com/forum/fpga/a-xilinx-kintex-7-board-on-aliexpress/ Там, правда, народ интересовался не компьютерной шиной, а SFP модулями.
P.P.S. Ну и к платам попроще (материнка с периферией, плюс две мезонинных платы с четвёртым циклоном) китаец дал ссылку на файлообменник с принципиальными схемами и примерами. Другой вопрос, что машинный перевод с шоаррского^W китайского такой машинный.
>А именно эти то нахуя брать (тем более, что вторая это не разу не PCI-E, а просто PCI)?
Потому что я подумал, может начать с PCI, в нем доки побольше, типа старее же.
>При всём богатстве выбора другой альтернативы нет(ц)
Так брать из твоих 4х которые ты предложил? Мои 2 старьё? Какую все таки лучше было б?
>Потому как если у тебя нет денег на покупку готовой платы
20К то найду, но если можно и сэкономить, почему б нет, с другой стороны - изготавливая ее и отлаживая я так наебусь, что потом будет не до PCI
А почему не ардуино видор 4000? И примеры и писиай, да, это не отладка, но с учетом имеющегося на борту мк, отлаживаться должно быть более чем удобно
Гуглил, под эту плату народ особо ничего не делает, что можно взять в качестве примера. Не популярная что-ли?
Это я видел, но как ни читал понять не смог.
Фаза между входом и выходом pll.
Source synchronous требует чтобы на физических выходах, на ногах клок совпал по фазе с данными.
Zero delay buffer видимо формирует такую фразу, чтобы компенсировать задержку имеющегося буффера.
https://youtu.be/kju8fPDxi3Y?t=515
>на ногах клок совпал по фазе с данными
А откуда pll знает где там на каких ногах когда данные меняются?
Имеется в виду не зависимость от данных, а от задержки их защелкивания в выходные регистры. Защелкиваются они каждый такт, даже когда данные проходят одинаковые.
Это тот же самый случай, что и с буффером, только вместо буффера нога.
Разработчики VHDL - все?
В симулинке есть функция генерации кода VHDL для FPGA и ASIC, в которой даже человек, не умещий в плис, может собрать мышкой схему из графических блоков и сгенерировать прошивку для плис.
https://www.mathworks.com/products/hdl-coder.html
По моему эту фигню стоит рассматривать всего лишь как набор IP-ядер и графическую рисовалку для их соединения. К тому же оно не вчера появилось. А еще точно так же можно мышкой соединять IP-ядра во всяких квартусах и вивадах.
Вроде бы тут есть нечто большее: можно писать код на языке матлаб, засовывать его в симулинковский блок, а потом генерировать HDL. Эта фича похожа на HLS, только не для калечного диалекта крестов, а для managed-языка высокого уровня.
https://www.mathworks.com/help/hdlcoder/ug/design-guidelines-for-the-matlab-function-block.html
Но я не представляю себе, как это может работать.
месяц назад собеседовался в беспилотники яндекса на позицию fpga разраба, тестовое сделал, но отлетел на первом собесе. спрашивайте свои ответы
Сколько лет опыт? Че за тестовое было? Че на собесе спрашивали, че ответил, че не смог?
>можно писать код на языке матлаб, засовывать его в симулинковский блок, а потом генерировать HDL
LiteX есть, на питоне, без накладных. Полный контроль над выхлопом и любые абстракции из коробки. Но как следствие - нужно понимать систему на всех уровнях.
Я вот писал установщик PLL чтобы в одну строчку объявлять тактовый домен. Там как известно всегда сотни параметров нужно задать, или возить мышкой в визарде.
А тут просто поменял частоту в одном месте, и все само вычислится при сборке.
И так можно любой модуль, даже ебаный GTX ставить. Один раз написал обёртку под задачу - и можно параметры менять или вычислять на ходу. Все наглядно и понятно.
> Сколько лет опыт?
6 лет во встраиваемке в целом, опыт с фпга 3 года
> Че за тестовое было?
распознавание голосовых команд с помощью цос и отправка их по http
> Че на собесе спрашивали, че ответил, че не смог?
не сказал бы что завалили, просто я сам терминальный додстер, который плохо знает теорию и вообще не является полноценным фпга разрабом
спросили про клоковые домены, метастабильность, асинхронный сброс, кодировку грея, про еще какую-то хуйню. еще писали код на sv, просили написать мультиплексор, но только с помощью &, ~ и assign. еще попросили написать умножитель 4х4 без использования символа *
в ответном письме послали нахуй вежливо поблагодарили за отклик и уделенное время и приложили список того, что стоило бы поботать
бтв, как мне сказали, максимальное количество собеседований -- 4. тут я чтото прихуел, так как думал, что такого большого количества фпга разрабов не может быть в мск, что аж 4 тура нужно для отбора
>распознавание голосовых команд с помощью цос и отправка их по http
Возможно я ошибаюсь, но при чем тут FPGA? Это задача для процессора. От FPGA для такого потребуется только правильно натыкать NIOS/Microblaze. Распознавание и вовсе на AVR делают. Разве не так?
Дед, ты?
ЦОС это задача для ПЛИС в общем случае. Может у них реалтайм распознавание сразу 9000 фрагментов.
Мимо
>Может у них реалтайм распознавание сразу 9000 фрагментов.
Если только так. Да и то возникает вопрос почему это нужно делать именно на FPGA, а не обычном сервере, может даже на GPU.
Да и в целом выглядит не так просто. Не знаю на счет распознавания, не касался, но http без процессора делать слишком муторно и если не требуется особо высокой производительности явно не целесообразно. И на мой взгляд, хотя я не претендую на звание программиста, для тестового задания как-то слишком серьезно, если не на процессоре разумеется.
Ну да, я бы не пошел с такими требованиями.
Ну я даже не знаю, осталось только придумать откуда такое может взяться на беспилотнике. А на сервере и так понятно что может.
Тут скорее всего дело в том что, помимо распознавания, там есть ещё много чего другого, и проще поставить одну жирную плисину, чем десяток процессоров.
Ну вот выше и было предложено воткнуть в FPGA софт-процессор. В более-менее минимальной конфигурации софт-процессор займет ну 1000...1500 LE может быть. Попробуй сделай хотя бы в таком же объеме без процессора. Или вовсе можно применить какой-нибудь сок по типу цинка или циклона 5 сразу с армом внутри.
Ну опять таки, если хард проц - то он один, а задач может быть много. Если софт проц, то их придётся несколько сувать, и ладно бы если так, но ведь скорость тоже может быть важна.
>Ну опять таки, если хард проц - то он один, а задач может быть много.
Да там хоть целый линукс может быть при необходимости. Оно не то что http, там кучу разных серверов можно крутить.
>то их придётся несколько сувать
Зачем? И даже если несколько, ну попробуй сделать эту задачу с меньшими затратами ресурсов не сделав в том или ином виде процессор. Покажи хотя бы как сделать "http" без софт-процессора, затратив при этом меньше ресурсов чем требует софт-процессор.
>скорость тоже может быть важна.
Ага, уже AVR справляется кое-как, а тут-то посущественней будет.
Зачем на пустом месте выдумывать лишнее? Чтобы были основания засунуть намного более жирную и дорогую FPGA? И чтобы оно еще потребляло побольше?
>Оно не то что http
Речь не только о http, но и о распознавании голоса, а ещё скорее всего, и о распознавании жестов и образов.
Ни один хард и уж тем более софт проц для встроенных применений не вытянет всё сразу за разумное время, на то она и плис чтобы там распараллеливать задачи.
А http, конечно, выгоднее программно делать.
> > В симулинке есть функция генерации кода VHDL для FPGA и ASIC, в которой даже человек, не умещий в плис, может собрать мышкой схему из графических блоков и сгенерировать прошивку для плис.
Много таких по весне оттаивает: https://en.wikipedia.org/wiki/High-level_synthesis
Может хватит просто сцепить несколько готовых заголовков http с контентом. Ну content-length может и конечный автомат вставить в поток. Или просто зафиксировать длину пакета для начала.
Я так себе сделал на питоне сервер на сокетах, чтобы не тянуть лишних зависимостей, и все браузеры съедают молча. Там Content-Type, content-length и заголовок. Три строчки.
Только тут придется для начала делать отправку ethernet фреймов через MII/RMII, потом TCP и уже после этого http, а еще может захотеться DHCP. Не то чтобы это было совсем сложно, но попробуй сделать так, чтобы заняло меньше ресурсов чем на готовом софт-процессоре.
И с распознаванием то же самое, на готовом софт-процессоре оно элементарно займет меньше ресурсов. Если не строить догадки об одновременном распознавании тысяч фрагментов, нет никаких причин делать иначе. Даже с видео, ну сделай отдельно вычислитель свертки или чего там еще требуется, а процессором им управляй.
Ну в принципе да, Ethernet не настолько быстрая штука, чтобы процессор не справлялся.
Tcp/ip я бы взял готовый, уже делал так раньше. rmii или что там было не помню, но тоже или опенсорсный брал, или бесплатный от вендора.
Так что я бы сказал что это легко, если не в первый раз разбираешься. В первый раз мутновато.
Делали на встроенном triple speed ethernet + простой конвертер mii to rmii из интернета.
В 5CE4 влезло с запасом, для сетевого стека на nios понадобилась внешняя 32 м оперативка.
Есть в примерах для de2-115 и других плат.
>для сетевого стека на nios понадобилась внешняя 32 м оперативка.
Многовато, там по идее десятков килобайт хватит. Похоже слишком у них объемистые HAL и прочие. Как-то использовал с микроблейзом код для AD9364 от самих AD. И тоже пришлось использовать внешнюю память, хотя было бы чего... Хорошо хоть дальше макета дело не пошло. Там еще, если я правильно помню, из коробки вместо newlib была жирная glibc.
https://habr.com/ru/post/595933/ Школьники уже проектируют. Пиздец. Россия в какую то северную корею в этом плане превращается - то 9летняя мгушница, то 15летние синьоры, теперь вот это. Притом что детей то рождается с хуев нос и в семье алкашей большинство - но пропаганда какой то пиздец показывает, сплошные джимми нейтроны.
>>486208
Каков пиздец.
Яндексовские попытки в настоящее айти а не копипаст гугла каждый раз отдают мухоморной шизоидностью
Список то сам дашь?
>>438619
>этому надо учиться в вузах
Прогиб не засчитан, начинал вообще с пайки телефонов в сц.
>>426658
Вот ты блядь - 19 годиков? Прям сисадмин а не эникей лол?
Есть плата на Xilinx Spartan-6 с камерой (под задачи машинного зрения) CMV4000
Насколько сложно скопировать ее (видимо слить прошивку) и делать такие +/- же? Есть бюджет под это в пару миллионов рублей
Слить прошивку скорее всего почти нереально, если конечно разрабы не дураки. Реверсить плату придется имея на руках хотя бы одну запасную. Топологию придется все равно разводить с нуля, а это помимо по один из самых длительных этапов.
Зависит от текущих ресурсов.
Если у вас там пачка рукастых схемотехников-топологов с опытом и везение (вдруг прошивка не зашифрована) - то тогда можно и отреверсить.
А если имеется штат для разработки такой платы и по к ней, то так конечно быстрее. Тем более что тут кроме сфп (?) и лвдсов вроде ничего сложного. Основная сложность небось на обработке внутри плис.
> У Спартана-6 прошивка шифруется?
А то! Но чуваку повезло, там только 75+ камни в списке.
https://support.xilinx.com/s/article/34269?language=en_US
>>489478
> Слить прошивку то, как раз, - одна из самых простых операций.
В коммерческих йобах как раз первым делом защищают от считывания и хотя бы жтаг не распаивают.
>защищают от считывания
Как?
>жтаг не распаивают
Ну так плисина как-то грузится с флешки, в чём проблема перехватить поток? На худой конец можно и флешку выпаять.
>Как?
Что сделал бы я - прямо в верилоге написал конченый автомат, который считывает серийный номер ПЛИС или ещё чего-нибудь на плате и выводит сообщение "идите нахуй" в уарт. Без понятия есть ли в ПЛИС уникальный номер и можно ли его считать.
Шифруют битстрим. Хули ты с этим потоком сделаешь, если у тебя нет ключа?
Сам пробовал такое считать? Там каша вместо данных.
В 6 спартане есть device DNA.
Ну и сам зайлинкс пишет, что через него можно протектить битстрим.
https://support.xilinx.com/s/article/40360?language=en_US
>А то! Но чуваку повезло, там только 75+ камни в списке.
Это только камни, где ключ хранится в SRAM+батареечка.
В остальный шестых спартанцах он прошивается во внутренний регистр FUSE_KEY (нечитаемый, естественно, стандартными средствами, укладывающимися в бюджет 2кк дерева). Битстрим точно так же шифруется.
А, хотя нет, я проебался, FUSE_KEY есть только на тех же моделях, где поддерживается хранение ключа в SRAM. Позор Хилым, совсем не заботятся о том, как зарабатывать на хлеб простым разработчикам. AMD приде - порядок наведе!
> AMD приде - порядок наведе!
Сначала второй раз убьют форум, потом введут онлайн верификацию подлинности плис по подключению красненького платформ кабеля к плис и интернету и заживём!
На Верилоге насран КИХ на RAM, где память сделана внешними блоками и вычисление выходного отсчёта выглядит как:
accumulator <= accumulator + ram * rom;
Умный (неиронично) компилятор Квартуса суёт умножение в аппаратные перемножители.
Как ему сказать, чтобы он делал перемножитель на LE?
Поскольку один хуй никто не ответил, то расскажу, как это делается у Хилых, а ты, может, по аналогии найдешь похожий метод у Интела.
Цепям, регистрам, модулям и т.д. можно задвать атрибуты, на которые будет смотреть синтезатор. У Хилых, чтобы принудительно заставить синтезатор отказаться от использования DSP, нужно задать атрибут ( use_dsp48 = "no" )
( use_dsp48 = "no" ) module test(clk, in1, in2, out1);
(надеюсь, блядская макаба не съест звездочки)
Увы, съела, тогде смотри синтаксис тут — https://support.xilinx.com/s/article/54357?language=en_US
Можно через аттрибуты, можно через констрэйны, можно через ключи и настройки. Нахуй расписаться на то что можно загуглить за минуту.
14 bit parallel ADC, 100 MSPS -> FPGA CIC decimator -> SRAM
Хочу еще туда поставить синтезируемый процессор с UART, чтобы он медленно наружу вычитывал данные из SRAM.
Сейчас возможно ли собирать всякие CIC дециматоры и модули общения со SRAM/ADC из готовых модулей? Как бы узнать какое ПО такое позволяет?
Да,
Хилых = SelectIO Wizard + LogiCORE CIC Compiler + AXI4-Stream FIFO + Microblaze + Uartlite
Конкретная плисина зависит от того, сколько SRAM тебе в ней надо под данные, остальное особых ресурсов не требует. Если хранить их долго не нужно (просто скидывать в уарт по мере готовности), то подойдёт минимальная плисина, для которой поддерживается CIC Compiler (Spartan 6 какой-нибудь самый дешёвый).
Спасибо тебе, анон!
>Конкретная плисина зависит от того, сколько SRAM тебе в ней надо под данные
Нужно хранить не более 1 млн семплов, однократно проведя оцифровку.
Это всего лишь 1.68 мегабайта данных.
>Спасибо тебе, анон!
В отличие от того анона я бы посоветовал не использовать процессор. Запись и считывание из памяти это всего лишь пара счетчиков. Полноценный UART тебе похоже не нужен, хватит только на передачу, что совсем просто. Руками такое быстрее написать, чем разобраться с этими IP ядрами.
Дециматор, если лень писать руками, можно нагенерить в матлабе через fdatool/filterDesigner.
>Нужно хранить не более 1 млн семплов, однократно проведя оцифровку.
Это дофига. Это 13,44 МБит. Теперь смотри скриншот. Поэтому целесообразно использовать внешнюю память. Либо сразу передавать на комп, например через Cypress.
`define AAA
//`define BBB
...
`ifdef AAA
wire A;
`endif
`ifdef BBB
wire B;
`endif
...
В Моделсиме добавляю эти сигналы через do-файл:
...
add wave A
add wave B
...
Естественно вторая строчка вызывает ошибку.
Как бы сделать, чтобы Моделсим брал из do-файла сигналы с учётом дифайна?
1. 16 пар LVDS, interleave, 500 MSPS
2. 4 пары LVDS, 2 Gs/s
Интересно, продаются ли вообще под такие задачи готовые девборды с ПЛИС на али? Плату для АЦП придется делать самому.
Самое простое
>add wave знак_умножения
Добавит все подряд.
Другой очень простой вариант, если предыдущее не подходит
https://wiki.tcl-lang.org/page/catch
>catch {add wave A}
>catch {add wave B}
Можно проверить сработало ли add wave подобным образом:
>if [catch {add wave A}] {echo {vse propalo}}
Вобщем, если задаешься подобными вопросами, то должно быть стоит прочитать учебник по Tcl.
Если и это не подходит, то можно изучить "ModelSim Command Reference Manual", только возможно проще будет сделать поиск объектов (этих А и Б), чем получить директивы препроцессора.
И еще, если А и Б не исключать этими директивами, то вряд ли это замедлит работу моделсима и тем более это не повлияет на результат синтеза. Я бы не накручивал кучу ifdef вокруг этой фигни.
Также, по моему, там где это возможно лучше обойтись параметрами, без препроцессора. Потому что такое сложнее проследить - откуда, что и где берется.
>add wave знак_умножения
Всё подряд добавлять не вариант, сигналов много, не все они нужны, плюс есть настройка отображения сигналов, порядок вывода и группировка. Да и
>catch {add wave A}
Ага, спасибо, работает. Но это надо для каждого сигнала прописывать, сразу несколько не укажешь, то есть не получается так
catch {
add wave A
add wave В}
В общем нашёл вот такую команду, пропускает добавление всех сигналов которых нет
onerror {resume}
>можно изучить "ModelSim Command Reference Manual"
Мануал смотрел, но на эту тему ничего не нашёл, может в глаза долблюсь, а может англюсик плохо знаю. А было бы неплохо если можно было бы передать директиву в tcl.
>сделать поиск объектов
Что имеется в виду?
>сразу несколько не укажешь, то есть не получается так
Ну почему же? Вполне можно циклом
>foreach w {A B C и_так_далее} {catch {add wave $w}}
Можно написать чуть лучше, например {A B C и_так_далее} предварительно сохранить в отдельную переменную. Или можно все это оформить в отдельную процедуру.
>proc add_waves_list {wl} {foreach w $wl {catch {add wave $w}}}
>add_waves_list {A B C и_так_далее}
Хера ты жёсткий.
Почему в бинарных операциях Z-состояние ведёт себя логичным и естественным образом, а в арифметических такая хрень? В чём тут сакральный смысл?
>Почему в бинарных операциях Z-состояние ведёт себя логичным и естественным образом, а в арифметических такая хрень?
По-моему, оно себя повело логично и естественно. Z мда, теперь будет триггерить каждый раз это, по сути, обрезанный провод, торчащий вникуда и ловящий любые наводки. В бинарных операциях "логичным и естественным" тоже будет X, кстати, если речь не о |1'b1 или &1'b0
Впрочем, похуй на это всё, т.к. FPGA внутри себя всё равно не умеют в Z.
> кстати, если речь не о |1'b1 или &1'b0
Об этом и говорю.
>обрезанный провод, торчащий вникуда
Ну т.е. на результат сложения он влиять не должен.
Хотя, если сложение представить в виде сумматора, то на один вход подано значение а на другой высокий импеданс, как сумматор на него отреагирует неизвестно. Пожалуй ты прав.
>Впрочем, похуй на это всё, т.к. FPGA внутри себя всё равно не умеют в Z.
Я пытаюсь промоделировать процессы на плате, а на ней та ещё вакханалия. Там есть два аналоговых сигнала сходящихся в одну точку, да так что они суммируются между собой, один из них может отключаться через специальный двухсторонний мультиплексор.
Решил проблему как-то так
assign Result = Sig1 + (Sig2==='bZ)? 'd0 : Sig2;
Аналоговый сигнал не бывает 'd0, это цифровой сигнал по определению. Ты хернёй какой-то страдаешь, найди нормальный инструмент для моделирования аналоговых цепей
>нёй какой-то страдаешь, найди нормальный
Я в курсе. Но почему бы таким образом и не промоделировать процессы на плате?
Нормальный инструмент для моделирования аналоговых цепей мне не нужен. Мне нужно смотреть как мой проект взаимодействует со схемотехникой на плате.
И кстати, с чего ты тут бугуртишь?
>>497692
>мда, теперь будет триггерить каждый раз
Так. Видимо, ты какой-то хуесос из оборонки. Малаца, всё правильно делаешь, ничего не меняй, моделируй плату на верилоге.
Ну что ты так сразу? Мало ли что он там делает. В целом вполне логично и даже необходимо написать тестбенч, который имитирует все необходимые входные сигналы для FPGA. Я, например, для имитации АЦП часто формирую в тестбенче сначала типа аналоговый сигнал в формате с плавающей запятой, а потом складываю с шумом и квантую по уровню.
САПР не скачать Intel заблокировала софт для РФ. Поздно вкатываться. В 8051 надо вкатываться может начнут производить.
>заблокировала софт
Шо, даже скачанный ранее Кряктус не будет работать если сейчас поставить? А если в инет не шастать?
Все равно можно скачать через впн или прокси.
>В 8051 надо вкатываться может начнут производить.
Если ты про российское производство, то все-таки 5578ТС024 вероятно производят, в крайнем случае точно смогут делать еще ХС4Т без толерантности к 5 В. 8051 и так делают, а по доступности оно очевидно будет одинаково, что 8051, что ТС024.
>>498291
А у них нету более-менее полностью своего, на TSMC они делают, по крайней мере Gowin. В том числе по этой причине официально отказываются нам их продавать. Да и мелкие эти Gowin. Помимо этого сейчас сильный дефицит всяких микросхем. Основная проблема, по крайней мере для любителя, это не санкции, а кризис. Более-менее доступно в основном старье, такое как третий циклон, с четвертым уже посложнее, а с MAX 10 совсем плохо.
Так что советую Intel, тем более что верилог везде один и тот же.
>кризис
Вот, у этих почти ничего нет из Intel и Xilinx, лишь немного совсем старья осталось, пока еще. Чуть побольше только Lattice осталось.
> 5578ТС024
Может и производят, но про топовые 64 и 104 нам сказали "надо потерпеть, пишите позже".
> Gowin
Это совсем не то. У них есть бмти, фудан и цетц. Которые делают клоны седьмой серии на собственной китайской фабрике SMIC (28 нм).
Не сказал бы, что дико горят желанием работать с РФ, но и оттуда бывают отказы из-за военки.
>Это совсем не то. У них есть бмти, фудан и цетц.
Не особо интересовался, ну значит по этой части был не прав. Но первый вопрос был в контексте вката, очевидно на любительском уровне. А где все это сможет купить любитель? На алишечке можно купить Intel, Xilinx, Lattice и платку с вот этим Gowin.
Я вот присматривался к китайским GPixel, у них есть весьма неплохие матрицы, но для любительских поделок проще купить сони, только и с ними не все так просто.
Вывести изображение вполне возможно, но кто тебя знает... В целом даже мелкой CPLD хватит для формирования VGA сигнала с полосами.
Но я бы не советовал брать говен, по крайней мере программное обеспечение для этой фиговины выглядит пока сыровато. А также, оно продается только в виде этой платы, саму микросхему отдельно на алиэкспрессе не купить.
Почитай про плис, посмотри видосики, скачай крякнутый квартус с торрентов или у иранцев/китайцев, потыкайся в нем.
Купи простенькую плату с Altera Cyclone на али за 5 к типа такой:
https://a.aliexpress.com/_DFkACxV
Официальные каналы поставок закрыты, но в принципе все по прежнему можно достать.
Мелкие циклоны 3 и 4 есть на али.
Еще можно попробовать вкатиться в Xilinx (вроде бы есть китайские клоны) или Gowin (китай).
У нас делают для оборонки 5576ХС6Т, 5578ТС024 и еще что-то, стоят в районе 100-200 к. Там тоже квартус + свой трассировщик за бабло для 024.
Миландр хочет выкатить свою мелкую ПЛИС Бриллиант с IDE и всей хуйней в следующем году. ДЦ Союз делает дорогую радстойкую мелочь, хз чо у них с ПО.
У китайцев есть еще pango, но там нихуя не понятно с регистрацией и ПО.
У тебя эти аналоговые сигналы укладываются в логические уровни ПЛИС? Фронты нормальные?
Если нет, нужно что-то промежуточное типа триггера Шмитта, компаратора или ацп, можно поймать метастабильность.
https://aliexpress.ru/item/830309351.html?spm=a2g2w.productlist.i14.1.794013ce3LEHTE&sku_id=57361181813
>Вывел шину в моделсим, настроил аналоговое отображение и сижу смотрю синусы.
А толку с этого для аналогового моделирования? Как ты будешь моделировать прохождение твоего синуса через RC-цепь, к примеру? ололо преобразование Лапласа плюс билинейное преобразование, а потом вместо дебагинга платы закопаться в дебагинг модели
А я когда-то брал в fpga board store ep4ce115 + ddr2 + 2 gigabit ethernet (A-E115FB) за 8 к. Интересно, где сейчас этот китаец?
>Как ты будешь моделировать прохождение твоего синуса через RC-цепь
А мне это и не надо. Мне важно знать что синус в принципе дошёл куда нужно. Создал простую модель ЦАП/АЦП, в ней сделал SPI, синус заходит в АЦП и выходит от туда в последовательном виде через SPI. + ещё кой-какая схемотехника на плате.
Посоны, поясните плюсачу-наносеку, как так выходит, что POPCNT выполняется за такт?
Там какое-то compressor tree в железе, адекватного объяснения по-программистски про это я не нарыл.
Странный вопрос.
1) Чем оно отличается от сумматора, который также "выполняется за один такт"?
2) Существует деление цифровых устройств на комбинационные и последовательностные. Комбинационные это у которых состояние выхода не зависит от предыдущих состояний входа, а только от текущего. Очевидно у комбинационных устройств нет памяти и тактовый сигнал к ним отношения не имеет. Последовательностные устройства наоборот имеют память, например регистр, запоминающий по фронту тактового сигнала что было подано на его вход с комбинационного устройства. Очевидно что popcnt, как и любую булеву функцию (или как погромисты называют, чистую функцию), можно сделать в виде комбинационного устройства.
>Там какое-то compressor tree в железе, адекватного объяснения по-программистски про это я не нарыл.
Это дерево сумматоров. Первый уровень сумматоров попарно суммирует единичные биты. Второй уровень попарно суммирует результаты первого, и т.д.. Каждый следующий уровень количество сумматоров падает вдвое, но сами сумматоры усложняются, чтобы уметь складывать всё большие числа. И так пока не остаётся одно значение.
Почему это выполняется за один такт — потому что между уровнями сумматоров нет регистров. Когда изменяются значения на входе каждого сумматора, то он сразу начинает генерировать выходное. Регистром защёлкивается только итогове значение, и в этой схеме главное — чтобы сигнал успевал проходить через все уровни в течение одного такта.
>>498407
>>498428
Так, интересно, но непонятно.
Мой уровень - знаю виды триггеров, в универе рисовал логические функции в microCAD, по работе приходится местами опускаться до ассемблерных оптимизаций под x86, Agner Fog осилил, мануалы от вендоров - нет, английский свободный.
Нужна легкая литература по теме строения современных CPU.
>и в этой схеме главное — чтобы сигнал успевал проходить через все уровни в течение одного такта.
А сколько уровней может проходить сигнал в типичном CPU? 128-битный компьютер невозможен с сохранением текущих частот?
>Так, интересно, но непонятно.
Ну а как делается сдвиг сразу на несколько разрядов за один такт?
x = x << 8;
>Нужна легкая литература по теме строения современных CPU.
Вот дядька неплохо излагает.
https://www.youtube.com/c/АПСПопов/videos
>128-битный компьютер невозможен с сохранением текущих частот?
Вполне.
>Так, интересно, но непонятно.
Хоть про основы булевой алгебры на википедии прочитай. И вовсе не обязательно что popcnt прям везде считается за такт, где-то может в АЛУ вовсю конвейер используется и результат выдает каждый такт, но с задержкой во сколько-то тактов.
>А сколько уровней может проходить сигнал в типичном CPU?
Уровней чего?
>128-битный компьютер невозможен с сохранением текущих частот?
Чтобы компьютер был полным по Тьюрингу, достаточно лишь одной поддерживаемой арифметической операции - NAND и еще какой-нибудь инструкции условного перехода. Очевидно что скорость побитного NAND двух регистров не будет зависеть от их разрядности. Поэтому можно сделать комп и с большими частотами и с разрядностью хоть в тысячи бит, только смысл?
А еще, что ты будешь делать с int даже на 128 бит? Более того, у тебя комп местами и так выполняет операции с данными по 512 бит, AVX-512 же.
>А сколько уровней может проходить сигнал в типичном CPU?
Вопрос смысла не имеет, в каждом случае скорость работы — результат компромисса. Можно расположить дерево сумматоров супероптимальным образом, но в составе CPU это работать не будет, т.к. делается в ущерб оптимальности других блоков.
>128-битный компьютер невозможен с сохранением текущих частот?
Возможен. Задача усложнится, но её можно решить дополнительными ресурсами (пространством на кристалле). В конечном итоге это определит цену для пользователя, и рыночек порешает. Компромисс выбирается на всех уровнях.
>Задача усложнится
Не совсем так, все зависит от набора команд, как я написал чуть выше.
>и рыночек порешает.
Тут в другом дело. 64 бита понятно откуда взялись - выросли объемы памяти, только и всего. Смысл от операций с int64_t за одну инструкцию может и наблюдается, но минимальный. А смысл от int128_t в прикладных программах? Совсем минимальный. Есть еще SIMD, но оно и так в наличии, а применяется ограниченно.
> Интересно, где сейчас этот китаец?
Переименовался в HPC FPGA Board Store: https://aliexpress.ru/item/4001305962241.html
module Test
#(parameter wAdr=3, wBus=4)
(input [wAdr-1:0]Adr, input [wBus-1:0]In, output [2⚹⚹wAdr⚹wBus-1:0]Out);
assign Out = In << (Adr⚹wBus);
endmodule
Теперь нужно всё тоже самое, только на остальных выходах вместо нулей должно быть 'bZ.
Если нужно, то делай. Или это был вопрос?
Я вижу два варианта:
1) Сделать с помощью конкатенации
assign Out = {{сколько-то{1'bZ}}, wBus, {сколько-то{1'bZ}}}
2) Сделать Out как reg, далее в always
Out = {2⚹⚹wAdr⚹wBus-1{1'bZ};
Out[сколько-то:сколько-то] = wBus;
wire [7:0][15:0]Provod;
не хочет компилить, сцуко!
14.7 версия
Но ты, конечно, ещё бы для дедушкиных часов с кукушкой поддержку системверилога спросил. Её и в актуальных-то тулах запиливают с пятнадцатилетним отставанием от принятия стандарта, а ISE дропнут уже хуй знает сколько. Так что никак, сорян.
Если так, то херня из под коня этот ваш ксилинкс, в кактусе 9 и то есть. Уж не знаю на сколько она там полная, но во всяком случае двухмерные массивы компилирует.
Ну вот пока и непонятно как.
https://aliexpress.ru/item/4000837637863.html?ck=in_edm_other&edm_click_module=alg_products&item_id=4000837637863&rowan_id1=edm_search_remind_trigger_1_ru_RU_2022-07-02&rowan_msg_id=ggeredm_search_remind_tri$f5b3468ebf224649b0e6dff594a7f892&sku_id=12000028636765195&tracelog=rowan&utm_campaign=1&utm_medium=algRecProd&utm_source=triggerSearch
https://aliexpress.ru/item/830309351.html?spm=a2g2w.detail.1000060.1.2baa1d3bJUY5D2&_evo_buckets=165609,165598,188873,194275,299287,224373,176818&sku_id=57361181813&gps-id=aerPdpSubstituteRcmd&scm=1007.34525.285258.0&scm_id=1007.34525.285258.0&scm-url=1007.34525.285258.0&pvid=7b9c704a-8a51-4581-bf87-8fc3bcccdd8d&_t=gps-id:aerPdpSubstituteRcmd,scm-url:1007.34525.285258.0,pvid:7b9c704a-8a51-4581-bf87-8fc3bcccdd8d,tpp_buckets:24525#0#285258#30_21387#0#233228#3_21387#9507#434560#5&scenario=aerPdpSubstituteRcmd&tpp_rcmd_bucket_id=285258
Чую наипалово.
QMTECH Official Store
https://a.aliexpress.com/_DErPP5V
Может банально кончились, а удалять/перевыставлять не хотят. Или вконец уже ебанулись (WaveShare и раньше дешевизной не отличался, но если в каком-нибудь 2013 году им альтернатив не было, то сейчас то…).
>>499524
Наёб там фирменный, британский, им. Клайва Синклера: экономия на спичках. https://www.eevblog.com/forum/fpga/qmtech-artix-7-wukong-board/
>Наёб там фирменный, британский, им. Клайва Синклера: экономия на спичках.
Всего-то? Я уж испугался. Думал, там кристаллы не настоящие. А тут всё ппосто в традициях топазасвоиденьги с китайских площадках.
Есть вышка по электронике, есть ли какие-нибудь перспективы в ПЛИСах и цифровом дизайне в целом?
Имеет ли смысл ебать себе мозг огромным количеством разноплановой информации (цифровая схемотехника, HDL-языки, тайминги, всратые инструменты вроде квартуса и моделсима) или лучше учить какой-нибудь питон?
Был небольшой опыт работы с Verilog-ом и с электроникой в целом.
Вообще, уже как 3 года РАБотаю, а в деньгах стал получать даже меньше. Есть ли жизнь технарям вне IT?
Никаких перспектив. Поставки мало-мальски нетривиальной электроники в рашку ВСЁ (в достаточных для промышленного применения объёмах, ради которых имеет смысл тебя нанимать) и можешь даже не рассчитывать, что они возобновятся после завершения броска пыньгуста как и вообще в ближайшие несколько десятков лет.
Да хуйня. Просто теперь не х5 цена для русни, а х10. Но все что можно и нельзя возится.
Пчел, ПЛИС официально не ввозятся уже несколько лет. Тут не поменялось вообще ничего.
Десятикратная цена уже давно и для всех, а не какой-то русни.
Но не для всех вещей же нужно большое количество ПЛИСок?
Например, если компания занимается soft IP, то достаточно пары отладочных плат на инженегра?
А для кого она будет пилить эти IP? Если для иностранного заказчика, то после броска пыньгуста они всё. Если для отечественного заказчика, то ему под разрабатываемые IP нужны плисы которых нет, поэтому они, соответственно, тоже всё.
Хочешь осваивать перспективную инженерную профессию — рекомендую техобслуживание авто зарубежного производства со специализацией на отсутствии родных расходников и запчастей.
>А для кого она будет пилить эти IP? Если для иностранного заказчика, то после броска пыньгуста они всё.
Тащемто нет, в моей батрачке из иностранных заказчиков никто не отвалился. Насколько я знаю
Ты пилишь IP-ядра? А для какой-области применения (можно в общих словах)? А если речь не о плис, а о простом макакинге, то это другое.
Нет, не пилю, работаю на должности IT-говночиста с соответствующей зарплатой. Пилим точнее, пилят процессорные блоки на архитектуре RISC-V.
Прикольно. Ну, если анону удастся туда устроиться, то можно, пожалуй, не спешить с переквалифицированием в техобслуживание без родных расходников.
Ну так вот, этот анон я хочет узнать, если смысл вкатываться в это дело, учитывая, что по запросу "Verilog" хедхантер выдает 31 вакансию в ДС-2, а по запросу "Python" 1286 вакансий?
Да ты и сам понимаешь. Задающиеся вопросом "имеет ли смысл?" на такое не пойдут, потому что им предстоит за эти ультраредкие вакансии конурировать с задротами, которые будут заниматься вериложеством по приколу за еду. Такая же хуйня с микроконтроллерами.
Бамп. Его кто-нибудь здесь юзал?
Есть такое понятие как параллельный импорт.
Да, если тебе это интересно.
Поспрашивай в бывшем универе, кабанчики часто там тусуются.
Можно найти вкусную вакансию в частной конторе, можно податься в импортозамещение или оборонку, во второе сейчас вливают много денег.
Еще есть смежная разработка цифровых интегральных схем (verilog, system verilog), сейчас тоже хуеву гору всего будут делать.
Хуево то, что нет удаленки, иногда нужно сидеть над платой с осциллом.
Санкции несколько осложняют работу, но все по прежнему завозят.
Кризис полупроводников затронул и ПЛИС, по всему миру выросли цены, на диджике и маузере пустые стоки.
Есть доступные китайцы типа Gowin и вроде бы клоны хилых. Еще есть чисто китайские pango и радстойкие casc bmti.
Из наших у ВЗПП остались несколько радстойких ПЛИС, Миландр хочет выкатить что-то простенькое в следующем году.
Говорят деление как-то можно заменить умножением.
Я только до такого сумел додуматься:
В / С = А;
можно преобразовать в
1/(1/В х С) = А
Но как взять обратное число, ведь это тоже деление?
Или есть какой-то другой способ?
Бери готовое IP-ядро, конечно если тебе нужен результат.
>Или есть какой-то другой способ?
Если нужен не результат, а процесс, то можешь посмотреть как делают деление в процессорах без аппаратного деления.
https://stackoverflow.com/questions/21074682/dividing-a-number-without-using-division-operator-in-c
Это самое простое и очевидное.
Погугли CORDIC. Это алгоритм, который использует только сложение и битовый сдвиг, и при определённых параметрах из исходных чисел y и x позволяет получить y/x. Количество действий известно заранее (одна стадия алгоритма даёт плюс один бит точности результата), поэтому на нём можно сделать аппаратный конвейер. Это не единственный алгоритм деления, подходящий для конвейера, но самый простой.
>Я только до такого сумел додуматься:
>В / С = А;
>можно преобразовать в
>1/(1/В х С) = А
Всё проще: В/С=А → B*(1/C) = A
Есть варинты получить 1/C из C при помощи приближения полиномами (ряд Тейлора, полиномы Чебышева), в отличие от CORDIC они требуют меньше стадий (два бита точности на стадию алгоритма или даже больше), но каждая стадия требует аппаратного умножителя.
Таблицы для деления кордиком выглядят так: 100..., 010..., 001... и т.д.
Вспомнил ещё один метод вычисления 1/C — метод Ньютона: x0 = (середина диапазона ожидаемых результатов), xn+1=xn*(2-axn) пожалуй, это наилучший варик.
а фигли оно за тебя должно конвертировать? оно сделало бит к биту
https://habr.com/ru/company/vk/blog/679002/
Хуит к хуиту. Оно сделало одну неявную конверсию вместо другой. Только из всех вариантов неявной конверсии оно выбрало тот, в котором складываеь (signed) -1 и (unsigned) +2, присваивая результат в (signed) большего размера, совершенно логично получаешь (signed) +257. Кому такое может понадобиться блядь вообще?
Шёл, нашёл, еле ушёл, какую-то промышленную хуйню. (после оживления оказался каплеструйным принтером)
Ясен пень, что мне дома он нахуй не нужен. Покупать печатную головку, емкость для чернил и сами чернила, за сотни тысяч деревянных, я не планирую.
Внутре оказалась интересная начинка. Думаю попробовать хоть вкатится в FPGA на халяву. Что скажете? Пойдет для первых шажков?
10к на этой, на 6к можно купить на алике на плате.
Валяется у меня несколько плат МАХ-2, вот думаю, что-нибудь на них замутить.
>Кроме как квартуса.
Вендорлок. Прошу любить и жаловать. Нету ему аналогов или замены.
MAX II если не ошибаюсь даже в веб версии старых квартусов без лицензий работал. Проблемы могут начаться при попытке использовать IP Core. В MAX II (и подобных мелких CPLD) SignalTap нет. Даже не ищи.
Кем вы вообще работаете и сколько платят? Думал из программистов ARM перекатиться. Стоит ли?
>Кем вы вообще работаете
Инженегром.
>сколько платя
50к в мухосрани.
>Стоит ли?
Если тебе льстит мысль, что ты смог в параллелизм в отличии от большинства остальных погороммистов, то да. В остальном же какой-нибудь линуксойд может получать и 100 и 200к.
>Если тебе льстит мысль, что ты смог в параллелизм в отличии от большинства остальных погороммистов, то да.
Ну достаточно сильно льстит. Но больше хочу заниматься прототипированием контроллеров шин данных, SIO, чипсетов и прочих микрух специального назначения.
Я просто работал на проекте и делал примерно то же для в симулятора. Модельки писал.
Такое вообще бывает на нашем рынке?
>В остальном же какой-нибудь линуксойд может получать и 100 и 200к.
Сейчас собственно и получаю 200к, а на ПЛИС вообще реально выйти под такие ЗП и выше? Все-таки узкоспец.
>Но больше хочу заниматься прототипированием контроллеров шин данных, SIO, чипсетов и прочих микрух специального назначения
Это куда-нибудь в зеленоградские конторы, по типу Миландра, которого обанкротили, Микрона и иже с ними. Но зп там тоже не очень.
>а на ПЛИС вообще реально выйти под такие ЗП и выше? Все-таки узкоспец.
Ну опять таки, смотря какие задачи будешь решать. Если могёшь в ЦОС на достойном уровне - то вполне, особенно в ДС.
Двачну, Плис без цос никому не нужно. Меня в конторе сразу поставили писать распараллеленное БПФ которое я так и не откатал до конца.
Не всегда. Мы вот спец коммутаторы делаем, например. ЦОС там, конечно, есть, но на самом минимальном уровне.
Но зачем, если их и так уже написано дохуя, и даже опенсорц?
Самой псевдослучайной последовательности, так понятнее?
>Какая самая дешевая плисина это осилит?
Если в общем случае, то почти любая с serdes. Если рассматривать алиэкспресс, то это наверное все начиная с третьего цмклона. Хотя сериализатор можно и снаружи прикрутить, даже проще будет.
Но дальше начнутся нюансы. Куда потом подавать все это? Сразу на модулятор? Тогда по любому придется задуматься о джиттере на выходе.
И у тебя не стыкуется картинка и слова. Если у тебя BPSK, как намекает картинка, то на один бит нужно передавать послельность целиком. И из 40-80 Мбит при такой длине будет многовато. Или я что-то не понимаю.
А еще коды Города не могут быть 512 и 1024, только 511 и 1023. Если дополнить эти до 512 или 1024, то даже на нормальном спектроанализаторе будет немного заметна разница.
>Если у тебя BPSK, как намекает картинка, то на один бит нужно передавать послельность целиком. И из 40-80 Мбит при такой длине будет многовато. Или я что-то не понимаю.
Вот этот момент я сам не уяснил. Я так понял что 1 бит просто много длиннее чипа, но вот должна ли быть вся последовательность на бит - непонятно. Я так понял достаточно чтобы 1 бит был в 8 и более раз длиннее чипа, этого достаточно. Но с точки зрения задачи тут не принципиально
>Если в общем случае, то почти любая с serdes. Если рассматривать алиэкспресс, то это наверное все начиная с третьего цмклона.
А всякие дешевые gowinы не осилят это?
>Хотя сериализатор можно и снаружи прикрутить, даже проще будет.
Поясни пожалуйста, что ты подразумеваешь под сериализатором
>Куда потом подавать все это? Сразу на модулятор?
Нет, из этого сначала потребуется сформировать дифференциальный сигнал причем биполярный, а не однополярный
ПЛИС дешёвые максимум 200-300 МГц осилят, дальше не сойдутся тайминги. Поэтому нужен на выходе модуль, который из параллельного сделает последовательный быстрый сигнал. Это и есть сериализатор от слова serial последовательный. Это может быть внешний чип.
На таких частотах лучше всего сразу из ПЛИС выдавать дифсигнал, если конечно сериализатор внутренний (serdes). В ПЛИС есть в отличие от контроллеров возможность выбрать выходной драйвер почти для всех портов, в том числе есть просто дифференциальный, lvds.
В кад.
>На таких частотах лучше всего сразу из ПЛИС выдавать дифсигнал
>В ПЛИС есть в отличие от контроллеров возможность выбрать выходной драйвер почти для всех портов, в том числе есть просто дифференциальный, lvds.
О, а может там можно и с common mode 0 V? Чтоб как на пикче было
Синфазное напряжение меняется тупо блокирующими конденсаторами и парой резисторов, которые привязывают постоянку к новому уровню.
Жизнь будет намного проще, если ты возьмешь RMII - ethernet чип вместо транзисторов. А так https://www.fpga4fun.com/10BASE-T0.html
А как заставить эту херню "заткнуться"? Т.е. я хочу иметь возможность выставить там уровень 0, когда нет сигнала. Если мы просто сместим это на несколько вольт, то у нас же при нуле на выходе будет логический минус, а не 0, не?
Я слышал от коллеги что там достаточно трансформатор на выход поставить. Ну и Плис чтобы 100 МГц тянула на пинах. Но сам проект не видел.
Ну да, когда синфазное напряжение с буфера падает с условных 1.5В до нуля, синфазное напряжение с блокирующих конденсаторов на какой-то момент упадёт с нуля до -1.5В, но конденсаторы быстро разрядятся через подтягивающие резисторы, и напряжение снова станет нулевым.
Но выключенный буфер вряд ли выдаёт ноль на обе фазы. Скорее, он переходит в Z-состояние, поэтому никакого скачка синфазного напряжения не будет.
Но если тебе надо конкретно прям включать синфазный ноль с буфера и чтобы с барьерных конденсаторов ничего прям не падало ниже -0.5В, можешь добавить стабилитроны на землю, которые будут оперативно сливать заряд при бросках напряжения ниже допустимого.
в статье тупо подключили к плис напрямую, поиграться хватит. Если надо 100мбит фулл дуплекс со всеми автополярностями и с полным соответствием стандарту, лучше прочитать стандарт https://ieeexplore.ieee.org/browse/standards/get-program/page/series?id=68. Но на транзисторах и логике это будет здоровый ящик гарантированно, смысл, если есть MII/RMII - ethernet чипы?
10 Мбит без проблем можно, там манчестер, на марсоходе статья была.
В 100 Мбит 3 или 4 уровня сигнала, нужен примитивный резистивный ЦАП и прием там тоже хитровыебанный.
Почитай даташит на какой-нибудь ksz8081 или dp83848, там все написано.
Проще купить ethernet phy за 200 р.
В обоих случаях нужен трансформатор, например, HX1188 или от мстатора.
>100мбит фулл дуплекс
Да.
>со всеми автополярностями
Если имеется в виду автоопределение приёма/передачи то можно и без них.
>нужен трансформатор
Трансформатор - не проблема.
>>508795
>нужен примитивный резистивный ЦАП
Могут ли здесь возникнуть трудности?
>прием там тоже хитровыебанный
Т.е. нужен АЦП? На резисторах собрать можно?
>есть MII/RMII - ethernet чипы
>Проще купить ethernet phy
С закупкой импорта дела всё хуже и хуже.
То есть, ПЛИС ты можешь достать без проблем, а Ethernet PHY не можешь? Ты либо ебанутый, либо ситуация пиздец какая уникальная.
В связи с последними событиями нам настоятельно рекомендуют по возможности сокращать импортную номенклатуру.
Так ты и сокращай, только как-нибудь иначе. Ну там например вместо двух микросхем fpga+конфигурационных память возьми одну микросхему MAX 10 (если по объему хватит). Можно же без столь радикальных шагов обойтись и номенклатуру сократить. Реально то наоборот поставки импорта надёжнее. Хотя бы как с Миландром вышло, да и со многими другими. У меня ещё из недавнего ЦАП от нииэт отвалился.
>Так ты и сокращай
Так уже всё и сокращено, остался спартан 6 и флешка к нему.
А вот Миландра - да, больше нет, а там то как раз и были трансиверы, притом сразу два, как раз то что надо. Программка там крутилась не сложная, её можно и в плис перенести, но трансиверы теперь надо ставить внешние. Вот я и думаю как бы обойтись без них.
Так воткни макс 10 вместо спартана и будет тебе сокращение номенклатуры на одну штуку, без замены трансивера. В нем же флешка встроенная.
Скорее всего на ПЛИС потребуется дополнительная оперативка для полноценного сетевого стека.
Когда делал triple speed ethernet на циклоне, нужна была внешняя оперативка (32 Мбит sdram), во внутренней он не помещался.
У хилых какое-то аналогичное решение было.
По сравнению с миландром разводка такой платы - это просто пиздец, сотня цепей, выравнивание дорожек, bga и 2-3 питальника. И компоненты не самые доступные.
Если что, 10 и 100 Мбит полностью совместимы.
Возможно, хватит какого-нибудь простого варианта на 10 Мбит с отправкой сообщений без полноценного стека, как у марсохода.
Я бы посмотрел в сторону stm32f407/cks32f407/apm32f407 + ethernet phy или ch32v307, но пока ни то, ни другое не использовал.
Идеальный вариант - выкинуть ethernet и заменить на rs-422/485/can, если скорость позволяет.
это просто гениальная идея выкинуть ширпотребный фронтэнд, который всегда будет у китайцев, и вместо этого загрузить плисину разбором 100 мб/с последовательных данных, зная что такие плис всегда будут под санкциями
хотя какой суперлогики я хочу от оборонки
бутылку из задницы вытащи сначала, а потом указывай что делать
>макс 10 вместо спартана
Я с ним не работал, в даташит лезть сейчас лень. Если можешь скажи, там есть ПЛЛ, полноценная двухпортовая память, аппаратные умножители? Сдаётся мне не влезет мой проект в него.
>без замены трансивера
Так в этом то вся проблема, Миландр отвалился и теперь нужна замена трансиверам. А со спартаном и с его флешкой проблем пока пока нет.Но в долгосрочной перспективе надо думать и о его замене.
>>508972
>потребуется дополнительная оперативка для полноценного сетевого стека
У нас только канальный уровень, без этих ваших модных тисипи/айпи.
>10 и 100 Мбит полностью совместимы
>Возможно, хватит какого-нибудь простого варианта на 10 Мбит
10 мало, нужно 100.
>Идеальный вариант - выкинуть ethernet и заменить на rs-422/485/can
К сожалению нет. Позняк метаться. Решение принято, ТЗ утверждено, документация заложена, ответная аппаратура закуплена.
>>508946
>начни с этого
спс, гляну.
>там есть ПЛЛ, полноценная двухпортовая память, аппаратные умножители?
Да, все это есть. Единственный нюанс в инициализации памяти, версия без АЦП не умеет инициализировать память, так что если оно нужно, то необходимо брать чуть более дорогую версию.
>Да, все это есть.
Хорошо если так. Только проблему трансиверов не решает, их как нету, так и нет.
Возьми китайские, например, sr8201.
Типа счетчик считает такты и тд.
Типа счетчик считает такты и тд. Как system clock в linux
Меняешь у счётчика максимальное значение до которого он может досчитывать и всё.
harris, harris, digital design and computer architecture
Если еще актуально.
Потом жмешь на "Files", там где ты вопрос нарисовал, кажется правой кнопкой мыши под рукой сейчас нет квартуса, а действия эти выполняю уже на мышечной памяти, и добавляешь в открывшемся окошке файлы.
> потом в меню new создал файл .sv
Это не обязательно, можно точно так же хоть в проводнике (или еще чем) создать пустой файл, мне так даже удобнее как-то. И я бы перед тем как тыкать в квартусе, проверил бы эту ерунду в моделсиме. Тем более такую "лабу" и вовсе синтезировать как-то особо ни к чему.
Я учусь в квартусе кодить. С добавлением файлов в проект разобрался. А как сделать назначение пинов в редакторе? У меня китайская дев плата, на которой стоит альтера EP4CE6E22C8N. В настройках модели чипа была только EP4CE6E22C8 без N на конце, я указал ее. Открываю редактор assignments, а там в поле Value непонятно как задать номера пинов. Какой-то список выпадающий. У меня квартус 22.1.
>А как сделать назначение пинов в редакторе?
Если еще актуально, то лучше натыкать в "Pin Planner". Там сразу видно к какому банку относятся выводы и все конфликты проверяются. Удобно вобщем, особенно при создании своих устройств.
>>514652
Он сам там появляется в выпадающем списке, нужно только драйвера установить. Это если не переглючит, но такое только в лялихе замечал.
>нужно только драйвера установить.
Ну и сам бластер воткнуть разумеется. Вот прямо в "Available hardware items" появляется автоматом. Остается только выбрать в "Currently selected hardware".
А у меня даже типа "USB Blaster" нету. Сам бластер воткнул, в диспетчере устройств он определяется как USB Blaster, а квартус его не видит. ЧТо делать?
>ЧТо делать?
Не знаю. Но окошко "Add hardware", которое ты открыл, открывать точно не нужно. Это для того что в LPT втыкается или по сети работает, для USB это никаким боком.
Попробуй перезагрузить что-ли, под виндой с таким не сталкивался. А в лялихе помогает прибить процесс jtag-что-то там.
>- Настройки Quartus-а и компиляции;
>- TimeQuest;
>- Ревизии;
>- Копирование, архивирование и восстановление проекта.
Первые два пункта ладно еще, только странно что TimeQuest уделено столь мало внимания.
Но резервное копирование с архивацией? Бред какой-то. Даже если оно там есть это глупо использовать, есть же git или еще что-нибудь по вкусу. Да и с ревизиями почти то же самое на практике. Нафиг было вообще это упоминать, когда таймквесту уделено столь мало внимания.
Помимо этого, вряд ли в видео есть о том как бороться с переглючиванием квартуса, которое случилось у анона.
>Помимо этого, вряд ли в видео есть о том как бороться с переглючиванием квартуса, которое случилось у анона.
Я решил проблему с проглючиванием USB Blaster. Надо было протсо автоматически из диспетчера устройств установить драйвера для бластера, которые лежали в папке с квартусом. Теперь другая проблема - квартус не прошивает плату, пишет вот это:
Error (209040): Can't access JTAG chain
Error (209012): Operation failed
Info (209061): Ended Programmer operation at Sun Jan 8 19:04:19 2023
В чем тут дело?
Разобрался. По круглому кабелю ндао было подать питание на FPGA.
>Но резервное копирование с архивацией? Бред какой-то.
Это тебе не просто rar-ом запаковать, там свои тонкости.
>Это тебе не просто rar-ом запаковать, там свои тонкости.
Просто освой git или еще что по вкусу. Нет там никаких тонкостей. К тому же рар в 2023 году это уже странно.
Ну, в симуляции твой код будет работать, если задать начальное значение для counter и state, потому что иначе там x всегда будет. При синтезе дело иное конечно, но все равно не дело писать так чтобы работало при синтезе, но не при симуляции. Ещё и integer не стоит использовать в синтезируемом коде.
Вобщем если проблема не с тем что ты перепутал выводы или ещё чем-то из той же серии, то стоит заменить integer на reg с требуемой разрядностью и на всякий случай задать там начальные значения.
Вот так? Все равно лампочка горит, а не мигает. И если в блоке initial прописать state = 1, то лампочка не горит. Она горит только если state = 0;
1. Ни чё что у тебя stste 32-х разрядная?
2. Какой космический с 20 строчки?
3. У тебя, когда счётчик досчитывает до 25000000 он одновременно и инкриминируется (12 строчка) и обнуляется (15 строчка).
Попробуй так
if(counter == 25000000)
begin
counter <= 0 ;
state <= !state;
end
else
begin
counter <= counter + 1'd1;
end
>У тебя, когда счётчик досчитывает до 25000000 он одновременно и инкриминируется (12 строчка) и обнуляется (15 строчка)
Не одновременно, а по условию. Инкрементируем всегда, но если досчитали, то обнуляем.
Не помогло. Все равно не мигает. Что ты имел в виду здесь?
>2. Какой космический с 20 строчки?
Значит проблема не в этом коде. Выведи тактовый сигнал на какой-нибудь вывод и посмотри осциллографом, может у тебя там напутано.
>Вот так?
Не совсем. Зачем для state 32 разряда? Да и для счётчика избыточно. Ещё стоит параметры использовать, сейчас это может избыточно, но потом может многое упростить. А разрядность счётчика можно автоматически логарифмом посчитать. Но это на будущее.
И зря ты схватился сразу за синтез. Так не делается, сначала все это симулируют, тестбенчи пишут.
>>514796
>одновременно и инкриминируется
Не блокирующее присваивание так не работает в любом случае.
>А разрядность счётчика можно автоматически логарифмом посчитать. Но это на будущее.
Это как считается логарифмом?
Как-то так https://stackoverflow.com/questions/5269634/address-width-from-ram-depth
Только в случае со счётчиком смотри единичку не проеби как этот страдалец https://stackoverflow.com/questions/62493200/verilog-minimum-bit-width Ему там ещё в первом ответе правильно написали.
>Не одновременно, а по условию. Инкрементируем всегда, но если досчитали, то обнуляем.
Нет. У тебя там есть момент когда именно два действия происходят на одном такте. Можно конечно смотреть в RTL и пытаться понять как синтезатор такое синтезировал, но лучше всего не поленится и разнести их явно.
>>514798
>Что ты имел в виду здесь?
>>2. Какой космический с 20 строчки?
Зачем переназначать state в led, когда вместо
state <= !state;
можно сразу написать
led <=!led;
предварительно сделав led тоже регистром
А вообще посмотри, твой светодиод горит в полную яркость или же нет.
Может быть так что, он мигает, но очень быстро... хотя вряд ли конечно...
И какая частота у твоего генератора?
>Можно
А может ты прочтешь о том что такое неблокирующее присваивание и чем оно отличается от блокирующего?
А может ты сменишь тон и не будешь выёживаться на пустом месте.
В данном случае присвоение
assign led = state;
избыточно.
state можно сразу вывести на светодиод.
>на пустом месте.
Это не пустое место, а дезинформация с твоей стороны. Про повторное присваивание, если что.
Без assign тут конечно можно обойтись, но это уже мелочи.
>Может быть так что, он мигает, но очень быстро... хотя вряд ли конечно...
Даже при тактовой 250 МГц будет частота мигания 5 Гц. Да хоть при 1 ГГц получаемые 20 Гц уже будут сразу заметны.
Более всего вероятно то что перепутан вывод или enable на тактовый генератор нужно выдать или ещё что-то аналогичное.
Это только предположение что генератор может включаться от плисины. Мало ли как сделали.
На твоём месте я бы ткнул осциллографом в выход генератора для начала. Если там все нормально, то вывел бы тактовый сигнал напрямую на светодиод или ещё куда и ткнул осциллограф уже туда.
Ну и разумеется внимательнее посмотреть принципиальную схему твоей платы.
>Это не пустое место, а дезинформация с твоей стороны. Про повторное присваивание, если что.
Ещё раз. Где конкретно ты увидел дезинформацию?
Info: *
Info: Running Quartus Prime Analysis & Synthesis
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:09 2023
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (12021): Found 1 design units, including 1 entities, in source file light.sv
Info (12023): Found entity 1: light
Info (12021): Found 1 design units, including 1 entities, in source file blink.sv
Info (12023): Found entity 1: blink
Info (12127): Elaborating entity "blink" for the top level hierarchy
Info (286030): Timing-Driven Synthesis is running
Info (17049): 6 registers lost all their fanouts during netlist optimizations.
Info (16010): Generating hard_block partition "hard_block:auto_generated_inst"
Info (16011): Adding 0 node(s), including 0 DDIO, 0 PLL, 0 transceiver and 0 LCELL
Info (21057): Implemented 30 device resources after synthesis - the final resource count might be different
Info (21058): Implemented 1 input pins
Info (21059): Implemented 1 output pins
Info (21061): Implemented 28 logic cells
Info: Quartus Prime Analysis & Synthesis was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4754 megabytes
Info: Processing ended: Mon Jan 9 19:49:21 2023
Info: Elapsed time: 00:00:12
Info: Total CPU time (on all processors): 00:00:29
Info: *****************************************************
Info: Running Quartus Prime Fitter
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:22 2023
Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Info: qfit2_default_script.tcl version: #1
Info: Project = Lab1
Info: Revision = Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (119006): Selected device EP4CE6E22C8 for design "Lab1"
Info (21077): Low junction temperature is 0 degrees C
Info (21077): High junction temperature is 85 degrees C
Info (171003): Fitter is performing an Auto Fit compilation, which may decrease Fitter effort to reduce compilation time
Warning (292013): Feature LogicLock is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature.
Info (176444): Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices
Info (176445): Device EP4CE10E22C8 is compatible
Info (176445): Device EP4CE15E22C8 is compatible
Info (176445): Device EP4CE22E22C8 is compatible
Info (169124): Fitter converted 5 user pins into dedicated programming pins
Info (169125): Pin ~ALTERA_ASDO_DATA1~ is reserved at location 6
Info (169125): Pin ~ALTERA_FLASH_nCE_nCSO~ is reserved at location 8
Info (169125): Pin ~ALTERA_DCLK~ is reserved at location 12
Info (169125): Pin ~ALTERA_DATA0~ is reserved at location 13
Info (169125): Pin ~ALTERA_nCEO~ is reserved at location 101
Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details
Critical Warning (169085): No exact pin location assignment(s) for 1 pins of 2 total pins. For the list of pins please refer to the I/O Assignment Warnings table in the fitter report.
Critical Warning (332012): Synopsys Design Constraints File file not found: 'Lab1.sdc'. A Synopsys Design Constraints File is required by the Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.
Info (332144): No user constrained base clocks found in the design
Info (332143): No user constrained clock uncertainty found in the design. Calling "derive_clock_uncertainty"
Info (332154): The derive_clock_uncertainty command did not apply clock uncertainty to any clock-to-clock transfers.
Info (332130): Timing requirements not specified -- quality metrics such as performance may be sacrificed to reduce compilation time.
Info (176353): Automatically promoted node clk~input (placed in PIN 89 (CLK6, DIFFCLK_3p))
Info (176355): Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G9
Info (176233): Starting register packing
Info (176235): Finished register packing
Extra Info (176219): No registers were packed into other blocks
Info (171121): Fitter preparation operations ending: elapsed time is 00:00:01
Info (14896): Fitter has disabled Advanced Physical Optimization because it is not supported for the current family.
Info (170189): Fitter placement preparation operations beginning
Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00
Info (170191): Fitter placement operations beginning
Info (170137): Fitter placement was successful
Info (170192): Fitter placement operations ending: elapsed time is 00:00:00
Info (170193): Fitter routing operations beginning
Info (170195): Router estimated average interconnect usage is 0% of the available device resources
Info (170196): Router estimated peak interconnect usage is 0% of the available device resources in the region that extends from location X11_Y0 to location X22_Y11
Info (170199): The Fitter performed an Auto Fit compilation. Optimizations were skipped to reduce compilation time.
Info (170201): Optimizations that may affect the design's routability were skipped
Info (170194): Fitter routing operations ending: elapsed time is 00:00:00
Info (11888): Total time spent on timing analysis during the Fitter is 0.14 seconds.
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (11218): Fitter post-fit operations ending: elapsed time is 00:00:01
Info (144001): Generated suppressed messages file C:/Users/mathe/Documents/Quartus/Lab1/output_files/Lab1.fit.smsg
Info: Quartus Prime Fitter was successful. 0 errors, 5 warnings
Info: Peak virtual memory: 5223 megabytes
Info: Processing ended: Mon Jan 9 19:49:27 2023
Info: Elapsed time: 00:00:05
Info: Total CPU time (on all processors): 00:00:05
Info: *******************************************************************
Info: Running Quartus Prime Assembler
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:28 2023
Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (115031): Writing out detailed assembly data for power analysis
Info (115030): Assembler is generating device programming files
Info: Quartus Prime Assembler was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4694 megabytes
Info: Processing ended: Mon Jan 9 19:49:28 2023
Info: Elapsed time: 00:00:00
Info: Total CPU time (on all processors): 00:00:01
Info (293026): Skipped module Power Analyzer due to the assignment FLOW_ENABLE_POWER_ANALYZER
Info: *******************************************************************
Info: Running Quartus Prime Timing Analyzer
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:29 2023
Info: Command: quartus_sta Lab1 -c Lab1
Info: qsta_default_script.tcl version: #1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (21077): Low junction temperature is 0 degrees C
Info (21077): High junction temperature is 85 degrees C
Critical Warning (332012): Synopsys Design Constraints File file not found: 'Lab1.sdc'. A Synopsys Design Constraints File is required by the Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.
Info (332142): No user constrained base clocks found in the design. Calling "derive_clocks -period 1.0"
Info (332105): Deriving Clocks
Info (332105): create_clock -period 1.000 -name clk clk
Info (332143): No user constrained clock uncertainty found in the design. Calling "derive_clock_uncertainty"
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Info: Found TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS = ON
Info: Analyzing Slow 1200mV 85C Model
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -2.183
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -2.183 -40.627 clk
Info (332146): Worst-case hold slack is 0.465
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.465 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -44.636 clk
Info: Analyzing Slow 1200mV 0C Model
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -1.804
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -1.804 -33.190 clk
Info (332146): Worst-case hold slack is 0.416
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.416 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -44.636 clk
Info: Analyzing Fast 1200mV 0C Model
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -0.432
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -0.432 -4.215 clk
Info (332146): Worst-case hold slack is 0.190
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.190 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -33.059 clk
Info (332102): Design is not fully constrained for setup requirements
Info (332102): Design is not fully constrained for hold requirements
Info: Quartus Prime Timing Analyzer was successful. 0 errors, 5 warnings
Info: Peak virtual memory: 4751 megabytes
Info: Processing ended: Mon Jan 9 19:49:31 2023
Info: Elapsed time: 00:00:02
Info: Total CPU time (on all processors): 00:00:02
Info: *******************************************************************
Info: Running Quartus Prime EDA Netlist Writer
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:32 2023
Info: Command: quartus_eda --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (204019): Generated file Lab1.vo in folder "C:/Users/mathe/Documents/Quartus/Lab1/simulation/questa/" for EDA simulation tool
Info: Quartus Prime EDA Netlist Writer was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4638 megabytes
Info: Processing ended: Mon Jan 9 19:49:33 2023
Info: Elapsed time: 00:00:01
Info: Total CPU time (on all processors): 00:00:01
Info (293000): Quartus Prime Full Compilation was successful. 0 errors, 13 warnings
Info: *
Info: Running Quartus Prime Analysis & Synthesis
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:09 2023
Info: Command: quartus_map --read_settings_files=on --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (12021): Found 1 design units, including 1 entities, in source file light.sv
Info (12023): Found entity 1: light
Info (12021): Found 1 design units, including 1 entities, in source file blink.sv
Info (12023): Found entity 1: blink
Info (12127): Elaborating entity "blink" for the top level hierarchy
Info (286030): Timing-Driven Synthesis is running
Info (17049): 6 registers lost all their fanouts during netlist optimizations.
Info (16010): Generating hard_block partition "hard_block:auto_generated_inst"
Info (16011): Adding 0 node(s), including 0 DDIO, 0 PLL, 0 transceiver and 0 LCELL
Info (21057): Implemented 30 device resources after synthesis - the final resource count might be different
Info (21058): Implemented 1 input pins
Info (21059): Implemented 1 output pins
Info (21061): Implemented 28 logic cells
Info: Quartus Prime Analysis & Synthesis was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4754 megabytes
Info: Processing ended: Mon Jan 9 19:49:21 2023
Info: Elapsed time: 00:00:12
Info: Total CPU time (on all processors): 00:00:29
Info: *****************************************************
Info: Running Quartus Prime Fitter
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:22 2023
Info: Command: quartus_fit --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Info: qfit2_default_script.tcl version: #1
Info: Project = Lab1
Info: Revision = Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (119006): Selected device EP4CE6E22C8 for design "Lab1"
Info (21077): Low junction temperature is 0 degrees C
Info (21077): High junction temperature is 85 degrees C
Info (171003): Fitter is performing an Auto Fit compilation, which may decrease Fitter effort to reduce compilation time
Warning (292013): Feature LogicLock is only available with a valid subscription license. You can purchase a software subscription to gain full access to this feature.
Info (176444): Device migration not selected. If you intend to use device migration later, you may need to change the pin assignments as they may be incompatible with other devices
Info (176445): Device EP4CE10E22C8 is compatible
Info (176445): Device EP4CE15E22C8 is compatible
Info (176445): Device EP4CE22E22C8 is compatible
Info (169124): Fitter converted 5 user pins into dedicated programming pins
Info (169125): Pin ~ALTERA_ASDO_DATA1~ is reserved at location 6
Info (169125): Pin ~ALTERA_FLASH_nCE_nCSO~ is reserved at location 8
Info (169125): Pin ~ALTERA_DCLK~ is reserved at location 12
Info (169125): Pin ~ALTERA_DATA0~ is reserved at location 13
Info (169125): Pin ~ALTERA_nCEO~ is reserved at location 101
Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details
Critical Warning (169085): No exact pin location assignment(s) for 1 pins of 2 total pins. For the list of pins please refer to the I/O Assignment Warnings table in the fitter report.
Critical Warning (332012): Synopsys Design Constraints File file not found: 'Lab1.sdc'. A Synopsys Design Constraints File is required by the Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.
Info (332144): No user constrained base clocks found in the design
Info (332143): No user constrained clock uncertainty found in the design. Calling "derive_clock_uncertainty"
Info (332154): The derive_clock_uncertainty command did not apply clock uncertainty to any clock-to-clock transfers.
Info (332130): Timing requirements not specified -- quality metrics such as performance may be sacrificed to reduce compilation time.
Info (176353): Automatically promoted node clk~input (placed in PIN 89 (CLK6, DIFFCLK_3p))
Info (176355): Automatically promoted destinations to use location or clock signal Global Clock CLKCTRL_G9
Info (176233): Starting register packing
Info (176235): Finished register packing
Extra Info (176219): No registers were packed into other blocks
Info (171121): Fitter preparation operations ending: elapsed time is 00:00:01
Info (14896): Fitter has disabled Advanced Physical Optimization because it is not supported for the current family.
Info (170189): Fitter placement preparation operations beginning
Info (170190): Fitter placement preparation operations ending: elapsed time is 00:00:00
Info (170191): Fitter placement operations beginning
Info (170137): Fitter placement was successful
Info (170192): Fitter placement operations ending: elapsed time is 00:00:00
Info (170193): Fitter routing operations beginning
Info (170195): Router estimated average interconnect usage is 0% of the available device resources
Info (170196): Router estimated peak interconnect usage is 0% of the available device resources in the region that extends from location X11_Y0 to location X22_Y11
Info (170199): The Fitter performed an Auto Fit compilation. Optimizations were skipped to reduce compilation time.
Info (170201): Optimizations that may affect the design's routability were skipped
Info (170194): Fitter routing operations ending: elapsed time is 00:00:00
Info (11888): Total time spent on timing analysis during the Fitter is 0.14 seconds.
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (11218): Fitter post-fit operations ending: elapsed time is 00:00:01
Info (144001): Generated suppressed messages file C:/Users/mathe/Documents/Quartus/Lab1/output_files/Lab1.fit.smsg
Info: Quartus Prime Fitter was successful. 0 errors, 5 warnings
Info: Peak virtual memory: 5223 megabytes
Info: Processing ended: Mon Jan 9 19:49:27 2023
Info: Elapsed time: 00:00:05
Info: Total CPU time (on all processors): 00:00:05
Info: *******************************************************************
Info: Running Quartus Prime Assembler
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:28 2023
Info: Command: quartus_asm --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (115031): Writing out detailed assembly data for power analysis
Info (115030): Assembler is generating device programming files
Info: Quartus Prime Assembler was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4694 megabytes
Info: Processing ended: Mon Jan 9 19:49:28 2023
Info: Elapsed time: 00:00:00
Info: Total CPU time (on all processors): 00:00:01
Info (293026): Skipped module Power Analyzer due to the assignment FLOW_ENABLE_POWER_ANALYZER
Info: *******************************************************************
Info: Running Quartus Prime Timing Analyzer
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:29 2023
Info: Command: quartus_sta Lab1 -c Lab1
Info: qsta_default_script.tcl version: #1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (20030): Parallel compilation is enabled and will use 2 of the 2 processors detected
Info (21077): Low junction temperature is 0 degrees C
Info (21077): High junction temperature is 85 degrees C
Critical Warning (332012): Synopsys Design Constraints File file not found: 'Lab1.sdc'. A Synopsys Design Constraints File is required by the Timing Analyzer to get proper timing constraints. Without it, the Compiler will not properly optimize the design.
Info (332142): No user constrained base clocks found in the design. Calling "derive_clocks -period 1.0"
Info (332105): Deriving Clocks
Info (332105): create_clock -period 1.000 -name clk clk
Info (332143): No user constrained clock uncertainty found in the design. Calling "derive_clock_uncertainty"
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Info: Found TIMING_ANALYZER_REPORT_SCRIPT_INCLUDE_DEFAULT_ANALYSIS = ON
Info: Analyzing Slow 1200mV 85C Model
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -2.183
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -2.183 -40.627 clk
Info (332146): Worst-case hold slack is 0.465
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.465 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -44.636 clk
Info: Analyzing Slow 1200mV 0C Model
Info (334003): Started post-fitting delay annotation
Info (334004): Delay annotation completed successfully
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -1.804
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -1.804 -33.190 clk
Info (332146): Worst-case hold slack is 0.416
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.416 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -44.636 clk
Info: Analyzing Fast 1200mV 0C Model
Info (332123): Deriving Clock Uncertainty. Please refer to report_sdc in the Timing Analyzer to see clock uncertainties.
Critical Warning (332148): Timing requirements not met
Info (11105): For recommendations on closing timing, run Report Timing Closure Recommendations in the Timing Analyzer.
Info (332146): Worst-case setup slack is -0.432
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -0.432 -4.215 clk
Info (332146): Worst-case hold slack is 0.190
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): 0.190 0.000 clk
Info (332140): No Recovery paths to report
Info (332140): No Removal paths to report
Info (332146): Worst-case minimum pulse width slack is -3.000
Info (332119): Slack End Point TNS Clock
Info (332119): ========= =================== =====================
Info (332119): -3.000 -33.059 clk
Info (332102): Design is not fully constrained for setup requirements
Info (332102): Design is not fully constrained for hold requirements
Info: Quartus Prime Timing Analyzer was successful. 0 errors, 5 warnings
Info: Peak virtual memory: 4751 megabytes
Info: Processing ended: Mon Jan 9 19:49:31 2023
Info: Elapsed time: 00:00:02
Info: Total CPU time (on all processors): 00:00:02
Info: *******************************************************************
Info: Running Quartus Prime EDA Netlist Writer
Info: Version 22.1std.0 Build 915 10/25/2022 SC Lite Edition
Info: Processing started: Mon Jan 9 19:49:32 2023
Info: Command: quartus_eda --read_settings_files=off --write_settings_files=off Lab1 -c Lab1
Warning (18236): Number of processors has not been specified which may cause overloading on shared machines. Set the global assignment NUM_PARALLEL_PROCESSORS in your QSF to an appropriate value for best performance.
Info (204019): Generated file Lab1.vo in folder "C:/Users/mathe/Documents/Quartus/Lab1/simulation/questa/" for EDA simulation tool
Info: Quartus Prime EDA Netlist Writer was successful. 0 errors, 1 warning
Info: Peak virtual memory: 4638 megabytes
Info: Processing ended: Mon Jan 9 19:49:33 2023
Info: Elapsed time: 00:00:01
Info: Total CPU time (on all processors): 00:00:01
Info (293000): Quartus Prime Full Compilation was successful. 0 errors, 13 warnings
Вроде ничего критичного. А вообще там есть отдельная вкладка, где он только ворнинги показывает без лишней информации.
Микросхема правильно указана?
На твоей отладке есть кнопка? Попробуй кнопку на светодиод прокинуть напрямую.
Ещё добавлю. Вот на это обрати внимание.
>Warning (15714): Some pins have incomplete I/O assignments. Refer to the I/O Assignment Warnings report for details
И ещё, посмотри схему в тихнолоджи мап вьювире. Может он всё сминимизировал нахер по какой-то причине.
>На твоей отладке есть кнопка? Попробуй кнопку на светодиод прокинуть напрямую
С кнопкой работает. Кнопка включает и выключает диод, с этим ок.
Тогда выведи тактовый сигнал напрямую на светодиод. Он должен светится в половину полной яркости.
>Что значит 74?
74 это номер пина, к которому подключен диод.
>Указать надо тот вывод плисины на который подключён тактовый генератор. Смотри схему своей отладки. И чёта clk на пике у тебя жёлтым цветом.
У меня плата C4E6/E10-CORE. Вроде тактовый генератор на ней подключен к пинам 33 и 34. Вот здесь >>514835 я выбрал один из этих пинов, но схема не заработала.
Офигенно, заработало! Прочитал на самой плате, что тактовый генератор у меня на пине 24.
Я уже писал, но могу повторить. Ты не знаешь как работает неблокирующее присваивание. А именно ситуация которую ты описал в пункте 3 >>514796 может произойти только если присваивается в один регистр из двух разных блоков always, но там синтезатор сразу ошибку выдаст. Если несколько раз присваивается в одном блоке, то в итоге присвоится только последний результат. За доказательствами - в любой нормальный учебник. И не надо пудрить новичкам мозги.
>>514843
Ну вот как я и предполагал, что вероятнее тактовый сигнал не доходит.
960x1122, 0:10
Не олигарх, но в свое прекрасное будущее готов инвестировать 10-20т. На 30т+ жаба уже давит, но если партия скажет надо...
Просветите, что является мегарулезом всех времен и народов?
Altera? Xilinx? ZynQ? GoWin?
Что делать по началу ТОЧНО НЕ НАДО чтобы не въебатся?
Чего хочется стратегически.
Перекотиться из унылого STM32 эмбеддинга в сверкающий мир пони единорогов FPGA разработки. Или хотя бы уметь, понимать и быть готовым.
Чего хочется практически.
Начальные примеры светодиодиков итд понятны. В мечтах 8битный или 16битный комп. Чтобы под камень/семейство/плату были готовые проекты. Чтобы берешь проект или начинаешь делать с какого-нибудь видео или сайта (или из книги), а он у тебя компиляется и работает без проблем. И ты не сношаешь мозг с адаптацией, потому что сношений и отладки мне и на работе хватает.
Что точно не хочется.
Китайчатины с сорцами на китайском. Не хочется голую плату без примеров и уроков. Не хочется плату с дохлым или полудохлым железом (видел и такое в отзывах на али). Не хочется въебаться с поддержкой софта на PC (софт или устарел или новый софт не поддерживает камень).
Как сделать разумный выбор?
>А именно ситуация которую ты описал в пункте 3
А, теперь понятно про что ты.
Всё так. Но для новичков, как раз, лучше не погружаться в тонкости блокирующих/неблокирующих присвоений, на начальных этапах это может только всё запутать. Это всё потом придёт с опытом.
Zynq 7010 - 7020 если хочется пощупать что-то свежее недорого, если есть деньги - что-то типа https://www.aliexpress.com/item/4001309317597.html , если нет - бери плату от майнера https://fpga-systems.ru/publ/boards_review/xilinx_fpga/zynq_hw_ebaz4205/20-1-0-121 , но может попасться залоченная вирусом
GoWin - если потом искать работу в раше
>>514994
Спасиб, ребят, зачет. Было бы приятно если б вы еще аргументировали чтобы мне было понятно.
Альтера - почему? Примерно понимаю, видимо накопленные за годы решения проще?
Больше охват среди русскоязычной аудитории?
Zynq - только потому что свежак и крутяк? Сразу крутяк брать это для меня полного нуба глупо. Самое лучшее - некая золотая середина. Не совсем уж убогое нищебродство с которым потом зае..шься. Но и крутяк от которого охуеешь от сложности тоже такое...
Под Zynq ваять звали этой весной в Швейцарию, готовая плата. Пролетел =(
>Альтера - почему?
За Альтеру скажу так: с неё проще начать вкат новичку. Более дружелюбное и понятное ПО, только не бери последние версии, возьми где-нибудь 15, а лучше, если будешь сидеть под каким-нибудь Сыклоном 4, взять вообще 9.1, самая быстрая и адекватная версия из всех.
Если как ты пишешь
>Чтобы под камень/семейство/плату были готовые проекты. Чтобы берешь проект или начинаешь делать с какого-нибудь видео или сайта (или из книги), а он у тебя компиляется и работает без проблем. И ты не сношаешь мозг с адаптацией, потому что сношений и отладки мне и на работе хватает.
Тут только что-то от terasic
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=13&List=Simple
На Ютубе видел чувака, на одной такой плате сделал клон Денди.
А чтобы не возится с адаптацией вообще такого не бывает, только если отладка точно-такая же. Возиться с адаптацией - это один из этапов проектирования, потому-то и в том числе поэтому порог вхождения в плисы выше чем в тот же пердуино.
Но у Терасика и раньше было проблемно отладки купить, а сейчас так вообще наверно проблема. Хотя какие-то ихние платы в чип-дипе есть, но какие там цены - сам понимаешь.
А вообще я бы советовал, перед тем как большие деньги тратить, для начала что-то простое взять, посмотреть зайдут ли плисины вообще, поделать простые и средние проекты. На Ютубе есть такой канал, тут ссылку не так давно кидали.
Так-что ищи у китайцев отладки с Сыклоном 4, на данный момент оптимальное цена/качество как мне кажется.
Например
https://aliexpress.ru/item/1005001279028952.html?spm=a2g2w.orderdetail.0.0.33544aa6o455VD&sku_id=12000015559827909
и программатор
https://aliexpress.ru/item/1005002703504597.html?spm=a2g2w.orderdetail.0.0.33544aa6QoXK8V&sku_id=12000021782265860
Найдёшь что-то аналогичное дешевле - молодец.
>Что там лочится?
пережигаемые фьюзы
>Zynq - только потому что свежак и крутяк?
потому что ARM в комплекте и куча статей даже на хабре
Хочу я вывести тактовый сигнал с плл на ногу.
микросхема спартан 6 - XC6SLX150-FG484I
В коде пишу
module TopModule(... output ETH1MDC, output ETH2MDC, ....);
...
PLL1 PLL1(.CLK1(ETH1MDC), .CLK2(ETH2MDC), .LOCKED(PLL1LOCK), .CLK(ETH1CLK));
...
endmodule
В .ucf так
NET "ETH1CLK"LOC = W12| IOSTANDARD = LVCMOS33;
NET "ETH2CLK"LOC = Y12| IOSTANDARD = LVCMOS33;
на названия сигналов внимание не обращайте, они почти рандом
А он мне в ответ вот это
ERROR:Place:1205 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH1MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1205 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH2MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1136 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins.
< PIN: ETH1MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue.
< PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1136 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins.
< PIN: ETH2MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue.
< PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Pack:1654 - The timing-driven placement phase encountered an error.
И что это такое? Мм? И что мне с этим делать?
Хорошо. Дописываю в .ucf
PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
Теперь эти ошибки перешли в разряд вниманий
WARNING:Place:1206 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH1MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint was
applied on COMP.PIN <PLL1/clkout1_buf.O> allowing your design to continue.
This constraint disables all clock placer rules related to the specified
COMP.PIN.
WARNING:Place:1206 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH2MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint was
applied on COMP.PIN <PLL1/clkout2_buf.O> allowing your design to continue.
This constraint disables all clock placer rules related to the specified
COMP.PIN.
WARNING:Place:1137 - This design is not guaranteed to be routable! This design
contains a global buffer instance, <PLL1/clkout1_buf>, driving the net,
<ETH1MDC_OBUF>, that is driving the following (first 30) non-clock load pins.
< PIN: ETH1MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. Please pay extra attention to the timing and routing of this path to
ensure the design goals are met. This is normally an ERROR but the
CLOCK_DEDICATED_ROUTE constraint was applied on COMP.PIN <PLL1/clkout1_buf.O>
allowing your design to continue. This constraint disables all clock placer
rules related to the specified COMP.PIN.
WARNING:Place:1137 - This design is not guaranteed to be routable! This design
contains a global buffer instance, <PLL1/clkout2_buf>, driving the net,
<ETH2MDC_OBUF>, that is driving the following (first 30) non-clock load pins.
< PIN: ETH2MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. Please pay extra attention to the timing and routing of this path to
ensure the design goals are met. This is normally an ERROR but the
CLOCK_DEDICATED_ROUTE constraint was applied on COMP.PIN <PLL1/clkout2_buf.O>
allowing your design to continue. This constraint disables all clock placer
rules related to the specified COMP.PIN.
Так что ему падле надо? Чтобы вывести тактовый сигнал с пллки наружу почему такая ебля? Как надо сделать чтобы эта ссука удавлетворилась?
Хочу я вывести тактовый сигнал с плл на ногу.
микросхема спартан 6 - XC6SLX150-FG484I
В коде пишу
module TopModule(... output ETH1MDC, output ETH2MDC, ....);
...
PLL1 PLL1(.CLK1(ETH1MDC), .CLK2(ETH2MDC), .LOCKED(PLL1LOCK), .CLK(ETH1CLK));
...
endmodule
В .ucf так
NET "ETH1CLK"LOC = W12| IOSTANDARD = LVCMOS33;
NET "ETH2CLK"LOC = Y12| IOSTANDARD = LVCMOS33;
на названия сигналов внимание не обращайте, они почти рандом
А он мне в ответ вот это
ERROR:Place:1205 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH1MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1205 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH2MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue. Although the net
may still not route, you will be able to analyze the failure in FPGA_Editor.
< PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1136 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins.
< PIN: ETH1MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue.
< PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Place:1136 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins.
< PIN: ETH2MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. If you wish to override this recommendation, you may use the
CLOCK_DEDICATED_ROUTE constraint (given below) in the .ucf file to demote
this message to a WARNING and allow your design to continue.
< PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE; >
ERROR:Pack:1654 - The timing-driven placement phase encountered an error.
И что это такое? Мм? И что мне с этим делать?
Хорошо. Дописываю в .ucf
PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
Теперь эти ошибки перешли в разряд вниманий
WARNING:Place:1206 - This design contains a global buffer instance,
<PLL1/clkout1_buf>, driving the net, <ETH1MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH1MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint was
applied on COMP.PIN <PLL1/clkout1_buf.O> allowing your design to continue.
This constraint disables all clock placer rules related to the specified
COMP.PIN.
WARNING:Place:1206 - This design contains a global buffer instance,
<PLL1/clkout2_buf>, driving the net, <ETH2MDC_OBUF>, that is driving the
following (first 30) non-clock load pins off chip.
< PIN: ETH2MDC.O; >
This design practice, in Spartan-6, can lead to an unroutable situation due
to limitations in the global routing. If the design does route there may be
excessive delay or skew on this net. It is recommended to use a Clock
Forwarding technique to create a reliable and repeatable low skew solution:
instantiate an ODDR2 component; tie the .D0 pin to Logic1; tie the .D1 pin to
Logic0; tie the clock net to be forwarded to .C0; tie the inverted clock to
.C1. This is normally an ERROR but the CLOCK_DEDICATED_ROUTE constraint was
applied on COMP.PIN <PLL1/clkout2_buf.O> allowing your design to continue.
This constraint disables all clock placer rules related to the specified
COMP.PIN.
WARNING:Place:1137 - This design is not guaranteed to be routable! This design
contains a global buffer instance, <PLL1/clkout1_buf>, driving the net,
<ETH1MDC_OBUF>, that is driving the following (first 30) non-clock load pins.
< PIN: ETH1MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. Please pay extra attention to the timing and routing of this path to
ensure the design goals are met. This is normally an ERROR but the
CLOCK_DEDICATED_ROUTE constraint was applied on COMP.PIN <PLL1/clkout1_buf.O>
allowing your design to continue. This constraint disables all clock placer
rules related to the specified COMP.PIN.
WARNING:Place:1137 - This design is not guaranteed to be routable! This design
contains a global buffer instance, <PLL1/clkout2_buf>, driving the net,
<ETH2MDC_OBUF>, that is driving the following (first 30) non-clock load pins.
< PIN: ETH2MDC.O; >
This is not a recommended design practice in Spartan-6 due to limitations in
the global routing that may cause excessive delay, skew or unroutable
situations. It is recommended to only use a BUFG resource to drive clock
loads. Please pay extra attention to the timing and routing of this path to
ensure the design goals are met. This is normally an ERROR but the
CLOCK_DEDICATED_ROUTE constraint was applied on COMP.PIN <PLL1/clkout2_buf.O>
allowing your design to continue. This constraint disables all clock placer
rules related to the specified COMP.PIN.
Так что ему падле надо? Чтобы вывести тактовый сигнал с пллки наружу почему такая ебля? Как надо сделать чтобы эта ссука удавлетворилась?
Ну же, анончики-плисоводчики.
https://digilent.com/reference/programmable-logic/cmod-a7/start
Пишет такое
Shipping Method
There is an error with the entered address. Please review the information for accuracy. NOTICE TO CUSTOMERS SHIPPING TO UKRAINE: FedEx has suspended all service to Ukraine and Belarus out of concern for the safety of its employees. EXPORT RESTRICTIONS: Digilent hardware, software programs and technical data may not be sold or exported or re-exported, either directly or indirectly, to the U.S. embargoed destinations or entities of Cuba, Iran, Libya, North Korea, Sudan or Syria or to persons/entities on the Denied Persons List, Unverified List, Entity List, Specially Designated Nationals List and the Debarred List, without prior written authorization from the appropriate U.S. government departments (Commerce, State Department, Treasury). CHINA: we are unable to ship to orders in China, but you can order our products from digilent.com.cn. BRAZIL: unfortunately we had to implement shipping restrictions due to custom changes. Check out our distributor page to order products near your location.
Думаю это единственный вариант:
https://aliexpress.ru/item/1005005024448083.html
А почему хочешь Cmod A7-35T ?
Вот бы ещё пидарасы повывелись...
>А почему хочешь Cmod A7-35T ?
А что еще можешь порекомендовать? Хочу интересную мощную FPGA для изучения.
Кароч нельзя просто так взять и вывести клок на ногу. Надо понимать, что клоки и сигналы живут в двух разных вселенных и соприкасаются только в специально отведённых местах (например, триггерах или синхронных буферах).
Если тебе надо вывести клок на ногу, тебе надо взять буфер типа ODDR2 (который выводит по очереди два сигнала, один по фронту клока, другой по срезу), завести клок на его клоковый вход, а на сигнальные входы завести постоянные "1" и "0". Как ты понимаешь, на выходе получится тот же самый клок, но в таком виде работать будет, а в том, который у тебя — нет.
> а в том, который у тебя — нет
Ну как уже писал, если добавить в .ucf
PIN "PLL1/clkout2_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
PIN "PLL1/clkout1_buf.O" CLOCK_DEDICATED_ROUTE = FALSE;
то компилирует и даже работает.
>надо взять буфер типа ODDR2 (который выводит по очереди два сигнала, один по фронту клока, другой по срезу), завести клок на его клоковый вход, а на сигнальные входы завести постоянные "1" и "0"
Дело в том что вывожу то я не на абы какую ногу, а на специальную клоковую. И если так, а мне, скажем, надо затактировать, какой-нибудь кодек, или езернетовскую микросхему физического уровня, мне, что, надо таким извращением заниматься?
И после этого будут говорить что хилый лучше альтеры? Или всё таки есть нормальный способ вывести клок наружу?
RTL-viewer в Quartus-е. Но он не на лету, как ты хочешь - синтезировать надо.
Elaborated Design в Vivado
TerosHDL с генератором схем на основе Yosys. https://terostechnology.github.io/terosHDLdoc/project_manager/schematic_viewer.html
Но имей в виду, что машиногенерируемые схемы похожи на говно. Для дебага их использовать можно, для изучения — нет.
Пример: https://www.fpga4fun.com/Opto2.html
Вроде понял. Надо pwm_input подключить к четырем ногам платы и на них подавать рандомные 4-битные сигналы с ардуинки.
Код не является PWM. Это PDM (конкретнее — ΔΣM).
Можешь сделать как вот этот
https://youtu.be/AxQtbRhjpYA?t=3276
смотреть с 54:36
но только наоборот, он использовал как ввод, тебе надо как вывод.
Ещё вроде бы как в квартусе была консоль, можно поверх джитага поднять уарт и выводить на неё что нужно. но это не точно
> можно поверх джитага поднять уарт и выводить на неё что нужно
Как это сделать? Что об этом почитать/посмотреть?
Для какого железа или платы все эти примеры с www.fpga4fun.com?
Гугли "uart over jtag [производитель плисины нейм]"
Вот хочу я например залить проект в отладочную плату.
Захожу в документацию отладки, там адрес рандомного чипа, к которому хочу обращаться, указан как 0x50 или 0b0011101.
Что эти цифры значат для верилога ?
assign addr = 0x57 ?
assign addr = 0b0011101 ?
Без негатива, тебе рановато в ПЛИС. Тебе бы ардуину погонять. Посмотреть на практике, как работают наиболее распространённые цифровые интерфейсы.
>Что эти цифры значат для верилога ?
Ничего не значат. Запись чисел противоречит синтаксису верилога.
>В чем разница изучения интерфейсов на ардуино от изучения интерфейсов на ПЛИС ?
В том, что при работе с ПЛИС требуется работать на большем количестве уровней абстракции. Примерно как если бы ты учился варить борщ, и рецепт у тебя был записан через уравнения химии белков, а инструкция к плите — через уравнения Максвелла.
>А как считать информацию с чипа по этому адресу ?
По протоколу самого чипа, который изложен в даташите на этот чип. В общем случае выставить на шину нужный адрес, возможно какие-то сопроводительные сигналы. Далее на шине данных ждать ответа, в зависимости от реализации по задержке или по сопроводительному сигналу.
А числа на верилоге записываются так:
разрядность ' система_исчислениячисло
система_исчисления может быть b (двоичная), (десятичная) или h (шестнадцатеричная)
например
1'd0
8'hAB
А вообще ты бы хоть какие видосики на ютубе посмотрел
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
Квартус не поддерживает тестбенчи. Ставь моделсим альтера/интел едишн.
Есть в вивадо аналог Pin Assignment из квартуса?
>хотя должен был принять, когда clk = 1
Нет, не "1", а posedge (positive edge, переход с "0" на "1"). А у тебя posedge нигде нет, клок не меняется.
Вопрос, что делать с питанием этих бавнков, оставить болтаться в воздухе, или посадить на землю?
Случайно устроился на работу программистом на верилоге, сам в душе не ебу, как собес прошёл
Дали комп с vivado и какую-то плату, сказали пиши модули, а я на верилоге писал только ознакомительную лабу в шараге, да и то на квартусах
С чего начать, что учить, что читать, как разобраться?
Мне в /h/
460x816, 0:40
Почему-то по сишному не получается, но судя по коду верилятора анонимность допустима.
Вы видите копию треда, сохраненную 19 февраля в 20:27.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.