Доброго времени суток. Вкатываюсь в ПЛИС (есть altera cyclone IV пока для тестов), планирую делать диплом на нём (3й курс сейчас бакалавр информатики и вычислительной техники) но не могу придумать - что таки собрать, может у кого-какая идея была когда-то но руки не дошли, или просто сейчас какая-то ассоциация... Паяльник держать умею, сложность потяну достаточно высокую, критично лишь время год остался)
>>316943 (OP) Ебани логический анализатор каналов на восемь с парой мегабайт записи, распознаванием паттернов и совместимостью с распространенными программами анализа. Можно, чтобы еще и светодиодом моргал.
>>316971 нихуя ты долбаёб братишка, земля тебе пухом. ВО первых - джава для петухов. Во вторых - мне похуй на зарплату ибо я уже положил крест на свою жизнь и в дальнейшем буду преподом дискретной математики. В третьих - плис это ахуенно интересно и если твоих пропитанных джавапарашей мозгов не хватает чтобы понять как оно и зачем - это не значит что направление тлен
>>317009 >плис это ахуенно интересно и если твоих пропитанных джавапарашей мозгов не хватает чтобы понять как оно и зачем - это не значит что направление тлен
Если бы ты понимал как оно и зачем то не задавал бы здесь тупых вопросов. Про то, что продублировал тред и бампаешь в тематике я вообще молчу. Залетное озлобленное говно из /b видно с порога.
>мне похуй на зарплату ибо я уже положил крест на свою жизнь Похуй на зп, пока твой мозг пропитан говном и юношеским максимализмом, со временем это пройдет, но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь.
>>316948 > https://2ch.hk/ra/res/127314.html Тот тред уже достиг бамплимита и медленно тонет. Надо либо новый оффициальный™ тред делать, либо сюда перекатываться и бортануть ОПа, раз уж создали.
>>317899 >либо сюда перекатываться Давай перекатываться. Задам свой вопрос тут.
ПЛИСаны, я не понял, вот я насинтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало? Это мне надо отдельный контроллер мутить, чтобы каждый раз конфигураци. закидывать в нее?
>>317915 > А как быть с четвертым Циклоном? Ты это, по ссылке то ходить пробовал? > I have used Winbond and ST flashes in the past for Cyclone IV and Spartan III without any issues.
>>317914 Ставишь какую-нибудь EPCS и все. И вообще для обыкновенного частотомера не нужны FPGA и вообще ПЛИС, из-за низких частот в том числе.
>>317915 Так и в пятых циклонах нет микроконтроллера, там просто ядро. В FPGA (обычно) нет флеша потому что технологии изготовления FPGA и флеша чем-то отличаются.
>>317944 Достаточно EPCS4. Также у этих ПЗУ есть полностью совместимые аналоги. На всякий случай еще раз скажу: нет смысла использовать FPGA для простого частотомера. На FPGA не получится сделать быстрый счетчик. Целесообразнее использовать быстрый счетчик и любой микроконтроллер.
>>317949 Почему сразу не сказал? Вроде как банальная память 25 серии может быть аналогом, и местами даже более быстрым, и добываемым из ближайшей помойки. Как-то долбил ЭФО на тему оригинальных EPCS - это ахтунг, если сравнивать с "обычной" 25 серией: EPCS4SI8N 4,5$/шт, DC 15+ Есть на складе СПб, доставка 1-1,5 недель EPCS16SI8N 6,6$/шт, DC 16+ Есть на складе СПб, доставка 1-1,5 недель
ЗЫ - Какие сейчас есть не сильно древние FPGA с 5В входом и выходом ? Еще раз - ВХОДОМ и ВЫХОДОМ, а НЕ 5V-tolerant input. Честные 5В входы-выходы и было бы очень неплохо чтобы и другие напряжения держало (3.3, 2.5).. Altera FLEX, ACEX и прочие ? С софтом проблемы. Или плохо смотрел?Есть CLPD на 44 вывода LC4064V - у нее 2 банка VCCIO - в теории по даташиту можно осторожно подать 3.3 и 5В.
>>318209 > не сильно древние FPGA с 5В входом и выходом Выбери одно Пятивольтовые FPGA померли лет 20 назад, CPLD продержались дольше, но что MAX7000S, что XC9500 давно сняты с производства.
>>318388 Кто-то в теме? Уже прилично так посношал гугл, а он так и не дает ответа, как и 9-й кактус - у Flex 10K%30RI208-4% есть разделение пользовательских выводов по банкам напряжений питания или нет? На сайте альтеры в разделе pinouts какие-то мутные документы, где описаны только служебные выводы, а про обычные(пользовательские) ни слова. Видимо остановлюсь пока что на Flex 10K. MAX7000S - тоже есть для ловли баттхерта от заявленных максимум 100 перепрошивок. У EPM7128SLC84 - точно нет разделения выводов на банки - или все 3.3 или все 5В..
>>318400 >от заявленных максимум 100 перепрошивок. Народ пишет, что тысячи раз шили и нихуя страшного не случилось. Это типа Альтера перестраховуется, чтобы в случае чего ей мозги не ебли.
>>318400 Ты делаешь что-то странное, если тебе понадобились 5В уровни и при этом не подходит преобразователь уровней. Также оно стоит немало, если покупать с хоть какой-то гарантией. >есть разделение пользовательских выводов по банкам напряжений питания или нет? https://www.altera.com/en_US/pdfs/literature/an/an107.pdf Банков там нет. 5В одновременно с 3,3В на выходах (вроде бы) обеспечиватеся за счет внешнего подтягивающего резистора.
>100 перепрошивок Эти 100 перепрошивок - это количество перепрошивок при котором гарантируется заданное время сохранности данных во флеше. Если превысить, то производитель (всего лишь) не гарантирует что конфигурация будет сохраняться заданное время.
>>318418 Теплые, ламповые 5В.. Один раз был случай когда надо было немного логики в разрыв впихнуть, а не из чего, а свеженький циклон стремно было пихать, как и нормальные преобразователи 8T245 (или подобные) с 2 напряжениями питания негде было выдрать.
>Ты делаешь что-то странное Тяжелый осадок одной истории.
Еще раз перечитал - по ходу да, банков нет. Подав 5В на все VCCIO и получаем 5В ввод-вывод. Согласование выходов вниз (до 3.3) на резисторах, входов не нужно.
Про 100 перепрошивок - читал на марсоходе как они издевались, но там была cpld намного свежее в виде epm240, а не архаичной max7000.
FPGA хороша тем, что у нее нет ресурса перепрошивок, но и отладка как на МК - это порочная практика. Синтез проекта, заливка, оценка работы в реальном железе, правка, повторная заливка.. MAX10 показалась интересной - заливая через JTAG конфигурацию - она применяется. Передернув по питанию - грузится "заводская" конфигурация. Как минимум ресурс внутреннего флеша не должен уменьшаться. Есть на чем проверять, а мозгов для укрощения пока нет. Пробую VHDL неспешно изучать.
>>318418 Антон выручай. Altera Flex 10K поймет новую память 25 серии (какую-то некрофилию на мегабит-другой(из которых всего 46 килобайт используется) через преобразователь уровней) для хранения и загрузки конфигурации? По диагонали почитал AN116 - вроде возможно же. Как и поймет ли прямую запись pof файла или же преобразованного hex в конфигурационную flash?
>>318822 Этот антон прав. Почитал даташиты - никаких шансов приклеить 25 серию флеша к флексу. Заглянув в efind.ru и chipfind.ru в поисках epc1 epc2 at17 - прямо как на той картинке "все ебанулись". Стоят как крыло от самолета. И ладно.. Главное питание на рабочей схеме не дергать. На Altera UP1 (UP2) было только куда ставить саму память, но памяти не было. Вариант с МК конфигурить не рассматривал, хотя он скорее всего будет основным.
Я так понял прошлый тред тонет, продублирую: Парни, хелп. Нужная плата для акселерации вычислений. Суть в том, что она цепляется по эзернету, получает задания-считает-возвращает результат. Я нихрена не знаю, наугад предложил взять AES-KU040-DB-G http://ru.farnell.com/avnet/aes-ku040-db-g/dev-board-kintex-ultrascale-prog/dp/2775206?st=kintex Может есть что-то с более оптимальным соотношением цена/производительность? И если заказывать с фарнелл - не завернёт ли таможня? Пугают буквы "AES" в названии.
>>319849 Нужно исходить из ресурсозатрат твоего алгоритма. >Пугают буквы "AES" в названии. Иностранные поставщики соблюдают законодательство РФ горазбо более скурпулезней, чем пидорахен-таможня. Если согласятся отправить 90% что таможня пропустит.
>>322175 Можешь хоть что-нибудь предоставить в доказательство? Я покупал в терраэлектронике микроконтроллеры с аппаратным AES и они пришли в фарнеловской упаковке, все вроде как работает. И потом, как вообще можно выжечь какой-то блок, причем не задев соседние, если это не было предусмотрено при проектировании микросхемы?
Кроме того уже прошел месяц, наверное для анона задававшего вопрос это уже не актуально.
>>322178 >И потом, как вообще можно выжечь какой-то блок, причем не задев соседние, если это не было предусмотрено при проектировании микросхемы? ФЬЮ @ ЗЫ
>>322456 Дык на них есть нотификации фсб, а есть ли они на платы с плис - большой вопрос. В треде про компутеруниверс на /hw много разговоров про это. Есть две видюхи, аналогичные по характеристикам, одну можно невозбранно купить, а за другую чуть ли не присесть за ввоз антироссийского шифрующего средства. Как-то так, правда я слышал что эту шнягу потом отменили но это не точно.
И снова здравствуйте. Хочу прикупить тут чип XC7K355T-2FFG901I для своего девайса, смотрю цены, на фарнелл оно стоит €1 819,00. На ебее и на али встречаются цены от 12т.р. (€163,79) за чип. Это что наёбка какая-то? Откуда такой разброс цен?
>>324338 Тем не менее, всяких багуль, решающихся закрытием проекта, я тут словил уже больше. >Просто петушиное бинго сорвал. Ну и дрочи дальше свои иклюд дибрари ИЕЕЕ_СТД_ВЕКТОРА_МАТИМАТИКА сигнал стд_лоджик_вектор(10 даун ту 0) when => <= Что это вообще блять такое тут присходит. Ебануться.
>>324381 Багули ты ловишь, потому что руки из жопы растут. А что касается дрочи дальше, так это не я вынужден перейти на вхдл, а ты. Так что да, дрочи дальше.
Привет, плисач. Возможно, я не по адресу со своими проблемами но идти больше не знаю куда. Пытаюсь подключить параллельный АЦП к плис и заставить его нормально работать. И беда вот в чём, мне хватило ума развести плату и запаять чип но вот дальше просто не знаю что делать. Мой АЦП AD9226 имеет дифференциальный вход, но я распаял его как single ended и теперь не представляю как на него нужно правильно подавать сигнал, и исходя из этого проверить работает ли он корректно. Ранее для проверки я не придумал ничего лучше, чем написать конфигурацию, которая сначала собирает несколько тысяч семплов в память, а потом выдаёт их по uart на комп, скрипт на питоне рисует график, график на котором получается хуйня. На второй пикче на вход был подключен генератор меандра 100 кгц, на третей его увеличенная часть. С ацп берётся 8 бит из 12, для передачи семпла одной посылкой uart, на входе присутствует 1 вольт от встроенного в ацп источника опорного напряжения. Если вы ещё не поняли, что я довн, я говорю об этом прямо. Помогите.
>>324459 Начни с подачи постоянного напряжения на вход АЦП. В твоем случае - от 1 до 3В. Подал напряжение, записал отсчеты, посмотрел че получилось, поменял напряжение. Поставь себе какой-нибудь Bitviewer, чтобы было проще смотреть че у тебя записывается в файл. И да, у тебя отлажена схема записи в память/чтения из памяти/передачи по UART?
>>324504 >Bitviewer Чем оно лучше калькулятора в виндовсе?
>И да, у тебя отлажена схема записи в память/чтения из памяти/передачи по UART? Было бы что там отлаживать, простейшая же ерунда. Я тоже делал такое, только в отличие от этого анона я писал по 32 бита и принимал в матлабе.
>>324506 >Чем оно лучше калькулятора в виндовсе? Калькулятор может нарисовать что-то такое?
>Было бы что там отлаживать, простейшая же ерунда. Я тоже делал такое, только в отличие от этого анона я писал по 32 бита и принимал в матлабе. Молодец. Но я спрашивал не у тебя, а у этого анона.
>>324897 Это не навыки. Я про алгоритмы, хуе мое. То, что нужно сидеть в виваде под сисверилгом\вхдл плисоебу - это очевидно. Си, я так понимаю, уже для скриптом в микроблейзе\цинке?
>>324897 Это в оборонке такое хотят? С одной стороны, не представляю, кто в рашке может платить за плисоёбство, кроме оборонки, с другой, систем верилог и пайтон — для оборонки очень по-хипстерски.
>>324922 Ну, из алгоритмов это фильтрация, ресэмплинг сигналов, различные виды модуляции, прием сигналов спутниковой связи, ФАПЧ, временные синхронизации, тактовые синхронизации, АРУ, Витерби, BCJR, LDPC и т.д. и т.п. На C/C++ пишешь модели разрабатываемых алгоритмов, а потом переносишь на ПЛИС, или чужие модели, написанные на C/C++ переносишь на ПЛИС.
Объясните классический нубский вопрос. Как два байта переслать (vhdl)? literally. Я вот о чем. Был у меня 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 тоже, кстати, не работает. Мол, не определена операция и всё такое.
Итак, еще раз. Как передавать символы по одному используя в качестве исходных данных массив? И всё должно быть, естественно, синтезируемо. Спасибо.
>>325580 Что-то не вполне тебя понял. Я VHDL подзабыл, но все равно как-то написал пример. Если этот "массив" довольно большой, то целесообразно использовать блочную память. В таком случае имеет смысл организовать код таким образом, чтобы можно было заменить память на примитивы и мегафункции всякие, если вдруг синтезируется не так. К тому же так меньше вероятность сделать ошибку и получить какую-нибудь трехпортовую память.
>>325602 Ну вот у меня есть 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) выдаёт не биты, в которых блять тут все должно хранится,, а, собсно, букву. Опять нашел, что стринг это массив чаров, которые тоже можно там по ебаному как-то конверсить в нормальные биты.
>>325604 >Но переменная у меня лоджик вектор, которую так просто не засунешь в скобки, нужно приводить в to_integer(unsigned()). Приводи, в чем проблема? Тут же строгая типизация.
>мультиплексор В данном случае это скорее дешифратор.
>Как вообще на синтезируемость влияют эти все конвертации, какая предсказуемость результата? Лучше посмотри исходники ieee.std_logic_1164, которые должны быть в твоем САПР и симуляторе. Там будет видно, что unsigned и std_logic_vector отличаются только тем, что для них определены разные операторы/функции. А определения этих обоих типов абсолютно одинаковые.
>это массив чаров Которые имеют перечислимый тип. И прописаны они в пакете STANDARD, исходники которого также везде имеются.
>>325619 >Приводи, в чем проблема? Для меня это всё еще выглядит черным ящиком и магией коньпилятора, когда не ясно, что там внутри на уровне схематики происходит. Хотя вот раз говорят, что это всё ходы, чтобы обмануть сапр, а на самом деле там внутри одно и то же байтоебство, то буду менее настороженно к этому относиться. Но выглядит всё равно некрасивенько. >В данном случае это скорее дешифратор. Верно, извиняюсь.
С индексом разобрались, вектор в ансайнд, оттуда в интежер. А что с обращением к символу в строке, как его в биты перевести? Свою функцию перевода писать, как рекомендуют?
function to_slv(c: character) return std_logic_vector is begin return std_logic_vector(to_unsigned(character'pos(c)), 8)); end;
>>325692 Можно на огромной скорости молотить в логике операции, которые процессорное ядро на такой скорости не вытянет. А ядро будет заниматься всем остальным. Бесценно для обработки сигналов.
>>325716 Нахер оно нужно? Лучше уж готовый копеечный езернет контроллер поставить. Вот высокоточная обработка и анализ СВЧ аналога в реалтайме - интересная тема. Но нужны оче дорогие ацп и цап.
>>325719 Разве? В одном из самых простеньких циклонов EP4CE22 (который я люблю за TQFP корпус), есть 66 умножителей 18х18 бит, которые могут работать на ~200МГц. Параллельно умножителям там может работать куча сумматоров. Безусловно, какие-то DSP такое потянут, но если взять ПЛИС побольше?
>>325718 А если критична задержка и надо фильтровать пакеты на 7-м уровне osi на скорости 10 гигабит? А если надо выполнять ещё расчёты и выдавать отклик? На плис такая задержка будет минимальной, можно выстроить схему так, что расчёт будет идти конвеером и сложный алгоритм будет выполнятся за пару тактов, на проце такое сделать иногда просто невозможно, или нужна многоядерная йоба и ртос, и это будет нихуя не дешевле плис и разработка намного сложнее будет. >>325715 Есть такое.
>>325620 >это всё ходы, чтобы обмануть сапр Именно. По сути преобразование типов - это преобразование метаинформации о битах, а не самих битов. >>325625 >Слишком уже задротская тема какая-то Когда я еще наивно полагал, что vhdl это неплохой язык, наткнулся на https://github.com/VLSI-EDA/PoC библиотеку, которая немного упростила байтоебство. Ничего лучше под этот язык пока не знаю.
Прошу вашей консультации. Дело таково. Мне нужно знать, можно ли сэкономить транзисторный бюджет и скорость, заменив стандартный float16 вычислитель на некую имитацию с фиксированной точкой.
Что мне нужно. Допустим умножать. Каковы особенности чисел? 1. Со знаком. 2. Фиксированная точка (на десятых долях допустим) 2.1 1.3 4356.5 3. Но, когда число в диапазоне (-1 1), точку нужно перенести в старший разряд, для макс точности. Например 0.124321 -0.932323
А результат пишется в большой регистр в формате с фиксированной точкой. Например 435626.124321
>>326130 >Современные погромисты Ты из какого НИИ им. тов. Подзалупкина вылез? Кому впёрлись твои расчёты когда у нас аппликашка календарика на мобиле загружает под 100% 4 ядра по 1.4Ггц просто красивенькими анимациями и полупрозрачными 3д переходами? Здесь другие ребята, анон, не стоит шутить про расчёты, это тебе не шиндоус 3.1, здесь абстрагируются по-крупному. Здесь пишут на языке богов, где любая сущность объект, где всё наследуется от всего, где просто хэллоуворлд может занимать тысячи строк кода и при внесении пары изменений в коде управлять заодно ядерным распадом в коллайдере, здесь шаблон погоняет кодогенерацией, здесь просто приложение с показом времени отжирает 2 гига оперативы на старте и занимает 500 мегабайт на диске. Тут используют Анриал Енджин только чтобы перемножать пару матриц в его математической библиотеке, здесь гарбадж коллектор трахают прямо в анус, создавая тысячи объектов в каждом кадре и не освобождая ручками ни один.
Забудь ты про свой найтивный код. Здесь совсем другая тема. Тут программируют совсем на другом уровне.
>>326130 >На каком принципе работает курсор? Как определяют координаты и взаимодействие к примеру с окном? >А где можно подробнее глянуть про контррллер дисплей? Как он формирует текст? Это опять ты вылез? Это не радачеры тупые, а ты. Не можешь даже оответствующую литературу прочитать. Как вообще тебе объяснять, если ты не знаешь базовых вещей? Вот на картинке мой код простейшего процессора, много ты понял? А если нарисовать это на отдельных регистрах и счетчиках? Нихуя ты не поймешь, потому что "регистр" — для тебя пустой звук. Ну, можешь попытаться все это понять с помощью nand2tetris — это такой курс для тупых программистов. Но ты сейчас опять в лучшем случае поблагодаришь и продолжишь писать тупняк.
А картинка выглядит просто шуткой. Любой человек, пишущий на ассемблере, сможет вручную по таблице опкодов перевести текст в машинные коды. Остальная "иерархия" также имеет мало смысла.
>>326182 >И как твой код переводится в машинный? Где эта прога нахожится, что переводит? Оказывается ты тупее, чем мне казалось раньше. Заголовок треда не видел? Поскольку ты такой тупой, все же попытаюсь объяснить. Этот код, в некотором приближении, можно считать схемой в текстовом виде. Специальная программа (в первом приближении) располагает эту схему внутри ПЛИС так, чтобы она занимала меньше места. Так же как в случае с ассемблером, любой плисоеб, может вручную, без компа перевести этот код в схему (но не внутри ПЛИС, по разным причинам). >Про регистры я читал Но нихуя не понял, иначе не писал бы тут тупняк.
>>326144 Ты из какого НИИ им. тов. Подзалупкина вылез? Кому впёрлись твои расчёты когда у нас аппликашка календарика на мобиле загружает под 100% 4 ядра по 1.4Ггц просто красивенькими анимациями и полупрозрачными 3д переходами? Здесь другие ребята, анон, не стоит шутить про расчёты, это тебе не шиндоус 3.1, здесь абстрагируются по-крупному. Здесь пишут на языке богов, где любая сущность объект, где всё наследуется от всего, где просто хэллоуворлд может занимать тысячи строк кода и при внесении пары изменений в коде управлять заодно ядерным распадом в коллайдере, здесь шаблон погоняет кодогенерацией, здесь просто приложение с показом времени отжирает 2 гига оперативы на старте и занимает 500 мегабайт на диске. Тут используют Анриал Енджин только чтобы перемножать пару матриц в его математической библиотеке, здесь гарбадж коллектор трахают прямо в анус, создавая тысячи объектов в каждом кадре и не освобождая ручками ни один.
Забудь ты про свой найтивный код. Здесь совсем другая тема. Тут программируют совсем на другом уровне.
>>326207 Лол. Спасибо за терпение. Я про плис не спрашивал т.к. не разбирался с ним и не собираюсь пока.
Я просто тут часто спрашивал и всех заебал про ассемблер. Я так понял, что сам кодер опкодов в машинный заложен уже в архитектуре проца. Но сам ассемблер это сорт компилятора?
А про курсор я еще не понял детально. Хочу найти подробные схемы видеоконтроллера кр580вг75
>>326218 >Я так понял, что сам кодер опкодов в машинный заложен уже в архитектуре проца. Но сам ассемблер это сорт компилятора? Не, это просто бессмысленный набор слов. Нихуя ты не понял. Абсолютный нуль знаний. Хотя это даже не нуль, ты в минус пошел. >Хочу найти подробные схемы видеоконтроллера кр580вг75 Опять ты со своим выводом изображения на экран? Ладно, в очередной раз попробую объяснить. Начинать нужно с аналогового видеосигнала, того который в телевизоре или мониторе на ЭЛТ. В телевизоре электронный луч двигается зигзагом за счет отклоняющего магнитного или электрического поля. Попадая в экран, электроны засвечивают люминофор. Чем больше электронов - тем сильнее свечение. Таким образом, для того чтобы сформировать изображение, нужно менять силу тока электронного луча в кинескопе. Воздействие, заставляющее меняться силу тока, представляет собой видеосигнал (в некотором приближении, т.к. надо еще синхронизировать перемещение луча). Аналоговый видеосигнал, как и любой аналоговый сигнал, это просто напряжение или другая величина, изменяющаяся во времени. Все, теперь задача процессора с "видеоконтроллером" сводится к формированию заданного аналогового сигнала. А для этого, в самом простом случае, достаточно лишь приделать параллельный ЦАП к параллельному порту и написать программу, которая будет в этот порт выводить требуемые значения. При такой постановке задачи это ничем не отличается от вывода любого другого аналогового сигнала, например звука. КР580ВГ75 в некотором приближении всего лишь перекладывает часть этой работы с процессора на себя. Вот в каком месте тебе не понятно? Это даже многие ардуинщики понимают. Те самые, про которых ты так отзывался >>326140
>>326226 Небольшое уточнение. Третье состояние могут проверять оба оператора, но только при симуляции. Это не синтезируется, разумеется. casex помимо "Z" может проверять на "X", вот и все отличие. А для синтеза используется значение "?" (пропускает любое значение).
Ну хорошо, а где тогда находится тот декодер, который код с экрана переводит в машинный? Ты же сам понимаешь, что буквы с экрана не с помощью магии в машинный код переводится.
Да я понимаю, что экран это по сути сетка пикселей, в зависимости от сигнала кода контроллер зажигает определенные пиксели и таким образом формируется изображение. А как вот курсор работает, обратная связь?
>>326252 Ты какую-то хуйню городишь. Напиши нормально что ты хочешь узнать. Написаный текст на языке погромироаания переводится в инструкции процессора компилятором. А хуйню с курсором и обратной связью лучше бы не писал
>>326252 Ты какой-то совсем больной на голову. >Ну хорошо, а где тогда находится тот декодер, который код с экрана переводит в машинный? Переводом текста программ в машинный код занимается компилятор. Комилятор это программа такая, если что. Зачем делать компилятор, который будет брать текст с экрана? Не кажется ли тебе логичнее брать текст из файла или какой-нибудь области ОЗУ? >Ты же сам понимаешь Нет, твое чириканье я не понимаю. Отдельные слова вроде понятны, но предложения бессмысленные.
>А как вот курсор работает, обратная связь? Лучше выпились. Все объяснения как оно работает есть в книгах, которые тебе уже советовали. Причем это книги не для специалистов, а просто для общего развития, понятные не профессионалам. Ты, может быть скажешь, что "читал", но я тебе не верю или ты читал жопой. Попробуй напрягать голову в процессе чтения и отвечать на контрольные вопросы в конце каждой главы.
>>326261 >Лучше выпились. Слушай, этот тип, с периодичностью 2-3 месяца, врывается в радач и начинает задавать одни и те же вопросы по кругу. Постоянно находятся сердобольные аноны пытающиеся ему пояснить, хотя все это расписано и разжевано в сотне книг рассчитанных на широкий круг icq. Но этот унылый траль продолжает и продолжает уныло тралить.
>>326264 Какие книги, посоветуй авторов? Я проебал ссылки
>>326260 >курсор Ну если ты не знаешь, то так бы и сказал сразу. Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь
>>326261 Бля. Я не говорю про текст с экрана. Это всего лишь интерфейс для человека поняинтно. Про компилятор знаю, но принцип ты его понимаешь? Ты же вот мне про регистры говорил. Говришь программа переводит, это и так любому школьнику понятно. Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят. Так я всего лишь это хотел и узнать - где эти кодеры и находятся - в архитектуре проца или нет. За терпения спасибо тебе конечно. Вы конечно радачеры молодцы, можете делать/собирать йоба устройства и погроммировать, но на уровне микро видимо мало кто понимает, кроме инженеров интела и т.п.
И что я такого задал про курсор плохого? Мне просто интересно, какой принцип.
>>326275 >Так я всего лишь это хотел и узнать - где эти кодеры и находятся - в архитектуре проца или нет. У меня аж голова заболела. Кодеры - они за компом, вне проца находятся. >но на уровне микро Тебе интересно понять, как проходит движение основных носителей заряда в приповерхностном слое?
>>326276 Ну вот тебе элементарный шифратор 10 чисел в двоичные к примеру Они же находятся уже в архитектуре проца? Я собственно и пытаюсь это у вас тут узнать какой уже месяц лол
>>326278 Блядь, ебаный ты шизоид, ты можешь нормально выражать свои мысли? Твой поток сознания читать просто не возможно. Возникает ощущение, что у тебя разорванное мышление или речевая бессвязность. Просто словесный шум какой-то. Прими таблетки и не забывай посещать психиатра, у которого наблюдаешься.
>>326252 >а где тогда находится тот декодер, который код с экрана переводит в машинный Переводом исходного кода в машинный код занимается компилятор, а не декодер. >А как вот курсор работает, обратная связь? По-разному, в зависимости от архитектуры и вида курсора.
>>326275 >Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят. Программа - это последовательность инструкций процессора. Это по сути. Она управляет вычислениями, а не логическими элементами. >но на уровне микро видимо мало кто понимает Нет такого уровня, ты словоблудишь. На уровне цифровой схемотехники понимает любой плисовод, например. >Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь. Глупости. Нельзя научить, можно только научиться. Раз ты называешь дураком того, кому задаешь вопросы, значит ты еще больший дурак. >Какие книги, посоветуй авторов? Я проебал ссылки Что ты хочешь узнать?
>>326275 >Какие книги, посоветуй авторов? Я проебал ссылки Я выше упоминал nand2tetris. Хотя это не совсем книга, но так даже лучше зайдет. Это курс по построению процессора из отдельных вентилей 2И-НЕ, конечный итог - работающий на этом компьютере тетрис. Если бы ты задавал вопросы по этому курсу, то тебе наверняка бы кто-нибудь ответил. А так ты несешь бред и удивляешься не менее тупым ответам. >Если ты не можешь объяснить ребенку на пальцах что то в течении минуты - значит ты это сам не понимаешь Неправильная логика. Это бы означало, что все что ты "читал", писали люди, не осознающие того что пишут. А это явно не так. >Про компилятор знаю, но принцип ты его понимаешь? Понимаю, написал сам парочку простейших. Лежат рядом с кодом вышеприведенного процессора. >Ну ты же сам понимаешь, что программа это не магия, а по сути управление логическими элементами и кодерами, которые из этих вентелей и состоят. Машинные команды, из которых состоит компилятор, ничем не отличаются от машинных команд любой другой программы. Похоже ты не осознаешь что такое процессор и что он делает. Причем не на уровне того что у него внутри, а что он выдает наружу. Если бы ты сам попробовал запрограммировать на ассемблере хоть что-нибудь, а потом вручную перевести код на ассемблере в машинные коды, то таких тупых вопросов точно бы не задавал. Но ты просто "читал", не напрягая мозги и не отвечая на контрольные вопросы. А потом ты наверное еще головой стукнулся, и в голове у тебя какие-то "кодеры" перемешались с компиляторами. >но на уровне микро видимо мало кто понимает, кроме инженеров интела и т.п. Специалистов по физике твердого тела тут действтительно не наблюдается. Но тут есть несколько анонов, способных придумать простенький процессор и нарисовать его схему на отдельных транзисторах. На это способны все плисоебы. Выше по треду тебе наглядное подтверждение.
>>326278 Именно такие в процессоре вряд ли окажутся. В вышеприведенном процессоре такого нет. Или у тебя вопрос в том, как программа будет переводить десятичные числа (код 1 из 10) в двоичные (натуральный двоичный код)? Так это совсем просто, например посредством команд сравнения и условных переходов.
Все, мне надоело отвечать на твой тупняк. Если следующие вопросы будут не по курсу nand2tetris, то отвечать тебе не буду. Вопросы по этому курсу можешь задавать в этом треде.
>>326696 This! Спасибо за перевод с битардского. Я просто ахуеваю сколько стоят отладки с интерфейсами PCI-E и SFP+ Они что блять из золота? Может дешевле выйдет, если самому развести и заказать у китайцев?
>>326757 Это не перевод, а попытка затраллеть (или нет, в случае только разъёма). Вообще это PCI Express Electromechanical Specification, не? Дешевле или нет, ящитаю, зависит от конкретной отладки или конкретно того, что тебе нужно, и в каком количестве.
>Или без диплома магистра? С дипломом специалиста нормально. А с дипломом бакалавра сложно. Сразу же возникает вопрос почему не доучился. Обстоятельства или просто дурак?
>>326757 > отладки с интерфейсами PCI-E и SFP+ > Они что блять из золота? Они, прежде всего, предназначены для больших дяденек с серьёзным бизнесом, а не для гаражных ниггеров.
>>326979 Как правило в руководстве компаний, которым в РФ нужны плисаны (оборонка) сидят дяди старой формации, воспитанные еще при Брежневе. А им ты хуй объяснишь, что бакалавр это высшее образование.
>>327012 Высшее образование времён Брежнева безвозвратно ушло ещё в начале нулевых. А бакалавр это по сути научный работник, не заточенный под выполнение узко специализированных задач, но с развитым умом и большим количеством креатива. Магистр это уже по совковым меркам кандидат наук. Далее только доктор философии. Но как всегда у нас все смешалось и превратилось в кучу дерьма. Вся надежда на этот срок Путина, по словам будет восстановление разрушенной системы образования и подъем с колен собственной микроэлектроники.
>>327019 >бакалавр это по сути научный работник, не заточенный под выполнение узко специализированных задач, но с развитым умом и большим количеством креатива И хули тогда бакалавры делают в ВУЗах, которые готовят инженерные (читай, прикладные) кадры?
>>327023 Он же написал, что у нас все как обычно перемешалось. Однако не логично то, что даже первоначально бакалавр - это промежуточный этап перед магистром. Нет смысла готовить узкоспециализированного человека, чтобы потом еще пару лет готовить из него специалиста широкого профиля. Либо так не должно быть вообще, либо бакалавров должно быть два вида.
Анон, а никому не попадались книги с практическими курсами и заданиями для FPGA? Т.е. не стопятсотый пересказ спецификации языка и водолейством «что такое двоичная система и в чём разница между CPLD и FPGA», а нечто вроде "FPGA prototyping by Verilog (VHDL) examples".
>>327747 Очевидно стм32. Стм-ку можно купить, сделать для неё плату из говна и палок однослойную, развести распаять и девайс готов. ПЛИС для махараечных датчиков - оверкилл. Если хочется - можно плисоебить чисто в редакторе с тестбенчем.
>>327751 Это называется внушение. Могу и аргументировать. Желание перейти к ПЛИС - это желание анализировать. ПЛИС даст тебе знание внутреннего устройства контроллеров и процессоров. Желание анализировать возникает в левом полушарии мозга, и если оно активно - то девушка вращается по часовой стрелке. Желание перейти к STM32 - это желание создавать. STM32 даст больше возможностей, власти для своих идей. Желание создавать рождается в правом полушарии и когда оно активно, девушка движется против часовой стрелки. Лучше то, что тебе ближе.
>>327747 >Надоело тупо подключать ардуино библиотеки для датчиков. Учитывая это предложение, тебе лучше как следует изучить микроконтроллер в своей ардуине. Для начала ты можешь делать все то же самое на ардуиновской плате, но не использовать ардуиновское иде и библиотеки. Ты наверное даже с регистрами в атмеге не разобрался? Представь себе, микроконтроллер, который стоит в ардуине, разрабатывался не для ардуины вовсе. Даже более того, существуют какие-то ардуины и на Cortex-M3. Если бы ардуины начали делать на STM32, а такая возможность есть, то что бы ты тогда делал?
>>327753 В целом верно, но однослойную плату под QFP-144 в домашних условиях вполне можно сделать. А CPLD в PLCC корпусах с панельками вообще можно на макетке паять.
>>327773 Ну аналоговые сигналы можно и на другом конце потыкать, а не у ноги плисины. Конечно, есть всякая срань шумовая по пути, но я уж не знаю, насколько это важно.
>>327774 Так то аналоговые сигналы обычно непосредственно в ПЛИС не заходят. Входной аналоговый сигнал смотришь на одном конце, выходной на другом, а синхронизируешься от вывода ПЛИС, например. Ну и потом, во FLEX10K ничего такого не имеется.
>>327775 Мне кажется для подобных целей достаточно сделать отладочные пятаки на этапе проектирования печатной платы. Плюс, насколько я знаю, пятаки, к которым паяется BGA обычно делают сквозными и их можно потыкать с другой стороны печатки? Разве нет? Сам редко этим занимаюсь.
>>328924 На всякий случай скажу очевиднейший факт, который, возможно, тут не все знают. В отличие от микроконтроллеров, тут для чего-то более-менее сложного без симуляции не обойтись. Непосредственно для обучения плата не требуется. Поэтому если что-то и покупать, то в основном для того чтобы просто посмотреть как оно работает. Книгу там выше по треду советуют >>327693 Сам я советовать не буду, т.к. то что я читал, мне не понравилось.
>>328926 >6205 Может 6502? >с оперативкой сразу. В самих FPGA достаточно много блочной двухпортовой памяти. В весьма небольшой EP4CE10 этой памяти 414 кбит, в EP4CE22 594 кбит, по моему этого вполне хватит для игрушки на 6502. Если все-таки хочется отдельную память, то стоит определиться с ее типом.
Радач, что почитать, чтобы нормально вкатиться в вети на низком уровне? Помню, рекомендовали сиську читать, но там разве не применительно к их аппаратуре? Читал стандарт IEEE на 802.3 - маловато\сложновато. Маки, хуяки. Ничего не ясно.
>>327807 > Плюс, насколько я знаю, пятаки, к которым паяется BGA обычно делают сквозными Ничего ты не знаешь, Джон Сноу. Потыкать можно в переходные отверстия, через которые ноги соединяются с другими элементами схемы. Сами контактные площадки не сквозные, а поверхностные.
>>329205 Ты странный. Хочешь вкатываться на низком уровне, а стандарты тебе СЛОЖНА. Кроме того, низкий уровень - это что? Схемотехника PHY? Логика MAC? Алгоритмы протоколов верхнего уровня? Будешь делать свой W5300 на ПЛИС? Будешь делать свой TCP/IP-стек на STM32?
Какая линия прогресса у плисоеба? И критерии качества? Ну вот поморгал ты светодиодиком. Потом двумя. Потом сделал рс232 приемник, ... как там дальше? И как плохого плисоеба отличить от хорошего? Быстро кодит? Мало блоков использует?
>>330542 > USB, 10/100 Ethernet PHY, гигабитные приемопередатчики Это зависит от наличия бабла на дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком.
>>330587 >дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком Необязательно, я 100 Ethernet в одно рыло поднял, и без всяких NIOS-ов и прочих говнософтовых и хардовых процов. А все нужные корки есть в свободном доступе.
Плисаны, делаю тут (в целях самобучения) секундомер с динамической индикацией (на семисегментниках) и внезапно затупил. Как идеологически верно и политически грамотно организовать генерацию низкочастотного строба (http://zipcpu.com/blog/2017/06/02/generating-timing.html )? Генерировать его на месте, в каждом из модулей (мультиплексор, дешифратор семисегментного кода и т.п.), или же генерировать его один раз и использовать в качестве тактового сигнала для модулей?
>>330587 >Это зависит от наличия бабла на дорогие ПЛИСы и корки, или погромиста (не быдлокодера) под боком. Зависит. Но вопрос был какая линия прогресса у плисоеба. А в серьезных конторах хотят, чтобы плисоеб мог смахараить свич на ПЛИС.
>>330646 >EN Никак не могу понять, этот EN - обычный вход разрешения, завязанный на вход D, или же какой-то спец. вход завязанный на тактовый вход? мимо
>>316964 Этого двачую! Логический анализатор для начинающего плисоёба - отличный проект. Можно ещё 8-битную игровую приставку из ничего (от вентилей до написания игрули) попробовать замутить.
>>330833 >count enable Это в счётчиках. Это синхронный вход, подаётся через комбинационные схемы на D-вход. Мне интересен именно clock enable у D-триггера. Желательно схему такого триггера увидеть.
>>330892 Насколько я понимаю, это можно сделать не одним способом, но например в структурных схемах МК рисуют вентиль И. А в логической ячейке ПЛИС уже есть аппаратный триггер, и как там у него внутри сделан вход clock enable, производитель не расписывает (ну, по крайней мере, Альтера для Циклона не расписывает).
>>330985 По такой схеме повышаются требования к сигналу EN, он должен быть таким чтобы на тактовом входе не образовались пички. И вообще, комбинационные схемы и другие на тактовых входах крайне нежелательны - синхронное проектирование же. Вот тут подробнее рассказывается https://youtu.be/82MIcxi5pPo https://youtu.be/JpUUdEEKZeg
Привет, Анон, я смотрю тут много вопросов на тему "что мне выучить чтобы устроиться на работанейм?" Работаю 4 года FPGA-разработчиком, могу ответить на твои ответы.
>>331190 Сколько процентов рабочего времени ты занимаешься именно разработкой - проектированием структурных схем, кодингом, симуляцией, пердолингом с железкой?
Шмитт, помоги есть смысол собрать универсальный нищебродский девборд. Хочу связку: STM32F103ZXXX как основной узел ..., нутыпонел. XC6SLX9-2TQG144C как вспомогательный. На плате будут распаяны: слот под microSD, SDRAM, SPI flash (S6 заведётся от W25QV?). Чего ещё не хватает для универсализации? кроме мозгов
А в даташите пишут что есть, более того, пишут, что у V серии FSMC наоборот кастрирован в отличии от Z. Это ты наверное в таблице на сайте посмотрел, так её наверняка какая-нибудь секретутка из офиса заполняла, верить ей не стоит, в отличии от даташита.
>>331954 Ан нет, здесь попал. >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, да.
>>331970 Орнул с даташита, раздел Pinouts and pin descriptions. У LQFP64 нет выводов к FSMC. Это выглядит как "вам полагается FSMC, но мы вам его не дадим потому, что у вас ножек нету".
>>331978 >вам полагается FSMC, но мы вам его не дадим потому, что у вас ножек нету". И хуле орать? Бери чип с нужным количеством ног и радуйся. Или ты предлагаешь писать отдельный даташит под каждый корпус?
>>331988 Не, ну там на 11-ой странице в Table 2 и так написано что-то, но можно же эту таблицу было вывалить сразу в описании на сайт или, хотя бы, добавлять исключения в описание. А то получается, что в описании всё есть, а дальше мелким шрифтом на n-ой странице написано, что у одного нихуя нет, а другой кастрирован. Это как если при покупке смартфона в описании нормальные характеристики, а в инструкции меленько будет написано, что телефона нет, собс-но, 128Гб в другой модели, и вообще это тетрис.
>>331221 70% Большая часть времени уходит на ёблю с контролем версий и написание драйверов на коленках >>331222 СПб, 75к, обработка видео и ТВ-техника >>331515 SV
Плисачи, такой нубский вопрос: Есть sigA STD_LOGIC_VECTOR, скажем, на 32 бита, и sigB STD_LOGIC. Как красиво назначить некоторые биты вектора равными значению сигнала? Т.е., чтобы sigA(13 downto 7) <= sigB. Напрямую, естессно, не работает. Каждый бит прописывать - тупо. Я помню была какая-то ебатория с фигурными скобками типа <={N, (sigB)} или типа того. А может то в верилоге было.
Описание на Верилоге - на пикче. На входе - сигнал в спектре шириной 3 кГц после КИХ-фильтра. Из-за мгновенного действия детектора усиление сильно проваливается от грозовых разрядов, и из-за ступенчатой регулировки слышно щелчки, пока работает какая-нибудь станция.
Как можно попроще сделать регулировку плавной? Как текущий вариант допилить? Может фильтр простенький какой (скользящее среднее, например), чтоб щелчки сглаживать?
>>332811 Почему бы тебе не сделать схему с обратной связью? Так же как в аналоговых приемниках делают. Детектор - просто взятие модуля. Интегратор сигнала ошибки - ФНЧ и вычитание из порога. А управляемый усилитель - умножитель.
>>332821 Попробую. Тут встаёт вопрос выбора разрядности.
Допустим, в качестве фильтра беру скользящее среднее длиной 2048 семплов (больше по степеням двойки в такт не влезает). Имея на входе 17 бит, при длине 2048 и худшем случае, когда на входе - максимальное постоянное напряжение, получаю увеличение разрядности на 11 бит. Итого, на выходе фильтра имеем разрядность 17 + 11 = 28 бит. Тут первая непонятка: Какая разрядность вычитателя должна быть?
Плисаны. Вот стоит перед нами задача. Из входов с помощью магии получить выходы. Пишем вот на HDL всякое и первоначальными критериями того, что всё удалось является адекватная временная диаграмма, количество занимаемых ячеек и работа непосредственно на железке. А вот как писать код чтобы: было низкое энергопотребление или высокая скорость выполнения или минимальное количество ячеек? На что ориентироваться, как это на коде отражается?
>>333264 Вот в циклоне, как показано на схеме, предусмотрено переключение направления на ходу, а не только при конфигурации. В других ПЛИС аналогично. В чем проблема то?
>>333326 HDL-код - это всего лишь способ создания схем. Можно схемы в графическом редакторе рисовать, можно напрямую в ChipPlaner-е структуру задавать, от этого ничего не меняется, просто в HDL-е это всё делается быстрее и удобнее. А чтобы нормально кодить, надо более менее представлять как желаемая схема должна выглядеть в графическом виде. Можешь видосики глянуть, может что-то интересное найдёшь https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
>>333326 >Хотя как это ретранслируется в код пока неясно.
FPGA основана на таблицах истинности+специализированные блоки (память, умножители). Смотри даташит конкретной плисы. Например LE четвертого циклона - это любая логическая функция, описываемая 4 входами и одним выходом + один бит памяти + логика роутинга и синхронизации.
Соответсвенно прикидывай, через сколько логических функций 4bit to 1bit выражается твоя логика.
>>333405 Ну вот что, например, лучше: case (a) is when 0 => .. .. when 99 => .. (т.е. мультиплексор на 100 входов) или if a = 1 then .. elsif ... (т.е. 100 триггеров(?)).
Триггер сам по себе реализуется всегда тяжелей, но в логике плиса - хз, там же и правда, лут, алу, вся хуйня.
>>333435 >Триггер сам по себе реализуется всегда тяжелей В ПЛИСе триггер не реализуется, они там уже есть, точно так же как и ПЗУ на которых реализуются комбсхемы. Минимизировать схему, по большому счёту, нужно на ранних этапах проектирования, т.е. перед тем как начать кодить думаешь: "а нужен этот модуль/часть схемы, или без него можно обойтись", более тщательно прорабатываешь архитектуру. А если по мелочи то, в качестве примера, можно привести счётчик с параллельным переносом и сквозным.
Как явно реализовывать выбор ячейки RAM? Везде пишут просто ram_data_out <= memory(to_integer(ram_addr)); Понятно, что для более-менее больших объёмов делать case (to_integer(ram_addr)) is when 0 => ram_data_out <= memory(0); ... (т.е. мультиплексор) заебешься. Разбивать его на несколько маленьких? Или есть еще какая элегантная реализация, типа сдвигового регистра и пр. ?
Парни, привет, я начинающий, сильно не пинайте. Как сделать обмен комп<->плис? Первое что пришло в голову - UART, но блин медленно, передавать/принимать желательно за раз 64 байта, по возможности быстро, хотя бы 8 байт за такт. Какие ещё варианты? Параллельный стык колхозить типа LPT?
>>333610 Даже если скорость поднять, то все равно медленно? Большинство 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.
>>333646 Ну можешь просто байты считать. Либо можно начинать (и/или заканчивать) посылку с уникальной последовательности, если боишься обрывов связи.
>>333646 >пока все 64 байта не придут, вычисления не начинаются Для этих целей ставится буфер, который выдает сигнал валидности. Выдает только тогда, когда в него набъется нужное количество данных.
>>333653 >>333656 Дело в том, что плисина считает быстро, и получится, что большую часть времени будет простаивать, ожидая, пока заполнится буфер. Нужна скорость мегабит 50, по моим прикидкам.
Поздравляю, ты всё-таки пришёл к И-регулятору, всего-то за один год и четыре месяца. Ещё и пожаловавшись, что оно не нагуглилось. Просто пиздец, какие же люди долбоёбы, вообще пиздец.
>>334508 Только In System Sources and Probes Editor для попытки снятия топологии неизвестной платы. Заебатый квест. Большая часть выводов (может 500 из 740) распознана таким методом, исключая выводы высокоскоростных трансиверов.
>>334576 Пока разбирался с SignalTap-ом столько косяков нашёл и расхождений с документацией. Вот думаю, то ли я и дурак и не понимаю, то ли действительно индусы пишут.
1. Есть ли годные книжки по систем верилогу на уровне designer's guide to vhdl? 2. Есть ли годные ресурсы по всему этому кодингу на русском языке (ну кроме мемных ссылок на марсоход и тот плейлист на тытрубе про цифровую схемоту) или дефолтный гуглеж на английском всё еще единственный годный вариант?
Плисаны, как ускорить подсчет контрольной суммы UDP? Не найду полином для расчета. Вообще можно ли считать это через полином? Или только через сумматор?
>>336505 Если не буду считать КС, моя железка будет поддерживать протокол лишь условно. Для ардуиноподелок такой подход конечно подходит, но для коммерческого продукта врядли.
Ну, еще придумал способ упростить. Вбей в заголовок не нулевую константу, а в пейлоад в конец вставь КС, если протокол пзволяет добавить 2 лишних байта
>>336509 >В голову не приходит ничего лучше, кроме как построить конвейер. А так у тебя конвейеров нету? А как данные передаются тогда? Только не говори, что процессором без DMA.
>>336523 не, ты просто не понял. Тебе не важно чем подгонять контрольную сумму к правильному значению, можно полем, а можно данными. Позиция по сути не важна
Хуй знает, в тему ли, но вопрос по Signal Integrity. Если интерфейс согласован до пина, а на кристалле показывает говно - это фейл? А если наборот? Заебали эти DDR4 с их ODT.
>>336543 Это на стадии моделирования разводки. Модели выводов прописаны соответственно в IBIS файлах. Показывает, например, на чтении у ноги FPGA хуйню, а на кристалле - норм. (odt на ноге плиса включен)
>>336622 Короче все оказалось проще. Заголовок MAC-уровня передается за 14 тактов. На предыдущей стадии конвейера просчитываю предварительную КС UDP-payload. Окончательную КС считаю за 5 тактов во время передачи MAC. Можно было не ломать голову.
Однако, задача с ускорением подсчета КС интересная, так и не придумал рещение.
>>336625 >2) Что дает выбор стандарта напряжений логических уровней в пин планере квартуса? Разные стандарты определяют допустимые диапазоны напряжений и токов на выводе, надо читать на эту тему мануал плисины и даташит железки, к которой коннектится плис. (Те же jedec для DDR, например).
>>337388 Для любителей садо-мазо можно предложить 74HC299 - есть и параллельная загрузка и последовательный ввод-вывод. С тебя логика как переключать режимы загрузка-вывод (может и обойдется даже без инвертора на S1) и как отличать актуальные данные или нет. За лучами поноса в >>316943 (OP)
Существует ли какая-нибудь литература по верификации на русском? И не надо мне писать что нужно знать английский. Мне понятно что все равно в итоге придется читать на английском, но хотя бы основы я хочу прочитать на русском.
>>337403 Отвечаю сам себе, нашел одну книгу. >Проектирование и верификация цифровых систем на кристаллах. Verilog & System Verilog >Хаханов В.И., Хаханова И.В., Литвинова Е.И., Гузь О.А. Книга выглядит как-то не очень, слишком похоже на перевод. Скорее всего это перевод и есть, только надерганный из разных источников. В книге рассказывается об использовании assert-ов и псевдослучайном тестировании. Хотелось бы еще почитать про UVM, OVM и прочее.
>>337611 SERDES из мира Ethernet вряд ли подойдет - используется перекодирование 8 бит (исходные данные) в 10 бит (в линии). Может помогут всякие LVDS драйверы для Flat panel типа DS90CF383? Чуть больше 24 бит заталкивает в 5 LVDS линков.
>>337809 Камень - это как на этой фотографии? Ну это больше по спортивной тематике. Перед тем как что-то покупать, тебе нужно было читать что-нибудь по основам цифровых устройств, например Угрюмова.
Пока я расхлёбываю альтеровские патенты на конфигурирующие битстримы, толковые посоны, угарающие по открытобесплатному ПО, пилят инструментарий для Lattice iCE40 с возможностью визуализации до RTL. https://twitter.com/ico_TC/status/823883792754634752
>>338571 Когда-то спрашивал, еще раз спрошу. Есть слитая конфигурация с мелкой CPLD от Lattice. Как/чем превратить конфигурацию во внутреннюю схему межсоединений CPLD чтобы попытаться понять что там реализовано внутри?
Сап, радач, помнится тут кто-то частотомер делал, как успехи? нужен частотомер от 50МГц до 10ГГц, который может писать на флеху частоту, время, напряжение, ток, температуру. Есть что нибудь посмотреть на эту тему?
>>340042 Но зачем тебе для этого ПЛИС? Простой счетчик на ПЛИС даже не будет работать на такой частоте. Разве что только приспособить serdes. Но на такую частоту serdes в циклонах и спартанах вроде бы не дотягивает, придется все равно ставить внешний предделитель. Более того, serdes вообще зачастую отсутствует в дешевых сериях. Для записи на флешку придется использовать nios/microblaze (особенно если ты хочешь использовать файловую систему) или снаружи приделывать микроконтроллер, при этом сам сами счетчики будут занимать мизер относительно nios/microblaze.
Поэтому нет никаких причин делать такое на ПЛИС. Тому анону вроде как нужно было очень много каналов, а частоты были относительно низкими, поэтому ему был смысл использовать ПЛИС.
>>340094 >годные счётчики, прескалер Не знаю, не делал такого. В качестве предделителя можно взять микросхему синтезатора частоты. Пользуйся параметрическим поиском на диджикее.
Я так и не понял что ты в итоге хочешь получить. Если тебя устраивает одна секунда длительности измерения и ты собираешься использовать в качестве опорного генератора обычный кварцевый не термокомпенсированный, то можно поставить предделитель на 1000. Тогда в точности почти ничего не потеряешь даже на твоей нижней границе частоты и снизишь максимальную частоту до 10 МГц. Разные варианты есть, в зависимости от желаемого результата.
Верилогобояре в хате есть? Поясните за task и function. Для чего нужны? В каких случаях их применение оправданно? В чём их преимущество перед обыкновенными модулями?
>>340251 Функции и таски можно сравнить с макросами в Си. В функции можно запихивать только комбинационную логику. В таски можно уже вставлять последовательностную логику. По сравнению с модулями, функции можно пихать практически куда угодно - в assign, initial, объявления. Например, пользуясь функцией логарифма удобно делать модули с параметризуемой разрядностью. Таски в принципе можно использовать для синтеза, но я их использую только для симуляции, т.к. часто сложно представить во что синтезируется код с ними.
Если модули можно образно представить как готовую печатную плату с детальками, то таски - нельзя. Например, вставили в таск ожидание фронта сигнала а потом вызвали несколько таких тасков друг за другом, во что оно синтезируется (если сможет конечно)? Это явно не всегда можно представить в виде последовательного соединения модулей.
Сап, анон, есть один соневский сенсор IMX274 и задача читать с него данные 4K@60Hz@10bit. Данные он выдаёт по линиям SubLVDS, Vcm=0.9V, Vdiff>100mV, Rdiff=100 Ом. Надо принять их на кинтексе7. Кинтекс7 не умеет в SubLVDS вообще, а HR-банки (которые на КС705 выведены на внешний разъём FMC LPC) не умеют LVDS при питании 1.8В. А у нас оно 1.8, потому что от 2.5 погорят все остальные порты на сенсоре (SPI, Hsync, Vsync).
Похую, назначаем вместо 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 — криво и косо? Что я не учёл?
>>340269 >эквивалент 50 Ом на 0.9В >эквивалент 48 Ом на 0.9В для Например. Пины дифференциальные, надеюсь, к одной паре заводил? А то у меня был косяк, когда дифф. пару соединил с N и P, но только N была с 12L, а P с 13L. Ну и может второй класс hstl пойдет?
>>340262 >По сравнению с модулями, функции можно пихать практически куда угодно - в assign, initial, объявления. Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign? Есть ли такой случай когда функцию нельзя заменить на модуль? Если я правильно понял функции и задачи удобны по большей части в моделировании, в синтезе и без них вполне можно обойтись.
>>340302 >Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign? Синтаксический сахарок. Для модуля надо писать объявление самого модуля, цепей, подключать цепи к портам, причём отдельно от описания прочей логики. Функцию где понадобилось, там и вставил.
>Есть ли такой случай когда функцию нельзя заменить на модуль? Например, ты пишешь модуль с параметризуемой шириной шины, в параметре указываешь максимальное значение на шине, а ширину шины вычисляешь при помощи функции, чтобы это значение туда влезало.
>>340302 >Ну так почему нельзя создать модуль нужной комбинационной схемы и вставить его себе в код, ведь не обязательно комбсхемы подключать через assign? Это ты про что? При чем тут assign? Запись с функцией обычно будет короче. >Есть ли такой случай когда функцию нельзя заменить на модуль? С функциями можно проводить вычисления при инициализации и объявлении. Вычислять и задавать требуемую разрядность, хотя бы. Вот тебе вполне синтезируемый пример использования функции $clog2 https://github.com/minad/vle/blob/master/shifter.v >Если я правильно понял функции и задачи удобны по большей части в моделировании, в синтезе и без них вполне можно обойтись. Скорее только таски (по моему мнению). Функции для синтеза наоборот вполне удобны.
Вот еще тебе пример использования функции для инициализации памяти >>326151 В более сложных случаях это может быть не чтение из файла, а вычисление на ходу.
>>340302 Вот еще вспомнил. Функции могут возвращать тип real, а в портах модулей такое недопустимо (хотя может в SV разрешили). Хотя это ограничение можно обойти, пусть и костыльно, через $realtobits и $bitstoreal.
>>340305 >в параметре указываешь максимальное значение на шине В параметре я указываю любое значение при создании экземпляра модуля. Зачем в модуле ограничиваться максимальным числом?
>>340306 >С функциями можно проводить вычисления при инициализации и объявлении. Вычислять и задавать требуемую разрядность, хотя бы. Так это системная функция.
>Вот еще тебе пример использования функции для инициализации памяти Это тоже системная. А какой прок с пользовательских? Вот только разве что быстрее и короче.
>>340321 >Так это системная функция. Появилась только в verilog 2005. И мне до сих пор приходится для флексов использовать свою функцию логарифма.
>А какой прок с пользовательских? Вот только разве что быстрее и короче. Из верилога можно выкинуть очень много, сохранив возможность делать на нем что угодно. Например, вполне можно обойтись без арифметических операций.
>Зачем в модуле ограничиваться максимальным числом? Ты вообще о чем? Вот взять например UART приемопередатчик. Параметрами задается тактовая частота и скорость. В модуле считаются максимальные значения счетчиков для заданной скорости. Из этих максимальных значений считаются требуемые разрядности счетчиков.
>>340269 Нашёл косяк. Оказывается, многоканальный десериалайзер для ультраскейла пакует биты на шине по порядку каналов, а для седьмого кинтекса — по порядку битов (то есть сперва нулевые биты со всех каналов, потом первые, етц). CYKA BLYAT.
Помогите с ебучей вивадой. Суть в следующем. Есть модуль А, который нужно промоделировать. В модуле присутствует инстанс модуля Б, который довольно тяжеловесный но уже отлажен. Не хочу моделировать эти два модуля совместно ибо пиздец как долго. Решил запилить конструкции типа ifdef SIMULATION ... ну вы понели. Можно ли как-то сделать дефайн глобальным? В идеале, чтобы в самом тестбенче писал Define SIMULATION 1 и модуль А симулировался в облегченном варианте?
>>340557 Так Б у тебя на работу А-то влияет или нет? Если влияет, как ты без него моделировать собрался? Если не влияет, нахуй он там у тебя вообще?
А вообще, если у тебя есть какие-то независимые от Б части А, на твоём месте я бы их вынес в отдельный модуль и написал для него тестбенч. Прежде чем придумывать костыль, может, лучше попробовать сделать стандартными методами?
>>340572 А, ну и положи на них тогда анальный хуй. Ещё крутиться из-за них зачем-то при таком отношении, подскакивать кабанчиком. Моделируй как есть, пей чай.
>>340574 Я здесь как краб. Буду пить чай - предъявят за анальные сроки. Это сущий ад быть плисоводом, когда твой тимлид программер и вообще толком не понимает в железе, но старается компенсировать это за счет программерских штучек.
Ненавижу блять все эти программерские штуки, системы контроля версий, дженкинсы-хуенкинсы пропади они пропадом.
>>340581 Извини, братиш, но нет к тебе что-то никакого сочувствия. Потому что допуская к себе отношение как к говну, ты формируешь у работодателя представление, что к плисоразработчикам допустимо относиться как к говну. И нет, я не системы контроля версий здесь имею в виду. Не делай так.
>>340584 Но к плисоводам в рашке и так относятся как к говну. Вакансий мало, люди цепляются за работу. Хотя чего я оправдываюсь, омежью сущность не скрыть.
>>340585 Вакансий мало потому что сфера уж больно специфичная, зато там где они нужны их ценят в силу малого количества, а так средний плисовод имеет зарплатку больше чем средний прохер. мимоплисовод
>>340589 Ну для ДС может и пиздец, в ДС, я думаю, можно легко 100 делать. А у меня работёнка не бей лежачего, особо не напрягают, правда большую часть времени какой-то левой хернёй занят, но не суть. А так знал бы ЦОС и прочую математику, конечно бы метнулся туда где побольше.
>>340591 >Вчерашний студент попав в Сбертех джава-макакой будет получать от 120. И это без знаний ЦОС и математики. Должно быть там анальные условия за такую зп, ибо закон сохранения энергии должен работать.
>>340599 Наверняка и график посвободнее, и плейстейшон стоит в комнате для отдыха. В таких вещах работает закон спроса и предложения. Писать энтерпрайз для банков спрос на специалистов большой, а делать попильные аналоговнеты для военкии — лишь постольку-поскольку. Бюджет один хуй выделят, ну и нафиг им с каким-то мимованькой делиться тогда.
>>340603 >плейстейшон И зачем? Вот у меня на работке есть паяльник и нехилый цифровой асцилоп и мне никто не запрещает паять себе ёбамахарайки, а это многого стоит.
>>324069 Разумеется без поверки и не откалиброван. С памятью похуже, скорость обновления низкая. По удобству использования и сравнивать нечего. Тем не менее, что-то с такой полосой можно найти относительно дешево, пусть оно и не откалибровано будет. Поэтому такой осциллограф - преимущество так себе. Другое дело спектроанализаторы, векторные анализаторы, вот такое действительно уже слишком дорого будет.
Бамп. Буквально неделю назад на алике появились вот такие отладочные платы Kintex 7 XC7K420T https://s.click.aliexpress.com/e/LBqdJPk Первый вопрос - а хули так дешего, при ценнике 2 к далларов только за оригинальный камень? Второй вопрос - можно ли использовать эту плату без подключения в pci слот ПК? Третий вопрос - можно ли использовать pci платы просто как IO?
>>340745 >Первый вопрос - а хули так дешего, при ценнике 2 к далларов только за оригинальный камень? Левые или пизженные микрухи. Врятли прошли полную сертификацию Второй вопрос - можно ли использовать эту плату без подключения в pci слот ПК? Можно, только подай питание Третий вопрос - можно ли использовать pci платы просто как IO? Можно, но только как высокоскоростные интерфейсы... как ГПИО -нет
>>340745 >хули так дешего Наебалово, ошибка, или наебалово, замаскированное под ошибку (чтобы ссылку на магазин растаскали по интернету, при реальной попытке заказать ответ будет "ой, сорян, косякнули").
>>340764 да он написал что это первая версия, вторая будет с ДДР и дороже. Потестить забесплатно хочет. Не знаю, я встречался со сверх-дорогими ПЛИС в поднебестной, это реальность!
>>340764 > чтобы ссылку на магазин растаскали по интернету, при реальной попытке заказать ответ будет "ой, сорян, косякнули" Ну хуй знает. Я в этом магазине летом покупал (правда, обычные платы с четвёртым циклоном и SDRAM), всё нормально было.
Мимикрокодил
P.S. Судя по сопровождающему лот чинглишу, похоже на то, что это какие-то китайские кустари-самородки не то демпингуют, не то сливают остатки после большого проекта («I will design the FPGA cluster dedicated to computing . Single board 12 FPGA XC 7K420T»).
> Сколько ddr? Не DDR, обычная SDRAM. В данном случае старая (хуй его знает, где они эту микросхему десятилетней давности откопали) W98256G6EH-75, на 256 мегабит.
Что на оптике, что на меди - тишина (смотрелось внешним свичем), служебные сигналы на SFP типа TX_DISABLE устанавливались в нужные уровни, иначе бы не было линка по оптике. На входе MII в 88E1111 ничего нет, тишина, приходит только тактирование.
>>341542 Ньюфаг? Гугли MagJack - общее название разъемов RJ45 (8P8C) с встроенным трансом. Маркировка видна, неужели так сложно гугл спросить что это такое? Есть там внутри трансы.
>Что за чудо отечественной инженерной мысли? Чего не знаю, того не знаю. Увидел на развале и не смог пройти мимо этой вкусноты - легкая FPGA + гигабитный Ethernet и по меди и по оптике.
> Ты уверен что 88E1111 в таких условиях вообще живой? > Что на оптике, что на меди - тишина (смотрелось внешним свичем), служебные сигналы на SFP типа TX_DISABLE устанавливались в нужные уровни, иначе бы не было линка по оптике.
>>341560 Там уже нет и всего один вариант - не выбор. Имен называть не могу, скажу только что стоит иногда по форумам гулять - можно много интересного и экзотичного выловить. Своих останков мозгов хватает только на счетчик, да и то - копипастой.
Девборда - это "Cyclone V GX Starter Kit", "DE10-Standard" и "ETHERNET-HSMC Card".
>>341518 Даже трудно сказать что это. Максимум 4 IO есть и все, не разгонишься в отладке. Сдув LPC - еще может будет около 30 IO.
>>341518 Я работал с этим чипом (вроде как кличут Аляской) - ее ставят почти на все борды Xilinx. По ойтуси ничего не писал, все заработало без пердолинга, просто настроил связку ядер pcs/pma-mac и слал данные в axi stream.
>>341709 > слал данные в axi stream. Было интересно запустить ВСТРОЕННЫЙ в phy генератор пакетов. Снаружи ничего не подавалось(только 25 МГц тактирование) и что либо подавать из данных нет смысла - тк входные данные игнорируются в этом режиме. Оно не взлетело. Где мог накосячить? Подавал питание, давал ресет, визуально убеждался что есть гигабитный линк по меди (SFP НЕ вставлялось) на железке и на внешнем свиче, менял страницу, завал в разных вариантах биты для запуска генератора пакетов и каждый раз в ответ тишина (и визуально, и по счетчикам фреймов на порту внешнего свича). Сейчас уже не актуально, но немного интереса осталось - как это запустить. Диагностика кабеля работает, но логику до конца не раскурил, особенно с вычитанием 0x32 (не помню) и визуальной валидации результата по битам описаниям состояния, тк порою выдавал очень и очень забавные результаты на одном и том же кабеле.
>>341773 Я немного динозавр и ленив. Зачем ебаться с микробом, когда можно навесить какое-нибудь ядро типа jtag2AXI либо по бырому накидать генератор пакетов на верилоге. Этого вполне хватит для теста азернета.
Ш2С не задействовал вообще, у этого камня есть mdio mdc через которые он рулится со сторонв плисины.
>>341930 > А зачем тебе встроенный генератор? Склеив с > Диагностика кабеля работает Ответ прост - минимально возможная НЕХ для монтажеров - посмотреть кабель и посрать в сеть, а мы со стороны смотрим что происходит, до куда долетает + побочкой идет заведется не заведется гигабит на 100 метров натянутой как струны люминиевой святой пары с узлами и барашками, на пару с резкими заворотами об край бетонных плит или "где мой гигабит" на сраной говномыльнице довоенных времен со 100 мегабитными портами. Но это все в прошлом, полностью сменил сферу деятельности, это осталось на случай "дело было вечером, делать было нечего"(с). Да, это нужно было лично МНЕ для диагностики хронических случаев, а не говноуправляющему/начальнику/бригадиру или еще кому, когда даже сраная индикаторная отвертка одна на три бригады, а обжим чуть ли не отверткой делали. За одно и ПЛИС потыкать палочкой, но что-то не срасталось.
>>341922 Это условное название, взяли "остроконечников" и "тупоконечников" из Путешествий Гулливера, одним произвольно присвоили один порядок бит, другим другой.
В статье пишут о прорядке байт, но для бит я так понимаю, все точно так же.
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};
>>341991 >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).
Я в ахуе с двачеров. Им дают плату с плисиной за полтора куска зелени по цене телефона ксяоми а они еще спрашивают положили ли в комплект трансиверы по цене от 100$ за штуку? Сука пиздец какие долбоебы.
>>342219 Ну и нафиг мне эта девборда, если я простой ардуинщик? Че мне 10к девать некуда? Я плис только на картинках видел и в душе не ебу что вы на них делаете, разве что частотомер можно быстрый забацать, и все. Езернеты-хуернеты, НАХУЯ это мне? Да и вам наверняка тоже. Бабло девать некуда и руки занять нечем, видимо. Лучше шлюху снимите 3-4 раза на те деньги.
>>342474 В полумиллионниках норм шлюха стоит как раз 2.5-4k в час. За 5-6к можно снять вип-вариант, либо шлюху вместе одной-двумя ее подругами. За 1-2к можно снять грязную больную страшную шмару. В ДСах цены другие.
Всем обязательно мотать назубок поучительную стори.
Конструктор спутников в каком-то сраном НИИ при ГРУ отправил шведскому кадровому агенству своё резюме и уехал на сгуху на 14 лет строгача за разглашение гостайны (то есть своего места работы).
>>342483 Очевидно, помимо того что шлюха будет выглядеть топово (косметические процедуры + пластика), снимать ухоженную хату в приличном районе, еще предоставит доп. услуги на выбор клиента (прием/выдача золотого дождя, например) >>342498 >6 лет Повезло еще. Если бы картинки в вк репостил или грамм дикорастущего во дворе каннабиса сорвал, мог отъехать на все 15 лет.
>>342483 Включено: кунилингус, анилингус мне (даме) @ Классика, вагинал, впердол - строго по взаимной симпатии @ Молодой человек, "анал" написано не для вас!
ПЛИСаны, вот поясните за триггеры Почему RS-триггеры не запоминают состояние, а делают какое-то говно? Что такое D триггер, и чому у него столько различных версий? Что такое JK триггер?
Анчоусы, накидайте только не защеку идей для pet projects. Возможно даже не обязательно связанных с плис, но крайне желательно. Словил творческую импотенцию, есть свободное время, есть желание, а достойных идей нет.
>>343275 Погугли задачи, в которых применяется particle filter, и запили реализацию на плис. У particle filter как раз архитектура состоит из параллельных одинаковых вычислений для большого набора чуть-чуть различающихся входных данных, на архитектуру ПЛИС заебись должно лечь.
Уже пишу на верилоге зарабатываю на жизнь, понял ваши позиции.
Пока мысли такие: 1) изучать буду, так что не закидывайте говном за последующие вопросы 2) представляю, для чего на практике нужен енум — описывать конечные автоматы. Пока для этого хорошо заходил localparam, для каждого имени надо самому указывать соответствующую константу, зато ты мог контролировать её ширину и под неё писать остальную логику ширину регистров, с енумами это так же просто делать? 3) привык и в какой-то степени даже полюбил вивадовский редактор схем, для составления верхнего уровня иерархии самое то. Интерфейсы (стандартные наборы сигналов разной ширины и направления) между модулями (блоками) там есть. Что на нижнем уровне иерархии описывается посигнально, на верхнем автоматически пакуется в стандартные интерфейсы. Вы используете системверилог вместо редактора схем, вместе с редактором схем, куда именно?
Самое охуенное, что я пока уже нашёл — это assert. Вот его пиздец как не хватало моим тестбенчам. Не имеет отношения к синтезу, но просто пиздец как охуенно.
>>340331 В подобных случаях функции применяют для вычисления констант, т.е. функции как бы отрабатывают до основной компиляции. Мне интересны случаи в которых функции используются непосредственно для синтеза схем. Ну т.е. >>340262 >функции можно пихать практически куда угодно - в assign, initial, объявления вот это вот всё.
Верилогогспода, поясните за арифметический сдвиг влево, в сторону старших разрядов (<<<). Если двигать вправо, в сторону младших разрядов, то норм, знак сохраняется и копируется. А вот если двигать влево, то знак теряется, получается что и арифметический сдвиг влево и логический действуют одинаково. В чём подвох?
>>345059 Что за странный вопрос? Везде, на что хватит фантазии. Например, функцией можно сделать подсчет бита четности, дешифратор для семисегментника и прочее. Разумеется, делать сложную чисто комбинационную логику не целесообразно. Поэтому, если я правильно тебя понял, какую-то сложную логику в таких функциях не встретишь. Ну и да, из перечисленного только запихивание функции в assign может привести к синтезу соответствующей комбинационной логики. >непосредственно для синтеза схем. Все-таки, по моему, в таком разделении нет смысла. Даже вычисление разрядности приводит к синтезу довольно таки непосредственно, а можно еще про циклы вспомнить.
>>345067 В стандарте об этом вот что написано: >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. По моему все однозначно, отличий нет, даже приоритет одинаковый.
>>345198 Затем что если делать вычитание на сложении, нужно будет вручную переводить число в отрицательный вид, ну т.е. совершать доп. действия. А тут же наоборот, выполняет ту же задачу, а сама на один уголок длиннее. По той же причине у меня бомбит от того что блокирующее присвоение имеет вид =, а неблокирующее <=. Хотя должно быть на оборот, т.к. неблокирующее присвоение применяется чаще, а значит форма записи должна быть короче. Типа как у азбуки Морзе, наиболее часто встречающиеся буквы имеют более короткий код.
>>345195 >? У регистров заданной длины есть ограниченный диапазон чисел, которые они могут хранить. Надеюсь, ты в курсе, что сдвиг влево на один бит эквивалентен умножению на два. Если на месте знака при сдвиге отрицательного числа влево у тебя оказывается ноль вместо единицы, значит, ты попытался выполнить действие, результат которого не помещается в регистр имющегося размера, т.е. происходит переполнение.
Братишки, поясните мне за высокоскоростные системы, как они строятся. Вот например есть оптическая линия 10Гб/с. Я подозреваю, что здесь без внешней микросхемы-сериализатора не обходится. Но даже если проект в ПЛИСине будет работать на 100МГц, то параллельная шина между ними должна быть 10Г/100М = 100 разрядов! Это норма, или я что-то не понимаю?
>>346805 В самой простой микросхеме физического уровня PHY PCIe, например (т.е. грубо говоря сериализаторе), частота входных данных может быть 250 МГц при разрядности данных 8 бит, с учетом того, что в линию PCIe x1 данные идут с кодированием 8b/10b это дает нам результирующую пропускную способность линии 2,5 Гбит/с. Это я к чему - к тому, что на 10Гбит Ethernet наверняка опорная частота повыше будет.
>>346805 У ПЛИС есть высокоскоростные трансиверы (у Xilinx это GTX, GTH). Оптические модули подключаются к ним. А внутри к ним данные идут по шине 64 бита, но это похуй уже.
>>346806 >можно встроенный трансивер >>346832 >У ПЛИС есть высокоскоростные трансиверы Прямо таки оптические? Или всё таки преобразование производится внешними элементами? А если так, то по плате тянут дорожки на которых скорости 10Гб\с?
>>346836 Открой схему любой отладочной платы с этими трансиверами и посмотри как там сделано. >А если так, то по плате тянут дорожки на которых скорости 10Гб\с? Ну да, именно так. Тябя же не смущают скорости SATA 3 или HDMI?
>>347009 >input N Нужно input [31:0] N. Вместо [31:0] можно integer, но вроде как не будет работать в древних версиях квартуса, для которых самописная функция логарифма имеет какой-то смысл.
>>347014 Сработало. Странно, конечно, с одной стороны указывать разрядность нужно, с другой откуда знать что у параметра разрядность 32, ведь это зависит от компилятора. Да сказать он должен был о несовпадении разрядности, а не о том что в параметр не может быть переменной.
>>347020 Не надо делать порты хитровыебанно параметризируемыми, они для этого не предназначены, у них задача — максимально друг к другу подходить без мозгоебли и неявных преобразований типов и разрядностей.
Вынеси N в список параметров (вместе с G), и вычисляй его на более высоком уровне иерархии, где он у тебя и ширину адреса мультиплексора будет задавать, и ширину управляющей шины (которую ты на вход адреса вешаешь).
Если ты из верхнего уровня задаёшь G, то там же ты можешь и N вычислить и передать в виде параметра, а заодно его использовать, чтобы параметризировать соседние модули.
>>347067 Как я тебе логарифм вилкой вне функции вычислять буду? Это же не просто + - * /, или взятие степени, тут цикл строить нужно. Про системную функцию $clog2() я знаю, мне интересно как с пользовательскими функциями работать.
>Если ты из верхнего уровня задаёшь G, то там же ты можешь и N вычислить и передать в виде параметра Тут принцип инкапсуляции нарушается, модуль сам должен делать необходимые вычисления. Пользователь модуля мультиплексора не обязан знать его внутреннюю кухню, он прочитал в инструкции, что надо задавать количество входов - он их и задаёт.
>>347099 >Как я тебе логарифм вилкой вне функции вычислять буду? А не надо его вычислять в описании интерфейса.
>Пользователь модуля мультиплексора не обязан знать его внутреннюю кухню, он прочитал в инструкции, что надо задавать количество входов - он их и задаёт. Алё, это не "внутренняя кухня", это пучок проводов, который торчит из модуля НАРУЖУ. Количество проводов в пучке пользователь должен знать, чтобы приколхозить к нему другой пучок проводов из другого модуля.
Это как если бы у тебя функция принимала аргумент в виде указателя на void, а во что он кастуется внутри — uint8 или uint32 -- ты бы не знал, потому что нехуй лезть во внутреннюю кухню.
>>347100 >А не надо его вычислять в описании интерфейса. Ну так скажи, как вычислить логарифм без функции?
>это пучок проводов, который торчит из модуля НАРУЖУ. Количество проводов в пучке пользователь должен знать Количество проводов в пучке пользователь задаёт сам. Ты предлагаешь, чтобы N и G он задавал сам, при этом N и G взаимосвязаны: G = 2N. А если он, в силу своей тупизны, их укажет не в такой зависимости? Всё поломается. Вот потому он должен задавать только N, или только G, остальное вычисляется автоматически. Ну и думаю понятно, что данный мультиплексор только для примера, реальная ситуация может быть намного сложнее.
>>347101 Если пользователь тупой, он сломает твой мультиплексор и при полностью соответствующих друг другу N и G. Например, при G=8 он подаст на вход выбор адреса 8, который не влезет в шину ширины N (который пользователю неизвестен), но не просто не влезет, а выдаст наружу нулевой канал, хотя пользователь, возможно, ожидал, что при невалидных входах выходы будут неактивные. В результате какой-нибудь спутник в очередной раз утопнет.
>Ну и думаю понятно, что данный мультиплексор только для примера, реальная ситуация может быть намного сложнее. В этом и проблема, ты выдумываешь на пустом месте юзкейс, который, как тебе кажется, имеет отношение к реальности, а он его нихуя не имеет. К реальности, наоборот, имеет отношение понимать, какой ширины у тебя ёбаный вход, какие сигналы он ожидает, и какие сигналы на него выдаёт присоединённый к нему источник.
>>347108 >Если пользователь тупой, он сломает твой мультиплексор и при полностью соответствующих друг другу N и G. А это уже его проблемы. Я со своей стороны сделал всё чтобы ему облегчить жизнь. >который пользователю неизвестен Инструкция на такой случай есть.
>В этом и проблема, ты выдумываешь на пустом месте Я до тебя пытаюсь донести мысль, что в реальном модуле может быть десяток разных параметров, которые увязаны друг с другом. И перекладывать на пользователя внутреннюю кухню по их вычислению это неправильно, он не должен и не может этого всего знать. Смотри те же IP-ядра.
Ну и как же вычислить правильно логарифм ты так и не сказал.
>>347136 >А это уже его проблемы. >Инструкция на такой случай есть. Ты каргокультист просто. Думаешь, что если сделать что-то похожее на самолёт, то оно привезёт продукты. Объясни мне такую хуйню: в одном случае пользователю в инструкции напишут "задай параметром N ширину порта адреса размером не меньше clog2(G)", в другом "шина, которая подключается к порту адреса, должна иметь ширину clog2(G), иначе возможны ложные срабатывания при выходе за диапазон или при недостаточной ширине шины". Почему тебе кажется, что в одном случае пользователь освобождён от вычисления clog2(G), а в другом — нет?
>Ну и как же вычислить правильно логарифм ты так и не сказал. Я нигде не говорил, что логарифм надо вычислять не функцией. Я говорил, что его не надо вычислять в объявлении порта, а что инструменты отказываются это делать — просто приятный бонус для защиты от выстрела в ногу.
>Смотри те же IP-ядра. Ни в одном из использованных мной ядер ширина внешних портов не пересчитывалась внутренними функциями.
>>347162 >Почему тебе кажется, что в одном случае пользователь освобождён от вычисления clog2(G), а в другом — нет? Я тебе в третий раз объясняю, речь не про данный конкретный случай. Это упрощённый пример для наглядности. Ты можешь на проблему шире посмотреть?
>Я говорил, что его не надо вычислять в объявлении порта А где я его вычислял в объявлении порта? Я как раз это функцией делал.
>Ни в одном из использованных мной ядер ширина внешних портов не пересчитывалась внутренними функциями. Во-первых, откуда знаешь? Все коммерческие шифрованные. Смотрел коды опенсорсных? Во-вторых, а чем они пересчитываются?
>>347291 Сравнение производится 2-х входовым элементом исключающее ИЛИ. Таких элементов нужно 1024. Потом выходы этих элементов надо объединить по И. Т.е элемент И у нас будет на 1024 входа. Естественно он будет каскадироваться из 4-х входовых, т.к. большинство ячеек в ПЛИС 4-х входовые. Предположим, что элементы выстроятся последовательно, тогда один вход занят выходом предыдущего элемента И, на 3 других можно подавать выходы с исключающих ИЛИ. У нас их 1024 шт. 1024/3 == 342. Получаем каскад из 342-ух элементов И. Умножаем это число на скорость работы элемента - получаем время срабатывания компаратора, и это без учёта задержак на интерконекции.
>>347307 Может лучше как-то так? https://pastebin.com/aYTUTBWH Хотя оно и займет вдвое больше ресурсов, но будет в 50 раз быстрее. Или я что-то не понимаю?
>>347290 >А где я его вычислял в объявлении порта? Я как раз это функцией делал. А, действительно, ты предложил сделать ещё смешнее.
>Я тебе в третий раз объясняю, речь не про данный конкретный случай. Это упрощённый пример для наглядности. Ты можешь на проблему шире посмотреть? Я тебе уже говорил — тебе только кажется в силу отсутствия опыта разработки, что этот пример отражает какой-то общий случай. Он нихуя не отражает.
>Во-первых, откуда знаешь? Все коммерческие шифрованные. Потому что порты предназначены для того, чтобы к ним что-то подключать. Поэтому они снаружи. Поэтому про них всё видно и всё описано.
>Во-вторых, а чем они пересчитываются? Верхним уровнем иерархии, где внешние порты используются для подключения модулей друг к другу.
Здесь один раз считается N, и им задаются и ширина управляющего порта мультиплексора, и ширина порта контроллера мультиплексора, и ширина шины, которой они соединяются. Посколько они все должны друг другу подходить, то параметр в любом случае должен быть рассчитан на верхнем уровне.
>>347307 >Получаем каскад из 342-ух элементов И Падажжи, зачем их лепить последовательно? Надо дерево строить. Даже из двухвходовых И глубина будет всего 10, а из четырехвходовых - 5, если не ошибаюсь.
>>347336 Вот я и написал про то же. >>347311 Только если не заморачиваться и сделать просто через ==, то даже чуть быстрее получается, наверное за счет цепей переноса.
>>343735 >2) представляю, В нумераторах так же можно самому хардкодить значения. Алсо корректно работает next_state <= cur_state + 1, если уж очень хочется. Алсо отображается по-человечески на временной диаграмме в виде, собсно, слов, а не циферок. Писать под FSM состояния с разными разрядностями - моветон. >3) привык Вивада не даст вставить модуль в блок дизайн, если он написан на SV. Только оборачивать в обычный верилог. Интерфейсы в SV отличаются от того, что ты описываешь на уровне цепей. В нём можно задавать модпорты (слейв, мастер, и пр.), писать свои таски\функции для описания транзакций, варификации и пр. А дальше текстом просто в модулях писать, что вот он использует интерфейс такой-то и в логике работать с отдельными сигналами через interf.signal. Если в интерфейс добавляешь новые цепи, то это легко делается один раз в логике описания интерфейса, без ебли с дополнительными подключениями.
>>347336 Ну это как пример. Строить будет компилятор, в Квартусе есть TimeQuest, который тебе задержки по всем путям расписывает. Он же и конечную частоту называет на которой проект заведётся.
>>347335 >Я тебе уже говорил — тебе только кажется в силу отсутствия опыта разработки, что этот пример отражает какой-то общий случай. Он нихуя не отражает. Я с тобой заебался, ты какой-то непробиваемый. Я тебе про Фому, ты мне пр Ерёму.
>>347399 >Я тоже когда читал осознал Наманяфантазировал ты себе что-то.
Твой вариант из >>347335 по большому счёту не чем не отличается от моего. Ты помнишь вообще с чего разговор начался? С этого >>347020 Основной вопрос был "как функцию написать?", а не "куда её засунуть?".
Мой счетчик ведет себя так же, как и у марсоходовцев на осциллограмах: только отпускаю ресет, по фронту первого же клока на выходе счетчика имеем новое значение. Я почему-то думал, что новое значение будет с некоторой задержкой..
>>347521 >Я почему-то думал, что новое значение будет с некоторой задержкой.. Тебе надо понимать, что за железо ты написал. По фронту счётчик умеет только класть в себя "текущее значение + 1", чтобы положить в себя 0, он должен где-то взять 0-1, где он его возьмёт?
Если во время резета ты наполнишь счётчик не нулями, а единицами, то после первого клока он у тебя переполнится и выдаст как раз ноль.
>>347522 Но я не могу понять, какого фига по фронту первого же клока на выходе появляется единица. Разве d-триггер не должен вносить задержку в 1 такт?
>>347533 >Но она же не может перейти на выход мгновенно? Именно так она и делает. Всё, что находится на входах триггера в момент фронта, мгновенно оказывается на выходе.
>>347534 Потому что у второго триггера на входе ноль, вот он и выдаёт ноль. А у первого на входе единица.
>>347533 В реальном устройстве задержка разумеется есть, но она может быть очень мала. Одна пикосекунда тебя устроит? Тебе рановато браться за верилог и ПЛИС. Изучай основы цифровой схемотехники. Начиная со схем элементов И-НЕ и ИЛИ-НЕ.
>>347536 При цепочке триггеров именно из-за этой пикосекунды расхождения с фронтом клока и получается отставание данных на 1 такт. Похоже повторять теорию надо тебе.
>>347538 Не пизди, маня, и не хами тем, кто тратит своё время, пытаясь образовывать тебя забесплатно. Второй триггер в момент клока видит на входе ноль потому что единица с первого не успевает до него дойти по проводу, там время распространения сигнала — порядка наносекунд.
>>347541 Сорян, если задел тебя. Но я именно так и понимал: Первый триггер дает некоторую задержку и данные с его выхода поступают на вход второго триггера позже, чем приходит клок, из-за этого второй триггер захватывает данные которые были в предыдущем состоянии на выходе первого триггера. Но почему симулятор вообще не показывает эту задержку, она же есть, как мы вместе выяснили и она влияет на остальную логику!
>>347543 Это называется "логическая симуляция". Условно принимается, что триггеры в момент прихода клока берут то, что висело у них на входе ДО фронта, и выдают это мгновенно на выходе ПОСЛЕ фронта. Так быстрее и не нужно знать физические параметры реальной схемы.
>>347546 >>347545 >>347541 Спасибо вам, что попытались навести порядок в моей дурной голове. Мне правда стыдно, что я такой говнюк, Анон нынче токсичный пошел и я видимо набрался этого говна.
Помогите идеями решения dsp-задачи. Нужно сделать генератор прямоугольных импульсов, у которого нестабильность частоты, ее распределение и уровень задается внешней случайной функцией. Которую (случайную ф-ю) тоже нужно реализовавть на fpga.
>>347678 Ну да, зачем для такого использовать ОС? В ардуинах тоже ОС обычно не используется. Делай все на прерываниях, для частот около нескольких килогерц явно никаких сложностей не возникнет.
>>347689 Что не так? У nios и microblaze набор команд полный по Тьюрингу, значит они могут посчитать любую функцию, вопрос лишь в скорости. Причем о требуемой частоте меандра ничего не было написано.
>>347694 Куда уж "чище", это же не zynq или cyclone v со встроенным армом. Ну ладно, тогда еще придерусь к "случайной функции". Такого не бывает, может быть случайный (псевдослучайный) процесс или последовательность.
Возьми цифровой фильтр и подай на него М-последовательность, будет тебе на выходе псевдослучайная последовательность с заданными свойствами.
>>347698 >Очевидно же, что я говорил о псевдослучайной ф-ии. В литературе по радиотехническим сигналам этот термин не используют. И ты тоже не используй. >Как "модулировать" ей генератор? Фаза - это интеграл от частоты. Соответственно можно просто интегрировать, хотя это будет не оптимально по ресурсам.
Что за херня началась на ютубе? Какое тело начало обсирать тех, кто несет знания в Мир? Это про канал о ПЛИС товарища Jack0v. "a6736715921 Ты делаешь абсолютно бессмысленную работу, снимая эту хрень. Намного проще и быстрее прочитать учебник. А самое главное, ты заебал уже рекламировать свои видосики на харкаче."
>>348691 Круто, что в какой-то деревне изучают мипс процы. У меня даже в институте такой хуйни не было. (Был сразу 8086, но на таком уровне, что пизда)
>>349114 Купишь с ебая - проскочит. С фарнела, дижикея заворачивает как сам магазин (ибо ты потенциальный разработчик оружия для кровавого режима) так и рашкотаможня. Если заказывать то через частных посредников.
>>349162 >в рахе как то их продают? Так прямого запрета на ввоз и нет. Но есть куча нюансов что американский поставщик должен соблюсти ограничение на поставку определенных технологий определенным недостранам, так же как и на таможне рф нужно все грамотно оформить. >>349164 >боксбери и шопотамы С этими вообще все плохо - там при заказе ты сам заполняешь наименования товаров, ссылку на магазин и посредник по этим данным потом сам все растомаживает. И наименование gift electronics они не примут, а ко всему остальному если это не потребительская техника будут вопросы. >чувак-физлицо This. Самый беспалевный способ пересылки это обычный мелкий пакет. Их проверяют очень выборочно, если конечно они сильно не выделяются по заявленной стоимости, весу или на рентгене.
>>348695 Я давно ищу с кем бы объединиться и вместе что-то пилить, но здесь народ слишком угрюмый как автор учебника по цифровой схемотехнике, а ИРЛ нет людей со схожими интересами. Короче кидай фейкопочту, либо пиши мне: ehidniykolobok@yandex.ru
Я просто на стену уже лезу от того, что не могу найти себе задачу, может вместе что придумаем?
>>349203 >С этими вообще все плохо Их требования зависят от способа доставки. Если отправлять обычной почтой, то можно писать без подробностей. Я без проблем заказывал через них некоторые микросхемы, в том числе и ПЛИС. Не стратиксы конечно, но даже в MAX 10 логических элементов в два раза больше чем в лучших отечественных ПЛИС.
>>350931 > нет видео-выхода Припаяй сам, делов то. Это как раз несложно. Хуже другое — там нет FMC, только гребенка. >не могу найти себе задачу Радиоприемник можно сделать для сигналов с большой базой. Да вообще много чего.
>>350941 Припаять выдеовыход - это же колхозинг будет. Не говорю уже про hdmi. FMC нет, еще один минус. Но готовые fmc-мезонины стоят сотни нефти, дороже этой борды.
Алсо, на али попадались такие же кинтексы как на этой борде по 60 баксов за камень. Хоть с кем-то объединяйся и разводи плату под свои нужды.
>>350943 >колхозинг Ты ноешь как... В самом деле, там гребенка есть, в чем проблема втыкать туда не слишком быстрые АЦП/ЦАП? Недостаток только в том, что крепежных отверстий толком не предусмотрено. >SMA разъема нет. Даже если он там будет, что толку? В таких платах они обычно только для входа/выхода тактового сигнала.
>Хоть с кем-то объединяйся и разводи плату под свои нужды. Для начала необходимо эти нужды как-то оформить. Сам же писал что идей нет. И почему именно кинтекс? Можно взять 10M50 в корпусе TQFP и развести под свои хотелки двухслойную плату. Пусть 10M50 в 10 меньше чем XC7K420T, но этого вполне может хватить.
>>350956 Ну давай пофантазируем. Почему зайлинкс а не интел это вопрос слишком провокационный. Если доступна жирная плисина, по сладкой цене, почему бы не использовать?
Что я хотел бы видеть в борде: PCI-E 1GE не менее 2х штук. SFP+ пару штук, просто чтоб был DDR3 1G HDMI in HDMI out SATA
>>351020 Перестань грубить. Что в моих хотелках охуевшего? Половина этих интерфейсов не требует какой-либо обвязки, только разъемы, которые, к слову, можно устанавливать по желанию.
https://pastebin.com/D89u19NZ Кое-как сделал деление. Делить нужно 16..22 разрядное число на 8..12 разрядное один раз в несколько миллисекунд. Ответ нужно получить за время не более около сотни тактов. Как можно оптимизировать это по занимаемым ресурсам, при этом сохранив прежнюю тактовую частоту?
>>351120 >Глянь на high radix division Посмотрел, по занимаемым ресурсам оно должно быть хуже. Или я что-то не понял. >Обычно есть в корках Для флексов, на которых это тоже должно будет работать, есть только lpm_divide. Какой там используется метод я не разбирался, но по ресурсам оно не очень. Переписал вот так. https://pastebin.com/uz1ELPcg По тактовой частоте почти не ухудшилось, зато по ресурсам стало существенно лучше.
Здравствуйте , радачилы, есть cypress psoc 5lp. хочу на блоках UDB (аналог плисы) сделать частотомер. два раза создавал тред, но упрямый бот закрывает его и отправляет ARM. Но может тут помогут, хотя не знаю как ARM и ПЛИСовые блоки могут быть связаны. Короче есть проблема, за первую секунду счётчик считает странное число, которое меняется примерно на 2млн. В крейторе завожу частоту в 12 МГц и секунду делаю тоже с 12 МГц.
>>351573 Измерять резисторы с такой точностью у тебя хотябы есть чем? А то цену на такое оборудование ты ебать будешь еще больше. Можно из параллельных резисторов разного номинала набрать, типа резистор 10ком и параллельно ему подстроечник на 10ком
>>351624 Писал бы ты на верилоге, может чем-нибудь помог. А так даже толком не понятно что именно ты сделал. Но вообще-то, для практических целей, нет смысла делать простой частотомер на этих psoc или плис. >упрямый бот Да, редкостный уебок.
>>351573 >На чём можно дёшево напрограммить резисторных матриц? Я ебал цены на резисторы с точностью 0,002%. ЦАП сделать хочешь? Забудь, R-2R от 8 бит с норм точностью реально получить только в интегральном исполнении, где ТКЛР и ТКС резисторов на кристалле равны.
>>351625 ТКС хорошего подстроечника лежит в порядках десятков-сотен ppm. А для такой задачи нужен ТКС в районе десятых долей ppm.
>>351627 Это С2-29 или PTF56 какие нибудь? Тогда да. Так то есть резисторы с ТКС в десятые доли ppm, и долговременной стабильностью в единицы ppm, но вот их стоимость...
Не проще ли взять интегральный ЦАП за 1000 рублей?
>>351727 Пиши лучше на верилоге. Пока могу сделать только пару замечаний. 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; эти защёлки появляются?
>>351914 >Как можно присваивать комбинационной схеме начальное значение (Y = 0;)? В стандарте верилога нет такого понятия как комбинационная схема, это просто переменные с точки зрения стандарта. Если не касаться синтеза, то у тебя при изменении входных сигналов мгновенно производятся какие-то вычисления и результат остается в Y. Для синтеза считай что окончательное присвоение будет в самом конце always. >Почему if без ветви else? В этом же случае компилятор для комб. схем будет ставить защёлки, а их нет. Почему, если убрать Y = 0; эти защёлки появляются? Разберись как оно работает не касаясь синтеза, только при функциональной симуляции. Разберись, в каком случае модуль будет обладать памятью, а в каком нет.
>>351987 Ходит слушек что "always @*" - это комбинационная схема, тк задействованы все сигналы, если явно указано указан сигнал или сигналЫ? с фронтом - это уже схема с памятью.
>>351998 always @* можно превратить в схему с памятью, простейший способ — использовать if без else или case без default.
>>351914 >Почему if без ветви else? >Почему, если убрать Y = 0; эти защёлки появляются? Потому что этот Y = 0; и есть своего рода else. Код описывает такую логику: if (!X) Y = 0+1'd1; else Y=0;
>>351987 Не знаю, как тебе объяснить не пересказывая целую главу из учебника. Как уже советовал, для начала абстрагируйся от схем и прочего. Считай что описываешь только поведение схемы, собственно так оно и есть, до какой-то степени.
Попробую перечислить основные моменты из учебника, которые ты мог пропустить. 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. Это и есть память.
>>352008 >а) X изменился на 0. Прибавили к Y 4 раза по 1. Немного добавлю, а то может не все понятно будет. Если в начале Y был 0, то по первому спаду X, Y изменится на 4. А по второму опять на 0 (переполнение).
>>352007 >always @* можно превратить в схему с памятью, простейший способ — использовать if без else или case без default. Ну такая себе память. Памятью её можно назвать только формально. Скорее это способ компилятора разрешить ситуацию отсутствия ветви в условии. Эти защёлки даже синтезируются на комб. логике. Надёжно такие схемы работать не будут.
> Код описывает такую логику: >if (!X) Y = 0+1'd1; else Y=0; Да вот не совсем. В этом случае, при Х == 1 весь Y обнулился бы. А он хранит своё значение, до тех пор пока Х не будет равно 0.
Кстати да, ошибочка у меня в коде, должно быть так: if(!X) Y = Y + 1'd1;
>>352008 >б) X изменился на 1 Х то многоразрядный, у меня ошибочка в коде, индекс у Х должен меняется в цикле: if(!X) Y = Y + 1'd1; Схема подсчитывает количество нулей Х.
>>352016 Похоже при изучении всего этого ты пропустил что-то важное, а вот что — х.з. Попробуй все же абстрагироваться от триггеров и схем. Тем более что верилог не для синтеза первоначально разрабатывался, а для моделирования. Можешь попробовать взять моделсим и посмотреть там в режиме отладки, как этот цикл выполняется по шагам.
>Ну такая себе память. Памятью её можно назвать только формально. Любой триггер обладает памятью, на то он и триггер. >Эти защёлки даже синтезируются на комб. логике. Надёжно такие схемы работать не будут. Если для ПЛИС, то да. Но простейший асинхронный RS-триггер сам по себе вполне работоспособен.
>>352016 >Да вот не совсем. В этом случае, при Х == 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.
>>352023 >Любой триггер обладает памятью, на то он и триггер. Есть триггер, как законченный функциональный узел, а есть триггерная схема, это когда в комб. логике наделали обратных связей. Да, триггер тоже можно рассматривать как комб. логику с обратными связями, но он проверен на отсутсвие зависаний, подогнан и скомпонован так чтобы не сбоить.
>Если для ПЛИС, то да. Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов.
>>352023 >>352025 >if (!X1) Y=Y+1; else Y=Y; else Y=Y; Тут как бы тоже память требуется.
>>352031 >Тут как бы тоже память требуется Нет. Память требуется, чтобы хранить состояние, установленное в предыдущем событии (предшествующим по времени вызове блока @(*) ). Если мы имеем дело только с состояниями, создаваемыми в текущем событии, то ты никакую память на плисине для их хранения не выделяешь, ты просто описываешь в несколько действий, как у тебя комбинационные логические функции вычисляются. Чисто для удобства написания кода.
>>352031 >Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов. Как вариант — код, описывающий асинхронные триггеры, может быть для тестбенча.
>Тут как бы тоже память требуется. Можешь это оценить иначе. Возьми свой модуль и, временно забыв про код модуля (выкини его из головы!), попробуй написать тестбенч, в котором будет видно, влияет ли на выходной сигнал предыдущее состояние или нет. Если не влияет, то значит что внутри нет триггеров или они не задействованы.
>>352031 >Конечно для ПЛИС. Будто здесь сидят разработчики ASIC-ов. Верилог всё равно один и тот же. Тебе надо думать не о том, как защёлка создаётся на плисе, а пытается ли твой код использовать инфу с предыдущего состояния или нет.
>>352472 Сам писал, пока vhdl и verilog изучал. С не совместимой ни с чем системой команд. В результате что-то писать на ассемблере было весьма уныло, а главное бессмысленно.
>>352525 Если брать 32-х разрядные, то наверное стоит смотреть на OpenRISC, MIPS, RISC-V, для них много реализаций с открытым исходным кодом. Сам думаю под одно дело приспособить picorv32. Но у него под регистровые файлы используется минимум двухпортовая память, поэтому для флексов будет плоховато. Хотя однопортовый регистровый файл это уже не регистровый файл получается.
>>352529 А как вообще выглядит работа с таким процом? Тот же микроблейз возможно отлаживать череж жтаг. Недавно ARM выкатили свои ядра под Xilinx, но для работы с их процом нужен внешний сука программатор. Ну и код ядра само собой зашифрован.
Что из перечисленного тобой удобнее всего отлаживать и лугче поднять?
>>352753 >Тот же микроблейз возможно отлаживать череж жтаг. Нинужно, есть БОЖЕСТВЕННЫЙ ламповый принтф через уарт в чорную консоль. А вообще никто в теории не мешает прикрутить жтаг к чему угодно, это же открытый стандарт.
>>352776 >А вообще никто в теории не мешает прикрутить жтаг к чему угодно, это же открытый стандарт. Что-то даже не представляю как это сделать. Думаю если было бы так просто, были бы готовые решения.
>>352789 >Что-то даже не представляю как это сделать. Можно начать с чтения стандарта и доков на гнутый дебаггер, какая ему инфа о состоянии выполняемой программы нужна. А дальше само пойдёт. Хотя что-то мне подсказывает, что это задача урованя запила бэкэнда гцц под свою архитектуру.
Я правильно понял, что этим челикам нужно всего лишь запилить примеры использования IP-ядер под их железо? Они там что не знают что можно example design скачать?
Анон, подскажи, где можно скачать QuestaSim последних версий для Linux. Я знаю, что он есть на FTP электроникса, но проще выучить китайский и прошерстить eetop чем получить доступ туда. Сил моих нет симулировать без ассёршенов.
>>353590 Ты про ассершены или SV в целом? Любой ассёршен можно заменить initial блоком с условием, но зачем использовать костыли, если для этого есть специальная конструкция. Для меня SV в первую очередь это интерфейсы, классы и межпроцессная коммуникация. Я не уверен на счёт того, что последнего нету в обычном Verilog (mailbox, semaphore). В целом очень удобно под рукой иметь интерфейс, скажем, AXI4, который помимо простых соединений, можно использовать для генераций транзакий, дёргая таск внутри интерфейса (естественно только для верификации).
Господа аноны, столкнулся с проблемой или своей тупостью. На плате стоит cyclone V и ddr3 от самсунги. Трабла в том, что при очередной перекомпиляции проекта рандомно отваливается доступ к ddr-ке из ниоса. Проблема решается сменой настройки параметра "ODT Rtt nominal value" с RZQ/4 на ODT Disabled или наоборот. С чем связяно такое непотребное поведение железяки?
>>353683 Ну ODT - это согласование нагрузки на ддр. (Гугли СВЧ, имеданс и все такое). Вряд ли с отладкой что-то не так, может констреинты не задал, вот у тебя и тайминги рандомные получаются или еще какая хуйня.
Пацаны, у меня у одного адовые проблемы с попытками работать не Вивадо 2018.3? Оно же не работает сука нихуя. Вернулся на 2017.4 — как глоток свежего воздуха. Или у меня что-то с руками? Такое ощущение, что кривое всё — от инструментов до отдельных айпи-корок. Я подозреваю, что у них там сейчас большой переезд на новый бекенд или что-то такое, потому и поддержку соляры недавно дропнули, и 32-битные либы больше не требуются, как раньше, но сука, не настолько же.
>5. Специфика рынка труда отвратительная - тут есть море спецов с стажем в 20-30 лет, они тебя сожрут и по скорости и по качеству а т.к. кредиты и семьи то вкалывают за минималку по рынку. Так же кодить под плис проще чем под веб - нет бардака с стандартами и каждый год новый бред не выходит и не нужно переучиваться, что сделано 10 лет назад или 20 нормально взлетит и не поперхнётся. (это не СНГ)
>6 - разрешения есть, всё равно что жопа защищена бронебойной плитой - говнокодь и пользуйся поделиями студентов практикантов во все поля - уволятся с голода - следующие придут, это везде так, не в едином СНГ.
Подписываюсь под каждым словом. Вы еще в погроммисты не перекатились?
>>355027 Да понятно, что никак не заработает. После импорта проекта и обновления корок всё превратится в кровавое месиво, там проще выкинуть и сделать с нуля, чем разбираться, где что отвалилось. Я на другую версию вынужденно перехал, потому что старую ревизию встраиваемого модуля делать перестали, а новая не работает с вивадо, которой я пользовался.
ПЛИСаны, тупой вопрос: в VHDL выражение вида [CODE]c <= signed(a-b)[/CODE] (сигналы a и b типа unsigned из numeric_std, ширина всех трёх сигналов одинакова) нигде подлянки не устроит? Тесты в GHDL вроде ничего подозрительного не показывают.
>>355994 Ну так сумматор (или вычитатель) для натурального двоичного кода и сумматор для дополнительного кода это одно и то же устройство. Если у тебя есть какие-то сомнения в том что именно делается в VHDL, то можешь заглянуть в код самого numeric_std.
Плисаны, поясните, почему использовать встроенный симулятор это моветон? Какой моделсим поставить под блеваду 2017.4? Какие вообще фишечки есть в моделсиме и нет во встроенном симуляторе?
>>357112 Нормальная поддержка Systemverilog моделсимом - у меня такая мотивация была, т.к. тестбенчи стали усложняться. С 16 вивады пользуюсь 10.4с, брата нет, зависимость есть.
>>357164 Я слышал, что моделсим дает возможность подрубать функциональную модель какого-нибудь сложного протокола типа саты или еще что-то подобное. Это правда? Как это вообще выглядит?
>>357196 Я думаю, что ты имеешь в виду интерфейсы SystemVerilog, которые только ModelSim и QuestaSim поддерживают. Но тебе всё равно придётся описать протокол, хоть и несинтезируемой частью.
>>357553 По моему это мультиплексор, соединенный с параллельным регистром. Впрочем, то же можно сказать про обычный сдвиговый регистр с параллельной загрузкой. Нарисовать схему такого на отдельных триггерах и мультиплексорах можешь? Значит "законно".
Работаю программистом и в течение нескольких лет хочу вкатиться в ПЛИС для перспектив. Какие книги для этого надо прочитать? Какую FPGA и программатор лучше заказать с доставкой в Россию?
>>357748 Лучшая книга для новичков, только на английском Pong Chu FPGA Prototyping by Verilog Examples В качестве платы могу порекомендовать DE10-nano или Zedboard в зависимости от того с какой фирмой ты хочешь научиться работать в первую очереь, но, лично мне, больше импонирует DE10-nano
>>357752 Учти что они устарели. Причем проблема в том, что у них для новых микросхем уже другая IDE. Поэтому для обучения не стоит брать. Вообще для обучения платы не особо то нужны.
>>357758 Если дорого, то возьми что попроще на алиэкспрессе. 1400 рублей https://aliexpress.com/item/EP4CE6/32812957811.html Да, там на плате ничего толком нет, но для начала сойдет. Потом, если потребуется, уже с большим пониманием выберешь что-нибудь более сложное.
>>357752 Не обращай внимание на эту плату и этот кристалл, в этой книге много хороших примеров на языке Verilog. С их помощью ты уже сможешь реализовывать свои проекты хоть на Xilinx, хоть на Intel. DE10 стоит 120$ если заказывать от производителя, но это кладезб свистоперделок, можно докупить камеру D8M и пилить видеообработку, т.к. есть hdmi выход. Примеры того как те или иные проекты реализовать на этой плате идут вместе с платой (размещение пинов, сборка и т.п.).
>>357906 >можно докупить камеру D8M Или берешь что-нибудь попроще вместо DE10. Приделываешь простейшие восьмиразрядные АЦП/ЦАП. Для получения частоты пикселов паяешь ГУН на варикапе и инверторах, на ПЛИС делаешь частотно-фазовый детектор и уже можно подключать аналоговую камеру типа видеоглазка, а результат смотреть на телевизоре. Или ты скажешь что без памяти хотя бы под один кадр ничего не сделать?
>>357908 Где я обмолвился про память? Зачем делать усаревшее аналоговое говно, если за тебя поставили hdmi / mipi декодер? Ты наверное скажешь, что деграданство, всё за тебя поставили, тогда купи Zybo Z7 и ебись сам с декодером CSI2 и HDMI. Ну и сравнил ты конечно аналоговый глазок и 1080p30. Короче, не понимаю я твоей претензии и тезиса.
>>357952 В начале речь шла про обучение >>357748 Потом тот анон упомянул о деньгах >>357758 Вот я и написал, как можно сильно сэкономить и получить тот же опыт. Разница в стоимости раз в 5 получится, для кого-то это может быть весьма существенно. К тому же в комплекте получишь АЦП/ЦАП, на которых что-нибудь еще можно будет сделать.
>mipi >CSI2 Это в основном для игрушек. В "нормальных" камерах чаще используется Camera Link или ethernet. >устаревшее аналоговое говно Может оно устарело, но еще долго будет использоваться из-за того что дешевле. В том числе коаксиальный кабель дешевле и его проще соединять, если нужно тянуть на десятки/сотни метров то получится существенная экономия. >аналоговый глазок и 1080p30 Зачем вообще для обучения нужна камера с большим разрешением? Можно взять аналоговый глазок с AHD, если жить не можешь без чуть большего разрешения.
>>358030 Нет. В асме есть мнемоники, макросы, дефайны, т.е фишечки которые облегчают написание и чтение кода человеку. А машинный код это уже непосредственно содержимое памяти программ.
>>358057 Да. Ты же не будешь спорить, что каждая команда асма означает отдельную операцию в машинном коде? Всегда писали на асме(по сути, на машинном коде), только если раньше мнемоники заменяли по справочникам, сейчас мнемоники заменяет компилятор машинным кодом простой заменой.
>>317040 >Похуй на зп, пока твой мозг пропитан говном и юношеским максимализмом, со временем это пройдет, но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь. Cравнил. По ПЛИС - 60 вакансий. По микроконтроллерам - в 3 раза больше вакансий. По джаве - в 39 раз больше вакансий. Но, имхо, ты не учитываешь, что на джаве и конкуренция будет больше человек на место, и срок твоей работы будет меньше(каждый год выпускают новые обновления и фреймворки) и в 30-40 лет ты рискуешь быть выплюнутым на улицу, когда тебя заменят молодым стремящимся джуниором.
>>358072 >что каждая команда асма означает отдельную операцию в машинном коде? Тебе тот анон выше писал же: >макросы, дефайны Они вовсе не так тупо подставляются. Например, какой отдельной операции в машинном коде соответствуют в GNU ассемблере вот такие строки: >.section .text >.equ FLASH_BASE, 0x40022000 >.set i,0 >.rept 256 и прочие директивы? В некоторых ассемблерах, вроде как, макросы вообще полны по Тьюрингу. Соответственно там на макросах можно хоть компилятор сишечки сделать.
>>358075 >не учитываешь, что на джаве и конкуренция будет больше человек на место Вообще не факт. >>358075 >в 30-40 лет ты рискуешь быть выплюнутым на улицу, когда тебя заменят молодым стремящимся джуниором А с fpga типо не так? В любой сфере, если сидеть на жепе ровно уйдешь на свалку.
>>317040 >но чтоб не было поздно я дал тебе бесплатный совет - просто сравни количество вакансий и вилку зп на hh.ru по fpga и java и все поймешь. Джава когда-нибудь помрет, а за FPGA по мнению некоторых людей будущее следующих 20-30 лет. Я сам джавист, если что.
>>358089 >Джава когда-нибудь помрет Ей это пророчат уже хуй знает сколько. Я еще в школу ходил, так говорили, а сейчас эта джава в каждом утюге, но находится кто-то кто повторяет эту мантру.
>за FPGA по мнению некоторых людей будущее следующих 20-30 лет Не нужно слушать всякие вангования, 640 КБ хватит всем, ололо нужно заниматься тем, что востребовано здесь и сейчас и за что платят деньги.
> Я сам джавист, если что Работал ли ты фпгашником? Ты хоть понимаешь в какое болото ты зазываешь людей?
>>358090 >Работал ли ты фпгашником? Ты хоть понимаешь в какое болото ты зазываешь людей? Нет, не работал. Расскажи. Мне нравится системное программирование и железо, но я работаю бэкэндером, потому что это востребовано и мне платят за работу здесь и сейчас.
>>358084 >>не учитываешь, что на джаве и конкуренция будет больше человек на место >Вообще не факт Не знаю как на джаве, а плисоводов по отношению к прогерам сильно меньше, потому они всегда в дефиците, хотя при этом им и не доплачивают. Ну и плисовод всегда может стать джава-кодером, а вот на оборот сильно навряд ли. >А с fpga типо не так? По большей части не так. Всё зависит от решаемых задач.
>>358090 >нужно заниматься тем, что востребовано здесь и сейчас и за что платят деньги. Какое-то потребительское у тебя отношение.
>>358092 >>358091 Это все конечно хорошо, но почему вдруг подняли тему годовалой давности!? И что интересно это совпало по времени с этим >>358030 Такое впечатление, будто в тред зашел какой-то анон из /pr/ только лишь затем, чтобы написать какой-нибудь ерунды.
>>358091 >Нет, не работал. Расскажи. Вот тут в общих чертах специфика >>355025 Основная проблема в том, что 99% вакансий это околооборонка со всеми вытекающими.
>>358092 >Ну и плисовод всегда может стать джава-кодером, а вот на оборот сильно навряд ли. Не соглашусь, это работает в обе стороны. Бывает накодируюсь на hdl, появляется программерская задача и я сажусь туплю, пока не переключу мозг на парадигмы программирования. Аналогично и программисты не сразу осваивают hdl, но в итоге осваивают! На хабре попадался проект - эмулятор какой-то консоли, так вот его запилил человек, который до этого не имел дело с FPGA.
>Какое-то потребительское у тебя отношение Нужно зарабатывать на жизнь, кормить семью. А если у тебя лежит душа к плисоёбству никто не запрещает пилить свой pet project.
>>358094 >Аналогично и программисты не сразу осваивают hdl, но в итоге осваивают! Далеко не все. Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС. + к этому всякие гонки сигналов в КС, межклоковые переходы и прочие специфические вещи.
>никто не запрещает пилить свой pet project Разъясни.
>>358097 >Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС. Двачаю, в микроконтроллерах примерно также. Джава программисту будет трудно понять, как одновременно работают 4 таймера, 2 канала uart, ацп и цап.
>>358123 Чего там понимать-то? Не преувиличивай. По сути мк это как два пальца об асфальт. Просто мозги надо освежать во время, а то начнешь тормозить.
>>358097 >Многие так привыкают к тому что инструкции исполняются последовательно, что просто не могут в параллельные процессы на ПЛИС. А как же многопоточные приложения? >к этому всякие гонки сигналов в КС, межклоковые переходы и прочие специфические вещи. Ну согласись, никакой высшей математики в этом нет. Достаточно придерживаться ряда элементарных правил и все будет работать как в симуляторе.
>>никто не запрещает пилить свой pet project >Разъясни. А что разъяснять - работаешь с той технологией за которую больше платят, а в свободное время пилишь то что тебе интересно, например FPGA.
>>358179 Очень плохой совет. На алиэкспрессе оно стоит 13140,04 руб, в электронщике 14540 рублей, а терасик продает их по $150. Наверняка напрямую у терасика будет намного выгоднее, даже с учетом доставки. Даже если покупать в диджикее и везти через посредников, и то дешевле будет чем с алиэкспресса. Но я бы не советовал покупать эту плату. ПЛИС мелкая, память снаружи тоже мелкая приделана. VGA там и то через R-2R сделан. Даже HSMC нет. Китайцы продают аналогичные платы намного дешевле. За те же деньги китайцы продают плату с XC7K420T, там LE/LC в 10 раз больше чем в циклоне на плате DE0-CV.
>>358142 >pet project Если не секрет, то что-нибудь интересное на ПЛИС сделал?
>>357963 Что ты имеешь в виду под нормальной камерой? MIPI CSI-2 это интерфейс сенсора так же как и LVDS, а то что ты назвал. это интерфейс передачи данных по на расстояние с готовой камеры. Я как такой тезис могу сказать, говно этот ваш камерлинк, вот 12G-SDI тема. Не путай квадратное с мягким. Никто не делает приёмник видеосигнала с камер на ПЛИС, делают камеры, в которых ПЛИС принимает и обрабатывает сигнал с сенсора, а потом заганяет в этот ваше эзернет/sdi/AHD хоть сожми и по i2c отправляй
>>358137 Скорее наоборот, от того что плисоводов мало то и задач решаемых с помощью ПЛИС мало. Там где можно применить ПЛИСину суют МК и городят на нём огород.
>>358142 >А как же многопоточные приложения? Если правильно помню, то они между собой согласуются через какие-то семафоры, светофоры. Это не то же самое. Команды в программе всё равно исполняются последовательно. Да, и в МК есть таймеры, ЦАПы, АЦП и прочая периферия которая работает параллельно. Но там она есть как данность. А когда возникает необходимость самому наделать счётчиков, регистров, автоматов, которые все должны работать одновременно и согласованно, то тут у многих начинается затык. Несколько раз видел как прохеры несмогя в HDL пытаются перейти на Ниос, который чтобы запустить тоже нужно постараться, но соснув и в этом, бросают изучение ПЛИС вообще.
> работаешь с той технологией за которую больше платят Много платят элитным гей-шлюхам. Не то чтобы я был в курсе, просто предполагаю. Так чтож теперь, в гей-проституцию податься чтоле?
>>358217 >Никто не делает приёмник видеосигнала с камер на ПЛИС Зачем брать "сенсор" не для встраиваемых систем? Что мешает сделать в отдельной коробке устройство обработки на FPGA, к которому будут подключаться готовые камеры?
Значит, если делать обработку видео на FPGA, то непременно нужно брать отдельно матрицу, разрабатывать для нее корпус, выбирать объектив и прочее?
>сенсор Не стал бы я такое называть сенсором. Ладно еще КМОП или ПЗС матрицу так назвать. Но у тебя готовая камера, уже с объективом. Кстати, а ты хоть в курсе что все матрицы сами по себе аналоговые? Конечно бывают матрицы с АЦП на одном кристалле, но сама матрица все равно аналоговая.
>>358217 >ПЛИС принимает и обрабатывает сигнал с сенсора, а потом заганяет в этот ваше Но зачем для этого ПЛИС? Какой-нибудь микроконтроллер cypress вполне справится, да еще потреблять меньше будет. >sdi/AHD Тем более ПЛИС ни к чему, с ПЗС матрицы и так аналоговый сигнал идет, только синхры подавай.
>>358226 А если тебе нужен нестандартный алгоритм обработки сигнала (какой-нибудь хитрый билатеральный фильтр или нелинейная интерполяция), то ты жиденько обосрёшься > ПЗС только для небольшого разрешения или небольшого фреймрейта, ограничение на скорость переноса заряда (~100 МГц) > sdi > аналоговый сигнал норкоман чтоле
Вот не повреишь, большинство видеообработки делается именно на видеопроцессоре внутри камеры (например у нас в компании этот видеопроцессор делается на ПЛИС). Это дебайеринг (демозаика), шумодав, первичная цветокоррекция, коррекция геометрических искажений, интерполяция битых пикселов, повышение контрастности и многое прочее.
>сенсор
У нас называют ПЗС-матрица или КМОП-сеноср, т.к. ПЗС уже лет 5 не используем, то употребляем "сенсор"
>>358236 Это все хорошо. А теперь задумайся, кто, где и зачем использует камеры, которые делают "у нас в компании"? Думаешь обработка на этом закончилась?
>>358244 мимо >>358239 Не понимаю к чему ты это, я знаю что такое хост-сайд обработка. Но у нас предметом обсуждения было, что на ПЛИС вообще ничего обрабатывать не надо, и можно гнать сырой сигнал с сенсора.
>>358207 >Если не секрет, то что-нибудь интересное на ПЛИС сделал? Не, у меня перманентное творческое полшестого после 25 началось. Вообще нет идей, если предложишь свои буду благодарен!
>>358207 > Наверняка напрямую у терасика будет намного выгоднее, даже с учетом доставки У него таки появилась доставка? Или как было FedEx only, так и осталось?
Тяжело будет вкатиться в ПЛИС, если ты специалист по программированию микроконтроллеров (AVR, PIC, STM, i8051)? И можешь в цифровую и аналоговую схемотехнику хотя бы на уровне Electronic Workbench(дешифраторы, триггеры, цап, аца и т.д.)?
>>358721 >обычные мк и ARM Теперь я вместе с ARM, он необыкновенный! Он МК отменный, молюсь я на него!
>>358791 Все одновременно в голове не поместится? Вообще-то часто используют софт-процессоры (microblaze, nios), еще бывают FPGA с готовыми процессорами, такие как Zynq и Cyclone V. Сложность зависит от того что именно делать. Можно делать что-то простое на FPGA, например набор согласованных фильтров, которые будут занимать много места, но будут просты по своей структуре. Или кто-то пишет (к примеру) linux (uclinux) какой-нибудь, который вполне работает на микроконтроллерах. Поэтому в этом контексте о сложности говорить нет смысла.
Я вот вкатился в разработку ПЛИС, прочитал статью на хабре https://habr.com/ru/post/281525/, прочекал все пункты и теперь работаю, вроде всё норм, но вот иногда вылезает незнание некоторых основ. Например ВНЕЗАПНО оказалось, что плис не сохраняет прошивку и ей надо ещё ПЗУ для хранения прошивки. Где можно прочитать про такие не очевидные вещи для новичков (я хоть уже не новичок, но этого я не знал). Ещё хочу разобраться с синтезом и разводкой, когда и какие настройки компилятора использовать, сейчас оставляю всё по умолчанию.
>>358835 >надо ещё ПЗУ для хранения прошивки Можешь взять MAX 10, у которых ПЗУ внутри. Если конечно их хватит по объему.
>прочекал все пункты А я из всего того не знаю SystemVerilog и по верификации маловато знаю и умею. >я хоть уже не новичок, но этого я не знал Это сильно. То есть не открывал device handbook (user guide). Да это вообще в любом учебнике написано, хоть у Зотова. По моему без таких базовых знаний ничего внятного сделать не получится. Возможно даже что ты проебал просто основы цифровой электроники, все эти элементы Пирса, триггеры всякие там.
>>358844 >А я из всего того не знаю SystemVerilog и по верификации маловато знаю и умею. Я знаю Verilog. Мне кажется особой разницы нет на каком языке писать. Но вот понимать что написано на других языках это надо обязательно - мне пару раз приходилось доделывать чужие проекты, один на VHDL. другой на AHDL. >>Это сильно. То есть не открывал device handbook (user guide). Да это вообще в любом учебнике написано, хоть у Зотова. По моему без таких базовых знаний ничего внятного сделать не получится. Возможно даже что ты проебал просто основы цифровой электроники, все эти элементы Пирса, триггеры всякие там. Ну основы цифровой электроники, думаю, у меня более-менее норм.
>>359113 >INTEL Я не понимаю... Вроде логических ячеек и встроенной памяти у леттиса даже чуть побольше, максимальные частоты тоже сопоставимы. Но мне не верится, что такая ПЛИС может стоить 10 баксов. В чем подвох? Или интел тупо просит охрененный оверпрайс? Или это невиданая щедрость от леттиса?
>>359180 Неа, я бы на хабр с таким не полез бы. Просто так как-то сложилось, что в начале, пока был нубом, я прошивал не понимая как вся система в целом работает, а потом попадались чипы со встроенной памятью. А вообще мне ПЛИС кажутся проще и лучше чем микроконтроллеры - всякие интрефейсы, которые перекрывают друг друга, ограниченное количество пинов и никакой параллельности, и всякие "указатели на указатель ссылки на указатель", библиотеки и тд. Вот почему все считают плис сложными? Вот у меня коллега сейчас решает задачу сбора данных одновременно с 3 АЦП. И городит какую-то хитровыебанную систему - типа микроконтроллер не может одновременно общаться по 3 spi + пара дополнительных сигналов на каждый АЦП. Вот с таким любая плис справится как нехуй делать
Сап, аноны. Играться в эмуляторе надоело, хочется железку, чтобы подключать к телику и т.д. Появилось ли сейчас что-нибудь более интересное уровня DE2-115 за те же деньги, или лучше взять ее?
>>359510 За такие деньги сейчас можно найти оригинальные девборды на вторых арриях и стратиксах, иногда даже новые (некоторое время назад видел на ибее новую альтеровскую плату на Arria II). Китайские платы - вообще на пятых арриях и седьмых кинтексах.
>столько же логических ячеек У тебя уже есть идеи на что применить все эти ячейки? А "про запас" не стоит брать. >Почему она стоит дешевле DE2 Примерно по тем же причинам, по которым память DDR4 стоит дешевле чем DDR2 того же объема.
>>359524 >На ebay только одна плата, и она pci-e, без кучи пинов. На алиэкспрессе не нашел. Никто не говорил, что они там есть в любой момент времени. Надо постоянно мониторить. Вот, например, плата на Arria V на Али.
>>359543 >Тем, что можно добавить 20 баксов и взять вариант с SDRAM? Так ли нужна эта память? К примеру, для ЦОС обычно не нужна. >А за 60 баксов можно взять вот такие наборы: Но стоит ли? Если потребуется, то несколько резисторов можно припаять самостоятельно. Для чего все эти свистелки и перделки нужны? Лишь для таких игрушек, как по твоей первой ссылке. Если делать что-то другое, то все это будет только мешать.
>>359546 > Так ли нужна эта память? Ну так >>359510 не сказал же, зачем ему ПЛИС. Может он хочет одноплатник, с горилкой и хохлушками забабахать?
> Для чего все эти свистелки и перделки нужны? Именно для того, чтобы не припаивать резисторы и ебаться с макетками на первых порах, когда всё что тебе хочется это подрочить светодиодами и VGA-выходом на мониторе.
> Если делать что-то другое То мезонин с плисиной ПРОСТО снимается. Единственная засада: там разъёмы хоть и обычные двухрядные гнёзда, но с метрическим шагом (два миллиметра).
>>359556 Вот именно. Поэтому то что ты предлагаешь не лучше и не хуже. Это для тех кому обязательно нужно что-то вывести через VGA и при этом лень припаять несколько резисторов.
>>359566 Нет. Там три канала (RGB). Если по одному биту на канал, то будет 2^3=8 комбинаций, т.е. 8 цветов. Потом на обсуждаемых китайских платах стоят R-2R (или что-то вроде того) из нескольких резисторов, которые тоже не много цветов дают. Причем так сделано не только у этих китайцев, например на Nexys 3 и Nexys 4 (по первой ссылке в >>359543) аналогично. Если нужно больше цветов, то необходимо ставить ЦАП. Не целесообразнее ли в таком случае перейти на HDMI?
>>359564 > лень припаять несколько резисторов. Не ленью единой. В нашем Мухосранске-Таёжном такие (как у Zeowaa или WaveShare) наборы лучше тем, что все равно любую мелкую пиздюрку приходится заказывать с большой земли, так что для экспериментов и освоения удобнее брать всё сразу и в сборе.
>>359571 > Потом на обсуждаемых китайских платах стоят R-2R (или что-то вроде того) из нескольких резисторов, И китайца там хитрее. Простейший ЦАП со взвешенными резисторами, но вместо отдельных резисторов сборки с разным включением (пикрелейтед).
> которые тоже не много цветов дают. Ну хуйЪ его знает. По мне так HighColor для домашних поделок вполне достаточно.
> Не целесообразнее ли в таком случае перейти на HDMI? Там другая проблема. Частоты такие, что дешёвые камни уже зашиваться начинают (для паршивого 640x480 потребуется гнать сигнал с частотой 250 МГц).
>>359581 >HighColor Еще не факт что оно там будет. Какая там реально точность резисторов? А какая точность выходного напряжения FPGA? >Частоты такие, что дешёвые камни уже зашиваться начинают Поставить SERDES никак?
ПЛИСаны, читаю тут додревние (2005 год) «ALSE's VHDL Design Rules & Coding Style». И не могу понять, почему они пишут следующее: >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..).
Это какие-то особенности тогдашнего железа или что-то более фундаментальное?
>>359779 Соблюдение этой рекомендации предотвратит увеличение комбинационных схем (т.е. увеличение задержек) и появление латчей. Почему это необходимо? Потому что структура ПЛИС такая, желательно почитать об этом отдельно.
>>359779 Это для лучшего понимания, где находится комбинационная логика, а где секвенциальная, больше ни для чего. Это не совет ставить как можно меньше регистров, это совет писать так, чтобы было ясно, имеется ли в виду тут у тебя регистр в железе, или ты комбинационную логику в несколько действий описываешь.
Поясните за циклы. Написал я тут извращённым способом счётчик, знаю, можно намного проще написать.
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 должен быть регистром. Ан нет! По какой-то неведомой причине он стал комб. логикой. А если заменить присвоения с = на <=, то он таки становится регистром. У меня есть догадки, но хочется послушать ваши версии.
>>360084 reg в верилоге это не регистр в железе, а переменная, которой можно присваивать значение в секвенциальном блоке. В зависимости от того, когда используется его значение, в текущем такте или следующем, он синтезируется или в комблогику, или в регистр.
Смешивать "=" и "<=" в одном блоке — это хуёвый стиль, не делай так.
Когда ты гадаешь, ставить ли "=" или "<=" — значит, ты сам не понимаешь, что ты пишешь. Ты должен мысленно представить железо, которое описываешь, и, если ты понимаешь принципы синхронного дизайна, то вопросов не возникнет, какие там присваивания используются.
>>360092 >Когда ты гадаешь, ставить ли "=" или "<=" — значит, ты сам не понимаешь, что ты пишешь. Ты должен мысленно представить железо, которое описываешь, и, если ты понимаешь принципы синхронного дизайна, то вопросов не возникнет, какие там присваивания используются. Как выглядит счётчик в железе я прекрасно представляю.
>Смешивать "=" и "<=" в одном блоке — это хуёвый стиль, не делай так. А ты попробуй напиши не смешивая. Только не counter <= counter + 1'd1; , а через цикл. Вся загвоздка сформировать комбинационную цепь переноса.
>>360099 >Какой это имеет смысл, еще в цикле к тому же? Формирует цепь переноса - цепочку из элементов И, смотри на пике.
>>360136 >Как выглядит счётчик в железе я прекрасно представляю. Тогда ты не понимаешь чем отличается блокирующее присваивание от не блокирующего. >цепь переноса Это просто конъюнкция всех предыдущих разрядов. Цепью переноса такое называть не стоит.
>А ты попробуй напиши не смешивая. Элементарно, в одном блоке параллельный регистр, в другом комбинационную логику. Или можно сделать сложение в функции. >Формирует цепь переноса - цепочку из элементов И, смотри на пике. И нифига, оно так не работает. Или у тебя что-то проебалось. Потому что это запишет в carry только нулевой бит, а остальные обнулит.
>>360139 >Тогда ты не понимаешь чем отличается блокирующее присваивание от не блокирующего. Понимаю, просто по другому не напишешь, наверное, потому и пришёл сюда рассказать что солнце встало.
>Цепью переноса такое называть не стоит. Вполне себе. Ибо её выход указывает инвертироваться разряду или нет.
>Элементарно, в одном блоке параллельный регистр, в другом комбинационную логику. Нет, ну ты попробуй.
>И нифига, оно так не работает. Кто? Счётчик на пике, или код? Схема счётчика классическая, не может не работать. Код тоже рабочий, можешь проверить.
>>360142 >Нет, ну ты попробуй. Готово. >Вполне себе. В русскоязычной литературе цепью переноса обычно называют другое. Так что нет. Цепь переноса — это как в сумматорах например. >Код тоже рабочий, можешь проверить. Может и рабочий, но в той строке у тебя написан бред.
>>360161 >Цепь переноса — это как в сумматорах например. А тут, инвертируем текущий разряд если все предыдущие установлены в единицу. Те же яйца, только в профиль.
>Может и рабочий, но в той строке у тебя написан бред. Для тебя может и бред, а для Квартуса нет, создаёт схему как на пике >>360136 , так что не надо тут вот этого. Да и к тому же, чем твоё comb_out[ i ] = comb_out[ i - 1 ] & cnt_out[ i - 1 ]; отличается от моего carry[ i ] = carry[ i-1 ] & counter[ i ];
>Готово. Не, ты именно в цикле создание и регистра и цепи переноса напиши.
>>360164 >Для тебя может и бред Сейчас ты исправил, а был вот такой бред: >carry = carry[i-1] & counter[ i ]; На что я тебе написал что у тебя либо из-за разметки что-то опять проебалось, либо ты написал совсем ерунду.
>Не, ты именно в цикле создание и регистра и цепи переноса напиши. Да ну тебя, сам пиши всякую ерунду.
>>360164 >Не, ты именно в цикле создание и регистра и цепи переноса напиши. Тебе cnt_out <= comb_out ^ cnt_out не нравится штоле? Ну замени на for (...) begin cnt_out[ i ] <= comb_out[ i ] ^ cnt_out[ i ]; end, легче станет?
>>360178 Я даже не понимаю того что ты хочешь. На твой первоначальный вопрос уже ответили. Выше один анон написал, что не стоит смешивать последовательностную и комбинационную логику в одном блоке. Желательно писать так, чтобы легче было отличить где комбинационная логика, а где последовательностная. Вот я написал таким образом, а тебе все не так.
>>360164 >А тут, инвертируем текущий разряд если все предыдущие установлены в единицу. Те же яйца, только в профиль. Вот нарисовал обобщенную схему счетчика или другого КА. По твоему выходит, что комбинационная логика в этой схеме это всегда цепь переноса?
>>360189 Вот ты напиши. Увидишь какой пиздец получится.
>>360191 Я хочу сказать то, что написать счётчик подобным образом соблюдая все правила и рекомендации не получается.
>>360193 Ты нарисовал счётчик, как параллельный регистр с сумматором на входе. А есть философия построения счётчиков и различных регистров, как регулярных устройств, т.е. на основе элементарных блоков. Посмотри на пик >>360136 , замечаешь периодичность? Подставляя в конец ещё один такой каскад ты легко и просто наращиваешь разрядность. Я понимаю, что при наличии верилога это всё на хер не нужно, но тут вопрос больше академический.
>>360252 >Ты нарисовал счётчик, как параллельный регистр с сумматором на входе. Твоя схема вполне соответствует этой обобщенной схеме. Так что ты написал что-то не то.
>>360256 Один из вариантов, которые я написал, был в точ как у этого >>360259 кунчика.
>>360259 Вот смотри, дрогой мой кунчик. У тебя переменная i глобальная, т.е. видится из обеих блоков always, она общая. Тебя не смущает, что она инкриминируется по два раза за проход? Ведь каждом for стоит i = i + 1. Да работать будет, видимо компилятор хитрый и догадывается что мы от него хотим. Но то что ты предложил выглядит не менее сомнительным чем блокирующее присвоение вместе с блокирующим.
И ещё. В связи со всем этим у меня возник вопрос. Зачем вообще нужны циклы? Любой код можно написать не используя их. Могёте привести пример где без цикла нельзя было бы обойтись? Я говорю только про синтезируемый код, с тестбенчами там без них никак, это понятно.
>>360265 Нет, потому что за один проход одной итерации цикла она инкрементируется один раз. А второй цикл проходится потом (и переменная перед входом в него сбрасывается в 0).
>>360262 >Один из вариантов, которые я написал, был в точ как у этого >>360259 кунчика. Что? То что нарисовано у тебя на схеме >>360136 полностью соответствует обобщенной схеме >>360193 Причем вне зависимости от того как писать код.
>Тебя не смущает Нет. Потому что это так не работает. Цикл эквивалентен простому копипасту кода заданное количество раз. Это как макросы в Си. Хитрость компилятора вообще не при чем.
>Могёте привести пример где без цикла нельзя было бы обойтись? Ну да, циклы всегда можно заменить копипастой. Так же как арифметические операции можно сделать через логические, а все логические можно сделать через NAND.
>>360262 >Могёте привести пример где без цикла нельзя было бы обойтись? У тебя есть N-мерный массив из 16-битных регистров, и тебе надо вывести их нулевые биты на N-битную шину.
>>360105 Зачем взял на поиграться такую плату а не что попроще? Уже придумал проект, на который необходимо ~114480 LE? При том свистелки и перделки в DE2-115 не особо развесистые.
>>360270 >Что? То что нарисовано у тебя на схеме >>360136 полностью соответствует обобщенной схеме >>360193 Да, согласен, если стереть границы блоков, то получется то же самое. Ну а тогда зачем ты противопоставил свою схему моей?
>Цикл эквивалентен простому копипасту кода заданное количество раз. Дело не в копипасте, а в том как исполняется цикл. В принципе я удовлетворён ответом анончика >>360266 . Я просто залип на параллельным выполнением блоков always и тот факт, что эти циклы создают схему, а не исполняются в ней, вылетел у меня из головы.
>Ну да, циклы всегда можно заменить копипастой. По моему утверждению любую комб. или регистровую схему можно написать в поведенческом описании кратко и ёмко без копипаст. А что нельзя, то можно реализовать generate-блоками в структурном описании, например как этот >>360276 случай. Т.е. получается циклы в поведенческом описании избыточны.
>>360307 > Уже придумал проект, на который необходимо ~114480 LE? Я как-раз нашёл подходящий: https://github.com/srg320/FpgaSnes Всё упихнули в 55 килоячеек третьего циклона, не считая STM32 на подтанцовке.
>>360309 >Ну а тогда зачем ты противопоставил свою схему моей? Потому что это не цепь переноса. Максимум в подобных схемах цепь переноса может быть частью схемы, но не схема целиком. Но при синтезе твоего кода для ПЛИС, никакой цепи переноса не получится. Или ты считаешь что при твоем коде (для четырехразрядного счетчика) LUT-ы в FPGA также соединятся в последовательную цепочку, как у тебя на схеме?
>Т.е. получается циклы в поведенческом описании избыточны. Сделай тогда без цикла суммирование всех бит в шине, т.е. подсчет количества ненулевых бит. Такое может потребоваться например для вычисления кодового расстояния. Или можешь попробовать сделать КИХ фильтр с задаваемым параметром количеством умножителей.
>>360326 Что-то многовато, по моему хватило бы в несколько раз меньше, только памяти относительно много нужно. Но все равно непонятно зачем брать DE2-115, вон в этом треде аноны брали платы с кинтексами у китайцев. DE2-115 имеет смысл брать только ради HSMC.
>>360319 Да ничем, лишь известно, что casex умеет корректно обрабатывать 1'bX помимо 1'b0, 1'b1 и 1'bZ. Никогда не использовал casez, всегда casex ставлю, разницы никакой, только ты точно знаешь, что если симулятор подсунет ему 1'bX, он не затупит.
>>360332 >Или ты считаешь что при твоем коде (для четырехразрядного счетчика) 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
Анон с китайской отладкой на EP4CE6/EP4CE10 и осциллом под рукой, замерь пожалуйста пульсации по питанию 2,5 вольта. Происходит какая-то хуйня. У меня на самодельной отладочной плате пульсации по 2,5 вольта 200 мВ частотой 40 кГц. Это PLL так срёт? Это происходит даже когда на плате отсутствует кварц.
>>360382 Охуенный код. Осталось еще арифметические операции из него выкинуть и можно будет утверждать что арифметические операции в верилоге не нужны. Ну вот видишь, сам лучше всех все знаешь. Зачем тогда спрашивал?
>>360387 >арифметические операции в верилоге не нужны Так то для новичков действительно ими лучше не пользоваться. Так и одолевает соблазн поставить, скажем, арифметическое деление, а ведь какая при этом схема получается мало кто задумывается. А вот если попытаться сделать то же самое на логике сразу становится понятен масштаб бедствия и у же лишний раз подумаешь, а нужно оно это деление, или луче его обойти.
>Зачем тогда спрашивал? Думал может всё таки найдётся такая ситуация где никак.
>>360394 Как можно было ожидать чего-то другого? Такое можно еще через рекурсию сделать. Только с краткостью и понятностью кода от этого лучше не станет. Какую-то ерунду спрашиваешь, сам себе отвечаешь...
Анончики, как написать и/о тайминг констрейнт для ног, к которым у меня нет никаких требований по быстродействию вообще? Например кнопка заходит на gpio, да мне поебать, как она там разведётся. Но тайминг репорт показывает на этом порту критическое предупреждение. Как вы пишете такие констрейнты, чтобы мозги не ебать ни себе, ни трассировщику? Xilinx Vivado.
>>360743 пишешь декетор параллельной частоты, которой у тебя питается iserdese2 детектор работает на сильно большей частоте чем параллельная входная. Как только частота исчезает, увозишь iserdese2 в ресет
>>360791 >iserdese2 Эту клушу я заводил еще кое-как. А вот с iserdese3 хуйня какая-то. Там внутренний фифо как-то очень уж непонятно для меня работает: я его отключаю, но всё равно инфу получаю слишком поздно и не с первой пачки 8 битов. (Это всё еще на постоянной входной частоте и данных, для теста. А уж ожидать, что эта херота заведется на произвольном dqs - наивно. Эх, где же мой мемори интерфейс генератор...)
>>360853 >Эх, где же мой мемори интерфейс генератор А, кстати, где он? Чего бы просто его не поставить? Он же даже бесплатный без смс. Требуется сделать швабодную версию контроллера, что ли?
Зачем еще раз проверяется 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")
>>360854 ну я это для csi2 использовал, там частота 410 МГц была последовательная, соответсвенно 210 МГц с запасом хватало для стробирования параллельной байтовой
Плисаны, расскажите, как запускать симуляцию в альтере? Что-то я совсем потерялся, не приходилось использовать этот самый моделсим.
Что я делал: 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.
>>361345 В Квартусе 9.1 всё ещё есть встроенный симулятор для Циклонов 1-3. Если ты хочешь интегрировать МоделСим в Квартус, то качай МоделСим Альтера едишн. С ним намного проще.
>>361362 Ну хз, каким-то сложным путём ты пошёл. В Квартусе жмёшь тулс - опшинс - ЕДА тул опшинс, указываешь в строчке МоделСим-Альтера путь до исполняемого файла МоделСима, тот что с расширением .ехе, не помню как называется и где точно лежит, на работе у меня всё это добро установлено, дома нет. Через диспетчер задач вычисли. Далее создаёшь тестбенч с расширением *.vt, в нём создаёшь модуль верхнего уровня, можно пока оставить его пустым. Далее в настройках проекта, ЕДА тул сеттингс в поле Тул нейм выбираешь МоделСим-Алтера, в поле НативЛинк сеттингс выбираешь Компил Тестбенч, нажимаешь на кнопку Тестбенчес, в появившемся окне указываешь свой вайл с тестбенчем который создал. Далее в меню Квартуса жмёшь Тулс - ран симулейшен тул - ЕДА РТЛ симулейшен.
>>316943 (OP) Наша организация подумывает о переходе с альтеры на зайлинкс, потому что их проще достать. Сильно ли вивадо хуже/лучше квартуса? Наверное платина. Из основного интересуют аналог схематика, сигналтапа и инсистема.
>>361402 Схематик в вивадо хуже. Лучше все лепить в коде. Ртл вью тоже не так красиво отрисовывается. В остальном вивадо более ламповая и по мне гораздо удобнее. Больше ip ядер, больше сообщество, ахуенный форум. vio/ila дает на клыка этому вашему сигнал тапу да и в целом вивадо не такая глючная.
>>361406 >Схематик в вивадо хуже. Лучше все лепить в коде. Ты "блок дизайн" имеешь в виду? Я, конечно, альтеровский вариант не пробовал, но "блок дизайн" — самая продуманная, отлаженная и приятная в использовании часть вивадо (за такой голый и убогий редактор кода я бы просто убивал).
Кстати, слышал, в квартусе есть такая фигня под названием "адвайзор", запускаешь её, и она тебе показывает, какие части проекта дольше всего разводятся, где возникают затыки в имплементации, потом ты туда идёшь, добавляешь пару регистров, и всё работает. Есть аналоги такого для вивады? Список не уложившихся в тайминги сетей для этого мало подходит, там бывает, что хуёво написана одна часть, а не раскладывается по таймингам другая.
>>361408 Да, именно его имел ввиду. У зайлинкса, например только недавно добавили возможность инстанцировать на блочный дизайн hdl-модули и эта фича работает криво. В альтере все ровно. Еще не нравится, что у зайлинкса связи отрисовываются автоматически, нужно только указать точки соединения - в результате на крупных схемах получается каша.
Из положительных моментов вивады могу выделить ее фичу с подсказками - например тащишь AXI-шину и редактор подсвечивает возможные точки соединения.
Поясните, вот тут в прошлом треде сидел анон из японии. Перечитывал я прошлый тред, а его посты удалены. Как так? Мочератор радача нами в одном треде сидел?
>>361416 Вариантов много. Вероятнее всего — его айпишник был от какого-нибудь открытого прокси (потому что на харкаче запрещено постить с огромного количества зарубежных айпишников), потом с этого прокси шутники запостили спам/ЦП, и все посты с этим айпишником пошли под снос без разбору.
>>361410 В виваде есть анализатор кода. Не помню как зовется. Правда толку мало от него, раз он на мой говнокод всегда писал, что "ну короче заебимба".
>>361463 Да хотя бы возможность задания сложной логики для синхронизации 1:16:45 Или даже создание целых автоматов для сложной составной синхронизации 1:26:55 И это не говоря о возможности подключить свой HDL-код.
>>361467 А ещё входы и выходы внешней синхронизации для каскадирования нескольких СигналТапов, чтоб можно было дебажить модули работающие от разных частот.
>>361470 Да не, ты не понял. Подключаешь к СигналТапу свой HDL-код как доп функцию для расширения возможностей по синхронизации. Нужно, например, тебе отловить момент который наступает при хитрой последовательности событий - пишешь соответствующий код и добавляешь его к СигналТапу и когда код отловит этот момент СигналТап триггернётся. Можно конечно и просто отдельный модуль написать и к нему присосаться. А тут он интегрируется внутрь СигналТапа и становится его частью.
И кстати, СигналТап можно добавить уже после компиляции проекта.
>>361474 > И кстати, СигналТап можно добавить уже после компиляции проекта. Только вот все равно при любом изменении на сигналтапе придется рекомпилиться.
>>361476 Врубаешь инкрементальную компиляцию и рекомпилишь только изменения в проекте.
>>361484 Ну я с ISE сравниваю, там эту ИЛу нужно было ручками себе в код вставлять, все сигналы прописывать, подключать, потом ещё с глючным и кривым интерфейсом бороться. А в этих ваших Вивадах может уже что-то и доработали.
Посоветуйте IDE для программирования Altera Cyclone IV. Я загрузил Quartus Lite, но при создании проекта он просит указать тип устройства и загрузить пакет поддержки устройств с оффсайта. Я зашёл на их сайт, выбрал Cyclone IV, но мне написали, что Quartus Lite его не поддерживает. В какой ещё бесплатной ide можно программировать?
>>362396 >GDDR3 DDR3 SDRAM (англ. double-data-rate three synchronous dynamic random access memory — синхронная динамическая память с произвольным доступом и удвоенной скоростью передачи данных, третье поколение)
GDDR3 (англ. Graphics Double Data Rate 3 — двойная скорость передачи графических данных 3) — специальная технология памяти для графических карт, разработанная ATI Technologies.
Имеет почти такое же технологическое ядро, как DDR2, но более высокую эффективную частоту.
Я ненастоящий сварщик, но мне кажется, что это немного разные типы памяти.
>>362396 >Общими отличиями GDDR от DDR являются более высокие номинальные частоты работы первой. Также GDDR содержит упрощения электрического интерфейса и применение ряда специальных приёмов управления буфером ввода-вывода, что позволяет достичь несколько большей пропускной способности и более высоких рабочих частот по сравнению с DDR SDRAM. Кроме этого, GDDR имеет по сравнению с DDR более низкое энергопотребление и тепловыделение при работе на равных частотах.
Даже на викии есть. Короче, контроллер немного другой надо писать.
>>362474 Легко гуглится пример даташит на память hyb18h512321af с видеокарты. Визуально интерфейс как у DDR3, поэтому и возник вопрос в чем подвох и отличие?
>>362530 Старшие биты использует акси интерконнект, чтобы переадресовать транзакцию на нужный интерфейс. Младшие биты использует слейв, чтобы выбрать нужный регистр. Слейв не знает о своём месте в пространстве адресов, он только младшие биты смотрит.
>>362551 Когда на один интерконнект вешаются axi full и axi light, при генерации проекта вивадо автоматом вставляет на нужный интерфейс конвертер протокола. (Ещё она умеет согласовывать интерфейсы с разной частотой и шириной шины, да и вообще няшка.)
>>362551 Если неиспользуются бёрсты, то можно соединить 1 в 1, если используются бёрсты, то нужно вставить модуль разбивающий бёрсты на одиночные транзакции
>>362583 Задачи нет - учеба. Хочу проверить ddr память на борде. Думал собрать так: контроллер ddr axi-slave + spi-slave axi-slave + axi-interconnect + risc-v axi-master (или fsm axi-master, но я пока не готов написанию такого). С компа через spi записывать в память, а потом читать.
>>362632 Ну так ты не слейв со слейвом соединяешь, а подключаешь несколько слейвов к одному мастеру. В виваде тыкаешь в интерконнект и выбираешь число мастеров и слейвов. Насчёт исе тебе господин выше уже пояснил, я склонен его поддержать. На самом деле я им пользовался 666 лет назад и не помню, как там эта хуйня настраивается.
>>362583 > Ты хочешь чего-то неправильного и даже, я бы сказал, грешноватого В смысле? Прости, а как по твоему работают дма контроллеры или многоядерные системы? Axi для этого и пилилась, чтобы мультимастер мультислейв нормально работал
>>362767 Ну я могу и этот artix-7 себе позволить, не особо напрягаясь. Думаю даже usb3.0 плату докупить до кучи. Это же не 20к за отладочную плату >>362784 > И с ISE вместо среды разработки. В смысле? У xilinx плохо со средами разработки или что?
И ещё, тут юзал кто нибудь китайские отладчики с али для xilinx?
>>362875 > Думаю даже usb3.0 плату докупить до кучи. Закидай говном мануалами для совсем тупых и безмозглых амеб как ее запускать. Платка есть, а останков мозгов не хватает для запуска и укрощения поноса из трафика из этой игрушки.
>>362881 Ты видимо шутишь, ведь это я ньюфаг, который спрашивает совета в этом итт треде. Но как я понял, на сайте Кипариса овердохуя примеров и аппноутов, как с этим делом работать. От руководства программиста до подключения к ПЛИС.
>>362922 Нет, не шучу. Тоже ньюфаг себе выкопал худенькую платку с EP4CE15F23 и еще более тощую платку с EP4CE115F23 под мигалку гирляндой (платки искались максимально голые с большим количеством IO под бредовые идеи очень надеюсь что они получатся). Ну и поделки от Кипариса, про которые вообще не в курсе что и как и с какого бока к ним подходить. Плюсики в карму QMTech и FPGA Board Store.
>>362875 >В смысле? У xilinx плохо со средами разработки или что? У xilinx всё отлично со средами разработки если это не ISE. Vivado заебок, например, но она не поддерживает старые линейки плисов, вроде Spartan 6.
>>362960 > Vivado заебок, например, но она не поддерживает старые линейки плисов, вроде Spartan 6. А как это? В смысле для мира ПЛИС это нормально, что новые ide не поддерживают старые камни? Почему так?
>>362973 Ну там основной набор команд не меняется десятилетиями, и какой-нибудь gcc-arm может компилить хоть для кортексов-м, хоть для взрослых армов в смартфонах. И я бы очень удивился, если бы какой-нибудь следующий gcc вдруг перестал поддерживать предыдущее поколение. Ну в-общем ладно, я понял суть
>>362978 >хоть для кортексов-м, хоть для взрослых армов 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.
>>362982 У альтеры/интела это можно докачать отдельно. Но при этом поддержку старья понемногу выкидывают, как и везде. Поэтому объем - это не аргумент.
>>362987 Ну так всё ровно сама интеграция этого старья в новое ПО усложняет это самое ПО. Например для древних Флексов не было ЧипПланера, была какая-то его приметившая версия, не помню как называлась. И чтобы поддерживать Флексы нужно держать модуль этого старого ЧипПланера в ПО.
>>362948 Ебать-колотить. Мало того что пылящимся wget-ом не слить, а только через ручное хождение по ссылкам (у того же st можно сразу пачкой слить), так еще и нужно делать зоопарк из древнего кейла. Вообще похуй. USB3.0 не очень скоро устареет, поэтому без разницы - на днях или через пару лет получится укротить. DIY же.
>>364246 Иногда бывает так что в Квартусе только GX серии 4 Сыклонов стоят. Остальные надо докачивать. Хотя тут от дистрибьюта зависит, есть такие в которые недокачаешь. Вообще если работаешь только с такой плисиной ставь верисии Квартуса постарее, они и быстрее и лучше работают. Я предпочитаю 9.1SP2, там и встроенный симулятор ещё есть.
>>364393 Какие тулзы? Для какого циклона? Квартус 9.1SP2 работает норм для циклонов с 1 по 3 включительно. Для 4 тоже работает, но нет встроенного моделирования, а оно и не нужно по большому счёту, если можешь в верилог и моделсим.
>>364553 > dram (не sdram) Хоть понял что за хуйню написал? DDRх и SDRAM - это динамическая память, разница в том что SDRAM передает данные по одному фронту тактового сигнала, а DDRx - по двум фронтам тактового сигнала. > sram Погугли как адово нелинейно растет стоимость SRAM от 4 мегабит и выше. Видимо с размером памяти не определился, раз такой вопрос. > Посоветуйте fpga-борду Предпочтения? Altera, Xilinx, Lattice? Это трололо пост если че.
>>364562 DRAM, да. DRAM реально такая некрофилия нужна?. Почитай мне на ночь сказки про типы памяти. В тишине знаешь ли плохо засыпаю. Кандидат для тестов KM41C256.
>>364577 Можно в цифрах? Очень желательно привести маркировки(названия) микросхем статической и динамической памяти для сравнения характеристик. Статическая память 2-4 мегабита вполне вменяемо стоит и нет ебли с регенерацией.
>>364553 > Посоветуйте fpga-борду с dram (не sdram) OCHE TOLSTO. Ну разве что искать додревние платы двадцатилетней давности на вторичном рынке.
> или sram до 20$ Выбери одно. Или sram или «до $20» (стартеркитовские платы обойдутся где-то в $45, чего-то более дешёвого мне не попадалось). Ну или покупай у дядюшки Ляо плату «без нихуя», с одной ПЛИСиной. Будет тебе килобит 200 статической памяти внутри чипа.
Правильно ли понял документацию? Как минимум синтезировался проект с коркой ALTLVDS_TX 3 канала с сериализацией 9 и скоростью 630 мегабит. В самом дешманском EP4CE6E22C8 используя банки 5 и 6 получу 3 канала LVDS под данные и один под тактовую частоту? Используя HSIODR могу передавать до 640 мегабит на канал и по итогу получить поток данных в 1920 мегабит (240 мегабайт в секунду)?
В свободное от работы время дошел до симуляции цепей. Хочу прошить свой чип. Сколько раз можно перепрошивать четвертый циклон? Или количество перепрошивок неограничено?
>>364908 Если конфигурационное ПЗУ перешиваешь (память 25 серии или EPCS) - то читай даташит на память. Десятки тысяч. Если же через JTAG заливаешь конфигурацию в сам циклон - то остается пожелать удачи в попытке убить SRAM память в циклоне, что в принципе нереально. Хоть каждую секунду перешивай - не получится ушатать. Исключая вариант когда забыл поставить свободные порты input tristate и поставил output driven low или подобное.
Как на windows 10 использовать USB blaster? Quartus нет видит его. В списке неизвестных USB-устройств в панели управления есть бластер, но написано, что драйвер для него недоступен. Я нагуглил, что по этому элементу списка (с названием бластера) можно кликнуть и появится предложение выбрать драйвер с диска, но это не работает. В папке с квартусом драйвера вижу. Как их установить?
>>364916 Чей бластер? От Waveshare у меня не запускался, как и на PIC18F2550. Точнее видны, но при любых действиях по таймауту все отваливается. Новая версия rev.c на PIC18F14K50 - сразу встала и работает. Устанавливалось через "из местоположения на диске" и указывал куда-то в недра 17-го кактуса.
>>364916 >В папке с квартусом драйвера вижу. Должны быть, либо ты устанавливал что-то не то или как-то не так. Попробуй найти драйвер поиском по расширению файла (.inf и .cat).
Конфигурацию пинов задал. Параметрам x1 и x2 соответствуют две кнопки, а значение функции f связано со светодиодом. Но почему-то без нажатия на кнопки диод горит, а при нажатии гаснет. Чтобы сделать наоборот, я добавил логическое отрицание. Почему цепь работала не так, как я ожидал, и лампочка загорается, когда f = 0?
>>364925 >Но почему-то без нажатия на кнопки диод горит Смотри схему твоей платы. Кнопка может быть подключена таким образом, что когда она не нажата на входе будет лог. 1.
>>364925 > Китайский. Какой бластер лучше? Рабочий. На PIC18F14K50 точно работает в разных вариантах и позах.
> Но почему-то без нажатия на кнопки диод горит, а при нажатии гаснет. В код не вникал. Схему платы смотрел? Прямо в лоб пробовал соединять кнопку со светодиодом и смотреть что будет? 1) На не нажатых кнопках 0 и при нажатии 1 или наоборот? 2) Светодиоды зажигаются 0 или 1? (Нужное подчеркнуть)
>>364916 У меня на вин10 удалось совладать с юсб бластером только через установку драйвера от 9ого к квартуса в режиме винды "без проверки подписи драйверов".
>>364933 А я просто открыл диспетчер устройств, нашел в нем бластер и установил драйвер через меню. Причем драйвер установился только когда я указал путь к папке /quartus/drivers. Если я прямо указывал папку с драйвером для x64, инсталлятор драйверов говорил, что не видит драйвер.
>>364934 > Причем драйвер установился только когда я указал путь к папке /quartus/drivers. Это все я пробовал кучу раз и на разных компах. Какая версия квартуса?
>>364934 >Если я прямо указывал папку с драйвером для x64, инсталлятор драйверов говорил, что не видит драйвер. Естественно, потому что установщику нужен .inf файл.
>>364938 Аналогично. Драйвер ставил от квартуса версии кажется 18.0 или 18.1. Причем у одного сотрудника стоит на десятке квартус версии 9.0 (других версий не стоит) и тоже все работает.
>>364937 Проверь в диспетчере устройств VID/PID твоего бластера.
The keyword “assign” is used for continuous assignments to an already declared port or a wire
Что значит continuous в этой контексте? Последовательный или непрерывный (в смысле, обновление значения справа непрерывно вызывает обновление шины слева)?
>>365042 >непрерывный (в смысле, обновление значения справа непрерывно вызывает обновление шины слева) Зис. Комбинационная схема - это непрерывное присвоение. Изменение одного входа моментально влечёт изменение на выходе, согласно логике этой комбинационной схемы, естественно в любой КС есть задержки и время срабатывания элементов, но это уже проблема в другой плоскости.
>>365111 Да, это правильные ид. Даже не знаю что тебе посоветовать. Драйвер для бластера устанавливается точно так же как драйвера для других устройств. http://free-pc.ru/windows/kak-ustanovit-drajver-neskolkimi-sposobami.html >3. Установка драйвера через диспетчер устройств Указываешь там папку с файлом usbblstr.inf (C:\квартус\quartus\drivers\usb-blaster). Все, готово. Единственное что оно может ругнуться на отсутствие подписи, если квартус слишком старый. Вот прямо сейчас проверил с квартусом 18.1 и китайским клоном бластера на PIC18F14K50, все устанавливается. С оригинальным альтеровским бластером тоже все работает.
>>365125 > посоветовать Для себя я уже нашел костыль, если что: >>364933
Пробовал от 9.0, 13.1 и какой-то 17-18, устанавливаются только через пердолинг с режимом без проверки подписи. Если не сложно, можешь кинуть ссылку на дрова, либо на облако залить. Но 17 или 18 я как раз с офсайта качал.
Почему этот ваш квартус не строит нормальной иерархии проекта? На вкладке hierarchy один лишь топовый модуль, а остальные на вкладке files. Как вообще жить с этим?
>>365168 >Ну если ты накидал кода за один раз, что надо 20 минут ждать, то да. В вивадо и ise ничего компиллить не надо было. Иерархия обновляется автоматически либо по команде. Зайлинкс более юзер-френдли ^^
>>365188 > Мультиплексор с обратной связью это не триггер? > с обратной связью > обратной связью Где на твоей схеме обратная связь на выходе мультиплексора?
>>365181 >assign q = c ? d : q; >Не понимаю о чем ты, но разве это не триггер, пусть даже с статическим управлением? Нет, это не триггер. Это триггерная схема, т.е. комб. схема с обратными связями, которую ты сам нахуевертил. Чуешь разницу? Такие схемы делать строго настрого запрещается. У нас во дворе вообще за такое убивают нахуй. А всё потому, что такие схемы могут впадать в самогенерацию, виснуть и прочее. За всю эпоху существования цифровой техники человечество выработало необходимый набор триггеров, вот ими и пользуйся, они протестированы, изучены, исследованы и прошли проверку временем. Это тот случай когда отсебятину пороть не надо.
>Что-то ты странное пишешь. Если припаять провод к триггеру, то провод (сам по себе) уже нельзя считать комбинационным устройством? Если его рассматривать в отрыве от триггера - да, это комб. схема с одним входом и одним выходом. И как в любой комб. схеме у него выход меняется мгновенно с изменением на входе без учёта задержек, в отличии от.
>>365187 Да хер там. Это пожалуй единственное его преимущество. Сравни например время добавления айпиблоков, ОЗУ хотя бы, или ПЛЛ, в Квартусе и Айсе. Тебя ждёт сюрприз.
>>365195 >Это триггерная схема Где ты там схему разглядеть ухитрился? Это просто кусок кода, описывающий D-триггер со статическим управлением. В какую схему он может синтезироваться это отдельный вопрос.
>>365201 Я говорю не только про ПЛИС, но про всю схемотехнику в целом. На рассыпухе запаяешь такую хрень - тоже работать не будет, хотя шансов больше. Да даже и ПЛИС, симуляция это же не самоцель, рано или поздно всё это в железе работать должно. А в симуляции можно такого понаписать, что даже синтезироваться не будет, не говоря уже о хоть какой-то работе.
>>365206 >А в симуляции можно такого понаписать, что даже синтезироваться не будет, не говоря уже о хоть какой-то работе. Молодец, ты уже почти пришел к выводу о том, что код - это не схема. >На рассыпухе запаяешь такую хрень - тоже работать не будет Если ты про соединение входа с выходом у мультиплексора, то это и без тебя тут все знали. Но кусок кода это еще не схема. >симуляция это же не самоцель Verilog и vhdl вполне можно использовать для симуляции рассыпухи, например. Чем не самоцель? Естественно что при этом вполне можно использовать не синтезируемое описание. А тестбенчи ты значит не пишешь?
>>365209 >ты уже почти пришел к выводу о том, что код - это не схема. А я такого и не говорил.
>Если ты про соединение входа с выходом у мультиплексора, то это и без тебя тут все знали. Не все, раз вопрос всплыл.
>Но кусок кода это еще не схема. Причём тут вообще код? Вопрос был про то, почему нельзя делать обратные связи в КС.
>Verilog и vhdl вполне можно использовать для симуляции рассыпухи Ради чего? Потому что можем? Если мы говорим о проектировании, то наша конечная цель - работа в железе, а не в симуляции.
>А тестбенчи ты значит не пишешь? Причём здесь это?
>>365632 Как всё сложно, ну да ладно, спасибо. Просто навеяло соседним ардуино тредом, где препод заставляет анона эмулировать работу базовых логических элементов на микроконтроллере
Не знаю, куда ещё писать по верилогу, поэтому напишу сюда: что я делаю не так в тестбенче? 1 пик - тестбенч, 2 пик - что должно получиться (когда ручками клок тактировал в квартусе), 3 пик - что выводит моделсим с тестбенчем с 1 пика.
>>365669 Ну я даже не знаю. С чего ты взял что ошибка в самом тестбенче? Единственная разница между клоком на твоей второй и третьей картинке это начальное состояние. >[0:15] От этого у тебя биты наоборот будут выстроены, слева будет младший бит, а справа старший. Мне кажется что так лучше не делать.
>>365643 >>365644 >Что тебе не нравится? ПЛИС - это не рассыпуха. После каждой компиляции ячейки используются разные, если не предпринимать специальных мер. Кроме того, связи между ячейками достаточно медленные, это не простой проводник, это целая куча мультиплексоров, позволяющие соединять ячейки почти в произвольном порядке, и они, зачастую - эти связи - работают медленнее чем сами ячейки. Всё это приводи к тому что подобные схемы работают либо нестабильно, т.е. плавает частота, либо работают не при каждой компиляции, либо перестают работать при изменении климатических условий.
>>365748 Ты знаешь более надежный способ сделать мигалку светодиодом на FPGA без внешних частотно-задающих элементов? >ПЛИС - это не рассыпуха. Будто на рассыпухе такое будет работать достаточно стабильно. Может и на порядок стабильнее будет, но не настолько чтобы можно было такие генераторы где-то применять.
Как узнают какая полировка оптического коннектора у sfp-модуля? Что-то спеки на модули не ищутся, на самом модуле не написано, во внутренней памяти есть поле с типом коннектора, но не полировки.
>>365936 > пример подключения sfp-модуля к fpga? Физическое - показано. Если про передачу данных - то уже мимо. Не в курсе. Если же копать в сторону Ethernet - то через SFP подули гоняют вывод SERDES (сериализатор-десереализатор) c кодированием 8b/10b и при гигабите в волокне реально летит 1.25гигабита. Есть еще вариант SGMII (используется в 88E111x и подобных модулях SFP в выходом на медь) - с ним сложнее, тк есть режим согласования скоростей в отличии от тупого SERDES (но это не точно). И это только прием-передача. Для распознования что за дерьмо прилетело-отправляешь тебе нужен MAC блок. Поэтому определись - если подключаться к Ethernet - надо будет дофига чего изучать. Сама SFP - это не более чем тупой лазер и приемник, у которых внезапно есть ограничения по минимальной и максимальной принимаемой частоте и ему вообще поебать что за дерьмо ему будешь скармливать или принимать, поэтому считай что это тупо удлинитель на LVDS линий. Просто так постоянно "1" или "0" не сможешь отправлять - как минимум стоят разделительные конденсаторы на входе, которые отрежут постоянку, а во вторых - подавая постоянный сигнал нарушишь работу АРУ принимающего диода или драйвера лазера не помню где читал про эти грабли.
>>366121 Не оптимизировать эту цепь. Если логически она не нужна или может быть упрощена, компилятор ее все равно оставит. Полезно когда на синтезированый дизайн будешь цеплять отладку или для локализации ошибки, если в процессе оптимизации компилятор выкидывает весь проэкт нахуй
>>366156 >>366157 Сам разъем и сокет одинаковый, контакты одинаковые, сигналы (условно) одинаковые. Все одинаковое, разница в скоростях по парам приема-передачи. В темноте на ощупь SFP от SFP+ можно отличить по скошенным краям самого модуля в районе контактов, но это не правило и попадаются SFP в корпусах SFP+ например "новые" модули от SNR.
Следующий вопрос опять же связан с изучением языка богов VHDL. Где квартус хранит стандартные либы? Почему Verilog-колхозники обходятся в основном без либ? Что полезного можно найти в стандартных либах VHDL?
>>366855 Я бы, пожалуй, предложил написать два генератора прямоугольных сигналов с периодом в районе 60 Гц, но чуть-чуть отличающихся. Например, один 59 Гц, другой 61Гц. А потом поXORить их друг с другом и вывести результат на светодиод.
>>366875 Пришло время покаяться. VHDL конченное говно. Переносить код с одной платформы на другую это настоящий ад. В случае с Верилогом достаточно написать обертки для платформозависимых сущностей. А с VHDL предстоит долгая ебля с либами. Нахуя нужны либы я так и не понел.
Сап плисач. Нужно запилить дешифратор 128in128 на 10 комбинаций. Эдакое key-value хранилище, которое будет работаеть на частоте 150МГц. Если я ебану через кейс не взлетит?
>>366974 Сначала составь таблицу истинности, потом минимизируй её картами карно, после чего по получившимся выражениям построй схему в графическом редакторе. Тогда влезет.
Вот есть сраная пердуина за три копйки. В сраной пердуине за три копейки есть встроенный АЦП. А есть божественная ПЛИС, но в ней нет ни АЦП, ни ЦАП, ни другого обвеса, от слова совсем. В чём причина такой вселенской несправедливости?
>>367368 АЦП для серьёзных задач выбирается под задачу. Для автоматизации курятника подойдёт любая хуйня, которую производитель не поленился засунуть в кристалл, и на параметры которой абсолютно похуй, но ПЛИС в таких задачах не используется.
>>367372 Используются или нет это совсем другой вопрос. Засунуть внутрь простенькую АЦП производителю не представляет труда, по деньгам он не потеряет. А пользователю приходится городить огород на плате.
>>367368 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.
>>367381 >это ЦПЛД Интел их называет FPGA и в них действительно есть все то же, что обычно есть в FPGA, но в добавок конфигурационная память внутри. >цена до жопы. По сравнению с чем? Если >>359104 то для BGA плата может оказаться сложнее и дороже, особенно если ты делаешь махарайку в единственном экземпляре.
>>367375 >Используются или нет это совсем другой вопрос. Самое нелепое утверждение, которое я когда-либо встречал. ПЛИС, как и всё прочее — это инструмент, который делается под определённые задачи.
>>367429 Фиговый критерий, по любым меркам. Экономия небольшая, а риск больше.
>>367431 >почему я должен ставить два корпуса на плату вместо одного? 1. Не должен, можешь использовать MAX10. 2. Твой вопрос из той же серии почему конфигурационную память не сделают сразу внутри. 3. У тебя не возникает вопросов, почему для питания ядра обычно нужно напряжение ниже 3,3 В?
>>367455 Не знал о таком. Прочитал, тоже кажется что это не нужно. >если у case есть default? Только там еще присвоить значение нужно, так что при использовании full_case код немного короче будет. Также это вроде как работает только для синтеза, а для симуляции не учитывается.
>>366929 >достаточно написать обертки для платформозависимых сущностей. А с VHDL предстоит долгая ебля с либами С какими конкретно либами? И что ты подразумеваешь под платформой?
Перенаправили из /pr/сюда. Хоть мне и кажется, что мой вопрос больше соответствует той доске. Cап /ra/! заканчиваю радиотехнический факультет провинциального Политеха. Программирование было с нихуя, за исключением пары-тройки шаблонных работ в Verilog. Раньше хотел пойти на второе высшее, но прочёл мнение, что программистам академическое образование ни к чему. Хотел бы вкатиться в программирование всяческих микроконтроллеров и прочего. Но понимаю, что это будет валяться мёртвым грузом без самых минимальных навыков и знаний. Короче, ещё один запрос каких-то базовых курсов, учебников и т.д. Чтобы уже через полгода мой быдлокод работал . Наиболее интересны языки: С++ (Arduino) и VHLD/Verilog (ПЛИС)
>>368131 Открыл предпоследнее видео, а там минут 45 про case, casex и casez. При этом ни слова о том что будет, если подать на вход сигналы с состояниями z и x. Ну да, кто ничего не умеет - тот идет работать в отдел стандартизации, а кто даже этого не умеет - тот идет учить.
>>368215 Очевидно что на вход case, casex и casez, т.е. в качестве того что в стандарте называется expression. Если применительно к видео, то на вход модуля Test, в котором набирался в этом видео код со всякими case, casex и casez. Вот тебе пример. Что выведет в результате? И самое главное, какие из этого можно сделать выводы? Если в том видео такое разбиралось, то извиняюсь, значит недостаточно внимательно смотрел.
>>368300 Нет, по моему это явно не то. Там ты подаешь на вход только комбинации из нулей и единиц. А я писал о том, что при использовании casex, при симуляции можно будет проглядеть появление неопределенных состояний на входе. То есть, при использовании casex, при симуляции может быть все хорошо, но на самом деле внутри будут неопределенные состояния, а это может вылезти уже при синтезе. Вот на картинке немного более наглядный пример. Выведет >case default >casex 2'b00 >casez default Из этого явно видно, что если при симуляции где-то внутри образуются неопределенные состояния, то casex их может замаскировать. Если уж объяснять различия кейсов, то этому эффекту нужно было уделить достаточно времени.
>>368336 Да, проглядел. Ну тогда почти нормально, только правильные выводы не сделаны. Обрати внимание на 41:30. На самом деле не нужен casex, а вовсе на casez. По крайней мере в синтезируемом коде casex вреден. Хотя я тоже могу в чем-то ошибаться.
Бля, пиздец. Хуле так плохо? Как можно X в проводе воспринимать как "тебя не должно ебать, что здесь находится, расходитесь, здесь нечего смотреть"? Нахуй такое делать в симуляторе, если по физическому проводу подать такой сигнал физически невозможно? Я хотел придумать смишную шутку, сравнивая с чем-нибудь подобное поведение, но даже специально не смог придумать что-то более нелепое. Я всегда считал, что X как значение сигнала означает "неизвестно или явно не установлено, возможен любой вариант", и не предполагал, что может быть иначе.
Сорян, если не в тему, но есть вопрос. Мне нужно запилить на ПЛИС схему, которая как можно быстрее вычислит, в каком диапазоне находится двоичное число. Т.е. 13-ти битный входной диапазон нужно разбить на 32 поддиапазона и вычислить в каком из поддиапазонов находится входная комбинация. Мне в голову пока приходит только мысль о том, чтоб поставить 5-ти разрядный компаратор, который сравнит входной сигнал с 16-м диапазоном, если меньше, то сравниваем вход с 8-м, если больше, то с 25-м и т.д.
"Как можно быстрее" — это подать вход на 30 компараторов одновременно и вывести сигнал от компаратора, который показывает "не меньше", если следующий за ним показывает "меньше".
>Мне в голову пока приходит только мысль о том, чтоб поставить 5-ти разрядный компаратор Почему пятиразрядный? Ты точно знаешь, что границы диапазонов у тебя определяются старшими 5 разрядами, а в младших 8 всегда нули? Что будешь делать, если диапазоны разбиты как 0-1, 2-3, ... , 60-61, 62-8191? У тебя границы-то вообще предполагаются жёстко заданными, или подаваемыми на схему в процессе работы?
Почоны, недавно на ЛОРе новость пробегала, что открыли какую-то там MIPS архитектуру, MIPSOpen чтоли. Теперь любой кот может свой ЦПУ замутить на ПЛИСе? Или как?
>>368812 >свой ЦПУ замутить на ПЛИСе Будто раньше нельзя было. Даже в этом треде есть исходный код простенького процессора (150 строк на верилоге). Или ты про процессоры, на которых будет работать линукс? Так и такие, с открытым исходным кодом, уже довольно давно существуют.
>>368812 RISC-V. Сейчас основной дроч на формальную верификацию. Есть даже свободно-открытые ПО от сообщества гиков и FPGA-платы от Lattice с открыто-свободным битстримом. Не такое крутое, конечно, как у Altera или Xilinx, но зато швабодка.
День добрый, мне нужно придумать преобразователь соотношения частот f1/f2 в двоичный код, что можете сказать об этой структурной схеме? В интернете я не смог найти примеры деления двух частот, и до конца не понимаю как мне делать схему, посоветуйте как реализировать это, надеюсь на вашу помощь Если есть пример похожей электрической принципиальной дайте знать
>>369014 Данным способом с разницей, чем дольше - тем больше точность. Если у тебя каждый счётчик подсчитает по одному периоду какой будет результат?
Если эти частоты невысокие относительно тактовой, тогда можно подсчитать длительность одного периода каждого сигнала в единицах тактов тактовой частоты и после поделить.
>>368829 >>368952 >>368994 С добрым! Я просто вообще не в теме, поэтому подумал что это какая-то крутая новость, а так получается просто рекламная акция? А какого уровня нужна ПЛИС, чтобы сделать простенький ЦП (типа Z80 или STM32F103)? Какая получится производительность? Чтобы подключить внешнюю DRAM-память, понадобится отдельная ПЛИС? Чтобы сделать вывод изображения по LVDS / DPI (ноутбучные / мобильные панели) - для этого нужно будет задействовать ещё одну ПЛИС? Вобщем, что-то типа хобби-ПК хочется реализовать.
>>369181 Открытая лицензия RISC-V даёт возможность собирать абсолютно кастомный CPU. Швободные FPGA-платы дают возможность делать это относительно недорого, у себя дома, в железе, а не только в симуляторе. Формальная верификация и современные среды разработки позволяют автоматически проверять дизайн твоей архитектуры на соответствие формальным правилам синтеза, вписываемость её в установленные ограничения, отсутствие багов, что даёт возможность поманяфантазировать о развитии в недалёком будущем технологий костылирования железа до уровня костылирования ПО. Это очень круто для людей в теме. Память и всяческие контроллеры ввода/вывода на FPGA-платах обычно присутствуют. Есть, конечно, любители паять это дело вручную.
Анон, поддерживают какие-либо инструменты формальной верификации 1'bX? Типа, мы задаём в assume, что при i_tvalid==0 |-> i_tdata=N'bXX...XX, и любой assert триггерится, когда проверяемое условие зависит от сигнала, зашкваренного 1'bX-ом?
>>316943 (OP) Подключил китайский usb blaster на stm32f103c8t6, поставил драйвера из quartus lite 18.1, а при открытии Tools/Programmer из квартуса ловлю BSOD . Как быть?
>>370783 Перепробовал кучу дров (от 16, 16.1, 19.1, для семёрки) - либо BSOD, либо квартус не видит бластера. Поставил таки в бубунту snandalone programmer и всё заработало.
>>370811 >Переустанови ШИПДОШS Без гарантии, что бластер заработает, и потом ещё день ставить весь мой софт и всё настраивать. Спасибо, анон, ты гений.
Здравствуйте, заканчиваю бакалавра по специальности " Мехатроника и Робототехника". В процессе обучения сформировалось стойкое желание разрабатывать электронную аппаратуру, писать под неё программы (под этим я подразумеваю всякие микроконтроллеры, ПЛИСы и т.д.). Так же хочется расширить знания по цифровой схемоте, методам изготовления микросхем, плат, различной периферии и т.д. Итак, вопрос, какие направления магистратура и ВУЗы дают такие знания?
>>371197 Хуевый будет специалист что-то делающий на FPGA, если не сможет написать простенькую программу на Си. Разное тут скорее "методы изготовления микросхем" и остальное. Да и то, это немного рассказывают для общего развития на всех смежных специальностях.
>>371198 Точно, все устарело. Математика, физика, РЦС, основы ЦОС и прочее. А еще в FPGA теперь без транзисторов наверное обходятся, потому что они тоже устарели.
>>371201 Для того чтобы быдлокодить всякую ерунду не требуется высшее образование.
>>371204 > Математика, физика, РЦС, основы ЦОС и прочее. А еще в FPGA теперь без транзисторов наверное обходятся, потому что они тоже устарели. > инб4 в магистратуре учат, а не дают устаревшие лабы из 70х
>>371206 Если так ставить вопрос (пусть меня научат!), то нигде наверное. Думаю, что на любой специальности рассказывают много чего необходимого, весь вопрос только в том, что у тебя после этого в голове задержится.
Антоны, кто-нибудь пользовался параллельной симуляцией с использованием флага -mc2 в QuestaSim? Не могу найти сетап гайда для этой опции (требует какую-то хитрую библиотеку и скрипт setup.sh в директории _mc2)
>>372089 Минусики таковы, что как только ты захочешь применить эту вещь к чему-то более сложному, чем мигание светодиодом, окажется, что пердолинг растет по экспоненте в квадрате. Плюсики там написаны (правда сомнительные): занимаешься пердолингом не на Систем Верилоге, а на Путоне.
>>371342 А Ментор уже может в параллельность? Сам им пользовался только совсем давно в бесплатной версии из комплекта Quartus, сейчас на работе используем Cadence Xcelium, как раз в понедельник получили версию 19.03 и сегодня буду смотреть, как заставить его в параллельную симуляцию.
>>373302 В смысле? У него же выведен Avalon ST (вроде, хотя, может, и MM), разве этого недостаточно? Или тебе нужен именно AXI или APB и чтобы без мостов?
>>373308 По-моему его нельзя инстанцировать в вакууме, гуи не позволяет, только как корку внутри Ниоса. Может из исходников получившейся сборки его можно выдернуть, но это такая себе ебля, можно у же и свой написать (в книге Pong Chu есть хороший пример)
Хочу захуйарить гигабитный езернет в дохуя медленных интерфейсов, вроде uart. Для начала пусть будет 32 низкоскоростных интерфейса. Как всё это архитектурно реализовать?
Это же возникает мультиплексор 32в1, не факт, что вообще что-то путное разведется.
>>373772 Может начнешь с чего-то условно попроще? Погугли поточные (потоковые) сети типа SDH(PDH) и элементарный поток E1. Там как раз что хочешь сделать. Осторожно, там ебаный и неиллюзорный дроч с синхронизацией между всеми узлами.А мне впадлу этим заниматься.
>>373772 Недавно понадобилось данные шириной 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).
А ещё недавно задача была почти один в один как у тебя, надо было с сенсора камеры принять 10 линий LVDS, объединить и отправить по более быстрому интерфейсу. Каждая линия передаёт по одному пикселю, требовалось сперва по отдельности десериализировать линию, потом собрать в один поток пикселей в порядке очереди и передать с некоторой степенью параллельности (4 пикселя на посылку). Тоже делал при помощи AXIS, там возникала сложность, что пиксели 10-битные, а AXIS работает побайтово. Забивал старшие биты нулями, переделывал в AXI Stream, переупаковывал по ширине при помощи готовой корки, выкидывал нули там, где они не нужны. Работает прекрасно.
>>373794 Упустил одну мелочь - в потоках Е1 у тебя постоянный поток говна, а не то густо, то пусто как в пакетных сетях Ethernet. Для первичного разбора ситуации самое то и проще в реализации. Реально не ебу как там происходит первичная синхронизация чтобы поймать 0 слот относительно которого идет прием и разбор на подпотоки. Тут тебе просто дан пример - что такое оборудование есть с бородатых времен. Привет цифровым АТС. Чего только в потоки E1 не пихали - и Ethernet, и rs232 (живьем видел) и много чего. Нехватает 64 килобит? Бери склеивай 2,3,4.. слотов читай как задание на реализацию для продвинутых. Напоследок скажу что всякое потоковое оборудование (те же конечные мультиплексоры) обычно стоят как крыло от самолета, в отличии от металлолома под пакетные сети. Так что твоя идея не нова, все давно реализовано, ищи и дан будет ответ.
>>373814 >>373820 Очень просто. В Е1 - даже если нечего передавать - передаются нули. Там нет пауз или тишины в линии - всегда идет передача. В пакетных сетях (тот же Ethernet) - данные передаются фреймами определенного формата и длины, между которыми есть промежутки (IPG) и длина фрейма разная - более-менее постоянная длина заголовка с адресами и переменной длины для данных. Нечего передавать - у тебя только link pulses на линии. Из-за всех этих служебных полей у тебя образуется неслабый джиттер в выдаче данных, которого нет и он предсказуем и постоянен в поточных сетях. Для жесткого риалтайма - это фейл. Для промышленности есть немного другой Ethernet с кучей костылей, в частности IEEE 1588, особые свичи допускающие кольца в сети (видел у бывшего Micrel).. Джиттер там никуда не девается, которого принципиально нет в поточных сетях, где задержка передачи стабильна и постоянна.
Обосрите меня нежно, закидав ссаными тряпками более-менее окольной информацией про максимальные токи ядра, pll и подобной периферии у Cyclone IV. Altera говорит пиздуйте в Power Estimator, а смысл там смотреть данные для мигалки светодиодом? Данные для максимально тяжелой загрузки при использовании всей логики и триггеров на максимальной частоте оно не показывает.
Плисаны, допустимо ли внутри олвэйса сбрасывать сигнал по его же высокому уровню?
reg we; always@(posege clk) begin if (event1) we <= 1; if (we) we <= 0; end
Я понимаю, что здесь лучше сделать детектор фронта, но дело происходит в здоровой стейт-машине и как бы мне не хотелось одним лишь детектором фронта не обойтись.
>>374511 В твоём варианте we будет перещёлкиваться каждый posedge clk, если event1 высок несколько тактов подряд. Хочешь, чтобы we длился ровно 1 такт — надо писать детектор фронта, хули поделать, жизнь — боль.
Алсо писать, как у тебя, допустимо, но выглядит как говно, сделай хотя бы if/else, чтобы два неблокирующих присваивания за одно событие одному регистру не происходили, такое невозможно в железе.
begin if (we) we <= 0; else if (event1) we <= 1; end
>>374568 >В твоём варианте we будет перещёлкиваться каждый posedge clk, если event1 высок несколько тактов подряд Это да, но по event1 я перескочу на другое состояние одновременно со сбросом we.
>>374573 >clock domain crossing Часто приходится это делать? Из моей практики разве что на всякие внешние ресеты приходилось ставить синхронизатор. А шины данных через тактовые домены пробрасываю с помощью двуклоковых fifo/bram
>>374582 Мы с тобой об одном и том же говорим? CDC-синхронизатор это устройство из двух и более последовательных регистров. Как с его помошью пробросить целую шину? Если на каждый бит шины поставить по синхронизатору - то это так не заработает.
>>374580 Вспомнил историю, после которой я начал так делать со всеми модулями, для которых неизвестно, куда в будущем может уйти их выход. Там даже не было cdc.
Был один модуль, у которого на выходе была комбинационная логика — он брал значения из регистров, лутом вычислял результат и передавал наружу без защёлкивания. Был другой модуль, у которого в одном из подуровней был асинхронный резет:
always @(posedge clk, negedge aresetn) if (!aresetn) result <= 0; else result <= some_xynta;
Казалось, что может пойти не так? Ну, гайдлайны рекомендуют синхронные резеты, но они тратят луты, а вход на сброс — вот он, уже готовый, на каждом регистре есть.
А потом оказалось, что на более высоком уровне иерархии комбинационный сигнал с первого модуля проходит на асинхронный резет внутри второго. А комбинационная логика даёт валидный сигнал только в заданные моменты времени, а между ними она может болтаться как угодно. В итоге у меня резет срабатывал в каждом такте, хотя "валидное" значение всегда было 1. Я искал этот баг с бубном и жертвоприношениями несколько дней. После этого комбинационные выходы у меня вызывают инстинктивное отторжение, вроде психической травмы. Ну и асинхронные резеты тоже. Плюс вспомнились ранее прочитанные гайдлайны, где выходы рекомендовалось делать на регистрах, и пришло осознание, для чего оно так.
Но вообще CDC приходится делать довольно регулярно, потому что управляющая логика синхронна с клоком софт-процессора, а обработка сигналов — на какой-то своей, сколько потянет. Обычно тянет больше, чем микроблейз.
>>374590 Если такое приходится делать, я обычно вставляю AXI register slice. Но правило, что выходы должны быть на регистрах, я почерпнул как раз из гайдлайнов по AXI.
>>374587 Или ты меня не понял, или я тебя. В одном тактовом домене сначала пишешь в регистр своё передаваемое слово, потом выставляешь флаг в триггере. В приёмном тактовом домене ждёшь пока флаг выставится и если выставится - значит можно читать с регистра передаваемое слово, оно там актуально и стабильно. Никаких двуклоковых fifo/bram тут не нужно.
>>374588 >А потом оказалось, что на более высоком уровне иерархии комбинационный сигнал с первого модуля проходит на асинхронный резет внутри второго. Это как так оказалось? Чей-то проёб, не иначе. Асинхронный сброс на то и асинхронный сброс что делается для сброса всей системы в исходное состояние, а значит внимание ему должно уделяться особое.
>>374593 >Чей-то проёб, не иначе. Люди ошибаются, человеку свойственно ошибаться. Нет программ сложнее хеловорлда без багов, и железки сложнее мигалки светодиодом без багов тоже нет. Но не каждый день удаётся словить баг, который невозможно увидеть на ILA, потому что ILA пишет сигнал только в "правильные" моменты.
>>374593 Это будет работать при условии, что состояние на шине данных будет длительное не будет меняться во время синхронизации. Какой-то конфигурационный параметр передать можно, но поток данных таким образом эффективно не передать.
>>374596 Передать, только медленно. А ели нужна скорость, то - да.
>>374594 >Но не каждый день удаётся словить баг, который невозможно увидеть на ILA Я взял за правило в начале имён асинхронных входов ставить букву а, что-то вроде aReset, что предотвращает от подобных косяков.
Тоже прохладную запилю. У меня было два автомата, оба Мили. И вот они обменивались сигналами между собой. Казалось, что могло пойти не так? А на деле некоторые выходные сигналы одного автомата срывались в автогенерацию, т.е. начинали переключатся на какой-то высокой частоте, значительно выше тактовой, и вернуть в рабочее состояние можно было только перебросив питание. Я весь извёлся пока понял в чём дело. У автоматов Мили выходы зависят не только от состояний, но и от входов, и когда у них заводишь сигналы друг на друга, то возникает обратная связь, т.е. петля, через их комбинационные схемы, что и приводило к таким эффектам. Дня 4 убил на поиски проблемы.
>>374597 Это, по ходу, как раз причина, почему в гайдлайнах AXI пишут про регистры на выходах. Я перезагуглил, там не написано, что регистры прям на выходах должны быть, но написано, что от входов до выходов не должно быть чисто комбинационных путей. Ну типа, если тебе слейв выдал ready==0, хочется ему сразу же ответить valid==0, без защёлкивания. Вот только если два подобным образом написанных модуля включатся друг в друга, они могут уйти в автогенерацию.
Плисаны, нужна схема, которая выдает айдишники допустим в диапазоне от 0 до 1024. После использования айди возвращаются в рандомном порядке для последующего использования. Что-то туплю, как это запилить?
>>374603 Можно по порядку, я так понимаю можно отдать по счетчику, а когда счетчик закончится гонять по кругу возвращенные ID, но вот что делать если какой-то из id не вернули я не могу придумать.
>>374603 А, понял. Это они возвращаются рандомно. Я б сделал 1024-битный массив "свободно-занято" и несколько каскадов приоритетных декодеров, дающих на выходе номер наименьшего незанятого бита.
>но вот что делать если какой-то из id не вернули я не могу придумать. Таймаут делать надо. Если не хочется делать 1024 таймера, то можно сделать группу таймеров, которые будут по очереди проверять освобождение айдишников внутри своей группы. "переходим к занятому биту — если он висит в течение заданного промеждутка, сбрасываем — если он пометился как возвращённый за время наблюдения, переходим к следующему занятому". Если айдишники в нормальном режиме освобождаются быстро, то один счётчик может проверять довольно большую группу и зависнуть только на реально потерянном.
>>374593 >Асинхронный сброс на то и асинхронный сброс что делается для сброса всей системы в исходное состояние И как ты поступаешь, если у тебя есть две ситуации сброса, начальный и принудительный в случае появления ошибки? Только не говори, что делаешь два разных ресета, наверняка же один используешь для всех целей. Отсюда такие баги и лезут. По крайней мере пока в первый раз не обжёгся, а потом-то уже конечно дуешь и на воду.
Анонче, поясни за всю хуйню. Учу Verilog, и у меня появились два вопроса: 1) Почему Synplify pro, не может нормально подсказать, где ошибка? К примеру, сейчас полчаса ебал мозг на простейшем примере, пока не нашёл опечатку в названии передаваемого модулю значения. Ладно бы это было просто что-то не то, так такой переменной у меня не существует вообще. В чем проблема сделать так, чтобы выдавались ворнинги/ошибки на неизвестные аргументы, как это сделано в GCC? 2) Встроенный в среду текстовый редактор абсолютно не умеет в автокомплит, подсветку синтаксиса (всё что не касается ключевых слов) и прочее. Такое вижу не только в IDE которой пользуюсь сейчас, но видел и в относительно свежих Квартусах. Опять же, почему так? И чем все в таком случае пользуются? Явно же не пишут во встроенных редакторах. Notepad++ или Sublime с плагинами? В нормальную подсветку синтаксиса кажется могут, но они вроде не очень умные, по источникам из других файлов ходить не могут, и прочее. Тоже не очень удобно.
>>374643 >пока не нашёл опечатку в названии передаваемого модулю значения. Для необъявленного идентификатора автоматом создаётся новый объект типа wire. В ворнингах это есть. Разумеется, в 99.99999% это означает, что ты где-то опечатался. Это норма.жпг, меня сначала тоже бесило, потом привык. Перестаёт быть проблемой, когда знаешь, куда в ворнинги смотреть.
>>374642 >И как ты поступаешь, если у тебя есть две ситуации сброса, начальный и принудительный в случае появления ошибки? Сбрасывать схемой сброса, у которой выход триггерный. Схема даёт импульс сброса на старте системы и в процессе работы по команде.
>>374644 >Разумеется, в 99.99999% это означает, что ты где-то опечатался. А оставшийся 0.00001% — это ты решил проверить "чё, правда создаётся?" — после чего забил на эту вредную хуйню навсегда.
Наверное, немного нерелетивный вопрос, но как на техническом уровне осуществляется рандомайзер в разных архитектурах? Я совсем дурак нешарящий, но предполагаю, что банальным выходом из метастабильности. Вроде в тех же х86 для программного рандома используется алушное деление с остатком, однако вполне возможно это обычный псевдорандом. Вопрос навеян вот этим >>374600 Алсо почему для плисов до сих пор пишут на verilog/vhdl и даже на "блочных" языках? Ведь есть же более симпотичный SV.
>>374693 Синтезаторы внутри Vivado, Quartus, Diamond поддерживают SystemVerilog Бесплатная версия ModelSim тоже поддерживает, кроме кавереджей, ассерешенов и пары прочих ништяков. Хочешь ништяки? Никто не мешает тебе стянуть QuestaSim с электроникса.
>>375009 Сижу в вивадо 2017.4 потому что более новых поломана функциональность IP-корки, которая мне нужна. Так что иди нахуй со свои подходом уровня арчешкольников.
>>375012 >Сижу в вивадо 2017.4 потому что более новых поломана функциональность IP-корки, которая мне нужна. Знаю я одного такого чела. Только он в планэхеде сидит.
>>375021 Да ничего. Рано или поздно индусы таки впилят полную поддержку SV, пусть в Виваде 2022, а ты как сидел на 2017.4 так и будешь сидеть, потому что КОРКА СЛОМАЛАСЬ.
>>375024 Вот только работать надо, задача должна быть решена, это требование №0. Перейти на системверилог в списке приоритетов стоит несколько после. Поломанность новых версий я проверяю с 2017 года регулярно.
Все вы тут такие охуенно умные, говорите, как будто прямо каждому хоть как-то показавшему адекватность будут давать доступ в свои. Люди за 40 лет со стажем на электрониксе в 10 лет с сотнями постов, помогавшие другим, часто туда не получают доступ. Либо отвечают модератору на дополнительные вопросы вроде конкретного названия специальности в дипломе, места работы, места жительства. Никто не мешает модератору задавать тебе эти вопросы - отвечаешь на них ты исключительно добровольно. Ты не хочешь отвечать? Ну а модератор не хочет тебя добавлять. И, одновременно с этим, часто доступ туда получают двадцатилетние студенты, ещё не имеющие даже диплома бакалавра и занимающиеся, разве что, своими проектами и имеющие ~50 постов на форуме. Всё зависит от рассматривающего заявку модератора и того, что у него в голове на этот момент. Если понравишься - может добавить. Не понравишься - тебя проигнорируют.
>>375173 Есть конкретный пример 40 летнего чела с 10 летним стажем, которому доступ не дали? Мне аж интересно стало, каким далбичем надо быть, чтобы тебя отфутболили.
Аноны, мне нужно вычислять смещение в памяти путём умножения входного числа на константу. Если я поставлю DSP48 для этого дела это нормально будет или bad practice? ну типа DSP48 в задачах ЦОС на вес золота, а я его для такой хуйни ставлю(хотя у меня в плисине не будет ЦОС)
>>375253 DSP48 и предназначены для умножения входного числа на константу, хуле. Так 99% фильтров работают, гонятся данные сквозь цепочку MAC, а те их на константы умножают, соответствующие форме импульсной характеристики. Так что ставь, не ссы.
Рекомендованный practice, правда, действительно использовать звёздочку и дать инструментам сделать inference блока DSP48. Если они будут тупить и инферить каскады лутов, можно добавить куда надо атрибут ( use_dsp = "yes" ), он охуенно работает, инферит в DSP48 даже аллаха. Не забудь до и после умножения пайплайновые регистры воткнуть, они будут правильно назначены на внутренние регистры DSP48, максимальная частота вырастет.
Я тут с платиной, но на итт возможно последняя надежда. Что нужно для вкота? Моя более-менее понимат цифровые примитивы, комбинационную логику, триггеры, fsm, uart etc. Как устроено это ваше fpga - туманно, но представляю. Асло как описывать железяки на hdl, синтез и симуляция - тоже в какой-то степени разобрался, за исключением разве что верификации. Второе. Достаточно скачать условный лайт квартуса и кодить на hdl, и уже после синтеза подбирать подходящую борду под проект, или необходима сама плис? Если последний вариант, что тогда брать для моргания диодом? Чем бы заняться с плис (или без) для лучшей практики на подобии >>316964?
>>375610 >Самое главное, что нужно для вкота - задача, которую требуется решить. Остальное - этапы ее решения, не более. Люто поддвачиваю. Без цели или задачи зайдешь в тупик. Рискуешь притянуть к себе столько всего, что можно магазин открывать или засинтезировать пентиум (не знаю, влезет не влезет в 100K-200K LE) или повесить на стену как картину. У меня вырисовывается на чем можно потренироваться - сделать эмулятор параллельной NOR памяти, содержимое которой хранится в DDR2 памяти и как-то снаружи заливается/читается. Хорошо так пришлось поебстись что бы используя 2 банка (Altera) подключить (в теории) DDR2 память 64M16 x2 и синтезировать IP CORE DDR2.
>>376199 >artix-7 Почему сразу даешь четкое название желаемого камня? Чем он так зацепил? Явно это должно быть на плате, но что именно - не говорится. Почему сел на стул с хуями от Xilinx, а не от Altera или Lattice?
>>376211 Потому что в альтеры уже умею ну почти. На артиксах уже планируются некоторые проекты, да и ac-701 есть, но домой ее лень тащить. Поэтому хотелось бы прикупить какую-нибудь дешёвую платку для ковыряния.
>>376227 Ни ешь, подумой! У них разница по логической емкости в 3 раза. Али определенно рвет шаблоны. Вот живой пример >>362929 - детально не гонял если че - 4 циклон на 115К LE. Вся платка в районе 100$, включая планку памяти. Простенький циклон 4 на 15K LE - меньше 20$. У одних из одного из оффициалов ЭФО коммерческая 4CE115 стоит около 335$. Как так то? Страшно сказать сколько стоят обосранные Flex10K 70$. Нашлась задачка для флексов где они будут жить в окружении родных 5В.
>>376231 5й циклон не зашел - хуй проссышь. Про Zynq хоть мануал есть и здесь частенько пиарят какую-то шину AXI - наверное проще будет выкатиться на мозгах от antminer.
>>376211 >Почему сел на стул с хуями от Xilinx Потому что адекватный человек с головой на плечах и понимает, что остальное практически нигде не используется. >>376236 >какую-то шину AXI Общепринятый стандарт, вообще. Который используется везде. В отличие от маргинального Avalon.
>>376225 > https://www.aliexpress.com/item/1000006630084.html На эту плату жаловались, что кристалл слишком маленький: >DDR3 контроллер занимает ~40% кристалла. Простенький дизайн из МикроБлейза, DDR3, EthernetMAC, QSPI и UART занял 90% кристалла. А так все хорошо
>>376236 > Али определенно рвет шаблоны. Вот живой пример >>362929 - детально не гонял если че - 4 циклон на 115К LE. Вся платка в районе 100$, включая планку памяти. Простенький циклон 4 на 15K LE - меньше 20$. > У одних из одного из оффициалов ЭФО коммерческая 4CE115 стоит около 335$. Как так то? У этого же продавца на али плата с Kintex-7 стоит раз в пять дешевле, чем голый чип на диджикее: https://www.aliexpress.com/item/32907109444.html Я так подозреваю (потому как у него ассортимент «то густо, то пусто» и документация напоминает незабвенную инструкцию к шоаррской лисе), что это чья-то подработка: паяют и продают оставшееся после основного проекта.
Читаю vol.verilog.com. И нихуя не пойму, что это значит?
а) assign #10 x = f(y); б) assign #(5,10) x = a ? b : c;
А конкретно не понимаю, что означает решетка и какое-то число рядом с ней? Я думал, что решеткой задаётся какой-то параметр, но чот я уже не уверен.
Алсо, задача нескольких параметров перечислением не совсем понял как работает. Если я укажу таким же образом два параметра, когда в инстанциируемом модуле их пять, что произойдёт? Оставшимся трём просто присвоится дефолтное для них значение которое указано в объявлении параметра в модуле??
>>376384 Это задержки. В первом случае единая задержка, во втором — раздельно для фронтов и срезов. Не задавай ничего перечислением, вообще не используй его и забудь. Это типа оператора goto, в языке есть, но considered harmful.
>>376386 Не уверен что ты прав по поводу фронтов и срезов. Я сейчас проходил тест, так понял, что второе (а именно #() шарп и скобки), означает задание параметров перечислением. А первое судя по всему да, задержки. Только не понял, как эти задержки применять (точнее, где можно и где нельзя).
>>376389 >Не уверен что ты прав по поводу фронтов и срезов. Ну ты ещё попизди мне тут.
>Только не понял, как эти задержки применять (точнее, где можно и где нельзя). В симуляциях можно. При написании модулей, которые будут реализовываться в ПЛИС ("синтезируемого кода") нельзя.
>>376391 >В симуляциях можно. При написании модулей, которые будут реализовываться в ПЛИС ("синтезируемого кода") нельзя. Эт я понимаю. Не понимаю синтаксически где нельзя ставить. >>376393 Ну и хули они не поясняют тогда? Официальный же учебник, ёбаный в рот
>>376400 >Эт я понимаю. Не понимаю синтаксически где нельзя ставить. Ставиться они могут везде, где ты делаешь присваивания. На практике имеет смысл ставить их только внутри блоков initial и forever, в которых ты описываешь сигналы, которыми ты тестируешь свой модуль. Типа:
>>376432 Ты зря, мне кажется, начал вкот со справочника по синтаксису HDL вместо учебника по цифровому дизайну (с примерами на HDL). Большая часть сахара, которую ты вызубришь, будем лежать мёртвым грузом, пока не забудется, а для решения задач ты будешь использовать лишь небольшую часть, наиболее удобную под твои задачи. Я задержки распространения (там, где она находится справа) на практике не использовал, это, по-моему, для ASIC-разработчиков, которым надо время распространения сигнала по линиям моделировать. А для плисов тул автоматом разместит всё так, что задержки влезут между тактами, либо скажет "не могу разместить твою схему, переделывай".
>>376434 Мне на курсах скинули мануал по VHDL и мануал по Verilog. Я думаю там и правда будет та часть, которая только для плисов ибо курсы будут от производителя плисов, но для общего понимания языка, думаю, будет не лишне понять, что вообще он умеет. По онлайн примерам вообще пиздец какой-то, у меня эти огороды даже не всегда заводятся.
>>376245 Нам в универе говорили, что альтера практически нигде не используется. >>376405 Сейчас бы верилог использовать. >>376434 >Большая часть сахара, которую ты вызубришь, будем лежать мёртвым грузом, пока не забудется, а для решения задач ты будешь использовать лишь небольшую часть Я замечал, что обычно принято изучать все основные конструкции языка, а потом переходить к рассмотрению уже того, какое подмножество является синтезируемым. Но так да, начинать нужно со схемотехники и черчения схем на бумаге с их просчётом.
>>376453 >в универе говорили, что альтера практически нигде не используется >Сейчас бы верилог использовать. Прям комбо. Расскажи, че за совковый универ?
>>376455 Мне сказали впитывать vol.verilog.com - я впитываю vol.verilog.com Чо те не нравится? Откуда мы знаем, какие знания от меня ожидают, я же не у тебя корки буду получать.
>>376453 Я уже слышал всё, что ты хотел сказать про sv, и уже отвечал тебе выше по треду. Давай ты вместо того, чтобы мозги впустую ебать, будешь лучше свои советы давать с использованием sv? Количество мозгоебли упадёт, качество контента в треде вырастет, сплошной выигрыш.
>>376535 Я прекрасно понимаю что он вроде бы и годный я его начинал смотреть, но я пока буду колоться и жрать кактус. Мне так легче воспринимать. А теперь, если ты не против, я бы попросил помочь мне с кактусом. А именно пикрил. Почему в конце задержка 15, а не 5? Просто опечатка?
>>376583 >Почему в конце задержка 15, а не 5? Это не задержка на картинке, а момент времени на временной шкале. То есть не "произойдёт через 15 квантов времени", а "произойдёт на 15-м кванте времени от старта симуляции". На 10-м кванте поменяется значение r2, на 15-м кванте оно дойдёт до w1, т.к. w1 тупит 5 квантов.
>>376613 Понял. Странно что сразу не сообразил. Логично, учитывая что они начинают оба сразу действовать. Ещё вопрос тогда по ней. Если я правильно соображаю, w2 имеет на шине задержку #5, так же как и w1. Assign это не процедурная операция, тогда почему w2 срабатывает после w1? Или он всё же параллельно срабатывает, и картинка не то имела ввиду, за что я зацепился?
>>376652 Xcelium. А вообще, Альтиум вот-вот собирается что-то выкатить. Альтиум Дизайнер у них няшный (а не как токсичный ментор), надеюсь, что и симулятор тоже будет.
Ёбаная скотоублюдская вивада, это же работало в предыдущей версии, какого хуя они это вырезали? Теперь что, две версии кода писать, с иксами для тестирования и без иксов для синтеза? Охуенное тестирование выйдет, 10/10 просто.
>>376386 >Это типа оператора goto, в языке есть, но considered harmful. Блин, а я в своих тестах повсеместно использую задержки. >>376405 > >initial begin >reset <= 0; >clken <= 0; >#10 reset <= 1; >#10 reset <= 0; >#10 clken <= 1; >end
Вот так в тестах получается лучше не писать? (если что-то более сложное, чем передёрнуть ресеты) Или я тебя неправильно понял?
>>377237 Закончил я этот курс vol.verilog.com Ну хз, я пока вреда именно подключения перечислением не увидел (на малом количестве соединений, конечно же). Меня там смущает скорее не неименуемое подключение, сколько возможность задавать параметры перечислением. Вот это какой-то баттхёрт.
Алсо дико понравились вставки из разряда "Ну эта функция языка работает, хотя работать не должна", или "Из-за особенностей самой первой реализации, данная вещь работает так как работает и никак иначе, хоть мы и знаем, что это неудобно" "В отличие от других языков, например Си, Верилог не поддерживает конструкцию и++, вместо этого необходимо писать и = и + 1" и даже проверочный вопрос далее такой встречается. Охуенно конечно. Не то что бы это пиздец критично, но и не то что бы имплементировать инкремент в верилоге выглядит дохуя сложной задачей.
>>377245 >"В отличие от других языков, например Си, Верилог не поддерживает конструкцию и++, вместо этого необходимо писать и = и + 1" и даже проверочный вопрос далее такой встречается. >Охуенно конечно. Не то что бы это пиздец критично, но и не то что бы имплементировать инкремент в верилоге выглядит дохуя сложной задачей.
Да и хуй с ним. Гораздо хуже, что в верилоге нельзя обращаться к отдельным битам массива, хотя каких-либо аппаратных припятствий к этому вообще нет.
>>377262 Алсо зачем ты решил вкатиться в FPGA? С твоим энтузиазмом лучше в программирование уйти, а в этом болоте рано или поздно ты разочаруешься в финансовом плане.
>>376456 >совковый Лол, нет. МИФИ, вообще-то. >>376535 >Ой, ВХДЛ-щик закукарекал. Потому что использовать VHDL правильно. Verilog мало кто даже нормально поддерживает.
>>377693 100мбит/с. Передача уже реализована, но очень ебано и по информационно-зависимому чем больше единиц, тем дольше передача каналу. Хочу попробовать избавиться от этого. Про gtx не знаю даже, я просто самоучка.
>>377694 >100мбит/с Это можно обычным serdes принять. Делаешь самосинхронизирующуюся кодировку (манчестерское кодирование) с одной стороны, с другой — оверсемплинг (пусть 400мбит/с), с которым можно в пределах некоторого рассинхрона определить, оставался ли сигнал неизменным дольше пары тактов или изменился за меньше чем пару тактов.
>>377696 Охуеешь, потому что 100MHz в манчестерском коде фактически означает 200MHz (потому что на каждый символ передаются два значения, дающие либо фронт, либо срез), и для их приёма с оверсемплингом нужно 400MHz. А без манчестерского кодирования ты не определишь, куда синхронизироваться. Тебе не похуй ли, сколько мегагерц? Не тебе ж на них шататься, а плисине, а плисине похуй, она железная.
>>377711 Аппноты от производителя плисины почитай.
У них обычно есть 1) референс-дизайны для последовательных интерфейсов с использованием блоков serdes и 2) гайдлайны по разводке дифференциальных линий на платах.
В идеале, тем и другим должны заниматься разные люди, но мы же в рашке, так что один студент обычно тянет лямку за весь пьющий чаи отдел.
>>377553 В альтеровских FPGA (во втором стратиксе и более поздних точно есть, в четвёртом циклоне тоже) есть хардблок (т.е., выполненный в кремнии, а не на ячейках) LVDS SERDES. Коэф. сериализации - до 10. Ширина линии - какая хочешь. Мы делали 16-битные с коэф. сериализации 6 и рабочей частотой 1,2 ГГц. Тренировку делай сам (встроена только DPA, bitslip нужно делать самому, для чего есть соотв. вход).
>>377716 > LVDS SERDES Это ты про alt_lvds? У меня между плисами одна дифпара, а там нужно с клоком на tx/rx, да ещё и 10бит максимум. Но скорее всего я что-то не так понял.
>>377731 Вот если ты на них сделаешь десериализацию в 8 раз, то сможешь получать свои данные как 2 бита @ 50MHz при оверсемплинге 400MHz. Загоняешь в serdes 400MHz, выходит из него 8бит 50MHz, выделяешь из них нужные данные, которых после всех преобразований останется два бита на тех же 50MHz. Потом пакуешь их по 7.
>>377716 Закидай говном доками - как вообще происходит синхронизация потоков? Включил корку 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МГц.
.>>377751 >Ебаться с каждым миллиметром? Крайне желательно. Сам же себе спасибо скажешь, когда всё заработает с первого раза. Или проклянёшь, когда не заработает, и теперь надо ебаться со всякими выравнивателями, наворачивая даташиты по 500 страниц без гарантии успеха.
>Приемник с другой стороны сразу по приходу сигналов начнет десереализацию Да, а тебе надо переключать нулевой бит либо сигналом bitslip, либо в логике, разрезая и склеивая каждую десериализированную посылку. Для поиска мест склейки в исходный сигнал добавляются уникальные синхрокоды.
>Не будет ли при приеме сдвига битов на 1 влево-вправо Если клок идёт вместе с данными, то обычно всё норм.
>>377731 Так сразу бы и написал, что не ширина линии 14 бит, а коэффициент сериализации 14. >>377751 Вот блин, мне интересно, ты нихрена не знаешь, но, при этом, занимаешься трассировкой плат. Как тебя до этого вообще допустили? Мне, например, сказали, что платы я делать никогда не буду, т.к. мои личностные характеристики не позволяют мне заниматься такой работой. >>377798 Нет. Делай второй уровень сериализации/десериализации на ячейках.
>>377800 >Вот блин, мне интересно, ты нихрена не знаешь, но, при этом, занимаешься трассировкой плат. Как тебя до этого вообще допустили? Ты забыл что мы живем в пидорашке? У нас можно всё, у меня вот 80% троек в дипломе и я единственный из группы пошел по специальности долбоёб.
>Мне, например, сказали, что платы я делать никогда не буду, т.к. мои личностные характеристики не позволяют мне заниматься такой работой. Хрюкнул на всю лабораторию. Тебе повезло на самом деле. Это неблагодарная работа. Очень мало хороших инженеров по этой специальности - даже люди со светлыми головами замыкаются в этой хуйне и перестают думать. Из инженера превращаются в трассировщика. А зарплата даже хуже, чем у ПЛИСоёбов, такие дела.
>>376356 >У этого же продавца на али плата с Kintex-7 стоит раз в пять дешевле могу пруфануть. На это плату (не сразу) продаван дал схему, 10Гэ завелось, брат жив. Примеры тоже хорошие, есть IP/UDP echo
>>376356 Есть мнение, что кинтексы с али отреболенные, отсюда такая цена. Я бы взял эту плату но она что называется не пришей пизде рукав. Логики много, а интерфейсов нихуя. 10G это круто, но куда ее подключать?
Разве что пилить на этой плате какой-нибудь майнер.
>>377822 >И один хрен, казалось бы вам дофига платят, но даже вшивому фронтэнд-джуну могут платить еще больше. Тут включается вопрос а чем ты сам по жизни заниматься хочешь. Все-таки радиолюбительство (и сопутствующие сферы) - это философия.
>>377822 >Это скорее исключение. Я бы сказал, что это какой-то странный перекос, который явно не обусловлен рыночком. Положа руку на сердце, этих трассировщиков за 160к/наносекунда можно было бы разогнать, понабрать за втрое буквально меньшие деньги макак-студентов, умеющих перерисовывать рекомендуемые решения из аппнотов, и было бы в целом не хуже.
>>377824 >Тут включается вопрос а чем ты сам по жизни заниматься хочешь. Все-таки радиолюбительство (и сопутствующие сферы) - это философия.
Радиолюбительство всегда можно оставить в качестве хобби. Другой момент, что в нашей сфере можно найти тёплое место, где и на хлеб с маслом будет хватать и работать на расслабоне. Только вот это путь вникуда, есть большой шанс оказаться на помойке.
>>377826 >понабрать за втрое буквально меньшие деньги макак-студентов
Это тоже неправильный подход. Если хорошо подумать, у конструктора большая ответственность. Нужно просто за эту ответственность с них спрашивать. Накосячил, какой-то интерфейс не заработал - штраф на половину оклада. Если косяков нет - ну не такие уж и большие это деньги. Про перекос по сравнению с FPGAшниками согласен на 100% обычно везде наоборот.
>>377835 >Радиолюбительство всегда можно оставить в качестве хобби. В качестве хобби ты вряд ли сможешь найти задачи уровня "ебануть фильтр для 100Гбит езернета".
>>377827 Это обычная зп для FPGAшника. Я ездил по собеседованиям в ДС. У меня опыт кое-какой есть, реализованные проекты и вот это всё. Но итог везде одинаков. Пробовался в 3 места, везде согласны взять, но максимум что предложили 80к. Да нахуй оно надо? В Москву надо ехать за 6-значной зарплатой я считаю.
>>377836 100G - это очень круто, да. Вот только какой с них толк? Кроме того, что потешил чсв. А еще наверняка твои махарайки будут предлагать РКН или подобным конторам. Как вообще после этого, совесть не будет мучать?
>>377838 >100G - это очень круто, да. Вот только какой с них толк? Ну так а какие задачи ты хочешь решать? Очередное SDR радио или поливалку для огурцов на FPGA?
>>377822 Ну да, джависты, да и те же фронтэндщики у нас получают дохуя. >>377837 У меня в Москве ЗП 80к. Могла бы быть больше (платят столько, сколько запросил на собеседовании) - у других на такой же должности, как у меня, она, в среднем, в полтора раза больше. Я получаю только оклад без надбавок и премий. Это при том, что занимаюсь, в основном, макакской работой.
>>377842 Может человеку с улицы никто не хочет давать нормальные деньги. Но скорее всего такой рынок. Такие как ты готовы рабоать за копейки и по сути обваливают этот самый рыночек. И ведь таких полно.
Я вот не представляю, как в ДС можно на 80к жить? Особенно если нет своего жилья.
>>377847 Смотри, в моем мухосранске средняя зп 33. У меня 50. В Москве средняя 80(за год вангую выйдет на 85-88) и FPGAшники довольствуются той же 80кой.
А теперь посмотри на цену за жилье, транспорт и остальные траты. Да я на свой полтинник здесь король. А в Москве с 80к хуй с горы. Таксисты здесь так же зарабатывают. Без обид, но себя нужно ценить, Анон. Иди проси прибавку.
>>377849 И самое печальное - это покупка жилья. Я уже выплатил ипотеку в мухосранске за 3 года. В Москве на 80к ты за 3 года даже нормальный первоначальный взнос не накопишь. Поэтому я считаю за любую умственную работу в столице (5/2 полный рабочий день) надо просить не меньше сотки. Кто платит меньше - они вас наёбывают.
>>377849 Я другой анон. 80к для Москвы, если ты вчерашний понаехавший студент без семьи, вполне нормальная цифра. Не пожируешь особо, но и не совсем хуй без соли.
>>377835 >Накосячил, какой-то интерфейс не заработал - штраф на половину оклада. Рецепт прямиком из сборника "Прохладные истории пидорашьего менеджмента: 10 лучших способов пустить под откос рабочий процесс и развалить к хуям коллектив". Люди ошибаются, это нормальный фактор. Не надо с наёмных рабочих спрашивать за риски как с организаторов бизнеса. Они не организаторы. Они от такого просто озвереют, даже среди студентов-нищемакак обстановка будет более рабочая.
>Если хорошо подумать, у конструктора большая ответственность. Я не оперирую идеей "справедливой зарплаты" или "достойной зарплаты", я просто констатирую, что на рынке есть люди, способные выполнять те же задачи гораздо дешевле без ущерба для результата. Я-то всегда за то, чтобы у любого наёмного работника зарплата была как можно выше, но это делается увеличением спроса на них, а в пахомии желающих пилить махарайки больше, чем желающих организовывать их разработку и производство. (Поэтому считаю, что все хорошие люди своей основной целью должны ставить съёб.)
>>377869 >Мне в следующем году уже 30 будет. Куда уже сьебать из подводной лодки? Родителей-пенсионеров кину здесь? Твой выбор, твоя жизнь. Единственная, если что. Можно посвятить её тому, чтобы жрать говно, но это странный выбор.
>Так разве не пидорашьий менеджмент устроил такой перекос? Наверняка, но если пидораший менеджмент может устроить одно говно, это не значит, что он не может устроить другое.
>>377904 Тот же JLC явно утверждает что умеет в 6 слойные платы. Решил уточнить - подойдет или нет для мигания светодиодом (или светодиодами если повезет)? Не слабовата будет? Потянет?
>>377921 У меня только такой дешманский закос под FPGA. Схемки нет, надо потрошить и прозванивать каждый из 700 с хуем выводов. После этого можно помигать минимум 4-я светодиодами на плате. Где можно взять (кроме open cores) максимально точную корку 580ВМ80А на Verilog? Именно 580ВМ80, Z80 и его клоны не интересует.
>>377939 HLS? Что что? Чем плох стандартный Verilog / VHDL? Тот же OpenCV? Такие тормоза как я если и балуются - то засинтезировал, сконфигурил, смотришь. Долго и нудно, да. Для простых проектов типа мигалок светодиодом - норм.
>>377941 Ничем, просто почему-то у меня то, как ты рассказываешь про свою плату и про мигание светедиодом вызвало ассоциацию с ардуйнёй, а оттуда уже с HLS.
Как под виндой выводить диагностические сообщения Flexlm? Скачал Q 13.0 SP1 с кряком, он работает, но нет лицензии на некоторые IP, например, на PCIe. Под линуксом в тулах Cadence чтобы узнавать фичи, которые нужно прописать в лицензионный файл после патча тула, можно было перед запуском тула прописать в консоли `export FLEXLM_DIAGNOSTICS=3`. Что для этого делать под виндой?
>>377942 Ну ты сравнил.. Где ардуино, а где HLS. По мне в HLS проект пилить сложнее, чем на чистом HDL. Там нет этих ваших абстракций, притянутых за уши парадигм и прочего мозготраха. хотя, возможно я сейчас как динозавр рассуждаю, ведь просматривается явная аналогия между переходами с HDL -> HLS и схематик -> HDL.
>>378257 >UART ебани. У кого-то скоро станет реальностью. Есть бредовая идея поучить Verilog на реальных примерах, "клонируя" давно прогнившие экскременты мамонтов типа ВВ51, ВВ55, ВИ53 и подобное. Уже нарисовал платку под КР580ВМ80А+ГФ24+ОЗУ+ПЗУ+ обосранный Flex10K30 с AT17LV010.
>>378262 Это я умею. Точнее умею только зажигать, а гасить - только задувая. До мигания так и не дошел и не понимаю - как так получается.
>>317906 Некропостинг, да. >насинтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало? Да. Не знал что FPGA одноразовые? Залил конфигурацию и после передергивания питания она стирается. Flash память радом для лохов. Смотри и учись как правильно делается http://dihalt.ru/poslednij-geroj-truda-chast-0fh.html ".. на базе легендарного компьютера PDP-11. Адская машина!!! Грузится это чудо с здоровенных, размером с виниловую пластинку, 8″ дискет. Т.к. дискеты уже давно все в кал убитые и старые, а гарантии, что в следующий раз можно будет загрузить систему нет никакой, то станок пашет без перезагрузок уже лет 20, подключённый к трём аккумуляторам и, на всякий случай, дизелю. Дабы поддерживать его жизнь в случае проделок Чубайса."
Подскажите, как быть. Речь идёт о хобби-проекте на ПЛИС. Суть в следующем - идея годная, реализация слабая. Задача сложная - сделать так, чтобы моё хобби стало вашим хобби. Есть идеи?
>>380770 >Есть идеи? Как минимум порадоваться. В отличии от остальных анонов - есть конкретная цель/задумка/проект, а не "с чего вкатываться?" и это огромный плюс. Со сложностью проекта определился? Как минимум по части сколько надо выводов и какие планируются интерфейсы ввода-выдода? На чей стул присел? Xilinx/Altera/Lattice/Microsemi?
Всё очень просто и в то же время очень сложно. Вообще-то идей несколько и одну даже воплотил в Cyclone III EP3C10E144C8.
Что касается интерфесов, пока есть только UART. В теории, совсем в теории, для каких-то применений его достаточно. А вообще хотелось бы задействовать всю мощь ПЛИС и отладочной платы.
Там же в куче самописный интерфейс для SDRAM MT48LC4M16A2-75. Но не очень стабильно работает. В тестах отрабатывает отлично, регенерация есть, а в проекте глючит.
Да что ходить вокруг да около - хочу предложить оригинальную 32-х битную процессорную архитектуру. И транслятор ассемблера для неё.
>>380796 Отсылка была как минимум к коду, из которого можно попробовать выдрать контроллер SDRAM и сопутствующие "периферийные" устройства. Потактовой версии 580ВМ80А случаем нет? Клоны не интересуют. Именно "родной" советский 580ВМ80А.
>>380820 Почему сразу шизик? Но да, я полагаю что неправильная архитектура бортовых ЭВМ это существенный фактор. Но это скорее к софту относится. Более надёжную систему можно построить и на уже используемом железе.
Мне бы хотелось донести до вас красоту вот этой системы команд. В отдельной теме, но пока можно и здесь. Жёлтый цвет - инструкции зарезервиованы. Условные и безусловные переходы только относительные. Адрес возврата из подпрограммы всегда в регистре. Все операции только 32 бита. Плавающей запятой нет. Уже можно ругать.
Одна из идей - "бесконечно" расширяемая система команд за счёт увеличения длины инструкций.
>>380827 Присоединюсь к анону выше. Ты шизик. Я так и не понял, ты уже сделал этот процессор или все никак? Помимо этого, по твоей таблице без детального описания инструкций можно только гадать, что ты там навыдумывал. И писать программы ты будешь, разумеется, на ассемблере?
>>380832 > Я так и не понял, ты уже сделал этот процессор или все никак? Прототип давно сделал. Работает. Но это лишь небольшая часть от того, что хотелось получить в итоге. Самое вкусное как раз и не реализовано.
>Помимо этого, по твоей таблице без детального описания инструкций можно только гадать, что ты там навыдумывал. Да. Согласен. Наверное это нужно в первую очередь.
Ну вот смотри - в первой строке однобайтовые команды. 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, то они заточены для работы со структурами и списками. Их реализация необязательна, но их использование позволяет упростить и уменьшить код - указать смещение адресу. И опционально проверить резултат операции на ноль/не трогать флаги.
Команды сложения и вычитания всегда используют перенос.
> И писать программы ты будешь, разумеется, на ассемблере? Пока да. На макроассемблере, который часть кухни скрывает макросами.
>>380827 >Почему сразу шизик? Потому что пытаешься решить проблему, которой не существует. Проблемы в системах управления, которые решаются сменой ISA — это исключительно твои ни на чём не основанные фантазии. Одно дело, если тебе хочется джаст фо фан запилить проц с интересной тебе ISA, это ок. Другое — когда ты начинаешь верить в постулаты, не основанные на эмпирическом знании, это уже шиза.
>>380846 >Единственный "недостаток" всех таких проектов - как писать управляющую программу, кроме как на ассемблера. Вовсе не обязательно. Форт или лисп недолго и на ассемблере написать. >Что за куча негатива? Мне кажется, что не за сам процессор, а за "революционность" идей и невнятную подачу информации. Да и нет тут заметного негатива.
>>380858 >которые решаются сменой ISA Оригинальная ISA это вообще побоочный продукт. Я же оговорился вот тут >>380827 > Более надёжную систему можно построить и на уже используемом железе.
Изначально я хотел добавить несколько инструкций для работы с сообщениями в любую популярную архитектуру. Это бы решило множество моих проблем - компилятор, библиотеки, специалисты и т.д. Но засада заключалась в том, что свободного места под коды операций у популярных архитектур нет. Особенно у x86. Посмотри за счёт чего сейчас расширяется система команд и какие монстры получаются. Отсюда и оригинальная ISA, которая к надёжности не имеет отношения.
Надёжность следует из синхронности. Если ты без прерываний в суперцикле будешь опрашивать порты и реагировать на полученные данные, то это будет достаточно надёжная система в плане временных характеристик, но она будет иметь плохое время отклика и сильно греться. Если ты используешь прерывания, то система будет иметь хорошую отзывчивость, сможет засыпать между прерываниями, но у тебя появится проблема СИНХРОНИЗАЦИИ.
Да, ты не считаешь синхронизацию проблемой, потому что её решают все разработчики, она давно известна, все уже привыкли и никто её проблемой не считает - все современные сиситемы так или иначе решили эту проблему.
Называй меня как хочешь, но я ТВЁРДО УБЕЖДЁН и проверил экспериментально, что замена прерываний синхронными сообщениями это лучший компромисс между надёжностью и эффективностью. Любую систему можно построить как множество задач, обменивающихся сообщениями. Прерывания это тоже в некотором роде сообщения, но они асинхронны.
Я думаю по поводу сообщений у тебя не возникнет возражений, потому как, я надеюсь, VxWorks и QNX/Neutrino наиболее часто используются в космической технике и используют эти принципы.
Камень преткновения это синхронность. И плисоводы меня поймут - они первым делом бьют по рукам за асинхронный дизайн. Если пойти чуть дальше и на уровне ядра ОС отказаться от асинхронности, то решатся проблемы надёжности, изохронности и энергопотребления. Конечно не "бесплатно" - взамен появляется проблема сложности. Недосмотрел и получил проблему взаимоблокировки. Пример - задача №1 посылает сообщение задаче №2, которая посылает сообщение задаче №3, которая посылает сообщение задаче №3. В итоге все друг друга ждут и система заблокировна. Эта проблема решается проектированием. А если кому лениво расписывать программно-аппаратный комплекс на таком уровне - пусть берёт готовое решение, продуманное за него, и обвешивает его нужной функциональностью.
Что касается прерываний, то их следует заменить сообщениями. Если бы ты видел, как при этом урощается обработчик, ты бы меня поддержал. Суть в том, что задача спит в ожидании события - сообщения от другой задачи, прерывания от устройства или таймаут. Любое внешнее событие приходит в одно место. Обработка сводится к анализу события, реакции на него и переходу в состояние ожидания. В итоге управление тем же спутником или луноходом выглядит как несколько десятков спящих задач, периодически выходящих из сна, как-то взаимодействующих и переходящих снова в состояние сна.
Наконец, когда все задачи в состояниии ожидания, выбираешь ближайшую до пробуждения задачу и отрубаешь клок на количество тактов до пробуждения. Клок так же может включить внешнее событие - прерывание.
Ещё раз - я не утверждал что ISA связана с надёжностью. Возможно корреляция какая-то есть, но мне ничего об этом неизвестно.
>>380865 Я нихуя не понял что ты называешь сообщениями. Может напишешь более доступно? И на счет отсутствия свободного места под опкоды - явно бред. Взять хоть risc-v или mips.
>>380865 Нет никакой проблемы синхронизации. Многопоточность — это абстракция, которая вынесена за пределы уровня железа на уровень софта потому что человечество выработало именно такой путь решения сложных задач: иерархически разделять всё по нескольким уровням абстракции от простого к сложному. Процессор ничего не знает про потоки, зато он прост и надёжен. А то, что ты хочешь, перенести на него управление многопоточностью — это попытка совместить две аккуратно разделённые абстракции в один переусложнённый комбайн, который ни верифицировать, ни протестировать на всём множестве возможных состояний будет невозможно, и решаемые которым мнимые проблемы никто проблемами не считает, а считает грамотным иерархическим подходом к нарастающей сложности. Это предложение из серии "а давайте перепишем гуй на ассемблере, летать же будет, ёба!" Нахуй и в пизду такое счастье.
>>380871 Сообщения это точки взаимодействия между задачами. Это IPC - Inter Process Communication. Прерывания тоже транслируются в IPC. В микроядре L4 это делается программно, самим микроядром, моя цель - реализовать их аппаратно. У сообщения есть таймаут - не ждать, ждать заданное время или ждать бесконечно. На этом базисе строится всё.
Вот, из соседней темы пост >>380844 Видишь как реализована функция задержки? Циклом с опросом TickCounter. Как бы делал ты? Вероятно что вешался бы на таймер (если ОС не предоствляет функицию задержки). Посредством сообщений эта задача решается элементарно - ждёшь сообщениие от самого себя в течение заданного времени. Время зарежки отдаётся другим задачам или процессор спит, если нет активных задач.
И снова к прерываниям - транслируй прерывания в IPC, и половина задачи решена.
Я понимаю источник своих проблем - хочется объять необъятное, отсюда и скомканные объяснения и перескок с одной темы на другую, и объяснение деталей там, где они не нужны.
Давай попробуем разобраться на примере. Вот на крыле самолёта есть лампочка, которая моргает. Предлагаю тебе написать программу, которая будетт управлять морганием этой лампочик. С возможностью запускать и останавливать моргание, а так же с возможностью менять частоту моргания. На HDL языках это будет очень простая программа. А как насчёт программы для микроконтроллера? Если приведёшь пример такой программы, я покажу аналогичный пример на сообщениях. И посмотрим у кого получится проще и элегентней.
> И на счет отсутствия свободного места под опкоды - явно бред. Взять хоть risc-v или mips.
Когда я начинал, RISC-V то ли вообще ещё не было, то ли он был известен лишь в узких кругах. Что касается MIPS, то может быть и можно. Давно это было, смотрел корки MIPS на opencores.org и решил не связываться. Как бы не очень люблю трёхадресные команды, не очень люблю RISC Кстати, если не лениво, то подскажи хотя бы два свободных ОП-кода для него. Как минимум нужны две инструкции - SEND и RECEIVE. Адрес задачи для коммуникации в регистре, таймаут в регистре, 14 регистров под сообщение, остальные регистры меняться не должны и принадлежат задаче.
>>380880 На примере х86 рассуждать об архитектуре — это зашквар, если, конечно, речь не о том, как х86 безнадёжно вынужден тащить за собой все колебания линии партии, неудачные эксперименты, ошибки проектирования и костыли. Причём накопление нелепостей и идиотизма уже таково, что его тоже вынесли на отдельный уровень абстракции, заставив заниматься им простое и надёжное RISC-ядро.
>Угу - семафоры и критические секции - вот это вот всё с потолка взялось. Это не проблемы синхронизации. Это задачи синхронизации и инструменты, которые работают, решают задачи и выполняют заявленные функции.
>>380887 >Причём накопление нелепостей и идиотизма уже таково, что его тоже вынесли на отдельный уровень абстракции,
Вот тут абсолютно согласен с тобой. И предлагаю посмотреть в сторону моей системы команд, наверное в отдельной теме, чтобы не раздражать честной народ.
>Это задачи синхронизации и инструменты, которые работают, решают задачи и выполняют заявленные функции. Вот именно это мы обсуждалv в /spc - >>512088 Давай не будем возвращаться к законам Кларка и NIH-синдрому.
>>380890 >>380876 Ты какой-то чудной. Тебя спрашивают как работают твои сообщения (на уровне инструкций), а в ответ ты начинаешь писать о том, как они хороши. Ну не странно ли это?
>>380893 >Тебя спрашивают как работают твои сообщения (на уровне инструкций)
SEND и RECV осуществляют вход в планировщик. Программный или аппаратный, это уже детали. Планировщик коммутирует регистровый файл устройству выборки и выполнения. Пока так.
>>380897 >Это как? Что за микроконтроллер без таймеров?
Совершенно верно. Только встроенный счётчик тактов планировщика, к которому нет прямого доступа со стороны программиста. Все временные интервалы определяются лишь таймаутами ожидания приёма или передачи сообщений.
Иными словами все таймеры заменяются одним счётчиком, который считает такты до ближайшего события.
>>380900 Чуть эффективнее. Иногда даже не чуть. Погугли на тему "scheduler hardware acceleration". В некоторых ситуациях код планировщика может съесть до 20% процессорного времени.
Но даже программная реализация получается лучше, чем традиционные решения с кучей таймеров - пример выше с управлением морганием лампочкой.
Архитектурами занимаются целые группы ученных в исследовательских центрах крупных международных корпораций и тут ты такой красивый со своей охуительной прорывной идеей выскакиваешь. Ебать, как амд/интел/арм до такого не додумались?
>>380904 Понятно. То есть никаких преимуществ, потому что контроллер - не числодробилка, и проц всё равно большую часть времени находится во сне/ожидании.
>Но даже программная реализация получается лучше, чем традиционные решения с кучей таймеров - пример выше с управлением морганием лампочкой. Но все эту задачу всё равно сделают на паре прерываний. Наверное, потому что им просто не открылась Истина, что они делают непросто и неэлегантно. Жалкие людишки.
Лучше расскажите, как сделать обработку пакетов. Есть axi-stream шина(слейв и мастер или как там сейчас политкорректно? ). По axi необходимо поддерживать 8 различных сессий обмена данными. Если обрабатывать всё это в одной FSM получится дохуя ветвлений и потом заебусь это дело отлаживать. Есть ли смысл в данном случае использовать броадкаст - то есть разделить 1 шину на 8 получится что каждая сессия будет работать со своей шиной. Или забить, пилить всё в одной FSM?
Вообще есть ли предел числу состояний после которого начинаются проблемы с дизайном?
>>380921 >Есть ли смысл в данном случае использовать броадкаст Ровно для этого и придуман был AXIS interconnect и сигнал tdest.
>Вообще есть ли предел числу состояний после которого начинаются проблемы с дизайном? Прямой зависимости от числа состояний нет. 16-битный счётчик можно считать FSM с 65536 состояниями.
>>380923 >Прямой зависимости от числа состояний нет. Ну как это нет зависимости? А если потребуется подать на комбинаторную логику текущее состояние? Если у меня предположим 3-битный регистр состояния - будет потрачена всего 1 LUT. В случае с 8-битным регистром уже одним LUT не обойтись.
>>380924 >В случае с 8-битным регистром уже одним LUT не обойтись. С ростом числа состояний у тебя проблемы с головой начнутся раньше, чем с производительностью.
>>380926 Ну например, при использовании one hot-кодирования состояний проблемы начнутся быстро. Ладно, хрен с ним, с кодировкой состояний. Основная проблема даже не в них. Для передачи пакетов обычно использую сдвиговый регистр, а т.к. вариантов пакетов слишком много, получается жирный мультиплексор.
>>380928 Onehot-кодирование было изобретено как раз для избежания проблем с декодированием состояний. Есть другие варианты. Например, тебе было норм использовать три активных бита, можно придумать кодирование, которое каждое из возможных валидных состояний задаёт определённой комбинацией из трёх единиц среди кучи нулей. Есть всякие автоматизированные генераторы для таких вещей, я ни разу не использовал, не было нужды.
>т.к. вариантов пакетов слишком много, получается жирный мультиплексор. Конвейеризация поможет от всего. Дели по поддиапазонам, буферизируй и потом разбирай каждый поддиапазон.
Хочу запустить какой-нибудь эмулятор cocнолей на FPGA. Какую архитектуру рассмотреть?
Не хотелось бы самостоятельно писать проц и вот это всё. Готов взять чужое ядро проца, портировать его под архитектуру доступной мне плисины(xilinx 7 series) ну и допилить проект в части подключения к плате джойстика, образа картриджа, вывода звука и изображения.
Начал читать про денди. Всё бы ничего, вот только они наворотили дел с интерфейсом картриджа. Разрядности адресной шины недостаточно, поэтому используют специальные чипы(мапперы) которые переключают банки памяти. Под каждый тип картриджа придется делать отдельный эмулятор.
Как с этим обстоят дела у сеги? Накидайте интересных проектов по этой части, если кто интересовался.
>>381221 Ты хоть знаешь что такое фильтр и как он выглядит? Что мешает тебе сделать все это на компе? С чего ты вообще взял, что для этого требуется ПЛИС? Или ты считаешь, что фильтр это такая магическая штука, что кроме как на ПЛИС не заведется? Вот серьезно, хоть бы с передаточной функции этих фильтров начал что ли. Вообще, что мешает вставить твои фильтры в какой-нибудь симулинк и послушать что будет на выходе?
Короче скачал сырцы вот этого эмулятора: https://github.com/MiSTer-devel/Genesis_MiSTer С самого утра собирал в блеваде проект дабы оценить объем работ по портированию. По закону жанра в репозитории не оказалось части файлов, но вроде нагуглил.
Сейчас вот сижу и смотрю на огромную портянку файлов в иерархии проекта и охуеваю. Есть шансы во всем этом разобраться?
Еще пытался запустить в зашквартусе оригинальный проект. В qpf-файле сказано, что требуется версия 17.0, скачал, установил. Попробовал открыть - хуй там плавал, подавайте версию pro. Где ж ее еще найти эту pro? Как же с вивадо охуенно, не надо ебаться с кряками, не нужно держать на компе зоопарк версий, не надо отдельно устанавливать саппорт пакеты для девайсов. Достаточно иметь ise 14.7 и более-менее свежую версию вивады и у вас будет возможность работы практически со всей линейкой Xilinx.
>>381260 >Есть шансы во всем этом разобраться? Вопрос уровня: "Смогу ли я поднять эту штангу?"
>Где ж ее еще найти эту pro? А если создать проект в твоей версии и самому добавить в него файлы?
Я бы тоже от pro не отказался, у этой версии вроде как есть "инкрементальный" синтез, позволяющий каждый раз не пересобирать весь проект, а только измененные файлы.
>>381262 >А если создать проект в твоей версии и самому добавить в него файлы?
Да уже нужды нет, я хотел только взглянуть на иерархию но уже через вивадо всё собрал. Сейчас сижу подгоняю альтеровский SV-код под причуды синтезатора Xilinx.
Вот у X тоже свои прибабахи. В always_comb повсеместно используется блокирующее присваивание на wire. Казалось бы всё норм, но нет, у хилых так нельзя, меняй wire на logic!
>>381268 Я видел такое в коде под Xilinx. При попытке скомпилировать под Altera я получал закономерную ошибку. Но это был Quartus II (даже ещё не Prime), что там навертел Интел в семнадцатой и более поздних версиях - не знаю.
>>381265 >Вот у X тоже свои прибабахи. В always_comb повсеместно используется блокирующее присваивание на wire. Казалось бы всё норм, но нет, у хилых так нельзя, меняй wire на logic! Сука, как же я вас, пидоров, ненавижу. Пишете говнокод, потом мне дают этот говнокод и говорят собрать, вносить какие-либо правки при этом запрещая и поясняя, что "wire в левой части в always - ЭТО ПРАВИЛЬНО, т.к. это комбинационная логика" . А у меня Synopsys Design Compiler и VCS такое дерьмо собирать отказываются. Будь добр, прочитай стандарт на верилог, либо забудь про разработку цифровых схем.
>>381279 > поясняя, что "wire в левой части в always - ЭТО ПРАВИЛЬНО, т.к. это комбинационная логика" . always это комбинационная логика? Давно и у кого?
> у меня Synopsys Design Compiler и VCS А зачем тебе они? Ты чужие поделки воплощаешь в кремнии?
>>381282 >Давно и у кого? У вериложцев со времён изобретения always @() Что туда где-то разрешают засовывать wire в левую сторону, я, впрочем, не знал.
Даже не знаю, как к этому относиться. С одной стороны, люто бесит, что для описания комблогики приходится объявлять reg, которые не компилятся ни в какие регистры в железе. С другой, wire, который внутри блока последовательных операций самостоятельно хранит своё значение, тоже тот ещё майндфак.
>>381358 Прежде чем вставлять модуль, нужно объявить его как компонент, в этом объявлении ты пропишешь все порты с их типами. После этого можно вставлять.
>>381412 Почему на интеле это компилится? Ебанул вот так: ioq := (ioq and ('0' & '0' & '0' & '0' & '0' & x"7")) xor ('0'&BusA); Хуй знает как на языке Богов сказать 5'b0 надеюсь угадал
Есть пачка некро плат со вторым спартаном и изи-юсб.
Слил поставил оче старый ISE. Всё ок, в смысле попробовал что-то наваять на верилоге - оно синтезируется, фиттинг и остальное успешно заканчивается, пины прибил.
Теперь вопрос: а как мне это дело симулировать?
Где брать Modelsim XE? iSim? ЩИТО ДЕЛАТЬ КАК ЖИТЬ БЕДА
>>381413 >7 это все равно 3 бита, а не 4. Если пишешь X"7", то это 4 бита. X"07" - 8 бит.
>>381416 >Хуй знает как на языке Богов сказать 5'b0 На языке богов ты объявляешь константу constant c_mask : std_logic_vector(8 downto 0) := "0_0000_0111"; и делаешь and с этой константой.
>>381457 Ищем мастурбаторы. Пока что глаз положен на Reverse U16 и DivGMX и легкое охуевание где добывать детальки под них. Фанат-коллекционер Altera и тихо фапаю на Xilinx ZU-28DR.
>>381451 у меня сейчас вот так всё выглядит. Можно выбрать разные симуляторы и сделать для них либы для тестов. Но симуляторов, ес-но, нет. iSim не вижу.
Открыл пример из комплекта, таргет был xc2c00 auto. Всё ОК, ну за исключением невозможности симуляции из-за отсутствия симулятора. Поменял на xc9500xl.
Внезапно вот это вот:
> ERROR:Xst:899 - stmchine.v line 42: The logic for <current_state> does not match a known FF or Latch template.
>>381462 А тебе с констрэйнами надо? Если нет, то поставь рядом Квартус - с ним ModelSim идёт в комплекте. Или Алтера Интел раздаёт. Но поиметь ModelSim всё же можно.
К слову, я вчера пробовал свои силы в верилоге и для таргета выбрал эти XC9500XL, которые у меня есть (у них 5в толерантые входы и тут как раз надо такое).
Было много разных странных ошибок, вроде того, что выше. Хотя икарус верилог всё хавал.
>>381563 Каноничные MAX7000S MAX3000, "толстые" MAX II (EPM1270 EPM2210), "толстые" MAX V (5M1270 5M2210). Если только входы - можешь тупо на резисторах поделить если впадлу буферы искать. Сильно не радуйся, MAX II и MAX V - так же требуют один подтягивающий резистор для совместимости с 5В.
>>381581 >>381576 Дяденька, определись.. Какой стул нужен? Толерантность к ПРИЕМУ 5В (без выдачи сигналов 5В). Полностью теплые и ламповые 5В на ВХОД и ВЫХОД? Сейчас выход один - только буферы. Для нищебродов - обычные, питаемые напряжением принимающей стороны или нормальные буферы с двумя питающими напряжениями. Для параноиков в стиле "я не трогал, я просто смотрел" - есть 74LVC07A и подобное (open drain buffer) Можешь взять обоссанный Flex10K - это FPGA с честными 5V IO, но есть проблемка с конфигурационными ПЗУ типа AT17 или можешь сам конфигурить ее отдельным МК.
>>381584 Я везде писал про 5в толератные входы. из того, что это может - сейчас это остатки xc9500XL, второй спартан, coolrunner xpla3? А так же море микроконтроллеров с армами (которые вполне могут сэмплировать на мегагерцах ГПИО и делать, что душе хочется). Но это получается дорого и через жопу.
>>381475 >if (reset == 1'b1) Замени на if (reset). ISE не поддерживает логические выражения в условиях, там можно указать только конкретный wire или reg.
>>381620 >Откуда информация, что он не поддерживает подобные конструкции? Из опыта. Я не знаю, может, и поддерживается, а это я рукожоп. Просто недавно была как раз такая же проблема, чип XC2C256. Код с if(a & b) не собирался. Написал wire c; assign c = a & b; и написал в том always, на который он плевался if(c) - всё заработало.
Держу Вас в курсе. В субботу удалось скомпилить ядро сеги под Зайлинкс, потом меня срубил грипп, всё воскресенье проволялся с температурой. Дальше нужно изучать формат ром-файлов от сеги и разбираться как всё это дело запускать.
Интересно, я когда игрался с 6.1 - мне начало казаться, что у синтезатора для xc9500 есть проблемы, когда одному и то же регистру ты суёшь из разных always @(posedge / negedge) блоков. Перемещение логики в один блок починило жалобы. Вообще сдаётся мне, что он глючный, прям пиздец.
>>381630 >у синтезатора для xc9500 есть проблемы, когда одному и то же регистру ты суёшь из разных always @(posedge / negedge) блоков В других САПР такое вообще не поощряется и на это ты получишь ошибку. По-хорошему, так делать вообще нельзя. >Уже начал смотреть на альтеру, латтис и актель. Вот у Альтеры ты точно получишь отбивку на попытку обращаться к одному reg из разных блоков always. >>381631 Я бы не писал, если бы сам не столкнулся с такой проблемой 2 недели назад.
>>381632 У меня был большой проект на спартане 6. Всё совпало с результатом симуляции на 100% Хотя у меня очень примитивный стиль написания кода. Я всякую хуйню вроде блокирующих присваиваний и другие конструкции, в результате которых не уверен на 100% вообще не использую.
>>381632 >Вот у Альтеры ты точно получишь отбивку на попытку обращаться к одному reg из разных блоков always. Поддвачиваю. Сам соснул хуйцов при попытке сбрасывать-устанавливать триггер из разных always блоков. Код компилится, можно прогнать симуляцию. Соснул на моменте синтеза, где явно писалось - ты упоролся, пошел на хуй..
>>381642 Это не имеет значения, что он там синтезируется. always @(negedge) - вообще хуёво ложится на архитектуру FPGA, ведь все ячейки тактируются по переднему фронту. Значит синтезатор на клоковый вход ставит инвертор на луте. Я даже придумать не могу где такая конструкция нужна.
>>381659 Вдогонку, если смотреь на схему - то видно, что триггеры можно сетить-ресетить без клока. А в верилоге нельзя смешивать блокирующие и неблокирующие присваивания. Вопрос, как это заюзать?
>>381643 Во-первых, ты не понимаешь, какое железо ты описываешь. Оно на архитектуру ПЛИС не ложится, триггеры переключаются только по posedge. Negedge означает, что клок будет где-то инвертирован с соответствующими неявными, но значительными последствиями для клокового дерева в виде ухудшенных временных характеристик и выросшего потребления клоковых ресурсов. Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак, не умеют триггеры такого.
Во-вторых, ты забываешь, что HDL — язык описания схем. Как тебе идея на обычной принципиальной схеме один и тот же транзистор рисовать два раза, в двух разных местах заводя ему на базу разные сигналы, потому что автору показалось, что так удобнее выразить его идею? Не хочется в табло ему дать?
>>381689 Делаются на специальных буферах ввода/вывода, которые умеют работать только на ноги, и у которых задача — разделить ддр-сигнал на два, как раз-таки чтобы внутренняя логика могла с ним работать.
>>381719 Это тоже DDR. DDR, если что — это не память для пеки, а double data rate, передача битового потока на удвоенной частоте клока. Делается, соответственно, на всё тех же самых специализированных буферах в/в.
>>381722 Да, тут я несколько неправильно выразился, т.к. часто этой аббревиатурой называют именно память.
>Делается, соответственно, на всё тех же самых специализированных буферах в/в. Пример того как это делается можешь дать? К примеру, на spartan 6, пусть и устаревшем.
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) );
>>381687 >Во-первых, ты не понимаешь, какое железо ты описываешь. Оно на архитектуру ПЛИС не ложится, триггеры переключаются только по posedge. Negedge означает, что клок будет где-то инвертирован с соответствующими неявными, но значительными последствиями для клокового дерева в виде ухудшенных временных характеристик и выросшего потребления клоковых ресурсов. Одновременное тактирование по posedge и negedge на архитектуру ПЛИС не ложится никак, не умеют триггеры такого.
Во-первых, я 100% знаю, что и как и как описываю и как оно ложится на ярхитектуру того, что использую. Тригерры имеют отдельно входы для сет и для ресет, а дистрибуция птермов и клока уже из коробки имеет и прямые и инверсные линии, прям сразу.
>>381687 >Во-вторых, ты забываешь, что HDL — язык описания схем. Как тебе идея на обычной принципиальной схеме один и тот же транзистор рисовать два раза, в двух разных местах заводя ему на базу разные сигналы, потому что автору показалось, что так удобнее выразить его идею? Не хочется в табло ему дать?
Я на схеме на один триггер могу завести несколько сигналов, если сигналы будут идти через некоторое количество гейтов для комбинаторного выделения нужного. В чем проблема?
>>381665 >В список чувствительности олвейса внеси ассинхронный сигнал и сбрасывай/устанавливай по этому сигналу. > >always @(posedge clk or posedge async_s) begin
Поддержка дуал-эдж триггеров из коробки, и глобальные сет-ресеты без клока. В примерах от зайлинкса явно видно другой способ ака стиль написания кода (для утилизации фич цплд)
>>381756 Я думал про него, но чёрт побери, дома только 2 ноута. Никто не видел миниПИСИАЙ-Е в ноуты? ЕМНИП там могут быть проблемы со скоростью конфигурации ПЛИС.
>>381475 Некрофил снова на связи, поставил 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.
>>381754 >понял, почему ISE любит XC2C00 и не может в свои же XC9500XL.
Тебе ведь говорили, что старые синтезаторы иной раз очень криво работают, особенно когда в коде изобилие непопулярных конструкций вроде обращений к одному регистру из разных олвейсов использование блокирующих присваиваний там где они нахуй не нужны.
Короче, пиши простым языком, без выебонов и всё будет ОК.
>>381770 Это вообще-то норм практика — разделять комбинационную и последовательную логику.
Вот только то, что на картинке, не похоже на разделение последовательной и комбинационной логики, а похоже на говно.
Из первого блока надо убрать всё, что связано с управлением rst и clken, заменить список чувствительности на @(*) и все неблокирующие присваивания (<=) на блокирующие (=). И быть твёрдо уверенным, что в этом блоке никаких триггеров не генерируется, всё защёлкивание происходит во втором блоке;
rst и clken управлять в отдельном (третьем по счёту) always @(posedge clk) и никак иначе.
>>381773 Вообще, универсальное правило: блоки always должны быть только с @(*) и = и тогда это комблогика либо с @(posedge clk) и <= и тогда это триггеры.
В исключительных случаях допустимо @(posedge clk, negedge aresetn) если очень хочется сделать асинхронный резет, и ты точно понимаешь для чего он тебе нужен.
>>381775 >В исключительных случаях допустимо @(posedge clk, negedge aresetn) если очень хочется сделать асинхронный резет, и ты точно понимаешь для чего он тебе нужен.
Это зависит от архитектуры. У него старые цплдшки, поэтому ассинхронный сброс допустим.
Так-так, резет генерируется из комбинационной логики, соответственно может дёргаться между тактами, соответственно, может рандомно дёргать асинхронные ресеты, если он на них заведён. Не надо на эти грабли наступать.
>>381776 Допустим он где угодно. А вот для чего он может быть нужен? Зато могу сказать, как он может быть опасен: если на него по распиздяйству заведён вот такой вот сигнал — >>381777 — он может срабатывать тогда, когда не нужно.
>>381782 >И давай по подробнее. При каких условиях здесь 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.
>>381780 Это код, котрой идёт в комплекте как минимум с ise 6.x + ise 10.x
Он собирается без предупреждений, но под как минимум оин таргет фейлится.
Кто-то усиленно читает жопой. Здесь так принято, да?
>>381785 Мой коммент о том что я знаю, что делаю, относился к коду из пары десятков строк, который был для XC9536XL. Там я смотрел на итоговый RTL. Примеры из комплекта решил зююзать для тестирования багов синтезаторов - потому что безобидные вещи фейлились без основания.
Короче, дело к ночи уже, а воз и ныне там. В 10.1 типо есть iSim, и он типа должен запускаться,
>Running ISim simulation engine ... >This is a Full version of ISE Simulator(ISim).
Однако нихера нет. Ни окошка, ни интерфейса, ни активных кнопочек. Проект - каунтер 4 бит для 3спартана.
Винда 7, х64. ISE x64 не пускается - сразу крэш. А вот 32ая версия - пускается. Кстати драйвера на платформ кабель встали и работают, импакт работает с юсб.
>>381813 Смотри, винда есть хп, 7, есть 8, 10 и всё. А линуксов целый зоопарк дистрибутивов, версий. Для тяжелого софта обычно пишут указывают конкретную сборку линукса, в остальных работоспособность не гарантируется. Так что под линуксом может быть еще больше приколов. >>381814 Судя по логу симулятор есть, но он почему-то не запускается. Возможно по той же причине, что и 64х версия ise. Короче попробуй виртуалку с ХП.
Оно глючит на разных версиях, рекомендуют или ХП или Линукс. Какой пиздец, и это - лидеры в области ФПГА. Я боюсь даже представить, что будет, если я возму актель-микросеми или альтеру-интель.
>>381885 Поэтому все нормальные люди перешли на 7ю серию либо вообще ультраскейл. Начинать новые проекты на старом железе это такое. Тем более сейчас младшие модели цинков и спартанов 7 прилично подешевели.
>>381912 huh? в реальном мире не для всех задач нужны кинтексы, зинки и спартаны. есть задачи - замены горсти горелой логики в ДИП-корпусах плис-ом. или согласование инерфейсов здесь цплд-шки заебись, пока ещё есть 5в толерант опции
>>381645 >синтезатор на клоковый вход ставит инвертор на луте. Не на луте, во всяком случае у Сыклонов. У них на входе ячейки есть специально подключаемый инвертор для таких целей. Скомпиль и просмотри как выглядит в чиппланере.
>Я даже придумать не могу где такая конструкция нужна. Да сплошь и рядом, когда работаешь с асинхронными сигналами на входе ПЛИС, которые не удаётся перетактировать на свою частоту по причине их высокой скорости.
>>381791 >Допустим, fsm переходит из состояния zero в состояние start. При этом fsm[0] становится 0, а fsm[1] из 0 становится 1. Если проект собрался так, что из fsm[1] сигнал идёт дольше, чем из fsm[0], то при таком переключении возникнет ситуация, когда с точки зрения лута fsm[0] уже стал 0, но fsm[1] ещё не стал 1 и продолжает быть видимым как 0. Тогда на луте все три сигнала оказываются нулевыми, и он выдаёт резет. При том, что стояние clear не наступало, а был всего лишь переход из zero в start. Всё это называется гонки сигналов.
>>384475 >Да сплошь и рядом, когда работаешь с асинхронными сигналами на входе ПЛИС, которые не удаётся перетактировать на свою частоту по причине их высокой скорости. Это, например, что? Я честно не могу представить.
ИМХО использовать ПЛИС стОит, когда стоит задача обработки цифрового сигнала и вот ну никак иначе. А когда начинается сложная логика или протокол связи, то все-равно внутрь ПЛИС приходится загружать какой-то из доступных микроконтроллеров (что приводит к еще большему веселью, и никак не отменяет нужды читать доки).
Ну и еще есть стандартные проблемы с восприятием подхода к… даже язык не поворачивается сказать «программированием ПЛИС». Это не программирование в привычном понимание. Программа — набор последовательных инструкций. В ПЛИС с непривычки очень здорово запутаться можно, а каждая ошибка превращается в 10 минут (почти что минимум) безделья и попивания чая на пересборку проекта.
Ну и чтобы еще больше «уравновесить» восторг статьи, чуть критики перечисленных плюсов: 1) не надо читать доки на МК. Зато придется читать доки на: USB, Ethernet, думать как перетащить известную написанную на С/С++ реализацию TCP/IP в ПЛИС, CAN и прочее-прочее добро. То, что есть готовые модули — это хорошо, но документацию то значит придется читать на них, не? а когда чужой модуль начинает вести себя… непредсказуемо? Да он же бесплатно был взят из инета! какие претензии? 2) ну про дедушку пример можно и про плис сказать. в сарайке есть плис, вот из него и соберем. А с тем, что есть эффективный по функциональности, цене в серии и, страшно сказать, времени на разработку МК под этот род задач, даже и разбираться не будем — лень же читать доки и все это в голове держать. 3 и 4ое — мне кажется когда в годах 70х придумывали языки программирование, то в каждой презентации были вот эти слова про «теперь можно сделать хорошо отлаженный модуль», «легко импортировать чужие модули».
Конечно не моего ума дело, но я бы запретил на «Хабре» статьи подобного рода. Во-первых статей для начинающих плисоводов в И-нете на всех возможных языках (включая, разумеется, русский) пруд пруди. А главное — авторы подобных статей не понимают одного: программирование FPGA нельзя «попробовать»! Это можно попробовать «попрограммировать» на компе или игрушечную платку с «восьмирёночком» типа «Ардуино». А вот с ПЛИС — это как изучать иностранный язык или играть на музыкальном инструменте, либо ты этим занимаешься по-серъёзному и регулярно, либо не нужно тратить на это время вообще. Кроме того, нужен совсем другой объём знаний по сравнению с программированием. По-крайней мере, истинный плисовод должен очень хорошо разбираться в электронике, как показывает моя многолетняя практика вменяемого плисовода можно сделать только из грамотного электронщика.
кстати, почему на зашквабре такой пиздец с дефисами? "все-равно", "по-крайней мере", хочется их убить всех нахуй.
>>384543 Только вот скоро они будут не нужны. Протоколы, алгоритмы обработки сможет описать любой нормальный программист, используя созданный для этого декларативный функциональный язык, а задача подгонки этого под нужный чип ума не требует и её можно доверить технику, закончившему как-бы-вуз с тройками в дипломе.
>>384548 >считаются более квалифицированными чем электроники? С тех пор, как стали зарабатывать больше. Дно из геймдева зарабатывает больше, чем топ-электронщик из нии.
>>384549 Ну "дно из геймдева" не такое уж и дно с точки зрения квалификации, по идее. Это одна из самых байтоёбских специализаций в программировании.
>>384548 >С каких это пор программисты считаются более квалифицированными чем электроники? С каких это пор сравнивают "квалифицированность" между разными инженерными профессиями? Что это за методика такая?
>>384553 Так он же вроде описывал, что для выполнения макако-задач т.е. тех, где люди подумали уже за тебя особая квалификация в вопросе не требуется.
>>384552 Поддержу, но у меня в ДС2, геймдев-макака получает больше ну или примерно так же, чем ведущий инженер-схемотехник в ГеоСкане. А там как раз разрабатывается коммерческая гражданская электроника (дроны для геодезической съемки).
>>384543 >Конечно не моего ума дело, но я бы запретил на «Хабре» статьи подобного рода. Боишься конкуренции? Или того, что "элитное" плисоводство теперь будет доступно каждому мимокроку? >Во-первых статей для начинающих плисоводов в И-нете на всех возможных языках (включая, разумеется, русский) пруд пруди. А главное — авторы подобных статей не понимают одного: программирование FPGA нельзя «попробовать»! Ой, та ладно. Про микроконтроллеры тоже самое говорили, а теперь даже домохозяйка может сделать умную занавеску на ардуине по простым гайдам с ютуба.
>>384555 > "элитное" плисоводство теперь будет доступно каждому мимокроку? Не будет - платят за это мало. Только фанаты или кто влез в наивных 2000 и теперь из-за возраста деваться некуда.
Все из-за глупых фанатиков, у которых глаза горят, когда увидят железку. Меня однажды уговаривали на работу - "Поэксперементируете с нашей аппаратурой, пощупаете живьем, про что читали в универе". А зарплата маленькая и работать много.
>>384555 >что "элитное" плисоводство теперь будет доступно каждому мимокроку? >, а теперь даже домохозяйка может сделать умную занавеску на ардуине по простым гайдам с ютуба. Платка марсоход.
>>384562 >Стоят во главе государства, управляют такими умниками, как ты - значит умнее тебя. Ну у них и денег больше чем у тебя, значит и поквалифицированее тебя будут.
>>384559 >"Поэксперементируете с нашей аппаратурой, пощупаете живьем, про что читали в универе". А зарплата маленькая и работать много. Так в чём проблема? Набей опыт 3-5 лет, выучи английский и заводи трактор, тут половина плисо-бояр с двача так сделала.
>>384587 В чем суть хайпа по RISC-V и в чем его удобство? Зачем нужно большое количество реализаций одних и тех же инструкций? Чтобы получить железку которая производительнее в определённом юзкейсе, но при этом без геморроя запускает менее требовательные к производительности готовые программы? Какие ещё профиты предлагаемого подхода? Это явно не в отсутствие лицензионных отчислений, и так все будут платить за ядра, только не арму.
>>384550 >Ну "дно из геймдева" не такое уж и дно с точки зрения квалификации, по идее. Таки да, у них в пределах рашки аналогичная хуйня, что и с электронщиками, желающих по фану ебаться с кватернионами за еду заметно больше, чем желающих их нанимать, поэтому рыночек давит в сторону снижения зарплат. Но ты всего лишь покормил жирного, у которого функциональщина вытеснит хдл, хотя за 60 лет она не осилила добраться даже до промышленного программирования.
>>384589 >Таки да, у них в пределах рашки аналогичная хуйня, что и с электронщиками Рофл в том, что геймдевы на подсосе не только в рашке. >Но ты всего лишь покормил жирного, у которого функциональщина вытеснит хдл, хотя за 60 лет она не осилила добраться даже Да хуй его знает, бро. Нейроночки тоже 60 лет стартовали, пока не появилось железо способное их использовать и железо способное их обучать (за какое-то адекватное время). Может быть через десяток лет напишут какое-то сверхпрожерливое говно транслирующее функциональную парашу в сносный ХДЛ-вариант. Алсо сейчас уже наверно 50% девайсов собирается из покупных IP-ядер, там и знаний программирования не надо, знай подключай блоки по инструкции.
>>384591 Да, проблема действительно не ограничивается рашкой. Но суть всё та же, не квалификация, а сугубо рыночек порешал зп в геймдеве.
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.
>>384591 >Может быть через десяток лет напишут какое-то сверхпрожерливое говно транслирующее функциональную парашу в сносный ХДЛ-вариант. Дай бох, чтобы через десяток лет хотя бы поддержку синтезируемых конструкций системверилога завезли уже целиком, наконец.
>>384593 >Но суть всё та же, не квалификация, а сугубо рыночек порешал зп в геймдеве. Так я и не спорил, просто уточнил что это не проблема рашки. >>384595 Кек. Да вроде актуальные топовые ModelSim и SynplifyPro уже умеют, не?
Веб сложнее, чем FPGA. Когда пишу на верилоге я ощущаю себя макакой из-за ограниченности сего процесса. Хоть какое-то разнообразие я получаю только когда призодится решать архитектурные задачи, но мне их достается мало.
Грубо говоря день-два продумываю архитектуру и после этого на долгое время ухожу в рутину rtl-кодирования, потом колесо сансары делает новый оборот.
>>384606 >Хоть какое-то разнообразие я получаю только когда призодится решать архитектурные задачи, но мне их достается мало. > >Грубо говоря день-два продумываю архитектуру и после этого на долгое время ухожу в рутину Про веб тоже самое же, чо ты? И про гейдев.
>>384595 Читал на хабре около бредовую статью o разработке на fpga, в комментах оказалось автор на фирме программит на systemc какие-то инкапсуляторы потоков, нихуя не умеет и не умел в verilog/vhdl и электронику.
>>384612 Да просто у программистов денег дохуя, вот они и могут себе позволить купить отладку с FPGA чтоб чисто ради фана поковырять новую для себя технологию, после чего пишется бредовая статья на петухабр, а отладка отправляется в стол.
>>384537 >то все-равно внутрь ПЛИС приходится загружать какой-то из доступных микроконтроллеров Да вот не скажи. Я Езернет реализовал без всяких этих ваших Ниосов.
>>384543 >как показывает моя многолетняя практика вменяемого плисовода можно сделать только из грамотного электронщика Скорее из грамотного прогера, ибо проектирование на плис всё же ближе к прогерству нежели к.
>>384617 >Скорее из грамотного прогера, ибо проектирование на плис всё же ближе к прогерству нежели к. > Предлагаю сойтись на том, что грамотный прогер это в первую очередь грамотный электронщик(хотя бы в той электронике, которую он программирует), ибо сначала было слово электронное устройство и только потом программирование, а любителей программировать "черный ящик" на сверхвысокоуровневом языке, предлагаю отправлять к чепушиле, который весь этот холивар и затеял.
>>384537 Бред полнейший. >А когда начинается сложная логика или Обработчик цифрового сигнала не должен как-то управляться? Самый простой пример - радиоприемник с цифровой обработкой сигнала и дисплейчиком с менюшкой.
Какие высокоскоростные (100MHz на пин) разъемы используют в недорогих али бордах? А то один фирменный разъем плат расширения xilinx стоит как борда с али.
Как та борда на Kintex7+sfp с али. Только там одни sfp, а мне нужно 12битную шину передать-принять.
>>384624 Так то да, речь не о всяких там java-обезьянах, а о прогерах железа. Но чтобы такому прогеру успешно кодить - не обязательно ему быть гуру электроники, достаточно знать какие напряжения имеют логические 0 и 1.
>>384588 >В чем суть хайпа по RISC-V и в чем его удобство?
Нельзя просто так и реализовать, например, процессор с инструкциями АРМ. А РИСК-5 - можно. Идея поиметь открытую и бесплатную ИСА, чтоб программисты нарожали компиляторов, линкеров и прочего, и бесплатно без смс и регистрации.
В целом тот же АРМ выглядит удачнее, но деньги и лицензии.
>>384744 Это не ответ. Давай сравнивать. RISC-V использует трехадресные команды? RISC-V имеет сколько реализаций? А разных корок ARM десятки. Что ты сравниваешь - архитектуру или реализацию? Или инфраструктуру - компиляторы, отладчики, библиотки?
Это пердуино тред? Где взять скетч "blink" под эту херню и как ее вообще подключать-включать? В самой пердуиноиде ничего не нашел с похожими именами. Как добавить их поддержку? Куда подавать питание, как и чем прошивать прошивку, куда и как подключать светодиод? Смогу помигать одним светодиодом или на большее число хватит? Хватит ли на что-то большее чем мигалка светодиодом или облажался при выборе камня для игр? В перспективе смогу подключить пару серв или часы реального времени DS1337, экран 16х2 и пару кнопок?
>>385074 >пруфы с супом Извиняй, запас Дошиков закончился, надо бы пополнить. Хотя мне больше нравится Троллтон. Но нахуя? Вот тебе пара светодиодов которые планировал подключить и ими же помигать. Как подключать - в душе не ебу, обратился за помощью, а меня послали на хуй в столовую.
>>385108 Надо было класть Red, Green, Blue. Тогда интереснее. А пока больше на светофор похоже. А для светофора за глаза достаточно и воронежской ПЛИС. Да и вообще, ПЛИС для светофора это как микроскоп для гвоздей.
>>385096 >Зойчем скрывать серийник? Что бы не спрашивали насколько это древнее и засохшее говно мамонта. 1225
>>385109 >А пока больше на светофор похоже O RLY? Таки можно к нему подключить аж три светодиода? В постах выше никто так и не ответил - получится или нет подключить более одного светодиода. Раскусил ты мой коварный план. Даже если не получится светофор - видимо будет мигалка из одного светодиода на елку под Новый Год. Осталось дело за малым - узнать как подключать светодиоды, как подавать питание, как заливать прошивку и в чем создавать прошивку? В пердуиноиде не нашел ее поддержки.
>>385116 >меняться с частотой 300МГц Это много или мало? Есть с чем сравнить для понимания?
>>385128 Как-то ты толсто троллишь. Осеннее обострение? У тебя чип, который как несколько зарпkат стОит, и кто бы его дал поиграться человечку, не знакомому с HDL. Таки обострение.
Вот что интересно - так это зачем огромная куча тактовых входов у ПЛИС, исключая подключение LVDS каналов/когда надо завести далеко не одну частоту/удобство разводки? У тех же циклонов в 144 ногом корпусе кажется 16 тактовых входов. Есть ли смысл подавать один и тот же тактовый сигнал на например на 4 тактовых входа или можно на один и размножать его внутри ПЛИС? В платке с EP3SL200 вообще какой-то бред - одна обычная дифпара + выход PLL идут на внешнюю микросхемку PLL Si5326с (с возможность выбора источника тактирования - два с FPGA и внешний генератор) и ее два выхода PLL идут на 2 разных тактовых входа FPGA. В чем сакральный смысл? Цепочку генератор-pll-тактовый вход могу понять, а если включать выход внутреннего pll есть еще один независимый генератор с прямым подключением, от которого можно запитать внутренни pll на внешний pll и от него же снова тактироваться. Не понимать.
>>385130 >большие деньги Чип Б/У, на выпиленном куске платы под выпаивание и реболлинг. Такие (даже четвёртые стратиксы на 820к ячеек) стоят не больше десятки.
>>385187 Для этого чипа только изготовление платы будет стоит 500 баксов (8-ем слоёв, 3/3 mil, 10cm x 8 cm). И то, на 8-ми слоях все ноги не разведёшь.
Проще купить готовую евалюэшн борду.
Такое имет смысл покупать - если нужно починить горелую плату. Для хобби - бюджетный предел - это FBGA 144 1.0mm pitch, FBGA 256 - можно, но уже сложнее. А дальше космос (сильно резко возрастает цена изготовления ПП и уже надо думать о том, где заказывать монтаж - руками можно зафейлить, если нет опыта)
>>385225 >только изготовление платы будет стоит >на 8-ми слоях все ноги не разведёшь Где мои дежурные картинки? А мне норм. Сиди, паяй. Deadbug style - наше все на все случаи жизни. Что еще взять от пердуинщиков?
>>385225 Ну как бы сказать. Если совсем по дешману делать и верить JLC 6 слоев размером с лист А4 - ебаных 170 уе+ доставка 40уе. Бля, да это же вообще копейки центы стоит. Прикидывая из 6 слоев - 2 на питание и 4 под данные - можно дойти до красного квадрата и получить около 8 сотен выводов при нормах около 0.1/0.15. Для пердуинки очень даже тема - получится хороший такой колючий йожэг, имеющий около 8 сотен колючек. Если поизголяться то можно и до желтого квадрата дойти и это еще +50 выводов.
>>385226 Вот это может быть верно. Для мигалки, про которую писали выше, достаточно будет подать питание и подпаяться к одному I/O. Между прочим, наверняка есть задачи которые сводятся к подобному. Например для какого-нибудь брутфорса хешей или чего-то подобного хватит одного UART.
Моча забанила мой тред про изготовление тепловизора из говна и палок. Может вы подскажите, есть ли более интересные тепловизионные матрицы за вменяемые деньги?
Ньюфагу поручили запилить spi slave девайс. Каким вещам уделить внимание дабы у меня получился код удовлетворяющий высоким промышленным стандартам а не ардуиностайл?
Какой частотой лучше тактировать мой контроллер: от мастера (sck) или некой от внутренней частоты?
>>385791 >Может вы подскажите, есть ли более интересные тепловизионные матрицы за вменяемые деньги? Киса, дешевых нет. Это основная стоимость. С китайцами ты конкурировать не сможешь - инфа 100%.
>>385804 Зачем с кем-то конкурировать? Я хочу запилить для себя.
Кроме самой матрицы китайцы продадут корпус, плату, экран и еще кучу всякой малафьи. Моя идея в том, чтобы взять голую матрицу и подключить её к уже имеющемуся железу, хоть какой-то % от стоимости должен выиграть, разве не так?
>>385791 Кроме матрицы еще объектив нужен, тоже весьма дорогой. Заметно дешевле готового изделия наверняка не получится. Матрицу к чему подключать будешь? Во сколько еще обойдется изготовление платы? А корпус как будешь делать?
>>385853 >Кроме матрицы еще объектив нужен Это конечно еще один повод отказаться от этой затеи. Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала.
>Матрицу к чему подключать будешь? Я думаю это наименьшая проблема, т.к. поток данных там по современным меркам совсем скромный и его сможет обработать малинка или еще какой-нибудь микроконтроллер. Ну а если интерфейс нестандартный - можно взять плисину.
>Во сколько еще обойдется изготовление платы? Зачем изготавливать плату если можно взять отладку с подходящим девайсом, коих у меня целая куча лежит в столе без дела. Корпус тоже не нужен.
>>385864 >Я думаю это наименьшая проблема Кому как. По крайней мере это много времени в любом случае. И, как мне кажется, микроболометрические сенсоры обычно без интегрированных АЦП. >Зачем изготавливать плату Для крепления. Как мне кажется, если у тебя будет самодельный корпус, то придется делать элементы юстировки. Ну или на токарном станке вытачивать. Не самая большая проблема, но одна из целого ряда.
>>385864 >Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала. Который, кстати, в видимом диапазоне непрозрачен. Хотя, не всегда. >>385868 Можно также из кремния и сульфида цинка.
>>385809 >хоть какой-то % от стоимости должен выиграть, разве не так? Нет, потому что ты будешь покупать поштучно детали через большую цепочку людей и каждому что-то к рукам прилипнет (процент от стоимости).
>>385864 >Причем я так понимаю объектив должен быть не простой, а из ИК-прозрачного материала. Тепловизор и ИК - это несколько разные вещи. Вот пульты в телевизоре - это ИК, и камеры наблюдения многие прекрасно работают в ИК диапазоне и имееют ИК подсветку. Но они не тепловизоры. Внезапно, да?
>>385907 Тепловизор работает в глубоком ИК, которое, внезапно, подмножество ИК. SWIR - тоже ИК. Как и NIR, в котором работают ПДУ, камеры наблюдения и ПНВ.
>>386056 Анон выше хотел донести до тебя мысль о том, что ближний и дальний ИК - это все ИК. >Тепловизор и ИК - это несколько разные вещи. Эту фразу можно понять так, что ты LWIR за ИК не держишь. Но это не разные вещи, а все подмножество ИК. Вот о чем тебе хотели намекнуть.
>>386091 А тебе в ответ другой анон, судя по моему детектору, написал о том, что твое высказывание можно понять немного иначе. Что считает анон с идеей самодельного тепловизора, вообще без разницы.
Олсо, анонимусы, объясните, как ИК-чувствительная матрица в тепловизоре на засвечивает саму себя? Есть ёбы, в которые надо жидкий азот заправлять, там все ясно. А ка работают приборы, рассчитанные на комнатную температуру?
>>386265 Калибровка. Причём периодическая, во время работы. Изображение в этот момент ставится на паузу, а тепловизор внутри щёлкает шторкой, выдавая местоположение владельца.
>>340591 Правда жизни такова, что джава макака получающая в этой стране 2к$(в два раза меньше средней зп в европе) так и останется здесь работать за 2к$, потому что на западе своих индусов хватает. А инженеру-элетронику с опытом работы в МЦСТ и подобным организациям будут рады в любой стране мира, и получать он будет, как и любой инженер 3-5к$. https://ru.wikipedia.org/wiki/МЦСТ >В 2004 году в прессе появились сообщения от компании Intel, что компания пригласила несколько групп разработчиков из «Эльбрус МЦСТ», а также UniPro на работу в Intel
>>386501 Правда жизни такова, что веб-макака с годовалым опытом уже может претендовать на 2к$. А java-макака с опытом в каком-нибудь сбертехе может прыгнуть выше 3к$, что уже сопоставимо с оплатой труда в странах первого мира. Вот только у нас ты на эти деньги будешь жить как король, а там как поломойка.
Надеяться на то, что твою команду перекупит интел это всё равно что выиграть в лотерею.
>>386850 Цепь тактовой частоты. Все триггеры в схеме должны тактироваться от одного источника, притом, чтобы всё работало как надо до всех триггеров этот сигнал должен доходить почти одновременно, для этого в ПЛИС и предусмотрены специальные цепи тактовой частоты, они специально сделаны так чтобы задержки на них были минимальны. И в современных ПЛИСах их может быть несколько, около десятка.
>>387000 Есть, но он не понравится тебе ещё сильнее. "Конфигурационная последовательность." Забей, рашка выпала из современной технологической повестки, русик более непригоден для разговоров об актуальных средствах разработки из-за отсутствия необходимых терминов (кроме тупой неудобной кальки с инглиша), а терминов нет из-за отсутствия необходимого числа носителей языка, желающих обсуждать этот предмет в своём кругу.
>>387037 >Тупая калька с инглиша пиздата. Не надо вычурно транслировать туда-сюда. Так я как бы и не за вычурный перевод топлю. Калька ровно потому и оптимальна сейчас при всей своей корявости, вымученности и труднопроизносимости, что переводится на ходу. Её задача — быть сообразной с иностранным языком, который является основным.
Если есть большое сообщество носителей языка, которые учатся по своим учебникам, общаются между собой, ведут свои разработки, а с зарубежной средой сталкиваются чтобы статью в научный журнал тиснуть, то для них важнее становится удобство использования языка для коммуникации, а не для перевода на ходу. Но поскольку такого сообщества нет, тенденция к доминированию инглиша есть, и калька в ней оказывается более удобной, чем нормальный перевод. Вот только калька — это половинчатое решение, и половинчатость эта искусственная и нахуй не нужная, основанная на законах о государственном языке и тому подобном говне. А естественным является полноценный переход на основной язык отрасли.
Есть клоковый домен 50 МГц. Из него надо передать сигнал длительностью 1 такт в домен с частотой 150 МГц. Я констрейнсах прописываю этот сигнал как set_false_path и в домене 150 МГц пилю схему детектора фронта. Такой вариант взлетит или нужно что-то другое пилить?
>>387141 Если сигнал в домене 150 МГц длительностью один такт надо передать в домен 50МГц, сделай на стороне 150 МГц счётчик, который после каждого появления активного уровня будет держать его ещё 3 дополнительных такта. Так ты можешь быть уверен, что триггер со стороны 50МГц увидит активный импульс и не пропустит его. Ну и детектор фронта на стороне 50 МГц остаётся.
>>387235 Да нет, вроде как под этим производитель понимает вообще всю FPGA-часть микросхемы: ЛЭ, Мат. блоки, встроенные RAM-блоки и т.д. - всё что нужно для программируемой логической части, но не Асик-IP блок.
>>387512 Hard-IP блок, если более правильно его назвать. >>387241 >>387598 Ну, сейчас примерно так и оставляю.
Из прочитанного я понял следующее: "FPGA fabric" называют структуру из логических элементов (CLB-шки, если говорить о Xilinx'ах), и блоков, вокруг которых строятся эти логические элементы. То, что может автоматически использоваться синтезатором и трассировщиком, без какой-то дополнительной конфигурации. К примеру, у нас есть N мат. блоков, M CCC блоков, и K RAM-блоков, вокруг которых размещаются ячейки ЛЭ. Совокупность всего этого безобразия будет называться Fabric. К этому Fabric не относятся Hard-IP блоки, такие как, к примеру, выполенный в виде отдельного Asic-блока CortexM3, встроенная Flash-память, блоки трансиверов или банки I/O.
Если правильно понимаю, на пикрил - слайсы, Рам-блоки, выделенные множители - будет называться fabric.
>>387659 Трансиверы и I/O входят. I/O входят даже в базовом изначальном варианте, где "I/O, логические ячейки и линии соединений".
Всё входит, короче. Что-то, что может не входить, существует тогда, когда девайс представляет собой систему на кристалле с отдельной fpga-частью, как zynq.
>>387730 >Что-то, что может не входить, существует тогда, когда девайс представляет собой систему на кристалле с отдельной fpga-частью, как zynq. А у Virtex с PPC-ядрами и Altera Cyclone/Arria/Stratix с ядрами ARM как-то иначе?
>>387741 Надо спрашивать у тех, кто с ними работал и читал, соответственно, документацию. И знает, в каком контексте производитель писал об этих ядрах — как о части структуры FPGA или об отдельной сущности.
>>387730 Хмм, ок. Я как-раз и перевожу материал, который преимущественно по SOC-ам. >>387744 Там где я перевожу - производитель считает их отдельной сущностью, как и трансиверы, похоже, что и банки I/O тоже, но это вроде как не точно.
>>387796 Перевожу материал по SoC-ам Microsemi. Попутно разбираюсь, что/как работает, как устроено железо, что оно может, что не может, и так далее. До этого работал только с микроконтроллерами. >>387808 Ты, от части, прав. Сорт оф личинка саппорта.
>>388004 Да. >>387926 Ну я сам их использовать буду, если ты об этом. Для чего - ответ выше. >>387943 Как уже писалось выше SoC-и. Я не настолько не в теме, чтобы напереводить совсем уж дичи. Если буду не уверен, в том что у меня получилось - поищу кого-нибудь, кто отревьюит. Матрица FPGA/Матрица Плис звучит хорошо, пока туда не добавляется хренова гора блоков, вроде того же RAM-а. Матрица Логики/Логическая матрица - вот это может быть будет норм, надо подумать.
>>387837 > Аноны, как вкатиться к вам в ПЛИСач? Не лезь, она тебя сожрёт!(ц)
> хотел бы взять макетку какую-нибудь, что посоветуете для вката? Ну, хуй знает. Сколько (в долларах) потратить готов, а то посоветовать можно много чего.
>>388127 > Чем плох вариант на Zynq? В основном ценой (Ну и навороченность это не всегда хорошо. Карьерный самосвал не лучший выбор для поездок в магазин). Там цены от сотни баксов (за одним единственным исключением: https://www.aliexpress.com/item/4000042572307.html ) начинаются.
>>388169 Двачую вопрос. Полный тред вкатывальщиков, все поголовно покупают платы, но никто не постит результат. Ардуино-дети из соседнего треда в разы бодрее - один gsm-gps-лодку пилит, второй метеостанцию, а у нас глухо как в танке.
Такое ощущение, что 90% после покупки платы, мигает диодиком и плата сразу отправляется в стол.
>>388176 >Такое ощущение, что 90% после покупки платы, мигает диодиком и плата сразу отправляется в стол. У меня три платы. Я их в стол не ложил. Светодиодом не мигал. Так, купил и всё. Лежат в коробках, пылятся лет 5. Бугага.
>>388050 >битовый поток, сука кровь из глаз Я нигде не вписал "битовый поток", если что. У меня тоже кровь из глаз от такого идёт, я ж не конченный еблан. Но я явно не зря спросил анона, потому что мне посоветовали не ебать мозг и писать "прошивка". >Звучит как АвтоВАЗ - дважды автомобильный завод. Ну так и АвтоВАЗ звучит не так страшно. А учитывая, что на русском нет нормального аналога "FPGA Fabric"... Но опять же, я нигде не ставлю "Матрица FPGA", везде пишу "Логика FPGA". "Логика Программируемых Логических Интегральных Схем", дважды завод, да.
>>388176 Когда я вкатывался, сделал простенький процессор, приделал к нему клавиатуру с монитором и написал простенький компилятор. Это считается? В процессе вкатывания ничего ни у кого не спрашивал. Вскоре после того как вкатился, пошел работать и ничего такого (для себя, для дома) не делал.
>>388200 >Когда я вкатывался, сделал простенький процессор, приделал к нему клавиатуру с монитором и написал простенький компилятор. Это считается? Я это делал на икарус-верилоге, это тривиальщина, нашёл, чем хвастаться. Компилятор был на чем?
>>388206 >Как ты себе схемотехнически представляешь двунаправленную шину? Ровно так же, как она выглядит IRL. Просто пучек проводов, на концах/ответвлениях которого стоят буфера с третьим состоянием.
>подрубишь одновременно два выхода? Будет тот же эффект, что и на реальной шине. Кто слабее тот и покажет свою белую душу.
>>388219 >Ходят слухи, что в каких-то старых были. Насколько старых? Excalibur можно выкопать, но даже для меня это слишком жесткая некрофилия.
Пик живет в соседней нити >>387393 . Задумывалось что шина адреса и данных будет сквозняком идти. А тут подвалила ебля с мультиплексорами... как минимум надо накатать заливалку говнокода в ОЗУ через atmega и в Flex декодер адреса ОЗУ. Схему оригинала почти срисовал, но есть куча непонятных моментов.
>>388213 Не сказал бы что хвастаюсь. Просто ответил, что и тут делают всякую бесполезную хрень, все же более сложную, чем мигание светодиодом. Компилятор (ассемблер) в начале написал на tcl. Потом понял, что ассемблер в "классическом" виде для стекового процессора не нужен и сделал относительно нормальный кросскомпилятор форта.
>>388205 В этом треде есть скриншот с кодом процессора.
>>388246 >дальнего ДВ Откуда вы там про плисы знаете вообще? Я сам оттуда родом, там ничего кроме уныния и безысходности нет. Свалил с этой дыры и ни разу не пожалел.
>>388465 >Старьё, но утоптать туда восьмибитную микроЭВМ вполне можно: Будто все зависит только от битности, не меньше зависит от набора команд и прочего. Если верить документации, то Nios II в минимальной комплектации занимает 540 LE на втором циклоне.
Привет, анон. Проведи краткий ликбез, пожалуйста. Что определяет "скорость" и соответственно применимость плисины? Куда в даташите смотреть, чтобы понять, что плисина "не подходит" по частотным характеристикам? Я же правильно понимаю, что скорость обновления логических ячеек везде разная, и следовательно, предельные частоты работы одной и той же логической функции отличаются? Спасибо.
>>389083 >логической функции Ты точно различаешь комбинационные и последовательностные устройства?
>логических ячеек Помимо задержек в ячейках/элементах, которые в первом приближении состоят из LUT и триггера, ячейки/элементы отличаются по количеству входов LUT и прочему. Также в ПЛИС есть и другие блоки, такие как умножители, блоки памяти, PLL, трансиверы... Также отличаются варианты соединения этих ячеек и многое другое. А еще соединения между ячейками/элементами тоже вносят задержки. В добавок результаты синтеза будут зависеть от констрейнтов, версии САПР. Так что, по моему, выше тебе правильно написали.
>>389106 >Ты точно различаешь комбинационные и последовательностные устройства? Не точно. Комбинационное устройство состоит из "параллельно" включенных блоков, обновляющихся входы и выходы по сигналу CLK. Последовательное устройство - и есть блок, из которых строится комбинационное устройство. Внутри блока, соединения могут обновляться не по тактирующему сигналу. Я понимаю, что сигнал внутри блока, должен распространяться быстрее, чем придёт импульс CLK.
>Также в ПЛИС есть и другие блоки, такие как умножители, блоки памяти, PLL, трансиверы... Оно и понятно, тут меня больше всего интересует именно скорость работы логической матрицы. Скорость и расположение памяти/трансиверов/умножителей - всё описывается в даташитах. А вот чтобы понять, насколько медленнее при прочих равных та или иная плисина, тем более разных производителей/на разной технологии...
>Так что, по моему, выше тебе правильно написали. >>389106 >Проще всего откомпилировать проект и посмотреть в ТаймКвесте. В целом да, если проект на руках, и его не проблема перенести на интересующую платформу.
Тем временем QMTech выдали плату на цинке. > 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;
>>389240 Спасибо Анон! Закажу одну на мигалку. Где нынче искать не сильно стухшую блеваду ? Похуй что ретромеркурий с 1-го до 20-го ноября и ничего нового не начинать. 60$ - вообще ни о чем.
>>389207 >Не точно. Да, у тебя все как-то очень странно перепутано.
>А вот чтобы понять, насколько медленнее при прочих равных та или иная плисина Можно сравнить результаты для IP ядер. На второй картинке, чем не бенчмарк?
>>389207 >Комбинационное устройство состоит из "параллельно" включенных блоков, обновляющихся входы и выходы по сигналу CLK. >Последовательное устройство - и есть блок, из которых строится комбинационное устройство. Внутри блока, соединения могут обновляться не по тактирующему сигналу. Откуда ты такой шизофрении нахватался? Тебе будет полезно с этого начать https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
>>389256 >ретромеркурий с 1-го до 20-го ноября и ничего нового не начинать. Я тут у вас на сосаче новый. У вас что, принято изучать астрологию, что ли?
>>389609 >принято изучать астрологию, что ли? Естественно. Таро то же используем. Отладчики? Не не слышал. Что бы не гадать на кофейной гуще - вспышки на солнце, положение планет не то, фаза луны не та, не с той ноги встал, случайно дописал/убрал "<" или по какой еще причине у тебя очень сильно отличается поведение схемы в симуляторе и в реальном железе. Сарказм это. Иногда стоит прислушиваться что говорят Звезды на небе.
>>389941 >Как посчитать Fmax, если известно, что самый длинный путь имеет задержку 5.6 нс? Единица разделить на. 178 МГц Но сама логика тут у тебя даёт задержку 3.7нс остальное — пути. Если пропишешь констрейнты, роутер попробует разместить всю фигню поближе друг к другу.
>>389945 А если усложнить задачу: допустим данные на вход a подаются с частотой 150 МГц, на вход b - 40 МГц причем фазы клоков не совпадают. Выход c в том же домене, что и b. Как заставить всё это дело работать?
>>389957 Не надо синтезировать как попало, а потом гадать на какой частоте запустится. Надо прописывать констрейнты и смотреть, удалось ли виваде в них вписаться или нет.
>Как заставить всё это дело работать? Перевести сперва всё в единый клок домен при помощи асинхронных FIFO.
>>389957 Да и вообще, у тебя тут модуль синтезировался как верхний уровень, с входными и выходными буферами наружу, а в проекте они уйдут, потому что наружу ничего выводить не надо. Результат такого синтеза пригоден только чтобы схему смотреть, но не задержки.
>>389977 >Результат такого синтеза пригоден только чтобы схему смотреть, но не задержки.
Задержки на буферах можно исключить из выдачи. Как минимум видно сколько каскадов комбинаторной логики получилось из моего кода, для грубой прикидки максимальной частоты вполне себе можно использовать, разве нет?
>>389978 Да, почти компаратор. Мне запретили использовать корки fifo, я заменил их на инстанс bram - она может работать в режиме fifo и как я думал имеет аналогичные сигналы, что и стандартная корка от зайлинкс. Но как оказалось, есть нихуевые различия. Сигнал almostempty в bram не может показать когда в fifo осталось только 1 слово. А счетчики rdcount и wrcount на самом деле нихуя не счетчики а указатели.
Этот "компаратор" попытка получить сигнал almostempty с таким же поведением как в оригинальной корке.
>>390060 >Как минимум видно сколько каскадов комбинаторной логики получилось из моего кода, для грубой прикидки максимальной частоты вполне себе можно использовать, разве нет? Это я и имел в виду под "пригоден только чтобы схему посмотреть".
>>390060 >Мне запретили использовать корки fifo Понятно, значит, завести данные в другой клок домен через fifo у тебя не выйдет. Значит, тебе надо 150МГц клоком семплировать 40МГц клок и генерировать clock_enable для 150МГц домена, чтобы он считывал в себя медленный сигнал, когда детектится фронт медленного клока.
Можно ли как то в verilog/SV-тестбенче указать вивадо симулятору, чтобы он не останавливался на каком-то дефолтном момента времени, а продолжал дальше, до более далёкого момента времени? Надоело лезть в настройки за этим, хочется в коде тестбенча задавать.
>>391811 >открытых >github.com У них закрытый исходный код, открытый у gitlab. А ты вообще систем контроля версий касался? Тут первичнее используемая система контроля версий, а не куда пушить будешь. Можно пушить одновременно на github, gitlab, bitbucket и прочее.
>>391817 В верилоге есть $stop и $finish. Можно написать что-то вроде initial #100 $stop; Только запускать симуляцию придется другой кнопкой. В моделсиме это ContinueRun, вместо просто Run.
Помогите, молю! Есть фифо fwft. Выставляю сигнал чтения, по идее на следующем такте клока уже можно забирать следующие данные, однако относительно фронта следующего клока почему-то в симуляции возникает задержка 0.1 нс и соответственно захватываются предидущие данные. Что я делаю не так?
>>391818 >У них закрытый исходный код, открытый у gitlab. А это важно? >А ты вообще систем контроля версий касался? Да мне исключительно продемонстрировать свои говноподелки на неширокий круг. Ничего серьёзного.
>>391881 Чтение и запись в FIFO синхронное и осуществляется по фронту. А ты похоже формируешь fifo_rd по фронту rd_clk, значит fifo_rd придет не раньше rd_clk. При этом у тебя на первой картинке показано что fifo_rd устанавливается в 1 до переднего фронта rd_clk. Хоть обыкновенный D-триггер с динамическим управлением для примера возьми. Что будет, если на вход D подашь fifo_rd, а на вход C подашь rd_clk? Хотя, возможно я тебя неправильно понял.
>>391881 Ты смотри какая у тебя симуляция включена. Если временная, то сигнал на входах лучше подавать не в момент фронта клока, а чуть погодя, как это собственно и происходит в реальности. Но лучше переключи на функциональную.
>>391967 >Но лучше переключи на функциональную. Это не поможет никак, если fifo_rd формируется в блоке always по фронту rd_clk, потому что изменение произойдет уже после фронта rd_clk.
>>391964 >А ты вообще систем контроля версий касался? >Да мне исключительно продемонстрировать свои говноподелки на неширокий круг. Ничего серьёзного. Все же системы контроля версий в первую очередь используют не для того чтобы кому-то просто демонстрировать код. Если нужно только кому-то дать код, а возможности систем контроля версий тебе не нужны, то зачем гитхаб? Архивируй и заливай на какой-нибудь гуглодиск. И не нужно будет писать дурацкие комментарии к коммитам и изучать гитовские команды или кнопки в GUI.
>>391971 Я про то что входы нужно подавать правильно. Сам на такое много раз натыкался, менял состояние сигналов строго по фронту клока, вроде и синхронно подаёшь, а тем не менее это неправильно, во временных симуляциях так делать нельзя. Потому что у триггеров есть время срабатывания, внутренняя задержка, из-за которой выход они меняют не чётко по фронту клока, а с запаздыванием. Потому и мы, когда подаём входные синхронные сигналы из тестбенча должны действовать аналогично. Или, повторюсь, юзать функциональную симуляцию, там, к слову, тоже такое иногда проявляется, но всё же полегче будет. Это всё безотносительно к твоему буферу, просто делюсь опытом.
>>392001 А я про то что по временной диаграмме из симулятора непонятно что сделал тот анон. Может он написал always@(posedge rd_clk) fifo_rd=... В таком случае не будет работать при какой угодно симуляции. Потому что очередность изменения сигналов, это то, что называют delta delay. И буфер не мой.
Плисаны, помогите изобрести хитрый переходничок. Есть 2 fifo с разрядностью 65 бит. 65й бит каждого fifo хранит флаг валидности данных. Нужно загнать эти два fifo на один выход таким образом, чтоб все это дело выглядело как обычное 64битное fifo fwft. Данные без флага валидности надо дропать.
>>392167 Во-первых, нахуя хранить невалидные данные? Просто загружай их в FIFO по (wr_en && valid) вместо (wr_en), чтобы данные с нулевым valid в fifo не попадали. У тебя не только ширина данных и бессмысленно занимаемая память уменьшатся, но и задача упростится, потому что в FIFO будут заведомо валидные данные.
Во-вторых, тебе их как упорядочивать на выходе надо? 1-2-1-2-1-2 или ещё как-то?
На всякий случай, ты в курсе вообще, что под твою задачу существуют готовые корки без смс? AXI Stream combiner, AXI Stream width converter, AXI Stream asynchronous FIFO, AXI Stream Clock converter?
>>392182 На входную 128 битную шину данные поступают блоками по 64 бита. Может прийти одновременно 2 блока, а может и один в конце пакета. Если я буду писать в fifo по (wr_en && valid) то нарушится порядок.
>>392182 >Во-вторых, тебе их как упорядочивать на выходе надо? 1-2-1-2-1-2 или ещё как-то? Да, именно так, но соответственно пустые блоки надо пропускать не нарушая порядок.
>>392186 Понятно. Нихуя нет сложного, нужен конечный автомат с 2 (двумя) состояниями. Сперва он ждёт, когда FIFO1 непустое, и вычитывает его, передавая или дропая данные в зависимости от валидности. Потом переключается и ждёт, когда FIFO2 непустое, и вычитывает его, передавая или дропая данные в зависимости от валидности.
>>392274 Долбоёбом тебя назвал кто-то другой. У меня нет привычки сходу оскорблять людей. Если будешь использовать стандартную 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). Но к сожалению не понятно, почему это невозможно перенести на триггеры.
>>392906 У тебя ассинхронный ресет, который в списке чувствительности срабатывает по переднему фронту. Однако в теле олвейс-блока ты пишешь if(rst==0) -- что соответствует заднему фронту. Попробуй заменить posedge на negedge.
>>392913 > Попробуй заменить posedge на negedge. Бро, я так уже сделал, я понимаю что оно так заработает. Я пытаюсь понять, почему исходная конструкция принципиально не синтезируема. >ассинхронный ресет, который срабатывает по переднему фронту. Однако в теле олвейс-блока if(rst==0) -- что соответствует заднему фронту. Это понятно, опять же. Но в моем понимании, возможно ошибочном, эта конструкция не является логически неверной: Блок always сработал по переднему фронту rst, сделал count+1. Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
>>392920 Начни с изучения архитектуры FPGA под которую ты пишешь код. На худой конец открой library guide и посмотри, какие тебе доступны DFF-ки.
>Блок always сработал по переднему фронту rst, сделал count+1. >Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
Всё логично. Но если ты посмотришь, какие тебе доступны ячейки внезапно окажется, что такую конструкцию синтезировать нельзя.
>>392924 Я и так понимаю то что ты говоришь. Я прошу пояснить мне на примере, почему это нельзя запихнуть в стандартную логическую ячейку (LUT+DFF, как например CycloneII).
>Блок always сработал по переднему фронту rst, сделал count+1. >Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
У ячейки есть синхронный вход данных и ассинхронный сброс. Один из сигналов списка чувствительности займет вход синхронизации. Синхронный вход данных займет какой-то сигнал с сумматора (count+1) Это понятно?
Но ты собираешься проталкивать данные на выход триггера в том числе ассинхронно, по фронту reset. Как это сделать?
Когда конструкция, по сути, описывает, что и clk, и rst могут являться тактирующими сигналами для выполнения действия count<=count+1, то внезапно оказывается, что тактирующий вход у триггера всего один.
>>392938 Логика которую можно синтезировать выглядит так:
>Блок always сработал по переднему фронту rst, сделал count<=0. >Блок always сработал по переднему фронту clk, если rst будет 0, count<=0, иначе count+1.
Ресет пойдет на clrn, а выходы сумматоров идут на входы data.
>>392941 >Блок always сработал по переднему фронту rst, сделал count<=0. Твой код этого не описывает.
По переднему фронту rst он сперва проверяет, равен ли rst нулю. А поскольку rst нулю не равен (в случае переднего фронта rst будет равен 1), он идёт дальше и пытается выполнить count<=count+1.
>>392943 Niet. Чтобы это синтезировать, нужен триггер, умеющий защёлкнуть count<=count+1 и по фронту clk, и по фронту rst. То есть умеющий тактироваться от двух клоков.
>>392963 Можно. Только триггер от этого не станет чувствительным одновременно к фронтам двух клоков. Он будет терять чувствительность ко второму клоку, пока первый равен 1, и к первому, пока второй равен 1.
А ещё, если ты попробуешь так делать в реальном проекте (генерировать клок логической функцией из каких-то сигналов)), тебе с большой вероятностью дадут пизды.
>>392939 >Когда конструкция, по сути, описывает, что и clk, и rst могут являться тактирующими сигналами для выполнения действия count<=count+1, то внезапно оказывается, что тактирующий вход у триггера всего один. >>392945 >Чтобы это синтезировать, нужен триггер, умеющий защёлкнуть count<=count+1 и по фронту clk, и по фронту rst. То есть умеющий тактироваться от двух клоков. Ок, спасибо. Теперь будет вопрос раскрывающий моё принципиальное непонимание процесса: А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа?
>>392941 Т.е. получается, т.к. clrn асинхронный, когда к нему подключен rst и он в состоянии 1, я могу работать с синхронным входом. А при фронте rst или фронте clk и rst==0, в регистр запишутся нули. В принципе, логично. Но не очень понимаю, как это будет выглядеть на схеме соединений.
>>392938 Ок, спасибо. Всё ещё ничего не понял, но очень интересно.
>>392979 >А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа? Потому что такой сигнал неопределён, и его невозможно подвергнуть временному анализу при имплементации. А если даже теоретически и возможно, инструменты не будут этого делать, потому что по их мнению так проектируют только мудаки. Трассировщик не сможет проконтролировать, успевают ли сигналы вовремя доходить куда надо, схема будет по-разному работать при разных фазах луны.
>>392986 Т.е. ты хочешь сказать, что синтезатор просто на просто, воизбежание ошибки, выдаёт Error (хотя обычно мудацкое поведение, всё же, отмечается Warning'ами, а Error это когда уже гарантированная ошибка)?
>>392979 >А почему выход другой логической ячейки (реализующей функцию ИЛИ для rst и clk) не может быть использован в качестве источника для тактирующего входа?
При кодинге HDL нужно придерживаться определенных паттернов проектирования. Причем, эти самые паттерны могут меняться в зависимости от твоего девайса или вендора. Изобретая велосипеды ты возможно решишь какую-то локальную задачу, но в итоге это может выйти тебе боком на поздних стадиях проекта. Короче не выёбывайся, делай как все.
>>392990 Синтезатор выдаёт error потому что код, который был в треде выше, нереализуем на архитектуре ПЛИС. Он и при помощи тактирования OR'ом сигналов нереализуем, выше объяснено, почему. Здесь. >>392968 Ты не понял, что ли, почему так?
А почему в принципе не используется OR сигналов для тактировния — это следующий вопрос, отдельный. Синтезатор такое реализует, трассировщик разведёт, выдав критикал ворнинг, но работать это не будет из-за назначенных от балды задержек и невозможности назначить их не от балды.
>>393042 Я немного не в теме, даже близко такого не касался, но зачем оно? Вроде бы все равно потребуется микросхема PHY, так почему не поставить какой-нибудь cypress?
>>393044 А че, нельзя на старших моделях для этого использовать гигабитные трансиверы? Для Gigabit Ethernet вроде как можно, только сегодня в даташитах на Altera читал. На чипах старше cyclone IV gx активируешь корки для трансиверов и triple speed ethernet, и дело в шляпе. Может и для usb тоже так прокатывает?
>>393047 Ну, если спизжу аноны поправят, но ты немного смешал солёное с кислым. Что с PHY, что без, ты будешь использовать трансиверы для выдачи сигнала на USB, однако PHY микросхема нужна в первую очередь для согласования сигналов, в т.ч. электрического. Если у тебя выходы трансиверов способны обрабатывать подобный сигнал (дифф сигнал, какие уровни напряжения - нагуглить не смог), то да, можешь подключать плисину к USB порту без PHY.
>>393172 >Что с PHY, что без, ты будешь использовать трансиверы для выдачи сигнала на USB Необязательно. Могут существовать такие внешние PHY, которые общаются с плис параллельно по нескольким линиям LVDS на относительно небольшой скорости, для них могут использовтаься стандартные банки ввода/вывода.
>>393172 Я понял, что ошибся с Ethernet'ом, потому что там хитровыебанный 3-х или 5-уровневый сигнал (100/1000 Мбит соответственно). Но вроде у USB обычный дифференциальный, который ПЛИС может выдать со своих lvds-выходов. Надо только, чтобы чип обеспечивал нужные рабочие частоты на этих выходах, младшие семейства для этого не подойдут.
>>393350 Это не могоуровневый сигнал. Это двухуровневый сигнал с хировыебанной формой переходов, чтобы компенсировать импеданс линии. Плисовые LVDS генерируют такой же с атрибутом LVDS_PRE_EMPHASIS=TRUE.
>>393342 Я конечно хуй знает, но из ETH+PHY и USB, я бы выбрал ETH+PHY, потому что USB дохуя замороченная на верхних (программных) уровнях. А почему тебе никак нельзя прибавить внешний PHY, если не секрет?
>>393431 Да это просто мысли вслух, я не тот анон, который спрашивал про 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 еще ни разу ничего не делал. В целом нужны очень маленькие габариты и минимальное потребление всей системы датчиков.
>>393464 Требований по цене конечного продукта особых нет. ПЛИС пока рассматриваю MAX 10, потому что с одним питанием и конфигурационное ПЗУ не нужно. lvds вроде быстрые по документации, но возможно не пройдет по внутренним частотам, пока не разбирался, как работают альтеровские корки soft-serdes, которые они предлагают в своих даташитах.
Пока так думается, что разницы по деньгам между двумя вариантами особо не будет.
>>394138 Как могут быть дела у флексоеба, у которого может по паре-тройке часов практики в неделю на все это? В рамке под стеклом. На флексине уже помигал, выдавая состояние шин адреса и данных. Крайне мелкими шагами дрючу >>387393 срисовывая схему с натуры и пробую переписывать на Verilog, строя догадки что за снятая микросхема и должна ли она там быть. Похожа на логику, часть которой входит в детектор фронтов на RC цепочке и на CS второй ПЗУ. Собрал по паре >>392629 Reverse-U16 и DivGMX (осталось по мелочи, ПЛИС, память и генераторы есть) с них если что можно выдрать корку 580ВМ80. Для тестирования думал шмегу юзать, заебался, жду деталей на HydraBUS https://eax.me/hydrabus/, через которую можно будет делать всякие непотребства начиная от тупой железки, которая на своих портах GPIO задает-читает уровни до прикидывания SPI/IIC мастером. Определенно попаболи доставляет момент что "комп" частями и нет основного шасси, где наверное прячется контроллер прерываний, иначе не объяснить что на других платах где-то тупо закорочен на питание или на землю выход прерывания, где-то таймер(?) из 155РЕ3 и конденсаторов на линии прерывания. А документации на эту ебань чуть меньше, чем никакой. Реальная практика just for fun если что.
>>394518 Все не так просто и у меня то же подобный вопрос. Нужен счетчик который имеет джва асинхронных тактовых входа, где один вход увеличивает значение, другой уменьшает и в виду асинхронщины эти сигналы могут и одновременно приходить или один постоянно активен, другой при этом меняет свое значение и не раз. Тактового сигнала нет. Вообще. Лютая асинхронщина на логике. Другой анон.
>>394520 Если ФИФО не большое можно счётчик регистром заменить, каждый разряд в регистре соответствует слову в ФИФО. Или, как более продвинутый вариант для больших буферов, использовать дополнительный разряд в каждом слове в ФИФО, в котором бы находился флаг того что было ли считано слово или ещё нет.
>>394520 Это так не делается. Если есть два клоковых домена, то должны быть и два клока, и синхронные им сигналы в соответствующих клоковых доменах.
Для асинхронных фифо была придумана такая хуйня, как код Грея, чтобы без гонок сигналов переводить значения счётчиков из одного домена в другой. Следующее значение отличается от предыдущего ровно одним битом, и никак иначе.
Но это не означает, что счётчики кода Грея должны находиться в двух доменах сразу. Нужно иметь два счётчика, один счётчик считает указатель для чтения, другой — указатель для записи. Находятся, соответственно, один — в домене чтения, другой — в домене записи. Из домена в домен значения переводятся через трёхрегистровые синхронизаторы.
Сравнение, чтобы генерировать empty, должно выполняться в домене read. Сравнение, чтобы генерировать full, должно выполняться в домене write. Тогда им не потребуется проходить через синхронизаторы с соответствующей задержкой, они будут доступны сразу после возникновения (а вот сниматься с задержкой, но это норм, на целостность данных не повлияет).
>>394543 Ты говоришь про указатели, они как правило есть во всех реализациях фифо. А как из этих указателей узнать сколько слов можно прочитать и сколько слов можно записать?
>>394783 Вычесть одно из другого, ёба. Как с генерацией empty, лишь немногим сложнее. Там, где генерируется empty — там же можно и считать, сколько ячеек не empty.
>>394819 Ну давай прекинем. Допустим глубина фифо 256. После ресета я записал 255 слов. Указатель записи будет показывать значение 8'hFF. Указатель чтения будет нулевым, т.к. я еще не прочитал ни одгого слова, 8'hFF - 0 == 8'hFF, всё верно. Но если я прочитаю 5 слов, а потом запишу 5 слов то указатель записи будет равен 8'h04, а указатель чтения 8'h05. Что от чего отнимать в этом случае?
>>394934 >Что от чего отнимать в этом случае? А подумать немного самому? Если ты не можешь ответить на этот вопрос, ты же даже веб-макакингом не в состоянии заниматься.
>>394944 >cnt = (wr_ptr >= rd_ptr) ? wr_ptr-rd_ptr : FIFO_DEPTH+wr_ptr-rd_ptr ; Это же решение влобовую, сколько здесь логики уйдет - это же компаратор, мультиплексор и два субтрактора. Такое фифо будет тормозить. Я пытаюсь родить нечто отвечающее стандартам промышленного проектирования, а с шашкой наголо высирать кучу тормозящего говна.
>>394957 Фифо обычно имеет размеры степеней двойки, НЕСПРОСТА БЛЯТЬ cnt = wr_ptr-rd_ptr Как то так, главное что бы разрядности поинтеров были ровно такие же как и длина фифо
Я к чему вообще загнался по поводу фифо. Что у Intel, что у Xilinx корка fifo зашифрована. При этом другие стандартные корки открыты. Почему так сделано? Видимо там все не так тривиально.
>>394957 >это же компаратор, мультиплексор и два субтрактора. Причём всё, кроме мультиплексора, может вычисляться параллельно. А половина логики при синтезе автоматически оптимизируется выкидыванием повторяющихся операций, и сделает это намного лучше тебя.
>Такое фифо будет тормозить. Нет.
>Я пытаюсь родить нечто отвечающее стандартам промышленного проектирования Тогда в первую очередь позаботься о ясности кода и очевидности выполняемых действий.
Ну и, как было выше сказано, есть радикальное решение, хотя и не могущее в универсальность — делать вычисления по модулю степени двойки.
Братишки, у меня к вам вопрос, можно сказать, философского характера. Вот есть код на языке Верилог. Всем известно, что вериложный синтезируемый код - это не программа, но представление схемы в текстовом виде. И всё бы хорошо. Но теперь мы берём этот код и моделируем в каком-нибудь МоделСиме. Что в этом случае? Ведь вереложный код - это, по прежнему, не программа, т.к. машинных инструкций в нём не содержится и процессором он на прямую не исполняется, но теперь уже и не схема. Можно ли сказать, что код на Верилоге, в этом случае, является скриптом по которому МоделСим рисует временные диаграммы?
>>395019 Код на верилоге для симуляции компилируется в исполняемый файл, тогда он становится программой, исполняемой на процессоре. Симулятор сохраняет и рисует выхлоп этой программы. Это делается потому что так симуляция работает быстрее.
Как в писать тестбенчи? Например случай когда есть 3 входа и 3 тактовых разных сигнала. Подаю любое (1 или 0) на один из входов и даю первую тактовую частоту пусть на 1мс, потом ее отключаю и на второй вход подаю любое число и подаю вторую частоту на 2мс, потом ее отключаю и подаю сразу первую и третью частоту одновременно на 3мс. Как это описать?
>>395022 В самом деле? Прям в ассемблерные инструкции переводится, прям в ехе?
>>395028 "высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой." Ну. Т.е. скрипт это набор команд для некой софтины, не для процессора, которая их исполняет. Пример: bat-файлы в Досе. bat-файлы содержат не инструкции для процессора, а обычный текст и выполняются не процессором, а операционкой. Тоже самое и у Верилога с МоделСимом. Хотя этот анаон >>395022 говорит что вериложный код компилируется в программу, что несколько обескураживает.
>Ну. Т.е. скрипт это набор команд для некой софтины, не для процессора То есть жава (не путать с жаваскриптом) это не язык программирования, а скриптовый язык? Он исполняется жава-машиной.
Хотя у меня строчка в МоделСиме выглядит несколько иначе.
>То есть жава (не путать с жаваскриптом) это не язык программирования, а скриптовый язык? Я в этих ваших жаба-машинах ничего не понимаю. Но если между кодом и процессором существует некая прослойка, в виде жабы-машины, которая не компилирует этот код в процессорные инструкции, то да, такой код надо считать скриптом, по определению.
>>395044 Был задан вопрос как описать такое поведение, а не как оно работает и возможно ли. Повторю вопрос - как это написать в тестбенче тактовые сигналы показаны условно и могут быть любой длительности?
>>395111 >Был задан вопрос как описать такое поведение Я в курсе. Я тебе это написал на всякий случай, потому что ты хочешь странного, а знания, которые требуются для этого, довольно базовые. Когда нуб хочет странного, то обычно он не осваивает продвинутые методы, а просто чего-то не до конца вдупляет.
А то, что тебе требуется, можно написать разными способами, я бы написал так (пикрелейтед).
>>395119 Спасибо, Анон! Возьми Циклон внимание на маркировку. В шары долблюсь или у товарища Jack0v еще не было про тестбенчи, а метод синтез-конфигурация-проверка IRL как-то подзаебал.
>>395125 Кто бы его знал. Между некоторыми семействами есть побитовая совместимость. Очень отдаленный пример из 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
>>395187 Что ты привёл в пример это немного не то совсем не то, но мысль я твою понял. Тут одно исполнение, просто разное поведение в разных температурных диапазонах. В коммерческом От 0 до 60 градусов работает как -1 SpeedGrade, а вне диапазона скорость распространения сигнала снижается, но скорость стандартного SpeedGrade производитель ещё может гарантировать.
>>395102 >Хотя у меня строчка в МоделСиме выглядит несколько иначе. Собственно вот: >vsim -t 1ps -L rtl_work -L work -voptargs="+acc" Test Порылся также в файлах генерируемых МоделСимом, ехе-шников не обнаружил. Может то что ты говоришь это какое-то новаторство от Хилых, или я МоделСим юзаю как-то неправильно?
>>395253 Всё может быть. То, что происходит под капотом, юзеру в любом случае не предназначено, так что испольняемый файл можно называть как угодно. Саму такую схему можно реализовать разными вариантами — например, сделать dll и дёргать из неё исполняемый код в виде библиотечной функции. Я даже не помню, откуда я вообще знаю, что симулятор от хилых компилирует хдл в исполняемый код. Так что если тебе хочется разобраться, придётся гуглить самому.
Анонче, есть кто сечёт в modelsim'e? Разбираюсь как писать в файлы. Системные функции, такие как $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);
Пытаюсь работать с регистром в цикле, задавая разряды через переменную. Соснул. Моделсим говорит 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
>>395737 А так мне про идее нужно 7-8 пинов на каждое внешне устройство, логику на поднятие эзернета и конвертеров mii-rmii? Никаких других ограничений нет?
>>395346 Same question. Для начала хотя бы тупая корка с парой регистров с отображением в GPIO для хуйни типа 32 бита ввод и 32 бита вывод. Платки нет, пока просто спрашиваю.
>>395734 > в плисине поднять 20+ MAC для организации передачи по rmii на 20+внешних устройств? Backplain делаешь? Какова цель? Может проще взять говно мамонта и из SMII сделать RMII? http://openrrcp.org.ru/download/datasheets/RTL8316B_Datasheet_1.0.pdf Сам собрался реализовывать логику работы свича, включая еблю с коллизиями хешей, вланами, обучением адресам на портах?
>>395806 >Какова цель С наименьшими количеством линий и наибольшей скоростью не более 10мкс на перестройку передать параметры где-то 3-6 байта на 20+ устройств. Сейчас от rmii опять отходим, потому что там передача и формирование минимального фрейма уже займет 18мкс. Возможно SPI выберем, если там хотя бы 50мбит можно поднять.
>>395808 >Ограничения только по быстродействию этих самых пинов. Это как?
>>395835 >Это как? У пинов влисины есть предел по максимальной частоте. У Xilinx есть разделение на HR и HP банки. Одни поддерживают больше логических стандартов, другие более высокую частоту.
Есть у меня один цикл в тестбенче. Почему возникает такая ошибка? Как ее обойти? for (i = 0; i < 8; i=i+1) begin $fwrite(packet_dump,"%h", axis_tx_tdata[i8 + 7:i8]); end
Анон, скинь пожалуйста статей по использованию IP-ядер и как с ними взаимодействовать по AXI, а то либо я слепой, либо статей нормальных нету. Но скорее тут второе.