Это копия, сохраненная 31 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
>ап
Ты не сильно умный, как я погляжу. Ту ли ты профессию выбрал? Может дворником тебе более комфортно будет?
https://2ch.hk/ra/res/127314.html (М)
Ебани логический анализатор каналов на восемь с парой мегабайт записи, распознаванием паттернов и совместимостью с распространенными программами анализа. Можно, чтобы еще и светодиодом моргал.
учи лучше джаву. На плисах будешь залупу последнюю без соли доедать
нихуя ты долбаёб братишка, земля тебе пухом.
ВО первых - джава для петухов.
Во вторых - мне похуй на зарплату ибо я уже положил крест на свою жизнь и в дальнейшем буду преподом дискретной математики.
В третьих - плис это ахуенно интересно и если твоих пропитанных джавапарашей мозгов не хватает чтобы понять как оно и зачем - это не значит что направление тлен
>плис это ахуенно интересно и если твоих пропитанных джавапарашей мозгов не хватает чтобы понять как оно и зачем - это не значит что направление тлен
Если бы ты понимал как оно и зачем то не задавал бы здесь тупых вопросов. Про то, что продублировал тред и бампаешь в тематике я вообще молчу. Залетное озлобленное говно из /b видно с порога.
>мне похуй на зарплату ибо я уже положил крест на свою жизнь
Похуй на зп, пока твой мозг пропитан говном и юношеским максимализмом, со временем это пройдет, но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь.
Тот тред уже достиг бамплимита и медленно тонет. Надо либо новый оффициальный™ тред делать, либо сюда перекатываться и бортануть ОПа, раз уж создали.
>либо сюда перекатываться
Давай перекатываться. Задам свой вопрос тут.
ПЛИСаны, я не понял, вот я насинтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало? Это мне надо отдельный контроллер мутить, чтобы каждый раз конфигураци. закидывать в нее?
Обычно ставят специальное ПЗУ, иногда загружают из микроконтроллера. Если у тебя отладочная плата, то там должно быть ПЗУ.
Почти. Потребуется отдельное, специально обученное ПЗУ с SPI интерфейсом:
https://www.eevblog.com/forum/microcontrollers/cyclone-v-configuration-using-spi/
>Если у тебя отладочная плата,
Нет, хочу мутить частотомер, а тут начитался про то что FPGA_NOT_CPLD
> А как быть с четвертым Циклоном?
Ты это, по ссылке то ходить пробовал?
> I have used Winbond and ST flashes in the past for Cyclone IV and Spartan III without any issues.
Хорошо, что ты не моряк.
Ставишь какую-нибудь EPCS и все. И вообще для обыкновенного частотомера не нужны FPGA и вообще ПЛИС, из-за низких частот в том числе.
>>17915
Так и в пятых циклонах нет микроконтроллера, там просто ядро. В FPGA (обычно) нет флеша потому что технологии изготовления FPGA и флеша чем-то отличаются.
У некоторых есть, но это отдельный продукт и за отдельные деньги: https://www.altera.com/products/soc/portfolio/cyclone-v-soc/overview.html
Какой же это микроконтроллер без флеша? Хотя, кому-как, наверное, ведь нет четкого определения того что считать микроконтроллером.
Достаточно EPCS4. Также у этих ПЗУ есть полностью совместимые аналоги.
На всякий случай еще раз скажу: нет смысла использовать FPGA для простого частотомера. На FPGA не получится сделать быстрый счетчик. Целесообразнее использовать быстрый счетчик и любой микроконтроллер.
>На FPGA не получится сделать быстрый счетчик
Да ладно? Что он 200МГц не потянет? Мне больше и не надо.
Потянет, но 74VHC4040 с любым микроконтроллером также потянет.
Почему сразу не сказал? Вроде как банальная память 25 серии может быть аналогом, и местами даже более быстрым, и добываемым из ближайшей помойки.
Как-то долбил ЭФО на тему оригинальных EPCS - это ахтунг, если сравнивать с "обычной" 25 серией:
EPCS4SI8N 4,5$/шт, DC 15+ Есть на складе СПб, доставка 1-1,5 недель
EPCS16SI8N 6,6$/шт, DC 16+ Есть на складе СПб, доставка 1-1,5 недель
25-ю серию сам еще не запускал, только в каком-то AN читал и на electronix.ru (https://electronix.ru/forum/lofiversion/index.php/t57150.html).
ЗЫ - Какие сейчас есть не сильно древние FPGA с 5В входом и выходом ?
Еще раз - ВХОДОМ и ВЫХОДОМ, а НЕ 5V-tolerant input. Честные 5В входы-выходы и было бы очень неплохо чтобы и другие напряжения держало (3.3, 2.5)..
Altera FLEX, ACEX и прочие ? С софтом проблемы. Или плохо смотрел? Есть CLPD на 44 вывода LC4064V - у нее 2 банка VCCIO - в теории по даташиту можно осторожно подать 3.3 и 5В.
> не сильно древние FPGA с 5В входом и выходом
Выбери одно Пятивольтовые FPGA померли лет 20 назад, CPLD продержались дольше, но что MAX7000S, что XC9500 давно сняты с производства.
Кто-то в теме? Уже прилично так посношал гугл, а он так и не дает ответа, как и 9-й кактус - у Flex 10K%30RI208-4% есть разделение пользовательских выводов по банкам напряжений питания или нет? На сайте альтеры в разделе pinouts какие-то мутные документы, где описаны только служебные выводы, а про обычные(пользовательские) ни слова.
Видимо остановлюсь пока что на Flex 10K.
MAX7000S - тоже есть для ловли баттхерта от заявленных максимум 100 перепрошивок.
У EPM7128SLC84 - точно нет разделения выводов на банки - или все 3.3 или все 5В..
>от заявленных максимум 100 перепрошивок.
Народ пишет, что тысячи раз шили и нихуя страшного не случилось. Это типа Альтера перестраховуется, чтобы в случае чего ей мозги не ебли.
Ты делаешь что-то странное, если тебе понадобились 5В уровни и при этом не подходит преобразователь уровней. Также оно стоит немало, если покупать с хоть какой-то гарантией.
>есть разделение пользовательских выводов по банкам напряжений питания или нет?
https://www.altera.com/en_US/pdfs/literature/an/an107.pdf Банков там нет. 5В одновременно с 3,3В на выходах (вроде бы) обеспечиватеся за счет внешнего подтягивающего резистора.
>100 перепрошивок
Эти 100 перепрошивок - это количество перепрошивок при котором гарантируется заданное время сохранности данных во флеше. Если превысить, то производитель (всего лишь) не гарантирует что конфигурация будет сохраняться заданное время.
Народ, а в даркнете еще не пробегала схема chipprog 48 с конфигурацией FPGA?
Теплые, ламповые 5В.. Один раз был случай когда надо было немного логики в разрыв впихнуть, а не из чего, а свеженький циклон стремно было пихать, как и нормальные преобразователи 8T245 (или подобные) с 2 напряжениями питания негде было выдрать.
>Ты делаешь что-то странное
Тяжелый осадок одной истории.
Еще раз перечитал - по ходу да, банков нет. Подав 5В на все VCCIO и получаем 5В ввод-вывод. Согласование выходов вниз (до 3.3) на резисторах, входов не нужно.
Про 100 перепрошивок - читал на марсоходе как они издевались, но там была cpld намного свежее в виде epm240, а не архаичной max7000.
FPGA хороша тем, что у нее нет ресурса перепрошивок, но и отладка как на МК - это порочная практика. Синтез проекта, заливка, оценка работы в реальном железе, правка, повторная заливка..
MAX10 показалась интересной - заливая через JTAG конфигурацию - она применяется. Передернув по питанию - грузится "заводская" конфигурация. Как минимум ресурс внутреннего флеша не должен уменьшаться.
Есть на чем проверять, а мозгов для укрощения пока нет. Пробую VHDL неспешно изучать.
Антон выручай.
Altera Flex 10K поймет новую память 25 серии (какую-то некрофилию на мегабит-другой(из которых всего 46 килобайт используется) через преобразователь уровней) для хранения и загрузки конфигурации?
По диагонали почитал AN116 - вроде возможно же. Как и поймет ли прямую запись pof файла или же преобразованного hex в конфигурационную flash?
Это про 4-ый циклон, а тот анон про флексы.
>>18805
Стоит посмотреть http://db.zmitac.aei.polsl.pl/Electronics_Firm_Docs/ATMEL/Atmel/acrobat/doc0910.pdf
Забавный костыль. Закопипастил страничку - вдруг пригодится.
>>18822
Уже читал эту статейку и про их согласование уровней на hc244. http://www.platan.ru/shem/pdf/st50-52.pdf
Даташиты не сравнивал.
Это было сложно нагуглить по памяти:
https://electronix.ru/forum/lofiversion/index.php/t13569.html
как наебать систему и не подать виду.
Даже если будет эпикфейл - фигня.
Тут тоже нет конфигурационной памяти у флекса (хотя и есть куда ее втыкать) https://habrahabr.ru/post/277947/
Этот антон прав. Почитал даташиты - никаких шансов приклеить 25 серию флеша к флексу. Заглянув в efind.ru и chipfind.ru в поисках epc1 epc2 at17 - прямо как на той картинке "все ебанулись". Стоят как крыло от самолета.
И ладно.. Главное питание на рабочей схеме не дергать. На Altera UP1 (UP2) было только куда ставить саму память, но памяти не было. Вариант с МК конфигурить не рассматривал, хотя он скорее всего будет основным.
Этот артефакт даже подает признаки жизни.
Входы и выходы прибиты гвоздями на 5В. Пока что все.
Парни, хелп. Нужная плата для акселерации вычислений. Суть в том, что она цепляется по эзернету, получает задания-считает-возвращает результат. Я нихрена не знаю, наугад предложил взять AES-KU040-DB-G
http://ru.farnell.com/avnet/aes-ku040-db-g/dev-board-kintex-ultrascale-prog/dp/2775206?st=kintex
Может есть что-то с более оптимальным соотношением цена/производительность?
И если заказывать с фарнелл - не завернёт ли таможня? Пугают буквы "AES" в названии.
Нужно исходить из ресурсозатрат твоего алгоритма.
>Пугают буквы "AES" в названии.
Иностранные поставщики соблюдают законодательство РФ горазбо более скурпулезней, чем пидорахен-таможня. Если согласятся отправить 90% что таможня пропустит.
Алсо в рашку могут поставляться платы с выжженными блоками AES
Ты бы хоть в документации поискал прежде чем ерунду писать. В последнем поколении альтеровских FPGA имеется AES для шифрования конфигурации.
Бля, я не говорю что AES там нет, я говорю что AES в названии не о шифровании.
Блоки для крипты прошивки они клепают уже давно, и всем похуй.... экспортируються даже в санкционную рашку
Можешь хоть что-нибудь предоставить в доказательство? Я покупал в терраэлектронике микроконтроллеры с аппаратным AES и они пришли в фарнеловской упаковке, все вроде как работает.
И потом, как вообще можно выжечь какой-то блок, причем не задев соседние, если это не было предусмотрено при проектировании микросхемы?
Кроме того уже прошел месяц, наверное для анона задававшего вопрос это уже не актуально.
>И потом, как вообще можно выжечь какой-то блок, причем не задев соседние, если это не было предусмотрено при проектировании микросхемы?
ФЬЮ
@
ЗЫ
Дык на них есть нотификации фсб, а есть ли они на платы с плис - большой вопрос. В треде про компутеруниверс на /hw много разговоров про это. Есть две видюхи, аналогичные по характеристикам, одну можно невозбранно купить, а за другую чуть ли не присесть за ввоз антироссийского шифрующего средства. Как-то так, правда я слышал что эту шнягу потом отменили но это не точно.
Хочу прикупить тут чип XC7K355T-2FFG901I для своего девайса, смотрю цены, на фарнелл оно стоит €1 819,00. На ебее и на али встречаются цены от 12т.р. (€163,79) за чип. Это что наёбка какая-то? Откуда такой разброс цен?
https://www.ebay.com/itm/2PCS-X-XC7K355T-1FFG901C-IC-FPGA-300-I-O-901FCBGA-Xilinx/332337611117?epid=2165454311&hash=item4d60dd816d:g:MZwAAOSwPfVZi2I0
http://ru.farnell.com/xilinx/xc7k355t-2ffg901i/fpga-kintex-7-300-i-o-fcbga-901/dp/2831130?st=XC7K355T
и разный speed grade
F: XC7K355T-1FFG901C
E: XC7K355T-2FFG901I
-1 -2 - скорость
С I -температурный
Нет ничего больней перекатывания с няшного верилога на вхдл.
Ну если только переход с квартуса на вивадо. Хотя там симуляция проще.
Хоспаде, за что тебе такое??!
Тем не менее, всяких багуль, решающихся закрытием проекта, я тут словил уже больше.
>Просто петушиное бинго сорвал.
Ну и дрочи дальше свои
иклюд дибрари ИЕЕЕ_СТД_ВЕКТОРА_МАТИМАТИКА
сигнал стд_лоджик_вектор(10 даун ту 0)
when => <=
Что это вообще блять такое тут присходит. Ебануться.
Багули ты ловишь, потому что руки из жопы растут. А что касается дрочи дальше, так это не я вынужден перейти на вхдл, а ты. Так что да, дрочи дальше.
Начни с подачи постоянного напряжения на вход АЦП. В твоем случае - от 1 до 3В. Подал напряжение, записал отсчеты, посмотрел че получилось, поменял напряжение. Поставь себе какой-нибудь Bitviewer, чтобы было проще смотреть че у тебя записывается в файл.
И да, у тебя отлажена схема записи в память/чтения из памяти/передачи по UART?
>Bitviewer
Чем оно лучше калькулятора в виндовсе?
>И да, у тебя отлажена схема записи в память/чтения из памяти/передачи по UART?
Было бы что там отлаживать, простейшая же ерунда. Я тоже делал такое, только в отличие от этого анона я писал по 32 бита и принимал в матлабе.
>>3244592
Похоже последовательность байт перепутана.
>Чем оно лучше калькулятора в виндовсе?
Калькулятор может нарисовать что-то такое?
>Было бы что там отлаживать, простейшая же ерунда. Я тоже делал такое, только в отличие от этого анона я писал по 32 бита и принимал в матлабе.
Молодец. Но я спрашивал не у тебя, а у этого анона.
Может неактуально, но...
Сделай мультикатридж для для денди на микроконтроллере, а плис будет выполнять роль маппера.
Ну выучи и поднимай. Хотя мне кажется, что там тоже много знать надо, чтобы хорошо платили.
Это не навыки. Я про алгоритмы, хуе мое.
То, что нужно сидеть в виваде под сисверилгом\вхдл плисоебу - это очевидно.
Си, я так понимаю, уже для скриптом в микроблейзе\цинке?
Это в оборонке такое хотят? С одной стороны, не представляю, кто в рашке может платить за плисоёбство, кроме оборонки, с другой, систем верилог и пайтон — для оборонки очень по-хипстерски.
В оборонке хотят железо. Как ты это железо будешь кодить никого не волнует.
Ну, из алгоритмов это фильтрация, ресэмплинг сигналов, различные виды модуляции, прием сигналов спутниковой связи, ФАПЧ, временные синхронизации, тактовые синхронизации, АРУ, Витерби, BCJR, LDPC и т.д. и т.п.
На C/C++ пишешь модели разрабатываемых алгоритмов, а потом переносишь на ПЛИС, или чужие модели, написанные на C/C++ переносишь на ПЛИС.
кек
Я третий в этом тредю и мы, кажется, все в одном отделе сидим, лул.
3 форма допуска, похуй.
Антихайп, ебал твой рот.
Я вот о чем.
Был у меня msg STD_LOGIC_VECTOR, в котором вручную забито сообщение в хексе в аскии.
И которое я спокойно пересылал с помощью мультиплексора, мол, если первый бит, то отсылаю из этого вектора кусок от 7 до 0. case i when b"00" => data(7 downto 0) <= msg(7 downto 0) и т.д.
Но надо быть человеком и использовать массивы, тайпы, хуяйпы. Как мне объявить мое сообщение? Как мне обращаться к его кускам по индексу, если у меня индекс-счетчик изначально тоже вектор?
Если забиваю на вектор-счетчик и делаю отдельный integer для индекса, то всё равно при обращении к массиву типа msg(7 downto 0) пишет, мол, внутри msg нихуя не вектор и иди нахуй. Колбасная магия с приведением типов to_unteger(unsigned i) это тоже отдельная песня.
Фокус с циклическим сдвигом ror тоже, кстати, не работает. Мол, не определена операция и всё такое.
Итак, еще раз. Как передавать символы по одному используя в качестве исходных данных массив? И всё должно быть, естественно, синтезируемо.
Спасибо.
Что-то не вполне тебя понял. Я VHDL подзабыл, но все равно как-то написал пример.
Если этот "массив" довольно большой, то целесообразно использовать блочную память. В таком случае имеет смысл организовать код таким образом, чтобы можно было заменить память на примитивы и мегафункции всякие, если вдруг синтезируется не так. К тому же так меньше вероятность сделать ошибку и получить какую-нибудь трехпортовую память.
Ну вот у меня есть Hello.
Я его объявлял
constant msg : std_logic_vector(39 downto 0) := X"68656c6c6f"
И обращался
case cnt is
when B"00" => data <= msg(7 downto 0) ...
Вот захотел не писать этот ебаный мультиплексор с кейсами, а как белый человек, через переменную. Но переменная у меня лоджик вектор, которую так просто не засунешь в скобки, нужно приводить в to_integer(unsigned()).
Как вообще на синтезируемость влияют эти все конвертации, какая предсказуемость результата?
Далее. Не хочу задавать явно в хексе вручную. Хочу писать
constant msg : string := "Hello"
И чтобы достать конкретную букву, соответственно писать
if rising_edge(clk) and (cnt <8) then
data(7 downto 0) = msg(cnt)
Но тут уже ругается, что msg(cnt) выдаёт не биты, в которых блять тут все должно хранится,, а, собсно, букву. Опять нашел, что стринг это массив чаров, которые тоже можно там по ебаному как-то конверсить в нормальные биты.
>Но переменная у меня лоджик вектор, которую так просто не засунешь в скобки, нужно приводить в to_integer(unsigned()).
Приводи, в чем проблема? Тут же строгая типизация.
>мультиплексор
В данном случае это скорее дешифратор.
>Как вообще на синтезируемость влияют эти все конвертации, какая предсказуемость результата?
Лучше посмотри исходники ieee.std_logic_1164, которые должны быть в твоем САПР и симуляторе. Там будет видно, что unsigned и std_logic_vector отличаются только тем, что для них определены разные операторы/функции. А определения этих обоих типов абсолютно одинаковые.
>это массив чаров
Которые имеют перечислимый тип. И прописаны они в пакете STANDARD, исходники которого также везде имеются.
>Приводи, в чем проблема?
Для меня это всё еще выглядит черным ящиком и магией коньпилятора, когда не ясно, что там внутри на уровне схематики происходит.
Хотя вот раз говорят, что это всё ходы, чтобы обмануть сапр, а на самом деле там внутри одно и то же байтоебство, то буду менее настороженно к этому относиться. Но выглядит всё равно некрасивенько.
>В данном случае это скорее дешифратор.
Верно, извиняюсь.
С индексом разобрались, вектор в ансайнд, оттуда в интежер.
А что с обращением к символу в строке, как его в биты перевести?
Свою функцию перевода писать, как рекомендуют?
function to_slv(c: character) return std_logic_vector is
begin
return std_logic_vector(to_unsigned(character'pos(c)), 8));
end;
А еще пишут, что стринг не синтезируема. Значит мне строки в каком формате объявлять?
Тогда используй string только при инициализации std_logic_vector. Аналогично тому, как инициализируют RAM из файла.
Слишком уже задротская тема какая-то. Я начинал с нубовопроса, не знаю уже, о чем речь.
Можно на огромной скорости молотить в логике операции, которые процессорное ядро на такой скорости не вытянет. А ядро будет заниматься всем остальным. Бесценно для обработки сигналов.
Просто без задней мысли пишешь на верилоге и не забиваешь голову всякими АЙЕЕЕ_СТД_ЛОДИК_ВЕКТОР
Да, я тоже любил великолепный верилог, но увы, не разрешают.
>Бесценно для обработки сигналов.
В ПЛИС есть встроенный ацп или предполагается использовать дорогой внешний? И цап тоже внешний?
Ну сигналы есть не только аналоговые. Обработку эзернета, например, можно замутить.
Нахер оно нужно? Лучше уж готовый копеечный езернет контроллер поставить.
Вот высокоточная обработка и анализ СВЧ аналога в реалтайме - интересная тема. Но нужны оче дорогие ацп и цап.
Куда копать для вкатывания в тему и освоения DSP?
Разве? В одном из самых простеньких циклонов EP4CE22 (который я люблю за TQFP корпус), есть 66 умножителей 18х18 бит, которые могут работать на ~200МГц. Параллельно умножителям там может работать куча сумматоров. Безусловно, какие-то DSP такое потянут, но если взять ПЛИС побольше?
А если критична задержка и надо фильтровать пакеты на 7-м уровне osi на скорости 10 гигабит? А если надо выполнять ещё расчёты и выдавать отклик? На плис такая задержка будет минимальной, можно выстроить схему так, что расчёт будет идти конвеером и сложный алгоритм будет выполнятся за пару тактов, на проце такое сделать иногда просто невозможно, или нужна многоядерная йоба и ртос, и это будет нихуя не дешевле плис и разработка намного сложнее будет.
>>25715
Есть такое.
>это всё ходы, чтобы обмануть сапр
Именно. По сути преобразование типов - это преобразование метаинформации о битах, а не самих битов.
>>25625
>Слишком уже задротская тема какая-то
Когда я еще наивно полагал, что vhdl это неплохой язык, наткнулся на https://github.com/VLSI-EDA/PoC библиотеку, которая немного упростила байтоебство. Ничего лучше под этот язык пока не знаю.
>4 GSPS 12-bit RF-ADC
>Есть такое
>В плис
Разве что где-то в лаборотории у хилых. В рельности доступны только 1 MSPS.
Прошу вашей консультации. Дело таково.
Мне нужно знать, можно ли сэкономить транзисторный бюджет и скорость, заменив стандартный float16 вычислитель на некую имитацию с фиксированной точкой.
Что мне нужно. Допустим умножать.
Каковы особенности чисел?
1. Со знаком.
2. Фиксированная точка (на десятых долях допустим) 2.1 1.3 4356.5
3. Но, когда число в диапазоне (-1 1), точку нужно перенести в старший разряд, для макс точности. Например 0.124321 -0.932323
А результат пишется в большой регистр в формате с фиксированной точкой. Например 435626.124321
В более старых платах у них второй спартан стоит, ничего нового.
Годная пикча.
Современные погромисты даже не знают как устроена мышь и контроллер дисплея, а про архитектуру процессора я вообще молчу
Радачеры как макаки же. Кнопочки даваить и паять научились, а как все устроено подробно не знают и знать не хотят в большинстве
>Современные погромисты
Ты из какого НИИ им. тов. Подзалупкина вылез? Кому впёрлись твои расчёты когда у нас аппликашка календарика на мобиле загружает под 100% 4 ядра по 1.4Ггц просто красивенькими анимациями и полупрозрачными 3д переходами? Здесь другие ребята, анон, не стоит шутить про расчёты, это тебе не шиндоус 3.1, здесь абстрагируются по-крупному. Здесь пишут на языке богов, где любая сущность объект, где всё наследуется от всего, где просто хэллоуворлд может занимать тысячи строк кода и при внесении пары изменений в коде управлять заодно ядерным распадом в коллайдере, здесь шаблон погоняет кодогенерацией, здесь просто приложение с показом времени отжирает 2 гига оперативы на старте и занимает 500 мегабайт на диске. Тут используют Анриал Енджин только чтобы перемножать пару матриц в его математической библиотеке, здесь гарбадж коллектор трахают прямо в анус, создавая тысячи объектов в каждом кадре и не освобождая ручками ни один.
Забудь ты про свой найтивный код. Здесь совсем другая тема. Тут программируют совсем на другом уровне.
Хуясе! Как это у меня паста автоматом конвертнулась в пнг и запостилась пикчей? Это Абу там устои расшатывает?
Ну короче не те уже вы
>На каком принципе работает курсор? Как определяют координаты и взаимодействие к примеру с окном?
>А где можно подробнее глянуть про контррллер дисплей? Как он формирует текст?
Это опять ты вылез?
Это не радачеры тупые, а ты. Не можешь даже оответствующую литературу прочитать. Как вообще тебе объяснять, если ты не знаешь базовых вещей?
Вот на картинке мой код простейшего процессора, много ты понял? А если нарисовать это на отдельных регистрах и счетчиках? Нихуя ты не поймешь, потому что "регистр" — для тебя пустой звук.
Ну, можешь попытаться все это понять с помощью nand2tetris — это такой курс для тупых программистов. Но ты сейчас опять в лучшем случае поблагодаришь и продолжишь писать тупняк.
А картинка выглядит просто шуткой. Любой человек, пишущий на ассемблере, сможет вручную по таблице опкодов перевести текст в машинные коды. Остальная "иерархия" также имеет мало смысла.
И как твой код переводится в машинный? Где эта прога нахожится, что переводит?
Ну про курср правда интересно. Про регистры я читал
>И как твой код переводится в машинный? Где эта прога нахожится, что переводит?
Оказывается ты тупее, чем мне казалось раньше. Заголовок треда не видел?
Поскольку ты такой тупой, все же попытаюсь объяснить. Этот код, в некотором приближении, можно считать схемой в текстовом виде. Специальная программа (в первом приближении) располагает эту схему внутри ПЛИС так, чтобы она занимала меньше места. Так же как в случае с ассемблером, любой плисоеб, может вручную, без компа перевести этот код в схему (но не внутри ПЛИС, по разным причинам).
>Про регистры я читал
Но нихуя не понял, иначе не писал бы тут тупняк.
Ты из какого НИИ им. тов. Подзалупкина вылез? Кому впёрлись твои расчёты когда у нас аппликашка календарика на мобиле загружает под 100% 4 ядра по 1.4Ггц просто красивенькими анимациями и полупрозрачными 3д переходами? Здесь другие ребята, анон, не стоит шутить про расчёты, это тебе не шиндоус 3.1, здесь абстрагируются по-крупному. Здесь пишут на языке богов, где любая сущность объект, где всё наследуется от всего, где просто хэллоуворлд может занимать тысячи строк кода и при внесении пары изменений в коде управлять заодно ядерным распадом в коллайдере, здесь шаблон погоняет кодогенерацией, здесь просто приложение с показом времени отжирает 2 гига оперативы на старте и занимает 500 мегабайт на диске. Тут используют Анриал Енджин только чтобы перемножать пару матриц в его математической библиотеке, здесь гарбадж коллектор трахают прямо в анус, создавая тысячи объектов в каждом кадре и не освобождая ручками ни один.
Забудь ты про свой найтивный код. Здесь совсем другая тема. Тут программируют совсем на другом уровне.
Лол. Спасибо за терпение. Я про плис не спрашивал т.к. не разбирался с ним и не собираюсь пока.
Я просто тут часто спрашивал и всех заебал про ассемблер. Я так понял, что сам кодер опкодов в машинный заложен уже в архитектуре проца. Но сам ассемблер это сорт компилятора?
А про курсор я еще не понял детально. Хочу найти подробные схемы видеоконтроллера кр580вг75
>Я так понял, что сам кодер опкодов в машинный заложен уже в архитектуре проца. Но сам ассемблер это сорт компилятора?
Не, это просто бессмысленный набор слов. Нихуя ты не понял. Абсолютный нуль знаний. Хотя это даже не нуль, ты в минус пошел.
>Хочу найти подробные схемы видеоконтроллера кр580вг75
Опять ты со своим выводом изображения на экран? Ладно, в очередной раз попробую объяснить.
Начинать нужно с аналогового видеосигнала, того который в телевизоре или мониторе на ЭЛТ. В телевизоре электронный луч двигается зигзагом за счет отклоняющего магнитного или электрического поля. Попадая в экран, электроны засвечивают люминофор. Чем больше электронов - тем сильнее свечение. Таким образом, для того чтобы сформировать изображение, нужно менять силу тока электронного луча в кинескопе. Воздействие, заставляющее меняться силу тока, представляет собой видеосигнал (в некотором приближении, т.к. надо еще синхронизировать перемещение луча).
Аналоговый видеосигнал, как и любой аналоговый сигнал, это просто напряжение или другая величина, изменяющаяся во времени. Все, теперь задача процессора с "видеоконтроллером" сводится к формированию заданного аналогового сигнала. А для этого, в самом простом случае, достаточно лишь приделать параллельный ЦАП к параллельному порту и написать программу, которая будет в этот порт выводить требуемые значения. При такой постановке задачи это ничем не отличается от вывода любого другого аналогового сигнала, например звука.
КР580ВГ75 в некотором приближении всего лишь перекладывает часть этой работы с процессора на себя.
Вот в каком месте тебе не понятно? Это даже многие ардуинщики понимают. Те самые, про которых ты так отзывался >>26140
>>26226
Небольшое уточнение. Третье состояние могут проверять оба оператора, но только при симуляции. Это не синтезируется, разумеется. casex помимо "Z" может проверять на "X", вот и все отличие. А для синтеза используется значение "?" (пропускает любое значение).
>набор слов
Ну хорошо, а где тогда находится тот декодер, который код с экрана переводит в машинный? Ты же сам понимаешь, что буквы с экрана не с помощью магии в машинный код переводится.
Да я понимаю, что экран это по сути сетка пикселей, в зависимости от сигнала кода контроллер зажигает определенные пиксели и таким образом формируется изображение.
А как вот курсор работает, обратная связь?
Ты какую-то хуйню городишь. Напиши нормально что ты хочешь узнать. Написаный текст на языке погромироаания переводится в инструкции процессора компилятором. А хуйню с курсором и обратной связью лучше бы не писал
Ты какой-то совсем больной на голову.
>Ну хорошо, а где тогда находится тот декодер, который код с экрана переводит в машинный?
Переводом текста программ в машинный код занимается компилятор. Комилятор это программа такая, если что. Зачем делать компилятор, который будет брать текст с экрана? Не кажется ли тебе логичнее брать текст из файла или какой-нибудь области ОЗУ?
>Ты же сам понимаешь
Нет, твое чириканье я не понимаю. Отдельные слова вроде понятны, но предложения бессмысленные.
>А как вот курсор работает, обратная связь?
Лучше выпились.
Все объяснения как оно работает есть в книгах, которые тебе уже советовали. Причем это книги не для специалистов, а просто для общего развития, понятные не профессионалам. Ты, может быть скажешь, что "читал", но я тебе не верю или ты читал жопой. Попробуй напрягать голову в процессе чтения и отвечать на контрольные вопросы в конце каждой главы.
>Лучше выпились.
Слушай, этот тип, с периодичностью 2-3 месяца, врывается в радач и начинает задавать одни и те же вопросы по кругу. Постоянно находятся сердобольные аноны пытающиеся ему пояснить, хотя все это расписано и разжевано в сотне книг рассчитанных на широкий круг icq. Но этот унылый траль продолжает и продолжает уныло тралить.
Какие книги, посоветуй авторов? Я проебал ссылки
>>26260
>курсор
Ну если ты не знаешь, то так бы и сказал сразу. Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь
>>26261
Бля. Я не говорю про текст с экрана. Это всего лишь интерфейс для человека поняинтно. Про компилятор знаю, но принцип ты его понимаешь? Ты же вот мне про регистры говорил. Говришь программа переводит, это и так любому школьнику понятно. Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят. Так я всего лишь это хотел и узнать - где эти кодеры и находятся - в архитектуре проца или нет. За терпения спасибо тебе конечно. Вы конечно радачеры молодцы, можете делать/собирать йоба устройства и погроммировать, но на уровне микро видимо мало кто понимает, кроме инженеров интела и т.п.
И что я такого задал про курсор плохого? Мне просто интересно, какой принцип.
>Так я всего лишь это хотел и узнать - где эти кодеры и находятся - в архитектуре проца или нет.
У меня аж голова заболела. Кодеры - они за компом, вне проца находятся.
>но на уровне микро
Тебе интересно понять, как проходит движение основных носителей заряда в приповерхностном слое?
Ну вот тебе элементарный шифратор 10 чисел в двоичные к примеру
Они же находятся уже в архитектуре проца? Я собственно и пытаюсь это у вас тут узнать какой уже месяц лол
Блядь, ебаный ты шизоид, ты можешь нормально выражать свои мысли? Твой поток сознания читать просто не возможно. Возникает ощущение, что у тебя разорванное мышление или речевая бессвязность. Просто словесный шум какой-то. Прими таблетки и не забывай посещать психиатра, у которого наблюдаешься.
>а где тогда находится тот декодер, который код с экрана переводит в машинный
Переводом исходного кода в машинный код занимается компилятор, а не декодер.
>А как вот курсор работает, обратная связь?
По-разному, в зависимости от архитектуры и вида курсора.
>Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят.
Программа - это последовательность инструкций процессора. Это по сути. Она управляет вычислениями, а не логическими элементами.
>но на уровне микро видимо мало кто понимает
Нет такого уровня, ты словоблудишь. На уровне цифровой схемотехники понимает любой плисовод, например.
>Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь.
Глупости. Нельзя научить, можно только научиться. Раз ты называешь дураком того, кому задаешь вопросы, значит ты еще больший дурак.
>Какие книги, посоветуй авторов? Я проебал ссылки
Что ты хочешь узнать?
>Какие книги, посоветуй авторов? Я проебал ссылки
Я выше упоминал nand2tetris. Хотя это не совсем книга, но так даже лучше зайдет. Это курс по построению процессора из отдельных вентилей 2И-НЕ, конечный итог - работающий на этом компьютере тетрис. Если бы ты задавал вопросы по этому курсу, то тебе наверняка бы кто-нибудь ответил. А так ты несешь бред и удивляешься не менее тупым ответам.
>Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь
Неправильная логика. Это бы означало, что все что ты "читал", писали люди, не осознающие того что пишут. А это явно не так.
>Про компилятор знаю, но принцип ты его понимаешь?
Понимаю, написал сам парочку простейших. Лежат рядом с кодом вышеприведенного процессора.
>Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят.
Машинные команды, из которых состоит компилятор, ничем не отличаются от машинных команд любой другой программы.
Похоже ты не осознаешь что такое процессор и что он делает. Причем не на уровне того что у него внутри, а что он выдает наружу. Если бы ты сам попробовал запрограммировать на ассемблере хоть что-нибудь, а потом вручную перевести код на ассемблере в машинные коды, то таких тупых вопросов точно бы не задавал. Но ты просто "читал", не напрягая мозги и не отвечая на контрольные вопросы. А потом ты наверное еще головой стукнулся, и в голове у тебя какие-то "кодеры" перемешались с компиляторами.
>но на уровне микро видимо мало кто понимает, кроме инженеров интела и т.п.
Специалистов по физике твердого тела тут действтительно не наблюдается. Но тут есть несколько анонов, способных придумать простенький процессор и нарисовать его схему на отдельных транзисторах. На это способны все плисоебы. Выше по треду тебе наглядное подтверждение.
>>26278
Именно такие в процессоре вряд ли окажутся. В вышеприведенном процессоре такого нет.
Или у тебя вопрос в том, как программа будет переводить десятичные числа (код 1 из 10) в двоичные (натуральный двоичный код)? Так это совсем просто, например посредством команд сравнения и условных переходов.
Все, мне надоело отвечать на твой тупняк. Если следующие вопросы будут не по курсу nand2tetris, то отвечать тебе не буду. Вопросы по этому курсу можешь задавать в этом треде.
>Какие книги, посоветуй авторов? Я проебал ссылки
Я выше упоминал nand2tetris. Хотя это не совсем книга, но так даже лучше зайдет. Это курс по построению процессора из отдельных вентилей 2И-НЕ, конечный итог - работающий на этом компьютере тетрис. Если бы ты задавал вопросы по этому курсу, то тебе наверняка бы кто-нибудь ответил. А так ты несешь бред и удивляешься не менее тупым ответам.
>Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь
Неправильная логика. Это бы означало, что все что ты "читал", писали люди, не осознающие того что пишут. А это явно не так.
>Про компилятор знаю, но принцип ты его понимаешь?
Понимаю, написал сам парочку простейших. Лежат рядом с кодом вышеприведенного процессора.
>Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят.
Машинные команды, из которых состоит компилятор, ничем не отличаются от машинных команд любой другой программы.
Похоже ты не осознаешь что такое процессор и что он делает. Причем не на уровне того что у него внутри, а что он выдает наружу. Если бы ты сам попробовал запрограммировать на ассемблере хоть что-нибудь, а потом вручную перевести код на ассемблере в машинные коды, то таких тупых вопросов точно бы не задавал. Но ты просто "читал", не напрягая мозги и не отвечая на контрольные вопросы. А потом ты наверное еще головой стукнулся, и в голове у тебя какие-то "кодеры" перемешались с компиляторами.
>но на уровне микро видимо мало кто понимает, кроме инженеров интела и т.п.
Специалистов по физике твердого тела тут действтительно не наблюдается. Но тут есть несколько анонов, способных придумать простенький процессор и нарисовать его схему на отдельных транзисторах. На это способны все плисоебы. Выше по треду тебе наглядное подтверждение.
>>26278
Именно такие в процессоре вряд ли окажутся. В вышеприведенном процессоре такого нет.
Или у тебя вопрос в том, как программа будет переводить десятичные числа (код 1 из 10) в двоичные (натуральный двоичный код)? Так это совсем просто, например посредством команд сравнения и условных переходов.
Все, мне надоело отвечать на твой тупняк. Если следующие вопросы будут не по курсу nand2tetris, то отвечать тебе не буду. Вопросы по этому курсу можешь задавать в этом треде.
> Хочу найти подробные схемы видеоконтроллера кр580вг75
Нахуя? Аналог делается без всяких схем собственно контроллера: http://www.danbigras.ru/RK86/Naladka/NoVG75.html
Вроде можно. На выход кондёр пожирнее, резистор на пару сотен Ом до земли.
Я слишком сноб, но меня так-то от элэмки корежит, а тут еще и плис питать от неё. Уф.
В моём случае там будет AMS1117.
Форм-фактор. Понятно же, что он имел ввиду футпринт платы под шину на материнку.
This! Спасибо за перевод с битардского. Я просто ахуеваю сколько стоят отладки с интерфейсами PCI-E и SFP+
Они что блять из золота?
Может дешевле выйдет, если самому развести и заказать у китайцев?
С учетом вероятного проеба первой партии, и немногочисленности, будет раза в два дороже
Это не перевод, а попытка затраллеть (или нет, в случае только разъёма). Вообще это PCI Express Electromechanical Specification, не? Дешевле или нет, ящитаю, зависит от конкретной отладки или конкретно того, что тебе нужно, и в каком количестве.
возможно ли устроиться и зарабатывать нормальную деньгу (50-150) плисаном без диплома вообще? Или без диплома магистра?
Посмотреть тонущий тред никак? Я тебе даже ссылку на него оставлю https://2ch.hk/ra/res/127314.html (М)
>Или без диплома магистра?
С дипломом специалиста нормально. А с дипломом бакалавра сложно. Сразу же возникает вопрос почему не доучился. Обстоятельства или просто дурак?
> отладки с интерфейсами PCI-E и SFP+
> Они что блять из золота?
Они, прежде всего, предназначены для больших дяденек с серьёзным бизнесом, а не для гаражных ниггеров.
> Может дешевле выйдет, если самому развести и заказать у китайцев?
Ты точно уверен, что можешь уложиться в 200 долларов за готовое изделие?
https://www.aliexpress.com/store/product/Arria--PCIe-board/620372_32844162066.html
https://www.aliexpress.com/store/product/PCIe-development-board-Cyclone-IV/620372_32821486791.html
Как правило в руководстве компаний, которым в РФ нужны плисаны (оборонка) сидят дяди старой формации, воспитанные еще при Брежневе. А им ты хуй объяснишь, что бакалавр это высшее образование.
Высшее образование времён Брежнева безвозвратно ушло ещё в начале нулевых. А бакалавр это по сути научный работник, не заточенный под выполнение узко специализированных задач, но с развитым умом и большим количеством креатива. Магистр это уже по совковым меркам кандидат наук. Далее только доктор философии. Но как всегда у нас все смешалось и превратилось в кучу дерьма. Вся надежда на этот срок Путина, по словам будет восстановление разрушенной системы образования и подъем с колен собственной микроэлектроники.
>бакалавр это по сути научный работник, не заточенный под выполнение узко специализированных задач, но с развитым умом и большим количеством креатива
И хули тогда бакалавры делают в ВУЗах, которые готовят инженерные (читай, прикладные) кадры?
Он же написал, что у нас все как обычно перемешалось.
Однако не логично то, что даже первоначально бакалавр - это промежуточный этап перед магистром. Нет смысла готовить узкоспециализированного человека, чтобы потом еще пару лет готовить из него специалиста широкого профиля. Либо так не должно быть вообще, либо бакалавров должно быть два вида.
Жиза. Я начальнику отдела на собеседовании пять раз повторял, что диплом у меня уже есть. Бакалавра.
Я бы тоже с радостью нечто подобное практическое заимел.
А пока приходится задачки с работы делать.
Впрочем, кое-что могу подкинуть. Тут не книги, а брошюрки скорее. И да, они появились когда я петушил на VHDL.
Тут подробно описаны потоки типа FIFO.
https://www.springer.com/cda/content/document/cda_downloaddocument/9781461443001-c1.pdf
Тут сборник годных советов.
http://www.mrc.uidaho.edu/mrc/people/jff/vhdl_info/Ten_Commandments_VHDL.pdf
Но больше всего опыта в проектировании я получил, читая макросы на python от этих авторов.
https://github.com/enjoy-digital
https://github.com/m-labs
Куда лудше вкатываться в ПЛИС или стм32?
В какую сторону вращается девушка?
Если по часовой стрелке - ПЛИС.
Если против часовой стрелки - STM32.
Очевидно стм32.
Стм-ку можно купить, сделать для неё плату из говна и палок однослойную, развести распаять и девайс готов.
ПЛИС для махараечных датчиков - оверкилл.
Если хочется - можно плисоебить чисто в редакторе с тестбенчем.
Это называется внушение. Могу и аргументировать.
Желание перейти к ПЛИС - это желание анализировать. ПЛИС даст тебе знание внутреннего устройства контроллеров и процессоров. Желание анализировать возникает в левом полушарии мозга, и если оно активно - то девушка вращается по часовой стрелке.
Желание перейти к STM32 - это желание создавать. STM32 даст больше возможностей, власти для своих идей. Желание создавать рождается в правом полушарии и когда оно активно, девушка движется против часовой стрелки.
Лучше то, что тебе ближе.
>Надоело тупо подключать ардуино библиотеки для датчиков.
Учитывая это предложение, тебе лучше как следует изучить микроконтроллер в своей ардуине. Для начала ты можешь делать все то же самое на ардуиновской плате, но не использовать ардуиновское иде и библиотеки.
Ты наверное даже с регистрами в атмеге не разобрался? Представь себе, микроконтроллер, который стоит в ардуине, разрабатывался не для ардуины вовсе. Даже более того, существуют какие-то ардуины и на Cortex-M3. Если бы ардуины начали делать на STM32, а такая возможность есть, то что бы ты тогда делал?
>>27753
В целом верно, но однослойную плату под QFP-144 в домашних условиях вполне можно сделать. А CPLD в PLCC корпусах с панельками вообще можно на макетке паять.
Это печально, скоро совсем не получится потыкать осциллографом прямо в ноги FPGA. Хотя нет, серия 5576 никуда не денется.
Ну аналоговые сигналы можно и на другом конце потыкать, а не у ноги плисины. Конечно, есть всякая срань шумовая по пути, но я уж не знаю, насколько это важно.
Так то аналоговые сигналы обычно непосредственно в ПЛИС не заходят. Входной аналоговый сигнал смотришь на одном конце, выходной на другом, а синхронизируешься от вывода ПЛИС, например.
Ну и потом, во FLEX10K ничего такого не имеется.
Мне кажется для подобных целей достаточно сделать отладочные пятаки на этапе проектирования печатной платы.
Плюс, насколько я знаю, пятаки, к которым паяется BGA обычно делают сквозными и их можно потыкать с другой стороны печатки? Разве нет? Сам редко этим занимаюсь.
Антон, скажи что у меня глюки.
Неужели реализация обычного юарта занимает 342 триггера и в самую младшую FPGA влезет всего 1.5 юарта ?
> a16450
> обычного юарта
А ты думал — в сказку попал? https://www.altera.com.cn/content/dam/altera-www/global/zh_CN/pdfs/literature/ds/ds16450.pdf
Ну не триггеров, а логических элементов.
Плюс, это же приемо-передатчик. Еще и перевод из последовательного в параллельный, та еще морока.
Поддвачну. В планах накатить 8086 или что-нибудь слабее например 6205, поэтому советуйте платку с оперативкой сразу.
На всякий случай скажу очевиднейший факт, который, возможно, тут не все знают. В отличие от микроконтроллеров, тут для чего-то более-менее сложного без симуляции не обойтись. Непосредственно для обучения плата не требуется. Поэтому если что-то и покупать, то в основном для того чтобы просто посмотреть как оно работает.
Книгу там выше по треду советуют >>27693 Сам я советовать не буду, т.к. то что я читал, мне не понравилось.
>>28926
>6205
Может 6502?
>с оперативкой сразу.
В самих FPGA достаточно много блочной двухпортовой памяти. В весьма небольшой EP4CE10 этой памяти 414 кбит, в EP4CE22 594 кбит, по моему этого вполне хватит для игрушки на 6502. Если все-таки хочется отдельную память, то стоит определиться с ее типом.
А схема где? Или ты китайцам для ее получения писал?
Уж лучше взять https://store.digilentinc.com/arty-s7-spartan-7-fpga-board-for-makers-and-hobbyists/ хотя в сумме с доставкой выйдет дороже. Но для задач того анона возможно лучше взять со статической памятью.
> хочу вкатиться в FPGA
> какую плату купить для начала?
Если говорить про альтеры (с хилыми не работал, так что посоветовать не могу), то почти любую на младших камнях из семейства «Циклон 4» (EP4CE6/EP4CE10) и приемлемым количеством мигалок и переделок (чтобы не ебаться с макетками и проводами), плюс программатор (китайский клон USB blaster):
https://www.aliexpress.com/item/ALTERA-Cyclone-IV-EP4CE6-FPGA-Development-Kit-Altera-EP4CE-NIOSII-FPGA-Board-and-USB-Blaster-downloader/32792622551.html
https://www.aliexpress.com/item/Free-shipping-Altera-CycloneIV-FPGA-Development-board-EP4CE6E22C8N/32715249531.html
https://www.aliexpress.com/store/product/Free-shipping-altera-EP4CE6F17C8N-board-fpga-board-altera-board-altera-fpga-development-board-fpga-development-board/620372_32795496067.html
https://www.aliexpress.com/store/product/only-E10-SDRAM-altera-EP4CE10F17C8N-board-fpga-board-altera-board-altera-fpga-development-board-fpga-development/620372_32800480331.html
>>28926
Тоже самое. Додревнюю восьмибитную ЭВМ можно успешно впихнуть в EP4CE10: http://www.electronicsfun.net/RU/archives/932
>>29062
Ну, в моём случае китаец дал ссылку на файлообменник, с архивами (схемы, примеры и немного документации в стиле «шоаррская лиса»).
P.S. Плисаны, я тут охуительную хуйню нашёл. «Пердуина» с MAX10 вместо микроконтроллера: https://www.aliexpress.com/store/product/Mini-Altera-MAX10-10M02SCM-10M8SCM-10M08SAM-FPGA-Development-core-Board-compatible-with-Arduino-Raspberry-Pi/829772_32881985871.html
Прикол они мои клиенты, члены деревянные им отгружаем
Помню, рекомендовали сиську читать, но там разве не применительно к их аппаратуре?
Читал стандарт IEEE на 802.3 - маловато\сложновато. Маки, хуяки. Ничего не ясно.
Схему китайцы скинули, ага. За ссылку спасибо, кое-что присмотрел там интересное.
> Плюс, насколько я знаю, пятаки, к которым паяется BGA обычно делают сквозными
Ничего ты не знаешь, Джон Сноу. Потыкать можно в переходные отверстия, через которые ноги соединяются с другими элементами схемы. Сами контактные площадки не сквозные, а поверхностные.
Ты странный. Хочешь вкатываться на низком уровне, а стандарты тебе СЛОЖНА. Кроме того, низкий уровень - это что? Схемотехника PHY? Логика MAC? Алгоритмы протоколов верхнего уровня? Будешь делать свой W5300 на ПЛИС? Будешь делать свой TCP/IP-стек на STM32?
Хм... А может 8 бит процессор с программно настраиваевым декодером команд и его возможности в эмуляции на нём всяких микроконтроллеров?
Типа перспективы развития реализации аппаратного эмулятора...
Хз чушь несу
Она идёт вперёдъ
Ой ля, спс а то я сам всё это учил а как называется хз
Бледь.. А если я плисоёб и у меня девушка тоже вращается против часовой стрелки?
Я получается лентяй без желания создавать?
Молодой человек, эта девушка не для вас вращается!
Да! Девушке явно не хватает мнимой компоненты
Ну вот поморгал ты светодиодиком.
Потом двумя.
Потом сделал рс232 приемник, ...
как там дальше?
И как плохого плисоеба отличить от хорошего? Быстро кодит? Мало блоков использует?
>как там дальше?
VGA, общение с памятью, SPI, I2C, USB, 10/100 Ethernet PHY, гигабитные приемопередатчики, общение с АЦП/ЦАП, интерфейс JESD204B, шина AXI, встроенные процессорные ядра (Microblaze/Nios), ARM.
Отдельно - ЦОС, фильтры, приемники, демодуляторы, SDR, обработка звука/видео/изображений, нейросети.
Еще отдельно - криптография, майнинг.
> USB, 10/100 Ethernet PHY, гигабитные приемопередатчики
Это зависит от наличия бабла на дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком.
> Ethernet PHY
У тебя три ошибки в слове MAC
>дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком
Необязательно, я 100 Ethernet в одно рыло поднял, и без всяких NIOS-ов и прочих говнософтовых и хардовых процов. А все нужные корки есть в свободном доступе.
>шина AXI, встроенные процессорные ядра (Microblaze/Nios), ARM.
Ну это так-то уже куски С кода в процессорной среде по большей части, не?
>Это зависит от наличия бабла на дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком.
Зависит. Но вопрос был какая линия прогресса у плисоеба. А в серьезных конторах хотят, чтобы плисоеб мог смахараить свич на ПЛИС.
>Ну это так-то уже куски С кода в процессорной среде по большей части, не?
И? Ты думаешь, плисоеб не должен уметь кодить на C?
> идеологически верно и политически грамотно
делать ему длительность один период тактовой частоты и подавать его на вход EN
>EN
Никак не могу понять, этот EN - обычный вход разрешения, завязанный на вход D, или же какой-то спец. вход завязанный на тактовый вход?
мимо
И какие вещи надо купить и где.
Какие книги почитать.
Но главное это основные вехи Мастера, так сказать план.
> вход завязанный на тактовый вход
This. Твой строб будет тактирован основной тактовой частотой.
Этого двачую! Логический анализатор для начинающего плисоёба - отличный проект. Можно ещё 8-битную игровую приставку из ничего (от вентилей до написания игрули) попробовать замутить.
В том, чтобы найти нужные куски кода, собрать проект, запустить и чтобы работало как надо.
>count enable
Это в счётчиках. Это синхронный вход, подаётся через комбинационные схемы на D-вход.
Мне интересен именно clock enable у D-триггера. Желательно схему такого триггера увидеть.
Насколько я понимаю, это можно сделать не одним способом, но например в структурных схемах МК рисуют вентиль И. А в логической ячейке ПЛИС уже есть аппаратный триггер, и как там у него внутри сделан вход clock enable, производитель не расписывает (ну, по крайней мере, Альтера для Циклона не расписывает).
>1 пик
Если сделано как на (b), то это хуета, лучше сразу делать как на (а).
Вкинь, плиз, страницу с рисунком 3.18.
digital-design-and-computer-architecture-russian-translation.pdf
Угрюмов Е.П. Цифровая схемотехника: учеб. пособие для вузов. — 3-е изд. 2010
По такой схеме повышаются требования к сигналу EN, он должен быть таким чтобы на тактовом входе не образовались пички.
И вообще, комбинационные схемы и другие на тактовых входах крайне нежелательны - синхронное проектирование же.
Вот тут подробнее рассказывается
https://youtu.be/82MIcxi5pPo
https://youtu.be/JpUUdEEKZeg
Бочку делаешь?
Сколько процентов рабочего времени ты занимаешься именно разработкой - проектированием структурных схем, кодингом, симуляцией, пердолингом с железкой?
STM32F103ZXXX как основной узел ..., нутыпонел.
XC6SLX9-2TQG144C как вспомогательный.
На плате будут распаяны: слот под microSD, SDRAM, SPI flash (S6 заведётся от W25QV?).
Чего ещё не хватает для универсализации? кроме мозгов
Да.
Почему бы не грузить S6 "основным узлом" в режиме slave serial? А так в списке поддерживаемых spi flash этот winbond вроде бы есть.
Хочется, чтоб он и в автономном режиме работал.
Разве у Z нет FSMC? Я, собс-но, из-за него и выбрал. В каталоге он не отмечен, но в описании есть, в кубе тоже.
https://www.st.com/en/microcontrollers/stm32f103zg.html
А в даташите пишут что есть, более того, пишут, что у V серии FSMC наоборот кастрирован в отличии от Z. Это ты наверное в таблице на сайте посмотрел, так её наверняка какая-нибудь секретутка из офиса заполняла, верить ей не стоит, в отличии от даташита.
Ан нет, здесь попал.
>The FSMC is embedded in the STM32F103xC, STM32F103xD and STM32F103xE performance line family.
Но при этом в другом даташите:
>The FSMC is embedded in the STM32F103xF and STM32F103xG performance line family.
Получается, все с буковками должны иметь FSMC, но в F103R в кубе нету нихуя, хотя в описании есть. Это куб мозги ебёт или документация?
Расширенный CS есть только у Z, да.
Орнул с даташита, раздел Pinouts and pin descriptions. У LQFP64 нет выводов к FSMC. Это выглядит как "вам полагается FSMC, но мы вам его не дадим потому, что у вас ножек нету".
>вам полагается FSMC, но мы вам его не дадим потому, что у вас ножек нету".
И хуле орать? Бери чип с нужным количеством ног и радуйся. Или ты предлагаешь писать отдельный даташит под каждый корпус?
Не, ну там на 11-ой странице в Table 2 и так написано что-то, но можно же эту таблицу было вывалить сразу в описании на сайт или, хотя бы, добавлять исключения в описание. А то получается, что в описании всё есть, а дальше мелким шрифтом на n-ой странице написано, что у одного нихуя нет, а другой кастрирован. Это как если при покупке смартфона в описании нормальные характеристики, а в инструкции меленько будет написано, что телефона нет, собс-но, 128Гб в другой модели, и вообще это тетрис.
Ты будто первый раз попал на сайт st. Сейчас еще более-менее упорядочили, а еще пару лет назад там был пиздец, гроб, кладбище.
Как будто это что-то оправдывает. Получается, что и сейчас можно в говно наступить.
Есть sigA STD_LOGIC_VECTOR, скажем, на 32 бита,
и sigB STD_LOGIC.
Как красиво назначить некоторые биты вектора равными значению сигнала?
Т.е., чтобы sigA(13 downto 7) <= sigB. Напрямую, естессно, не работает. Каждый бит прописывать - тупо.
Я помню была какая-то ебатория с фигурными скобками типа <={N, (sigB)} или типа того. А может то в верилоге было.
Вспомнил сейчас про loop, но не люблю его использовать. Хз как он синтезируется и что там по таймингам.
Потому что это бесполезный высер про смену языка.
На уровне смены железки.
Смены места работы.
Смены спецухи.
Смены места жительства.
Поставил вам анон задачу решать: есть суп вилкой. Нет, давайте не будем её решать, давайте советовать ложку.
Попробовал реализовать АРУ. Вот что вышло:
https://www.youtube.com/watch?v=c6bMfBvcjDE
Описание на Верилоге - на пикче. На входе - сигнал в спектре шириной 3 кГц после КИХ-фильтра.
Из-за мгновенного действия детектора усиление сильно проваливается от грозовых разрядов, и из-за ступенчатой регулировки слышно щелчки, пока работает какая-нибудь станция.
Как можно попроще сделать регулировку плавной? Как текущий вариант допилить? Может фильтр простенький какой (скользящее среднее, например), чтоб щелчки сглаживать?
Почему бы тебе не сделать схему с обратной связью? Так же как в аналоговых приемниках делают.
Детектор - просто взятие модуля. Интегратор сигнала ошибки - ФНЧ и вычитание из порога. А управляемый усилитель - умножитель.
Ебани мне РЛС.
Ну вот зачем ты делаешь мне боль? Зачем ты делаешь кровь мои глаза?
http://verilog.renerta.com/source/vrg00004.htm
Попробую.
Тут встаёт вопрос выбора разрядности.
Допустим, в качестве фильтра беру скользящее среднее длиной 2048 семплов (больше по степеням двойки в такт не влезает).
Имея на входе 17 бит, при длине 2048 и худшем случае, когда на входе - максимальное постоянное напряжение, получаю увеличение разрядности на 11 бит. Итого, на выходе фильтра имеем разрядность 17 + 11 = 28 бит.
Тут первая непонятка:
Какая разрядность вычитателя должна быть?
Предлагаешь использовать case или есть более интересные предложения?
> Боги рассыпухи смотря
т
Очень мееееееееееееееедленно, потому что могут онли в сотни килогерц максимум.
"Ленинград"
Сейчас у спектрумистов на барахолке полно новодешьных печатных плат для спектрумов и не только.
>>32876
Всё, разобрался. Спасибо за подсказку. Настолько всё просто получилось, что удивляюсь, что сам не допер и нагуглить не смог, пиздец.
https://www.youtube.com/watch?v=kVJAphWwxNc
Про дискретность регулировки усиления на 2:28 возможно хуйню сказал, ну да похуй.
Вот стоит перед нами задача. Из входов с помощью магии получить выходы. Пишем вот на HDL всякое и первоначальными критериями того, что всё удалось является адекватная временная диаграмма, количество занимаемых ячеек и работа непосредственно на железке.
А вот как писать код чтобы: было низкое энергопотребление или высокая скорость выполнения или минимальное количество ячеек?
На что ориентироваться, как это на коде отражается?
Вот в циклоне, как показано на схеме, предусмотрено переключение направления на ходу, а не только при конфигурации. В других ПЛИС аналогично. В чем проблема то?
>низкое энергопотребление
Меньше переключений, в том числе и отключение тактовой на неиспользуемых в данный момент частях схемы.
>высокая скорость выполнения
Чаще разбивать толстые комбинационные схемы триггерами.
>минимальное количество ячеек
Тут только оптимизация на ранних уровнях проектирования.
HDL-код - это всего лишь способ создания схем. Можно схемы в графическом редакторе рисовать, можно напрямую в ChipPlaner-е структуру задавать, от этого ничего не меняется, просто в HDL-е это всё делается быстрее и удобнее. А чтобы нормально кодить, надо более менее представлять как желаемая схема должна выглядеть в графическом виде.
Можешь видосики глянуть, может что-то интересное найдёшь
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
>Хотя как это ретранслируется в код пока неясно.
FPGA основана на таблицах истинности+специализированные блоки (память, умножители). Смотри даташит конкретной плисы. Например LE четвертого циклона - это любая логическая функция, описываемая 4 входами и одним выходом + один бит памяти + логика роутинга и синхронизации.
Соответсвенно прикидывай, через сколько логических функций 4bit to 1bit выражается твоя логика.
Ну вот что, например, лучше:
case (a) is
when 0 => ..
..
when 99 => ..
(т.е. мультиплексор на 100 входов)
или
if a = 1 then ..
elsif ...
(т.е. 100 триггеров(?)).
Триггер сам по себе реализуется всегда тяжелей, но в логике плиса - хз, там же и правда, лут, алу, вся хуйня.
>Триггер сам по себе реализуется всегда тяжелей
В ПЛИСе триггер не реализуется, они там уже есть, точно так же как и ПЗУ на которых реализуются комбсхемы.
Минимизировать схему, по большому счёту, нужно на ранних этапах проектирования, т.е. перед тем как начать кодить думаешь: "а нужен этот модуль/часть схемы, или без него можно обойтись", более тщательно прорабатываешь архитектуру. А если по мелочи то, в качестве примера, можно привести счётчик с параллельным переносом и сквозным.
>но в логике плиса - хз
В самом деле хз...
Ты бы хоть что-нибудь почитал, прежде чем за ПЛИС браться.
Везде пишут просто
ram_data_out <= memory(to_integer(ram_addr));
Понятно, что для более-менее больших объёмов делать
case (to_integer(ram_addr)) is
when 0 => ram_data_out <= memory(0);
...
(т.е. мультиплексор) заебешься. Разбивать его на несколько маленьких? Или есть еще какая элегантная реализация, типа сдвигового регистра и пр. ?
>Везде пишут просто
>ram_data_out <= memory(to_integer(ram_addr));
Так и чем тебя это не устраивает?
Эта строка в любом компиляторе и на любой железке будет одинаково реализовываться?
Если железка поддерживает реализацию массивов данных, то да.
Как сделать обмен комп<->плис? Первое что пришло в голову - UART, но блин медленно, передавать/принимать желательно за раз 64 байта, по возможности быстро, хотя бы 8 байт за такт. Какие ещё варианты? Параллельный стык колхозить типа LPT?
>не знаю как прошеца в очередной раз контроллер 51 архитектуры
>контроллер 51 архитектуры
>тред про ПЛИС
Шел бы ты нахуй отсюда, петушок.
Это массив данных на аппаратном... в общем размер переменной для вычислений, пока все 64 байта не придут, вычисления не начинаются.
Даже если скорость поднять, то все равно медленно? Большинство USB-UART переходников работают до 460800 бод без проблем, а некоторые на порядок больше тянут.
Из простого можешь еще использовать FT245, FT232 и подобные.
>Data transfer rate to 1 Megabyte / second - D2XX Direct Drivers.
>Simple interface to MCU / PLD / FPGA logic with simple 4-wire handshake interface.
>>33646
Ну можешь просто байты считать. Либо можно начинать (и/или заканчивать) посылку с уникальной последовательности, если боишься обрывов связи.
>пока все 64 байта не придут, вычисления не начинаются
Для этих целей ставится буфер, который выдает сигнал валидности. Выдает только тогда, когда в него набъется нужное количество данных.
Перестань ебаться в глаза и еще раз прочитай что я писал. Тебе подойдет FT232.
Ты че там, бетховенов майнишь что ли?
Ну это если есть свободный слот, то да, топ.
Собери аппаратный дешифратор данных, у чекистов что-то подобное сейчас в ходу.
2. Есть ли разница в описании комбинационной логики между:
a)
process(A1,A2)
begin
result <= A1 and A2;
end process;
B <= result;
б)
B <= A1 and A2;
3) Есть ли разница в описании:
а)
if (A1 = '1')
then if (A2 = '0')
then
б)
if (A1 = '1') and (A2 = '0')
then
1. Систем верилог - расширение верилога с блекджеком и свистоперделками.
2, 3. С такими вопросами можешь нахуй идти.
>Всё, разобрался. Спасибо за подсказку. Настолько всё просто получилось, что удивляюсь, что сам не допер и нагуглить не смог, пиздец.
Я, конечно, привык к человеческому долбоебизму, но всё равно иногда охуеваю.
Вот здесь я тебе советовал сделать так, как ты сделал сейчас:
https://m2ch.hk/ra/res/138868.html#278025
Вот здесь я объяснял, что будет происходить от импульсных помех:
https://m2ch.hk/ra/res/138868.html#278445
Вот здесь я тебе предсказывал, что ты соснёшь со своим бараньим упорством не слушать хороших советов:
https://m2ch.hk/ra/res/138868.html#278470
Поздравляю, ты всё-таки пришёл к И-регулятору, всего-то за один год и четыре месяца. Ещё и пожаловавшись, что оно не нагуглилось. Просто пиздец, какие же люди долбоёбы, вообще пиздец.
Только In System Sources and Probes Editor для попытки снятия топологии неизвестной платы. Заебатый квест. Большая часть выводов (может 500 из 740) распознана таким методом, исключая выводы высокоскоростных трансиверов.
Пока разбирался с SignalTap-ом столько косяков нашёл и расхождений с документацией. Вот думаю, то ли я и дурак и не понимаю, то ли действительно индусы пишут.
Они ещё и официальные видеоруководства записывают. От их акцента полное чувство индусизма происходящего.
"хай маль диль флендс. тюдель аль виль тёльк абальт илитлёниксь"
https://www.reddit.com/r/MonsterHunter/comments/983851/25_of_cpu_usage_in_monster_hunter_world_is_for/
Щито поделать. Индусы пилят видосы.
Жри чё дают, мразь.
2. Есть ли годные ресурсы по всему этому кодингу на русском языке (ну кроме мемных ссылок на марсоход и тот плейлист на тытрубе про цифровую схемоту) или дефолтный гуглеж на английском всё еще единственный годный вариант?
Обгоню всех на повороте и скажу, что слышал про IEEE std.
Не найду полином для расчета. Вообще можно ли считать это через полином? Или только через сумматор?
Тогда только суммировать... полиномами только общий CRC Ethernet фрейма считаеться
Если не буду считать КС, моя железка будет поддерживать протокол лишь условно. Для ардуиноподелок такой подход конечно подходит, но для коммерческого продукта врядли.
Не то что переборщили а сотворили лютую хуету. Вот что бывает, когда низкоуровневые протоколы пишут высокоуровневые программисты.
Как по мне, если хочешь сократить латенси. например, это можно не считать. Ибо у тебя пейлоад тоже в чексуме
Как я жалею в такие моменты, что плохо знаю математику. Сейчас бы вывел какую-нибудь функцию подсчета КС.
В голову не приходит ничего лучше, кроме как построить конвейер.
А как не через конвеер? Шморгать память?
Ну, еще придумал способ упростить. Вбей в заголовок не нулевую константу, а в пейлоад в конец вставь КС, если протокол пзволяет добавить 2 лишних байта
>Вбей в заголовок не нулевую константу
И рандомный маршрутизатор/стек ОС в цепочке тебя нахуй с ней пошлет
>Схуяли, это стандарт
Стандарт - это нули, всё что не нули - значит контрольная сумма оппа-а пакет-то битый, нахуй его.
>В голову не приходит ничего лучше, кроме как построить конвейер.
А так у тебя конвейеров нету? А как данные передаются тогда? Только не говори, что процессором без DMA.
не, ты просто не понял. Тебе не важно чем подгонять контрольную сумму к правильному значению, можно полем, а можно данными. Позиция по сути не важна
Если интерфейс согласован до пина, а на кристалле показывает говно - это фейл?
А если наборот?
Заебали эти DDR4 с их ODT.
Чем показывает? На каком кристалле, плисины, памяти? Может, не написал констрейны для i/o standard и line termination. А может, и фейл, да.
Это на стадии моделирования разводки.
Модели выводов прописаны соответственно в IBIS файлах.
Показывает, например, на чтении у ноги FPGA хуйню, а на кристалле - норм. (odt на ноге плиса включен)
Ну вклинься между акси мастером и слейвом, и считай в процессе передачи, не должно быть слишком сложно.
1) Нахуя на циклоне нужны VREF для банков пинов?
2) Что дает выбор стандарта напряжений логических уровней в пин планере квартуса?
>Нахуя на циклоне нужны VREF для банков пинов?
https://en.wikipedia.org/wiki/Stub_Series_Terminated_Logic
> Что дает выбор стандарта напряжений логических уровней в пин планере квартуса?
Требуемую совместимость с другими потрохами на плате (оператива-хуератива, цапы-хуяпы, шины-хуины)
>Требуемую совместимость с другими потрохами на плате (оператива-хуератива, цапы-хуяпы, шины-хуины)
Не понял, поясни плиз.
Спасибо. Держи няшку.
Короче все оказалось проще. Заголовок MAC-уровня передается за 14 тактов. На предыдущей стадии конвейера просчитываю предварительную КС UDP-payload. Окончательную КС считаю за 5 тактов во время передачи MAC. Можно было не ломать голову.
Однако, задача с ускорением подсчета КС интересная, так и не придумал рещение.
Шпиён! За меня ответил.
>2) Что дает выбор стандарта напряжений логических уровней в пин планере квартуса?
Разные стандарты определяют допустимые диапазоны напряжений и токов на выводе, надо читать на эту тему мануал плисины и даташит железки, к которой коннектится плис. (Те же jedec для DDR, например).
>джава для петухов.
вот сейчас обидно было
>мне похуй на зарплату
ой ой ой передумаешь
мимо проходил
Доброта.
Я был и остаюсь в таком состоянии диагноз есть, что про ЦОС-тред вообще забыл, да и не мог нихуя делать, не соображал почти.
Для любителей садо-мазо можно предложить 74HC299 - есть и параллельная загрузка и последовательный ввод-вывод.
С тебя логика как переключать режимы загрузка-вывод (может и обойдется даже без инвертора на S1) и как отличать актуальные данные или нет.
За лучами поноса в >>16943 (OP)
И не надо мне писать что нужно знать английский. Мне понятно что все равно в итоге придется читать на английском, но хотя бы основы я хочу прочитать на русском.
По-русски это, видимо, звучит как "написание тестбенчей".
Отвечаю сам себе, нашел одну книгу.
>Проектирование и верификация цифровых систем на кристаллах. Verilog & System Verilog
>Хаханов В.И., Хаханова И.В., Литвинова Е.И., Гузь О.А.
Книга выглядит как-то не очень, слишком похоже на перевод. Скорее всего это перевод и есть, только надерганный из разных источников.
В книге рассказывается об использовании assert-ов и псевдослучайном тестировании. Хотелось бы еще почитать про UVM, OVM и прочее.
Так если через SPI конфигурируется, то разве нельзя микроконтроллером через SPI сконфигурировать?
мимо
>Так если через SPI конфигурируется, то разве нельзя микроконтроллером через SPI сконфигурировать?
Там хитрожопая анальная дрм-защита на проверку "а специальные ли флешки за 100$ ты используешь?".
Раскуривай ->
https://www.xilinx.com/support/documentation/user_guides/ug380.pdf
С Xilinx не работал, у Altera - да, есть проверка типа памяти только при заливке конфигурации в ПЗУ, но не при чтении конфигурации после подачи питания.
хотя наоборот тоже интересно
SERDES из мира Ethernet вряд ли подойдет - используется перекодирование 8 бит (исходные данные) в 10 бит (в линии).
Может помогут всякие LVDS драйверы для Flat panel типа DS90CF383? Чуть больше 24 бит заталкивает в 5 LVDS линков.
Чуваку постом выше твоего будет полезнее раскурить.
Жесткий челикс.
Хуйню не неси, анальный страдалец. Протокол открыт и документирован.
Накидайте пожалуйста мануалов для быстрого старта помигать светодиодами, в интернете ч нашел одну хрень
С бордой идут примеры
Камень - это как на этой фотографии? Ну это больше по спортивной тематике.
Перед тем как что-то покупать, тебе нужно было читать что-нибудь по основам цифровых устройств, например Угрюмова.
https://twitter.com/ico_TC/status/823883792754634752
Когда-то спрашивал, еще раз спрошу.
Есть слитая конфигурация с мелкой CPLD от Lattice. Как/чем превратить конфигурацию во внутреннюю схему межсоединений CPLD чтобы попытаться понять что там реализовано внутри?
Интересно, существуют ли кадры, задающие вопрос на пост с ответом?
Смотря что ты называешь практической пользой.
Но зачем тебе для этого ПЛИС?
Простой счетчик на ПЛИС даже не будет работать на такой частоте. Разве что только приспособить serdes. Но на такую частоту serdes в циклонах и спартанах вроде бы не дотягивает, придется все равно ставить внешний предделитель. Более того, serdes вообще зачастую отсутствует в дешевых сериях. Для записи на флешку придется использовать nios/microblaze (особенно если ты хочешь использовать файловую систему) или снаружи приделывать микроконтроллер, при этом сам сами счетчики будут занимать мизер относительно nios/microblaze.
Поэтому нет никаких причин делать такое на ПЛИС. Тому анону вроде как нужно было очень много каналов, а частоты были относительно низкими, поэтому ему был смысл использовать ПЛИС.
ну мне 8 каналов надо, забыл написать :)
ну есть вариант цайпрес 5 поставить, кто нибудь с ним работал? как он?
Спасибо, за разъяснения, посоветуй годные счётчики, прескалер, и коммутатор для этих целей.
>годные счётчики, прескалер
Не знаю, не делал такого. В качестве предделителя можно взять микросхему синтезатора частоты. Пользуйся параметрическим поиском на диджикее.
Я так и не понял что ты в итоге хочешь получить. Если тебя устраивает одна секунда длительности измерения и ты собираешься использовать в качестве опорного генератора обычный кварцевый не термокомпенсированный, то можно поставить предделитель на 1000. Тогда в точности почти ничего не потеряешь даже на твоей нижней границе частоты и снизишь максимальную частоту до 10 МГц. Разные варианты есть, в зависимости от желаемого результата.
Другой вариант это сделать одноканальный частотомер и на вход поставить демультиплексор.
Предделитель думал на счёт upb1505 , длительность измерения 10сек, опора 10Мгц термостптированныйтермостптированный , либо стандарт частоты.
Да, я тоже подкмпл, что канал один, а раз в На вход коммутатор и переключать раз в 10 сек
Можно выбрать что угодно, но в пределах разумного
А какие предложения?
Поясните за task и function. Для чего нужны? В каких случаях их применение оправданно? В чём их преимущество перед обыкновенными модулями?
Функции и таски можно сравнить с макросами в Си. В функции можно запихивать только комбинационную логику. В таски можно уже вставлять последовательностную логику.
По сравнению с модулями, функции можно пихать практически куда угодно - в assign, initial, объявления. Например, пользуясь функцией логарифма удобно делать модули с параметризуемой разрядностью. Таски в принципе можно использовать для синтеза, но я их использую только для симуляции, т.к. часто сложно представить во что синтезируется код с ними.
Если модули можно образно представить как готовую печатную плату с детальками, то таски - нельзя. Например, вставили в таск ожидание фронта сигнала а потом вызвали несколько таких тасков друг за другом, во что оно синтезируется (если сможет конечно)? Это явно не всегда можно представить в виде последовательного соединения модулей.
Похую, назначаем вместо SubLVDS/LVDS приёмники DIFF_HSTL_I_18, назначаем вместо дифференциального single-ended терминаторы потому что DIFF_TERM есть только на LVDS эквивалент 50 Ом на 0.9В с p-сигнала и n-сигнала. То, что надо, казалось бы? Но вот хуй, данные принимаются неправильно.
Для сравнения берём отладку KCU105, она умеет в DIFF_HSTL_I_18 и в SubLVDS. Проверяем SubLVDS с DIFF_TERM — работает. Проверяем DIFF_HSTL_18_I, терминация — single-ended эквивалент 48 Ом на 0.9В для p-сигнала и для n-сигнала — тоже, сука, работает.
Почему так? Почему данные сенсора принимаются на Kintex Ultrascale KCU105 по стандарту DIFF_HSTL_18_I без проблем, а на Kintex 7 KC705 по тому же самому стандарту DIFF_HSTL_18_I — криво и косо? Что я не учёл?
>эквивалент 50 Ом на 0.9В
>эквивалент 48 Ом на 0.9В для
Например.
Пины дифференциальные, надеюсь, к одной паре заводил?
А то у меня был косяк, когда дифф. пару соединил с N и P, но только N была с 12L, а P с 13L.
Ну и может второй класс hstl пойдет?
>По сравнению с модулями, функции можно пихать практически куда угодно - в assign, initial, объявления.
Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign?
Есть ли такой случай когда функцию нельзя заменить на модуль?
Если я правильно понял функции и задачи удобны по большей части в моделировании, в синтезе и без них вполне можно обойтись.
>Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign?
Синтаксический сахарок. Для модуля надо писать объявление самого модуля, цепей, подключать цепи к портам, причём отдельно от описания прочей логики. Функцию где понадобилось, там и вставил.
>Есть ли такой случай когда функцию нельзя заменить на модуль?
Например, ты пишешь модуль с параметризуемой шириной шины, в параметре указываешь максимальное значение на шине, а ширину шины вычисляешь при помощи функции, чтобы это значение туда влезало.
>Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign?
Это ты про что? При чем тут assign? Запись с функцией обычно будет короче.
>Есть ли такой случай когда функцию нельзя заменить на модуль?
С функциями можно проводить вычисления при инициализации и объявлении. Вычислять и задавать требуемую разрядность, хотя бы. Вот тебе вполне синтезируемый пример использования функции $clog2 https://github.com/minad/vle/blob/master/shifter.v
>Если я правильно понял функции и задачи удобны по большей части в моделировании, в синтезе и без них вполне можно обойтись.
Скорее только таски (по моему мнению). Функции для синтеза наоборот вполне удобны.
Вот еще тебе пример использования функции для инициализации памяти >>26151 В более сложных случаях это может быть не чтение из файла, а вычисление на ходу.
Вот еще вспомнил. Функции могут возвращать тип real, а в портах модулей такое недопустимо (хотя может в SV разрешили). Хотя это ограничение можно обойти, пусть и костыльно, через $realtobits и $bitstoreal.
>в параметре указываешь максимальное значение на шине
В параметре я указываю любое значение при создании экземпляра модуля. Зачем в модуле ограничиваться максимальным числом?
>>40306
>С функциями можно проводить вычисления при инициализации и объявлении. Вычислять и задавать требуемую разрядность, хотя бы.
Так это системная функция.
>Вот еще тебе пример использования функции для инициализации памяти
Это тоже системная. А какой прок с пользовательских? Вот только разве что быстрее и короче.
>Так это системная функция.
Появилась только в verilog 2005. И мне до сих пор приходится для флексов использовать свою функцию логарифма.
>А какой прок с пользовательских? Вот только разве что быстрее и короче.
Из верилога можно выкинуть очень много, сохранив возможность делать на нем что угодно. Например, вполне можно обойтись без арифметических операций.
>Зачем в модуле ограничиваться максимальным числом?
Ты вообще о чем? Вот взять например UART приемопередатчик. Параметрами задается тактовая частота и скорость. В модуле считаются максимальные значения счетчиков для заданной скорости. Из этих максимальных значений считаются требуемые разрядности счетчиков.
Нашёл косяк. Оказывается, многоканальный десериалайзер для ультраскейла пакует биты на шине по порядку каналов, а для седьмого кинтекса — по порядку битов (то есть сперва нулевые биты со всех каналов, потом первые, етц). CYKA BLYAT.
Суть в следующем. Есть модуль А, который нужно промоделировать. В модуле присутствует инстанс модуля Б, который довольно тяжеловесный но уже отлажен. Не хочу моделировать эти два модуля совместно ибо пиздец как долго. Решил запилить конструкции типа ifdef SIMULATION ... ну вы понели.
Можно ли как-то сделать дефайн глобальным? В идеале, чтобы в самом тестбенче писал
Define SIMULATION 1 и модуль А симулировался в облегченном варианте?
Так Б у тебя на работу А-то влияет или нет? Если влияет, как ты без него моделировать собрался? Если не влияет, нахуй он там у тебя вообще?
А вообще, если у тебя есть какие-то независимые от Б части А, на твоём месте я бы их вынес в отдельный модуль и написал для него тестбенч. Прежде чем придумывать костыль, может, лучше попробовать сделать стандартными методами?
Влияет, но я подыгрываю модуль Б за счет force.
Вынести модуль Б на верхний уровень конечно можно, но у меня анальная бюрократия и нужно обосновывать перенос ибо "архитектура устоялась"
А, ну и положи на них тогда анальный хуй. Ещё крутиться из-за них зачем-то при таком отношении, подскакивать кабанчиком. Моделируй как есть, пей чай.
Я здесь как краб. Буду пить чай - предъявят за анальные сроки. Это сущий ад быть плисоводом, когда твой тимлид программер и вообще толком не понимает в железе, но старается компенсировать это за счет программерских штучек.
Ненавижу блять все эти программерские штуки, системы контроля версий, дженкинсы-хуенкинсы пропади они пропадом.
Извини, братиш, но нет к тебе что-то никакого сочувствия. Потому что допуская к себе отношение как к говну, ты формируешь у работодателя представление, что к плисоразработчикам допустимо относиться как к говну. И нет, я не системы контроля версий здесь имею в виду. Не делай так.
Но к плисоводам в рашке и так относятся как к говну. Вакансий мало, люди цепляются за работу.
Хотя чего я оправдываюсь, омежью сущность не скрыть.
Вакансий мало потому что сфера уж больно специфичная, зато там где они нужны их ценят в силу малого количества, а так средний плисовод имеет зарплатку больше чем средний прохер.
мимоплисовод
Ну для ДС может и пиздец, в ДС, я думаю, можно легко 100 делать. А у меня работёнка не бей лежачего, особо не напрягают, правда большую часть времени какой-то левой хернёй занят, но не суть. А так знал бы ЦОС и прочую математику, конечно бы метнулся туда где побольше.
Правда жизни такова, что вчерашний студент попав в МЦСТ/Миландр будет получать залупу за воротник.
Вчерашний студент попав в Сбертех джава-макакой будет получать от 120. И это без знаний ЦОС и математики.
Этот шарит.
Мимо работаю в мцст за 50, пока друг в сбертехе поднимал 150 (пока не съебался оттуда).
Я жопочтец, сорян
>Вчерашний студент попав в Сбертех джава-макакой будет получать от 120. И это без знаний ЦОС и математики.
Должно быть там анальные условия за такую зп, ибо закон сохранения энергии должен работать.
Наверняка и график посвободнее, и плейстейшон стоит в комнате для отдыха.
В таких вещах работает закон спроса и предложения. Писать энтерпрайз для банков спрос на специалистов большой, а делать попильные аналоговнеты для военкии — лишь постольку-поскольку. Бюджет один хуй выделят, ну и нафиг им с каким-то мимованькой делиться тогда.
>плейстейшон
И зачем? Вот у меня на работке есть паяльник и нехилый цифровой асцилоп и мне никто не запрещает паять себе ёбамахарайки, а это многого стоит.
Ну меня вот дома нет осциллографа, тем более цифрового, тем более такого
https://1prof.ru/wa-data/public/shop/products/64/21/22164/images/25934/25934.750x0.jpg
>>324069 Разумеется без поверки и не откалиброван. С памятью похуже, скорость обновления низкая. По удобству использования и сравнивать нечего. Тем не менее, что-то с такой полосой можно найти относительно дешево, пусть оно и не откалибровано будет. Поэтому такой осциллограф - преимущество так себе.
Другое дело спектроанализаторы, векторные анализаторы, вот такое действительно уже слишком дорого будет.
Я бы спаял с тобой махарайку, хоть ты и безчувственная сволочь.
Буквально неделю назад на алике появились вот такие отладочные платы Kintex 7 XC7K420T https://s.click.aliexpress.com/e/LBqdJPk
Первый вопрос - а хули так дешего, при ценнике 2 к далларов только за оригинальный камень?
Второй вопрос - можно ли использовать эту плату без подключения в pci слот ПК?
Третий вопрос - можно ли использовать pci платы просто как IO?
>Первый вопрос - а хули так дешего, при ценнике 2 к далларов только за оригинальный камень?
Левые или пизженные микрухи. Врятли прошли полную сертификацию
Второй вопрос - можно ли использовать эту плату без подключения в pci слот ПК?
Можно, только подай питание
Третий вопрос - можно ли использовать pci платы просто как IO?
Можно, но только как высокоскоростные интерфейсы... как ГПИО -нет
>хули так дешего
Наебалово, ошибка, или наебалово, замаскированное под ошибку (чтобы ссылку на магазин растаскали по интернету, при реальной попытке заказать ответ будет "ой, сорян, косякнули").
да он написал что это первая версия, вторая будет с ДДР и дороже. Потестить забесплатно хочет.
Не знаю, я встречался со сверх-дорогими ПЛИС в поднебестной, это реальность!
> чтобы ссылку на магазин растаскали по интернету, при реальной попытке заказать ответ будет "ой, сорян, косякнули"
Ну хуй знает. Я в этом магазине летом покупал (правда, обычные платы с четвёртым циклоном и SDRAM), всё нормально было.
Мимикрокодил
P.S. Судя по сопровождающему лот чинглишу, похоже на то, что это какие-то китайские кустари-самородки не то демпингуют, не то сливают остатки после большого проекта («I will design the FPGA cluster dedicated to computing . Single board 12 FPGA XC 7K420T»).
Обе платы (E10, с перделками и свистелками, и отдельный мезонин с Е22) обошлись в 90 долларов, сейчас там цены примерно такие же:
https://www.aliexpress.com/item/EP4CE10F17C8N-board/32800480331.html
https://www.aliexpress.com/item/E22-core-board-EP4CE22f17C8N/32853228751.html
> Сколько ddr?
Не DDR, обычная SDRAM. В данном случае старая (хуй его знает, где они эту микросхему десятилетней давности откопали) W98256G6EH-75, на 256 мегабит.
Лол. Причем питалово на линеарских модулях собрано, которые тоже нихуя не дешевые.
https://ru.aliexpress.com/item/Xilinx-Kintex7-Kintex-7-K7-XC7K325T-FPGA-PCIE-DDR3/32869783646.html вот еще. Уже с двумя гигабитными eth-phy.
Лучше 4 10G чем 2 1G
Мигать светодиодами, их там целых восемь. На каждый можно повесить по своему собственному Микроблейзу для управления.
За такое живьём скармливают абуригенам из /бэ/. Лучше запили анализатор трафика.
Антон, в сетях варишься?
Есть пикрил, и есть Marvell 88E1111 - работал с подобным? Несколько раз пробовал запускать внутренний говногенератор спама (внимание - здесь старший и младший байт переставлены местами, очень древняя паста):
Ребут через вывод PHY RESET и чтение регистров
root@deb:~# i2cdump -yf -r 0-63 0 0x5e c
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 11 40 79 69 01 41 0c c2 0d e1 c1 e1 00 0f 28 01 ?@yi?A??????.?(?
10: 5c 6b 03 00 28 ff 00 00 00 00 00 00 00 00 f0 00 \k?.(.........?.
20: 00 68 bd c0 00 00 1c 50 0c 60 fa 7a 00 00 00 00 .h??..?P?`?z....
30: 41 00 00 00 00 0a 04 8f 00 00 00 00 00 00 00 00 A....???........
Смена страницы и запись битов включения:
root@deb:~# i2cset -yf 0 0x5e 29 0x1200 w
root@deb:~# i2cset -yf 0 0x5e 30 0x7c82 w
root@deb:~# i2cdump -yf -r 0-63 0 0x5e c
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 11 40 79 49 01 41 0c c2 0d e1 c1 e1 00 0f 28 01 ?@yI?A??????.?(?
10: e8 08 03 00 08 ff 00 00 00 00 00 00 00 00 f0 00 ???.?.........?.
20: 00 68 bd 80 00 00 1c 50 0c 60 ff ff 00 00 00 00 .h??..?P?`......
30: 41 00 00 00 00 0a 04 8f 00 00 00 12 82 7c 00 00 A....???...??|..
Что на оптике, что на меди - тишина (смотрелось внешним свичем), служебные сигналы на SFP типа TX_DISABLE устанавливались в нужные уровни, иначе бы не было линка по оптике. На входе MII в 88E1111 ничего нет, тишина, приходит только тактирование.
Что за чудо отечественной инженерной мысли?
Почему по меди нет разделительного транса? Ты уверен что 88E1111 в таких условиях вообще живой?
Тогда стоит начать с его проверки. Ну, либо 88E1111 таки труп.
Ньюфаг? Гугли MagJack - общее название разъемов RJ45 (8P8C) с встроенным трансом. Маркировка видна, неужели так сложно гугл спросить что это такое? Есть там внутри трансы.
>Что за чудо отечественной инженерной мысли?
Чего не знаю, того не знаю. Увидел на развале и не смог пройти мимо этой вкусноты - легкая FPGA + гигабитный Ethernet и по меди и по оптике.
> Ты уверен что 88E1111 в таких условиях вообще живой?
> Что на оптике, что на меди - тишина (смотрелось внешним свичем), служебные сигналы на SFP типа TX_DISABLE устанавливались в нужные уровни, иначе бы не было линка по оптике.
Там уже нет и всего один вариант - не выбор. Имен называть не могу, скажу только что стоит иногда по форумам гулять - можно много интересного и экзотичного выловить.
Своих останков мозгов хватает только на счетчик, да и то - копипастой.
Девборда - это "Cyclone V GX Starter Kit", "DE10-Standard" и "ETHERNET-HSMC Card".
>>41518 Даже трудно сказать что это. Максимум 4 IO есть и все, не разгонишься в отладке. Сдув LPC - еще может будет около 30 IO.
Ты либо вор, либо целенаправленно скупаешь краденое.
Рано или поздно отправишься на нары, ментам будет похуй на твои мотивы.
Я работал с этим чипом (вроде как кличут Аляской) - ее ставят почти на все борды Xilinx. По ойтуси ничего не писал, все заработало без пердолинга, просто настроил связку ядер pcs/pma-mac и слал данные в axi stream.
> слал данные в axi stream.
Было интересно запустить ВСТРОЕННЫЙ в phy генератор пакетов. Снаружи ничего не подавалось(только 25 МГц тактирование) и что либо подавать из данных нет смысла - тк входные данные игнорируются в этом режиме.
Оно не взлетело. Где мог накосячить?
Подавал питание, давал ресет, визуально убеждался что есть гигабитный линк по меди (SFP НЕ вставлялось) на железке и на внешнем свиче, менял страницу, завал в разных вариантах биты для запуска генератора пакетов и каждый раз в ответ тишина (и визуально, и по счетчикам фреймов на порту внешнего свича).
Сейчас уже не актуально, но немного интереса осталось - как это запустить. Диагностика кабеля работает, но логику до конца не раскурил, особенно с вычитанием 0x32 (не помню) и визуальной валидации результата по битам описаниям состояния, тк порою выдавал очень и очень забавные результаты на одном и том же кабеле.
Я немного динозавр и ленив.
Зачем ебаться с микробом, когда можно навесить какое-нибудь ядро типа jtag2AXI либо по бырому накидать генератор пакетов на верилоге. Этого вполне хватит для теста азернета.
Ш2С не задействовал вообще, у этого камня есть mdio mdc через которые он рулится со сторонв плисины.
А зачем тебе встроенный генератор?
> А зачем тебе встроенный генератор?
Склеив с
> Диагностика кабеля работает
Ответ прост - минимально возможная НЕХ для монтажеров - посмотреть кабель и посрать в сеть, а мы со стороны смотрим что происходит, до куда долетает + побочкой идет заведется не заведется гигабит на 100 метров натянутой как струны люминиевой святой пары с узлами и барашками, на пару с резкими заворотами об край бетонных плит или "где мой гигабит" на сраной говномыльнице довоенных времен со 100 мегабитными портами.
Но это все в прошлом, полностью сменил сферу деятельности, это осталось на случай "дело было вечером, делать было нечего"(с).
Да, это нужно было лично МНЕ для диагностики хронических случаев, а не говноуправляющему/начальнику/бригадиру или еще кому, когда даже сраная индикаторная отвертка одна на три бригады, а обжим чуть ли не отверткой делали. За одно и ПЛИС потыкать палочкой, но что-то не срасталось.
Это стандартная корка хилых, управляется через тикль консоль. Исходники думаю закрыты..
Это условное название, взяли "остроконечников" и "тупоконечников" из Путешествий Гулливера, одним произвольно присвоили один порядок бит, другим другой.
Я коряво задал вопрос.
Идем в педивикию
https://ru.wikipedia.org/wiki/Порядок_байтов
В статье пишут о прорядке байт, но для бит я так понимаю, все точно так же.
big-endian — большим концом An ... A0 т.е. для числа 1 An = 0, A1 = 1.
Почему в верилоге big endean записывается наоборот/ Вот пример для единички:
wire [0:7] big_endian;
assign big_endian = {1'b1, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0, 1'b0};
>big-endian — большим концом An ... A0 т.е. для числа 1 An = 0, A1 = 1
Во-первых, пофиксим:
>big-endian — большим концом An ... A0 т.е. для числа 1 An = 0, A0 = 1
Во-вторых, это little-endian, потому что наименьшему адресу (A0) соответствует младший разряд (1), а наибольшему адресу — (An) — старший (0).
Big-endian — это когда в меньший адрес (A0) идёт старший разряд (0), и в наибольшем адресе (An) оказывается млаший разряд (1).
Спасибо!
Например вот эта:
https://ru.aliexpress.com/item/Xilinx-Spartan6-XC6SLX16-FPGA-DDR3/32852431448.html?spm=a2g0v.search0204.3.62.69132ef9EHwrB5&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_318_319_317_10696_450_10084_10083_10618_452_5723515_535_534_533_5025915_10307_532_10301_5728315_204_10059_10884_323_10889_10887_326_100031_320_321_322_10103_448_449,searchweb201603_55,ppcSwitch_0_ppcChannel&algo_pvid=f3cfc776-e18e-4ca3-a0ba-e6b7f42dd5bc&algo_expid=f3cfc776-e18e-4ca3-a0ba-e6b7f42dd5bc-9
Лол, а я думал такие модули представляются компу оперативочкой и получают совместный доступ к данным.
Естественно пустые.
Если китаец спиздил девборду, то может он и sfp-модули спиздит?
Ну и нафиг мне эта девборда, если я простой ардуинщик? Че мне 10к девать некуда? Я плис только на картинках видел и в душе не ебу что вы на них делаете, разве что частотомер можно быстрый забацать, и все. Езернеты-хуернеты, НАХУЯ это мне? Да и вам наверняка тоже. Бабло девать некуда и руки занять нечем, видимо. Лучше шлюху снимите 3-4 раза на те деньги.
Если нет понимания зачем тебе это надо - пиздуй из треда. На всякий случай зарепортил довена.
В полумиллионниках норм шлюха стоит как раз 2.5-4k в час. За 5-6к можно снять вип-вариант, либо шлюху вместе одной-двумя ее подругами. За 1-2к можно снять грязную больную страшную шмару.
В ДСах цены другие.
Конструктор спутников в каком-то сраном НИИ при ГРУ отправил шведскому кадровому агенству своё резюме и уехал на сгуху на 14 лет строгача за разглашение гостайны (то есть своего места работы).
https://zona.media/news/2018/10/25/kravczov
Очевидно, помимо того что шлюха будет выглядеть топово (косметические процедуры + пластика), снимать ухоженную хату в приличном районе, еще предоставит доп. услуги на выбор клиента (прием/выдача золотого дождя, например)
>>42498
>6 лет
Повезло еще. Если бы картинки в вк репостил или грамм дикорастущего во дворе каннабиса сорвал, мог отъехать на все 15 лет.
Включено: кунилингус, анилингус мне (даме)
@
Классика, вагинал, впердол - строго по взаимной симпатии
@
Молодой человек, "анал" написано не для вас!
quartus 13
В гугле: quartus set top level
https://marsohod.org/11-blog/78-newproject
>Заходим в меню Project/Set As Top Level Entity. Все - готово.
>>42502
Ну нахер, я лучше
https://ru.aliexpress.com/item/ALTERA-Cyclone-IV-EP4CE6-FPGA-Development-Kit-Altera-EP4CE-NIOSII-FPGA-Board-and-USB-Blaster-downloader/32792622551.html?spm=a2g0v.search0104.3.1.37867430DZPUSj&ws_ab_test=searchweb0_0,searchweb201602_4_10065_10068_318_319_5730215_317_5728815_10696_10084_10083_451_10618_452_5723515_10307_532_10301_5728315_5729715_204_328_10059_10884_323_10889_10887_326_100031_320_321_322_10103-10889,searchweb201603_55,ppcSwitch_0&algo_expid=d482557d-f9b3-4b35-bd0d-caebd25ea8f1-0&algo_pvid=d482557d-f9b3-4b35-bd0d-caebd25ea8f1
куплю.
Спасибо
Почему RS-триггеры не запоминают состояние, а делают какое-то говно?
Что такое D триггер, и чому у него столько различных версий?
Что такое JK триггер?
https://www.youtube.com/user/jack0ov/videos
Залипаю на самые первые лекции и лабы. Особое внимание на лабы где проверяется почти что на практике. То же проверяю, но на реальном железе.
Хммм, интересно, спасибо
То есть, когда-то у тебя была потенция? У меня вот, например, не было её вообще. Уже лет пять пытаюсь выдавить хоть что-то.
мимоардуинщик
Погугли задачи, в которых применяется particle filter, и запили реализацию на плис. У particle filter как раз архитектура состоит из параллельных одинаковых вычислений для большого набора чуть-чуть различающихся входных данных, на архитектуру ПЛИС заебись должно лечь.
Туповат я для такого. Почитал на википедии постановку задачи и нихуя не понял. Плохо быть довеном не могущим в математику.
Лучшая реклама CHIPсов, какую я видел.
Какие из синтезируемых фич стоят того, чтобы изучить SystemVerilog, какая от них может быть польза?
Интерфейсы и енумы уже достаточная причина на него перейти
Если хочешь этим зарабатывать на жизнь, изучай, нехуй даже думать.
>У Зайлинкса лишь часть его подмножества является синтезируемой
Как и везде.
Ты с нуля изучаешь? Если да, то рекомендую сначала изучить простой Верилог, а уж потом как дополнение Систем.
Тут, кстати, один хмырь начал видосы пилить:
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
Уже пишу на верилоге зарабатываю на жизнь, понял ваши позиции.
Пока мысли такие:
1) изучать буду, так что не закидывайте говном за последующие вопросы
2) представляю, для чего на практике нужен енум — описывать конечные автоматы. Пока для этого хорошо заходил localparam, для каждого имени надо самому указывать соответствующую константу, зато ты мог контролировать её ширину и под неё писать остальную логику ширину регистров, с енумами это так же просто делать?
3) привык и в какой-то степени даже полюбил вивадовский редактор схем, для составления верхнего уровня иерархии самое то. Интерфейсы (стандартные наборы сигналов разной ширины и направления) между модулями (блоками) там есть. Что на нижнем уровне иерархии описывается посигнально, на верхнем автоматически пакуется в стандартные интерфейсы. Вы используете системверилог вместо редактора схем, вместе с редактором схем, куда именно?
Лол, что?
В подобных случаях функции применяют для вычисления констант, т.е. функции как бы отрабатывают до основной компиляции. Мне интересны случаи в которых функции используются непосредственно для синтеза схем. Ну т.е.
>>40262
>функции можно пихать практически куда угодно - в assign, initial, объявления
вот это вот всё.
>арифметический сдвиг влево и логический действуют одинаково
Они и должны действовать одинаково.
>В чём подвох?
Переполнение.
Что за странный вопрос? Везде, на что хватит фантазии.
Например, функцией можно сделать подсчет бита четности, дешифратор для семисегментника и прочее.
Разумеется, делать сложную чисто комбинационную логику не целесообразно. Поэтому, если я правильно тебя понял, какую-то сложную логику в таких функциях не встретишь.
Ну и да, из перечисленного только запихивание функции в assign может привести к синтезу соответствующей комбинационной логики.
>непосредственно для синтеза схем.
Все-таки, по моему, в таком разделении нет смысла. Даже вычисление разрядности приводит к синтезу довольно таки непосредственно, а можно еще про циклы вспомнить.
>>45067
В стандарте об этом вот что написано:
>The left shift operators, << and <<<, shall shift their left operand to the left by the number by the number of bit positions given by the right operand. In both cases, the vacated bit positions shall be filled with zeroes.
По моему все однозначно, отличий нет, даже приоритет одинаковый.
Зачем нужен оператор вычитания, когда вычитание можно сделать без него? Плодить сущности?
А, ты про сдвиг, а не функции. Тогда не знаю, наверное для однообразия.
Затем что если делать вычитание на сложении, нужно будет вручную переводить число в отрицательный вид, ну т.е. совершать доп. действия.
А тут же наоборот, выполняет ту же задачу, а сама на один уголок длиннее.
По той же причине у меня бомбит от того что блокирующее присвоение имеет вид =, а неблокирующее <=. Хотя должно быть на оборот, т.к. неблокирующее присвоение применяется чаще, а значит форма записи должна быть короче. Типа как у азбуки Морзе, наиболее часто встречающиеся буквы имеют более короткий код.
>?
У регистров заданной длины есть ограниченный диапазон чисел, которые они могут хранить. Надеюсь, ты в курсе, что сдвиг влево на один бит эквивалентен умножению на два. Если на месте знака при сдвиге отрицательного числа влево у тебя оказывается ноль вместо единицы, значит, ты попытался выполнить действие, результат которого не помещается в регистр имющегося размера, т.е. происходит переполнение.
Пришло, не кидалово. Пока только светодиодиком помигал, но все детектиться верно
Можно внешний серализатор, можно встроенный трансивер. Внутренняя шина обычно 32 ил 64бита . ЭТО НОМА
Вообще, 100 мегагерц это не дохера... дохера ничинаеться с 300
В самой простой микросхеме физического уровня PHY PCIe, например (т.е. грубо говоря сериализаторе), частота входных данных может быть 250 МГц при разрядности данных 8 бит, с учетом того, что в линию PCIe x1 данные идут с кодированием 8b/10b это дает нам результирующую пропускную способность линии 2,5 Гбит/с. Это я к чему - к тому, что на 10Гбит Ethernet наверняка опорная частота повыше будет.
https://habr.com/post/234369/
У ПЛИС есть высокоскоростные трансиверы (у Xilinx это GTX, GTH). Оптические модули подключаются к ним. А внутри к ним данные идут по шине 64 бита, но это похуй уже.
Открой схему любой отладочной платы с этими трансиверами и посмотри как там сделано.
>А если так, то по плате тянут дорожки на которых скорости 10Гб\с?
Ну да, именно так. Тябя же не смущают скорости SATA 3 или HDMI?
Что-то Квартус не компилит мой мультиплексор. Пытаюсь вычислить разрядность адресного входа через функцию. В чём подвох?
Error (10192): Verilog HDL Defparam Statement error at Test.v(50): value for parameter "N" must be constant expression
module MX #(parameter G)(output Y, input [N-1:0]A, input [G-1:0]X);
function integer clogb2(input N);
integer i;
for (i = 0; 2 i < N; i = i + 1)
clogb2 = i + 1;
endfunction
localparam N = clogb2(G);
wire [2N-1:0]Temp = X >> A;
assign Y = Temp[0];
endmodule
блядская табуляция
module MX #(parameter G)(output Y, input [N-1:0]A, input [G-1:0]X);
function integer clogb2(input N);
integer i;
for (i = 0; 2 i < N; i = i + 1)
clogb2 = i + 1;
endfunction
localparam N = clogb2(G);
wire [2N-1:0]Temp = X >> A;
assign Y = Temp[0];
endmodule
>input N
Нужно input [31:0] N. Вместо [31:0] можно integer, но вроде как не будет работать в древних версиях квартуса, для которых самописная функция логарифма имеет какой-то смысл.
Сработало.
Странно, конечно, с одной стороны указывать разрядность нужно, с другой откуда знать что у параметра разрядность 32, ведь это зависит от компилятора.
Да сказать он должен был о несовпадении разрядности, а не о том что в параметр не может быть переменной.
Не надо делать порты хитровыебанно параметризируемыми, они для этого не предназначены, у них задача — максимально друг к другу подходить без мозгоебли и неявных преобразований типов и разрядностей.
Вынеси N в список параметров (вместе с G), и вычисляй его на более высоком уровне иерархии, где он у тебя и ширину адреса мультиплексора будет задавать, и ширину управляющей шины (которую ты на вход адреса вешаешь).
Если ты из верхнего уровня задаёшь G, то там же ты можешь и N вычислить и передать в виде параметра, а заодно его использовать, чтобы параметризировать соседние модули.
Как я тебе логарифм вилкой вне функции вычислять буду? Это же не просто + - * /, или взятие степени, тут цикл строить нужно.
Про системную функцию $clog2() я знаю, мне интересно как с пользовательскими функциями работать.
>Если ты из верхнего уровня задаёшь G, то там же ты можешь и N вычислить и передать в виде параметра
Тут принцип инкапсуляции нарушается, модуль сам должен делать необходимые вычисления. Пользователь модуля мультиплексора не обязан знать его внутреннюю кухню, он прочитал в инструкции, что надо задавать количество входов - он их и задаёт.
>Как я тебе логарифм вилкой вне функции вычислять буду?
А не надо его вычислять в описании интерфейса.
>Пользователь модуля мультиплексора не обязан знать его внутреннюю кухню, он прочитал в инструкции, что надо задавать количество входов - он их и задаёт.
Алё, это не "внутренняя кухня", это пучок проводов, который торчит из модуля НАРУЖУ. Количество проводов в пучке пользователь должен знать, чтобы приколхозить к нему другой пучок проводов из другого модуля.
Это как если бы у тебя функция принимала аргумент в виде указателя на void, а во что он кастуется внутри — uint8 или uint32 -- ты бы не знал, потому что нехуй лезть во внутреннюю кухню.
>А не надо его вычислять в описании интерфейса.
Ну так скажи, как вычислить логарифм без функции?
>это пучок проводов, который торчит из модуля НАРУЖУ. Количество проводов в пучке пользователь должен знать
Количество проводов в пучке пользователь задаёт сам. Ты предлагаешь, чтобы N и G он задавал сам, при этом N и G взаимосвязаны: G = 2N. А если он, в силу своей тупизны, их укажет не в такой зависимости? Всё поломается. Вот потому он должен задавать только N, или только G, остальное вычисляется автоматически. Ну и думаю понятно, что данный мультиплексор только для примера, реальная ситуация может быть намного сложнее.
Если пользователь тупой, он сломает твой мультиплексор и при полностью соответствующих друг другу N и G. Например, при G=8 он подаст на вход выбор адреса 8, который не влезет в шину ширины N (который пользователю неизвестен), но не просто не влезет, а выдаст наружу нулевой канал, хотя пользователь, возможно, ожидал, что при невалидных входах выходы будут неактивные. В результате какой-нибудь спутник в очередной раз утопнет.
>Ну и думаю понятно, что данный мультиплексор только для примера, реальная ситуация может быть намного сложнее.
В этом и проблема, ты выдумываешь на пустом месте юзкейс, который, как тебе кажется, имеет отношение к реальности, а он его нихуя не имеет. К реальности, наоборот, имеет отношение понимать, какой ширины у тебя ёбаный вход, какие сигналы он ожидает, и какие сигналы на него выдаёт присоединённый к нему источник.
>Если пользователь тупой, он сломает твой мультиплексор и при полностью соответствующих друг другу N и G.
А это уже его проблемы. Я со своей стороны сделал всё чтобы ему облегчить жизнь.
>который пользователю неизвестен
Инструкция на такой случай есть.
>В этом и проблема, ты выдумываешь на пустом месте
Я до тебя пытаюсь донести мысль, что в реальном модуле может быть десяток разных параметров, которые увязаны друг с другом. И перекладывать на пользователя внутреннюю кухню по их вычислению это неправильно, он не должен и не может этого всего знать. Смотри те же IP-ядра.
Ну и как же вычислить правильно логарифм ты так и не сказал.
>А это уже его проблемы.
>Инструкция на такой случай есть.
Ты каргокультист просто. Думаешь, что если сделать что-то похожее на самолёт, то оно привезёт продукты. Объясни мне такую хуйню: в одном случае пользователю в инструкции напишут "задай параметром N ширину порта адреса размером не меньше clog2(G)", в другом "шина, которая подключается к порту адреса, должна иметь ширину clog2(G), иначе возможны ложные срабатывания при выходе за диапазон или при недостаточной ширине шины". Почему тебе кажется, что в одном случае пользователь освобождён от вычисления clog2(G), а в другом — нет?
>Ну и как же вычислить правильно логарифм ты так и не сказал.
Я нигде не говорил, что логарифм надо вычислять не функцией. Я говорил, что его не надо вычислять в объявлении порта, а что инструменты отказываются это делать — просто приятный бонус для защиты от выстрела в ногу.
>Смотри те же IP-ядра.
Ни в одном из использованных мной ядер ширина внешних портов не пересчитывалась внутренними функциями.
На 150 мгц заведется хоты бы?
>Почему тебе кажется, что в одном случае пользователь освобождён от вычисления clog2(G), а в другом — нет?
Я тебе в третий раз объясняю, речь не про данный конкретный случай. Это упрощённый пример для наглядности. Ты можешь на проблему шире посмотреть?
>Я говорил, что его не надо вычислять в объявлении порта
А где я его вычислял в объявлении порта? Я как раз это функцией делал.
>Ни в одном из использованных мной ядер ширина внешних портов не пересчитывалась внутренними функциями.
Во-первых, откуда знаешь? Все коммерческие шифрованные. Смотрел коды опенсорсных?
Во-вторых, а чем они пересчитываются?
Сравнение производится 2-х входовым элементом исключающее ИЛИ. Таких элементов нужно 1024. Потом выходы этих элементов надо объединить по И. Т.е элемент И у нас будет на 1024 входа. Естественно он будет каскадироваться из 4-х входовых, т.к. большинство ячеек в ПЛИС 4-х входовые. Предположим, что элементы выстроятся последовательно, тогда один вход занят выходом предыдущего элемента И, на 3 других можно подавать выходы с исключающих ИЛИ. У нас их 1024 шт. 1024/3 == 342. Получаем каскад из 342-ух элементов И. Умножаем это число на скорость работы элемента - получаем время срабатывания компаратора, и это без учёта задержак на интерконекции.
Может лучше как-то так? https://pastebin.com/aYTUTBWH Хотя оно и займет вдвое больше ресурсов, но будет в 50 раз быстрее.
Или я что-то не понимаю?
Да как не пиши, архитектуру ПЛИС не обманешь.
>А где я его вычислял в объявлении порта? Я как раз это функцией делал.
А, действительно, ты предложил сделать ещё смешнее.
>Я тебе в третий раз объясняю, речь не про данный конкретный случай. Это упрощённый пример для наглядности. Ты можешь на проблему шире посмотреть?
Я тебе уже говорил — тебе только кажется в силу отсутствия опыта разработки, что этот пример отражает какой-то общий случай. Он нихуя не отражает.
>Во-первых, откуда знаешь? Все коммерческие шифрованные.
Потому что порты предназначены для того, чтобы к ним что-то подключать. Поэтому они снаружи. Поэтому про них всё видно и всё описано.
>Во-вторых, а чем они пересчитываются?
Верхним уровнем иерархии, где внешние порты используются для подключения модулей друг к другу.
module xynta # (parameter G) (input [G-1:0] a, output b);
localparam N = clog2(G);
wire [N-1:0] channel_select;
mux_control # (.N(N)) mux_control_inst (.ch_sel(channel_select));
mux # (.N(N), .G(G)) mux_inst (.in_ch(a), .out_ch(b), .ch_sel(channel_select));
endmodule
Здесь один раз считается N, и им задаются и ширина управляющего порта мультиплексора, и ширина порта контроллера мультиплексора, и ширина шины, которой они соединяются. Посколько они все должны друг другу подходить, то параметр в любом случае должен быть рассчитан на верхнем уровне.
>Получаем каскад из 342-ух элементов И
Падажжи, зачем их лепить последовательно? Надо дерево строить. Даже из двухвходовых И глубина будет всего 10, а из четырехвходовых - 5, если не ошибаюсь.
Короче у меня вышло порядка 10 уровней логики. Пиздос, придется городить конвейер.
>2) представляю,
В нумераторах так же можно самому хардкодить значения.
Алсо корректно работает next_state <= cur_state + 1, если уж очень хочется.
Алсо отображается по-человечески на временной диаграмме в виде, собсно, слов, а не циферок.
Писать под FSM состояния с разными разрядностями - моветон.
>3) привык
Вивада не даст вставить модуль в блок дизайн, если он написан на SV. Только оборачивать в обычный верилог.
Интерфейсы в SV отличаются от того, что ты описываешь на уровне цепей. В нём можно задавать модпорты (слейв, мастер, и пр.), писать свои таски\функции для описания транзакций, варификации и пр. А дальше текстом просто в модулях писать, что вот он использует интерфейс такой-то и в логике работать с отдельными сигналами через interf.signal. Если в интерфейс добавляешь новые цепи, то это легко делается один раз в логике описания интерфейса, без ебли с дополнительными подключениями.
Ну это как пример. Строить будет компилятор, в Квартусе есть TimeQuest, который тебе задержки по всем путям расписывает. Он же и конечную частоту называет на которой проект заведётся.
>Я тебе уже говорил — тебе только кажется в силу отсутствия опыта разработки, что этот пример отражает какой-то общий случай. Он нихуя не отражает.
Я с тобой заебался, ты какой-то непробиваемый. Я тебе про Фому, ты мне пр Ерёму.
Твои познания мемов из области погромирования на жаве здесь не помогут.
Почему-то думал, что счетчик работает именно так, но оказалось, что нихуя подобного.
Но я и так использую только неблокирующие присваивания.
https://marsohod.org/verilog/158-verilogpictcnt
Мой счетчик ведет себя так же, как и у марсоходовцев на осциллограмах: только отпускаю ресет, по фронту первого же клока на выходе счетчика имеем новое значение. Я почему-то думал, что новое значение будет с некоторой задержкой..
Или это что-то типа нулевой задержки?
>Я почему-то думал, что новое значение будет с некоторой задержкой..
Тебе надо понимать, что за железо ты написал. По фронту счётчик умеет только класть в себя "текущее значение + 1", чтобы положить в себя 0, он должен где-то взять 0-1, где он его возьмёт?
Если во время резета ты наполнишь счётчик не нулями, а единицами, то после первого клока он у тебя переполнится и выдаст как раз ноль.
Но я не могу понять, какого фига по фронту первого же клока на выходе появляется единица. Разве d-триггер не должен вносить задержку в 1 такт?
Если я поставлю последовательно 2 триггера, я же получу задержку. Почему с одним триггером ее нет... Пиздец я тупой.
По фронту клока на выходе у тебя появляется то, что нахоидтся на входе. Что у тебя находится на входе?
На входе единица. Но она же не может перейти на выход мгновенно? Почему тогда в симуляции получается именно так?
И объясни тогда почему с цепочкой триггеров получается задержка а с одним триггером ее нет(вообще 0)?
В реальном устройстве задержка разумеется есть, но она может быть очень мала. Одна пикосекунда тебя устроит?
Тебе рановато браться за верилог и ПЛИС. Изучай основы цифровой схемотехники. Начиная со схем элементов И-НЕ и ИЛИ-НЕ.
При цепочке триггеров именно из-за этой пикосекунды расхождения с фронтом клока и получается отставание данных на 1 такт. Похоже повторять теорию надо тебе.
Цепочка триггеров - это сдвиговый регистр?
Ты понимаешь разницу между триггером со статическим управлением и с динамическим?
Не пизди, маня, и не хами тем, кто тратит своё время, пытаясь образовывать тебя забесплатно. Второй триггер в момент клока видит на входе ноль потому что единица с первого не успевает до него дойти по проводу, там время распространения сигнала — порядка наносекунд.
Сорян, если задел тебя. Но я именно так и понимал:
Первый триггер дает некоторую задержку и данные с его выхода поступают на вход второго триггера позже, чем приходит клок, из-за этого второй триггер захватывает данные которые были в предыдущем состоянии на выходе первого триггера. Но почему симулятор вообще не показывает эту задержку, она же есть, как мы вместе выяснили и она влияет на остальную логику!
>>47529
https://youtu.be/i1_VdJOMStE
https://youtu.be/JY7rmZoaq8Y
https://youtu.be/uW8DPE6TRxM
https://youtu.be/PdfDkC3Jbpk
Смотреть лучше именно в таком порядке.
Это называется "логическая симуляция". Условно принимается, что триггеры в момент прихода клока берут то, что висело у них на входе ДО фронта, и выдают это мгновенно на выходе ПОСЛЕ фронта. Так быстрее и не нужно знать физические параметры реальной схемы.
Берешь nios или microblaze, прицепляешь к ним таймер и заводишь прерывание от него. Далее пишешь код как для любой ардуины.
Ну да, зачем для такого использовать ОС? В ардуинах тоже ОС обычно не используется. Делай все на прерываниях, для частот около нескольких килогерц явно никаких сложностей не возникнет.
Что не так? У nios и microblaze набор команд полный по Тьюрингу, значит они могут посчитать любую функцию, вопрос лишь в скорости. Причем о требуемой частоте меандра ничего не было написано.
Куда уж "чище", это же не zynq или cyclone v со встроенным армом.
Ну ладно, тогда еще придерусь к "случайной функции". Такого не бывает, может быть случайный (псевдослучайный) процесс или последовательность.
Возьми цифровой фильтр и подай на него М-последовательность, будет тебе на выходе псевдослучайная последовательность с заданными свойствами.
>Очевидно же, что я говорил о псевдослучайной ф-ии.
В литературе по радиотехническим сигналам этот термин не используют. И ты тоже не используй.
>Как "модулировать" ей генератор?
Фаза - это интеграл от частоты. Соответственно можно просто интегрировать, хотя это будет не оптимально по ресурсам.
"a6736715921
Ты делаешь абсолютно бессмысленную работу, снимая эту хрень. Намного проще и быстрее прочитать учебник.
А самое главное, ты заебал уже рекламировать свои видосики на харкаче."
a6736715921, плис.
Вкатываюс
Девчонка-десятиклассница пытается в ПЛИС, но порашеры исходятся но говно просто https://2ch.hk/po/res/30958721.html (М)
С кем же приходится сидеть на одной борде, пиздец просто.
Ебать там успешных сваливших из рашки плисоёбов полон тред, и срутся за хуйню какую-то даже не по теме треда.
(Автор этого поста был предупрежден.)
Ой блядь, иди нахуй, мочератор.
Круто, что в какой-то деревне изучают мипс процы. У меня даже в институте такой хуйни не было. (Был сразу 8086, но на таком уровне, что пизда)
Плисотролль, забирай лолю к себе. Подмани её россыпью циклонов, потом дашь потрогать свой стратикс.
Мда, вечно все через жопу. Но ведь в рахе как то их продают? Или это не оф дистрибьюторы?особенно с их то охуевшей наценкой
Частные посредники - это типа боксбери и шопотамы, или вообще чувак-физлицо, с которым напрямую договариваешься?
>в рахе как то их продают?
Так прямого запрета на ввоз и нет. Но есть куча нюансов что американский поставщик должен соблюсти ограничение на поставку определенных технологий определенным недостранам, так же как и на таможне рф нужно все грамотно оформить.
>>49164
>боксбери и шопотамы
С этими вообще все плохо - там при заказе ты сам заполняешь наименования товаров, ссылку на магазин и посредник по этим данным потом сам все растомаживает. И наименование gift electronics они не примут, а ко всему остальному если это не потребительская техника будут вопросы.
>чувак-физлицо
This. Самый беспалевный способ пересылки это обычный мелкий пакет. Их проверяют очень выборочно, если конечно они сильно не выделяются по заявленной стоимости, весу или на рентгене.
Ну что, рассказывай, какие идеи есть на эту борду?
Я бы тоже может заказал, но уж очень мало интерфейсов у нее.
10GE - ок, круто. Но для домашнего использования нет задач.
PCI-E - збс, но на плате нет оперативки, это сильно ограничивает применимость.
Вижу только одно применение для этой платы - пилить на ней какой-то майнер или другую числодробилку.
Самое обидное, что нет видео-выхода и не поигратьсЯ с обработкой изображений.
Я давно ищу с кем бы объединиться и вместе что-то пилить, но здесь народ слишком угрюмый как автор учебника по цифровой схемотехнике, а ИРЛ нет людей со схожими интересами.
Короче кидай фейкопочту, либо пиши мне:
Я просто на стену уже лезу от того, что не могу найти себе задачу, может вместе что придумаем?
>С этими вообще все плохо
Их требования зависят от способа доставки. Если отправлять обычной почтой, то можно писать без подробностей. Я без проблем заказывал через них некоторые микросхемы, в том числе и ПЛИС. Не стратиксы конечно, но даже в MAX 10 логических элементов в два раза больше чем в лучших отечественных ПЛИС.
>>50931
> нет видео-выхода
Припаяй сам, делов то. Это как раз несложно. Хуже другое — там нет FMC, только гребенка.
>не могу найти себе задачу
Радиоприемник можно сделать для сигналов с большой базой. Да вообще много чего.
Припаять выдеовыход - это же колхозинг будет. Не говорю уже про hdmi.
FMC нет, еще один минус. Но готовые fmc-мезонины стоят сотни нефти, дороже этой борды.
Алсо, на али попадались такие же кинтексы как на этой борде по 60 баксов за камень. Хоть с кем-то объединяйся и разводи плату под свои нужды.
>Радиоприемник можно сделать для сигналов с большой базой.
SMA разъема нет. Опять колхозинг получается..
>колхозинг
Ты ноешь как...
В самом деле, там гребенка есть, в чем проблема втыкать туда не слишком быстрые АЦП/ЦАП? Недостаток только в том, что крепежных отверстий толком не предусмотрено.
>SMA разъема нет.
Даже если он там будет, что толку? В таких платах они обычно только для входа/выхода тактового сигнала.
>Хоть с кем-то объединяйся и разводи плату под свои нужды.
Для начала необходимо эти нужды как-то оформить. Сам же писал что идей нет.
И почему именно кинтекс? Можно взять 10M50 в корпусе TQFP и развести под свои хотелки двухслойную плату. Пусть 10M50 в 10 меньше чем XC7K420T, но этого вполне может хватить.
Ну давай пофантазируем.
Почему зайлинкс а не интел это вопрос слишком провокационный. Если доступна жирная плисина, по сладкой цене, почему бы не использовать?
Что я хотел бы видеть в борде:
PCI-E
1GE не менее 2х штук.
SFP+ пару штук, просто чтоб был
DDR3 1G
HDMI in
HDMI out
SATA
Перестань грубить. Что в моих хотелках охуевшего? Половина этих интерфейсов не требует какой-либо обвязки, только разъемы, которые, к слову, можно устанавливать по желанию.
Компоненты можно покупать и устанавливать по мере потребности.
Кое-как сделал деление. Делить нужно 16..22 разрядное число на 8..12 разрядное один раз в несколько миллисекунд. Ответ нужно получить за время не более около сотни тактов. Как можно оптимизировать это по занимаемым ресурсам, при этом сохранив прежнюю тактовую частоту?
DSP48
Глянь на high radix division
http://www.jucs.org/jucs_1_1/high_radix_division_with/Fenwick_P.pdf
Обычно есть в корках
>Глянь на high radix division
Посмотрел, по занимаемым ресурсам оно должно быть хуже. Или я что-то не понял.
>Обычно есть в корках
Для флексов, на которых это тоже должно будет работать, есть только lpm_divide. Какой там используется метод я не разбирался, но по ресурсам оно не очень.
Переписал вот так. https://pastebin.com/uz1ELPcg По тактовой частоте почти не ухудшилось, зато по ресурсам стало существенно лучше.
Зачем тебе такая точность?
Измерять резисторы с такой точностью у тебя хотябы есть чем? А то цену на такое оборудование ты ебать будешь еще больше.
Можно из параллельных резисторов разного номинала набрать, типа резистор 10ком и параллельно ему подстроечник на 10ком
Писал бы ты на верилоге, может чем-нибудь помог. А так даже толком не понятно что именно ты сделал. Но вообще-то, для практических целей, нет смысла делать простой частотомер на этих psoc или плис.
>упрямый бот
Да, редкостный уебок.
Термостатирование еще не забудь, а то у обычных резисторов ТКС около 100 ppm/градус.
>На чём можно дёшево напрограммить резисторных матриц? Я ебал цены на резисторы с точностью 0,002%.
ЦАП сделать хочешь? Забудь, R-2R от 8 бит с норм точностью реально получить только в интегральном исполнении, где ТКЛР и ТКС резисторов на кристалле равны.
>>51625
ТКС хорошего подстроечника лежит в порядках десятков-сотен ppm. А для такой задачи нужен ТКС в районе десятых долей ppm.
>>51627
Это С2-29 или PTF56 какие нибудь? Тогда да. Так то есть резисторы с ТКС в десятые доли ppm, и долговременной стабильностью в единицы ppm, но вот их стоимость...
Не проще ли взять интегральный ЦАП за 1000 рублей?
Пиши лучше на верилоге. Пока могу сделать только пару замечаний.
1. Выход комбинационной логики не следует подключать к тактовому входу в любом случае. Из-за гонок сигналов и всего такого. Выходы твоих делителей вполне могли быть образованы комбинационной логикой.
2. Для тактового сигнала в ПЛИС используется отдельная сеть, имеющая свои ограничения. Поэтому добавление лишних тактовых сигналов, как правило, создает некоторую избыточность. Ты, конечно, уточни, как в этих psoc, но не думаю что сильно по другому.
Так что лучше сделай все по возможности синхронным, включая сброс.
module Test(input [3:0]X, output reg [2:0]Y);
integer i;
always @*
begin
Y = 0;
for(i = 0; i < 4; i = i + 1)
if(!X) Y = Y + 1'd1;
end
endmodule
Как вообще эта дичь работает?
Как можно присваивать комбинационной схеме начальное значение (Y = 0;)? Почему if без ветви else? В этом же случае компилятор для комб. схем будет ставить защёлки, а их нет. Почему, если убрать Y = 0; эти защёлки появляются?
>Как можно присваивать комбинационной схеме начальное значение (Y = 0;)?
В стандарте верилога нет такого понятия как комбинационная схема, это просто переменные с точки зрения стандарта.
Если не касаться синтеза, то у тебя при изменении входных сигналов мгновенно производятся какие-то вычисления и результат остается в Y. Для синтеза считай что окончательное присвоение будет в самом конце always.
>Почему if без ветви else? В этом же случае компилятор для комб. схем будет ставить защёлки, а их нет. Почему, если убрать Y = 0; эти защёлки появляются?
Разберись как оно работает не касаясь синтеза, только при функциональной симуляции. Разберись, в каком случае модуль будет обладать памятью, а в каком нет.
>Разберись, в каком случае модуль будет обладать памятью, а в каком нет.
Так я об этом и спрашиваю. Если бы разобрался не спрашивал бы.
Ходит слушек что "always @*" - это комбинационная схема, тк задействованы все сигналы, если явно указано указан сигнал или сигналЫ? с фронтом - это уже схема с памятью.
always @* можно превратить в схему с памятью, простейший способ — использовать if без else или case без default.
>>51914
>Почему if без ветви else?
>Почему, если убрать Y = 0; эти защёлки появляются?
Потому что этот Y = 0; и есть своего рода else. Код описывает такую логику:
if (!X) Y = 0+1'd1; else Y=0;
Не знаю, как тебе объяснить не пересказывая целую главу из учебника. Как уже советовал, для начала абстрагируйся от схем и прочего. Считай что описываешь только поведение схемы, собственно так оно и есть, до какой-то степени.
Попробую перечислить основные моменты из учебника, которые ты мог пропустить.
1. Есть переменные двух типов wire и reg. Переменным wire что-то присваивать можно только через assign или подсоединяя к порту инстанса модуля. Переменным типа reg можно делать присвоение в блоках always. Для reg есть блокирующие и не блокирующие присовения. Разница в том, что блокирующие присваивания меняют переменную сразу, а неблокирующие на выходе из блока always.
1.1. Если не указывать задержки (в верилоге есть такое, но это не синтезируется), то любые присваивания выполняются мгновенно, без задержек. То есть, оно хоть и выполняется последовательно, но выполняется без задержек.
2. always срабатывает после изменения сигналов, указанных в списке чувствительности. Это важно понять. Не в процессе изменения, а после. Если в списке чувствительности указана звездочка, то срабатывать оно будет при изменении любого сигнала. Заметь, не постоянно, а при изменении, это тоже важно, особенно в тестбенчах.
Если все это понятно, можно попробовать разобраться что происходит у тебя в модуле.
1) Когда есть Y = 0;
Все просто, при изменении X срабатывает блок always и все что там внутри выполняется мгновенно, ведь задержки ты не указал (впрочем, они все равно не синтезируются). Переменной Y присваивается 0, а потом в зависимости от X либо прибавляется 4 раза по 1, либо не прибавляется. Теперь попробуем прикинуть как оно будет реагировать на разные входные сигналы.
а) X изменился на 0. Присвоили 0, и прибавили 4 раза по 1, получилось 4. Причем получилось мгновенно, сразу после изменения X.
б) X изменился на 1. Присвоили 0, и все, получилось 0. Все произошло так же мгновенно.
У модуля в этом случае нет памяти, потому что предыдущие состояния не влияют на выход. Соответственно защелки не синтезируются.
2) Когда нет Y = 0;
Тут у тебя некоторая ошибка. В верилоге не инициализированные переменные имеют неопределенное состояние. Нужно как-то так:
>module Test(input [3:0]X, output reg [2:0]Y = 0);
а) X изменился на 0. Прибавили к Y 4 раза по 1.
б) X изменился на 1. Не меняется ничего.
Получается что (а) происходит по фронту сигнала X. Это и есть память.
Не знаю, как тебе объяснить не пересказывая целую главу из учебника. Как уже советовал, для начала абстрагируйся от схем и прочего. Считай что описываешь только поведение схемы, собственно так оно и есть, до какой-то степени.
Попробую перечислить основные моменты из учебника, которые ты мог пропустить.
1. Есть переменные двух типов wire и reg. Переменным wire что-то присваивать можно только через assign или подсоединяя к порту инстанса модуля. Переменным типа reg можно делать присвоение в блоках always. Для reg есть блокирующие и не блокирующие присовения. Разница в том, что блокирующие присваивания меняют переменную сразу, а неблокирующие на выходе из блока always.
1.1. Если не указывать задержки (в верилоге есть такое, но это не синтезируется), то любые присваивания выполняются мгновенно, без задержек. То есть, оно хоть и выполняется последовательно, но выполняется без задержек.
2. always срабатывает после изменения сигналов, указанных в списке чувствительности. Это важно понять. Не в процессе изменения, а после. Если в списке чувствительности указана звездочка, то срабатывать оно будет при изменении любого сигнала. Заметь, не постоянно, а при изменении, это тоже важно, особенно в тестбенчах.
Если все это понятно, можно попробовать разобраться что происходит у тебя в модуле.
1) Когда есть Y = 0;
Все просто, при изменении X срабатывает блок always и все что там внутри выполняется мгновенно, ведь задержки ты не указал (впрочем, они все равно не синтезируются). Переменной Y присваивается 0, а потом в зависимости от X либо прибавляется 4 раза по 1, либо не прибавляется. Теперь попробуем прикинуть как оно будет реагировать на разные входные сигналы.
а) X изменился на 0. Присвоили 0, и прибавили 4 раза по 1, получилось 4. Причем получилось мгновенно, сразу после изменения X.
б) X изменился на 1. Присвоили 0, и все, получилось 0. Все произошло так же мгновенно.
У модуля в этом случае нет памяти, потому что предыдущие состояния не влияют на выход. Соответственно защелки не синтезируются.
2) Когда нет Y = 0;
Тут у тебя некоторая ошибка. В верилоге не инициализированные переменные имеют неопределенное состояние. Нужно как-то так:
>module Test(input [3:0]X, output reg [2:0]Y = 0);
а) X изменился на 0. Прибавили к Y 4 раза по 1.
б) X изменился на 1. Не меняется ничего.
Получается что (а) происходит по фронту сигнала X. Это и есть память.
>а) X изменился на 0. Прибавили к Y 4 раза по 1.
Немного добавлю, а то может не все понятно будет.
Если в начале Y был 0, то по первому спаду X, Y изменится на 4. А по второму опять на 0 (переполнение).
Это то и ежу понятно.
>>52007
>always @* можно превратить в схему с памятью, простейший способ — использовать if без else или case без default.
Ну такая себе память. Памятью её можно назвать только формально. Скорее это способ компилятора разрешить ситуацию отсутствия ветви в условии. Эти защёлки даже синтезируются на комб. логике. Надёжно такие схемы работать не будут.
> Код описывает такую логику: >if (!X) Y = 0+1'd1; else Y=0;
Да вот не совсем. В этом случае, при Х == 1 весь Y обнулился бы. А он хранит своё значение, до тех пор пока Х не будет равно 0.
Кстати да, ошибочка у меня в коде, должно быть так:
if(!X) Y = Y + 1'd1;
>>52008
>б) X изменился на 1
Х то многоразрядный, у меня ошибочка в коде, индекс у Х должен меняется в цикле:
if(!X) Y = Y + 1'd1;
Схема подсчитывает количество нулей Х.
Похоже при изучении всего этого ты пропустил что-то важное, а вот что — х.з.
Попробуй все же абстрагироваться от триггеров и схем. Тем более что верилог не для синтеза первоначально разрабатывался, а для моделирования. Можешь попробовать взять моделсим и посмотреть там в режиме отладки, как этот цикл выполняется по шагам.
>Ну такая себе память. Памятью её можно назвать только формально.
Любой триггер обладает памятью, на то он и триггер.
>Эти защёлки даже синтезируются на комб. логике. Надёжно такие схемы работать не будут.
Если для ПЛИС, то да. Но простейший асинхронный RS-триггер сам по себе вполне работоспособен.
>Да вот не совсем. В этом случае, при Х == 1 весь Y обнулился бы.
Я описал только первую итерацию, если расписать их все, то будет так:
Y = if (!X1) Y=0+1; else Y=0;
Y = if (!X2) Y=Y+1; else Y=Y;
Y = if (!X3) Y=Y+1; else Y=Y;
Y = if (!X4) Y=Y+1; else Y=Y;
То есть для любого ифа неявно существует элс, и все присваиваемые значения определены в текущем проходе цикла и не зависят от значений в предыдущий момент времени.
Если мы убираем Y=0, то присваивания начинают зависеть от того, что осталось в Y с прошлого раза, и тут уже нужна память.
Сорян, вот так оно должно выглядеть:
if (!X0) Y=0+1; else Y=0;
if (!X1) Y=Y+1; else Y=Y;
if (!X2) Y=Y+1; else Y=Y;
if (!X3) Y=Y+1; else Y=Y;
Поскольку если в Y что-то и было, то оно первым делом перезаписывается к хуям на 0 либо на 0+1, то результат зависит исключительно от X и может быть представлен в виде комбинационной логической функции от X.
>Любой триггер обладает памятью, на то он и триггер.
Есть триггер, как законченный функциональный узел, а есть триггерная схема, это когда в комб. логике наделали обратных связей. Да, триггер тоже можно рассматривать как комб. логику с обратными связями, но он проверен на отсутсвие зависаний, подогнан и скомпонован так чтобы не сбоить.
>Если для ПЛИС, то да.
Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов.
>>52023
>>52025
>if (!X1) Y=Y+1; else Y=Y;
else Y=Y;
Тут как бы тоже память требуется.
Ладно, посижу по думаю.
>Тут как бы тоже память требуется
Нет. Память требуется, чтобы хранить состояние, установленное в предыдущем событии (предшествующим по времени вызове блока @(*) ). Если мы имеем дело только с состояниями, создаваемыми в текущем событии, то ты никакую память на плисине для их хранения не выделяешь, ты просто описываешь в несколько действий, как у тебя комбинационные логические функции вычисляются. Чисто для удобства написания кода.
>Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов.
Как вариант — код, описывающий асинхронные триггеры, может быть для тестбенча.
>Тут как бы тоже память требуется.
Можешь это оценить иначе. Возьми свой модуль и, временно забыв про код модуля (выкини его из головы!), попробуй написать тестбенч, в котором будет видно, влияет ли на выходной сигнал предыдущее состояние или нет. Если не влияет, то значит что внутри нет триггеров или они не задействованы.
>Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов.
Верилог всё равно один и тот же. Тебе надо думать не о том, как защёлка создаётся на плисе, а пытается ли твой код использовать инфу с предыдущего состояния или нет.
Сам писал, пока vhdl и verilog изучал. С не совместимой ни с чем системой команд. В результате что-то писать на ассемблере было весьма уныло, а главное бессмысленно.
Если брать 32-х разрядные, то наверное стоит смотреть на OpenRISC, MIPS, RISC-V, для них много реализаций с открытым исходным кодом.
Сам думаю под одно дело приспособить picorv32. Но у него под регистровые файлы используется минимум двухпортовая память, поэтому для флексов будет плоховато. Хотя однопортовый регистровый файл это уже не регистровый файл получается.
А как вообще выглядит работа с таким процом?
Тот же микроблейз возможно отлаживать череж жтаг. Недавно ARM выкатили свои ядра под Xilinx, но для работы с их процом нужен внешний сука программатор. Ну и код ядра само собой зашифрован.
Что из перечисленного тобой удобнее всего отлаживать и лугче поднять?
>Тот же микроблейз возможно отлаживать череж жтаг.
Нинужно, есть БОЖЕСТВЕННЫЙ ламповый принтф через уарт в чорную консоль. А вообще никто в теории не мешает прикрутить жтаг к чему угодно, это же открытый стандарт.
>А вообще никто в теории не мешает прикрутить жтаг к чему угодно, это же открытый стандарт.
Что-то даже не представляю как это сделать. Думаю если было бы так просто, были бы готовые решения.
>были бы готовые решения.
Они есть. https://github.com/freechipsproject/rocket-chip и другие.
>>52776
Поддерживаю, вполне хватит. Тем более что на JTAG много ресурсов нужно.
>Что-то даже не представляю как это сделать.
Можно начать с чтения стандарта и доков на гнутый дебаггер, какая ему инфа о состоянии выполняемой программы нужна. А дальше само пойдёт. Хотя что-то мне подсказывает, что это задача урованя запила бэкэнда гцц под свою архитектуру.
//Я, кстати, загуглил запиливание бэкэнда гцц, и люди пишут, что это, в принципе, даже вроде как подъёмно:
https://kristerw.blogspot.com/2017/08/writing-gcc-backend_4.html
Ну же. Дайте ещё таких шизанутых примеров.
https://www.upwork.com/o/jobs/browse/details/~013fdbb66e16b61918/?q=fpga
Я правильно понял, что этим челикам нужно всего лишь запилить примеры использования IP-ядер под их железо? Они там что не знают что можно example design скачать?
https://rutracker.org/forum/viewtopic.php?t=5331072 Только версия довольно старая.
А я все никак не могу собраться и изучить SystemVerilog. Но все-таки, чем тебе не хватает обычных $display и $stop?
Ты про ассершены или SV в целом?
Любой ассёршен можно заменить initial блоком с условием, но зачем использовать костыли, если для этого есть специальная конструкция.
Для меня SV в первую очередь это интерфейсы, классы и межпроцессная коммуникация. Я не уверен на счёт того, что последнего нету в обычном Verilog (mailbox, semaphore). В целом очень удобно под рукой иметь интерфейс, скажем, AXI4, который помимо простых соединений, можно использовать для генераций транзакий, дёргая таск внутри интерфейса (естественно только для верификации).
Ну ODT - это согласование нагрузки на ддр. (Гугли СВЧ, имеданс и все такое).
Вряд ли с отладкой что-то не так, может констреинты не задал, вот у тебя и тайминги рандомные получаются или еще какая хуйня.
Плата нашей разработки, поэтому вполне допускаю, что может быть железная трабла.
Хотя мне больше нравится иметь класс генератор транзакций, к которому подведён виртуальный интерфейс. Ну и класс приёмник.
Ебать как я ору с тостера.
>5. Специфика рынка труда отвратительная - тут есть море спецов с стажем в 20-30 лет, они тебя сожрут и по скорости и по качеству а т.к. кредиты и семьи то вкалывают за минималку по рынку. Так же кодить под плис проще чем под веб - нет бардака с стандартами и каждый год новый бред не выходит и не нужно переучиваться, что сделано 10 лет назад или 20 нормально взлетит и не поперхнётся. (это не СНГ)
>6 - разрешения есть, всё равно что жопа защищена бронебойной плитой - говнокодь и пользуйся поделиями студентов практикантов во все поля - уволятся с голода - следующие придут, это везде так, не в едином СНГ.
Подписываюсь под каждым словом.
Вы еще в погроммисты не перекатились?
Я здесь один сижу на 2015.4 и в хуй не дую?
Полно легаси говна, которое надо поддерживать и хуй знает как оно заработает после обновления.
Да понятно, что никак не заработает. После импорта проекта и обновления корок всё превратится в кровавое месиво, там проще выкинуть и сделать с нуля, чем разбираться, где что отвалилось. Я на другую версию вынужденно перехал, потому что старую ревизию встраиваемого модуля делать перестали, а новая не работает с вивадо, которой я пользовался.
Блин, а я довыёбывался. Дали новый проект на ультраскейле, пришлось таки поставить новую блеваду.
Да не все так плохо,
Хипстерский пет-проджект, бесконечно далёкий от продакшена.
Ну так сумматор (или вычитатель) для натурального двоичного кода и сумматор для дополнительного кода это одно и то же устройство.
Если у тебя есть какие-то сомнения в том что именно делается в VHDL, то можешь заглянуть в код самого numeric_std.
Если a=0 и b=0xFF...FF на всю ширину, то будет переполнение. Делаешь из ансигнеда сигнед — докидывай ещё один бит на знак минуса.
Какой моделсим поставить под блеваду 2017.4?
Какие вообще фишечки есть в моделсиме и нет во встроенном симуляторе?
Нормальная поддержка Systemverilog моделсимом - у меня такая мотивация была, т.к. тестбенчи стали усложняться. С 16 вивады пользуюсь 10.4с, брата нет, зависимость есть.
Я слышал, что моделсим дает возможность подрубать функциональную модель какого-нибудь сложного протокола типа саты или еще что-то подобное. Это правда?
Как это вообще выглядит?
Я думаю, что ты имеешь в виду интерфейсы SystemVerilog, которые только ModelSim и QuestaSim поддерживают. Но тебе всё равно придётся описать протокол, хоть и несинтезируемой частью.
Нужно сдвигать данные на фиксированные величины 32/64/96/128
reg
new_data
раньше времени отправился пост. Хочу конструкцию такого вида:
reg [1:0] offset;
reg shifted_data[127:0];
...
shifted_data[127:0] <= (shifted_data<<32*offset);
По моему это мультиплексор, соединенный с параллельным регистром. Впрочем, то же можно сказать про обычный сдвиговый регистр с параллельной загрузкой.
Нарисовать схему такого на отдельных триггерах и мультиплексорах можешь? Значит "законно".
Какие книги для этого надо прочитать?
Какую FPGA и программатор лучше заказать с доставкой в Россию?
Лучшая книга для новичков, только на английском
Pong Chu FPGA Prototyping by Verilog Examples
В качестве платы могу порекомендовать DE10-nano или Zedboard в зависимости от того с какой фирмой ты хочешь научиться работать в первую очереь, но, лично мне, больше импонирует DE10-nano
Учти что они устарели. Причем проблема в том, что у них для новых микросхем уже другая IDE. Поэтому для обучения не стоит брать.
Вообще для обучения платы не особо то нужны.
Если дорого, то возьми что попроще на алиэкспрессе.
1400 рублей https://aliexpress.com/item/EP4CE6/32812957811.html Да, там на плате ничего толком нет, но для начала сойдет. Потом, если потребуется, уже с большим пониманием выберешь что-нибудь более сложное.
>хочу вкатиться в ПЛИС
>Какие книги для этого надо прочитать?
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
https://www.youtube.com/playlist?list=PL4UMfOeGYsvbPDapirH9GOJ93CBSOe49Y
Не обращай внимание на эту плату и этот кристалл, в этой книге много хороших примеров на языке Verilog. С их помощью ты уже сможешь реализовывать свои проекты хоть на Xilinx, хоть на Intel. DE10 стоит 120$ если заказывать от производителя, но это кладезб свистоперделок, можно докупить камеру D8M и пилить видеообработку, т.к. есть hdmi выход. Примеры того как те или иные проекты реализовать на этой плате идут вместе с платой (размещение пинов, сборка и т.п.).
>можно докупить камеру D8M
Или берешь что-нибудь попроще вместо DE10. Приделываешь простейшие восьмиразрядные АЦП/ЦАП. Для получения частоты пикселов паяешь ГУН на варикапе и инверторах, на ПЛИС делаешь частотно-фазовый детектор и уже можно подключать аналоговую камеру типа видеоглазка, а результат смотреть на телевизоре. Или ты скажешь что без памяти хотя бы под один кадр ничего не сделать?
Где я обмолвился про память? Зачем делать усаревшее аналоговое говно, если за тебя поставили hdmi / mipi декодер? Ты наверное скажешь, что деграданство, всё за тебя поставили, тогда купи Zybo Z7 и ебись сам с декодером CSI2 и HDMI. Ну и сравнил ты конечно аналоговый глазок и 1080p30. Короче, не понимаю я твоей претензии и тезиса.
В начале речь шла про обучение >>57748 Потом тот анон упомянул о деньгах >>57758
Вот я и написал, как можно сильно сэкономить и получить тот же опыт. Разница в стоимости раз в 5 получится, для кого-то это может быть весьма существенно. К тому же в комплекте получишь АЦП/ЦАП, на которых что-нибудь еще можно будет сделать.
>mipi
>CSI2
Это в основном для игрушек. В "нормальных" камерах чаще используется Camera Link или ethernet.
>устаревшее аналоговое говно
Может оно устарело, но еще долго будет использоваться из-за того что дешевле. В том числе коаксиальный кабель дешевле и его проще соединять, если нужно тянуть на десятки/сотни метров то получится существенная экономия.
>аналоговый глазок и 1080p30
Зачем вообще для обучения нужна камера с большим разрешением? Можно взять аналоговый глазок с AHD, если жить не можешь без чуть большего разрешения.
Блять, асм и машинные коды это одно и тоже.
Нет. В асме есть мнемоники, макросы, дефайны, т.е фишечки которые облегчают написание и чтение кода человеку.
А машинный код это уже непосредственно содержимое памяти программ.
Да. Ты же не будешь спорить, что каждая команда асма означает отдельную операцию в машинном коде? Всегда писали на асме(по сути, на машинном коде), только если раньше мнемоники заменяли по справочникам, сейчас мнемоники заменяет компилятор машинным кодом простой заменой.
>Похуй на зп, пока твой мозг пропитан говном и юношеским максимализмом, со временем это пройдет, но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь.
Cравнил.
По ПЛИС - 60 вакансий.
По микроконтроллерам - в 3 раза больше вакансий.
По джаве - в 39 раз больше вакансий.
Но, имхо, ты не учитываешь, что на джаве и конкуренция будет больше человек на место, и срок твоей работы будет меньше(каждый год выпускают новые обновления и фреймворки) и в 30-40 лет ты рискуешь быть выплюнутым на улицу, когда тебя заменят молодым стремящимся джуниором.
Слишком толсто.
>что каждая команда асма означает отдельную операцию в машинном коде?
Тебе тот анон выше писал же:
>макросы, дефайны
Они вовсе не так тупо подставляются. Например, какой отдельной операции в машинном коде соответствуют в GNU ассемблере вот такие строки:
>.section .text
>.equ FLASH_BASE, 0x40022000
>.set i,0
>.rept 256
и прочие директивы? В некоторых ассемблерах, вроде как, макросы вообще полны по Тьюрингу. Соответственно там на макросах можно хоть компилятор сишечки сделать.
>но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь.
Джава когда-нибудь помрет, а за FPGA по мнению некоторых людей будущее следующих 20-30 лет. Я сам джавист, если что.
>Джава когда-нибудь помрет
Ей это пророчат уже хуй знает сколько. Я еще в школу ходил, так говорили, а сейчас эта джава в каждом утюге, но находится кто-то кто повторяет эту мантру.
>за FPGA по мнению некоторых людей будущее следующих 20-30 лет
Не нужно слушать всякие вангования, 640 КБ хватит всем, ололо нужно заниматься тем, что востребовано здесь и сейчас и за что платят деньги.
> Я сам джавист, если что
Работал ли ты фпгашником? Ты хоть понимаешь в какое болото ты зазываешь людей?
>Работал ли ты фпгашником? Ты хоть понимаешь в какое болото ты зазываешь людей?
Нет, не работал. Расскажи.
Мне нравится системное программирование и железо, но я работаю бэкэндером, потому что это востребовано и мне платят за работу здесь и сейчас.
>>не учитываешь, что на джаве и конкуренция будет больше человек на место
>Вообще не факт
Не знаю как на джаве, а плисоводов по отношению к прогерам сильно меньше, потому они всегда в дефиците, хотя при этом им и не доплачивают. Ну и плисовод всегда может стать джава-кодером, а вот на оборот сильно навряд ли.
>А с fpga типо не так?
По большей части не так. Всё зависит от решаемых задач.
>>58090
>нужно заниматься тем, что востребовано здесь и сейчас и за что платят деньги.
Какое-то потребительское у тебя отношение.
>Нет, не работал. Расскажи.
Вот тут в общих чертах специфика >>55025
Основная проблема в том, что 99% вакансий это околооборонка со всеми вытекающими.
>>58092
>Ну и плисовод всегда может стать джава-кодером, а вот на оборот сильно навряд ли.
Не соглашусь, это работает в обе стороны. Бывает накодируюсь на hdl, появляется программерская задача и я сажусь туплю, пока не переключу мозг на парадигмы программирования. Аналогично и программисты не сразу осваивают hdl, но в итоге осваивают!
На хабре попадался проект - эмулятор какой-то консоли, так вот его запилил человек, который до этого не имел дело с FPGA.
>Какое-то потребительское у тебя отношение
Нужно зарабатывать на жизнь, кормить семью. А если у тебя лежит душа к плисоёбству никто не запрещает пилить свой pet project.
>Аналогично и программисты не сразу осваивают hdl, но в итоге осваивают!
Далеко не все. Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС. + к этому всякие гонки сигналов в КС, межклоковые переходы и прочие специфические вещи.
>никто не запрещает пилить свой pet project
Разъясни.
>в тред зашел какой-то анон из /pr/
Ты меня сейчас оскорбил, сравнив я джава-быдлом и веб-макаками. Я мк-бог, вообщето.
>Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС.
Двачаю, в микроконтроллерах примерно также. Джава программисту будет трудно понять, как одновременно работают 4 таймера, 2 канала uart, ацп и цап.
Чего там понимать-то? Не преувиличивай. По сути мк это как два пальца об асфальт. Просто мозги надо освежать во время, а то начнешь тормозить.
>они всегда в дефиците, хотя при этом им и не доплачивают
Это значит, что нет никакого дефицита. Их меньше, но задач для них ещё меньше.
Чувак просто немного ограниченный задрот.
>Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС.
А как же многопоточные приложения?
>к этому всякие гонки сигналов в КС, межклоковые переходы и прочие специфические вещи.
Ну согласись, никакой высшей математики в этом нет. Достаточно придерживаться ряда элементарных правил и все будет работать как в симуляторе.
>>никто не запрещает пилить свой pet project
>Разъясни.
А что разъяснять - работаешь с той технологией за которую больше платят, а в свободное время пилишь то что тебе интересно, например FPGA.
Очень плохой совет. На алиэкспрессе оно стоит 13140,04 руб, в электронщике 14540 рублей, а терасик продает их по $150. Наверняка напрямую у терасика будет намного выгоднее, даже с учетом доставки. Даже если покупать в диджикее и везти через посредников, и то дешевле будет чем с алиэкспресса.
Но я бы не советовал покупать эту плату. ПЛИС мелкая, память снаружи тоже мелкая приделана. VGA там и то через R-2R сделан. Даже HSMC нет. Китайцы продают аналогичные платы намного дешевле. За те же деньги китайцы продают плату с XC7K420T, там LE/LC в 10 раз больше чем в циклоне на плате DE0-CV.
>>58142
>pet project
Если не секрет, то что-нибудь интересное на ПЛИС сделал?
Что ты имеешь в виду под нормальной камерой? MIPI CSI-2 это интерфейс сенсора так же как и LVDS, а то что ты назвал. это интерфейс передачи данных по на расстояние с готовой камеры. Я как такой тезис могу сказать, говно этот ваш камерлинк, вот 12G-SDI тема. Не путай квадратное с мягким.
Никто не делает приёмник видеосигнала с камер на ПЛИС, делают камеры, в которых ПЛИС принимает и обрабатывает сигнал с сенсора, а потом заганяет в этот ваше эзернет/sdi/AHD хоть сожми и по i2c отправляй
Я работаю, ДС-2, мидл, 100к в месяц, зависимость есть.
Скорее наоборот, от того что плисоводов мало то и задач решаемых с помощью ПЛИС мало. Там где можно применить ПЛИСину суют МК и городят на нём огород.
>>58142
>А как же многопоточные приложения?
Если правильно помню, то они между собой согласуются через какие-то семафоры, светофоры. Это не то же самое. Команды в программе всё равно исполняются последовательно. Да, и в МК есть таймеры, ЦАПы, АЦП и прочая периферия которая работает параллельно. Но там она есть как данность. А когда возникает необходимость самому наделать счётчиков, регистров, автоматов, которые все должны работать одновременно и согласованно, то тут у многих начинается затык. Несколько раз видел как прохеры несмогя в HDL пытаются перейти на Ниос, который чтобы запустить тоже нужно постараться, но соснув и в этом, бросают изучение ПЛИС вообще.
> работаешь с той технологией за которую больше платят
Много платят элитным гей-шлюхам. Не то чтобы я был в курсе, просто предполагаю. Так чтож теперь, в гей-проституцию податься чтоле?
>Никто не делает приёмник видеосигнала с камер на ПЛИС
Зачем брать "сенсор" не для встраиваемых систем? Что мешает сделать в отдельной коробке устройство обработки на FPGA, к которому будут подключаться готовые камеры?
Значит, если делать обработку видео на FPGA, то непременно нужно брать отдельно матрицу, разрабатывать для нее корпус, выбирать объектив и прочее?
>сенсор
Не стал бы я такое называть сенсором. Ладно еще КМОП или ПЗС матрицу так назвать. Но у тебя готовая камера, уже с объективом.
Кстати, а ты хоть в курсе что все матрицы сами по себе аналоговые? Конечно бывают матрицы с АЦП на одном кристалле, но сама матрица все равно аналоговая.
>ПЛИС принимает и обрабатывает сигнал с сенсора, а потом заганяет в этот ваше
Но зачем для этого ПЛИС? Какой-нибудь микроконтроллер cypress вполне справится, да еще потреблять меньше будет.
>sdi/AHD
Тем более ПЛИС ни к чему, с ПЗС матрицы и так аналоговый сигнал идет, только синхры подавай.
А если тебе нужен нестандартный алгоритм обработки сигнала (какой-нибудь хитрый билатеральный фильтр или нелинейная интерполяция), то ты жиденько обосрёшься
> ПЗС
только для небольшого разрешения или небольшого фреймрейта, ограничение на скорость переноса заряда (~100 МГц)
> sdi
> аналоговый сигнал
норкоман чтоле
>>58225
Вот не повреишь, большинство видеообработки делается именно на видеопроцессоре внутри камеры (например у нас в компании этот видеопроцессор делается на ПЛИС). Это дебайеринг (демозаика), шумодав, первичная цветокоррекция, коррекция геометрических искажений, интерполяция битых пикселов, повышение контрастности и многое прочее.
>сенсор
У нас называют ПЗС-матрица или КМОП-сеноср, т.к. ПЗС уже лет 5 не используем, то употребляем "сенсор"
Это все хорошо. А теперь задумайся, кто, где и зачем использует камеры, которые делают "у нас в компании"? Думаешь обработка на этом закончилась?
Вы пытаетесь сделать свой микроконтроллер? Зачем, если уже есть готовые?
Да, угадал.
>Если не секрет, то что-нибудь интересное на ПЛИС сделал?
Не, у меня перманентное творческое полшестого после 25 началось.
Вообще нет идей, если предложишь свои буду благодарен!
> Наверняка напрямую у терасика будет намного выгоднее, даже с учетом доставки
У него таки появилась доставка? Или как было FedEx only, так и осталось?
А что ты можешь сделать?
А на русском?
На хабре по плису в 3 раза меньше вакансий.
>дешифраторы, триггеры
Это основное что нужно знать. Есть ещё автоматы Мили и Мура, их бы тоже желательно.
>в микроконтроллерах(обычные мк и ARM), или в ПЛИС?
Что мешает знать и то и то?
>На хабре по плису в 3 раза меньше вакансий.
>На хабре
>вакансий
Да ну?
>обычные мк и ARM
Теперь я вместе с ARM, он необыкновенный! Он МК отменный, молюсь я на него!
>>58791
Все одновременно в голове не поместится?
Вообще-то часто используют софт-процессоры (microblaze, nios), еще бывают FPGA с готовыми процессорами, такие как Zynq и Cyclone V.
Сложность зависит от того что именно делать. Можно делать что-то простое на FPGA, например набор согласованных фильтров, которые будут занимать много места, но будут просты по своей структуре. Или кто-то пишет (к примеру) linux (uclinux) какой-нибудь, который вполне работает на микроконтроллерах. Поэтому в этом контексте о сложности говорить нет смысла.
>Где можно прочитать про такие не очевидные вещи для новичков (я хоть уже не новичок, но этого я не знал). Ещё хочу разобраться с синтезом и разводкой, когда и какие настройки компилятора использовать, сейчас оставляю всё по умолчанию.
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
>надо ещё ПЗУ для хранения прошивки
Можешь взять MAX 10, у которых ПЗУ внутри. Если конечно их хватит по объему.
>прочекал все пункты
А я из всего того не знаю SystemVerilog и по верификации маловато знаю и умею.
>я хоть уже не новичок, но этого я не знал
Это сильно. То есть не открывал device handbook (user guide). Да это вообще в любом учебнике написано, хоть у Зотова. По моему без таких базовых знаний ничего внятного сделать не получится. Возможно даже что ты проебал просто основы цифровой электроники, все эти элементы Пирса, триггеры всякие там.
>А я из всего того не знаю SystemVerilog и по верификации маловато знаю и умею.
Я знаю Verilog. Мне кажется особой разницы нет на каком языке писать. Но вот понимать что написано на других языках это надо обязательно - мне пару раз приходилось доделывать чужие проекты, один на VHDL. другой на AHDL.
>>Это сильно. То есть не открывал device handbook (user guide). Да это вообще в любом учебнике написано, хоть у Зотова. По моему без таких базовых знаний ничего внятного сделать не получится. Возможно даже что ты проебал просто основы цифровой электроники, все эти элементы Пирса, триггеры всякие там.
Ну основы цифровой электроники, думаю, у меня более-менее норм.
1)https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/LFE5U-25F-6BG256I/220-2206-ND/9553919
2)https://www.digikey.com/product-detail/en/intel/EP4CE22F17I7/EP4CE22F17I7-ND/2288336
Вроде по характеристикам более-менее одинаковые, но один стоит ~10$ а другой ~70$. Я не могу понять почему такая разница в цене. Куда надо смотреть?
>INTEL
Я не понимаю...
Вроде логических ячеек и встроенной памяти у леттиса даже чуть побольше, максимальные частоты тоже сопоставимы. Но мне не верится, что такая ПЛИС может стоить 10 баксов. В чем подвох? Или интел тупо просит охрененный оверпрайс? Или это невиданая щедрость от леттиса?
Неа, я бы на хабр с таким не полез бы. Просто так как-то сложилось, что в начале, пока был нубом, я прошивал не понимая как вся система в целом работает, а потом попадались чипы со встроенной памятью. А вообще мне ПЛИС кажутся проще и лучше чем микроконтроллеры - всякие интрефейсы, которые перекрывают друг друга, ограниченное количество пинов и никакой параллельности, и всякие "указатели на указатель ссылки на указатель", библиотеки и тд. Вот почему все считают плис сложными? Вот у меня коллега сейчас решает задачу сбора данных одновременно с 3 АЦП. И городит какую-то хитровыебанную систему - типа микроконтроллер не может одновременно общаться по 3 spi + пара дополнительных сигналов на каждый АЦП. Вот с таким любая плис справится как нехуй делать
Есть сторонние синтезаторы, есть симуляторы, но не более. Разводчики и ассемблеры у все свои.
Писать код Quartus
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
Прошивать
https://ru.aliexpress.com/item/Usb-Blaster-ALTERA-CPLD-FPGA-NIOS-JTAG-Altera/32832878130.html?spm=a2g0v.search0104.3.17.240834732XUrNe&ws_ab_test=searchweb0_0,searchweb201602_8_10065_10068_319_317_10696_453_10084_454_10083_10618_10307_10301_537_536_10902_10059_10884_10889_10887_321_322_10915_10103_10914_10911_10910,searchweb201603_61,ppcSwitch_0&algo_pvid=b834e37b-3e65-4127-9743-8c90f968fffe&algo_expid=b834e37b-3e65-4127-9743-8c90f968fffe-2
Ultra96 например
За такие деньги сейчас можно найти оригинальные девборды на вторых арриях и стратиксах, иногда даже новые (некоторое время назад видел на ибее новую альтеровскую плату на Arria II). Китайские платы - вообще на пятых арриях и седьмых кинтексах.
К эмулятору?
>>59513
На ebay только одна плата, и она pci-e, без кучи пинов. На алиэкспрессе не нашел.
У террасика есть DE10-Standard https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=1081, у которой примерно столько же логических ячеек, но при этом она SoC. Почему она стоит дешевле DE2 https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=502?
https://s.click.aliexpress.com/e/ui8AOuE на pcie к ноуту через какой-нибудь thrunderbolt 3 external pcie типа https://www.amazon.com/dp/B01MTP2XMZ/ref=cm_sw_r_cp_awdb_t1_Pt4HCbGMBF56D ?
>К эмулятору?
К любой плате, на которой нет видеовыхода. Чем тебе не нравится https://ru.aliexpress.com/store/product//620372_32834526999.html ?
Для начала так вполне нормально.
>столько же логических ячеек
У тебя уже есть идеи на что применить все эти ячейки? А "про запас" не стоит брать.
>Почему она стоит дешевле DE2
Примерно по тем же причинам, по которым память DDR4 стоит дешевле чем DDR2 того же объема.
>На ebay только одна плата, и она pci-e, без кучи пинов. На алиэкспрессе не нашел.
Никто не говорил, что они там есть в любой момент времени. Надо постоянно мониторить.
Вот, например, плата на Arria V на Али.
> примерно столько же логических ячеек,
Куда тебе столько? https://wfjm.github.io/home/w11/impl/#h_systems
>>59527
> Чем тебе не нравится https://ru.aliexpress.com/store/product//620372_32834526999.html ?
Тем, что можно добавить 20 баксов и взять вариант с SDRAM? https://www.aliexpress.com/store/product//620372_32780729361.html
А за 60 баксов можно взять вот такие наборы:
https://www.aliexpress.com/store/product/EP4CE22F17C8N-board/620372_32859908966.html
https://www.aliexpress.com/store/product/TFT-320X240-EP4CE15F17C8N/620372_32803512580.html
>Тем, что можно добавить 20 баксов и взять вариант с SDRAM?
Так ли нужна эта память? К примеру, для ЦОС обычно не нужна.
>А за 60 баксов можно взять вот такие наборы:
Но стоит ли? Если потребуется, то несколько резисторов можно припаять самостоятельно. Для чего все эти свистелки и перделки нужны? Лишь для таких игрушек, как по твоей первой ссылке. Если делать что-то другое, то все это будет только мешать.
> Так ли нужна эта память?
Ну так >>59510 не сказал же, зачем ему ПЛИС. Может он хочет одноплатник, с горилкой и хохлушками забабахать?
> Для чего все эти свистелки и перделки нужны?
Именно для того, чтобы не припаивать резисторы и ебаться с макетками на первых порах, когда всё что тебе хочется это подрочить светодиодами и VGA-выходом на мониторе.
> Если делать что-то другое
То мезонин с плисиной ПРОСТО снимается. Единственная засада: там разъёмы хоть и обычные двухрядные гнёзда, но с метрическим шагом (два миллиметра).
Вот именно. Поэтому то что ты предлагаешь не лучше и не хуже. Это для тех кому обязательно нужно что-то вывести через VGA и при этом лень припаять несколько резисторов.
Нет. Там три канала (RGB). Если по одному биту на канал, то будет 2^3=8 комбинаций, т.е. 8 цветов. Потом на обсуждаемых китайских платах стоят R-2R (или что-то вроде того) из нескольких резисторов, которые тоже не много цветов дают. Причем так сделано не только у этих китайцев, например на Nexys 3 и Nexys 4 (по первой ссылке в >>59543) аналогично.
Если нужно больше цветов, то необходимо ставить ЦАП. Не целесообразнее ли в таком случае перейти на HDMI?
> лень припаять несколько резисторов.
Не ленью единой. В нашем Мухосранске-Таёжном такие (как у Zeowaa или WaveShare) наборы лучше тем, что все равно любую мелкую пиздюрку приходится заказывать с большой земли, так что для экспериментов и освоения удобнее брать всё сразу и в сборе.
>>59571
> Потом на обсуждаемых китайских платах стоят R-2R (или что-то вроде того) из нескольких резисторов,
И китайца там хитрее. Простейший ЦАП со взвешенными резисторами, но вместо отдельных резисторов сборки с разным включением (пикрелейтед).
> которые тоже не много цветов дают.
Ну хуйЪ его знает. По мне так HighColor для домашних поделок вполне достаточно.
> Не целесообразнее ли в таком случае перейти на HDMI?
Там другая проблема. Частоты такие, что дешёвые камни уже зашиваться начинают (для паршивого 640x480 потребуется гнать сигнал с частотой 250 МГц).
>HighColor
Еще не факт что оно там будет. Какая там реально точность резисторов? А какая точность выходного напряжения FPGA?
>Частоты такие, что дешёвые камни уже зашиваться начинают
Поставить SERDES никак?
>RTL : Use as few variables as possible in synthesizable code, and never when you may use signals instead. Use variables for their specific behavior (factoring, intermediate results, re-using the FlipFlops inputs etc..).
Это какие-то особенности тогдашнего железа или что-то более фундаментальное?
Соблюдение этой рекомендации предотвратит увеличение комбинационных схем (т.е. увеличение задержек) и появление латчей. Почему это необходимо? Потому что структура ПЛИС такая, желательно почитать об этом отдельно.
Это для лучшего понимания, где находится комбинационная логика, а где секвенциальная, больше ни для чего. Это не совет ставить как можно меньше регистров, это совет писать так, чтобы было ясно, имеется ли в виду тут у тебя регистр в железе, или ты комбинационную логику в несколько действий описываешь.
Написал я тут извращённым способом счётчик, знаю, можно намного проще написать.
module Count(output reg [3:0]counter, input incr, input clk);
reg [3:0]carry;
always @(posedge clk)
begin
integer i;
for(i = 0; i < 4; i = i + 1)
begin
if(i == 0)
begin
if(incr) counter <= !counter;
else counter <= counter;
carry = incr & counter;
end
else
begin
if(carry[i-1]) counter <= !counter;
else counter <= counter;
carry = carry[i-1] & counter;
end
end
end
endmodule
Вопрос, собственно, по цепи переноса carry. Он объявлен как reg, в списке чувствительности указан тактовый сигнал, а значит этот carry должен быть регистром. Ан нет! По какой-то неведомой причине он стал комб. логикой. А если заменить присвоения с = на <=, то он таки становится регистром. У меня есть догадки, но хочется послушать ваши версии.
Написал я тут извращённым способом счётчик, знаю, можно намного проще написать.
module Count(output reg [3:0]counter, input incr, input clk);
reg [3:0]carry;
always @(posedge clk)
begin
integer i;
for(i = 0; i < 4; i = i + 1)
begin
if(i == 0)
begin
if(incr) counter <= !counter;
else counter <= counter;
carry = incr & counter;
end
else
begin
if(carry[i-1]) counter <= !counter;
else counter <= counter;
carry = carry[i-1] & counter;
end
end
end
endmodule
Вопрос, собственно, по цепи переноса carry. Он объявлен как reg, в списке чувствительности указан тактовый сигнал, а значит этот carry должен быть регистром. Ан нет! По какой-то неведомой причине он стал комб. логикой. А если заменить присвоения с = на <=, то он таки становится регистром. У меня есть догадки, но хочется послушать ваши версии.
Квадратные скобки сожрало
>if(carry[i-1]) counter <= !counter;
> else counter <= counter;
>carry = carry[i-1] & counter;
if(carry[i-1]) counter[ i ] <= !counter[ i ];
else counter[ i ] <= counter[ i ];
carry = carry[i-1] & counter[ i ];
reg в верилоге это не регистр в железе, а переменная, которой можно присваивать значение в секвенциальном блоке. В зависимости от того, когда используется его значение, в текущем такте или следующем, он синтезируется или в комблогику, или в регистр.
Смешивать "=" и "<=" в одном блоке — это хуёвый стиль, не делай так.
Когда ты гадаешь, ставить ли "=" или "<=" — значит, ты сам не понимаешь, что ты пишешь. Ты должен мысленно представить железо, которое описываешь, и, если ты понимаешь принципы синхронного дизайна, то вопросов не возникнет, какие там присваивания используются.
>Когда ты гадаешь, ставить ли "=" или "<=" — значит, ты сам не понимаешь, что ты пишешь. Ты должен мысленно представить железо, которое описываешь, и, если ты понимаешь принципы синхронного дизайна, то вопросов не возникнет, какие там присваивания используются.
Как выглядит счётчик в железе я прекрасно представляю.
>Смешивать "=" и "<=" в одном блоке — это хуёвый стиль, не делай так.
А ты попробуй напиши не смешивая. Только не counter <= counter + 1'd1; , а через цикл. Вся загвоздка сформировать комбинационную цепь переноса.
>>60099
>Какой это имеет смысл, еще в цикле к тому же?
Формирует цепь переноса - цепочку из элементов И, смотри на пике.
>Как выглядит счётчик в железе я прекрасно представляю.
Тогда ты не понимаешь чем отличается блокирующее присваивание от не блокирующего.
>цепь переноса
Это просто конъюнкция всех предыдущих разрядов. Цепью переноса такое называть не стоит.
>А ты попробуй напиши не смешивая.
Элементарно, в одном блоке параллельный регистр, в другом комбинационную логику. Или можно сделать сложение в функции.
>Формирует цепь переноса - цепочку из элементов И, смотри на пике.
И нифига, оно так не работает. Или у тебя что-то проебалось. Потому что это запишет в carry только нулевой бит, а остальные обнулит.
>Тогда ты не понимаешь чем отличается блокирующее присваивание от не блокирующего.
Понимаю, просто по другому не напишешь, наверное, потому и пришёл сюда рассказать что солнце встало.
>Цепью переноса такое называть не стоит.
Вполне себе. Ибо её выход указывает инвертироваться разряду или нет.
>Элементарно, в одном блоке параллельный регистр, в другом комбинационную логику.
Нет, ну ты попробуй.
>И нифига, оно так не работает.
Кто? Счётчик на пике, или код? Схема счётчика классическая, не может не работать. Код тоже рабочий, можешь проверить.
>Нет, ну ты попробуй.
Готово.
>Вполне себе.
В русскоязычной литературе цепью переноса обычно называют другое. Так что нет. Цепь переноса — это как в сумматорах например.
>Код тоже рабочий, можешь проверить.
Может и рабочий, но в той строке у тебя написан бред.
>Цепь переноса — это как в сумматорах например.
А тут, инвертируем текущий разряд если все предыдущие установлены в единицу. Те же яйца, только в профиль.
>Может и рабочий, но в той строке у тебя написан бред.
Для тебя может и бред, а для Квартуса нет, создаёт схему как на пике >>60136 , так что не надо тут вот этого.
Да и к тому же, чем твоё
comb_out[ i ] = comb_out[ i - 1 ] & cnt_out[ i - 1 ];
отличается от моего
carry[ i ] = carry[ i-1 ] & counter[ i ];
>Готово.
Не, ты именно в цикле создание и регистра и цепи переноса напиши.
>Для тебя может и бред
Сейчас ты исправил, а был вот такой бред:
>carry = carry[i-1] & counter[ i ];
На что я тебе написал что у тебя либо из-за разметки что-то опять проебалось, либо ты написал совсем ерунду.
>Не, ты именно в цикле создание и регистра и цепи переноса напиши.
Да ну тебя, сам пиши всякую ерунду.
>Не, ты именно в цикле создание и регистра и цепи переноса напиши.
Тебе cnt_out <= comb_out ^ cnt_out не нравится штоле? Ну замени на for (...) begin cnt_out[ i ] <= comb_out[ i ] ^ cnt_out[ i ]; end, легче станет?
Я даже не понимаю того что ты хочешь. На твой первоначальный вопрос уже ответили. Выше один анон написал, что не стоит смешивать последовательностную и комбинационную логику в одном блоке. Желательно писать так, чтобы легче было отличить где комбинационная логика, а где последовательностная. Вот я написал таким образом, а тебе все не так.
>А тут, инвертируем текущий разряд если все предыдущие установлены в единицу. Те же яйца, только в профиль.
Вот нарисовал обобщенную схему счетчика или другого КА. По твоему выходит, что комбинационная логика в этой схеме это всегда цепь переноса?
Вот ты напиши. Увидишь какой пиздец получится.
>>60191
Я хочу сказать то, что написать счётчик подобным образом соблюдая все правила и рекомендации не получается.
>>60193
Ты нарисовал счётчик, как параллельный регистр с сумматором на входе. А есть философия построения счётчиков и различных регистров, как регулярных устройств, т.е. на основе элементарных блоков. Посмотри на пик >>60136 , замечаешь периодичность? Подставляя в конец ещё один такой каскад ты легко и просто наращиваешь разрядность. Я понимаю, что при наличии верилога это всё на хер не нужно, но тут вопрос больше академический.
>Ты нарисовал счётчик, как параллельный регистр с сумматором на входе.
Твоя схема вполне соответствует этой обобщенной схеме. Так что ты написал что-то не то.
Один из вариантов, которые я написал, был в точ как у этого >>60259 кунчика.
>>60259
Вот смотри, дрогой мой кунчик. У тебя переменная i глобальная, т.е. видится из обеих блоков always, она общая. Тебя не смущает, что она инкриминируется по два раза за проход? Ведь каждом for стоит i = i + 1. Да работать будет, видимо компилятор хитрый и догадывается что мы от него хотим. Но то что ты предложил выглядит не менее сомнительным чем блокирующее присвоение вместе с блокирующим.
И ещё. В связи со всем этим у меня возник вопрос. Зачем вообще нужны циклы? Любой код можно написать не используя их. Могёте привести пример где без цикла нельзя было бы обойтись? Я говорю только про синтезируемый код, с тестбенчами там без них никак, это понятно.
>Я говорю только про синтезируемый код
И generate-блоков это тоже не касается. Только поведенческое описание.
Нет, потому что за один проход одной итерации цикла она инкрементируется один раз. А второй цикл проходится потом (и переменная перед входом в него сбрасывается в 0).
>Один из вариантов, которые я написал, был в точ как у этого >>60259 кунчика.
Что? То что нарисовано у тебя на схеме >>60136 полностью соответствует обобщенной схеме >>60193 Причем вне зависимости от того как писать код.
>Тебя не смущает
Нет. Потому что это так не работает. Цикл эквивалентен простому копипасту кода заданное количество раз. Это как макросы в Си. Хитрость компилятора вообще не при чем.
>Могёте привести пример где без цикла нельзя было бы обойтись?
Ну да, циклы всегда можно заменить копипастой. Так же как арифметические операции можно сделать через логические, а все логические можно сделать через NAND.
>Могёте привести пример где без цикла нельзя было бы обойтись?
У тебя есть N-мерный массив из 16-битных регистров, и тебе надо вывести их нулевые биты на N-битную шину.
> Попросил занизить стоимость,
Потом расскажешь, куда в Терасике тебя послали?
> чтобы не растомаживать.
> Доставка FEDEX
Земля тебе пухом.jpeg http://www.fedex.com/ru/shippingguide/importguidelines/personal.html
Зачем взял на поиграться такую плату а не что попроще? Уже придумал проект, на который необходимо ~114480 LE? При том свистелки и перделки в DE2-115 не особо развесистые.
>Что? То что нарисовано у тебя на схеме >>60136 полностью соответствует обобщенной схеме >>60193
Да, согласен, если стереть границы блоков, то получется то же самое. Ну а тогда зачем ты противопоставил свою схему моей?
>Цикл эквивалентен простому копипасту кода заданное количество раз.
Дело не в копипасте, а в том как исполняется цикл. В принципе я удовлетворён ответом анончика >>60266 . Я просто залип на параллельным выполнением блоков always и тот факт, что эти циклы создают схему, а не исполняются в ней, вылетел у меня из головы.
>Ну да, циклы всегда можно заменить копипастой.
По моему утверждению любую комб. или регистровую схему можно написать в поведенческом описании кратко и ёмко без копипаст. А что нельзя, то можно реализовать generate-блоками в структурном описании, например как этот >>60276 случай. Т.е. получается циклы в поведенческом описании избыточны.
> Уже придумал проект, на который необходимо ~114480 LE?
Я как-раз нашёл подходящий: https://github.com/srg320/FpgaSnes Всё упихнули в 55 килоячеек третьего циклона, не считая STM32 на подтанцовке.
>Ну а тогда зачем ты противопоставил свою схему моей?
Потому что это не цепь переноса. Максимум в подобных схемах цепь переноса может быть частью схемы, но не схема целиком. Но при синтезе твоего кода для ПЛИС, никакой цепи переноса не получится. Или ты считаешь что при твоем коде (для четырехразрядного счетчика) LUT-ы в FPGA также соединятся в последовательную цепочку, как у тебя на схеме?
>Т.е. получается циклы в поведенческом описании избыточны.
Сделай тогда без цикла суммирование всех бит в шине, т.е. подсчет количества ненулевых бит. Такое может потребоваться например для вычисления кодового расстояния. Или можешь попробовать сделать КИХ фильтр с задаваемым параметром количеством умножителей.
Да ничем, лишь известно, что casex умеет корректно обрабатывать 1'bX помимо 1'b0, 1'b1 и 1'bZ. Никогда не использовал casez, всегда casex ставлю, разницы никакой, только ты точно знаешь, что если симулятор подсунет ему 1'bX, он не затупит.
>Или ты считаешь что при твоем коде (для четырехразрядного счетчика) LUT-ы в FPGA также соединятся в последовательную цепочку, как у тебя на схеме?
Да какая разница как схема размещается в ПЛИС, своей сути она от этого не меняет.
>Потому что это не цепь переноса.
Ну как же? Разряд счётчика инвертируется, другим словами к нему прибавляется единица, если все предыдущие разряды установлены в 1.
>Максимум в подобных схемах цепь переноса может быть частью схемы, но не схема целиком.
А это уже понятия относительные. Можно ли назвать часть схемы схемой? С какой очередной пещинкой кучу можно называть уже кучей. С каким выпавшим волосом человека можно назвать лысым.
>Сделай тогда без цикла суммирование всех бит в шине, т.е. подсчет количества ненулевых бит.
Ну как-то так, на скорую руку, можно наверно и по красивее сделать, но не суть. Суть в том, что удалось даже без генерейта обойтись.
module Test(input [7:0]B, output [3:0]Result);
wire [31:0]res;
assign Result = res[31:28];
AAA AAA[7:0](.num({res[27:0], 4'd0}), .B(B), .res(res));
endmodule
module AAA(input [3:0]num, input B, output [3:0]res);
assign res = num + B;
endmodule
В фильтрах не силён, но думаю, там ту же можно.
Охуенный код. Осталось еще арифметические операции из него выкинуть и можно будет утверждать что арифметические операции в верилоге не нужны. Ну вот видишь, сам лучше всех все знаешь. Зачем тогда спрашивал?
>арифметические операции в верилоге не нужны
Так то для новичков действительно ими лучше не пользоваться. Так и одолевает соблазн поставить, скажем, арифметическое деление, а ведь какая при этом схема получается мало кто задумывается. А вот если попытаться сделать то же самое на логике сразу становится понятен масштаб бедствия и у же лишний раз подумаешь, а нужно оно это деление, или луче его обойти.
>Зачем тогда спрашивал?
Думал может всё таки найдётся такая ситуация где никак.
Как можно было ожидать чего-то другого? Такое можно еще через рекурсию сделать. Только с краткостью и понятностью кода от этого лучше не станет.
Какую-то ерунду спрашиваешь, сам себе отвечаешь...
Зачем нужен int, когда есть int16_t? Низачем, просто так сложилось исторически.
Начальник ты чё? Асинхронщина вовсю шагает по вебу же.
Миллисекундами меряться, и буферами трясти в хайлоаде тоже привычно е дело.
То, что они работают отдельно это простота, а вот как они взаимодействуют между собой, работая отдельно, это посложнее.
Перетекло из критикал в ворнинг в просто ворнинг. Ну, норм, наверное. Спасибо.
пишешь декетор параллельной частоты, которой у тебя питается iserdese2 детектор работает на сильно большей частоте чем параллельная входная. Как только частота исчезает, увозишь iserdese2 в ресет
NDA
>iserdese2
Эту клушу я заводил еще кое-как.
А вот с iserdese3 хуйня какая-то. Там внутренний фифо как-то очень уж непонятно для меня работает: я его отключаю, но всё равно инфу получаю слишком поздно и не с первой пачки 8 битов.
(Это всё еще на постоянной входной частоте и данных, для теста. А уж ожидать, что эта херота заведется на произвольном dqs - наивно. Эх, где же мой мемори интерфейс генератор...)
Алсо.
>детектор работает на сильно большей частоте чем параллельная входная
Входная и так в ддр на 3ггц, куда уж гнать-то.
>Эх, где же мой мемори интерфейс генератор
А, кстати, где он? Чего бы просто его не поставить? Он же даже бесплатный без смс. Требуется сделать швабодную версию контроллера, что ли?
Из легко доступных сейчас.
Зачем еще раз проверяется A(14) на 0
>RAM_CS_N <= '0' when (CS_N = '0' and A(14) = '0' and ram_enable_r = x"A")
если проверка была здесь?
>ram_enable_r_clk <= '0' when (A = "000" and WR_N = '0') else
Почем нельзя так?
>RAM_CS_N <= '0' when (CS_N = '0' and ram_enable_r = x"A")
ну я это для csi2 использовал, там частота 410 МГц была последовательная, соответсвенно 210 МГц с запасом хватало для стробирования параллельной байтовой
EPM240T100I5N
Что я делал:
1. Сконфигурировал в шквартус прайм ip-ядро.
2. Сгенерировал example design и тестбенч
3. Зашел в File -> Change Directory и указал путь к папке, в которой лежит скрипт для моделсима:
..my_project/my_design_0_example_design/sim/ed_sim/mentor/msim_setup.tcl
4. Tools -> Tcl -> Execute Macro через эту команду скормил скрипт из п.3
5. Скомпиллил либы (?) командой "com" в консоле ModelSim
Что дальше делать?
6.
Сильное заявление
В Квартусе 9.1 всё ещё есть встроенный симулятор для Циклонов 1-3.
Если ты хочешь интегрировать МоделСим в Квартус, то качай МоделСим Альтера едишн. С ним намного проще.
Сейчас бы в моделсиме делать когда есть Xcelium.
Ну хз, каким-то сложным путём ты пошёл.
В Квартусе жмёшь тулс - опшинс - ЕДА тул опшинс, указываешь в строчке МоделСим-Альтера путь до исполняемого файла МоделСима, тот что с расширением .ехе, не помню как называется и где точно лежит, на работе у меня всё это добро установлено, дома нет. Через диспетчер задач вычисли.
Далее создаёшь тестбенч с расширением *.vt, в нём создаёшь модуль верхнего уровня, можно пока оставить его пустым.
Далее в настройках проекта, ЕДА тул сеттингс в поле Тул нейм выбираешь МоделСим-Алтера, в поле НативЛинк сеттингс выбираешь Компил Тестбенч, нажимаешь на кнопку Тестбенчес, в появившемся окне указываешь свой вайл с тестбенчем который создал.
Далее в меню Квартуса жмёшь Тулс - ран симулейшен тул - ЕДА РТЛ симулейшен.
Если всё правильно, должен запустится МоделСим.
SystemVerilog*
Наша организация подумывает о переходе с альтеры на зайлинкс, потому что их проще достать.
Сильно ли вивадо хуже/лучше квартуса? Наверное платина.
Из основного интересуют аналог схематика, сигналтапа и инсистема.
Схематик в вивадо хуже. Лучше все лепить в коде.
Ртл вью тоже не так красиво отрисовывается. В остальном вивадо более ламповая и по мне гораздо удобнее. Больше ip ядер, больше сообщество, ахуенный форум.
vio/ila дает на клыка этому вашему сигнал тапу да и в целом вивадо не такая глючная.
>Схематик в вивадо хуже. Лучше все лепить в коде.
Ты "блок дизайн" имеешь в виду? Я, конечно, альтеровский вариант не пробовал, но "блок дизайн" — самая продуманная, отлаженная и приятная в использовании часть вивадо (за такой голый и убогий редактор кода я бы просто убивал).
Да, именно его имел ввиду. У зайлинкса, например только недавно добавили возможность инстанцировать на блочный дизайн hdl-модули и эта фича работает криво. В альтере все ровно.
Еще не нравится, что у зайлинкса связи отрисовываются автоматически, нужно только указать точки соединения - в результате на крупных схемах получается каша.
Из положительных моментов вивады могу выделить ее фичу с подсказками - например тащишь AXI-шину и редактор подсвечивает возможные точки соединения.
Вариантов много. Вероятнее всего — его айпишник был от какого-нибудь открытого прокси (потому что на харкаче запрещено постить с огромного количества зарубежных айпишников), потом с этого прокси шутники запостили спам/ЦП, и все посты с этим айпишником пошли под снос без разбору.
"Ну и вы тоже говорите."
Это где можно константы изменять без рекомпила. И содержание рамок записывать/считывать.
Чип-планер у Квартуса лучше в разы.
Сигнал-тап вообще небо и и земля.
>>61406
>vio/ila дает на клыка этому вашему сигнал тапу
Ой насмешил, садомит.
https://youtu.be/_wL5WAxNPrY
В виваде есть анализатор кода. Не помню как зовется.
Правда толку мало от него, раз он на мой говнокод всегда писал, что "ну короче заебимба".
Да хотя бы возможность задания сложной логики для синхронизации 1:16:45
Или даже создание целых автоматов для сложной составной синхронизации 1:26:55
И это не говоря о возможности подключить свой HDL-код.
А ещё входы и выходы внешней синхронизации для каскадирования нескольких СигналТапов, чтоб можно было дебажить модули работающие от разных частот.
>>61470
Да не, ты не понял. Подключаешь к СигналТапу свой HDL-код как доп функцию для расширения возможностей по синхронизации. Нужно, например, тебе отловить момент который наступает при хитрой последовательности событий - пишешь соответствующий код и добавляешь его к СигналТапу и когда код отловит этот момент СигналТап триггернётся.
Можно конечно и просто отдельный модуль написать и к нему присосаться. А тут он интегрируется внутрь СигналТапа и становится его частью.
И кстати, СигналТап можно добавить уже после компиляции проекта.
> И кстати, СигналТап можно добавить уже после компиляции проекта.
Только вот все равно при любом изменении на сигналтапе придется рекомпилиться.
>И кстати, СигналТап можно добавить уже после компиляции проекта.
ИЛА можно подключать после синтеза.
Врубаешь инкрементальную компиляцию и рекомпилишь только изменения в проекте.
>>61484
Ну я с ISE сравниваю, там эту ИЛу нужно было ручками себе в код вставлять, все сигналы прописывать, подключать, потом ещё с глючным и кривым интерфейсом бороться. А в этих ваших Вивадах может уже что-то и доработали.
НУ ты спросил где связь - я тебе ответил.
Скорее PlanAhead это Vivado в юношестве.
Мб ты слишком последнюю версию квартуса скачал, которая его уже не поддерживает? В 15 и 16 сыклон 4 точно есть
>>61701
Четвертый циклон поддерживают версии квартуса до последней включительно http://fpgasoftware.intel.com/devices/
Помнится моя плата с циклоном 4 на борту как раз с лайтом работала.
Там надо или комплексную версию качать, или отдельно докачивать поддержку четвёртого Сыклона.
chipscope поддерживает virtual cable? Через меню plugin у меня только такое "xilinx_platformusb PORT=USB21 FREQUENCY=6000000". И parport еще.
Кто объяснит разницу между GDDR3 и DDR3? Чего особенного в Gрафической памяти и какие подводные если поставлю GDDRx заместо DDRx?
>GDDR3
DDR3 SDRAM (англ. double-data-rate three synchronous dynamic random access memory — синхронная динамическая память с произвольным доступом и удвоенной скоростью передачи данных, третье поколение)
GDDR3 (англ. Graphics Double Data Rate 3 — двойная скорость передачи графических данных 3) — специальная технология памяти для графических карт, разработанная ATI Technologies.
Имеет почти такое же технологическое ядро, как DDR2, но более высокую эффективную частоту.
Я ненастоящий сварщик, но мне кажется, что это немного разные типы памяти.
У тебя есть gddr модель для симуляций?
GDDR на более высоких частотах работает, как минимум.
Даташит у меня есть только на DDR, так что большего не знаю.
>Общими отличиями GDDR от DDR являются более высокие номинальные частоты работы первой. Также GDDR содержит упрощения электрического интерфейса и применение ряда специальных приёмов управления буфером ввода-вывода, что позволяет достичь несколько большей пропускной способности и более высоких рабочих частот по сравнению с DDR SDRAM. Кроме этого, GDDR имеет по сравнению с DDR более низкое энергопотребление и тепловыделение при работе на равных частотах.
Даже на викии есть. Короче, контроллер немного другой надо писать.
Легко гуглится пример даташит на память hyb18h512321af с видеокарты. Визуально интерфейс как у DDR3, поэтому и возник вопрос в чем подвох и отличие?
Лучше чего-нить посвежей.
Но тут по фишкам ничего нет. Ну кроме ддр адреса, в отличие от ддр4.
https://www.micron.com/-/media/documents/products/data-sheet/dram/gddr/4gb_gddr5_sgram_brief.pdf
Не совсем понятен вопрос, ты в принципе не в курсе, как это делается, или тебя конкретно Address Editor в IP Integrator не устраивает?
axi-интерконнектор знает адрес слейва или проверка адреса производится самим слейвом?
Старшие биты использует акси интерконнект, чтобы переадресовать транзакцию на нужный интерфейс. Младшие биты использует слейв, чтобы выбрать нужный регистр. Слейв не знает о своём месте в пространстве адресов, он только младшие биты смотрит.
Когда на один интерконнект вешаются axi full и axi light, при генерации проекта вивадо автоматом вставляет на нужный интерфейс конвертер протокола. (Ещё она умеет согласовывать интерфейсы с разной частотой и шириной шины, да и вообще няшка.)
Если неиспользуются бёрсты, то можно соединить 1 в 1, если используются бёрсты, то нужно вставить модуль разбивающий бёрсты на одиночные транзакции
Никак. Ты хочешь чего-то неправильного и даже, я бы сказал, грешноватого. Уточни свою задачу.
Задачи нет - учеба. Хочу проверить ddr память на борде. Думал собрать так: контроллер ddr axi-slave + spi-slave axi-slave + axi-interconnect + risc-v axi-master (или fsm axi-master, но я пока не готов написанию такого). С компа через spi записывать в память, а потом читать.
Ну так ты не слейв со слейвом соединяешь, а подключаешь несколько слейвов к одному мастеру. В виваде тыкаешь в интерконнект и выбираешь число мастеров и слейвов. Насчёт исе тебе господин выше уже пояснил, я склонен его поддержать. На самом деле я им пользовался 666 лет назад и не помню, как там эта хуйня настраивается.
теоретически да, но не нужно
Есть куча способов прошить одну плис другой, обычно одна плис эмулирует работу загрузочной флеш для второй
> Ты хочешь чего-то неправильного и даже, я бы сказал, грешноватого
В смысле? Прости, а как по твоему работают дма контроллеры или многоядерные системы? Axi для этого и пилилась, чтобы мультимастер мультислейв нормально работал
Хочу вкатиться в fpga и выбираю плату
Эту стоит взять?
https://ru.aliexpress.com/item/1000006630084.html
И что там к ней ещё надо? Ну типа отладчик или что?
Ну я могу и этот artix-7 себе позволить, не особо напрягаясь. Думаю даже usb3.0 плату докупить до кучи. Это же не 20к за отладочную плату
>>62784
> И с ISE вместо среды разработки.
В смысле? У xilinx плохо со средами разработки или что?
И ещё, тут юзал кто нибудь китайские отладчики с али для xilinx?
> Думаю даже usb3.0 плату докупить до кучи.
Закидай говном мануалами для совсем тупых и безмозглых амеб как ее запускать. Платка есть, а останков мозгов не хватает для запуска и укрощения поноса из трафика из этой игрушки.
Ты видимо шутишь, ведь это я ньюфаг, который спрашивает совета в этом итт треде. Но как я понял, на сайте Кипариса овердохуя примеров и аппноутов, как с этим делом работать. От руководства программиста до подключения к ПЛИС.
Нет, не шучу. Тоже ньюфаг себе выкопал худенькую платку с EP4CE15F23 и еще более тощую платку с EP4CE115F23 под мигалку гирляндой (платки искались максимально голые с большим количеством IO под бредовые идеи очень надеюсь что они получатся). Ну и поделки от Кипариса, про которые вообще не в курсе что и как и с какого бока к ним подходить.
Плюсики в карму QMTech и FPGA Board Store.
> поделки от Кипариса, про которые вообще не в курсе что и как и с какого бока к ним подходить.
Там же тонна всяких примеров
https://www.cypress.com/documentation/code-examples/usb-hi-speed-code-examples
https://www.cypress.com/documentation/code-examples/usb-superspeed-code-examples
>В смысле? У xilinx плохо со средами разработки или что?
У xilinx всё отлично со средами разработки если это не ISE. Vivado заебок, например, но она не поддерживает старые линейки плисов, вроде Spartan 6.
> Vivado заебок, например, но она не поддерживает старые линейки плисов, вроде Spartan 6.
А как это?
В смысле для мира ПЛИС это нормально, что новые ide не поддерживают старые камни? Почему так?
Потому что внутренности разные. Тебя же не удивляет что для процессоров с разными архитектурами, как правило, требуются разные компиляторы?
Ну там основной набор команд не меняется десятилетиями, и какой-нибудь gcc-arm может компилить хоть для кортексов-м, хоть для взрослых армов в смартфонах. И я бы очень удивился, если бы какой-нибудь следующий gcc вдруг перестал поддерживать предыдущее поколение. Ну в-общем ладно, я понял суть
>хоть для кортексов-м, хоть для взрослых армов
Cortex-M это почти что Cortex-A, только без возможности переключения с набора команд thumb-2 на ARM, если я ничего не путаю. Так что отличий не столь много.
https://www.gnu.org/software/gcc/gcc-9/changes.html
>Support for the deprecated Armv2 and Armv3 architectures and their variants has been removed. Their corresponding -march values and the -mcpu options that used these architectures have been removed.
Потому что поддержка старых камней увеличивает объём программы. Если правильно помню, то поддержка одного Сыклона 4 требует около 500 МБ.
> Cortex-M это почти что Cortex-A,
Ну вот и я думал, что spartan-7 это почти что spartan-6, только на 28нм техпроцессе
Как у вас всё сложно, однако
Кстати, armv2 это пиздец какое старьё, 86(!) год.
У альтеры/интела это можно докачать отдельно. Но при этом поддержку старья понемногу выкидывают, как и везде. Поэтому объем - это не аргумент.
Ну так всё ровно сама интеграция этого старья в новое ПО усложняет это самое ПО. Например для древних Флексов не было ЧипПланера, была какая-то его приметившая версия, не помню как называлась. И чтобы поддерживать Флексы нужно держать модуль этого старого ЧипПланера в ПО.
Ебать-колотить. Мало того что пылящимся wget-ом не слить, а только через ручное хождение по ссылкам (у того же st можно сразу пачкой слить), так еще и нужно делать зоопарк из древнего кейла. Вообще похуй. USB3.0 не очень скоро устареет, поэтому без разницы - на днях или через пару лет получится укротить. DIY же.
Покажи что есть в кактусе. Букву N не найдешь, а вот С8 - найдешь.
Иногда бывает так что в Квартусе только GX серии 4 Сыклонов стоят. Остальные надо докачивать. Хотя тут от дистрибьюта зависит, есть такие в которые недокачаешь. Вообще если работаешь только с такой плисиной ставь верисии Квартуса постарее, они и быстрее и лучше работают. Я предпочитаю 9.1SP2, там и встроенный симулятор ещё есть.
Какие тулзы? Для какого циклона?
Квартус 9.1SP2 работает норм для циклонов с 1 по 3 включительно. Для 4 тоже работает, но нет встроенного моделирования, а оно и не нужно по большому счёту, если можешь в верилог и моделсим.
> dram (не sdram)
Хоть понял что за хуйню написал? DDRх и SDRAM - это динамическая память, разница в том что SDRAM передает данные по одному фронту тактового сигнала, а DDRx - по двум фронтам тактового сигнала.
> sram
Погугли как адово нелинейно растет стоимость SRAM от 4 мегабит и выше.
Видимо с размером памяти не определился, раз такой вопрос.
> Посоветуйте fpga-борду
Предпочтения? Altera, Xilinx, Lattice?
Это трололо пост если че.
DRAM, да. DRAM реально такая некрофилия нужна?. Почитай мне на ночь сказки про типы памяти. В тишине знаешь ли плохо засыпаю.
Кандидат для тестов KM41C256.
Хули это говно провалилось? Дешевле срам, но и быстрее тормознутых сдрам. Идеальная середина.
Можно в цифрах? Очень желательно привести маркировки(названия) микросхем статической и динамической памяти для сравнения характеристик. Статическая память 2-4 мегабита вполне вменяемо стоит и нет ебли с регенерацией.
Вообще-то ты первый бзданул и не назвал даже пары кандидатов для сравнения.
> Дешевле срам, но и быстрее тормознутых сдрам
Как-то так научись хотя бы digikey пользоваться https://www.digikey.com/products/en/integrated-circuits-ics/memory/774?k=&pkeyword=&sv=0&pv142=1644&sf=0&FV=ffe00306,f040017&quantity=&ColumnSort=0&page=1&pageSize=25
Более-менее основные варианты - 3-4$ за SRAM 256Кх16 с временем доступа 10нс. Дораха - пиздуй в кетай к дяде Ляо.
> Посоветуйте fpga-борду с dram (не sdram)
OCHE TOLSTO. Ну разве что искать додревние платы двадцатилетней давности на вторичном рынке.
> или sram до 20$
Выбери одно. Или sram или «до $20» (стартеркитовские платы обойдутся где-то в $45, чего-то более дешёвого мне не попадалось). Ну или покупай у дядюшки Ляо плату «без нихуя», с одной ПЛИСиной. Будет тебе килобит 200 статической памяти внутри чипа.
>>64577
https://electronics.stackexchange.com/questions/42330/sdram-advantages
Пришлось за тебя гуглить. Раза в 2-3 больше (40-60$) можно найти древние циклоны с чуть меньше, чем нихуя SRAM где-то самому допаивать надо и SDRAM. С миром Xilinx не знаком.
https://www.aliexpress.com/item/free-shipping-ALTERA-EP2C8-FPGA-core-board-with-SDRAM-SRAM-FPGA-development-board/32506229195.html
https://www.aliexpress.com/item/Free-Shipping-ALTERA-EP2C8F256-core-board-with-SDRAM-SRAM-FPGA-development-board/2020064622.html
https://www.aliexpress.com/item/Free-Shipping-1pc-ALTERA-FPGA-NIOS-EP2C8F256-core-board-with-32MbyteSDRAM-64KbyteSRAM/1419912904.html
https://www.aliexpress.com/item/Altera-NIOSII-FPGA-Development-Board-SOPC-Board-EP2C8Q208C8-USB-Download/32219533208.html
https://www.aliexpress.com/item/Free-Shipping-ALTERA-EP2C8Q208-FPGA-Nios-II-development-board-learning-board-minimum-system/1293316130.html
В самом дешманском EP4CE6E22C8 используя банки 5 и 6 получу 3 канала LVDS под данные и один под тактовую частоту?
Используя HSIODR могу передавать до 640 мегабит на канал и по итогу получить поток данных в 1920 мегабит (240 мегабайт в секунду)?
Если конфигурационное ПЗУ перешиваешь (память 25 серии или EPCS) - то читай даташит на память. Десятки тысяч.
Если же через JTAG заливаешь конфигурацию в сам циклон - то остается пожелать удачи в попытке убить SRAM память в циклоне, что в принципе нереально. Хоть каждую секунду перешивай - не получится ушатать. Исключая вариант когда забыл поставить свободные порты input tristate и поставил output driven low или подобное.
Чей бластер? От Waveshare у меня не запускался, как и на PIC18F2550. Точнее видны, но при любых действиях по таймауту все отваливается.
Новая версия rev.c на PIC18F14K50 - сразу встала и работает.
Устанавливалось через "из местоположения на диске" и указывал куда-то в недра 17-го кактуса.
>В папке с квартусом драйвера вижу.
Должны быть, либо ты устанавливал что-то не то или как-то не так. Попробуй найти драйвер поиском по расширению файла (.inf и .cat).
Китайский. Какой бластер лучше?
Еще вопрос по прошивке. Я описал такую цепь:
module light(x1, x2, f);
input x1, x2;
output f;
assign f = ~((x1 & ~x2) | (~x1 & x2));
endmodule
Конфигурацию пинов задал. Параметрам x1 и x2 соответствуют две кнопки, а значение функции f связано со светодиодом. Но почему-то без нажатия на кнопки диод горит, а при нажатии гаснет. Чтобы сделать наоборот, я добавил логическое отрицание. Почему цепь работала не так, как я ожидал, и лампочка загорается, когда f = 0?
>Но почему-то без нажатия на кнопки диод горит
Смотри схему твоей платы. Кнопка может быть подключена таким образом, что когда она не нажата на входе будет лог. 1.
> Китайский. Какой бластер лучше?
Рабочий. На PIC18F14K50 точно работает в разных вариантах и позах.
> Но почему-то без нажатия на кнопки диод горит, а при нажатии гаснет.
В код не вникал. Схему платы смотрел? Прямо в лоб пробовал соединять кнопку со светодиодом и смотреть что будет?
1) На не нажатых кнопках 0 и при нажатии 1 или наоборот?
2) Светодиоды зажигаются 0 или 1?
(Нужное подчеркнуть)
У меня на вин10 удалось совладать с юсб бластером только через установку драйвера от 9ого к квартуса в режиме винды "без проверки подписи драйверов".
А я просто открыл диспетчер устройств, нашел в нем бластер и установил драйвер через меню. Причем драйвер установился только когда я указал путь к папке /quartus/drivers. Если я прямо указывал папку с драйвером для x64, инсталлятор драйверов говорил, что не видит драйвер.
> Причем драйвер установился только когда я указал путь к папке /quartus/drivers.
Это все я пробовал кучу раз и на разных компах.
Какая версия квартуса?
>Если я прямо указывал папку с драйвером для x64, инсталлятор драйверов говорил, что не видит драйвер.
Естественно, потому что установщику нужен .inf файл.
>>64938
Аналогично. Драйвер ставил от квартуса версии кажется 18.0 или 18.1. Причем у одного сотрудника стоит на десятке квартус версии 9.0 (других версий не стоит) и тоже все работает.
>>64937
Проверь в диспетчере устройств VID/PID твоего бластера.
Что значит continuous в этой контексте? Последовательный или непрерывный (в смысле, обновление значения справа непрерывно вызывает обновление шины слева)?
>непрерывный (в смысле, обновление значения справа непрерывно вызывает обновление шины слева)
Зис.
Комбинационная схема - это непрерывное присвоение. Изменение одного входа моментально влечёт изменение на выходе, согласно логике этой комбинационной схемы, естественно в любой КС есть задержки и время срабатывания элементов, но это уже проблема в другой плоскости.
Да, это правильные ид.
Даже не знаю что тебе посоветовать. Драйвер для бластера устанавливается точно так же как драйвера для других устройств.
http://free-pc.ru/windows/kak-ustanovit-drajver-neskolkimi-sposobami.html
>3. Установка драйвера через диспетчер устройств
Указываешь там папку с файлом usbblstr.inf (C:\квартус\quartus\drivers\usb-blaster). Все, готово.
Единственное что оно может ругнуться на отсутствие подписи, если квартус слишком старый.
Вот прямо сейчас проверил с квартусом 18.1 и китайским клоном бластера на PIC18F14K50, все устанавливается. С оригинальным альтеровским бластером тоже все работает.
На вкладке hierarchy один лишь топовый модуль, а остальные на вкладке files. Как вообще жить с этим?
>Если к триггеру - то нет. Если к элементу И - то да.
Разве триггеры используются в комбинационных схемах?
О том и речь что это разные вещи. Триггер, чтобы сменить состояние на выходе, ждёт тактового сигнала, а именно фронта. Комб. схема ничего не ждёт, меняет сразу.
Посмотри, может поможет
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
>>65162
Ну если ты накидал кода за один раз, что надо 20 минут ждать, то да.
Нахуя вот вообще было придумывать это деление на комбинаторную и синхронную логику? Оно же в чистом виде редко встречается.
>assign q = c ? d : q;
>Не понимаю о чем ты, но разве это не триггер, пусть даже с статическим управлением?
Это мультиплексор
Мультиплексор с обратной связью это не триггер? Если есть память, т.е. на выход влияет предыдущее состояние - значит триггер.
>Ну если ты накидал кода за один раз, что надо 20 минут ждать, то да.
В вивадо и ise ничего компиллить не надо было. Иерархия обновляется автоматически либо по команде. Зайлинкс более юзер-френдли ^^
> Мультиплексор с обратной связью это не триггер?
> с обратной связью
> обратной связью
Где на твоей схеме обратная связь на выходе мультиплексора?
>assign q = c ? d : q;
>Не понимаю о чем ты, но разве это не триггер, пусть даже с статическим управлением?
Нет, это не триггер. Это триггерная схема, т.е. комб. схема с обратными связями, которую ты сам нахуевертил. Чуешь разницу? Такие схемы делать строго настрого запрещается. У нас во дворе вообще за такое убивают нахуй. А всё потому, что такие схемы могут впадать в самогенерацию, виснуть и прочее. За всю эпоху существования цифровой техники человечество выработало необходимый набор триггеров, вот ими и пользуйся, они протестированы, изучены, исследованы и прошли проверку временем. Это тот случай когда отсебятину пороть не надо.
>Что-то ты странное пишешь. Если припаять провод к триггеру, то провод (сам по себе) уже нельзя считать комбинационным устройством?
Если его рассматривать в отрыве от триггера - да, это комб. схема с одним входом и одним выходом. И как в любой комб. схеме у него выход меняется мгновенно с изменением на входе без учёта задержек, в отличии от.
>>65187
Да хер там. Это пожалуй единственное его преимущество. Сравни например время добавления айпиблоков, ОЗУ хотя бы, или ПЛЛ, в Квартусе и Айсе. Тебя ждёт сюрприз.
>Это триггерная схема
Где ты там схему разглядеть ухитрился? Это просто кусок кода, описывающий D-триггер со статическим управлением. В какую схему он может синтезироваться это отдельный вопрос.
Схема схема, вход есть?, выход есть? - схема. Только, ещё раз, триггерная, а не сам триггер.
У тебя логика как у инопланетянина. Ну давай, заставь этот код работать нестабильно. Разумеется без синтеза, только симуляция.
Я говорю не только про ПЛИС, но про всю схемотехнику в целом. На рассыпухе запаяешь такую хрень - тоже работать не будет, хотя шансов больше. Да даже и ПЛИС, симуляция это же не самоцель, рано или поздно всё это в железе работать должно. А в симуляции можно такого понаписать, что даже синтезироваться не будет, не говоря уже о хоть какой-то работе.
>А в симуляции можно такого понаписать, что даже синтезироваться не будет, не говоря уже о хоть какой-то работе.
Молодец, ты уже почти пришел к выводу о том, что код - это не схема.
>На рассыпухе запаяешь такую хрень - тоже работать не будет
Если ты про соединение входа с выходом у мультиплексора, то это и без тебя тут все знали. Но кусок кода это еще не схема.
>симуляция это же не самоцель
Verilog и vhdl вполне можно использовать для симуляции рассыпухи, например. Чем не самоцель? Естественно что при этом вполне можно использовать не синтезируемое описание.
А тестбенчи ты значит не пишешь?
>ты уже почти пришел к выводу о том, что код - это не схема.
А я такого и не говорил.
>Если ты про соединение входа с выходом у мультиплексора, то это и без тебя тут все знали.
Не все, раз вопрос всплыл.
>Но кусок кода это еще не схема.
Причём тут вообще код? Вопрос был про то, почему нельзя делать обратные связи в КС.
>Verilog и vhdl вполне можно использовать для симуляции рассыпухи
Ради чего? Потому что можем? Если мы говорим о проектировании, то наша конечная цель - работа в железе, а не в симуляции.
>А тестбенчи ты значит не пишешь?
Причём здесь это?
Подъебал
Странно у меня почти никогда не было ситуаций, когда после симуляции у меня не работало на железе. Ну кроме таймингов и метастабильности.
Для этого нужно не знать цифровую схемотехнику и вкатываться в ПЛИС тупо с изучения синтаксиса HDL.
А что ты собственно делал, какого уровня сложности?
На микроконтроллере - мигнуть светодиодом
А что на ПЛИС?
При чем подключенным к кнопке.
module hui (
input wire clk,
output wire led
);
reg [23:0] clk = 0;
always @(posedge clk)
clk <= clk + 1;
assign led = clk[23];
endmodule
fix clk -> cnt
module hui (
input wire clk,
output wire led
);
reg [23:0] cnt = 0;
always @(posedge clk)
cnt <= cnt + 1;
assign led = cnt[23];
endmodule
Генератор на линии задержки из элементарных логических элементов есть в советских справочниках по схемотехнике.
Как всё сложно, ну да ладно, спасибо. Просто навеяло соседним ардуино тредом, где препод заставляет анона эмулировать работу базовых логических элементов на микроконтроллере
>где препод заставляет анона эмулировать работу базовых логических элементов на микроконтроллере
Классика бесполезных учебных заданий.
Ну я даже не знаю. С чего ты взял что ошибка в самом тестбенче? Единственная разница между клоком на твоей второй и третьей картинке это начальное состояние.
>[0:15]
От этого у тебя биты наоборот будут выстроены, слева будет младший бит, а справа старший. Мне кажется что так лучше не делать.
>>65644
>Что тебе не нравится?
ПЛИС - это не рассыпуха. После каждой компиляции ячейки используются разные, если не предпринимать специальных мер. Кроме того, связи между ячейками достаточно медленные, это не простой проводник, это целая куча мультиплексоров, позволяющие соединять ячейки почти в произвольном порядке, и они, зачастую - эти связи - работают медленнее чем сами ячейки. Всё это приводи к тому что подобные схемы работают либо нестабильно, т.е. плавает частота, либо работают не при каждой компиляции, либо перестают работать при изменении климатических условий.
А я бы еще глянул таких трюков на fpga/cpld
> если не предпринимать специальных мер.
Как на вивадо с этим бороться? В квартусе chip planner есть.
> planahead
Ты меня похоже троллишь. Смог нагуглить его только для ISE.
В вивадо я ещё нуб, но приходится осваивать.
Ты знаешь более надежный способ сделать мигалку светодиодом на FPGA без внешних частотно-задающих элементов?
>ПЛИС - это не рассыпуха.
Будто на рассыпухе такое будет работать достаточно стабильно. Может и на порядок стабильнее будет, но не настолько чтобы можно было такие генераторы где-то применять.
Сам нашел похоже - floorplanning.
Ну разве только помигать диодом у себя на столе, не более.
А иначе без
>внешних частотно-задающих элементов
никак.
Например у TerASIC
https://www.terasic.com.tw/cgi-bin/page/archive_download.pl?Language=English&No=856&FID=0ff4dea89d1960aabaf62cdb07f3bae4
(Платка TR5-Lite. В мануале смотреть страницы 37-38. Похуй что тут SFP+ - они от SFP отличаются только скоростью (10G против 1G) и сигналы управления/состояния одинаковые.)
Более чем уверен что везде UPC (плоская).
APC (угловая) в основном в сетях КТВ где не должно быть сигнала в обратку, или же в сетях xPON.
> пример подключения sfp-модуля к fpga?
Физическое - показано.
Если про передачу данных - то уже мимо. Не в курсе.
Если же копать в сторону Ethernet - то через SFP подули гоняют вывод SERDES (сериализатор-десереализатор) c кодированием 8b/10b и при гигабите в волокне реально летит 1.25гигабита.
Есть еще вариант SGMII (используется в 88E111x и подобных модулях SFP в выходом на медь) - с ним сложнее, тк есть режим согласования скоростей в отличии от тупого SERDES (но это не точно). И это только прием-передача. Для распознования что за дерьмо прилетело-отправляешь тебе нужен MAC блок.
Поэтому определись - если подключаться к Ethernet - надо будет дофига чего изучать.
Сама SFP - это не более чем тупой лазер и приемник, у которых внезапно есть ограничения по минимальной и максимальной принимаемой частоте и ему вообще поебать что за дерьмо ему будешь скармливать или принимать, поэтому считай что это тупо удлинитель на LVDS линий. Просто так постоянно "1" или "0" не сможешь отправлять - как минимум стоят разделительные конденсаторы на входе, которые отрежут постоянку, а во вторых - подавая постоянный сигнал нарушишь работу АРУ принимающего диода или драйвера лазера не помню где читал про эти грабли.
Макаба звёздочки по краям сожрала, как обычно.
Не оптимизировать эту цепь. Если логически она не нужна или может быть упрощена, компилятор ее все равно оставит. Полезно когда на синтезированый дизайн будешь цеплять отладку или для локализации ошибки, если в процессе оптимизации компилятор выкидывает весь проэкт нахуй
В смысле, сам сокет, куда вставляются ножевые контакты, такой же, а кожух отличается?
Первый попавшийся под МНОГОмод
https://www.aliexpress.com/item/E10GSFPSR-FTLX8571D3BCV-IT-E65689-001-SFP-Transceiver-for-X520-DA2-or-X520-DA1-850nm-300m-10G/32848817962.html
>>66156
>>66157
Сам разъем и сокет одинаковый, контакты одинаковые, сигналы (условно) одинаковые. Все одинаковое, разница в скоростях по парам приема-передачи.
В темноте на ощупь SFP от SFP+ можно отличить по скошенным краям самого модуля в районе контактов, но это не правило и попадаются SFP в корпусах SFP+ например "новые" модули от SNR.
https://forums.intel.com/s/question/0D50P00003yyGv0SAE/what-is-altera-library-for-16-bit-shift-register-lut-with-clock-enable?language=en_US
Спасибо двач, нагуглил сам.
Следующий вопрос опять же связан с изучением языка богов VHDL. Где квартус хранит стандартные либы? Почему Verilog-колхозники обходятся в основном без либ?
Что полезного можно найти в стандартных либах VHDL?
>Что полезного можно найти в стандартных либах VHDL?
https://www.csee.umbc.edu/portal/help/VHDL/stdpkg.html
Пишешь эту магическую хуйню перед или над объявлением сигнала, и воаля
Я бы, пожалуй, предложил написать два генератора прямоугольных сигналов с периодом в районе 60 Гц, но чуть-чуть отличающихся. Например, один 59 Гц, другой 61Гц. А потом поXORить их друг с другом и вывести результат на светодиод.
>Почему Verilog-колхозники обходятся в основном без либ?
Потому что VHDL-холопы должны страдать.
На, просвещайся
https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
Если так, тогда бы не задавал таких вопросов
>Почему Verilog-колхозники обходятся в основном без либ?
> если подключаться к Ethernet - надо будет дофига чего изучать.
А готовые ип-ядра/мегафункции можно где-то купить украсть?
https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=93252
https://habr.com/ru/post/234369/
https://fpgawiki.intel.com/wiki/Category:Interfaces
Почитал бы про модель OSI. В оригинале она 7 уровней, для сетевиков - 4. Самому некогда, но интересно было(прошлое время) заняться. Есть гигабитное железо в разных вариациях, есть и свич с 10G портами и SFP+, но нет борды FPGA с 10G трансиверами.
Пришло время покаяться.
VHDL конченное говно. Переносить код с одной платформы на другую это настоящий ад.
В случае с Верилогом достаточно написать обертки для платформозависимых сущностей. А с VHDL предстоит долгая ебля с либами. Нахуя нужны либы я так и не понел.
Так глянь во что синтезируется
Я таки портировал этот код. Помучался знатно, но еще не уверен, что заработает, жду железо.
пили на rom через readmemb
Сначала составь таблицу истинности, потом минимизируй её картами карно, после чего по получившимся выражениям построй схему в графическом редакторе. Тогда влезет.
АЦП для серьёзных задач выбирается под задачу. Для автоматизации курятника подойдёт любая хуйня, которую производитель не поленился засунуть в кристалл, и на параметры которой абсолютно похуй, но ПЛИС в таких задачах не используется.
Используются или нет это совсем другой вопрос. Засунуть внутрь простенькую АЦП производителю не представляет труда, по деньгам он не потеряет. А пользователю приходится городить огород на плате.
https://www.intel.ru/content/www/ru/ru/products/programmable/fpga/max-10.html
>MAX 10 FPGAs offer system-level cost savings through increased integration of system component functions:
>Analog blocks—Integrated analog blocks with ADCs and temperature sensor provide lower latency and reduced board space with more flexible sample-sequencing.
>это ЦПЛД
Интел их называет FPGA и в них действительно есть все то же, что обычно есть в FPGA, но в добавок конфигурационная память внутри.
>цена до жопы.
По сравнению с чем? Если >>59104 то для BGA плата может оказаться сложнее и дороже, особенно если ты делаешь махарайку в единственном экземпляре.
>Используются или нет это совсем другой вопрос.
Самое нелепое утверждение, которое я когда-либо встречал. ПЛИС, как и всё прочее — это инструмент, который делается под определённые задачи.
В анусе у себя что-нибудь нелепое поищи. У меня вопрос простй: почему я должен ставить два корпуса на плату вместо одного?
Фиговый критерий, по любым меркам. Экономия небольшая, а риск больше.
>>67431
>почему я должен ставить два корпуса на плату вместо одного?
1. Не должен, можешь использовать MAX10.
2. Твой вопрос из той же серии почему конфигурационную память не сделают сразу внутри.
3. У тебя не возникает вопросов, почему для питания ядра обычно нужно напряжение ниже 3,3 В?
Берешь что-то типа ZU29DR и не ебешь мозги. То что стоит овердохуя - нас не ебет. Хотел FPGA+ADC - получите и распишитесь.
https://www.xilinx.com/support/documentation/selection-guides/zynq-usp-rfsoc-product-selection-guide.pdf
Ты даже не можешь внятно написать чем тебе не подходит MAX10.
Не знал о таком. Прочитал, тоже кажется что это не нужно.
>если у case есть default?
Только там еще присвоить значение нужно, так что при использовании full_case код немного короче будет. Также это вроде как работает только для синтеза, а для симуляции не учитывается.
На счёт симуляции не знаю, а вот что full_case, что default = 3'dx дают одинаковую схему - факт.
Аналогично с ( parallel_case ), что он есть, что его нет, RTL-схема одна и та же.
>достаточно написать обертки для платформозависимых сущностей. А с VHDL предстоит долгая ебля с либами
С какими конкретно либами? И что ты подразумеваешь под платформой?
Cап /ra/! заканчиваю радиотехнический факультет провинциального Политеха. Программирование было с нихуя, за исключением пары-тройки шаблонных работ в Verilog. Раньше хотел пойти на второе высшее, но прочёл мнение, что программистам академическое образование ни к чему. Хотел бы вкатиться в программирование всяческих микроконтроллеров и прочего. Но понимаю, что это будет валяться мёртвым грузом без самых минимальных навыков и знаний. Короче, ещё один запрос каких-то базовых курсов, учебников и т.д. Чтобы уже через полгода мой быдлокод работал . Наиболее интересны языки: С++ (Arduino) и VHLD/Verilog (ПЛИС)
Нейтрального мнения об канале https://www.youtube.com/channel/UCXgs4exdtMpz4ccBZS3Yp4g
У меня только один вопрос - как он не заебался все это делать и снимать?
Открыл предпоследнее видео, а там минут 45 про case, casex и casez. При этом ни слова о том что будет, если подать на вход сигналы с состояниями z и x. Ну да, кто ничего не умеет - тот идет работать в отдел стандартизации, а кто даже этого не умеет - тот идет учить.
>>68119
>С++ (Arduino)
Да уж, это сильно.
Я такая же херня.
Очевидно что на вход case, casex и casez, т.е. в качестве того что в стандарте называется expression. Если применительно к видео, то на вход модуля Test, в котором набирался в этом видео код со всякими case, casex и casez.
Вот тебе пример. Что выведет в результате? И самое главное, какие из этого можно сделать выводы? Если в том видео такое разбиралось, то извиняюсь, значит недостаточно внимательно смотрел.
Нет, по моему это явно не то. Там ты подаешь на вход только комбинации из нулей и единиц. А я писал о том, что при использовании casex, при симуляции можно будет проглядеть появление неопределенных состояний на входе. То есть, при использовании casex, при симуляции может быть все хорошо, но на самом деле внутри будут неопределенные состояния, а это может вылезти уже при синтезе.
Вот на картинке немного более наглядный пример. Выведет
>case default
>casex 2'b00
>casez default
Из этого явно видно, что если при симуляции где-то внутри образуются неопределенные состояния, то casex их может замаскировать. Если уж объяснять различия кейсов, то этому эффекту нужно было уделить достаточно времени.
>Там ты подаешь
Я - не он.
>при использовании casex, при симуляции можно будет проглядеть появление неопределенных состояний на входе
24:20
Да, проглядел. Ну тогда почти нормально, только правильные выводы не сделаны. Обрати внимание на 41:30. На самом деле не нужен casex, а вовсе на casez. По крайней мере в синтезируемом коде casex вреден.
Хотя я тоже могу в чем-то ошибаться.
> На самом деле не нужен casex, а вовсе на casez. По крайней мере в синтезируемом коде casex вреден.
Не совсем понял мысль, ну да ладно.
Да, убедительно.
Бля, пиздец. Хуле так плохо? Как можно X в проводе воспринимать как "тебя не должно ебать, что здесь находится, расходитесь, здесь нечего смотреть"? Нахуй такое делать в симуляторе, если по физическому проводу подать такой сигнал физически невозможно? Я хотел придумать смишную шутку, сравнивая с чем-нибудь подобное поведение, но даже специально не смог придумать что-то более нелепое. Я всегда считал, что X как значение сигнала означает "неизвестно или явно не установлено, возможен любой вариант", и не предполагал, что может быть иначе.
Это не "как можно быстрее".
"Как можно быстрее" — это подать вход на 30 компараторов одновременно и вывести сигнал от компаратора, который показывает "не меньше", если следующий за ним показывает "меньше".
>Мне в голову пока приходит только мысль о том, чтоб поставить 5-ти разрядный компаратор
Почему пятиразрядный? Ты точно знаешь, что границы диапазонов у тебя определяются старшими 5 разрядами, а в младших 8 всегда нули? Что будешь делать, если диапазоны разбиты как 0-1, 2-3, ... , 60-61, 62-8191? У тебя границы-то вообще предполагаются жёстко заданными, или подаваемыми на схему в процессе работы?
>свой ЦПУ замутить на ПЛИСе
Будто раньше нельзя было. Даже в этом треде есть исходный код простенького процессора (150 строк на верилоге). Или ты про процессоры, на которых будет работать линукс? Так и такие, с открытым исходным кодом, уже довольно давно существуют.
RISC-V. Сейчас основной дроч на формальную верификацию. Есть даже свободно-открытые ПО от сообщества гиков и FPGA-платы от Lattice с открыто-свободным битстримом. Не такое крутое, конечно, как у Altera или Xilinx, но зато швабодка.
Если есть пример похожей электрической принципиальной дайте знать
Данным способом с разницей, чем дольше - тем больше точность. Если у тебя каждый счётчик подсчитает по одному периоду какой будет результат?
Если эти частоты невысокие относительно тактовой, тогда можно подсчитать длительность одного периода каждого сигнала в единицах тактов тактовой частоты и после поделить.
>>68952
>>68994
С добрым! Я просто вообще не в теме, поэтому подумал что это какая-то крутая новость, а так получается просто рекламная акция? А какого уровня нужна ПЛИС, чтобы сделать простенький ЦП (типа Z80 или STM32F103)? Какая получится производительность? Чтобы подключить внешнюю DRAM-память, понадобится отдельная ПЛИС? Чтобы сделать вывод изображения по LVDS / DPI (ноутбучные / мобильные панели) - для этого нужно будет задействовать ещё одну ПЛИС? Вобщем, что-то типа хобби-ПК хочется реализовать.
>Вобщем, что-то типа хобби-ПК хочется реализовать.
Парень, нахера оно тебе надо? Иди лучше в веб дезигн. Там и денег больше будет.
cortex m3 нет же в открытом доступе. m1, кажется, есть
Открытая лицензия RISC-V даёт возможность собирать абсолютно кастомный CPU. Швободные FPGA-платы дают возможность делать это относительно недорого, у себя дома, в железе, а не только в симуляторе. Формальная верификация и современные среды разработки позволяют автоматически проверять дизайн твоей архитектуры на соответствие формальным правилам синтеза, вписываемость её в установленные ограничения, отсутствие багов, что даёт возможность поманяфантазировать о развитии в недалёком будущем технологий костылирования железа до уровня костылирования ПО. Это очень круто для людей в теме.
Память и всяческие контроллеры ввода/вывода на FPGA-платах обычно присутствуют. Есть, конечно, любители паять это дело вручную.
Часть коннекторных падов поключена к плис скоростными дифлиниями и планируется подключать к борде что-то более-менее скоростное, типа hdmi.
Да, Synopsys VC Formal поддерживает, называется это у них "X-Propagation Verification (FXP)" Сам не пробовал, денег нет таких.
еуые
Подключил китайский usb blaster на stm32f103c8t6, поставил драйвера из quartus lite 18.1, а при открытии Tools/Programmer из квартуса ловлю BSOD .
Как быть?
причём в CentOS7x64 в виртуалке всё нормально подхватилось, но мне не хочется каждый раз для прошивки запускать виртуалку.
Перепробовал кучу дров (от 16, 16.1, 19.1, для семёрки) - либо BSOD, либо квартус не видит бластера. Поставил таки в бубунту snandalone programmer и всё заработало.
>>70811
>Переустанови ШИПДОШS
Без гарантии, что бластер заработает, и потом ещё день ставить весь мой софт и всё настраивать. Спасибо, анон, ты гений.
Может у тебя с пекой чего, попробуй на другой.
В процессе обучения сформировалось стойкое желание разрабатывать электронную аппаратуру, писать под неё программы (под этим я подразумеваю всякие микроконтроллеры, ПЛИСы и т.д.).
Так же хочется расширить знания по цифровой схемоте, методам изготовления микросхем, плат, различной периферии и т.д.
Итак, вопрос, какие направления магистратура и ВУЗы дают такие знания?
>сформировалось стойкое желание разрабатывать электронную аппаратуру
К врачу, если само не пройдет.
> какие направления магистратура и ВУЗы дают такие знания?
Никакие, в вузах только устаревшая хуита.
Я понимаю, но они же хоть что то знают?
Хуевый будет специалист что-то делающий на FPGA, если не сможет написать простенькую программу на Си. Разное тут скорее "методы изготовления микросхем" и остальное. Да и то, это немного рассказывают для общего развития на всех смежных специальностях.
>>71198
Точно, все устарело. Математика, физика, РЦС, основы ЦОС и прочее. А еще в FPGA теперь без транзисторов наверное обходятся, потому что они тоже устарели.
>>71201
Для того чтобы быдлокодить всякую ерунду не требуется высшее образование.
> Математика, физика, РЦС, основы ЦОС и прочее. А еще в FPGA теперь без транзисторов наверное обходятся, потому что они тоже устарели.
> инб4 в магистратуре учат, а не дают устаревшие лабы из 70х
>Для того чтобы быдлокодить всякую ерунду не требуется высшее образование.
Я не хочу быдлокодить, поэтому и спрашиваю где можно поучиться?
Если так ставить вопрос (пусть меня научат!), то нигде наверное. Думаю, что на любой специальности рассказывают много чего необходимого, весь вопрос только в том, что у тебя после этого в голове задержится.
Может он хочет софтпроцессор и писать для него программы.
Светодиодом помигай.
https://cocotb.readthedocs.io/en/latest/introduction.html
Минусики таковы, что как только ты захочешь применить эту вещь к чему-то более сложному, чем мигание светодиодом, окажется, что пердолинг растет по экспоненте в квадрате.
Плюсики там написаны (правда сомнительные): занимаешься пердолингом не на Систем Верилоге, а на Путоне.
А Ментор уже может в параллельность?
Сам им пользовался только совсем давно в бесплатной версии из комплекта Quartus, сейчас на работе используем Cadence Xcelium, как раз в понедельник получили версию 19.03 и сегодня буду смотреть, как заставить его в параллельную симуляцию.
Квеста на прыщах может. Но там танцы с бубном.
Ну раз пилил, значит уже изобрёл. Доведи до ума и радуйся.
Ну например, что у кряктуса UART можно использовать только как корку для ниоса.
Мимо-другой-анон
В смысле? У него же выведен Avalon ST (вроде, хотя, может, и MM), разве этого недостаточно? Или тебе нужен именно AXI или APB и чтобы без мостов?
По-моему его нельзя инстанцировать в вакууме, гуи не позволяет, только как корку внутри Ниоса. Может из исходников получившейся сборки его можно выдернуть, но это такая себе ебля, можно у же и свой написать (в книге Pong Chu есть хороший пример)
Это же возникает мультиплексор 32в1, не факт, что вообще что-то путное разведется.
Может бывают какие-то конвейерные мультиплексоры?
Может начнешь с чего-то условно попроще?
Погугли поточные (потоковые) сети типа SDH(PDH) и элементарный поток E1. Там как раз что хочешь сделать. Осторожно, там ебаный и неиллюзорный дроч с синхронизацией между всеми узлами. А мне впадлу этим заниматься.
Такое разрабатывают за деньги.
Недавно понадобилось данные шириной 2880 бит переупаковть отдельными посылками по 32 бита и положить в FIFO.
Добавил простенький FSM, который обрабатывает ready/генерирует valid протокола AXI-Stream, и хилыховскую корку AXI Stream data width converter (320 байт → 4 байта, т.е. 90в1). Вообще не ебался, всё заработало сразу, из шины шириной 2880 бит делает 90 посылок по 32 бита вокруг пальца на глазах у всего мира как по нотам. Не смотрел, что там синтезируется, но, наверное, луты. Хуле на них смотреть? Советую AXI Stream использовать для твоей цели, много бесплатных корок для стандартных операций с ним (FIFO, переупаковка по ширине, clock domain crossing, пакетирование, маршрутизация, дублирование, объединение, etc).
Упустил одну мелочь - в потоках Е1 у тебя постоянный поток говна, а не то густо, то пусто как в пакетных сетях Ethernet.
Для первичного разбора ситуации самое то и проще в реализации. Реально не ебу как там происходит первичная синхронизация чтобы поймать 0 слот относительно которого идет прием и разбор на подпотоки.
Тут тебе просто дан пример - что такое оборудование есть с бородатых времен. Привет цифровым АТС. Чего только в потоки E1 не пихали - и Ethernet, и rs232 (живьем видел) и много чего. Нехватает 64 килобит? Бери склеивай 2,3,4.. слотов читай как задание на реализацию для продвинутых.
Напоследок скажу что всякое потоковое оборудование (те же конечные мультиплексоры) обычно стоят как крыло от самолета, в отличии от металлолома под пакетные сети.
Так что твоя идея не нова, все давно реализовано, ищи и дан будет ответ.
>>73820
Очень просто.
В Е1 - даже если нечего передавать - передаются нули. Там нет пауз или тишины в линии - всегда идет передача.
В пакетных сетях (тот же Ethernet) - данные передаются фреймами определенного формата и длины, между которыми есть промежутки (IPG) и длина фрейма разная - более-менее постоянная длина заголовка с адресами и переменной длины для данных. Нечего передавать - у тебя только link pulses на линии.
Из-за всех этих служебных полей у тебя образуется неслабый джиттер в выдаче данных, которого нет и он предсказуем и постоянен в поточных сетях. Для жесткого риалтайма - это фейл.
Для промышленности есть немного другой Ethernet с кучей костылей, в частности IEEE 1588, особые свичи допускающие кольца в сети (видел у бывшего Micrel).. Джиттер там никуда не девается, которого принципиально нет в поточных сетях, где задержка передачи стабильна и постоянна.
cпасибо за ликбез
Altera говорит пиздуйте в Power Estimator, а смысл там смотреть данные для мигалки светодиодом? Данные для максимально тяжелой загрузки при использовании всей логики и триггеров на максимальной частоте оно не показывает.
reg we;
always@(posege clk)
begin
if (event1) we <= 1;
if (we) we <= 0;
end
Я понимаю, что здесь лучше сделать детектор фронта, но дело происходит в здоровой стейт-машине и как бы мне не хотелось одним лишь детектором фронта не обойтись.
Здесь вроде глитч образуется, не?
В твоём варианте we будет перещёлкиваться каждый posedge clk, если event1 высок несколько тактов подряд. Хочешь, чтобы we длился ровно 1 такт — надо писать детектор фронта, хули поделать, жизнь — боль.
Алсо писать, как у тебя, допустимо, но выглядит как говно, сделай хотя бы if/else, чтобы два неблокирующих присваивания за одно событие одному регистру не происходили, такое невозможно в железе.
begin
if (we) we <= 0;
else if (event1) we <= 1;
end
reg [1:0] we;
always@(posege clk)
begin
if (we[0]) we <= 2'b10;
else if (event1 && we == 2'b00) we <= 2'b01;
else we <= 2'b00;
end
Нужный тебе сигнал будет на we[0]
always@(posege clk)
begin
if (we[0]) we <= 2'b10;
else if (event1 && we == 2'b00) we <= 2'b01;
else if (!event1) we <= 2'b00;
end
быстрофикс
>В твоём варианте we будет перещёлкиваться каждый posedge clk, если event1 высок несколько тактов подряд
Это да, но по event1 я перескочу на другое состояние одновременно со сбросом we.
Бля, а че так нельзя?
reg [1:0] we;
wire trig = we == 2'b01;
always @(posedge clk)
we <= {we, event};
Можно.
Я люблю, чтобы на выходе модуля был регистр, а не комбинационная схема, так clock domain crossing проще делать.
>clock domain crossing
Часто приходится это делать? Из моей практики разве что на всякие внешние ресеты приходилось ставить синхронизатор. А шины данных через тактовые домены пробрасываю с помощью двуклоковых fifo/bram
>А шины данных через тактовые домены пробрасываю с помощью двуклоковых fifo/bram
Нахуя, достаточно же одного триггера-флага.
Мы с тобой об одном и том же говорим?
CDC-синхронизатор это устройство из двух и более последовательных регистров. Как с его помошью пробросить целую шину?
Если на каждый бит шины поставить по синхронизатору - то это так не заработает.
Вспомнил историю, после которой я начал так делать со всеми модулями, для которых неизвестно, куда в будущем может уйти их выход. Там даже не было cdc.
Был один модуль, у которого на выходе была комбинационная логика — он брал значения из регистров, лутом вычислял результат и передавал наружу без защёлкивания. Был другой модуль, у которого в одном из подуровней был асинхронный резет:
always @(posedge clk, negedge aresetn)
if (!aresetn)
result <= 0;
else
result <= some_xynta;
Казалось, что может пойти не так? Ну, гайдлайны рекомендуют синхронные резеты, но они тратят луты, а вход на сброс — вот он, уже готовый, на каждом регистре есть.
А потом оказалось, что на более высоком уровне иерархии комбинационный сигнал с первого модуля проходит на асинхронный резет внутри второго. А комбинационная логика даёт валидный сигнал только в заданные моменты времени, а между ними она может болтаться как угодно. В итоге у меня резет срабатывал в каждом такте, хотя "валидное" значение всегда было 1. Я искал этот баг с бубном и жертвоприношениями несколько дней. После этого комбинационные выходы у меня вызывают инстинктивное отторжение, вроде психической травмы. Ну и асинхронные резеты тоже. Плюс вспомнились ранее прочитанные гайдлайны, где выходы рекомендовалось делать на регистрах, и пришло осознание, для чего оно так.
Бывает, хуле.
>После этого комбинационные выходы у меня вызывают инстинктивное отторжение, вроде психической травмы.
Надо с этим совладать. А то как же например без комбинаторных выходов запилить AXI-интерфейс?
Если такое приходится делать, я обычно вставляю AXI register slice. Но правило, что выходы должны быть на регистрах, я почерпнул как раз из гайдлайнов по AXI.
Или ты меня не понял, или я тебя.
В одном тактовом домене сначала пишешь в регистр своё передаваемое слово, потом выставляешь флаг в триггере. В приёмном тактовом домене ждёшь пока флаг выставится и если выставится - значит можно читать с регистра передаваемое слово, оно там актуально и стабильно. Никаких двуклоковых fifo/bram тут не нужно.
>>74588
>А потом оказалось, что на более высоком уровне иерархии комбинационный сигнал с первого модуля проходит на асинхронный резет внутри второго.
Это как так оказалось? Чей-то проёб, не иначе. Асинхронный сброс на то и асинхронный сброс что делается для сброса всей системы в исходное состояние, а значит внимание ему должно уделяться особое.
>Чей-то проёб, не иначе.
Люди ошибаются, человеку свойственно ошибаться. Нет программ сложнее хеловорлда без багов, и железки сложнее мигалки светодиодом без багов тоже нет. Но не каждый день удаётся словить баг, который невозможно увидеть на ILA, потому что ILA пишет сигнал только в "правильные" моменты.
Это будет работать при условии, что состояние на шине данных будет длительное не будет меняться во время синхронизации. Какой-то конфигурационный параметр передать можно, но поток данных таким образом эффективно не передать.
Передать, только медленно. А ели нужна скорость, то - да.
>>74594
>Но не каждый день удаётся словить баг, который невозможно увидеть на ILA
Я взял за правило в начале имён асинхронных входов ставить букву а, что-то вроде aReset, что предотвращает от подобных косяков.
Тоже прохладную запилю.
У меня было два автомата, оба Мили. И вот они обменивались сигналами между собой. Казалось, что могло пойти не так? А на деле некоторые выходные сигналы одного автомата срывались в автогенерацию, т.е. начинали переключатся на какой-то высокой частоте, значительно выше тактовой, и вернуть в рабочее состояние можно было только перебросив питание. Я весь извёлся пока понял в чём дело. У автоматов Мили выходы зависят не только от состояний, но и от входов, и когда у них заводишь сигналы друг на друга, то возникает обратная связь, т.е. петля, через их комбинационные схемы, что и приводило к таким эффектам. Дня 4 убил на поиски проблемы.
Это, по ходу, как раз причина, почему в гайдлайнах AXI пишут про регистры на выходах. Я перезагуглил, там не написано, что регистры прям на выходах должны быть, но написано, что от входов до выходов не должно быть чисто комбинационных путей. Ну типа, если тебе слейв выдал ready==0, хочется ему сразу же ответить valid==0, без защёлкивания. Вот только если два подобным образом написанных модуля включатся друг в друга, они могут уйти в автогенерацию.
Можно по порядку, я так понимаю можно отдать по счетчику, а когда счетчик закончится гонять по кругу возвращенные ID, но вот что делать если какой-то из id не вернули я не могу придумать.
А, понял. Это они возвращаются рандомно. Я б сделал 1024-битный массив "свободно-занято" и несколько каскадов приоритетных декодеров, дающих на выходе номер наименьшего незанятого бита.
>но вот что делать если какой-то из id не вернули я не могу придумать.
Таймаут делать надо. Если не хочется делать 1024 таймера, то можно сделать группу таймеров, которые будут по очереди проверять освобождение айдишников внутри своей группы. "переходим к занятому биту — если он висит в течение заданного промеждутка, сбрасываем — если он пометился как возвращённый за время наблюдения, переходим к следующему занятому". Если айдишники в нормальном режиме освобождаются быстро, то один счётчик может проверять довольно большую группу и зависнуть только на реально потерянном.
Спасибо!
>Асинхронный сброс на то и асинхронный сброс что делается для сброса всей системы в исходное состояние
И как ты поступаешь, если у тебя есть две ситуации сброса, начальный и принудительный в случае появления ошибки? Только не говори, что делаешь два разных ресета, наверняка же один используешь для всех целей. Отсюда такие баги и лезут. По крайней мере пока в первый раз не обжёгся, а потом-то уже конечно дуешь и на воду.
Учу Verilog, и у меня появились два вопроса:
1) Почему Synplify pro, не может нормально подсказать, где ошибка? К примеру, сейчас полчаса ебал мозг на простейшем примере, пока не нашёл опечатку в названии передаваемого модулю значения. Ладно бы это было просто что-то не то, так такой переменной у меня не существует вообще.
В чем проблема сделать так, чтобы выдавались ворнинги/ошибки на неизвестные аргументы, как это сделано в GCC?
2) Встроенный в среду текстовый редактор абсолютно не умеет в автокомплит, подсветку синтаксиса (всё что не касается ключевых слов) и прочее. Такое вижу не только в IDE которой пользуюсь сейчас, но видел и в относительно свежих Квартусах.
Опять же, почему так? И чем все в таком случае пользуются? Явно же не пишут во встроенных редакторах. Notepad++ или Sublime с плагинами? В нормальную подсветку синтаксиса кажется могут, но они вроде не очень умные, по источникам из других файлов ходить не могут, и прочее. Тоже не очень удобно.
>пока не нашёл опечатку в названии передаваемого модулю значения.
Для необъявленного идентификатора автоматом создаётся новый объект типа wire. В ворнингах это есть. Разумеется, в 99.99999% это означает, что ты где-то опечатался. Это норма.жпг, меня сначала тоже бесило, потом привык. Перестаёт быть проблемой, когда знаешь, куда в ворнинги смотреть.
У меня даже ворнинга не было на это ну или я не увидел, но он выдал ворнинги только на то что пин не использован в модуле.
>И как ты поступаешь, если у тебя есть две ситуации сброса, начальный и принудительный в случае появления ошибки?
Сбрасывать схемой сброса, у которой выход триггерный. Схема даёт импульс сброса на старте системы и в процессе работы по команде.
>Разумеется, в 99.99999% это означает, что ты где-то опечатался.
А оставшийся 0.00001% — это ты решил проверить "чё, правда создаётся?" — после чего забил на эту вредную хуйню навсегда.
Алсо почему для плисов до сих пор пишут на verilog/vhdl и даже на "блочных" языках? Ведь есть же более симпотичный SV.
https://en.wikipedia.org/wiki/Hardware_random_number_generator#Using_observed_events
Что касается SV, то его использование ограничено поддержкой в средствах разработки. Какой-нибудь хипстерский симулятор его поддержит, а синтезатор внутри вивадо — нет.
Синтезаторы внутри Vivado, Quartus, Diamond поддерживают SystemVerilog
Бесплатная версия ModelSim тоже поддерживает, кроме кавереджей, ассерешенов и пары прочих ништяков.
Хочешь ништяки? Никто не мешает тебе стянуть QuestaSim с электроникса.
Вот только стоит попробовать с этим связаться, и понимаешь, что лучше было и не связываться.
https://forums.xilinx.com/t5/Synthesis/System-Verilog-support-in-Vivado/td-p/801873
Сижу в вивадо 2017.4 потому что более новых поломана функциональность IP-корки, которая мне нужна. Так что иди нахуй со свои подходом уровня арчешкольников.
https://plis2.ru/training.html
Ты же потом будешь по 300000кккк/пс заколачивать. Считаю ваще божеской ценой за курс.
>Сижу в вивадо 2017.4 потому что более новых поломана функциональность IP-корки, которая мне нужна.
Знаю я одного такого чела. Только он в планэхеде сидит.
Ну а я знаю чела, который сидит в 2019.1 и делает только мигалки светодиодом, дальше что?
Да ничего. Рано или поздно индусы таки впилят полную поддержку SV, пусть в Виваде 2022, а ты как сидел на 2017.4 так и будешь сидеть, потому что КОРКА СЛОМАЛАСЬ.
Вот только работать надо, задача должна быть решена, это требование №0. Перейти на системверилог в списке приоритетов стоит несколько после. Поломанность новых версий я проверяю с 2017 года регулярно.
>Вот только работать надо, задача должна быть решена, это требование №0.
Да ктож спорит. Поэтому мой знакомый чел и сидит в планэхеде.
Регаешься на електрониксе, пишешь пару десятков постов (желательно информативных), просишь добавить тебя в свои и получаешь доступ к ФТП.
>>75071
>и получаешь доступ к ФТП
Или не получаешь.
Все вы тут такие охуенно умные, говорите, как будто прямо каждому хоть как-то показавшему адекватность будут давать доступ в свои. Люди за 40 лет со стажем на электрониксе в 10 лет с сотнями постов, помогавшие другим, часто туда не получают доступ. Либо отвечают модератору на дополнительные вопросы вроде конкретного названия специальности в дипломе, места работы, места жительства. Никто не мешает модератору задавать тебе эти вопросы - отвечаешь на них ты исключительно добровольно. Ты не хочешь отвечать? Ну а модератор не хочет тебя добавлять.
И, одновременно с этим, часто доступ туда получают двадцатилетние студенты, ещё не имеющие даже диплома бакалавра и занимающиеся, разве что, своими проектами и имеющие ~50 постов на форуме.
Всё зависит от рассматривающего заявку модератора и того, что у него в голове на этот момент. Если понравишься - может добавить. Не понравишься - тебя проигнорируют.
Есть конкретный пример 40 летнего чела с 10 летним стажем, которому доступ не дали? Мне аж интересно стало, каким далбичем надо быть, чтобы тебя отфутболили.
Ты чё буянишь, я вообще не приделах.
Как вообще умножение на логике пилят?
Ебани алгоритм умножения в столбик.
DSP48 и предназначены для умножения входного числа на константу, хуле. Так 99% фильтров работают, гонятся данные сквозь цепочку MAC, а те их на константы умножают, соответствующие форме импульсной характеристики. Так что ставь, не ссы.
Рекомендованный practice, правда, действительно использовать звёздочку и дать инструментам сделать inference блока DSP48. Если они будут тупить и инферить каскады лутов, можно добавить куда надо атрибут ( use_dsp = "yes" ), он охуенно работает, инферит в DSP48 даже аллаха. Не забудь до и после умножения пайплайновые регистры воткнуть, они будут правильно назначены на внутренние регистры DSP48, максимальная частота вырастет.
Что нужно для вкота? Моя более-менее понимат цифровые примитивы, комбинационную логику, триггеры, fsm, uart etc. Как устроено это ваше fpga - туманно, но представляю. Асло как описывать железяки на hdl, синтез и симуляция - тоже в какой-то степени разобрался, за исключением разве что верификации.
Второе. Достаточно скачать условный лайт квартуса и кодить на hdl, и уже после синтеза подбирать подходящую борду под проект, или необходима сама плис? Если последний вариант, что тогда брать для моргания диодом?
Чем бы заняться с плис (или без) для лучшей практики на подобии >>16964?
Возьми борду.
> Что нужно для вкота?
Самое главное, что нужно для вкота - задача, которую требуется решить. Остальное - этапы ее решения, не более.
>Самое главное, что нужно для вкота - задача, которую требуется решить. Остальное - этапы ее решения, не более.
Люто поддвачиваю. Без цели или задачи зайдешь в тупик.
Рискуешь притянуть к себе столько всего, что можно магазин открывать или засинтезировать пентиум (не знаю, влезет не влезет в 100K-200K LE) или повесить на стену как картину.
У меня вырисовывается на чем можно потренироваться - сделать эмулятор параллельной NOR памяти, содержимое которой хранится в DDR2 памяти и как-то снаружи заливается/читается. Хорошо так пришлось поебстись что бы используя 2 банка (Altera) подключить (в теории) DDR2 память 64M16 x2 и синтезировать IP CORE DDR2.
>artix-7
Почему сразу даешь четкое название желаемого камня? Чем он так зацепил? Явно это должно быть на плате, но что именно - не говорится.
Почему сел на стул с хуями от Xilinx, а не от Altera или Lattice?
Потому что в альтеры уже умею ну почти. На артиксах уже планируются некоторые проекты, да и ac-701 есть, но домой ее лень тащить. Поэтому хотелось бы прикупить какую-нибудь дешёвую платку для ковыряния.
https://www.aliexpress.com/item/33031494563.html
https://www.aliexpress.com/item/1000006630084.html
Такой бомжевский вариант? Их платка с EP4CE15 вполне себе работает на учебных примерах.
С Zynq работал? Есть что про него для выкатывающихся тупых и безмозглых амеб?
> Zynq
Нет ещё, но возможно тоже придется.
Спасибо за варианты, но мне даже обычные товары с али не всегда доходят, но попробовать можно.
Ни ешь, подумой!
У них разница по логической емкости в 3 раза.
Али определенно рвет шаблоны. Вот живой пример >>62929 - детально не гонял если че - 4 циклон на 115К LE. Вся платка в районе 100$, включая планку памяти. Простенький циклон 4 на 15K LE - меньше 20$.
У одних из одного из оффициалов ЭФО коммерческая 4CE115 стоит около 335$. Как так то? Страшно сказать сколько стоят обосранные Flex10K 70$. Нашлась задачка для флексов где они будут жить в окружении родных 5В.
>>76231
5й циклон не зашел - хуй проссышь. Про Zynq хоть мануал есть и здесь частенько пиарят какую-то шину AXI - наверное проще будет выкатиться на мозгах от antminer.
На эту плату жаловались, что кристалл слишком маленький:
>DDR3 контроллер занимает ~40% кристалла. Простенький дизайн из МикроБлейза, DDR3, EthernetMAC, QSPI и UART занял 90% кристалла. А так все хорошо
>>76236
> Али определенно рвет шаблоны. Вот живой пример >>62929 - детально не гонял если че - 4 циклон на 115К LE. Вся платка в районе 100$, включая планку памяти. Простенький циклон 4 на 15K LE - меньше 20$.
> У одних из одного из оффициалов ЭФО коммерческая 4CE115 стоит около 335$. Как так то?
У этого же продавца на али плата с Kintex-7 стоит раз в пять дешевле, чем голый чип на диджикее: https://www.aliexpress.com/item/32907109444.html Я так подозреваю (потому как у него ассортимент «то густо, то пусто» и документация напоминает незабвенную инструкцию к шоаррской лисе), что это чья-то подработка: паяют и продают оставшееся после основного проекта.
>>DDR3 контроллер занимает ~40% кристалла.
Почему в spartan6 slx16 он занимает около 5% cells, а тут 40k?
а) assign #10 x = f(y);
б) assign #(5,10) x = a ? b : c;
А конкретно не понимаю, что означает решетка и какое-то число рядом с ней? Я думал, что решеткой задаётся какой-то параметр, но чот я уже не уверен.
Алсо, задача нескольких параметров перечислением не совсем понял как работает. Если я укажу таким же образом два параметра, когда в инстанциируемом модуле их пять, что произойдёт? Оставшимся трём просто присвоится дефолтное для них значение которое указано в объявлении параметра в модуле??
Это задержки. В первом случае единая задержка, во втором — раздельно для фронтов и срезов. Не задавай ничего перечислением, вообще не используй его и забудь. Это типа оператора goto, в языке есть, но considered harmful.
Не уверен что ты прав по поводу фронтов и срезов.
Я сейчас проходил тест, так понял, что второе (а именно #() шарп и скобки), означает задание параметров перечислением. А первое судя по всему да, задержки.
Только не понял, как эти задержки применять (точнее, где можно и где нельзя).
>Не уверен что ты прав по поводу фронтов и срезов.
Ну ты ещё попизди мне тут.
>Только не понял, как эти задержки применять (точнее, где можно и где нельзя).
В симуляциях можно. При написании модулей, которые будут реализовываться в ПЛИС ("синтезируемого кода") нельзя.
> #() шарп и скобки), означает задание параметров
Это в случае создания экземпляра модуля
https://youtu.be/Y9sPacLyYCI?t=1095
, а в твоём случае это как раз задержки.
Кароч, я в курсе, что у spartan6 встроенный контроллер (два) ddr.
Да вы гоните, что можно собрать контроллер ddr3 на логических ячейках. На какой макс частоте он заведется?
>Эт я понимаю. Не понимаю синтаксически где нельзя ставить.
Ставиться они могут везде, где ты делаешь присваивания.
На практике имеет смысл ставить их только внутри блоков initial и forever, в которых ты описываешь сигналы, которыми ты тестируешь свой модуль. Типа:
reg clk, clken, reset;
counter counter_inst (
.clk(clk),
.clken(clken),
.reset(reset)
);
initial begin
clk = 1;
forever #5 clk = !clk;
end
initial begin
reset <= 0;
clken <= 0;
#10 reset <= 1;
#10 reset <= 0;
#10 clken <= 1;
end
Потом, когда углубишься в продвинутое тестирование, может, ещё какие-нибудь варианты придумаешь, но это сильно потом.
>Эт я понимаю. Не понимаю синтаксически где нельзя ставить.
Ставиться они могут везде, где ты делаешь присваивания.
На практике имеет смысл ставить их только внутри блоков initial и forever, в которых ты описываешь сигналы, которыми ты тестируешь свой модуль. Типа:
reg clk, clken, reset;
counter counter_inst (
.clk(clk),
.clken(clken),
.reset(reset)
);
initial begin
clk = 1;
forever #5 clk = !clk;
end
initial begin
reset <= 0;
clken <= 0;
#10 reset <= 1;
#10 reset <= 0;
#10 clken <= 1;
end
Потом, когда углубишься в продвинутое тестирование, может, ещё какие-нибудь варианты придумаешь, но это сильно потом.
Ок, я тебя понял. Единственное, а учебнике есть конструкции где задержка находится справа, а тебя такого примера применения нет бессмысленно?
Что такое forever? В учебнике про него пока ничего не было, Я, правда, прошёл пока только первую главу.
Ты зря, мне кажется, начал вкот со справочника по синтаксису HDL вместо учебника по цифровому дизайну (с примерами на HDL). Большая часть сахара, которую ты вызубришь, будем лежать мёртвым грузом, пока не забудется, а для решения задач ты будешь использовать лишь небольшую часть, наиболее удобную под твои задачи. Я задержки распространения (там, где она находится справа) на практике не использовал, это, по-моему, для ASIC-разработчиков, которым надо время распространения сигнала по линиям моделировать. А для плисов тул автоматом разместит всё так, что задержки влезут между тактами, либо скажет "не могу разместить твою схему, переделывай".
Мне на курсах скинули мануал по VHDL и мануал по Verilog. Я думаю там и правда будет та часть, которая только для плисов ибо курсы будут от производителя плисов, но для общего понимания языка, думаю, будет не лишне понять, что вообще он умеет.
По онлайн примерам вообще пиздец какой-то, у меня эти огороды даже не всегда заводятся.
Нам в универе говорили, что альтера практически нигде не используется.
>>76405
Сейчас бы верилог использовать.
>>76434
>Большая часть сахара, которую ты вызубришь, будем лежать мёртвым грузом, пока не забудется, а для решения задач ты будешь использовать лишь небольшую часть
Я замечал, что обычно принято изучать все основные конструкции языка, а потом переходить к рассмотрению уже того, какое подмножество является синтезируемым. Но так да, начинать нужно со схемотехники и черчения схем на бумаге с их просчётом.
>в универе говорили, что альтера практически нигде не используется
>Сейчас бы верилог использовать.
Прям комбо. Расскажи, че за совковый универ?
Мне сказали впитывать vol.verilog.com - я впитываю vol.verilog.com
Чо те не нравится? Откуда мы знаем, какие знания от меня ожидают, я же не у тебя корки буду получать.
Я уже слышал всё, что ты хотел сказать про sv, и уже отвечал тебе выше по треду. Давай ты вместо того, чтобы мозги впустую ебать, будешь лучше свои советы давать с использованием sv? Количество мозгоебли упадёт, качество контента в треде вырастет, сплошной выигрыш.
>Нам в универе говорили, что альтера практически нигде не используется.
У вас в универе ангажированные преподы.
>Сейчас бы верилог использовать.
Ой, ВХДЛ-щик закукарекал.
>Но так да, начинать нужно со схемотехники и черчения схем на бумаге с их просчётом.
А вот тут неистово плисичую.
>>76441
Я тебе уже кинул ссылку на курс >>76393 , очень годный, для начинающих самое оно.
Я прекрасно понимаю что он вроде бы и годный я его начинал смотреть, но я пока буду колоться и жрать кактус. Мне так легче воспринимать.
А теперь, если ты не против, я бы попросил помочь мне с кактусом. А именно пикрил. Почему в конце задержка 15, а не 5? Просто опечатка?
>Почему в конце задержка 15, а не 5?
Это не задержка на картинке, а момент времени на временной шкале. То есть не "произойдёт через 15 квантов времени", а "произойдёт на 15-м кванте времени от старта симуляции". На 10-м кванте поменяется значение r2, на 15-м кванте оно дойдёт до w1, т.к. w1 тупит 5 квантов.
Понял. Странно что сразу не сообразил. Логично, учитывая что они начинают оба сразу действовать.
Ещё вопрос тогда по ней.
Если я правильно соображаю, w2 имеет на шине задержку #5, так же как и w1. Assign это не процедурная операция, тогда почему w2 срабатывает после w1? Или он всё же параллельно срабатывает, и картинка не то имела ввиду, за что я зацепился?
Картинку дегенерат какой-то рисовал. Там в двух блоках показан квант времени #5, но блоки идут один за другим.
>картинка не то имела ввиду
Ты бы лучше в каком-нибудь modelsim-e моделировал, нагляднее было бы.
Xcelium. А вообще, Альтиум вот-вот собирается что-то выкатить. Альтиум Дизайнер у них няшный (а не как токсичный ментор), надеюсь, что и симулятор тоже будет.
>Это типа оператора goto, в языке есть, но considered harmful.
Блин, а я в своих тестах повсеместно использую задержки. >>76405
>
>initial begin
>reset <= 0;
>clken <= 0;
>#10 reset <= 1;
>#10 reset <= 0;
>#10 clken <= 1;
>end
Вот так в тестах получается лучше не писать? (если что-то более сложное, чем передёрнуть ресеты)
Или я тебя неправильно понял?
Это было про подключение модулей перечислением.
Типа когда ты модуль подключаешь как
counter counter_inst (clk, clken, reset, out_data);
вместо
counter counter_inst (
.clk(clk),
.clken(clken),
.reset(reset),
.out_data(out_data)
);
В некоторых случаях удобно перечислять. Но я никогда не использую этот метод.
Закончил я этот курс vol.verilog.com
Ну хз, я пока вреда именно подключения перечислением не увидел (на малом количестве соединений, конечно же).
Меня там смущает скорее не неименуемое подключение, сколько возможность задавать параметры перечислением. Вот это какой-то баттхёрт.
>>76384-кун
Алсо дико понравились вставки из разряда "Ну эта функция языка работает, хотя работать не должна", или "Из-за особенностей самой первой реализации, данная вещь работает так как работает и никак иначе, хоть мы и знаем, что это неудобно"
"В отличие от других языков, например Си, Верилог не поддерживает конструкцию и++, вместо этого необходимо писать и = и + 1" и даже проверочный вопрос далее такой встречается.
Охуенно конечно. Не то что бы это пиздец критично, но и не то что бы имплементировать инкремент в верилоге выглядит дохуя сложной задачей.
Стандарт verilog-2001
>"В отличие от других языков, например Си, Верилог не поддерживает конструкцию и++, вместо этого необходимо писать и = и + 1" и даже проверочный вопрос далее такой встречается.
>Охуенно конечно. Не то что бы это пиздец критично, но и не то что бы имплементировать инкремент в верилоге выглядит дохуя сложной задачей.
Да и хуй с ним. Гораздо хуже, что в верилоге нельзя обращаться к отдельным битам массива, хотя каких-либо аппаратных припятствий к этому вообще нет.
и то и то пофиксили в SV
А когда 50+ портов да еще этот модуль постоянно приходится допиливать ещё как критично
Алсо зачем ты решил вкатиться в FPGA? С твоим энтузиазмом лучше в программирование уйти, а в этом болоте рано или поздно ты разочаруешься в финансовом плане.
Временная диаграмма сигналов.
Типа как в вейвформе, только сразу для всего синтезированного проекта.
Она зависит от того что ты подашь на входы, т.е. зависит от входных последовательностей. Откуда квартусу знать что ты в неё хочешь подать?
Я слышал в новом Квартусе вернули симуляцию, это так?
Verilog прекрасно компилится в ISE. У меня есть подозрение, что ты не различаешь Verilog и System Verilog.
Квартус не знаю, но в новых версиях выпилили симулятор, только через сторонний можно это сделать. Попробуй икарус или моделсим.
Про интеловские ядра не знаю, но по идее должен быть какой-то аналог авроры.
А что ты там пилишь?
100мбит/с.
Передача уже реализована, но очень ебано и по информационно-зависимому чем больше единиц, тем дольше передача каналу. Хочу попробовать избавиться от этого.
Про gtx не знаю даже, я просто самоучка.
>100мбит/с
Это можно обычным serdes принять. Делаешь самосинхронизирующуюся кодировку (манчестерское кодирование) с одной стороны, с другой — оверсемплинг (пусть 400мбит/с), с которым можно в пределах некоторого рассинхрона определить, оставался ли сигнал неизменным дольше пары тактов или изменился за меньше чем пару тактов.
> пусть 400мбит/с
А если tx 100MHz, а rx 200MHz максимум? Должно заработать? Не охуею ли от рассинхрона?
Охуеешь, потому что 100MHz в манчестерском коде фактически означает 200MHz (потому что на каждый символ передаются два значения, дающие либо фронт, либо срез), и для их приёма с оверсемплингом нужно 400MHz. А без манчестерского кодирования ты не определишь, куда синхронизироваться. Тебе не похуй ли, сколько мегагерц? Не тебе ж на них шататься, а плисине, а плисине похуй, она железная.
Наши местные плисоведы почему-то боятся частот выше 100МГц, дескать у них все по пизде сразу идёт.
Зато прикинь, если заработает, как утрёшь нос своим дидам?
И в резюмешечке напишешь, что работал с 400MHz
Если я таким макаром распарсю UDP и IP заголовки это вообще законно? Меня не расстреляют?
Или лучше запилить сдвиговый регистр и парсить нужные мне поля после заполнения?
Не жалко. У меня комплексы по поводу того, что мою писанину назовут гвоном если на нее посмотрят
Всегда найдется тот, кто обзовет твою писанину говном, но свою писанину почему-то показывать никому не хочет.
Проиграл.
А вообще, это наверное из-за того, что они не трассируют линии? Где вообще почитать про оптимизацию на высоких частотах?
Аппноты от производителя плисины почитай.
У них обычно есть 1) референс-дизайны для последовательных интерфейсов с использованием блоков serdes и 2) гайдлайны по разводке дифференциальных линий на платах.
В идеале, тем и другим должны заниматься разные люди, но мы же в рашке, так что один студент обычно тянет лямку за весь пьющий чаи отдел.
> один студент обычно тянет лямку за весь пьющий чаи отдел
Знакомо. Я ещё схемотой и свч занимаюсь.
В альтеровских FPGA (во втором стратиксе и более поздних точно есть, в четвёртом циклоне тоже) есть хардблок (т.е., выполненный в кремнии, а не на ячейках) LVDS SERDES. Коэф. сериализации - до 10. Ширина линии - какая хочешь.
Мы делали 16-битные с коэф. сериализации 6 и рабочей частотой 1,2 ГГц.
Тренировку делай сам (встроена только DPA, bitslip нужно делать самому, для чего есть соотв. вход).
> LVDS SERDES
Это ты про alt_lvds? У меня между плисами одна дифпара, а там нужно с клоком на tx/rx, да ещё и 10бит максимум.
Но скорее всего я что-то не так понял.
Вот если ты на них сделаешь десериализацию в 8 раз, то сможешь получать свои данные как 2 бита @ 50MHz при оверсемплинге 400MHz. Загоняешь в serdes 400MHz, выходит из него 8бит 50MHz, выделяешь из них нужные данные, которых после всех преобразований останется два бита на тех же 50MHz. Потом пакуешь их по 7.
Где про это почитать?
Закидай говном доками - как вообще происходит синхронизация потоков?
Включил корку serdes, на выходе появились LVDS сигналы.
Приемник с другой стороны сразу по приходу сигналов начнет десереализацию или нужен какой-то внешний сигнал синхронизации? Не будет ли при приеме сдвига битов на 1 влево-вправо где-то на electronix читал про еблю с начальной синхронизацией передач?
Где-то в AN видел особо жесткие требования чуть ли не как для DDR2 памяти к разводке LVDS. Допустим у меня 4 линии + клок и тактовая пусть 500МГц (чуть меньше, чем в гигабитном Ethernet). Какой разброс длин внутри и между парами допустим на таких частотах? Ебаться с каждым миллиметром? Допустим длина трасс под 20-30-40см
На 4-м циклоне с тактовой 125МГц и памятью DDR2 шириной 16 бит - получится эмулировать 16 битную SRAM с временем доступа 50-70 нс? Реальную SRAM на 64 мегабита собирать - ебанешься, включая цены на одиночные микросхемы SRAM такого объема, поэтому встроенная память - не вариант.
На ZX-PK пишут что даже на тактовой 100 МГц SDRAM с трудом получается эмулировать SRAM с рабочей частотой под 11МГц.
>Ебаться с каждым миллиметром?
Крайне желательно. Сам же себе спасибо скажешь, когда всё заработает с первого раза. Или проклянёшь, когда не заработает, и теперь надо ебаться со всякими выравнивателями, наворачивая даташиты по 500 страниц без гарантии успеха.
>Приемник с другой стороны сразу по приходу сигналов начнет десереализацию
Да, а тебе надо переключать нулевой бит либо сигналом bitslip, либо в логике, разрезая и склеивая каждую десериализированную посылку. Для поиска мест склейки в исходный сигнал добавляются уникальные синхрокоды.
>Не будет ли при приеме сдвига битов на 1 влево-вправо
Если клок идёт вместе с данными, то обычно всё норм.
Так сразу бы и написал, что не ширина линии 14 бит, а коэффициент сериализации 14.
>>77751
Вот блин, мне интересно, ты нихрена не знаешь, но, при этом, занимаешься трассировкой плат. Как тебя до этого вообще допустили? Мне, например, сказали, что платы я делать никогда не буду, т.к. мои личностные характеристики не позволяют мне заниматься такой работой.
>>77798
Нет. Делай второй уровень сериализации/десериализации на ячейках.
>Вот блин, мне интересно, ты нихрена не знаешь, но, при этом, занимаешься трассировкой плат. Как тебя до этого вообще допустили?
Ты забыл что мы живем в пидорашке? У нас можно всё, у меня вот 80% троек в дипломе и я единственный из группы пошел по специальности долбоёб.
>Мне, например, сказали, что платы я делать никогда не буду, т.к. мои личностные характеристики не позволяют мне заниматься такой работой.
Хрюкнул на всю лабораторию. Тебе повезло на самом деле. Это неблагодарная работа. Очень мало хороших инженеров по этой специальности - даже люди со светлыми головами замыкаются в этой хуйне и перестают думать. Из инженера превращаются в трассировщика. А зарплата даже хуже, чем у ПЛИСоёбов, такие дела.
У нас у плисовода/программиста (SoC, МК, ЦСП) средняя ЗП 100к, у разработчика печатных плат - 160к, например.
>У этого же продавца на али плата с Kintex-7 стоит раз в пять дешевле
могу пруфануть. На это плату (не сразу) продаван дал схему, 10Гэ завелось, брат жив. Примеры тоже хорошие, есть IP/UDP echo
Это в какой стране?
Есть мнение, что кинтексы с али отреболенные, отсюда такая цена. Я бы взял эту плату но она что называется не пришей пизде рукав.
Логики много, а интерфейсов нихуя.
10G это круто, но куда ее подключать?
Разве что пилить на этой плате какой-нибудь майнер.
>И один хрен, казалось бы вам дофига платят, но даже вшивому фронтэнд-джуну могут платить еще больше.
Тут включается вопрос а чем ты сам по жизни заниматься хочешь. Все-таки радиолюбительство (и сопутствующие сферы) - это философия.
>Это скорее исключение.
Я бы сказал, что это какой-то странный перекос, который явно не обусловлен рыночком. Положа руку на сердце, этих трассировщиков за 160к/наносекунда можно было бы разогнать, понабрать за втрое буквально меньшие деньги макак-студентов, умеющих перерисовывать рекомендуемые решения из аппнотов, и было бы в целом не хуже.
Это не работает. Исследования показывают, что наибольший рост зарплат происходит у людей, которые меняют места работы с ростом квалификации.
>Тут включается вопрос а чем ты сам по жизни заниматься хочешь. Все-таки радиолюбительство (и сопутствующие сферы) - это философия.
Радиолюбительство всегда можно оставить в качестве хобби. Другой момент, что в нашей сфере можно найти тёплое место, где и на хлеб с маслом будет хватать и работать на расслабоне. Только вот это путь вникуда, есть большой шанс оказаться на помойке.
>>77826
>понабрать за втрое буквально меньшие деньги макак-студентов
Это тоже неправильный подход. Если хорошо подумать, у конструктора большая ответственность. Нужно просто за эту ответственность с них спрашивать. Накосячил, какой-то интерфейс не заработал - штраф на половину оклада. Если косяков нет - ну не такие уж и большие это деньги. Про перекос по сравнению с FPGAшниками согласен на 100% обычно везде наоборот.
>Радиолюбительство всегда можно оставить в качестве хобби.
В качестве хобби ты вряд ли сможешь найти задачи уровня "ебануть фильтр для 100Гбит езернета".
Это обычная зп для FPGAшника. Я ездил по собеседованиям в ДС. У меня опыт кое-какой есть, реализованные проекты и вот это всё. Но итог везде одинаков. Пробовался в 3 места, везде согласны взять, но максимум что предложили 80к. Да нахуй оно надо? В Москву надо ехать за 6-значной зарплатой я считаю.
100G - это очень круто, да. Вот только какой с них толк? Кроме того, что потешил чсв.
А еще наверняка твои махарайки будут предлагать РКН или подобным конторам. Как вообще после этого, совесть не будет мучать?
>100G - это очень круто, да. Вот только какой с них толк?
Ну так а какие задачи ты хочешь решать? Очередное SDR радио или поливалку для огурцов на FPGA?
Ну да, джависты, да и те же фронтэндщики у нас получают дохуя.
>>77837
У меня в Москве ЗП 80к. Могла бы быть больше (платят столько, сколько запросил на собеседовании) - у других на такой же должности, как у меня, она, в среднем, в полтора раза больше. Я получаю только оклад без надбавок и премий.
Это при том, что занимаюсь, в основном, макакской работой.
Может человеку с улицы никто не хочет давать нормальные деньги. Но скорее всего такой рынок. Такие как ты готовы рабоать за копейки и по сути обваливают этот самый рыночек. И ведь таких полно.
Я вот не представляю, как в ДС можно на 80к жить? Особенно если нет своего жилья.
Смотри, в моем мухосранске средняя зп 33. У меня 50.
В Москве средняя 80(за год вангую выйдет на 85-88) и FPGAшники довольствуются той же 80кой.
А теперь посмотри на цену за жилье, транспорт и остальные траты. Да я на свой полтинник здесь король. А в Москве с 80к хуй с горы. Таксисты здесь так же зарабатывают. Без обид, но себя нужно ценить, Анон. Иди проси прибавку.
И самое печальное - это покупка жилья. Я уже выплатил ипотеку в мухосранске за 3 года.
В Москве на 80к ты за 3 года даже нормальный первоначальный взнос не накопишь. Поэтому я считаю за любую умственную работу в столице (5/2 полный рабочий день) надо просить не меньше сотки. Кто платит меньше - они вас наёбывают.
Я другой анон. 80к для Москвы, если ты вчерашний понаехавший студент без семьи, вполне нормальная цифра. Не пожируешь особо, но и не совсем хуй без соли.
нахер тебе покупать жилье, если повысишь квалификацию и съебешь в гермашку или сшашку?
>Накосячил, какой-то интерфейс не заработал - штраф на половину оклада.
Рецепт прямиком из сборника "Прохладные истории пидорашьего менеджмента: 10 лучших способов пустить под откос рабочий процесс и развалить к хуям коллектив". Люди ошибаются, это нормальный фактор. Не надо с наёмных рабочих спрашивать за риски как с организаторов бизнеса. Они не организаторы. Они от такого просто озвереют, даже среди студентов-нищемакак обстановка будет более рабочая.
>Если хорошо подумать, у конструктора большая ответственность.
Я не оперирую идеей "справедливой зарплаты" или "достойной зарплаты", я просто констатирую, что на рынке есть люди, способные выполнять те же задачи гораздо дешевле без ущерба для результата. Я-то всегда за то, чтобы у любого наёмного работника зарплата была как можно выше, но это делается увеличением спроса на них, а в пахомии желающих пилить махарайки больше, чем желающих организовывать их разработку и производство. (Поэтому считаю, что все хорошие люди своей основной целью должны ставить съёб.)
>Мне в следующем году уже 30 будет. Куда уже сьебать из подводной лодки? Родителей-пенсионеров кину здесь?
Твой выбор, твоя жизнь. Единственная, если что. Можно посвятить её тому, чтобы жрать говно, но это странный выбор.
>Так разве не пидорашьий менеджмент устроил такой перекос?
Наверняка, но если пидораший менеджмент может устроить одно говно, это не значит, что он не может устроить другое.
У меня тут квартира и учеба.
Лот https://www.ebay.com/itm/Altera-Stratix-III-EP3SL200F1152C3N-IC-on-PCB-Violin-Memory-Inc/254230166715
Подойдет для мигания светодиодом или LE закончатся раньше чем успею пернуть?
Такой хуйни хватит чтобы сразу помигать двумя светодиодами или могу расчитывать максимум на полтора светодиода?
https://www.ebay.com/itm/Altera-Stratix-IV-EP4SE820F43C3-On-Board-for-chip-recovery/333275638289
Тот же JLC явно утверждает что умеет в 6 слойные платы. Решил уточнить - подойдет или нет для мигания светодиодом (или светодиодами если повезет)?
Не слабовата будет? Потянет?
Помигаешь отдуши, может даже что-нибудь намайнишь.
Обожаю двачерский юмор.
Требующие низкой латентности и/или высокой степени параллелизма вычислений.
У меня только такой дешманский закос под FPGA.
Схемки нет, надо потрошить и прозванивать каждый из 700 с хуем выводов. После этого можно помигать минимум 4-я светодиодами на плате.
Где можно взять (кроме open cores) максимально точную корку 580ВМ80А на Verilog? Именно 580ВМ80, Z80 и его клоны не интересует.
HLS? Что что?
Чем плох стандартный Verilog / VHDL? Тот же OpenCV?
Такие тормоза как я если и балуются - то засинтезировал, сконфигурил, смотришь. Долго и нудно, да. Для простых проектов типа мигалок светодиодом - норм.
Ничем, просто почему-то у меня то, как ты рассказываешь про свою плату и про мигание светедиодом вызвало ассоциацию с ардуйнёй, а оттуда уже с HLS.
Под линуксом в тулах Cadence чтобы узнавать фичи, которые нужно прописать в лицензионный файл после патча тула, можно было перед запуском тула прописать в консоли `export FLEXLM_DIAGNOSTICS=3`. Что для этого делать под виндой?
А серьёзно?
Ну ты сравнил.. Где ардуино, а где HLS. По мне в HLS проект пилить сложнее, чем на чистом HDL. Там нет этих ваших абстракций, притянутых за уши парадигм и прочего мозготраха. хотя, возможно я сейчас как динозавр рассуждаю, ведь просматривается явная аналогия между переходами с HDL -> HLS и схематик -> HDL.
>просматривается явная аналогия между переходами с HDL -> HLS и схематик -> HDL.
Переход из схематика в HDL - изменение способа ввода схемы.
Переход из HDL в HLS - смена парадигмы.
Ну в принципе да, сразу как только HLS и прочее говно сможет синтезировать что-то более сложное, нежели моргалка светодиодом.
Нет. Чтобы запилить что-то средней сложности (фильтр там простенький) и то надо ебаться со всякими директивами - оптимизаторами.
>Короче пизда HDL-щикам. Скоро их заменят программисты.
Лол. Они даже в страшном сне не подумают идти на такие зряплаты.
>UART ебани.
У кого-то скоро станет реальностью. Есть бредовая идея поучить Verilog на реальных примерах, "клонируя" давно прогнившие экскременты мамонтов типа ВВ51, ВВ55, ВИ53 и подобное.
Уже нарисовал платку под КР580ВМ80А+ГФ24+ОЗУ+ПЗУ+ обосранный Flex10K30 с AT17LV010.
>>78262
Это я умею. Точнее умею только зажигать, а гасить - только задувая. До мигания так и не дошел и не понимаю - как так получается.
Independent Component Analysis
Фигня, которая появилась с классической задачей "cocktail party problem"
>ПЛИСаны, я не понял, вот я насинтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало?
Вроде как в серии MAX от Altera есть плисы с флеш. Можно сделать чтобы прошивка заливалась по включению питания.
Некропостинг, да.
>насинтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало?
Да. Не знал что FPGA одноразовые? Залил конфигурацию и после передергивания питания она стирается. Flash память радом для лохов. Смотри и учись как правильно делается http://dihalt.ru/poslednij-geroj-truda-chast-0fh.html
".. на базе легендарного компьютера PDP-11. Адская машина!!! Грузится это чудо с здоровенных, размером с виниловую пластинку, 8″ дискет. Т.к. дискеты уже давно все в кал убитые и старые, а гарантии, что в следующий раз можно будет загрузить систему нет никакой, то станок пашет без перезагрузок уже лет 20, подключённый к трём аккумуляторам и, на всякий случай, дизелю. Дабы поддерживать его жизнь в случае проделок Чубайса."
>Есть идеи?
Как минимум порадоваться. В отличии от остальных анонов - есть конкретная цель/задумка/проект, а не "с чего вкатываться?" и это огромный плюс.
Со сложностью проекта определился? Как минимум по части сколько надо выводов и какие планируются интерфейсы ввода-выдода? На чей стул присел? Xilinx/Altera/Lattice/Microsemi?
Всё очень просто и в то же время очень сложно. Вообще-то идей несколько и одну даже воплотил в Cyclone III EP3C10E144C8.
Что касается интерфесов, пока есть только UART. В теории, совсем в теории, для каких-то применений его достаточно. А вообще хотелось бы задействовать всю мощь ПЛИС и отладочной платы.
Там же в куче самописный интерфейс для SDRAM MT48LC4M16A2-75. Но не очень стабильно работает. В тестах отрабатывает отлично, регенерация есть, а в проекте глючит.
Да что ходить вокруг да около - хочу предложить оригинальную 32-х битную процессорную архитектуру. И транслятор ассемблера для неё.
Что-то это мне напоминает...
https://zx-pk.ru/threads/23528-reverse-u16.html https://github.com/mvvproject/ReVerSE-U16
https://github.com/donnaware/ZBC---The-Zero-Board-Computer/blob/master/design/ZBC RevD.pdf Мне такому ленивому хуйлу впадлу найти циклон и генератор. Тут явно выведен com-порт и даже есть программный ethernet 10base-t.
Так что можешь на чуть сэкономить время и взять готовое или скопипастить. Для SDRAM в принципе похуй, а для DDRx - нужно следить за выводами, которые специально отведены под шину данных и забив на это - можно эпично соснуть.
>Что-то это мне напоминает...
Zet processor is an open implementation of the so widely used IA-32 architecture (generally called x86).
Нет, конечно не x86. Вот карта инструкций.
Отсылка была как минимум к коду, из которого можно попробовать выдрать контроллер SDRAM и сопутствующие "периферийные" устройства.
Потактовой версии 580ВМ80А случаем нет? Клоны не интересуют. Именно "родной" советский 580ВМ80А.
Ты тот шизик со спейсача, одержимый сверхценной идеей, что космические аппараты бьются из-за неправильной архитектуры бортовых ЦВМ?
Почему сразу шизик? Но да, я полагаю что неправильная архитектура бортовых ЭВМ это существенный фактор. Но это скорее к софту относится. Более надёжную систему можно построить и на уже используемом железе.
Мне бы хотелось донести до вас красоту вот этой системы команд. В отдельной теме, но пока можно и здесь.
Жёлтый цвет - инструкции зарезервиованы. Условные и безусловные переходы только относительные. Адрес возврата из подпрограммы всегда в регистре. Все операции только 32 бита. Плавающей запятой нет. Уже можно ругать.
Одна из идей - "бесконечно" расширяемая система команд за счёт увеличения длины инструкций.
Присоединюсь к анону выше. Ты шизик. Я так и не понял, ты уже сделал этот процессор или все никак?
Помимо этого, по твоей таблице без детального описания инструкций можно только гадать, что ты там навыдумывал. И писать программы ты будешь, разумеется, на ассемблере?
> Я так и не понял, ты уже сделал этот процессор или все никак?
Прототип давно сделал. Работает. Но это лишь небольшая часть от того, что хотелось получить в итоге. Самое вкусное как раз и не реализовано.
>Помимо этого, по твоей таблице без детального описания инструкций можно только гадать, что ты там навыдумывал.
Да. Согласен. Наверное это нужно в первую очередь.
Ну вот смотри - в первой строке однобайтовые команды.
NOTCH это превифкc. Если ты поставишь его перед инструкцией перехода, условного или безусловного, то в регистре R15 запомнится адрес следующей инструкции. Инструкция RETURN тупо делает переход по содержимому R15. Переходы это знаковое смещение от текущей инструкции - 8, 16 или 24 бита знаковое смещение.
IDLE, TASK_ID, SEND, RECV - это то, что придёт на смену прерываниям, в том числе аппаратным. Это сообщения.
LOCK, FREE - захват и освобождение буфера сообщений.
SET_MR и GET_MR это соответственно запись и чтение буфера сообщений из регистра/в регистр.
Ещё один префикс KOL. Если он используется перед загрузкой константы 8 или 16 бит, то при загрузке константы старшие биты регистра не затираются.
Команды INC и DEC позволяют увеличивать/уменьшать регистр не только на 1, но и на константу от 1 до 16.
Что касается инструкций 0xdx, то они заточены для работы со структурами и списками. Их реализация необязательна, но их использование позволяет упростить и уменьшить код - указать смещение адресу. И опционально проверить резултат операции на ноль/не трогать флаги.
Команды сложения и вычитания всегда используют перенос.
> И писать программы ты будешь, разумеется, на ассемблере?
Пока да. На макроассемблере, который часть кухни скрывает макросами.
Некоторые на логике и ПЗУ собирают https://www.bigmessowires.com/nibbler/ , другие на реле - http://tqfp.org/tag/релейный компьютер/ , из "россыпчатой логики" https://www.bigmessowires.com/bmow1/ . Может туда съебете авторов покритиковать и поливать говном?
Единственный "недостаток" всех таких проектов - как писать управляющую программу, кроме как на ассемблера.
>Почему сразу шизик?
Потому что пытаешься решить проблему, которой не существует. Проблемы в системах управления, которые решаются сменой ISA — это исключительно твои ни на чём не основанные фантазии. Одно дело, если тебе хочется джаст фо фан запилить проц с интересной тебе ISA, это ок. Другое — когда ты начинаешь верить в постулаты, не основанные на эмпирическом знании, это уже шиза.
>Единственный "недостаток" всех таких проектов - как писать управляющую программу, кроме как на ассемблера.
Вовсе не обязательно. Форт или лисп недолго и на ассемблере написать.
>Что за куча негатива?
Мне кажется, что не за сам процессор, а за "революционность" идей и невнятную подачу информации. Да и нет тут заметного негатива.
>которые решаются сменой ISA
Оригинальная ISA это вообще побоочный продукт. Я же оговорился вот тут >>80827
> Более надёжную систему можно построить и на уже используемом железе.
Изначально я хотел добавить несколько инструкций для работы с сообщениями в любую популярную архитектуру. Это бы решило множество моих проблем - компилятор, библиотеки, специалисты и т.д. Но засада заключалась в том, что свободного места под коды операций у популярных архитектур нет. Особенно у x86. Посмотри за счёт чего сейчас расширяется система команд и какие монстры получаются. Отсюда и оригинальная ISA, которая к надёжности не имеет отношения.
Надёжность следует из синхронности. Если ты без прерываний в суперцикле будешь опрашивать порты и реагировать на полученные данные, то это будет достаточно надёжная система в плане временных характеристик, но она будет иметь плохое время отклика и сильно греться. Если ты используешь прерывания, то система будет иметь хорошую отзывчивость, сможет засыпать между прерываниями, но у тебя появится проблема СИНХРОНИЗАЦИИ.
Да, ты не считаешь синхронизацию проблемой, потому что её решают все разработчики, она давно известна, все уже привыкли и никто её проблемой не считает - все современные сиситемы так или иначе решили эту проблему.
Называй меня как хочешь, но я ТВЁРДО УБЕЖДЁН и проверил экспериментально, что замена прерываний синхронными сообщениями это лучший компромисс между надёжностью и эффективностью. Любую систему можно построить как множество задач, обменивающихся сообщениями. Прерывания это тоже в некотором роде сообщения, но они асинхронны.
Я думаю по поводу сообщений у тебя не возникнет возражений, потому как, я надеюсь, VxWorks и QNX/Neutrino наиболее часто используются в космической технике и используют эти принципы.
Камень преткновения это синхронность. И плисоводы меня поймут - они первым делом бьют по рукам за асинхронный дизайн. Если пойти чуть дальше и на уровне ядра ОС отказаться от асинхронности, то решатся проблемы надёжности, изохронности и энергопотребления. Конечно не "бесплатно" - взамен появляется проблема сложности. Недосмотрел и получил проблему взаимоблокировки. Пример - задача №1 посылает сообщение задаче №2, которая посылает сообщение задаче №3, которая посылает сообщение задаче №3. В итоге все друг друга ждут и система заблокировна. Эта проблема решается проектированием. А если кому лениво расписывать программно-аппаратный комплекс на таком уровне - пусть берёт готовое решение, продуманное за него, и обвешивает его нужной функциональностью.
Что касается прерываний, то их следует заменить сообщениями. Если бы ты видел, как при этом урощается обработчик, ты бы меня поддержал. Суть в том, что задача спит в ожидании события - сообщения от другой задачи, прерывания от устройства или таймаут. Любое внешнее событие приходит в одно место. Обработка сводится к анализу события, реакции на него и переходу в состояние ожидания. В итоге управление тем же спутником или луноходом выглядит как несколько десятков спящих задач, периодически выходящих из сна, как-то взаимодействующих и переходящих снова в состояние сна.
Наконец, когда все задачи в состояниии ожидания, выбираешь ближайшую до пробуждения задачу и отрубаешь клок на количество тактов до пробуждения. Клок так же может включить внешнее событие - прерывание.
Ещё раз - я не утверждал что ISA связана с надёжностью. Возможно корреляция какая-то есть, но мне ничего об этом неизвестно.
>которые решаются сменой ISA
Оригинальная ISA это вообще побоочный продукт. Я же оговорился вот тут >>80827
> Более надёжную систему можно построить и на уже используемом железе.
Изначально я хотел добавить несколько инструкций для работы с сообщениями в любую популярную архитектуру. Это бы решило множество моих проблем - компилятор, библиотеки, специалисты и т.д. Но засада заключалась в том, что свободного места под коды операций у популярных архитектур нет. Особенно у x86. Посмотри за счёт чего сейчас расширяется система команд и какие монстры получаются. Отсюда и оригинальная ISA, которая к надёжности не имеет отношения.
Надёжность следует из синхронности. Если ты без прерываний в суперцикле будешь опрашивать порты и реагировать на полученные данные, то это будет достаточно надёжная система в плане временных характеристик, но она будет иметь плохое время отклика и сильно греться. Если ты используешь прерывания, то система будет иметь хорошую отзывчивость, сможет засыпать между прерываниями, но у тебя появится проблема СИНХРОНИЗАЦИИ.
Да, ты не считаешь синхронизацию проблемой, потому что её решают все разработчики, она давно известна, все уже привыкли и никто её проблемой не считает - все современные сиситемы так или иначе решили эту проблему.
Называй меня как хочешь, но я ТВЁРДО УБЕЖДЁН и проверил экспериментально, что замена прерываний синхронными сообщениями это лучший компромисс между надёжностью и эффективностью. Любую систему можно построить как множество задач, обменивающихся сообщениями. Прерывания это тоже в некотором роде сообщения, но они асинхронны.
Я думаю по поводу сообщений у тебя не возникнет возражений, потому как, я надеюсь, VxWorks и QNX/Neutrino наиболее часто используются в космической технике и используют эти принципы.
Камень преткновения это синхронность. И плисоводы меня поймут - они первым делом бьют по рукам за асинхронный дизайн. Если пойти чуть дальше и на уровне ядра ОС отказаться от асинхронности, то решатся проблемы надёжности, изохронности и энергопотребления. Конечно не "бесплатно" - взамен появляется проблема сложности. Недосмотрел и получил проблему взаимоблокировки. Пример - задача №1 посылает сообщение задаче №2, которая посылает сообщение задаче №3, которая посылает сообщение задаче №3. В итоге все друг друга ждут и система заблокировна. Эта проблема решается проектированием. А если кому лениво расписывать программно-аппаратный комплекс на таком уровне - пусть берёт готовое решение, продуманное за него, и обвешивает его нужной функциональностью.
Что касается прерываний, то их следует заменить сообщениями. Если бы ты видел, как при этом урощается обработчик, ты бы меня поддержал. Суть в том, что задача спит в ожидании события - сообщения от другой задачи, прерывания от устройства или таймаут. Любое внешнее событие приходит в одно место. Обработка сводится к анализу события, реакции на него и переходу в состояние ожидания. В итоге управление тем же спутником или луноходом выглядит как несколько десятков спящих задач, периодически выходящих из сна, как-то взаимодействующих и переходящих снова в состояние сна.
Наконец, когда все задачи в состояниии ожидания, выбираешь ближайшую до пробуждения задачу и отрубаешь клок на количество тактов до пробуждения. Клок так же может включить внешнее событие - прерывание.
Ещё раз - я не утверждал что ISA связана с надёжностью. Возможно корреляция какая-то есть, но мне ничего об этом неизвестно.
Я нихуя не понял что ты называешь сообщениями. Может напишешь более доступно? И на счет отсутствия свободного места под опкоды - явно бред. Взять хоть risc-v или mips.
Нет никакой проблемы синхронизации. Многопоточность — это абстракция, которая вынесена за пределы уровня железа на уровень софта потому что человечество выработало именно такой путь решения сложных задач: иерархически разделять всё по нескольким уровням абстракции от простого к сложному. Процессор ничего не знает про потоки, зато он прост и надёжен. А то, что ты хочешь, перенести на него управление многопоточностью — это попытка совместить две аккуратно разделённые абстракции в один переусложнённый комбайн, который ни верифицировать, ни протестировать на всём множестве возможных состояний будет невозможно, и решаемые которым мнимые проблемы никто проблемами не считает, а считает грамотным иерархическим подходом к нарастающей сложности. Это предложение из серии "а давайте перепишем гуй на ассемблере, летать же будет, ёба!" Нахуй и в пизду такое счастье.
Сообщения это точки взаимодействия между задачами. Это IPC - Inter Process Communication. Прерывания тоже транслируются в IPC. В микроядре L4 это делается программно, самим микроядром, моя цель - реализовать их аппаратно. У сообщения есть таймаут - не ждать, ждать заданное время или ждать бесконечно. На этом базисе строится всё.
Вот, из соседней темы пост >>380844 Видишь как реализована функция задержки? Циклом с опросом TickCounter. Как бы делал ты? Вероятно что вешался бы на таймер (если ОС не предоствляет функицию задержки). Посредством сообщений эта задача решается элементарно - ждёшь сообщениие от самого себя в течение заданного времени. Время зарежки отдаётся другим задачам или процессор спит, если нет активных задач.
И снова к прерываниям - транслируй прерывания в IPC, и половина задачи решена.
Я понимаю источник своих проблем - хочется объять необъятное, отсюда и скомканные объяснения и перескок с одной темы на другую, и объяснение деталей там, где они не нужны.
Давай попробуем разобраться на примере. Вот на крыле самолёта есть лампочка, которая моргает. Предлагаю тебе написать программу, которая будетт управлять морганием этой лампочик. С возможностью запускать и останавливать моргание, а так же с возможностью менять частоту моргания. На HDL языках это будет очень простая программа. А как насчёт программы для микроконтроллера? Если приведёшь пример такой программы, я покажу аналогичный пример на сообщениях. И посмотрим у кого получится проще и элегентней.
> И на счет отсутствия свободного места под опкоды - явно бред. Взять хоть risc-v или mips.
Когда я начинал, RISC-V то ли вообще ещё не было, то ли он был известен лишь в узких кругах. Что касается MIPS, то может быть и можно. Давно это было, смотрел корки MIPS на opencores.org и решил не связываться. Как бы не очень люблю трёхадресные команды, не очень люблю RISC Кстати, если не лениво, то подскажи хотя бы два свободных ОП-кода для него. Как минимум нужны две инструкции - SEND и RECEIVE. Адрес задачи для коммуникации в регистре, таймаут в регистре, 14 регистров под сообщение, остальные регистры меняться не должны и принадлежат задаче.
Сообщения это точки взаимодействия между задачами. Это IPC - Inter Process Communication. Прерывания тоже транслируются в IPC. В микроядре L4 это делается программно, самим микроядром, моя цель - реализовать их аппаратно. У сообщения есть таймаут - не ждать, ждать заданное время или ждать бесконечно. На этом базисе строится всё.
Вот, из соседней темы пост >>380844 Видишь как реализована функция задержки? Циклом с опросом TickCounter. Как бы делал ты? Вероятно что вешался бы на таймер (если ОС не предоствляет функицию задержки). Посредством сообщений эта задача решается элементарно - ждёшь сообщениие от самого себя в течение заданного времени. Время зарежки отдаётся другим задачам или процессор спит, если нет активных задач.
И снова к прерываниям - транслируй прерывания в IPC, и половина задачи решена.
Я понимаю источник своих проблем - хочется объять необъятное, отсюда и скомканные объяснения и перескок с одной темы на другую, и объяснение деталей там, где они не нужны.
Давай попробуем разобраться на примере. Вот на крыле самолёта есть лампочка, которая моргает. Предлагаю тебе написать программу, которая будетт управлять морганием этой лампочик. С возможностью запускать и останавливать моргание, а так же с возможностью менять частоту моргания. На HDL языках это будет очень простая программа. А как насчёт программы для микроконтроллера? Если приведёшь пример такой программы, я покажу аналогичный пример на сообщениях. И посмотрим у кого получится проще и элегентней.
> И на счет отсутствия свободного места под опкоды - явно бред. Взять хоть risc-v или mips.
Когда я начинал, RISC-V то ли вообще ещё не было, то ли он был известен лишь в узких кругах. Что касается MIPS, то может быть и можно. Давно это было, смотрел корки MIPS на opencores.org и решил не связываться. Как бы не очень люблю трёхадресные команды, не очень люблю RISC Кстати, если не лениво, то подскажи хотя бы два свободных ОП-кода для него. Как минимум нужны две инструкции - SEND и RECEIVE. Адрес задачи для коммуникации в регистре, таймаут в регистре, 14 регистров под сообщение, остальные регистры меняться не должны и принадлежат задаче.
>Процессор ничего не знает про потоки, зато он прост и надёжен.
Ага. Прост. Спекулятивное выполнение, предсказание переходов, переименование регистров - всё очень "просто".
> Процессор ничего не знает про потоки, зато он прост и надёжен.
Интел как-то пробовал https://en.wikipedia.org/wiki/Task_state_segment
Так и болтается для совместиимости эта бесполезная вещь.
Но даже на этом Intel не успокоилась и породила вот это - https://en.wikipedia.org/wiki/Hyper-threading
> Нет никакой проблемы синхронизации.
Угу - семафоры и критические секции - вот это вот всё с потолка взялось.
На примере х86 рассуждать об архитектуре — это зашквар, если, конечно, речь не о том, как х86 безнадёжно вынужден тащить за собой все колебания линии партии, неудачные эксперименты, ошибки проектирования и костыли. Причём накопление нелепостей и идиотизма уже таково, что его тоже вынесли на отдельный уровень абстракции, заставив заниматься им простое и надёжное RISC-ядро.
>Угу - семафоры и критические секции - вот это вот всё с потолка взялось.
Это не проблемы синхронизации. Это задачи синхронизации и инструменты, которые работают, решают задачи и выполняют заявленные функции.
>Причём накопление нелепостей и идиотизма уже таково, что его тоже вынесли на отдельный уровень абстракции,
Вот тут абсолютно согласен с тобой. И предлагаю посмотреть в сторону моей системы команд, наверное в отдельной теме, чтобы не раздражать честной народ.
>Это задачи синхронизации и инструменты, которые работают, решают задачи и выполняют заявленные функции.
Вот именно это мы обсуждалv в /spc - >>512088
Давай не будем возвращаться к законам Кларка и NIH-синдрому.
>На HDL языках это будет очень простая программа. А как насчёт программы для микроконтроллера?
По прерыванию от таймера выходной порт меняет своё состояние
По прерыванию от управляющего интерфейса перенастраивается таймер
Вот и вся программа.
>Тебя спрашивают как работают твои сообщения (на уровне инструкций)
SEND и RECV осуществляют вход в планировщик. Программный или аппаратный, это уже детали. Планировщик коммутирует регистровый файл устройству выборки и выполнения. Пока так.
>По прерыванию от таймера выходной порт меняет своё состояние
>По прерыванию от управляющего интерфейса перенастраивается таймер
Хмм. Мой вариант:
Ждём событие, если пришёл таймаут, меняем состояние, иначе обновляем значение таймаута из события.
Таймеры не нужны
>Это как? Что за микроконтроллер без таймеров?
Совершенно верно. Только встроенный счётчик тактов планировщика, к которому нет прямого доступа со стороны программиста. Все временные интервалы определяются лишь таймаутами ожидания приёма или передачи сообщений.
Иными словами все таймеры заменяются одним счётчиком, который считает такты до ближайшего события.
Истину говорю вам - таймеры не нужны.
Чем это, сделанное аппаратно, лучше того же самого, но сделанного программно на ЛЮБОМ из существующих микроконтроллеров?
Ты только что изобрёл ртос. Там тоже большинство таймеров отдаются под нужды системы.
Чуть эффективнее. Иногда даже не чуть. Погугли на тему "scheduler hardware acceleration". В некоторых ситуациях код планировщика может съесть до 20% процессорного времени.
Но даже программная реализация получается лучше, чем традиционные решения с кучей таймеров - пример выше с управлением морганием лампочкой.
Понятно. То есть никаких преимуществ, потому что контроллер - не числодробилка, и проц всё равно большую часть времени находится во сне/ожидании.
>Но даже программная реализация получается лучше, чем традиционные решения с кучей таймеров - пример выше с управлением морганием лампочкой.
Но все эту задачу всё равно сделают на паре прерываний. Наверное, потому что им просто не открылась Истина, что они делают непросто и неэлегантно. Жалкие людишки.
Есть axi-stream шина(слейв и мастер или как там сейчас политкорректно? ). По axi необходимо поддерживать 8 различных сессий обмена данными. Если обрабатывать всё это в одной FSM получится дохуя ветвлений и потом заебусь это дело отлаживать.
Есть ли смысл в данном случае использовать броадкаст - то есть разделить 1 шину на 8 получится что каждая сессия будет работать со своей шиной. Или забить, пилить всё в одной FSM?
Вообще есть ли предел числу состояний после которого начинаются проблемы с дизайном?
> тут ты такой красивый со своей охуительной прорывной идеей выскакиваешь.
Если что, я занимаюсь этой бедой не один год http://l4os.ru/.
А тут вот можно с макроассемблером поиграться и пару примеров посмотреть - http://everest.l4os.ru/download/MacroAssembler.zip
>Есть ли смысл в данном случае использовать броадкаст
Ровно для этого и придуман был AXIS interconnect и сигнал tdest.
>Вообще есть ли предел числу состояний после которого начинаются проблемы с дизайном?
Прямой зависимости от числа состояний нет. 16-битный счётчик можно считать FSM с 65536 состояниями.
>Прямой зависимости от числа состояний нет.
Ну как это нет зависимости? А если потребуется подать на комбинаторную логику текущее состояние? Если у меня предположим 3-битный регистр состояния - будет потрачена всего 1 LUT. В случае с 8-битным регистром уже одним LUT не обойтись.
>В случае с 8-битным регистром уже одним LUT не обойтись.
С ростом числа состояний у тебя проблемы с головой начнутся раньше, чем с производительностью.
Ну например, при использовании one hot-кодирования состояний проблемы начнутся быстро.
Ладно, хрен с ним, с кодировкой состояний. Основная проблема даже не в них.
Для передачи пакетов обычно использую сдвиговый регистр, а т.к. вариантов пакетов слишком много, получается жирный мультиплексор.
Onehot-кодирование было изобретено как раз для избежания проблем с декодированием состояний. Есть другие варианты. Например, тебе было норм использовать три активных бита, можно придумать кодирование, которое каждое из возможных валидных состояний задаёт определённой комбинацией из трёх единиц среди кучи нулей. Есть всякие автоматизированные генераторы для таких вещей, я ни разу не использовал, не было нужды.
>т.к. вариантов пакетов слишком много, получается жирный мультиплексор.
Конвейеризация поможет от всего. Дели по поддиапазонам, буферизируй и потом разбирай каждый поддиапазон.
Не хотелось бы самостоятельно писать проц и вот это всё. Готов взять чужое ядро проца, портировать его под архитектуру доступной мне плисины(xilinx 7 series) ну и допилить проект в части подключения к плате джойстика, образа картриджа, вывода звука и изображения.
Начал читать про денди. Всё бы ничего, вот только они наворотили дел с интерфейсом картриджа. Разрядности адресной шины недостаточно, поэтому используют специальные чипы(мапперы) которые переключают банки памяти. Под каждый тип картриджа придется делать отдельный эмулятор.
Как с этим обстоят дела у сеги? Накидайте интересных проектов по этой части, если кто интересовался.
Это же денди
Хочу самую круть для обработки и синтеза звука что есть на данный момент, что посоветует мудрый анон? Бюджет не более 100$ за камень
Обработка это очевидно разные фильтры, а синтез табличный, хочу 16 каналов синтеза
Ты хоть знаешь что такое фильтр и как он выглядит? Что мешает тебе сделать все это на компе? С чего ты вообще взял, что для этого требуется ПЛИС? Или ты считаешь, что фильтр это такая магическая штука, что кроме как на ПЛИС не заведется?
Вот серьезно, хоть бы с передаточной функции этих фильтров начал что ли. Вообще, что мешает вставить твои фильтры в какой-нибудь симулинк и послушать что будет на выходе?
https://github.com/MiSTer-devel/Genesis_MiSTer
С самого утра собирал в блеваде проект дабы оценить объем работ по портированию. По закону жанра в репозитории не оказалось части файлов, но вроде нагуглил.
Сейчас вот сижу и смотрю на огромную портянку файлов в иерархии проекта и охуеваю. Есть шансы во всем этом разобраться?
Достаточно иметь ise 14.7 и более-менее свежую версию вивады и у вас будет возможность работы практически со всей линейкой Xilinx.
>Есть шансы во всем этом разобраться?
Вопрос уровня: "Смогу ли я поднять эту штангу?"
>Где ж ее еще найти эту pro?
А если создать проект в твоей версии и самому добавить в него файлы?
Я бы тоже от pro не отказался, у этой версии вроде как есть "инкрементальный" синтез, позволяющий каждый раз не пересобирать весь проект, а только измененные файлы.
>А если создать проект в твоей версии и самому добавить в него файлы?
Да уже нужды нет, я хотел только взглянуть на иерархию но уже через вивадо всё собрал. Сейчас сижу подгоняю альтеровский SV-код под причуды синтезатора Xilinx.
Вот у X тоже свои прибабахи. В always_comb повсеместно используется блокирующее присваивание на wire. Казалось бы всё норм, но нет, у хилых так нельзя, меняй wire на logic!
https://github.com/MiSTer-devel/Genesis_MiSTer/blob/master/fourway.v
Что у интела так можно?
Я видел такое в коде под Xilinx. При попытке скомпилировать под Altera я получал закономерную ошибку. Но это был Quartus II (даже ещё не Prime), что там навертел Интел в семнадцатой и более поздних версиях - не знаю.
>Вот у X тоже свои прибабахи. В always_comb повсеместно используется блокирующее присваивание на wire. Казалось бы всё норм, но нет, у хилых так нельзя, меняй wire на logic!
Сука, как же я вас, пидоров, ненавижу. Пишете говнокод, потом мне дают этот говнокод и говорят собрать, вносить какие-либо правки при этом запрещая и поясняя, что "wire в левой части в always - ЭТО ПРАВИЛЬНО, т.к. это комбинационная логика" . А у меня Synopsys Design Compiler и VCS такое дерьмо собирать отказываются.
Будь добр, прочитай стандарт на верилог, либо забудь про разработку цифровых схем.
> поясняя, что "wire в левой части в always - ЭТО ПРАВИЛЬНО, т.к. это комбинационная логика" .
always это комбинационная логика? Давно и у кого?
> у меня Synopsys Design Compiler и VCS
А зачем тебе они? Ты чужие поделки воплощаешь в кремнии?
Анон, знающий VHDL, что такое obj_cache?
>Давно и у кого?
У вериложцев со времён изобретения always @()
Что туда где-то разрешают засовывать wire в левую сторону, я, впрочем, не знал.
Даже не знаю, как к этому относиться. С одной стороны, люто бесит, что для описания комблогики приходится объявлять reg, которые не компилятся ни в какие регистры в железе. С другой, wire, который внутри блока последовательных операций самостоятельно хранит своё значение, тоже тот ещё майндфак.
мимо*
port map(
...
data_b => (others => '0'),
...
);
Вылезла такая вот ошибка:
[Synth 8-2784] type of aggregate cannot be determined without context ; 11 visible types match here
data_b- это 32 битный порт вериложного модуля. Что здесь не так? Похоже насосуь хуёв от vhdl
Прежде чем вставлять модуль, нужно объявить его как компонент, в этом объявлении ты пропишешь все порты с их типами. После этого можно вставлять.
Компонент нужно объявлять для каждой сущности модуля?
Тогда почему только на конкретном порту data_b вылезла ошибка?
Нет, ты один раз объявляешь компонент в той же секции, где объявляются сигналы (или в отдельном package).
>Тогда почему только на конкретном порту data_b вылезла ошибка?
Пути конпелятора неисповедимы.
Спасибо, получилось.
Еще один прикол:
[Synth 8-509] operands of logical operator '&' have different lengths (9 vs. 4)
ioq := (ioq and x"7") xor ('0'&BusA);
ioq - std_logic_vector(8 downto 0)
BusA - std_logic_vector(7 downto 0)
откуда здесь vs. 4 взялось?
Почему на интеле это компилится?
Ебанул вот так:
ioq := (ioq and ('0' & '0' & '0' & '0' & '0' & x"7")) xor ('0'&BusA);
Хуй знает как на языке Богов сказать 5'b0
надеюсь угадал
Слил поставил оче старый ISE. Всё ок, в смысле попробовал что-то наваять на верилоге - оно синтезируется, фиттинг и остальное успешно заканчивается, пины прибил.
Теперь вопрос: а как мне это дело симулировать?
Где брать Modelsim XE? iSim? ЩИТО ДЕЛАТЬ КАК ЖИТЬ БЕДА
>Не знал что FPGA одноразовые? Залил конфигурацию и после передергивания питания она стирается.
Есть куча решений с инстант-поверон и флешом унутрях. В том числе рад-харденед.
Он с какой версии появился и как называется? Я ставил 6.1, нету там ничего.
Так-то я сделал тестбенч (файл на верилоге через их же мастер) и ещё нарисовал тестовые вейформы, но вот запустить это чудо нельзя - нет симулятора.
В начале года на работе была задача портировать довольно большой проект с Xilinx на Intel, там дела шли гораздо легче.
А как проходят ваши выходные?
Ищем мастурбаторы. Пока что глаз положен на Reverse U16 и DivGMX и легкое охуевание где добывать детальки под них.
Фанат-коллекционер Altera и тихо фапаю на Xilinx ZU-28DR.
>constant c_mask : std_logic_vector(8 downto 0) := "0_0000_0111";
Весьма компактно и выразительно. Уочень удобно.
у меня сейчас вот так всё выглядит. Можно выбрать разные симуляторы и сделать для них либы для тестов. Но симуляторов, ес-но, нет. iSim не вижу.
Ты прав, давно не запускал это говно.
Попробуй icarus verilog, что-то простое отсимулировать хватит с головой.
>это говно.
Открыл пример из комплекта, таргет был xc2c00 auto. Всё ОК, ну за исключением невозможности симуляции из-за отсутствия симулятора. Поменял на xc9500xl.
Внезапно вот это вот:
> ERROR:Xst:899 - stmchine.v line 42: The logic for <current_state> does not match a known FF or Latch template.
Блять, они это серьёзно?
А тебе с констрэйнами надо? Если нет, то поставь рядом Квартус - с ним ModelSim идёт в комплекте. Или Алтера Интел раздаёт. Но поиметь ModelSim всё же можно.
Возможно тебе повезло и именно эта версия ise имеет баг. Попробуй поискать эрату.
Я ничего не писал, я открыл экзампл "стоп вотч".
Попробовал "always @ (posedge clk)" - аналогично, не взлетело. На XC9500XL всё ломается, ставишь обратно XC2C00 - всё заебись.
Я нагуглил, что последняя версия, которая работает со второыми спартанами - это 10.1
Поставлю её.
>А тебе с констрэйнами надо?
Желательно, так-то я игрался с икарус-верилогом, он интегрируется с гнушными тулами и можно делать простые вещи.
Попробую обновиться на 10.1, если будет такая же хуета - ну их нахуй, эти вторые спартаны.
Ты специально блокирующее присваивание используешь? Ты или неимоверно крут и знаешь что делаешь, или наоборот.
Лучше сразу ну их нахуй. На ровном месте такие грабли лезут. Если не любитель ковыряться в старье порвёшь пукан.
Каноничные MAX7000S MAX3000, "толстые" MAX II (EPM1270 EPM2210), "толстые" MAX V (5M1270 5M2210).
Если только входы - можешь тупо на резисторах поделить если впадлу буферы искать. Сильно не радуйся, MAX II и MAX V - так же требуют один подтягивающий резистор для совместимости с 5В.
> MAX II devices can be 5.0-V tolerant with the use of an external resistor and the internal I/O clamp diode on the EPM1270 and EPM2210
devices.
5в толерантные входы не требуют ничего для согласования с 5в системами. Это обычные 3.3v CMOS, ну и для выхода они предлагают опендрейн + пулапп. :(
>>81576
Дяденька, определись.. Какой стул нужен?
Толерантность к ПРИЕМУ 5В (без выдачи сигналов 5В).
Полностью теплые и ламповые 5В на ВХОД и ВЫХОД?
Сейчас выход один - только буферы. Для нищебродов - обычные, питаемые напряжением принимающей стороны или нормальные буферы с двумя питающими напряжениями. Для параноиков в стиле "я не трогал, я просто смотрел" - есть 74LVC07A и подобное (open drain buffer)
Можешь взять обоссанный Flex10K - это FPGA с честными 5V IO, но есть проблемка с конфигурационными ПЗУ типа AT17 или можешь сам конфигурить ее отдельным МК.
Я везде писал про 5в толератные входы. из того, что это может - сейчас это остатки xc9500XL, второй спартан, coolrunner xpla3?
А так же море микроконтроллеров с армами (которые вполне могут сэмплировать на мегагерцах ГПИО и делать, что душе хочется). Но это получается дорого и через жопу.
>if (reset == 1'b1)
Замени на if (reset). ISE не поддерживает логические выражения в условиях, там можно указать только конкретный wire или reg.
Это была версия 6.1, я её удалил уже. Повторю проблему - синтез проходит для CPLD xc2c00, но фейлится для CPLD XC9500XL.
Откуда информация, что он не поддерживает подобные конструкции? Для FPGA & CPLD CoolRunner всё чётко.
>Откуда информация, что он не поддерживает подобные конструкции?
Из опыта. Я не знаю, может, и поддерживается, а это я рукожоп.
Просто недавно была как раз такая же проблема, чип XC2C256. Код с if(a & b) не собирался. Написал
wire c;
assign c = a & b;
и написал в том always, на который он плевался if(c) - всё заработало.
Дальше нужно изучать формат ром-файлов от сеги и разбираться как всё это дело запускать.
>>81628
Интересно, я когда игрался с 6.1 - мне начало казаться, что у синтезатора для xc9500 есть проблемы, когда одному и то же регистру ты суёшь из разных always @(posedge / negedge) блоков.
Перемещение логики в один блок починило жалобы. Вообще сдаётся мне, что он глючный, прям пиздец.
Уже начал смотреть на альтеру, латтис и актель.
>у синтезатора для xc9500 есть проблемы, когда одному и то же регистру ты суёшь из разных always @(posedge / negedge) блоков
В других САПР такое вообще не поощряется и на это ты получишь ошибку. По-хорошему, так делать вообще нельзя.
>Уже начал смотреть на альтеру, латтис и актель.
Вот у Альтеры ты точно получишь отбивку на попытку обращаться к одному reg из разных блоков always.
>>81631
Я бы не писал, если бы сам не столкнулся с такой проблемой 2 недели назад.
У меня был большой проект на спартане 6. Всё совпало с результатом симуляции на 100%
Хотя у меня очень примитивный стиль написания кода. Я всякую хуйню вроде блокирующих присваиваний и другие конструкции, в результате которых не уверен на 100% вообще не использую.
>Вот у Альтеры ты точно получишь отбивку на попытку обращаться к одному reg из разных блоков always.
Поддвачиваю. Сам соснул хуйцов при попытке сбрасывать-устанавливать триггер из разных always блоков.
Код компилится, можно прогнать симуляцию. Соснул на моменте синтеза, где явно писалось - ты упоролся, пошел на хуй..
>когда одному и то же регистру ты суёшь из разных always @(posedge / negedge) блоков
Ты же понимаешь, что это быдлокод?
Это не имеет значения, что он там синтезируется.
always @(negedge) - вообще хуёво ложится на архитектуру FPGA, ведь все ячейки тактируются по переднему фронту. Значит синтезатор на клоковый вход ставит инвертор на луте. Я даже придумать не могу где такая конструкция нужна.
> Значит синтезатор на клоковый вход ставит инвертор на луте.
И что плохого ты в этом видишь?
> Я даже придумать не могу где такая конструкция нужна.
Вытянуть лишний мегагерц по быстродействию?
>Каким образом?
Сдвинул схему на полтакта и глитчи пропали.
Дяденька, я не настоящий сварщик - я маску на стройке нашёл.
>имелось ввиду стандартное always @(posedge clk or negedge rst_)
Ха, в точку! Именно это и было, приседания логикой для ресета.
>вообще хуёво ложится на архитектуру FPGA, ведь все ячейки тактируются по переднему фронту.
Речь шла про Xilinx CPLD, там сильно проще ваять комбинаторную логику (есть прямой сигнал и дополнение, широкая шина), чем полагаться на триггеры.
Вдогонку, если смотреь на схему - то видно, что триггеры можно сетить-ресетить без клока. А в верилоге нельзя смешивать блокирующие и неблокирующие присваивания. Вопрос, как это заюзать?
В список чувствительности олвейса внеси ассинхронный сигнал и сбрасывай/устанавливай по этому сигналу.
always @(posedge clk or posedge async_s) begin
if (async_s) rr <= 1; else begin //async
rr <= from_other_logic; //sync
end
end
Во-первых, ты не понимаешь, какое железо ты описываешь. Оно на архитектуру ПЛИС не ложится, триггеры переключаются только по posedge. Negedge означает, что клок будет где-то инвертирован с соответствующими неявными, но значительными последствиями для клокового дерева в виде ухудшенных временных характеристик и выросшего потребления клоковых ресурсов. Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак, не умеют триггеры такого.
Во-вторых, ты забываешь, что HDL — язык описания схем. Как тебе идея на обычной принципиальной схеме один и тот же транзистор рисовать два раза, в двух разных местах заводя ему на базу разные сигналы, потому что автору показалось, что так удобнее выразить его идею? Не хочется в табло ему дать?
>Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак,
А как же ddr?
Делаются на специальных буферах ввода/вывода, которые умеют работать только на ноги, и у которых задача — разделить ддр-сигнал на два, как раз-таки чтобы внутренняя логика могла с ним работать.
Ладно DDR, про это наверное всем понятно. Но как ты будешь приделывать АЦП, которые тоже часто выдают результат по двум фронтам?
Это тоже DDR. DDR, если что — это не память для пеки, а double data rate, передача битового потока на удвоенной частоте клока. Делается, соответственно, на всё тех же самых специализированных буферах в/в.
Да, тут я несколько неправильно выразился, т.к. часто этой аббревиатурой называют именно память.
>Делается, соответственно, на всё тех же самых специализированных буферах в/в.
Пример того как это делается можешь дать? К примеру, на spartan 6, пусть и устаревшем.
wire posedge_data, negedge_data, clk, reset, input_ddr_signal;
IDDR2 # (
.DDR_ALIGNMENT("C0"),
) IDDR2_inst (
.Q0(posedge_data),
.Q1(negedge_data),
.C0(clk),
.C1(!clk), // не ссы, здесь клок перевернётся аппаратно внутри самого буфера. Он это умеет.
.CE(1),
.D(input_ddr_signal),
.R(reset),
.S(0)
);
Качни UG615 и UG381.
>Во-первых, ты не понимаешь, какое железо ты описываешь. Оно на архитектуру ПЛИС не ложится, триггеры переключаются только по posedge. Negedge означает, что клок будет где-то инвертирован с соответствующими неявными, но значительными последствиями для клокового дерева в виде ухудшенных временных характеристик и выросшего потребления клоковых ресурсов. Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак, не умеют триггеры такого.
Во-первых, я 100% знаю, что и как и как описываю и как оно ложится на ярхитектуру того, что использую. Тригерры имеют отдельно входы для сет и для ресет, а дистрибуция птермов и клока уже из коробки имеет и прямые и инверсные линии, прям сразу.
см >>81659
>>81687
>Во-вторых, ты забываешь, что HDL — язык описания схем. Как тебе идея на обычной принципиальной схеме один и тот же транзистор рисовать два раза, в двух разных местах заводя ему на базу разные сигналы, потому что автору показалось, что так удобнее выразить его идею? Не хочется в табло ему дать?
Я на схеме на один триггер могу завести несколько сигналов, если сигналы будут идти через некоторое количество гейтов для комбинаторного выделения нужного. В чем проблема?
>триггеры переключаются только по posedge.
Смотри на ячейку. Видишь триггер? Видишь, что его можно сеттить и ресеттить без клока?
>В список чувствительности олвейса внеси ассинхронный сигнал и сбрасывай/устанавливай по этому сигналу.
>
>always @(posedge clk or posedge async_s) begin
Да, действительно.
Бля, у ЦПЛДшников, по ходу, какая-то вообще своя атмосфера безумия. Ну их нахуй. Ты прав, делай что хочешь.
Какое, блять, безумие?
Поддержка дуал-эдж триггеров из коробки, и глобальные сет-ресеты без клока. В примерах от зайлинкса явно видно другой способ ака стиль написания кода (для утилизации фич цплд)
> These devices feature a MicroBlaze™ soft processor running over 200 DMIPs with 800Mb/s DDR3 support built on 28nm technology.
Это про спартан7. Вопрос: почему 800 мегабит? Это всего 100 мегабайт в секунду. Что за говно?
Объебались, скорее всего. Наверняка речь о DDR3-800 с 800MT/s. Надо ещё умножить это на ширину шины данных.
(а то и вообще о DDR3-1600 с 800MHz частотой шины и вдвое большим количеством передач)
Такие же тригеры есть и в FPGA, но мало.
>Во-первых, я 100% знаю, что и как и как описываю и как оно ложится на ярхитектуру того, что использую
Плохие новости, ты на гребне глупости
Спасибо за пояснение и полезный пост. Теперь я понял, почему ISE любит XC2C00 и не может в свои же XC9500XL.
Как почитаешь постеров - так столько нового узнаешь Nyet
ЮСБ3.1, тхандер-болт или ещё что?
(В том числе отладочных плат полно, которые разъём под слот имеют соответствующий.)
Некрофил снова на связи, поставил 10.1 айс.
Теперь stopwatch_cr2 на xc9500xl не синтезируется из коробки, но изменение условия с убиранием дуалэдж триггера по фронту и спаду клока - всё починило. Что радует.
Новое сообщение об ошибке было такое:
ERROR:Xst:899 - "stmchine.v" line 43: The logic for <current_state> does not match a known FF or Latch template. The description style you are using to describe a register or latch is not supported in the current software release.
>понял, почему ISE любит XC2C00 и не может в свои же XC9500XL.
Тебе ведь говорили, что старые синтезаторы иной раз очень криво работают, особенно когда в коде изобилие непопулярных конструкций вроде обращений к одному регистру из разных олвейсов использование блокирующих присваиваний там где они нахуй не нужны.
Короче, пиши простым языком, без выебонов и всё будет ОК.
Это вообще-то норм практика — разделять комбинационную и последовательную логику.
Вот только то, что на картинке, не похоже на разделение последовательной и комбинационной логики, а похоже на говно.
Из первого блока надо убрать всё, что связано с управлением rst и clken, заменить список чувствительности на @(*) и все неблокирующие присваивания (<=) на блокирующие (=). И быть твёрдо уверенным, что в этом блоке никаких триггеров не генерируется, всё защёлкивание происходит во втором блоке;
rst и clken управлять в отдельном (третьем по счёту) always @(posedge clk) и никак иначе.
В чем удобство?
https://pastebin.com/Dw1RhsF7
Вот накидал как бы я сделал. Не надо скакать по коду. Синхронная секция в одном месте, ассинхронная в другом.
Вообще, универсальное правило: блоки always должны быть только с @(*) и = и тогда это комблогика либо с @(posedge clk) и <= и тогда это триггеры.
В исключительных случаях допустимо @(posedge clk, negedge aresetn) если очень хочется сделать асинхронный резет, и ты точно понимаешь для чего он тебе нужен.
Всё остальное — НАХУЙ.
>В исключительных случаях допустимо @(posedge clk, negedge aresetn) если очень хочется сделать асинхронный резет, и ты точно понимаешь для чего он тебе нужен.
Это зависит от архитектуры. У него старые цплдшки, поэтому ассинхронный сброс допустим.
>assign rst = (state == clear) ? 1'b1 : 1'b0;
Так-так, резет генерируется из комбинационной логики, соответственно может дёргаться между тактами, соответственно, может рандомно дёргать асинхронные ресеты, если он на них заведён. Не надо на эти грабли наступать.
Этот исходный код даже не компилируется, похож на говно и вообще написан нубом, который сюда пришёл за советами. Слабое оправдание.
Каким нубом? Этот код из примеров xilinx или еще откуда-то. Вот нагуглил.
https://manualzz.com/doc/7987510/xcell29
Ну ок. За 1998 год я судить, пожалуй, не возьмусь.
Вернись, мы больше не будем.
>И давай по подробнее. При каких условиях здесь rst будет дрыгать между тактами?
Вот смотри, состояние clear=000. Резет генерируется лутом из трёх сигналов, соответствующих трём битам. Если все три бита нулевые, резет на выходе лута становится 1.
Далее, у тебя есть два состояния: zero=001 и start=010
Допустим, fsm переходит из состояния zero в состояние start. При этом fsm[0] становится 0, а fsm[1] из 0 становится 1. Если проект собрался так, что из fsm[1] сигнал идёт дольше, чем из fsm[0], то при таком переключении возникнет ситуация, когда с точки зрения лута fsm[0] уже стал 0, но fsm[1] ещё не стал 1 и продолжает быть видимым как 0. Тогда на луте все три сигнала оказываются нулевыми, и он выдаёт резет. При том, что стояние clear не наступало, а был всего лишь переход из zero в start.
Понятно. Не сталкивался с подобным, видимо потому что не использую ассинхронные ресеты.
В какой книге годно описано о смешении ассинхронного и синхронного?
Это код, котрой идёт в комплекте как минимум с ise 6.x + ise 10.x
Он собирается без предупреждений, но под как минимум оин таргет фейлится.
Кто-то усиленно читает жопой. Здесь так принято, да?
>>81785
Мой коммент о том что я знаю, что делаю, относился к коду из пары десятков строк, который был для XC9536XL. Там я смотрел на итоговый RTL. Примеры из комплекта решил зююзать для тестирования багов синтезаторов - потому что безобидные вещи фейлились без основания.
>iSim не вижу.
Короче, дело к ночи уже, а воз и ныне там. В 10.1 типо есть iSim, и он типа должен запускаться,
>Running ISim simulation engine ...
>This is a Full version of ISE Simulator(ISim).
Однако нихера нет. Ни окошка, ни интерфейса, ни активных кнопочек. Проект - каунтер 4 бит для 3спартана.
Винда 7, х64. ISE x64 не пускается - сразу крэш. А вот 32ая версия - пускается. Кстати драйвера на платформ кабель встали и работают, импакт работает с юсб.
Как же меня это заебало.
Может в линукс поставить? Я поискал, бинарника isimgui нигде нет. Неудивительно, что он не запускается. Пизда, нихуя не понятно.
Смотри, винда есть хп, 7, есть 8, 10 и всё. А линуксов целый зоопарк дистрибутивов, версий. Для тяжелого софта обычно пишут указывают конкретную сборку линукса, в остальных работоспособность не гарантируется. Так что под линуксом может быть еще больше приколов.
>>81814
Судя по логу симулятор есть, но он почему-то не запускается. Возможно по той же причине, что и 64х версия ise. Короче попробуй виртуалку с ХП.
Я погуглил, ISE - глючный кусок говна, если судить по форумам и саппорту от зайлинкс. https://forums.xilinx.com/t5/Simulation-and-Verification/Isim-crashing-Windows-7-VM/m-p/219187#M5220
Оно глючит на разных версиях, рекомендуют или ХП или Линукс. Какой пиздец, и это - лидеры в области ФПГА. Я боюсь даже представить, что будет, если я возму актель-микросеми или альтеру-интель.
> ISE - глючный кусок говна
>Какой пиздец, и это - лидеры в области ФПГА
Использует древнее говно, удивляется что оно глючит.
Оно глючило и в 2010-2011 и глючит сейчас. Внезапно.
Поэтому все нормальные люди перешли на 7ю серию либо вообще ультраскейл. Начинать новые проекты на старом железе это такое.
Тем более сейчас младшие модели цинков и спартанов 7 прилично подешевели.
huh?
в реальном мире не для всех задач нужны кинтексы, зинки и спартаны. есть задачи - замены горсти горелой логики в ДИП-корпусах плис-ом. или согласование инерфейсов
здесь цплд-шки заебись, пока ещё есть 5в толерант опции
Год назад сталкивался 8088. Да, с этим самым.
>В qpf-файле сказано, что требуется версия 17.0
qfp-файл можно вообще сделать пустым, вся важная информация находится в qsf
>синтезатор на клоковый вход ставит инвертор на луте.
Не на луте, во всяком случае у Сыклонов. У них на входе ячейки есть специально подключаемый инвертор для таких целей. Скомпиль и просмотри как выглядит в чиппланере.
>Я даже придумать не могу где такая конструкция нужна.
Да сплошь и рядом, когда работаешь с асинхронными сигналами на входе ПЛИС, которые не удаётся перетактировать на свою частоту по причине их высокой скорости.
> Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак, не умеют триггеры такого.
Умеют, но не все.
>Допустим, fsm переходит из состояния zero в состояние start. При этом fsm[0] становится 0, а fsm[1] из 0 становится 1. Если проект собрался так, что из fsm[1] сигнал идёт дольше, чем из fsm[0], то при таком переключении возникнет ситуация, когда с точки зрения лута fsm[0] уже стал 0, но fsm[1] ещё не стал 1 и продолжает быть видимым как 0. Тогда на луте все три сигнала оказываются нулевыми, и он выдаёт резет. При том, что стояние clear не наступало, а был всего лишь переход из zero в start.
Всё это называется гонки сигналов.
>Да сплошь и рядом, когда работаешь с асинхронными сигналами на входе ПЛИС, которые не удаётся перетактировать на свою частоту по причине их высокой скорости.
Это, например, что? Я честно не могу представить.
Хотя, наверное, могу. Приёмник радара какого-нибудь после фильтра со сжатием импульсов.
ИМХО использовать ПЛИС стОит, когда стоит задача обработки цифрового сигнала и вот ну никак иначе. А когда начинается сложная логика или протокол связи, то все-равно внутрь ПЛИС приходится загружать какой-то из доступных микроконтроллеров (что приводит к еще большему веселью, и никак не отменяет нужды читать доки).
Ну и еще есть стандартные проблемы с восприятием подхода к… даже язык не поворачивается сказать «программированием ПЛИС». Это не программирование в привычном понимание. Программа — набор последовательных инструкций. В ПЛИС с непривычки очень здорово запутаться можно, а каждая ошибка превращается в 10 минут (почти что минимум) безделья и попивания чая на пересборку проекта.
Ну и чтобы еще больше «уравновесить» восторг статьи, чуть критики перечисленных плюсов:
1) не надо читать доки на МК. Зато придется читать доки на: USB, Ethernet, думать как перетащить известную написанную на С/С++ реализацию TCP/IP в ПЛИС, CAN и прочее-прочее добро. То, что есть готовые модули — это хорошо, но документацию то значит придется читать на них, не? а когда чужой модуль начинает вести себя… непредсказуемо? Да он же бесплатно был взят из инета! какие претензии?
2) ну про дедушку пример можно и про плис сказать. в сарайке есть плис, вот из него и соберем. А с тем, что есть эффективный по функциональности, цене в серии и, страшно сказать, времени на разработку МК под этот род задач, даже и разбираться не будем — лень же читать доки и все это в голове держать.
3 и 4ое — мне кажется когда в годах 70х придумывали языки программирование, то в каждой презентации были вот эти слова про «теперь можно сделать хорошо отлаженный модуль», «легко импортировать чужие модули».
Конечно не моего ума дело, но я бы запретил на «Хабре» статьи подобного рода. Во-первых статей для начинающих плисоводов в И-нете на всех возможных языках (включая, разумеется, русский) пруд пруди. А главное — авторы подобных статей не понимают одного: программирование FPGA нельзя «попробовать»! Это можно попробовать «попрограммировать» на компе или игрушечную платку с «восьмирёночком» типа «Ардуино». А вот с ПЛИС — это как изучать иностранный язык или играть на музыкальном инструменте, либо ты этим занимаешься по-серъёзному и регулярно, либо не нужно тратить на это время вообще. Кроме того, нужен совсем другой объём знаний по сравнению с программированием. По-крайней мере, истинный плисовод должен очень хорошо разбираться в электронике, как показывает моя многолетняя практика вменяемого плисовода можно сделать только из грамотного электронщика.
кстати, почему на зашквабре такой пиздец с дефисами? "все-равно", "по-крайней мере", хочется их убить всех нахуй.
Только вот скоро они будут не нужны. Протоколы, алгоритмы обработки сможет описать любой нормальный программист, используя созданный для этого декларативный функциональный язык, а задача подгонки этого под нужный чип ума не требует и её можно доверить технику, закончившему как-бы-вуз с тройками в дипломе.
С каких это пор программисты считаются более квалифицированными чем электроники?
>>84537
>А когда начинается сложная логика или протокол связи, то все-равно внутрь ПЛИС приходится загружать какой-то из доступных микроконтроллеров
Может быть похоливарим насчёт микроконтроллера, который приходится загружать в ПЛИС?
>считаются более квалифицированными чем электроники?
С тех пор, как стали зарабатывать больше. Дно из геймдева зарабатывает больше, чем топ-электронщик из нии.
Ну "дно из геймдева" не такое уж и дно с точки зрения квалификации, по идее. Это одна из самых байтоёбских специализаций в программировании.
>>84548
>С каких это пор программисты считаются более квалифицированными чем электроники?
С каких это пор сравнивают "квалифицированность" между разными инженерными профессиями? Что это за методика такая?
Это не показатель квалификации. Тем более в местах, где не разрабатывается коммерческая гражданская электроника.
Так он же вроде описывал, что для выполнения макако-задач т.е. тех, где люди подумали уже за тебя особая квалификация в вопросе не требуется.
>>84552
Поддержу, но у меня в ДС2, геймдев-макака получает больше ну или примерно так же, чем ведущий инженер-схемотехник в ГеоСкане. А там как раз разрабатывается коммерческая гражданская электроника (дроны для геодезической съемки).
>Конечно не моего ума дело, но я бы запретил на «Хабре» статьи подобного рода.
Боишься конкуренции? Или того, что "элитное" плисоводство теперь будет доступно каждому мимокроку?
>Во-первых статей для начинающих плисоводов в И-нете на всех возможных языках (включая, разумеется, русский) пруд пруди. А главное — авторы подобных статей не понимают одного: программирование FPGA нельзя «попробовать»!
Ой, та ладно. Про микроконтроллеры тоже самое говорили, а теперь даже домохозяйка может сделать умную занавеску на ардуине по простым гайдам с ютуба.
>С тех пор, как стали зарабатывать больше.
Великолепная логика, казнокрадов в таком случае можно всех переквалифицировать в доктора наук.
> "элитное" плисоводство теперь будет доступно каждому мимокроку?
Не будет - платят за это мало. Только фанаты или кто влез в наивных 2000 и теперь из-за возраста деваться некуда.
>Они и есть доктора экономических и юридических наук.
Квалифицированные? Или просто купили/нашли в интернете докторскую степень?
>что "элитное" плисоводство теперь будет доступно каждому мимокроку?
>, а теперь даже домохозяйка может сделать умную занавеску на ардуине по простым гайдам с ютуба.
Платка марсоход.
Стоят во главе государства, управляют такими умниками, как ты - значит умнее тебя.
>Стоят во главе государства, управляют такими умниками, как ты - значит умнее тебя.
Ну у них и денег больше чем у тебя, значит и поквалифицированее тебя будут.
>"Поэксперементируете с нашей аппаратурой, пощупаете живьем, про что читали в универе". А зарплата маленькая и работать много.
Так в чём проблема? Набей опыт 3-5 лет, выучи английский и заводи трактор, тут половина плисо-бояр с двача так сделала.
А что с ними?
Загуглил, откуда была жирная паста постом выше, скопировал оттуда другую жирную пасту.
Только если ты не шизик со сверхценной идеей про ПРАВИЛЬНУЮ архитектуру проца, которая решит все проблемы.
В чем суть хайпа по RISC-V и в чем его удобство?
Зачем нужно большое количество реализаций одних и тех же инструкций? Чтобы получить железку которая производительнее в определённом юзкейсе, но при этом без геморроя запускает менее требовательные к производительности готовые программы?
Какие ещё профиты предлагаемого подхода?
Это явно не в отсутствие лицензионных отчислений, и так все будут платить за ядра, только не арму.
>Ну "дно из геймдева" не такое уж и дно с точки зрения квалификации, по идее.
Таки да, у них в пределах рашки аналогичная хуйня, что и с электронщиками, желающих по фану ебаться с кватернионами за еду заметно больше, чем желающих их нанимать, поэтому рыночек давит в сторону снижения зарплат. Но ты всего лишь покормил жирного, у которого функциональщина вытеснит хдл, хотя за 60 лет она не осилила добраться даже до промышленного программирования.
>Таки да, у них в пределах рашки аналогичная хуйня, что и с электронщиками
Рофл в том, что геймдевы на подсосе не только в рашке.
>Но ты всего лишь покормил жирного, у которого функциональщина вытеснит хдл, хотя за 60 лет она не осилила добраться даже
Да хуй его знает, бро. Нейроночки тоже 60 лет стартовали, пока не появилось железо способное их использовать и железо способное их обучать (за какое-то адекватное время). Может быть через десяток лет напишут какое-то сверхпрожерливое говно транслирующее функциональную парашу в сносный ХДЛ-вариант.
Алсо сейчас уже наверно 50% девайсов собирается из покупных IP-ядер, там и знаний программирования не надо, знай подключай блоки по инструкции.
Да, проблема действительно не ограничивается рашкой. Но суть всё та же, не квалификация, а сугубо рыночек порешал зп в геймдеве.
Game industry is lower across the board and it’s not surprising at all. You have a million people who all want the same couple thousand jobs because they somehow think programming for games is a lot more “fun” than other programming and they are passionate about games.
That means supply is extremely high and demand is extremely low, companies have all the bargaining power and even when you get hired you have basically no leverage to ask for raises.
Couple that with the longer than average hours and high expectations on performance and there you have the biggest reason a lot of people who set out to make games never actually make a serious attempt once they get established in other industries that pay a lot better, work less hours and are located in areas that cost half what the game industry “hubs” do to live.
>Может быть через десяток лет напишут какое-то сверхпрожерливое говно транслирующее функциональную парашу в сносный ХДЛ-вариант.
Дай бох, чтобы через десяток лет хотя бы поддержку синтезируемых конструкций системверилога завезли уже целиком, наконец.
Я только про геймдев говорил, ну ты чо.
Грубо говоря день-два продумываю архитектуру и после этого на долгое время ухожу в рутину rtl-кодирования, потом колесо сансары делает новый оборот.
>Веб сложнее, чем FPGA
Почему тогда сайтики делают на фрилансе даже школьники, а логические восьмиканальные анализаторы на ПЛИСах - единицы?
Сайтики сайтикам рознь, разве не так?
Всякие штуки за которых хорошо платят не каждому школьнику по зубам.
Был бы такой же спрос на стоканальные логические анализаторы, их бы тоже делали школьники.
>Хоть какое-то разнообразие я получаю только когда призодится решать архитектурные задачи, но мне их достается мало.
>
>Грубо говоря день-два продумываю архитектуру и после этого на долгое время ухожу в рутину
Про веб тоже самое же, чо ты? И про гейдев.
Читал на хабре около бредовую статью o разработке на fpga, в комментах оказалось автор на фирме программит на systemc какие-то инкапсуляторы потоков, нихуя не умеет и не умел в verilog/vhdl и электронику.
Да просто у программистов денег дохуя, вот они и могут себе позволить купить отладку с FPGA чтоб чисто ради фана поковырять новую для себя технологию, после чего пишется бредовая статья на петухабр, а отладка отправляется в стол.
>то все-равно внутрь ПЛИС приходится загружать какой-то из доступных микроконтроллеров
Да вот не скажи. Я Езернет реализовал без всяких этих ваших Ниосов.
>>84543
>как показывает моя многолетняя практика вменяемого плисовода можно сделать только из грамотного электронщика
Скорее из грамотного прогера, ибо проектирование на плис всё же ближе к прогерству нежели к.
>Скорее из грамотного прогера, ибо проектирование на плис всё же ближе к прогерству нежели к.
>
Предлагаю сойтись на том, что грамотный прогер это в первую очередь грамотный электронщик(хотя бы в той электронике, которую он программирует), ибо сначала было слово электронное устройство и только потом программирование, а любителей программировать "черный ящик" на сверхвысокоуровневом языке, предлагаю отправлять к чепушиле, который весь этот холивар и затеял.
Бред полнейший.
>А когда начинается сложная логика или
Обработчик цифрового сигнала не должен как-то управляться? Самый простой пример - радиоприемник с цифровой обработкой сигнала и дисплейчиком с менюшкой.
Как та борда на Kintex7+sfp с али. Только там одни sfp, а мне нужно 12битную шину передать-принять.
https://www.analog.com/ru/design-center/evaluation-hardware-and-software/evaluation-boards-kits/dc854d-b.html
130Msps ADC. Обыкновенные штыри с шагом 2,54. Так что анон выше прав.
Так то да, речь не о всяких там java-обезьянах, а о прогерах железа. Но чтобы такому прогеру успешно кодить - не обязательно ему быть гуру электроники, достаточно знать какие напряжения имеют логические 0 и 1.
У кого него?
100MHz можно и обычные штыри выводить, в чем проблема?
Вебмакака, пожалуйста.
Сайты это либо интернет-магазины, либо сайт-визитка, всё делается в течении пары часов по туторам с интернета.
Будто не так.
>В чем суть хайпа по RISC-V и в чем его удобство?
Нельзя просто так и реализовать, например, процессор с инструкциями АРМ. А РИСК-5 - можно. Идея поиметь открытую и бесплатную ИСА, чтоб программисты нарожали компиляторов, линкеров и прочего, и бесплатно без смс и регистрации.
В целом тот же АРМ выглядит удачнее, но деньги и лицензии.
>Вебмакака, пожалуйста.
Мимо.
>Сайты это либо интернет-магазины, либо сайт-визитка, всё делается в течении пары часов по туторам с интернета.
Помигать диодиком можно в течении пары часов по туторам с интернета.
Это не ответ. Давай сравнивать.
RISC-V использует трехадресные команды?
RISC-V имеет сколько реализаций?
А разных корок ARM десятки. Что ты сравниваешь - архитектуру или реализацию? Или инфраструктуру - компиляторы, отладчики, библиотки?
SDR эмулятор сигналов ГПС (спуфить ГПС)
Где взять скетч "blink" под эту херню и как ее вообще подключать-включать? В самой пердуиноиде ничего не нашел с похожими именами. Как добавить их поддержку?
Куда подавать питание, как и чем прошивать прошивку, куда и как подключать светодиод?
Смогу помигать одним светодиодом или на большее число хватит? Хватит ли на что-то большее чем мигалка светодиодом или облажался при выборе камня для игр? В перспективе смогу подключить пару серв или часы реального времени DS1337, экран 16х2 и пару кнопок?
>пруфы с супом
Извиняй, запас Дошиков закончился, надо бы пополнить. Хотя мне больше нравится Троллтон.
Но нахуя? Вот тебе пара светодиодов которые планировал подключить и ими же помигать. Как подключать - в душе не ебу, обратился за помощью, а меня послали на хуй в столовую.
Что ты задумал, извращенец?
Красный, жёлтый, зелёный светодиоды как бы намекают что ты должен моргать светодиодами на Ultra HD матрице?
А что если у тебя ничего не получится?
Надо было класть Red, Green, Blue. Тогда интереснее. А пока больше на светофор похоже. А для светофора за глаза достаточно и воронежской ПЛИС. Да и вообще, ПЛИС для светофора это как микроскоп для гвоздей.
Красный и зелёный будут меняться с частотой 300МГц? Полезно, а то частенько заёбываешься ждать, когда уже наконец зелёный включится.
>Зойчем скрывать серийник?
Что бы не спрашивали насколько это древнее и засохшее говно мамонта. 1225
>>85109
>А пока больше на светофор похоже
O RLY? Таки можно к нему подключить аж три светодиода? В постах выше никто так и не ответил - получится или нет подключить более одного светодиода.
Раскусил ты мой коварный план. Даже если не получится светофор - видимо будет мигалка из одного светодиода на елку под Новый Год. Осталось дело за малым - узнать как подключать светодиоды, как подавать питание, как заливать прошивку и в чем создавать прошивку? В пердуиноиде не нашел ее поддержки.
>>85116
>меняться с частотой 300МГц
Это много или мало? Есть с чем сравнить для понимания?
Как-то ты толсто троллишь. Осеннее обострение?
У тебя чип, который как несколько зарпkат стОит, и кто бы его дал поиграться человечку, не знакомому с HDL. Таки обострение.
>как подключать светодиоды
Держи, жирный:
https://www.youtube.com/playlist?list=PL4UMfOeGYsvbPDapirH9GOJ93CBSOe49Y
Хоть кто-то внимательный. Почему бы и нет? Для особо бредовых и извращенных фантазий должно хватить.
>>85135
Поддвачиваю. У него же в лекции https://youtu.be/Jt87cbQThSc?t=2467 видел тактовый дегенератор из инверторов и отключенной оптимизации. Но это уже совсем экстрим.
Вот что интересно - так это зачем огромная куча тактовых входов у ПЛИС, исключая подключение LVDS каналов/когда надо завести далеко не одну частоту/удобство разводки? У тех же циклонов в 144 ногом корпусе кажется 16 тактовых входов. Есть ли смысл подавать один и тот же тактовый сигнал на например на 4 тактовых входа или можно на один и размножать его внутри ПЛИС?
В платке с EP3SL200 вообще какой-то бред - одна обычная дифпара + выход PLL идут на внешнюю микросхемку PLL Si5326с (с возможность выбора источника тактирования - два с FPGA и внешний генератор) и ее два выхода PLL идут на 2 разных тактовых входа FPGA. В чем сакральный смысл?
Цепочку генератор-pll-тактовый вход могу понять, а если включать выход внутреннего pll есть еще один независимый генератор с прямым подключением, от которого можно запитать внутренни pll на внешний pll и от него же снова тактироваться. Не понимать.
Тут действует принцип кашу маслом не испортишь.
Допустим тебе потребовалось реализовать много однотипных интерфейсов с внешним клоком - тогда и пригодится огромное число тактовых входов.
>большие деньги
Чип Б/У, на выпиленном куске платы под выпаивание и реболлинг. Такие (даже четвёртые стратиксы на 820к ячеек) стоят не больше десятки.
Для этого чипа только изготовление платы будет стоит 500 баксов (8-ем слоёв, 3/3 mil, 10cm x 8 cm). И то, на 8-ми слоях все ноги не разведёшь.
Проще купить готовую евалюэшн борду.
Такое имет смысл покупать - если нужно починить горелую плату. Для хобби - бюджетный предел - это FBGA 144 1.0mm pitch, FBGA 256 - можно, но уже сложнее. А дальше космос (сильно резко возрастает цена изготовления ПП и уже надо думать о том, где заказывать монтаж - руками можно зафейлить, если нет опыта)
>только изготовление платы будет стоит
>на 8-ми слоях все ноги не разведёшь
Где мои дежурные картинки? А мне норм. Сиди, паяй. Deadbug style - наше все на все случаи жизни. Что еще взять от пердуинщиков?
Ну как бы сказать. Если совсем по дешману делать и верить JLC 6 слоев размером с лист А4 - ебаных 170 уе+ доставка 40уе. Бля, да это же вообще копейки центы стоит.
Прикидывая из 6 слоев - 2 на питание и 4 под данные - можно дойти до красного квадрата и получить около 8 сотен выводов при нормах около 0.1/0.15. Для пердуинки очень даже тема - получится хороший такой колючий йожэг, имеющий около 8 сотен колючек. Если поизголяться то можно и до желтого квадрата дойти и это еще +50 выводов.
>Ну как бы сказать. Если совсем по дешману делать и верить JLC 6 слоев
0.45mm виа диаметр + 5мил + 5мил = 0.7мм - если расстояние меньше до меди, то виа не сделаешь. Поддержки слепых виа нет.
Нужно идти на pcbway, там чуть лучше. И то, столько выводов не разведёшь.
Вот это может быть верно. Для мигалки, про которую писали выше, достаточно будет подать питание и подпаяться к одному I/O. Между прочим, наверняка есть задачи которые сводятся к подобному. Например для какого-нибудь брутфорса хешей или чего-то подобного хватит одного UART.
Питание из воздуха будет браться? У таких проводов дикая индуктивность (для частот работы чипа) и сопротивление.
Проще за $200 купить вот это https://ru.aliexpress.com/item/32905119716.html
>170 уе+ доставка 40уе
За эти деньги есть хуева гора нормальных плат от китайцев.
Там всё есть.
Каким вещам уделить внимание дабы у меня получился код удовлетворяющий высоким промышленным стандартам а не ардуиностайл?
Какой частотой лучше тактировать мой контроллер:
от мастера (sck)
или некой от внутренней частоты?
>Может вы подскажите, есть ли более интересные тепловизионные матрицы за вменяемые деньги?
Киса, дешевых нет. Это основная стоимость. С китайцами ты конкурировать не сможешь - инфа 100%.
>spi slave девайс
>код удовлетворяющий высоким промышленным стандартам а не ардуиностайл?
Табуляцию хотя бы выдерживай.
Зачем с кем-то конкурировать? Я хочу запилить для себя.
Кроме самой матрицы китайцы продадут корпус, плату, экран и еще кучу всякой малафьи. Моя идея в том, чтобы взять голую матрицу и подключить её к уже имеющемуся железу, хоть какой-то % от стоимости должен выиграть, разве не так?
Ты считаешь, что поделки ардуинщика от изделия инженера отличаются только соблюдением табуляции?
Да.
А ты случаем не из ардуино-треда?
Кроме матрицы еще объектив нужен, тоже весьма дорогой.
Заметно дешевле готового изделия наверняка не получится. Матрицу к чему подключать будешь? Во сколько еще обойдется изготовление платы? А корпус как будешь делать?
>Кроме матрицы еще объектив нужен
Это конечно еще один повод отказаться от этой затеи. Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала.
>Матрицу к чему подключать будешь?
Я думаю это наименьшая проблема, т.к. поток данных там по современным меркам совсем скромный и его сможет обработать малинка или еще какой-нибудь микроконтроллер. Ну а если интерфейс нестандартный - можно взять плисину.
>Во сколько еще обойдется изготовление платы?
Зачем изготавливать плату если можно взять отладку с подходящим девайсом, коих у меня целая куча лежит в столе без дела. Корпус тоже не нужен.
>Я думаю это наименьшая проблема
Кому как. По крайней мере это много времени в любом случае. И, как мне кажется, микроболометрические сенсоры обычно без интегрированных АЦП.
>Зачем изготавливать плату
Для крепления. Как мне кажется, если у тебя будет самодельный корпус, то придется делать элементы юстировки. Ну или на токарном станке вытачивать. Не самая большая проблема, но одна из целого ряда.
Зачем оно вообще тебе?
>хоть какой-то % от стоимости должен выиграть, разве не так?
Нет, потому что ты будешь покупать поштучно детали через большую цепочку людей и каждому что-то к рукам прилипнет (процент от стоимости).
>Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала.
Тепловизор и ИК - это несколько разные вещи. Вот пульты в телевизоре - это ИК, и камеры наблюдения многие прекрасно работают в ИК диапазоне и имееют ИК подсветку. Но они не тепловизоры. Внезапно, да?
Всегда к вашим услугам
Тепловизор работает в глубоком ИК, которое, внезапно, подмножество ИК.
SWIR - тоже ИК. Как и NIR, в котором работают ПДУ, камеры наблюдения и ПНВ.
Внезапно не любой ИК объектив подойдёт для тепловизора. Если эта мысль сложна для восприятия - тогда увы и ах.
Анон выше хотел донести до тебя мысль о том, что ближний и дальний ИК - это все ИК.
>Тепловизор и ИК - это несколько разные вещи.
Эту фразу можно понять так, что ты LWIR за ИК не держишь. Но это не разные вещи, а все подмножество ИК. Вот о чем тебе хотели намекнуть.
Я комментил в ответ на этот опус:
>Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала.
ИК-прозрачный материал не означает пригодность для тепловизора. Смысл в этом. Что не просто из ИК-прозрачного материала, а подходящий по спектру.
Очевидно, что тот, кто об этом писал, понимает, что нужен объектив с кремниевыми или германиевыми линзами.
Очевидно, что писавший нихуя не знает, судя по вопросам.
А тебе в ответ другой анон, судя по моему детектору, написал о том, что твое высказывание можно понять немного иначе. Что считает анон с идеей самодельного тепловизора, вообще без разницы.
Калибровка. Причём периодическая, во время работы. Изображение в этот момент ставится на паузу, а тепловизор внутри щёлкает шторкой, выдавая местоположение владельца.
Правда жизни такова, что джава макака получающая в этой стране 2к$(в два раза меньше средней зп в европе) так и останется здесь работать за 2к$, потому что на западе своих индусов хватает.
А инженеру-элетронику с опытом работы в МЦСТ и подобным организациям будут рады в любой стране мира, и получать он будет, как и любой инженер 3-5к$.
https://ru.wikipedia.org/wiki/МЦСТ
>В 2004 году в прессе появились сообщения от компании Intel, что компания пригласила несколько групп разработчиков из «Эльбрус МЦСТ», а также UniPro на работу в Intel
Кукаретик, плз
Правда жизни такова, что веб-макака с годовалым опытом уже может претендовать на 2к$. А java-макака с опытом в каком-нибудь сбертехе может прыгнуть выше 3к$, что уже сопоставимо с оплатой труда в странах первого мира. Вот только у нас ты на эти деньги будешь жить как король, а там как поломойка.
Надеяться на то, что твою команду перекупит интел это всё равно что выиграть в лотерею.
Цепь тактовой частоты.
Все триггеры в схеме должны тактироваться от одного источника, притом, чтобы всё работало как надо до всех триггеров этот сигнал должен доходить почти одновременно, для этого в ПЛИС и предусмотрены специальные цепи тактовой частоты, они специально сделаны так чтобы задержки на них были минимальны. И в современных ПЛИСах их может быть несколько, около десятка.
Тактовый домен или клоковый домен или домен синхрочастоты, стандартного перевода нет, потому что все используют английский термин.
Тактовый домен — часть синхронной цифровой схемы, которая тактируется от одного определённого сигнала тактовой частоты.
Файл конфигурации ПЛИС
Есть, но он не понравится тебе ещё сильнее. "Конфигурационная последовательность." Забей, рашка выпала из современной технологической повестки, русик более непригоден для разговоров об актуальных средствах разработки из-за отсутствия необходимых терминов (кроме тупой неудобной кальки с инглиша), а терминов нет из-за отсутствия необходимого числа носителей языка, желающих обсуждать этот предмет в своём кругу.
Двачну.
Тупая калька с инглиша пиздата. Не надо вычурно транслировать туда-сюда.
Пиковый - межпиковый - среднеквадратичный.
Амплитуднный - размах - эффективное.
Ходил в магазин крепежа, долго вспоминал как это там называется countersink по-русски-то, блять. Вспоминалось уже дома.
>Тупая калька с инглиша пиздата. Не надо вычурно транслировать туда-сюда.
Так я как бы и не за вычурный перевод топлю. Калька ровно потому и оптимальна сейчас при всей своей корявости, вымученности и труднопроизносимости, что переводится на ходу. Её задача — быть сообразной с иностранным языком, который является основным.
Если есть большое сообщество носителей языка, которые учатся по своим учебникам, общаются между собой, ведут свои разработки, а с зарубежной средой сталкиваются чтобы статью в научный журнал тиснуть, то для них важнее становится удобство использования языка для коммуникации, а не для перевода на ходу. Но поскольку такого сообщества нет, тенденция к доминированию инглиша есть, и калька в ней оказывается более удобной, чем нормальный перевод. Вот только калька — это половинчатое решение, и половинчатость эта искусственная и нахуй не нужная, основанная на законах о государственном языке и тому подобном говне. А естественным является полноценный переход на основной язык отрасли.
Я констрейнсах прописываю этот сигнал как set_false_path и в домене 150 МГц пилю схему детектора фронта. Такой вариант взлетит или нужно что-то другое пилить?
Но с фидбеком
Если сигнал в домене 150 МГц длительностью один такт надо передать в домен 50МГц, сделай на стороне 150 МГц счётчик, который после каждого появления активного уровня будет держать его ещё 3 дополнительных такта. Так ты можешь быть уверен, что триггер со стороны 50МГц увидит активный импульс и не пропустит его. Ну и детектор фронта на стороне 50 МГц остаётся.
Как перевести FPGA Fabric? Везде ставлю "FPGA-Логика", но как-то всрато. "Матрица FPGA" будет звучать не лучше.
Да нет, вроде как под этим производитель понимает вообще всю FPGA-часть микросхемы: ЛЭ, Мат. блоки, встроенные RAM-блоки и т.д. - всё что нужно для программируемой логической части, но не Асик-IP блок.
Переводов у любого слова много, они все зависят от контекста.
https://translate.google.ru/#view=home&op=translate&sl=en&tl=ru&text=fabric
В том числе "структура", и оно, видимо, тут и есть.
"Структура FPGA".
Hard-IP блок, если более правильно его назвать.
>>87241
>>87598
Ну, сейчас примерно так и оставляю.
Из прочитанного я понял следующее: "FPGA fabric" называют структуру из логических элементов (CLB-шки, если говорить о Xilinx'ах), и блоков, вокруг которых строятся эти логические элементы. То, что может автоматически использоваться синтезатором и трассировщиком, без какой-то дополнительной конфигурации.
К примеру, у нас есть N мат. блоков, M CCC блоков, и K RAM-блоков, вокруг которых размещаются ячейки ЛЭ. Совокупность всего этого безобразия будет называться Fabric.
К этому Fabric не относятся Hard-IP блоки, такие как, к примеру, выполенный в виде отдельного Asic-блока CortexM3, встроенная Flash-память, блоки трансиверов или банки I/O.
Если правильно понимаю, на пикрил - слайсы, Рам-блоки, выделенные множители - будет называться fabric.
Трансиверы и I/O входят. I/O входят даже в базовом изначальном варианте, где "I/O, логические ячейки и линии соединений".
Всё входит, короче. Что-то, что может не входить, существует тогда, когда девайс представляет собой систему на кристалле с отдельной fpga-частью, как zynq.
>Что-то, что может не входить, существует тогда, когда девайс представляет собой систему на кристалле с отдельной fpga-частью, как zynq.
А у Virtex с PPC-ядрами и Altera Cyclone/Arria/Stratix с ядрами ARM как-то иначе?
Надо спрашивать у тех, кто с ними работал и читал, соответственно, документацию. И знает, в каком контексте производитель писал об этих ядрах — как о части структуры FPGA или об отдельной сущности.
Очевидно, что он сам в данном случае является переводчиком и переводит этот материал для других.
Есть небольшой опыт в AVR. Ну и помимо литературы хотел бы взять макетку какую-нибудь, что посоветуете для вката?
Контекст давай, маня. Иначе ты там напереводишь. Если такие вопросы задаешь значит вообще не в теме.
Да.
>>87926
Ну я сам их использовать буду, если ты об этом. Для чего - ответ выше.
>>87943
Как уже писалось выше SoC-и.
Я не настолько не в теме, чтобы напереводить совсем уж дичи. Если буду не уверен, в том что у меня получилось - поищу кого-нибудь, кто отревьюит.
Матрица FPGA/Матрица Плис звучит хорошо, пока туда не добавляется хренова гора блоков, вроде того же RAM-а.
Матрица Логики/Логическая матрица - вот это может быть будет норм, надо подумать.
>Я не настолько не в теме, чтобы напереводить совсем уж дичи
Ну ведь уже хуйню городишь, без обид. битовый поток, сука кровь из глаз
>Матрица FPGA звучит хорошо
Звучит как АвтоВАЗ - дважды автомобильный завод.
> Аноны, как вкатиться к вам в ПЛИСач?
Не лезь, она тебя сожрёт!(ц)
> хотел бы взять макетку какую-нибудь, что посоветуете для вката?
Ну, хуй знает. Сколько (в долларах) потратить готов, а то посоветовать можно много чего.
А если в xilinx и вивадо хочу вкатиться с минимальным бюджетом, что брать из 7 семейства?
Artix
Конкретные модели выбирай исходя из цены и наличия на Али и Ибее. И обращай внимание на наличие схем этих плат.
> А если в xilinx и вивадо хочу вкатиться с минимальным бюджетом, что брать из 7 семейства?
Что-нибудь на Artix-7. Вариант поудобнее:
https://www.aliexpress.com/item/32691533741.html
https://www.aliexpress.com/item/32964497318.html
Вариант подороже и без материнки с разъёмами для внешних модулей, но ПЛИС в три раза больше:
https://www.aliexpress.com/item/4000170003461.html
Ну и не забудь купить программатор (20 баксов за USB версию): https://www.aliexpress.com/wholesale?SearchText=xilinx+programmer
>Что-нибудь на Artix-7.
Чем плох вариант на Zynq? Что есть из бюджетного для первоначального вката не хватило мозгов на Cyclone V?
> Чем плох вариант на Zynq?
В основном ценой (Ну и навороченность это не всегда хорошо. Карьерный самосвал не лучший выбор для поездок в магазин). Там цены от сотни баксов (за одним единственным исключением: https://www.aliexpress.com/item/4000042572307.html ) начинаются.
Двачую вопрос. Полный тред вкатывальщиков, все поголовно покупают платы, но никто не постит результат.
Ардуино-дети из соседнего треда в разы бодрее - один gsm-gps-лодку пилит, второй метеостанцию, а у нас глухо как в танке.
Такое ощущение, что 90% после покупки платы, мигает диодиком и плата сразу отправляется в стол.
>Такое ощущение, что 90% после покупки платы, мигает диодиком и плата сразу отправляется в стол.
У меня три платы. Я их в стол не ложил. Светодиодом не мигал. Так, купил и всё. Лежат в коробках, пылятся лет 5. Бугага.
>битовый поток, сука кровь из глаз
Я нигде не вписал "битовый поток", если что. У меня тоже кровь из глаз от такого идёт, я ж не конченный еблан.
Но я явно не зря спросил анона, потому что мне посоветовали не ебать мозг и писать "прошивка".
>Звучит как АвтоВАЗ - дважды автомобильный завод.
Ну так и АвтоВАЗ звучит не так страшно. А учитывая, что на русском нет нормального аналога "FPGA Fabric"...
Но опять же, я нигде не ставлю "Матрица FPGA", везде пишу "Логика FPGA". "Логика Программируемых Логических Интегральных Схем", дважды завод, да.
Просто, чтобы ты понимал, что имеет ввиду производитель (если тебе достаточно интересно):
https://www.microsemi.com/document-portal/doc_download/136522-ug0680-polarfire-fpga-fabric-user-guide
Когда я вкатывался, сделал простенький процессор, приделал к нему клавиатуру с монитором и написал простенький компилятор. Это считается?
В процессе вкатывания ничего ни у кого не спрашивал. Вскоре после того как вкатился, пошел работать и ничего такого (для себя, для дома) не делал.
Солидно, мог бы похвастаться в тредике.
Или на двачах если показал свой проект сразу заклеймят куколдом?
Как ты себе схемотехнически представляешь двунаправленную шину?
Что если случайно подрубишь одновременно два выхода?
>Когда я вкатывался, сделал простенький процессор, приделал к нему клавиатуру с монитором и написал простенький компилятор. Это считается?
Я это делал на икарус-верилоге, это тривиальщина, нашёл, чем хвастаться. Компилятор был на чем?
>Как ты себе схемотехнически представляешь двунаправленную шину?
Ровно так же, как она выглядит IRL. Просто пучек проводов, на концах/ответвлениях которого стоят буфера с третьим состоянием.
>подрубишь одновременно два выхода?
Будет тот же эффект, что и на реальной шине. Кто слабее тот и покажет свою белую душу.
>>88219
>Ходят слухи, что в каких-то старых были.
Насколько старых? Excalibur можно выкопать, но даже для меня это слишком жесткая некрофилия.
Пик живет в соседней нити >>387393 .
Задумывалось что шина адреса и данных будет сквозняком идти. А тут подвалила ебля с мультиплексорами... как минимум надо накатать заливалку говнокода в ОЗУ через atmega и в Flex декодер адреса ОЗУ. Схему оригинала почти срисовал, но есть куча непонятных моментов.
Не сказал бы что хвастаюсь. Просто ответил, что и тут делают всякую бесполезную хрень, все же более сложную, чем мигание светодиодом.
Компилятор (ассемблер) в начале написал на tcl. Потом понял, что ассемблер в "классическом" виде для стекового процессора не нужен и сделал относительно нормальный кросскомпилятор форта.
>>88205
В этом треде есть скриншот с кодом процессора.
Да, тебя одного
>дальнего ДВ
Откуда вы там про плисы знаете вообще? Я сам оттуда родом, там ничего кроме уныния и безысходности нет. Свалил с этой дыры и ни разу не пожалел.
Ну ты узнай сколько пересыл обойдётся. Какие у тебя платы?
Не больше 4К рублей думаю, не учитывая вспомогательные модули всякие типа ethernet.
>Не больше 4К рублей
Тогда только у китайцев.
https://ru.aliexpress.com/item/32813061054.html
https://ru.aliexpress.com/item/32834582202.html
Что-то такое бери. Только для начала необходимости в плате нет, хватит симулятора.
Альтеровские плисины.
https://www.aliexpress.com/item/32709028421.html (EP4CE6, с минимальной обвязкой и программатором обойдётся в 20 баксов, можно докупить модуль памяти за 9 баксов).
https://www.aliexpress.com/item/32747454526.html (ПЛИС пожирнее (EP4CE10) плата со свистоперделками, стоит 36-43 бакса, в зависимости от программатора)
https://www.aliexpress.com/item/32834586200.html (Нихрена нет, зато целых 22 логических килоячейки и 30 баксов вместе с доставкой)
https://www.aliexpress.com/item/1000006622149.html (Пятый циклон на 25 килоячеек + SDRAM, стоит 45-50, программатор (USB blaster) покупать отдельно, за $3)
https://www.aliexpress.com/item/33050240958.html (На борту десятый циклон (16000 логических ячеек), SDRAM, HDMI, и гигабитный эзернет, обойдётся в $50, программатор… в общем, я уже говорил).
Хилые.
Если докупать программатор за $20 не душит жаба:
https://www.aliexpress.com/item/1000006630084.html (Седьмой артикс на 35 килоячеек + DDR3, $50)
Как вариант, взять шестой спартан (но его поддержку в новом софте хилые дропнули):
https://www.aliexpress.com/item/32692200648.html (одна ПЛИС, $40 вместе с программатором)
https://www.aliexpress.com/item/32801899786.html (ПЛИС + SDRAM, $17 без программатора)
https://www.aliexpress.com/item/1000006622145.html (ПЛИС + SDRAM $16 без программатора)
https://www.aliexpress.com/item/1000006703110.html (ПЛИС + DDR3, $20 без программатора)
P.S. Ультра-лоу-энд вариант: https://www.aliexpress.com/wholesale?SearchText=ep2c5t144+board Старьё, но утоптать туда восьмибитную микроЭВМ вполне можно:
http://zx80.netai.net/grant/uk101FPGA/index.html
http://zx80.netai.net/grant/Multicomp/index.html
>Старьё, но утоптать туда восьмибитную микроЭВМ вполне можно:
Будто все зависит только от битности, не меньше зависит от набора команд и прочего. Если верить документации, то Nios II в минимальной комплектации занимает 540 LE на втором циклоне.
Что определяет "скорость" и соответственно применимость плисины?
Куда в даташите смотреть, чтобы понять, что плисина "не подходит" по частотным характеристикам?
Я же правильно понимаю, что скорость обновления логических ячеек везде разная, и следовательно, предельные частоты работы одной и той же логической функции отличаются?
Спасибо.
Проще всего откомпилировать проект и посмотреть в ТаймКвесте.
>логической функции
Ты точно различаешь комбинационные и последовательностные устройства?
>логических ячеек
Помимо задержек в ячейках/элементах, которые в первом приближении состоят из LUT и триггера, ячейки/элементы отличаются по количеству входов LUT и прочему. Также в ПЛИС есть и другие блоки, такие как умножители, блоки памяти, PLL, трансиверы... Также отличаются варианты соединения этих ячеек и многое другое. А еще соединения между ячейками/элементами тоже вносят задержки. В добавок результаты синтеза будут зависеть от констрейнтов, версии САПР.
Так что, по моему, выше тебе правильно написали.
>Ты точно различаешь комбинационные и последовательностные устройства?
Не точно.
Комбинационное устройство состоит из "параллельно" включенных блоков, обновляющихся входы и выходы по сигналу CLK.
Последовательное устройство - и есть блок, из которых строится комбинационное устройство. Внутри блока, соединения могут обновляться не по тактирующему сигналу.
Я понимаю, что сигнал внутри блока, должен распространяться быстрее, чем придёт импульс CLK.
>Также в ПЛИС есть и другие блоки, такие как умножители, блоки памяти, PLL, трансиверы...
Оно и понятно, тут меня больше всего интересует именно скорость работы логической матрицы. Скорость и расположение памяти/трансиверов/умножителей - всё описывается в даташитах. А вот чтобы понять, насколько медленнее при прочих равных та или иная плисина, тем более разных производителей/на разной технологии...
>Так что, по моему, выше тебе правильно написали.
>>89106
>Проще всего откомпилировать проект и посмотреть в ТаймКвесте.
В целом да, если проект на руках, и его не проблема перенести на интересующую платформу.
> Specification:
> On-Board SoC: XC7Z010-1CLG400C;
> On-Board PS side external crystal frequency: 33.333MHz;
> XC7Z010-1CLG400C has rich block RAM resource up to 2.1Mb;
> XC7Z010-1CLG400C has 28K logic cells;
> On-Board 512MB Micron DDR3, MT41K256M16TW-107IT:P;
> On-Board micro SD slot;
> On-Board power supply for FPGA by using TPS563201 wide input range DC/DC;
> On-Board one 50p and one 40P, 2.54mm pitch headers for extending user IOs. All IOs are precisely designed with length matching;
> On-Board user switch for PS logical reset;
> On-Board MII ethernet interface connected to PL side by using ICPlus chip IP101GA;
> On-Board two user LEDs, one connected to PL and the other connected to PS;
> On-Board JTAG interface, by using 6p, 2.54mm pitch header;
> PCB size is: 6.7cm x 9.9cm;
> Default power source for board is: 2A@5V DC, the DC header type: DC-050, 5.5mmx2.1mm;
Стоит чуть больше 60 баксов вместе с доставкой: https://www.aliexpress.com/item/4000323573953.html
Спасибо Анон! Закажу одну на мигалку.
Где нынче искать не сильно стухшую блеваду ?
Похуй что ретромеркурий с 1-го до 20-го ноября и ничего нового не начинать. 60$ - вообще ни о чем.
>Не точно.
Да, у тебя все как-то очень странно перепутано.
>А вот чтобы понять, насколько медленнее при прочих равных та или иная плисина
Можно сравнить результаты для IP ядер. На второй картинке, чем не бенчмарк?
>Комбинационное устройство состоит из "параллельно" включенных блоков, обновляющихся входы и выходы по сигналу CLK.
>Последовательное устройство - и есть блок, из которых строится комбинационное устройство. Внутри блока, соединения могут обновляться не по тактирующему сигналу.
Откуда ты такой шизофрении нахватался?
Тебе будет полезно с этого начать
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
Чем не устраивает бесплатная версия?
>ретромеркурий с 1-го до 20-го ноября и ничего нового не начинать.
Я тут у вас на сосаче новый. У вас что, принято изучать астрологию, что ли?
>принято изучать астрологию, что ли?
Естественно. Таро то же используем. Отладчики? Не не слышал.
Что бы не гадать на кофейной гуще - вспышки на солнце, положение планет не то, фаза луны не та, не с той ноги встал, случайно дописал/убрал "<" или по какой еще причине у тебя очень сильно отличается поведение схемы в симуляторе и в реальном железе.
Сарказм это. Иногда стоит прислушиваться что говорят Звезды на небе.
Есть комбинаторная схема пикрил.
Она будет между регистровой прослойки(на схеме не отображено)
Как посчитать Fmax, если известно, что самый длинный путь имеет задержку 5.6 нс? охуеть, не задумывался, что 4 каскада логики дают такую задержку
Если что речь про кинтекс 7.
>Как посчитать Fmax, если известно, что самый длинный путь имеет задержку 5.6 нс?
Единица разделить на. 178 МГц
Но сама логика тут у тебя даёт задержку 3.7нс остальное — пути.
Если пропишешь констрейнты, роутер попробует разместить всю фигню поближе друг к другу.
А если усложнить задачу:
допустим данные на вход a подаются с частотой 150 МГц, на вход b - 40 МГц причем фазы клоков не совпадают. Выход c в том же домене, что и b. Как заставить всё это дело работать?
Не надо синтезировать как попало, а потом гадать на какой частоте запустится. Надо прописывать констрейнты и смотреть, удалось ли виваде в них вписаться или нет.
>Как заставить всё это дело работать?
Перевести сперва всё в единый клок домен при помощи асинхронных FIFO.
Да и вообще, у тебя тут модуль синтезировался как верхний уровень, с входными и выходными буферами наружу, а в проекте они уйдут, потому что наружу ничего выводить не надо. Результат такого синтеза пригоден только чтобы схему смотреть, но не задержки.
>Результат такого синтеза пригоден только чтобы схему смотреть, но не задержки.
Задержки на буферах можно исключить из выдачи. Как минимум видно сколько каскадов комбинаторной логики получилось из моего кода, для грубой прикидки максимальной частоты вполне себе можно использовать, разве нет?
>>89978
Да, почти компаратор. Мне запретили использовать корки fifo, я заменил их на инстанс bram - она может работать в режиме fifo и как я думал имеет аналогичные сигналы, что и стандартная корка от зайлинкс. Но как оказалось, есть нихуевые различия. Сигнал almostempty в bram не может показать когда в fifo осталось только 1 слово. А счетчики rdcount и wrcount на самом деле нихуя не счетчики а указатели.
Этот "компаратор" попытка получить сигнал almostempty с таким же поведением как в оригинальной корке.
>Как минимум видно сколько каскадов комбинаторной логики получилось из моего кода, для грубой прикидки максимальной частоты вполне себе можно использовать, разве нет?
Это я и имел в виду под "пригоден только чтобы схему посмотреть".
>Мне запретили использовать корки fifo
Понятно, значит, завести данные в другой клок домен через fifo у тебя не выйдет. Значит, тебе надо 150МГц клоком семплировать 40МГц клок и генерировать clock_enable для 150МГц домена, чтобы он считывал в себя медленный сигнал, когда детектится фронт медленного клока.
>Что скажите за эту помойку github.com?
Лучше там и хранить.
Один хуй кроме git другие VCS не нужны.
>открытых
>github.com
У них закрытый исходный код, открытый у gitlab.
А ты вообще систем контроля версий касался? Тут первичнее используемая система контроля версий, а не куда пушить будешь. Можно пушить одновременно на github, gitlab, bitbucket и прочее.
В верилоге есть $stop и $finish. Можно написать что-то вроде initial #100 $stop;
Только запускать симуляцию придется другой кнопкой. В моделсиме это ContinueRun, вместо просто Run.
Есть фифо fwft. Выставляю сигнал чтения, по идее на следующем такте клока уже можно забирать следующие данные, однако относительно фронта следующего клока почему-то в симуляции возникает задержка 0.1 нс и соответственно захватываются предидущие данные. Что я делаю не так?
Пиздец, должно же быть как в документации. Откуда эта ебучая задержка лезет??
>У них закрытый исходный код, открытый у gitlab.
А это важно?
>А ты вообще систем контроля версий касался?
Да мне исключительно продемонстрировать свои говноподелки на неширокий круг. Ничего серьёзного.
Чтение и запись в FIFO синхронное и осуществляется по фронту. А ты похоже формируешь fifo_rd по фронту rd_clk, значит fifo_rd придет не раньше rd_clk. При этом у тебя на первой картинке показано что fifo_rd устанавливается в 1 до переднего фронта rd_clk.
Хоть обыкновенный D-триггер с динамическим управлением для примера возьми. Что будет, если на вход D подашь fifo_rd, а на вход C подашь rd_clk?
Хотя, возможно я тебя неправильно понял.
Ты смотри какая у тебя симуляция включена. Если временная, то сигнал на входах лучше подавать не в момент фронта клока, а чуть погодя, как это собственно и происходит в реальности. Но лучше переключи на функциональную.
>Но лучше переключи на функциональную.
Это не поможет никак, если fifo_rd формируется в блоке always по фронту rd_clk, потому что изменение произойдет уже после фронта rd_clk.
>А ты вообще систем контроля версий касался?
>Да мне исключительно продемонстрировать свои говноподелки на неширокий круг. Ничего серьёзного.
Все же системы контроля версий в первую очередь используют не для того чтобы кому-то просто демонстрировать код. Если нужно только кому-то дать код, а возможности систем контроля версий тебе не нужны, то зачем гитхаб? Архивируй и заливай на какой-нибудь гуглодиск. И не нужно будет писать дурацкие комментарии к коммитам и изучать гитовские команды или кнопки в GUI.
А в чём проблема хранить в локальном репозитории? Зачем именно гитхаб?
У меня на прошлой работе использовали SVN, никаких проблем не было.
Я про то что входы нужно подавать правильно. Сам на такое много раз натыкался, менял состояние сигналов строго по фронту клока, вроде и синхронно подаёшь, а тем не менее это неправильно, во временных симуляциях так делать нельзя. Потому что у триггеров есть время срабатывания, внутренняя задержка, из-за которой выход они меняют не чётко по фронту клока, а с запаздыванием. Потому и мы, когда подаём входные синхронные сигналы из тестбенча должны действовать аналогично. Или, повторюсь, юзать функциональную симуляцию, там, к слову, тоже такое иногда проявляется, но всё же полегче будет. Это всё безотносительно к твоему буферу, просто делюсь опытом.
А я про то что по временной диаграмме из симулятора непонятно что сделал тот анон. Может он написал always@(posedge rd_clk) fifo_rd=...
В таком случае не будет работать при какой угодно симуляции. Потому что очередность изменения сигналов, это то, что называют delta delay.
И буфер не мой.
При использовании гита в любом случае будешь хранить локально весь репозиторий целиком, распределенная система же.
Я к тому, что зачем пушить на какой-то сервер? Одно дело, если проект по работе, другое - личный.
Есть идея запилить на плис 8085.
Может быть уже есть аналоги моей идеи?
Пили лучше 4004 - модно, стильно, молодежно, свежо. https://github.com/freecores/mcs-4/tree/master/rtl/verilog
>Очень благодарю
Это Интернет детка, здесь могут послать НА ХУЙ, в лес, сад, жопу!
Пиздуй отсюда к некрофилам-фанатам Z80 http://www.spetsialist-mx.ru/index9.html https://zx-pk.ru/forums/110-klony-na-plis-mk-i-bmk.html Например самая первая тема про Reverse-U16
Недостающую периферию сам себе напишешь или используй NIOS, MicroBlaze, Mico32 тут нет опечаток...
Есть 2 fifo с разрядностью 65 бит. 65й бит каждого fifo хранит флаг валидности данных.
Нужно загнать эти два fifo на один выход таким образом, чтоб все это дело выглядело как обычное 64битное fifo fwft. Данные без флага валидности надо дропать.
Либо я тугодум либо это сложная задача.
Ваш покорный слуга. Возникла потребность сделать из 128 битной axi-stream 64-битную и попутно перейти в другой клоковый домен.
Во-первых, нахуя хранить невалидные данные? Просто загружай их в FIFO по (wr_en && valid) вместо (wr_en), чтобы данные с нулевым valid в fifo не попадали. У тебя не только ширина данных и бессмысленно занимаемая память уменьшатся, но и задача упростится, потому что в FIFO будут заведомо валидные данные.
Во-вторых, тебе их как упорядочивать на выходе надо? 1-2-1-2-1-2 или ещё как-то?
На входную 128 битную шину данные поступают блоками по 64 бита. Может прийти одновременно 2 блока, а может и один в конце пакета. Если я буду писать в fifo по (wr_en && valid) то нарушится порядок.
В курсе, но мне нельзя их использовать.
>Во-вторых, тебе их как упорядочивать на выходе надо? 1-2-1-2-1-2 или ещё как-то?
Да, именно так, но соответственно пустые блоки надо пропускать не нарушая порядок.
Понятно. Нихуя нет сложного, нужен конечный автомат с 2 (двумя) состояниями. Сперва он ждёт, когда FIFO1 непустое, и вычитывает его, передавая или дропая данные в зависимости от валидности. Потом переключается и ждёт, когда FIFO2 непустое, и вычитывает его, передавая или дропая данные в зависимости от валидности.
Таки ты предлагаешь мою текущую схему с хранением невалидных данных и флагами валидности? Значит я не такой долбоёб?
Долбоёбом тебя назвал кто-то другой. У меня нет привычки сходу оскорблять людей.
Если будешь использовать стандартную BRAM, она на большой ширине кратна 9, то есть с большой вероятностью твоё FIFO будет иметь аппаратную ширину 72 — аж 8 дополнительных бит можно передавать. А невалидные блоки, попадающиеся лишь в конце пакета, можно и хранить, погоды в плане занимаемого объёма они не сделают.
Два высших образования есть?
Пытаюсь понять осознать как работает синтез из Verilog'а.
Есть пример (сокращенно):
module cntr( clk,rst, count);
input clk,rst;
output reg [3:0] count;
always @(posedge clk or posedge rst)
begin
if (rst==0)
count<=3'b0;
else
count<=count+1;
end
endmodule
Не работает, синтезатор сообщает: W: Edge and connection mismatch; E: Logic for count does not match standard flip-flop.
Как сделать чтобы оно работало - понятно %%(заменить posedge rst на negedge rst, или rst ==0 на rst == 1). Но к сожалению не понятно, почему это невозможно перенести на триггеры.
Объясните, пожалуйста.
У тебя ассинхронный ресет, который в списке чувствительности срабатывает по переднему фронту. Однако в теле олвейс-блока ты пишешь if(rst==0) -- что соответствует заднему фронту. Попробуй заменить posedge на negedge.
> Попробуй заменить posedge на negedge.
Бро, я так уже сделал, я понимаю что оно так заработает. Я пытаюсь понять, почему исходная конструкция принципиально не синтезируема.
>ассинхронный ресет, который срабатывает по переднему фронту. Однако в теле олвейс-блока if(rst==0) -- что соответствует заднему фронту.
Это понятно, опять же. Но в моем понимании, возможно ошибочном, эта конструкция не является логически неверной:
Блок always сработал по переднему фронту rst, сделал count+1.
Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
Начни с изучения архитектуры FPGA под которую ты пишешь код. На худой конец открой library guide и посмотри, какие тебе доступны DFF-ки.
>Блок always сработал по переднему фронту rst, сделал count+1.
>Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
Всё логично. Но если ты посмотришь, какие тебе доступны ячейки внезапно окажется, что такую конструкцию синтезировать нельзя.
Я и так понимаю то что ты говоришь.
Я прошу пояснить мне на примере, почему это нельзя запихнуть в стандартную логическую ячейку (LUT+DFF, как например CycloneII).
Ничего ты не понимаешь.
>Блок always сработал по переднему фронту rst, сделал count+1.
>Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
У ячейки есть синхронный вход данных и ассинхронный сброс.
Один из сигналов списка чувствительности займет вход синхронизации.
Синхронный вход данных займет какой-то сигнал с сумматора (count+1)
Это понятно?
Но ты собираешься проталкивать данные на выход триггера в том числе ассинхронно, по фронту reset. Как это сделать?
Когда конструкция, по сути, описывает, что и clk, и rst могут являться тактирующими сигналами для выполнения действия count<=count+1, то внезапно оказывается, что тактирующий вход у триггера всего один.
Логика которую можно синтезировать выглядит так:
>Блок always сработал по переднему фронту rst, сделал count<=0.
>Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
Ресет пойдет на clrn, а выходы сумматоров идут на входы data.
Не проще. Если бы была доступна ячейка с ассинхронным сбросом и установкой то такая конструкция скорее всего бы синтезировалась.
>Блок always сработал по переднему фронту rst, сделал count<=0.
Твой код этого не описывает.
По переднему фронту rst он сперва проверяет, равен ли rst нулю. А поскольку rst нулю не равен (в случае переднего фронта rst будет равен 1), он идёт дальше и пытается выполнить count<=count+1.
Niet. Чтобы это синтезировать, нужен триггер, умеющий защёлкнуть count<=count+1 и по фронту clk, и по фронту rst. То есть умеющий тактироваться от двух клоков.
OK
Холивар чего с чем?
Можно. Только триггер от этого не станет чувствительным одновременно к фронтам двух клоков. Он будет терять чувствительность ко второму клоку, пока первый равен 1, и к первому, пока второй равен 1.
>Когда конструкция, по сути, описывает, что и clk, и rst могут являться тактирующими сигналами для выполнения действия count<=count+1, то внезапно оказывается, что тактирующий вход у триггера всего один.
>>92945
>Чтобы это синтезировать, нужен триггер, умеющий защёлкнуть count<=count+1 и по фронту clk, и по фронту rst. То есть умеющий тактироваться от двух клоков.
Ок, спасибо. Теперь будет вопрос раскрывающий моё принципиальное непонимание процесса:
А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа?
>>92941
Т.е. получается, т.к. clrn асинхронный, когда к нему подключен rst и он в состоянии 1, я могу работать с синхронным входом. А при фронте rst или фронте clk и rst==0, в регистр запишутся нули. В принципе, логично. Но не очень понимаю, как это будет выглядеть на схеме соединений.
>>92938
Ок, спасибо. Всё ещё ничего не понял, но очень интересно.
А как по-другому?
>А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа?
Потому что такой сигнал неопределён, и его невозможно подвергнуть временному анализу при имплементации. А если даже теоретически и возможно, инструменты не будут этого делать, потому что по их мнению так проектируют только мудаки. Трассировщик не сможет проконтролировать, успевают ли сигналы вовремя доходить куда надо, схема будет по-разному работать при разных фазах луны.
Т.е. ты хочешь сказать, что синтезатор просто на просто, воизбежание ошибки, выдаёт Error (хотя обычно мудацкое поведение, всё же, отмечается Warning'ами, а Error это когда уже гарантированная ошибка)?
>А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа?
При кодинге HDL нужно придерживаться определенных паттернов проектирования. Причем, эти самые паттерны могут меняться в зависимости от твоего девайса или вендора. Изобретая велосипеды ты возможно решишь какую-то локальную задачу, но в итоге это может выйти тебе боком на поздних стадиях проекта.
Короче не выёбывайся, делай как все.
С вонингами в логах вообще весело. Код, для которого успешно сгенерился битстрим может выдавать ошибки при попытке симуляции.
Один и тот же код может выдавать ошибку на Xilinx и при этом успешно синтезироваться на Intel.
>>92979
>>92963
Вижу твоё незнание цифровой схемотехники триггеров я.
Тебе будут полезны уроки эти, мой юный падаван.
https://youtu.be/i1_VdJOMStE
https://youtu.be/JY7rmZoaq8Y
https://youtu.be/uW8DPE6TRxM
Синтезатор выдаёт error потому что код, который был в треде выше, нереализуем на архитектуре ПЛИС. Он и при помощи тактирования OR'ом сигналов нереализуем, выше объяснено, почему. Здесь. >>92968 Ты не понял, что ли, почему так?
А почему в принципе не используется OR сигналов для тактировния — это следующий вопрос, отдельный. Синтезатор такое реализует, трассировщик разведёт, выдав критикал ворнинг, но работать это не будет из-за назначенных от балды задержек и невозможности назначить их не от балды.
Парни, кто-нибудь реализовывал usb 3.0 на fpga? Это пиздец прям сложно?
Я немного не в теме, даже близко такого не касался, но зачем оно? Вроде бы все равно потребуется микросхема PHY, так почему не поставить какой-нибудь cypress?
А че, нельзя на старших моделях для этого использовать гигабитные трансиверы? Для Gigabit Ethernet вроде как можно, только сегодня в даташитах на Altera читал. На чипах старше cyclone IV gx активируешь корки для трансиверов и triple speed ethernet, и дело в шляпе. Может и для usb тоже так прокатывает?
https://www.xilinx.com/products/intellectual-property/1-10nwgkl.html#overview
Ну, если спизжу аноны поправят, но ты немного смешал солёное с кислым.
Что с PHY, что без, ты будешь использовать трансиверы для выдачи сигнала на USB, однако PHY микросхема нужна в первую очередь для согласования сигналов, в т.ч. электрического.
Если у тебя выходы трансиверов способны обрабатывать подобный сигнал (дифф сигнал, какие уровни напряжения - нагуглить не смог), то да, можешь подключать плисину к USB порту без PHY.
>Что с PHY, что без, ты будешь использовать трансиверы для выдачи сигнала на USB
Необязательно. Могут существовать такие внешние PHY, которые общаются с плис параллельно по нескольким линиям LVDS на относительно небольшой скорости, для них могут использовтаься стандартные банки ввода/вывода.
Я понял, что ошибся с Ethernet'ом, потому что там хитровыебанный 3-х или 5-уровневый сигнал (100/1000 Мбит соответственно). Но вроде у USB обычный дифференциальный, который ПЛИС может выдать со своих lvds-выходов. Надо только, чтобы чип обеспечивал нужные рабочие частоты на этих выходах, младшие семейства для этого не подойдут.
Это не могоуровневый сигнал. Это двухуровневый сигнал с хировыебанной формой переходов, чтобы компенсировать импеданс линии. Плисовые LVDS генерируют такой же с атрибутом LVDS_PRE_EMPHASIS=TRUE.
Я знаю, что это не многоуровневый сигнал, это картинка из спецификации USB 3.0
Я конечно хуй знает, но из ETH+PHY и USB, я бы выбрал ETH+PHY, потому что USB дохуя замороченная на верхних (программных) уровнях.
А почему тебе никак нельзя прибавить внешний PHY, если не секрет?
Да это просто мысли вслух, я не тот анон, который спрашивал про USB. Для USB всяко дешевле будет поставить cypress со встроенным phy (если такой есть для usb 3.0), а жирная плисина стоит наверняка дороже, и корка нужна, которая тоже денег стоит.
У меня сейчас наклевывается задача, будет длинная последовательная цепочка датчиков, суммарная скорость в линии около 200 Мбит/с, между датчиками 100 м. Рассматриваю ethernet-1000 и serial digital interface. Для ethernet нужен микроконтроллер, коммутатор со встроенными PHY (нужен дубляж и последовательная ретрансляция по цепочке), для SDI нужна FPGA с быстрыми lvds, корки serdes и несколько phy. Ethernet потребует три номинала напряжения питания и весьма большие токи потребления + вся реализация считай полностью программная, а для SDI сгодится только одно питание 3,3 В для phy, меньше потребление, значительно проще разводка, но весь протокол и вся логика коммутации пакетов аппаратно в ПЛИС, для меня сложновато, т.к. я на таких скоростях и на lvds еще ни разу ничего не делал. В целом нужны очень маленькие габариты и минимальное потребление всей системы датчиков.
Требований по цене конечного продукта особых нет. ПЛИС пока рассматриваю MAX 10, потому что с одним питанием и конфигурационное ПЗУ не нужно. lvds вроде быстрые по документации, но возможно не пройдет по внутренним частотам, пока не разбирался, как работают альтеровские корки soft-serdes, которые они предлагают в своих даташитах.
Пока так думается, что разницы по деньгам между двумя вариантами особо не будет.
двачую!
Как могут быть дела у флексоеба, у которого может по паре-тройке часов практики в неделю на все это? В рамке под стеклом. На флексине уже помигал, выдавая состояние шин адреса и данных.
Крайне мелкими шагами дрючу >>387393 срисовывая схему с натуры и пробую переписывать на Verilog, строя догадки что за снятая микросхема и должна ли она там быть. Похожа на логику, часть которой входит в детектор фронтов на RC цепочке и на CS второй ПЗУ.
Собрал по паре >>392629 Reverse-U16 и DivGMX (осталось по мелочи, ПЛИС, память и генераторы есть) с них если что можно выдрать корку 580ВМ80.
Для тестирования думал шмегу юзать, заебался, жду деталей на HydraBUS https://eax.me/hydrabus/, через которую можно будет делать всякие непотребства начиная от тупой железки, которая на своих портах GPIO задает-читает уровни до прикидывания SPI/IIC мастером.
Определенно попаболи доставляет момент что "комп" частями и нет основного шасси, где наверное прячется контроллер прерываний, иначе не объяснить что на других платах где-то тупо закорочен на питание или на землю выход прерывания, где-то таймер(?) из 155РЕ3 и конденсаторов на линии прерывания. А документации на эту ебань чуть меньше, чем никакой. Реальная практика just for fun если что.
Все не так просто и у меня то же подобный вопрос. Нужен счетчик который имеет джва асинхронных тактовых входа, где один вход увеличивает значение, другой уменьшает и в виду асинхронщины эти сигналы могут и одновременно приходить или один постоянно активен, другой при этом меняет свое значение и не раз.
Тактового сигнала нет. Вообще. Лютая асинхронщина на логике.
Другой анон.
Если ФИФО не большое можно счётчик регистром заменить, каждый разряд в регистре соответствует слову в ФИФО.
Или, как более продвинутый вариант для больших буферов, использовать дополнительный разряд в каждом слове в ФИФО, в котором бы находился флаг того что было ли считано слово или ещё нет.
Это так не делается. Если есть два клоковых домена, то должны быть и два клока, и синхронные им сигналы в соответствующих клоковых доменах.
Для асинхронных фифо была придумана такая хуйня, как код Грея, чтобы без гонок сигналов переводить значения счётчиков из одного домена в другой. Следующее значение отличается от предыдущего ровно одним битом, и никак иначе.
Но это не означает, что счётчики кода Грея должны находиться в двух доменах сразу. Нужно иметь два счётчика, один счётчик считает указатель для чтения, другой — указатель для записи. Находятся, соответственно, один — в домене чтения, другой — в домене записи. Из домена в домен значения переводятся через трёхрегистровые синхронизаторы.
Сравнение, чтобы генерировать empty, должно выполняться в домене read. Сравнение, чтобы генерировать full, должно выполняться в домене write. Тогда им не потребуется проходить через синхронизаторы с соответствующей задержкой, они будут доступны сразу после возникновения (а вот сниматься с задержкой, но это норм, на целостность данных не повлияет).
Ты говоришь про указатели, они как правило есть во всех реализациях фифо. А как из этих указателей узнать сколько слов можно прочитать и сколько слов можно записать?
Вычесть одно из другого, ёба. Как с генерацией empty, лишь немногим сложнее. Там, где генерируется empty — там же можно и считать, сколько ячеек не empty.
Ну давай прекинем.
Допустим глубина фифо 256.
После ресета я записал 255 слов. Указатель записи будет показывать значение 8'hFF. Указатель чтения будет нулевым, т.к. я еще не прочитал ни одгого слова, 8'hFF - 0 == 8'hFF, всё верно.
Но если я прочитаю 5 слов, а потом запишу 5 слов то указатель записи будет равен 8'h04, а указатель чтения 8'h05. Что от чего отнимать в этом случае?
>Что от чего отнимать в этом случае?
А подумать немного самому? Если ты не можешь ответить на этот вопрос, ты же даже веб-макакингом не в состоянии заниматься.
cnt = (wr_ptr >= rd_ptr) ? wr_ptr-rd_ptr : FIFO_DEPTH+wr_ptr-rd_ptr ;
>cnt = (wr_ptr >= rd_ptr) ? wr_ptr-rd_ptr : FIFO_DEPTH+wr_ptr-rd_ptr ;
Это же решение влобовую, сколько здесь логики уйдет - это же компаратор, мультиплексор и два субтрактора. Такое фифо будет тормозить. Я пытаюсь родить нечто отвечающее стандартам промышленного проектирования, а с шашкой наголо высирать кучу тормозящего говна.
Фифо обычно имеет размеры степеней двойки, НЕСПРОСТА БЛЯТЬ
cnt = wr_ptr-rd_ptr
Как то так, главное что бы разрядности поинтеров были ровно такие же как и длина фифо
>это же компаратор, мультиплексор и два субтрактора.
Причём всё, кроме мультиплексора, может вычисляться параллельно. А половина логики при синтезе автоматически оптимизируется выкидыванием повторяющихся операций, и сделает это намного лучше тебя.
>Такое фифо будет тормозить.
Нет.
>Я пытаюсь родить нечто отвечающее стандартам промышленного проектирования
Тогда в первую очередь позаботься о ясности кода и очевидности выполняемых действий.
Ну и, как было выше сказано, есть радикальное решение, хотя и не могущее в универсальность — делать вычисления по модулю степени двойки.
Вот есть код на языке Верилог. Всем известно, что вериложный синтезируемый код - это не программа, но представление схемы в текстовом виде. И всё бы хорошо. Но теперь мы берём этот код и моделируем в каком-нибудь МоделСиме. Что в этом случае? Ведь вереложный код - это, по прежнему, не программа, т.к. машинных инструкций в нём не содержится и процессором он на прямую не исполняется, но теперь уже и не схема.
Можно ли сказать, что код на Верилоге, в этом случае, является скриптом по которому МоделСим рисует временные диаграммы?
Код на верилоге для симуляции компилируется в исполняемый файл, тогда он становится программой, исполняемой на процессоре. Симулятор сохраняет и рисует выхлоп этой программы. Это делается потому что так симуляция работает быстрее.
Вообше, скрипт — это не "программа, которая выполняется интерпретатором, а не процессором", у него другое определение.
https://ru.wikipedia.org/wiki/Сценарный_язык
Так что и при интерпретации симулятором на ходу код на верилоге — программа.
Например случай когда есть 3 входа и 3 тактовых разных сигнала.
Подаю любое (1 или 0) на один из входов и даю первую тактовую частоту пусть на 1мс, потом ее отключаю и на второй вход подаю любое число и подаю вторую частоту на 2мс, потом ее отключаю и подаю сразу первую и третью частоту одновременно на 3мс.
Как это описать?
Так тестбенчи не пишутся, потому что так железо не работает. Клоки идут постоянно, и, если требуется, к модулю прилагается сигнал clken.
В самом деле? Прям в ассемблерные инструкции переводится, прям в ехе?
>>95028
"высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой."
Ну. Т.е. скрипт это набор команд для некой софтины, не для процессора, которая их исполняет. Пример: bat-файлы в Досе. bat-файлы содержат не инструкции для процессора, а обычный текст и выполняются не процессором, а операционкой. Тоже самое и у Верилога с МоделСимом. Хотя этот анаон >>95022 говорит что вериложный код компилируется в программу, что несколько обескураживает.
>Прям в ассемблерные инструкции переводится, прям в ехе?
Да, прям в exe. Например:
fuse work.test_bench work.glbl -prj mydesign.prj -L unisims_ver -L unimacro_ver -L xilinxcorelib_ver -o test_bench.exe
https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ism_r_running_verilog_functional_sim_cl.htm
>Ну. Т.е. скрипт это набор команд для некой софтины, не для процессора
То есть жава (не путать с жаваскриптом) это не язык программирования, а скриптовый язык? Он исполняется жава-машиной.
>Да, прям в exe.
Мда уж.
https://youtu.be/LLk9_EH6Pfo
Хотя у меня строчка в МоделСиме выглядит несколько иначе.
>То есть жава (не путать с жаваскриптом) это не язык программирования, а скриптовый язык?
Я в этих ваших жаба-машинах ничего не понимаю. Но если между кодом и процессором существует некая прослойка, в виде жабы-машины, которая не компилирует этот код в процессорные инструкции, то да, такой код надо считать скриптом, по определению.
Был задан вопрос как описать такое поведение, а не как оно работает и возможно ли.
Повторю вопрос - как это написать в тестбенче тактовые сигналы показаны условно и могут быть любой длительности?
>Был задан вопрос как описать такое поведение
Я в курсе. Я тебе это написал на всякий случай, потому что ты хочешь странного, а знания, которые требуются для этого, довольно базовые. Когда нуб хочет странного, то обычно он не осваивает продвинутые методы, а просто чего-то не до конца вдупляет.
А то, что тебе требуется, можно написать разными способами, я бы написал так (пикрелейтед).
Спасибо, Анон! Возьми Циклон внимание на маркировку.
В шары долблюсь или у товарища Jack0v еще не было про тестбенчи, а метод синтез-конфигурация-проверка IRL как-то подзаебал.
Кто бы его знал. Между некоторыми семействами есть побитовая совместимость. Очень отдаленный пример из 26.08.2003:
"С сентября 2003 Altera будет наносить двойную маркировку на микросхемы семейства Cyclone () Двойная маркировка означает, что одна и та же микросхема будет иметь два кода для заказа. Один код для коммерческого исполнения с самым высоким быстродействием и другой для индустриального со средним быстродействием."
http://web.archive.org/web/20170707023208/http://www.efo.ru/news/news.pl?a=1&idf=6&kod=Altera&page=3
Что ты привёл в пример это немного не то совсем не то, но мысль я твою понял.
Тут одно исполнение, просто разное поведение в разных температурных диапазонах. В коммерческом От 0 до 60 градусов работает как -1 SpeedGrade, а вне диапазона скорость распространения сигнала снижается, но скорость стандартного SpeedGrade производитель ещё может гарантировать.
>Да, прям в exe. Например:
>>95102 >Хотя у меня строчка в МоделСиме выглядит несколько иначе.
Собственно вот:
>vsim -t 1ps -L rtl_work -L work -voptargs="+acc" Test
Порылся также в файлах генерируемых МоделСимом, ехе-шников не обнаружил. Может то что ты говоришь это какое-то новаторство от Хилых, или я МоделСим юзаю как-то неправильно?
Всё может быть. То, что происходит под капотом, юзеру в любом случае не предназначено, так что испольняемый файл можно называть как угодно. Саму такую схему можно реализовать разными вариантами — например, сделать dll и дёргать из неё исполняемый код в виде библиотечной функции. Я даже не помню, откуда я вообще знаю, что симулятор от хилых компилирует хдл в исполняемый код. Так что если тебе хочется разобраться, придётся гуглить самому.
Разбираюсь как писать в файлы.
Системные функции, такие как $fdisplay, $fwrite, работают хорошо, но в одной книжке вычитал что modelsim поддерживает ещё и функции с посимвольной работой с файлами, наподобие как в языке С, типа передвигать указатель по файлу, писать или читать один символ, например функция $ungetc, но у меня она в файл почему-то не пишет, хотя ошибок modelsim не выдаёт. Есть мысли?
Вот код.
module WRTest();
integer FileD;
integer Code;
reg [7:0]Char = "Ж";
initial
begin
FileD = $fopen("Test.tst", "w");
//$fwrite(FileD, "так пишет");
Code = $ungetc(Char,FileD); //а так нет
$fclose(FileD);
$display(Code); //Code == -1
$stop;
end
endmodule
Анончик, не еби муму.
Свали свои результаты в кучу через $fwrite, а потом разгребай их питоном, как нормальные люди.
Моделсим говорит
Range must be bounded by constant expressions
Как быть?
Способ я нашёл, но чёт он как то не очень.
module Suka();
reg [87:0]String = "ГОВНО, МОЧА";
reg [7:0]Symb;
initial
begin: init
integer i;
for(i = i; i < 11; i = i + 1)
begin
Symb = String[iˣ8+7 : iˣ8];
$display(Symb);
end
end
endmodule
А так мне про идее нужно 7-8 пинов на каждое внешне устройство, логику на поднятие эзернета и конвертеров mii-rmii? Никаких других ограничений нет?
Same question. Для начала хотя бы тупая корка с парой регистров с отображением в GPIO для хуйни типа 32 бита ввод и 32 бита вывод. Платки нет, пока просто спрашиваю.
>>95734
> в плисине поднять 20+ MAC для организации передачи по rmii на 20+внешних устройств?
Backplain делаешь? Какова цель? Может проще взять говно мамонта и из SMII сделать RMII? http://openrrcp.org.ru/download/datasheets/RTL8316B_Datasheet_1.0.pdf
Сам собрался реализовывать логику работы свича, включая еблю с коллизиями хешей, вланами, обучением адресам на портах?
>Какова цель
С наименьшими количеством линий и наибольшей скоростью не более 10мкс на перестройку передать параметры где-то 3-6 байта на 20+ устройств.
Сейчас от rmii опять отходим, потому что там передача и формирование минимального фрейма уже займет 18мкс.
Возможно SPI выберем, если там хотя бы 50мбит можно поднять.
>>95808
>Ограничения только по быстродействию этих самых пинов.
Это как?
Ну же, анон.
Мне даже ни сколько циклы нужны, сколько просто работать с разрядами через переменную.
>Это как?
У пинов влисины есть предел по максимальной частоте. У Xilinx есть разделение на HR и HP банки. Одни поддерживают больше логических стандартов, другие более высокую частоту.
for (i = 0; i < 8; i=i+1) begin
$fwrite(packet_dump,"%h", axis_tx_tdata[i8 + 7:i8]);
end
ERROR: [VRFC 10-536] constant expression required
Пилите, шура.
А чем он лучше остальных?
Это копия, сохраненная 31 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.