Вы видите копию треда, сохраненную 15 января 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
>на тактовой частоте 1 ГГц
Ты совсем охуевший? Такие частоты разве что последние поколения тянут. Отладка с такой ПЛИСиной стоит не менее нескольких тысяч долларов.
>Такие частоты разве что последние поколения тянут. Отладка с такой ПЛИСиной стоит не менее нескольких тысяч долларов.
В курсе. Я же говорю, что не собираюсь ничего отлаживать/прошивать. Это проект кодера для системы связи со скоростью передачи данных 1 Гбит/с. Там одно только оконечное оборудование не менее 10к долларов стоит. Лучше расскажи про
>Какие основные характеристики платы нужно учитывать при её выборе?
Буду признателен.
Это говно, тактовая отсутствует как класс, памяти нет, самопрошивки тоже. Смысл только чтобы эмулировать процессор и быструю логику? Лучше взять малинку, дешеве и перефирии больше.
>малинку
Что это?
Ладно, чтобы было понятней, пикрилейтед - rtl схема кодера. Какие ксайлинковские/алдеровские платы подойдут для реализации такой байды с тактовой частотой 1 ГГц?
У пидоров сегодня в моде ПЛИС?
То есть ты хочешь, чтобы указанное тобой на пике говно, скакало с частотой гиг?
Попробуй вот эту плату
http://www.xilinx.com/products/boards-and-kits/EK-V7-VC707-G.htm
Как оказалось, это говно скачет на частоте гиг даже на кристалле семейства virtex 4. Пикрилейтед. А на дорогущем седьмом виртексе при тайм констрейнте 1 нс выше ~750 МГц работать не хочет.
Почему не может? У меня же всего 5 логических элементов, сгруппированных у входных/выходных пинов. Вот сильно загруженный логикой кристалл такую частоту не потянул бы, да.
Речь вообще-то шла о тактовой частоте синхросигнала. В моей схеме тактовая частота синхросигнала привязана к скорости передачи данных - 1 Гбит/с. За эту наносекунду тактового сигнала все сигналы в схеме успевают дойти от одного триггера до другого (задержка через критический путь - 0,868 нс).
Мне почему-то казалось или я где-то слышал, что Виртексы пятые можно максимум до 400МГц раскачать, более старые - соответственно до еще меньших частот.
Охуеть блять. Но что у седьмых Кинтексов сраный BUFG может работать максимум на 750МГц - это вообще пушка.
Меня тоже удивил результат, но верю на слово ксайлинковскому САПРу.
Ладно хоть этот чудом не утонул.
http://www.joelw.id.au/FPGA/CheapFPGADevelopmentBoards
Проблема в том что у нас хрен что купишь, а если учесть санкции то вообще пиздец.
С помошью SERDES переводишь входные последовательные данные в паралельные, обрабатываешь на кратно меньшей скорости, и потом преобразуешь назад.
Сложна ли реализация его для плис? Нужен ли какой-то особый драйвер для пекарни/кьюбиборда?
UPD: может проще Ethernet с PPP поверх него? Ethernet PHY с разъемом на моей борде имеется.
Но ведь его заебешься реализовывать. И не понятно, как с ним работать хосту. Надо драйвер будет писать.
Можно линупс поставить.
МАТАН ТРОЛЬ уровень1024
привет, радон. суть такова: надоели мне контроллеры и стандартная логика, захотелось поизучать ПЛИС. взял ширпотребную CPLD EPM240T100C5N
в квартусе разобрался, marsohod.org весь прочитал
логику работы понимаю, в симуляторе все отладил, но во тв железе никак не выходит.
развел плату, протравил, все напаял, залил через USB-Blaster, светодиодики сразу забегали как и планировал, но вот вторая часть не заработала. попробовал отладить через JTAG с помощью In-System-Sources-and-Probes, но вообще нихуя не залилось, выдает только ошибку JTAG. контакты все прозвонил. да и вообще плата просто лежала 3 дня, пока я читал доки.
что за хуйня, анон? что я делаю не так?
пару месяцев назад я пробовал сделать демоплату типа того же марсохода и с ней произошло то же самое - 3 дня лежала и испортилась. точнее вообще тестер выдавал, что питание и земля замкнуты.
может стоит заказать плату с какого-нибудь seedstudio? в чем вообще проблема может быть?
Да. делай как анон говорит. И еще проверь на непропай. А еще проверь все земли и питания, в плис или клпд можно запитать не все банки, тогда логика будет работать, а ноги нет.
Altera signal tap пробовал?
Или может не стоит отговаривать?
Стоит отдельно отметить, что это open-source, исходники софта и железа в открытом доступе.
http://www.seeedstudio.com/depot/Bus-Pirate-v4-p-740.html - универсальный reader/writer мира мк
http://www.seeedstudio.com/depot/Open-Workbench-Logic-Sniffer-p-612.html - логический анализатор, 32 канала
Поддерживаемые протоколы
http://sigrok.org/wiki/Protocol_decoders
Забыл добавить, что разориться на оборудование, решил для лёгкого старта знакомства с мк.
И, собственно вопрос по мк. Что лучше- брать дев.борды на каждую архитектуру, и не заморачиваться с распайкой, или покупать микрухи отдельно и колхозить заказ печатных плат у китайцев? Может дешёвые dev-kits в продаже имеются? И какие контроллеры (десятка самых популярных, к примеру) лучше брать, чтобы всё сразу, и не закупаться по сто раз?
И да, буферный теоретический минимум имеется если что, а с ардуино-мигалок начинать как-то не камильфо.
`include <filename>
или гугли $readmemb $readmemh
Они точно работают в симуляторе, для RTL вроде тоже вроде, не пробовал
Спасибо, анон. `include <filename> вероятно мне не подойдет, а $readmemh порпобую. Не уверен, правда, что будет работать. Помню пробовал заюзать $sformat для того, чтобы генерировать название .mif файла. Было несколько модулей с блоками памяти, каждую из которых надо было инициализировать своим файлом (file1.mif - для первого, file2.mif - для второго, ну и так далее). Дак этот ебаный квартус начал пояснять мне за несинтезируемость этого самого $sformat. Сука, как же мне печет от этих ваших HDL-языков! Нельзя что-ли было сделать что-то вроде комбинации препроцессора с большими возможностями + полностью синтезируемого языка?
>Есть более изящные языки?
Изящные? Эстет чтоли дохуя?
>Чем твой хуйлинкс лучше?
Документация пизже. И новая Вивада, по сравнению с обоссаным Квартусом, - небо и земля.
Как раз таки vhdl - говно с душой, дающее максимальное приближение к железу. Прошивка ПЛИС - это не программа, коей хотят ее видеть неосиляторы. Прошивка - это железо и для описания железа vhdl куда более пригоден.
>Прошивка ПЛИС - это не программа, коей хотят ее видеть неосиляторы. Прошивка - это железо и для описания железа vhdl куда более пригоден.
Ты тупой еблан, который про Verilog, судя по всему, лишь где-то когда-то слышал, что его синтаксис похож на Си.
Пример цифрового элемента, который естественно и удобно описывается на VHDL и не может быть естественно и удобно описан на Verilog?
В верилоге нет пакетов с функциями синуса и косинуса. Только если самому писать.
>В верилоге нет пакетов с функциями синуса и косинуса. Только если самому писать.
И это у тебя называется "VHDL более пригоден для описания железа" и, особенно, "прошивка ПЛИС - это не программа, коей хотят ее видеть неосиляторы"? Не говоря уже о том, что для генерации LUT есть матлаб.
Нет, это называется "приведи пример элемента, который естественно и удобно описывается на VHDL и не может быть естественно и удобно описан на Verilog".
Я вот фанат верилога. Считаю его более близким к железу. Программа написана на верилоге ВСЕГДА короче чем то же на ВХДЛ. А еще строгая типизация не нужна, бегин енд тоже ненужен.
Прошивка это такой процесс, когда феритовые кольца прошивали проволкой. в колечно 1, мимо - 0. Остальное демагогия.
Правильно называть: язык описания аппаратуры
Функция, которая в compile time генерирует набор коэффициентов для загрузки в блочную память, не является "цифровым элементом".
Во-первых, не занудничай.
Во-вторых, прошивка - это то, что грузится в микросхему, а никак не язык описания.
>>140663
Блочная память с загруженными коэффициентами, в свою очередь, является "цифровым элементом".
>>140661
>А еще строгая типизация не нужна
Нужна, незаменимая вещь, если уметь ею пользоваться.
>Блочная память с загруженными коэффициентами, в свою очередь, является "цифровым элементом".
Но ни способ генерации этих коэффициентов, ни описание этого способа не является "цифровым элементом" или его частью. Ты можешь обосновать, почему Верилог дальше от железа, чем VHDL? Функция для расчёта коэффициентов в compile time тут точно нерелевантна.
То, что все, что ты напишешь, потом проходит через компилятор. А поскольку строгой типизации нет, компилятор может из написанного сгенерировать непойми что, вместо знакового числа сделать беззнаковое и наоборот.
Т.е. верилог как си, а вхдл - как асм. Первый конпелируется, второй - преобразуется по таблице байткодов напрямую в машинный йезык.
И тот и тот компилируется, не тупите. ВХДЛ скорее с++ или даже паскаль.
>Т.е. верилог как си, а вхдл - как асм.
Почему "т.е."? Асм это язык со слабой типизацией. Никто не помешает тебе вычислить число с плавающей точкой, потом сложить его экспоненту и мантиссу как два целых числа, а потом результат использовать как указатель. В языках с сильной типизацией за такое бьют по пальцам, но не потому что они ближе к железу, а потому что быдло до неявного преобразования типов допускать нельзя, оно не осилит даже строгого набора правил, по которым происходит неявное преобразование типов, всё поломает и будет ругать компилятор, будто бы он делает не пойми что.
Я так понял, что в твоём представлении банально "чем больше ебли, тем ближе к железу".
Асм ближе к железу, именно поэтому на нем можно сделать это: вычислить число с плавающей точкой, потом сложить его экспоненту и мантиссу как два целых числа, а потом результат использовать как указатель.
Как раз в си будет больше ебли, чтобы провернуть вышеописанное.
Ну так и чего? Ты мне доказываешь, что асм ближе к железу из-за слабой типизации, вхдл ближе из-за сильной типизации. Ты уж определись, как типизация влияет на близость к железу.
>Как раз в си будет больше ебли, чтобы провернуть вышеописанное.
В Си будет на порядок меньше ебли потому что в нём в принципе на порядок меньше ебли, а всё вышеописанное делается стандартными способами любым, кто осилил K&R.
>в твоём представлении банально "чем больше ебли, тем ближе к железу"
Я не он.
В моем представлении схема должна работать так, как ты ее описал. Поэтому, в моем представлении, язык должен давать максимум возможностей к описанию схемы. И компилятор тут лишний.
Каким образом слабая типизация лишает тебя возможностей к описанию схемы? На всякий случай напомню, что неявное преобразование типов не отменяет возможности использовать явное, и лишь позволяет в ряде случаев не писать безумные развесистые конструкции VHDL-ного типа, когда преобразование, предлагаемое по умолчанию, тебя устраивает. Это не более чем мелкое удобство, сокращающее количество набираемого текста и не влияющее на результат при условии, что ты знаком с правилами неявного преобразования.
>В Си будет на порядок меньше ебли
В асме это джве-три команды например.
А в си - ебля с преобразованиями типов.
Как в верилоге задать состояния конечного автомата? В vhdl пилишь новый тип с перечислением всех состояний, потом пилишь case. А в верилоге как?
>А в си - ебля с преобразованиями типов.
Не ссы, поставить (int) - это только в первый раз страшно.
>>140714
>В vhdl пилишь новый тип с перечислением всех состояний, потом пилишь case. А в верилоге как?
[code]
parameter [1:0] state0=0, state1=1, state2=2;
reg [1:0] state;
(...)
case(state)
state0:
(...)
state = state1;
(...)
[/code]
Ближе к железу, кстати.
Считать/записать значения в альтеровские плис можно с помощью In-System Source and Probes. Вместо gui можно написать скрипт на TCL.
Развесистые конструкции в VHDL появляются из-за неправильного использования типизации. Развитая система типов в VHDL позволяет проще реализовывать сложные конструкции.
C Xilinx не работал, поэтому не знаю.
Вроде бы оно. Спасибо.
Надеюсь господа полицейские радача не решат, что я попиариться пришел.
Есть один проект тематики /ra/ https://2ch.hk/prj/res/1.html (М)
Приглашаю всех к обсуждению. Есть часть, связанная с ПЛИСами. Вдруг кто-нибудь захочет присоединиться.
Я покупал у китайца вот такую плату http://www.ebay.com/itm/ALTERA-FPGA-NIOS-CYCLONE-IV-EP4CE15-USB-BLASTER-Power-Adapter-Many-Gift-E082-/261058354313?ssPageName=ADME:X:eRTM:US:1123
Относительно дешево, на борту много чего есть. Из инструкций нужна все равно только принципиальная схема.
Да ты охуел! Студенческая цена всей платы ниже чем цена камня установленного на ней.
http://www.digikey.com/product-search/en?x=11&y=9&lang=en&site=us&keywords=EP4CE115F29C7
ну и нахер нужны эти ваши плис? за такие то деньги.
у нас на заводе 10+ работает полусоветская релейная промавтоматика, управляемая PIC'ами, и всех все устраивает, работает надежно, новое никому не нужно
вы представляете сколько PIC'ов можно купить за эти деньги? то-то же. ПЛИС - бестолковый проеб бабла, ящитаю.
Ну вот и работай дальше на своем заводе.
ПЛИС - таки годнота, но задачи у него специфические. Пики - это МК, они дешевы, но имеют низкие частоты, и высокие задержки, притом не гарантированные.
Ну а где требуется риалтайм или огромные потоки данных - требуется чистая логика, с минимальными и гарантированными задержками. Тут и приходят на помощь плисины - чем сочинять 100500 плат на к155, лучше купить одну плисину и закодить схему в одном корпусе.
Так что дорого - это от раздолбайства, на самом деле плисины очень дешевы, всего то сотня баксов, и получаешь аналог кучи плат, каждая из которых стоила бы не меньше.
Ну а если плисину ставят туда, где хватит МК - это раздолбайство в чистом виде, там да - дорого.
Вот всякие заводчане и лезут со своими куллсторями, как плисина управляет двумя реле по сигналу с кнопки, лол.
> релейная промавтоматика, управляемая PIC'ами
Для кого сука плк придумали, не, не хотим, хотим жрать говно.
Ну естественно, а ещё они стандартизированны и их программу есть шанс поправить.
Ишь, USB на борту. DE1 попроще будет, там USB только для программирования. Пока запустил прием и передачу через COM порт, запустил VGA и сделал на четверть теннис на одного игрока (мячик-стенки-ракетка). Надо в него проигрыш вставить.
>ну и нахер нужны эти ваши плис? за такие то деньги
>Фор фан же
Ну разве что.
Не знаю, реализовали ли снес на ардуине лол, но уж на ежевике точно есть.
Ты не понимаешь сути плис, мудило. ПЛИС это не какой-то хитровыебанный микропроцессор, это в прямом смысле слова переконфигурируемое железо, оно обеспечивает недостижимую для программных решений скорость вычислений, естественно если пытаться закручивать винты молотком ты никаких преимуществ не увидишь, у них своя ниша.
А ты про это. Обработку 100 ГБит эзернета ты можешь на ардуине сделать? А на ПЛИС можно.
Ты умственно отсталый что ли? Как ты думаешь в топ-энд сетевом оборудовании данные обрабатываются?
Ты меня затролел своей тупостью.
Ну уж явно не плисами, лол, нахуй эти игрушки когда производители "топ-энд" оборудования могут сразу все в железе сделать.
Ага, особенно когда тираж конечных изделий пара тысяч штук. Сразу все в железе делают. Заказывают две тысячи микросхем на тайваньских фабриках.
>Cделать сразу в железе
>Устройство, которое неизвестно как будет работать в реальных условиях
>И подготовка к производству которого стоит овердохуя зеленых президентов
Da ti ohuel! Алсо ПЛИСы используют в оборудовании ОПСОСЫ, т. к. внезапно может потребоваться модернизация под новые стандарты сетей
Так и запишем - ПЛИСы для нищебродов и микро-контор. Непонятно правда причем тут
>в топ-энд сетевом оборудовании
>Алсо ПЛИСы используют в оборудовании ОПСОСЫ, т. к. внезапно может потребоваться модернизация под новые стандарты сетей
Так и представил себе опсоса с собственным оборудованием, ололо. Контроллер "МТС-3000" на базе альтерры с прошивкой от Васяна, сегодня 3ж, завтра 4ж, только Васян проспится.
Ты вообще представляешь себе что ты несешь? Да эти пидоры-производители оборудования удавятся скорее чем софтом новый стандарт сделают. Им это меньше всего нужно. Хочешь лте тдд - бери железку. Хочешь лте фдд - прости, вот тебе другая железка, ту можешь выкинуть.
> ПЛИСы для нищебродов и микро-контор
Ох лол, погугли-ка цены на IP-ядра и топовые плисы, петушок. Слишком толсто ты тралишь
Во-первых, оборудование на плисах делают не сами ОПСОСЫ. Во-вторых, продавать можно не железку, а дизайн, а цену задирай как хочешь, ведь твое оборудование уже купили. В-третьих, попробуй потоньше.
>Во-вторых, продавать можно не железку, а дизайн, а цену задирай как хочешь, ведь твое оборудование уже купили.
Ты, наверное, хотел сказать "лицензии", а не дизайн, ну да хуй с тобой. Пруф хоть один будет апгрейда железа на "новые стандарты сетей" или сольешься?
Хотя ладно, держи и на апгрейды.
http://www.cisco.com/c/en/us/td/docs/routers/7200/configuration/feature_guides/fpd.html
Как ты в тред пролазишь, толстячок?
Спасибо.
и в нем ссылку на ценник каких-то французов с минимальной партией в 25 кристаллов: http://cmp.imag.fr/products/ic/?p=prices
Для тех, кому лень учить английский: за квадратный миллиметр кристалла от 650 евро (350 нм технология) до 15000 (28 нм). Не сверхъестественно, но и недешево.
Так что для серий в сотни-тысячи изделий ПЛИС выйдет дешевле. Я уж не говорю про стоимость исправления ошибок дизайна - в случае ASIC вся партия идет на выброс.
Одного дня - нет, недели точно хватит.
Да, без проблем. Буферы не синхронный, если не укажешь явно. Погугли, например, как подключить к плис кварц, думаю будет ясно.
Двач, задавай вопросы, скучно же.
У меня 2014.2. Кстати, а зачем ты Виваду ставишь? Собираешься сразу с седьмой серией работать?
Студентота-кун репортинг ин.
В универе успел немного познакомиться с плисами и vhdl, только вот это длилось только один семестр ебаный бакалавриат.
В любом случае, хочу продолжить освоение, но уже сам, посему реквестирую книг про systemverilog.
Одно дело, конечно, уметь кодить и понимать работу плисов, но было бы еще круто узнать, как найти в рашке работу связанную с ними, да послушать успешных анонов. Навскидку в голову приходят небольшие частные конторы, занимающиеся сетями или гос предприятия, собирающие железо на заказ для всяких роскосмосов. Так ли это вообще, или всем похуй/заводи трактор/тащи-код-с-опен-корес-и-не-парься?
если хочешь быть успешным в рашке, то нужно изучать не системверилог, а 1с.
если же настолько упорот, что хочется-таки в электронику, то тут одна лишь надежда на цос. но там годы нужны на погружение в тему.
Не уверен, что в рашке есть конторы, которые пишут на SV.
По поводу работы - ищи на hh и на форуме electronix.ru/forum.
Как ты думаешь, почему именно пользователей линукса называют "красноглазыми", а сам линупс "прыщами"? Ничего не имею против Линукса, просто не люблю, когда обижают винду в тех местах, где и прыщи не блещут
стоит только немного обосрать винду так сразу прибежит какойнибудь спермоглот и начинает кукарекать про линупс, я имел ввиду что ДОС круче винды, при ДОСе такой хуйни с длл небыло
и почему? всегда было интересно это узнать.
Айфон - это кал.
Что делать-то? Если закажу, ждать долго, пока китайцы отдуплятся. Нагуглил что есть какой-то Xilinx Parallel Cable на резисторах и в LPT, как оно ваще, работать будет? Или медленно?
>можно ли заделоть на плисе pll с блекджеком и частотами
А поконкретнее?
В некоторых плисах и встроенные PLL есть.
Плисины там совсем простые, CPLD, а не FPGA. Но примеры годные и их много.
вроде бы прошивается, но реконфигурации не происходит. Подключение ног EPCS1 сверил по даташиту и тоже обрывов или других косяков не нашел. В чем может быть проблема?
Только что проверил, сопротивление между TDI и GND - ровно 10кОм. К тому же, даже если б TDI был замкнут на землю, то отдельно прошитый через AS EPCS1 должен был заново сконфигурировать ПЛИС? Или я не прав?
Какого хуя, эта ваша блядская Vivado не поддерживает божественный SystemVerilog? Почему интерфейсы запилены через жопу? Кодогенераторы, враперы, хуяперы! Сколько я еще буду терпеть вот такую хуйню:
.S_AXI_ACLK(s00_axi_aclk),
.S_AXI_ARESETN(s00_axi_aresetn),
.S_AXI_AWADDR(s00_axi_awaddr),
.S_AXI_AWPROT(s00_axi_awprot),
.S_AXI_AWVALID(s00_axi_awvalid),
.S_AXI_AWREADY(s00_axi_awready),
.S_AXI_WDATA(s00_axi_wdata),
.S_AXI_WSTRB(s00_axi_wstrb),
.S_AXI_WVALID(s00_axi_wvalid),
.S_AXI_WREADY(s00_axi_wready),
.S_AXI_BRESP(s00_axi_bresp),
.S_AXI_BVALID(s00_axi_bvalid),
.S_AXI_BREADY(s00_axi_bready),
.S_AXI_ARADDR(s00_axi_araddr),
.S_AXI_ARPROT(s00_axi_arprot),
.S_AXI_ARVALID(s00_axi_arvalid),
.S_AXI_ARREADY(s00_axi_arready),
.S_AXI_RDATA(s00_axi_rdata),
.S_AXI_RRESP(s00_axi_rresp),
.S_AXI_RVALID(s00_axi_rvalid),
.S_AXI_RREADY(s00_axi_rready)
Сколько, я вас спрашиваю? Дали вам SystemVerilog, структуры, интерфейсы и юнионы, нет, блядь, хотим жрать говно, дрочить на текстовые простыни и кодогенерировать. Уебки блядь!
За Артикс мне поясни, тогда доставлю.
Какую нище-плату выбрать если ты нищестудент и связи с последними событиями в жизни рубля, купить отладочную плату для тебя стало нетривиальной задачей?
Очевидный «Марсоход-2» очевиден. Плюс у стартеркита есть две простенькие платы (одна на Циклоне-4, другая на Спартане-6) с ценой в районе 3 килорублей.
махарайка какая-то. с соседнего треда.
Ты издеваешься, такие пики постить? А на этом у тебя что? Понятно, что отладочная плата. Что в ней за 4 пустых блока? Почему у нее всего 4? Она что, ебанутая?
Эй не кипешуй, это несущая плата для отладки мезонинов. Ты же не дымишь когда видишь, материнскую плату с пустыми PCie слотами
>Какой самый лучший способ для отправки данных с фпга на пекарню?
>SATA2
>USB HS
Разве pcie не легче реализовать?
>SATA
а разве сату получится подключить хост-хост?
она вроде скоростнее сраного усб
а вообще сто мигабит хватит всем по езернету
>В чем соль?
>Просто кристалл с кучей тригерров/счетчиков/таймеров, взаимодействие между которыми мы определяем прошивкой?
Сам спросил - сам ответил.
Ну а что мешает в прости-Господи той же ардунье, там же можно программно делать и таймеры и счетчики и триггеры? Или у неё мала частота опроса входов и выдачи сигналов на выходы?
Вот ты стебаешься, а ПЛИС и вправду другой уровень. Это тебе не для ардуины скрипты писать.
Анчоусы, передо мной стоит задача: сделать устройство, выполняющее некие операции со звуком и делающее из этого картинку. Также имеется дисплей под это дело с параллельным интерфейсом. Так вот, можно ли на плисине сделать помимо обработки аудиосигнала еще рисование картинки в видеопамяти и вывод этой картинки на дисплей? Какое семейство альтеры подойдет? В крайнем случае могу подумать о альтернативах, но альтеровские штуки под рукой.
Один добрый антоним уже освятил меня на использование плис.
> Ну а что мешает в прости-Господи той же ардунье, там же можно программно делать и таймеры и счетчики и триггеры?
Грубо говоря, всё: http://electronics.stackexchange.com/questions/4382/fpgas-vs-microcontrollers
Студентота электронщик, имею относительно хороший опыт в программировании STM. Решил обмазаться ПЛИСами. Так вот с чего начать? С одной стороны есть Марсоход с кучей примеров и статей. Но вот смутило меня то что на ПЛИС которую проект юзает, "всего" 10к логических элементов. Это нормально для начала? ну и еще какие есть отладочные платы с ПЛИСинами которые имеют хорошую учебную базу?
DE2-115 закажи.
Минусы:
-Цена $600
Плюсы:
-115к логических элементов, что очень прилично
-Овердохуя периферии на плате и много светодиодиков с выключательчиками :3
-Есть пдфки с лабами, если не знаешь с чего начать
-Годно выглядит: телки текут, быдло боится
-Для студентов цена всего $300, достаточно прислать скан российского студня.
Алсо сейчас появилась DE1-SoC. Там чуть поменьше логических элементов в плисине и поменьше периферии на борде, но зато есть двухядерный ARM Cortex-A9 прямо в плисине и академ-цена всего 175 бачей.
А вот есть ли какая нибудь хитрая схемка для того что бы можно определить сколько мне логических элементов понадобиться для проектов из определенных областей? Если с МК в моей голове все просто и я могу определить что для этого мне понадобиться приблизительно такой контроллер, то с ПЛИС как то непонятно.
Прикидываешь блок-схему. Ишешь, какими IP-блоками можно её реализовать. Качаешь даташиты на них, там всё расписано по занимаемой логике. Складываешь. У множаешь вполтора раза, а лучше в два, потому что place & route хочет некоторого пространства для действий, чтобы по всем констрейнтам укладываться. Примерно так.
а вот еще один вопрос. Собственно с чего я друг метнулся с МК на ПЛИС. В последнее время меня очень заинтересовало компьютерное зрение, для большинство алгоритмов КЗ на МК жутко тормозят. Более или менее удалось реализовать это контурный анализ на STM32f4 но с хуевым разрешением и само собой о реалтайме речи и не идет. Насколько актуальны реализации алгоритмов КЗ на ПЛИС? есть ли вообще такое? имеет какое нибудь реальное применение? В основном гуглятся какие то абстрактные научные работы не имеющие с сомнительной практической реализуемостью.
Сейчас на opencl под плисы можно писать. Так что, очевидно, что все возможно.
Ты не можешь в ардуине сделать сто счетчиков, работающих параллельно.
>какая нибудь хитрая схемка для того что бы можно определить сколько мне логических элементов понадобиться для проектов из определенных областей?
Пишешь проект, синтезируешь в САПР, оно тебе покажет, сколько чего будет использовано и влезет ли вообще твой проект в выбранный кристалл.
На али всего несколько (это меня смущает больше всего) предложений с 3 speed grade и сотни с 2. Вот, например, http://ru.aliexpress.com/item/Xc6slx9-3tqg144c-xc6slx9-3tqg144-xc6slx9/1039508354.html - реального фото нет, В обязательствах продавца "при несоответсвии товара возврат денег, но пересылка товара за счет покупателя".
Не наебут ли меня, подсунув 2 speed вместо 3?
Вот цитата - Если товар не соответствует описанию, Вы можете вернуть товар, оплатив стоимость обратной пересылки, или оставить товар себе и договориться о компенсации с продавцом
Раньше я встречал только Если товар не соответствует описанию, Вы можете договориться с продавцом о компенсации без необходимости возвращать товар
Хуйня какая-то
>>12737
Это вы про ПЛИС или про что-то конкретное?
так-то и самопрошивка и память в мегабиты на средних ПЛИСах давно есть
За хилых не отвечу точно, а вот как раз про альтеру, если дружишь с верилогом/вхдл, а не с ниосом, то начиная со второго циклона - можно, ну это если есть микросхема цап для VGA или R-2R матрица для того же... с HDMI лично не знаком
Методички - врядли, а вот оупенкорс - в помощь
А что насчет Lattice, посоны? Я смотрел по mouser'у, у них есть сверхдешевые небольшие плиски, самое то для всякого рода несложного dsp для мелкорешений вроде "мк+йобасенсор+плис", нет?
ICE40UL1K-SWG16ITR50
Стоит полтора доллара, on-chip HFS = 48Mhz, в даташите написано, что два вида - 640 и 1000 LUTs.
Ссылочка: http://www.mouser.com/ds/2/225/iCE40UltraLiteDataSheetDS1050-526997.pdf
Для решений мк+сенсор+плис посмотри лучше в сторону Cypress PSoC. У них несколько семейств, особо годные PSoC4 и 5. МК уже внутри, ПЛИСка тоже - небольшая, но для таких применений как предобработка показаний сенсоров обычно хватает. Периодически устраивают распродажи, PSoC4 как-то по доллару раздавали - а там и Cortex M0, и поддержка тач-сенсоров сразу (Cypress сapacitive Sigma-Delta™ (CSD) controller)
>Какие подводные камни?
Никаких /thread Добудь где-нибудь студень, чтобы получить академическую цену.
Это платина. Никак. Плисины предназанчены для программирования булевой логики, и происходит это путем настройки физических связей между компонентами плисины во вземя прошивки. Нейросеть же подразумевает под собой самообучение и создание новых связей в логике. Для данных целей скорее подойдет сигнальник типа тайгер шарк
>>173810
>>178190
Кароч вот для начала по ксайлинксу не было но вот по квартусу альтера http://irs.nntu.ru/students/full_time/bach/210400_62/ смотреть цифровые устройства и микропроцессоры
Даллее для более серьезных дядек непосредственно алгоритмы цос реализуемые на плис (АХТУНГ!!! Много матана и прочего тяжело вопринимаемого мозгом, но точно говорю все рабочее сам почти все реализовывал включая кордик) http://irs.nntu.ru/students/full_time/bach/210400_62/ тут нада смотреть апаратные средства цифровой обработки сигналов и только лекции кафедра намудрила и практика там вобще по сигнальным процам
А если уже обученную нейронную сеть переложить на ПЛИС. И как подступиться к сигнальникам? с ПЛИСами все понятно тысячи плат и сотни материалов. А вот по DSP ничего не видел.
>по DSP ничего не видел
Заходи в наш ламповый ЦОС тред. Алсо, что может быть непонятного в реализации? Складывай, умножай, задерживай. Вот и вся обработка.
Рад тебя видеть друг анон. Без деанона я тоже там был.
>Никак
Ну тащем-та я даже нашел несколько книжек на эту тему, что как бы несколько тебя опровергает. Ссылка в качестве примера: http://lab.fs.uni-lj.si/lasin/wp/IMIT_files/neural/doc/Omondi2006.pdf
>самообучение и создание новых связей в логике
Тоже смутно чувствовал, что это в плисах на данном этапе не реализовать. А если предварительно обучать нейросеть в матлабе (или другом месте), а потом транслировать ее в плис?
Ну значит я ошибался. Честно сказать по нейросетям только базовые знания, я ж не программист, а вот по плисинам много интересного знаю. На том и основывался мой ответ. Но ты попробуй и дерзай
на самом деле при мне как то разбирали какой то еба ПЛАК от Simens, так вот у него как раз процесс управления осуществлялся через нейронную сеть, и там была ПЛИС'ка и весьма внушительных размеров.
Хуй знает сам решай. Звание магистра у меня на работку дает надбавку в 5к в отличие от специалиста, вот и вся разница
нет смысле. Там ПЛИСы ровно один семестр, в конце которого сдаешь небольшой проект - простенький фильтр.
DE0-CV Board
DE0-Nano Development and Education Board
Какой годнее? Первые два на куклоне 5, третий на четвертом.
Первый имеет дохуя памяти котекс9, езернет,отг, микросд,акселерометр,немного кнопочки-лампочки и линупс на борту. Такая малинка с плисиной, но имеет около 12к вентилей.
Второй имеет 50к вентилей, ПС\2 вга на 8резисторах(лол). и 64мбайт срам, микросдшку и тучу кнопочек и лампочек.
Последний имеет акселерометр,слоу ацп, мало кнопочек, немого памяти и даже еепром. Короче всего по немногу, и даже нищебродская цена.22К вентилей.
Я начинающий плисоеб, экс адуринщик. Последняя интересная, но все это есть у моего stmf4discovery. Первая манит своей системой, но видеоядро туда не разместишь, и остается вопрос взаимодействия плисины и линупса в чипе.
Первая вроде норм, теплые семисигментники-кнопочки много вентилей-хватит на многое, но прийдется пердолится с дополнительными микросхемами и канифолить шильдики.
Что из них стоит своих денег?
Предпологается что цена будет студенческая
Подкопи еще 75$ и купи DE1-Soc и там уже все что угодно есть.
Что симулировать?
Кто живые?
Нет, все умерли.
Изучаю VHDL.
Так возникает такой вопрос. Переменные вообще имеет смысл использовать внутри блока процессов? Или они только все усложняют и надо стараться обходиться только синхронным и последовательным поведением схемы?
Если кому интересно давайте что ли тут более активный обсуждач с примерчиками разведем.
Вот тебе пример использования переменной:
Допустим, есть сигнал channel(3 downto 0), который где-то как-то щелкает.
Допустим, у тебя есть процесс, в котором, в зависимости от текущего канала, что-то должно происходить. Ты можешь в процессе конструкцию типа
a <= b(conv_integer(channel))
Или же объявить переменную и использовать ее:
current_channel := conv_integer(channel)
a <= b(current_channel)
На первый взгляд, разницы особой нет. Но когда процесс занимает несколько десятков строк, городить везде conv_integer менее удобно.
А, походу дошло, ты имеешь ввиду, что-то навроде этого:
a <= b(conv_integer(channel))
bb <= b(conv_integer(channel))
c <= b(conv_integer(channel))
d <= b(conv_integer(channel))
против этого:
current_channel := conv_integer(channel)
a <= b(current_channel)
bb <= b(current_channel)
c <= b(current_channel)
d <= b(current_channel)
Хз. Как по мне это больше похоже на синтаксический сахар. Если всерьез такое использование рассматривать. Завтра с работы принесу свой модуль в тех вариантах где я логику с помощью переменных реализовывал. Сегодня забыл просто.
В принципе вполне элегантное решение(люблю когда лишних сигналов снаружи не торчит) но вопрос в том насколько корректное. Завтра запощу, если интересно. Можем пообсасывать.
Что значит - насколько корректное?
>больше похоже на синтаксический сахар
Так это и есть синтаксический сахар. VHDL дает тебе инструмент. Пользоваться им или нет - твое дело.
Фишка переменной в том, что в процессе, который тактируется клоком, переменная принимает значение уже на текущем такте. Сигнал же в таком процессе принимает значение только на следующем такте.
Тебе продают платы дешевле себестоимости, а ты воротишь нос, аки кот с пикчи. Да ты ж охуел!
Не это мне понятно. Но зацени процесс.
sync : process (CLK)
variable fd1, fd2 : std_logic := '0';
begin
if (rising_edge(CLK)) then
fd2 := fd1;
fd1 := STROBE;
if (not fd2 and fd1) then
--хитрая колесная логика
end if;
end if;
end process; --sync
Тут CLK - тактовая_лабуда, STROBE - асинхронный гарантировано более длинный чем период нашей частоты сигнал.
Описанный процесс содержит в себе синхронизатора для STROBE и логику которая будет выполняться по его фронту. Более того после небольшой доработки можно сделать что бы по этому фронту выполнялись довольно таки сложные синхронные алгоритмы.
Все отступы упали-пропали .-.
>можно сделать что бы по этому фронту выполнялись довольно таки сложные синхронные алгоритмы
Тактировать что-либо чем-либо кроме чистого клока нельзя, потому что синтезаторы такую времянку рассчитать не могут.
Я неточно выразился. Тактирование осуществляется клоком. А сигнал полученный таким образом можно использовать как сигнал разрешения, например - при взаимодействии с процессором тебе необходимо зафиксировать получаемые от него данные в регистре плис а сделать ты можешь только по приходящим от процессора управляющим сигналам. Протокол EMIF если подробнее. Они для плис вполне себе асинхронные, поэтому их надо синхронизировать и получить из них сигнал разрешения для регистра в котором ты сохраняешь данные.
Ебала какая-то. В любом случае, то что ты описываешь можно описать и без использования переменных.
Раз перекатился, то отвечаю.
>ПЛИС прошивается один раз?
Нет, на ПЛИС есть память, или она загружает конфигурацию с внешней памяти.
>Если была допущена ошибка, то уже не исправить в готовом изделии?
Как ты уже понял, все перепрошивается для большинства микросхем.
>Как экономически вычисляется необходимость реализации проекта в ПЛИС? Чипы же дорогие.
Некоторые вещи нельзя реализовать должным образом на контроллерах, ибо скорости не те+архитектура не тянет задачу оптимальным образом.
>Какие проекты требуют перехода с МК на ПЛИС?
Обработка сигналов, телеком, обработка изображений, высокопроизводительные вычисления, т.е. то, что требует особых архитектурных решений.
Разрываюсь между DE1-Soc и Марсаходом. Поясните какая позиция выгоднее. С одной стороны супер навороченная плата но стоит 250$(студенческая цена + доставка фидексом+ какая то там комиссия) что если учесть курс более чем дахера, НО ее мне хватит наверное до конца жизни по заявленным функциям в изучении.
С другой стороны простенький Марсоход дешевый и зеленый. Сломаю и хуй с ним. Даст возможность попробовать на зубок ПЛИСины. С ним можно будет и SoC посмотреть на сайте есть разобранный подробный проект. Даст ли мне это нормальный скил в плане ПЛИС? И да на Марсоход можно будет прикрутить OpenCL?
http://www.starterkit.ru/html/index.php?name=shop&op=view&id=76
и вот поясните вот за эту платку. Ее можно будет прошить самым дешевым программатором будет с Алиэкспресса или нужно покупать онли почти за 6к?
http://www.starterkit.ru/html/index.php?name=shop&op=view&id=17
в целом могу раскажелиться до 9к, если есть годные варианты буду благодарен.
Насколько я понял из описания, дополнительный программатор не нужен: через ЮСБ ты прошиваешь проц, а потом уже через проц ты заливаешь прошивку в ПЛИС.
Марсоход загугли, лет пять назад помню немного с ним работал - просто, недорого, сайт с примерами хороший.
Спасибо, анон
Анон, я правильно понял, CPLD - это один раз зашил в нее логику и оно все? Больше не перебить написанное? А FPGA - забивай новую логику сколько хочешь?
Нужен ПЛИС с паябельным корпусом типа QNF как Lattice XO2.
И сцуко хоть с парой аналоговой периферии вроде компараторов.
Но, видать, не судьба...
*QFN-32
я к тому, что если для тебя QFN-32 паябельный, то с хуев ли остальные корпуса стали непаябельными? явно у тебя станция есть с феном, так не выебывайся жи.
И самое главное, мне нужны компараторы и операционники. Хотя бы по одному.
это не антенка, хотя, да, разъём SMA. К широкополосному источнику инфракрасного для управления.
В общем, решил я задрачиваться в ПЛИС, есть Altera Max II EPM240T100C5,
Подскажите, какие книги подойдут?
нашел такие:
Стешенко В.Б.ПЛИС фирмы Altera.Проектирование устройств обработки сигналов.2000
Altera - MAX+PLUS II Quartus II (2002)
Поляков_Языки VHDL и VERILOG в проектировании цифровой аппаратуры_2003
Слышал что эта ПЛИС новая, и как бы она новее чем эти все книги, и САПРы которые там описываются, не будет ли проблем? Книг русских вообще мало. А хотелось бы, ну хоть капельку, чтоб въехать. А там уже и по datasheet`ам буду.
двачую
>Слышал что эта ПЛИС новая, и как бы она новее чем эти все книги, и САПРы которые там описываются, не будет ли проблем
Не ссы. Помигай для начала светодиодом. Код (Verilog, VHDL) портируемый на любой (99%) ПЛИС, если не юзаешь локальные фишки. Verlog проще по синтаксису.
Забей на schematics editor сразу. Не труъ.
Чистый верилог без понимания схемы, которая должна получиться в итоге, тоже не тру. Ибо часто у новичков получается обогреватель
В программах под ПЛИСы есть кнопочка, чтобы зазырить, какая схема получилась. Знания цифровой техники никто не отменяет.
И да, на Verilog надо писать аккуратно. Подводные камни описаны в тьюториалах. Verilog =/= C. Не прощает быдлокод.
Ну да, поделишь на ноль - будет КЗ, а там и всю схему пробьёт нахуй.
Внутреннюю логику - довольно сложно
Вот этот парень убил чип, проигнорировав "21000 Combinational loops"
http://www.forrestheller.com/verilog/
в ПЛИС не особо разбираюсь (но, наверное, придется), нужно решение, чтобы подключить большое количество кнопок, которые могут быть нажаты как одновременно, так и по одиночке (пианино), матрицей тут подключить не получится, могу получить ложные срабатывания.
пока этапы такие:
1. Вся логика уже описана на микроконтроллере. (MIDI сигналы)
2. подключил МК по midi к компу.
3. теперь нужны кнопки (размыкатели)
3.1. как лучше реализовать снятия данных о нажатии кнопки, т.е. сигнал с ПЛИС о том что нажато и когда, далее пересылка в МК? реализовать что-то вроде usart? (пока это самое простое на плис) не будет ли это медленно? тут USART, дальше MIDI
3.2. есть ли в ПЛИС возможность сделать триггеры шмитта? или нужно ставить внешние?
первые 2 уже сделал, 3-й в теории, уже разобрался, пока подключил для теста 4 кнопки
какие нахуй ложные срабатывания? даун?
за каким хуем тебе плис? из за портов ввода вывода? обычную матрицу можно просканировать РАСШЫРИТЕЛЕМ портов, можно задрать частоту сканирования до какихнибудь сотен мегагерц и получить норм клавиатуру
или у тебя ардуина? если ардуина то пиздец
>ложные срабатывания?
> матрицу
на картинке нарисовано какие
>ардуина
не ардуина, не AVR, ни PIC.
а даже если и ардуина, это бы вообще не имело значения.
>>191147
> Реакция твоих кнопок?
Т.е.? время реакции? ~5-10мс.
даже если я и использую сдвиговые регистры, мне все равно нужно будет триггеры шмитта, так? итого 17 триггеров шмитта+ 11 сдвиговых регистров. Хочу плис потому что и начусь работать с ней и будет компактней.
>Ложные срабатывания
Ты нарисовал картинку для одновременной работы линий, такого в жизни почти не бывает, тк там идет "развертка" и все твои замыкания засчитываются корректно.
>Триггер
Зачем, боишься дребезга? Программный фильтр?
Вообщем все у тебя упирается в частоту контроллера, которая будет ограничивать скорость реакции нажатия кнопки.
>Ты нарисовал картинку для одновременной работы линий, такого в жизни почти не бывает, тк там идет "развертка" и все твои замыкания засчитываются корректно.
развертка, т.е. "построчное" считывание значений, это как вывод на мониторе, так?
должно срабатывать у меня до 6-8 клавиш одновременно + дублирующие датчики измерения скорости нажатия, итого 12-16 замыкателей, в нажатом состоянии одновременно. При игре дуэтом, допустим, количество нажатых клавиш может увеличиться. ну, скажем плюс 4 клавиши и 4 доп. датчика, соответственно конечно на практике даже по 8 клавиш нажимается редко, но нужно учитывать большой запас
итак, используя матрицу, я смогу добиться выполнения результата поставленной задачи?
справится ли I2C, SPI расширитель портов? http://www.cypress.com/file/37971/download они все сканируют построчно? хотя и ног на МК много
>Зачем, боишься дребезга? Программный фильтр?
пробовал программный фильтр как-то не получилось
1. уход на прерывание
2. отключить прерывания
3. выполнить необходимые действия
4. выдержать время
5. включить прерывания
6. выход из прерывания
где-то происходила запись (скорее всего после ухода на прерывание), о том что прерывание вызвано 2 раза, и дальнейшие действия по программному антидребезгу оказались бессмысленными.
С триггером все чистенько получилось.
>>191348
может ты и прав. но я же ищу решения, рассматриваю варианты, подсчитываю как стоимость так и потраченное время.
Конечно, может идея показаться смехотворной, типа делаешь там себе невротъебенное пианино, с запасом на 4 руки. А сделаешь ли?
Про датчики ты ничего не говорил, что касательно кнопок -- то их ты можешь одновременно хоть сотню зажимать, все упирается лишь в скорость реакции на контакт. Ты хоть схему в протеусе типовую собери, чтобы люди понимали что ты хочешь
датчик - это тоже обычная кнопка, только датчиком будет служить 2 кнопки подключенные к одной клавише. Датчик реализован программным образом - считает время дельта t, чем меньше дельта t, тем, считается, быстрее нажата клавиша.
Ты определись с архитектурой твоей махарайки, а то у тебя кнопка на кнопке кнопкой погоняет и нихуя не понятно как и на чем ты собираешься это вот все реализовывать.
ну смотри,
у меня есть клавиша от клавиатуры пианино, под нее подложено 2 кнопки, пианино должно издать звук только тогда когда обе клавиши нажаты. сттоят они достаточно близко.
как всё происходит: замедленно
1. нажимаем на клавишу форте, сработала кнопка 1, таймер включился - время на таймере пошло.
2. клавиша двигается ниже, включает кнопку 2.
3. кнопка 2 нажата и остановила таймер.
4. происходят вычисления, собранных данных: если ты потихоньку нажимаешь на клавишу, до полного нажатия проходит время 30 мс. - слабое нажатие, звук тише. если скорость нажатия средняя, ну, скажем 20мс, звук погромче. А если пиздунуть по клавише, то инструмент издаст самый громкий звук, т.к. интервал нажатия клавиш самый малый. Имитация молоточковой механики.
5. не дошло дело до второй клавиши, или слишком поздно - таймаут.
Поэтому нужно подключить абсолютно все кнопки, включая всякие там кнопки настроек, уровня звука, переключения инструмента все, что на панели (каждая клавиша включается при одновременном нажатии 2-х кнопок).
только кнопка 1 и 2 будут в обратном порядке нажиматься, ошибся
Тогда тебе по такому вопросу в тред к АРМщикам
не умерай
Ну altpll это же модуль из состава библиотеки квартуса, который инициализирует pll на борту циклона. Так? Можно ли без вызова altpll собственно запусить на нужную мне частоту pll на "чистом" Veriloge? Или только делить стандартные 50 Мгц от кристалла?
Можно, но тебе не понравиться
Попробуй посмотреть на код, который генерит коре генератор. Но ниже инстанса ПЛЛ ты не опустишься, т к. это и есть абстракция хардварного блока на кристале.
Какую ты цель приследуешь?
Да, спасибо, дружище, я в курсе всего этого. Мой странный вопрос был немного о другом. Зачем?
>>195192
Ну вот так вот, захотел освоить мир ПЛИС, а поскольку я программер, решил для себя, что все писать ручками без готовых компонентов, и тут же столкнулся с проблемой, что произвольную частоту кроме как через altpll никак не получить. И либо даже гугл не знает, либо я не знаю как спрашивать у гугла. Максимум что уадлось найти - cycloneive_pll вот здесь https://github.com/rkrajnc/minimig-de1/blob/master/lib/altera/cycloneive_atoms.v - хотя не знаю, оно это или нет. Да и вообще стало интересно, какие есть возможности у разработчика по управлению различными модулями на микросхеме и как это вообще реализовано.
У тебя какой-то странный подход. Ты хочешь всё писать ручками, при этом немножечко далек от внутренней архитектуры устройства, с которым собрался работать.
Во-первых даже pll тебе не даст произвольную частоту, ты подвязан на ту, что есть (в твоем случае 50 МГц), т.е. получить 51.25 МГц тебе будет слегка затруднительно.
Во-вторых, мегафункции там не просто так реализованы. Они позволяют не только быстро реализовать необходимый функционал, но так же сделать это наиболее оптимальным методом.
Всё это развлекалово с клоками в конечном итоге при недостаточной компетенции выльется в ухудшение качества результата твоего труда.
>даже pll тебе не даст произвольную частоту
Ну понятно, очевидно я имел в виду частоту, значение которой отлично от результата деления базовой 50Мгц
>мегафункции там не просто так реализованы
Ок, но это никак не мешает мне сделать свой вариант допустим CORDIC. Да, у него будет меньшая точность и разрадность, но тем не менее для решения задачи - достаточная, и при этом он будет дешевле и быстрей мегафункции.
>в ухудшение качества результата твоего труда.
Это хобби. Я собственно хочу читать данные с АЦП, нужны две частоты 3 и 48 МГц. Как получить нужные частоты через altpll - понятно. Но интерес академический - а можно-ли это сделать без мегафункции?
С Новым Годом типа.
- используете ли make или подобные системы;
- как организовано повторное использование кода;
- есть ли автоматизированная верификация (как юнит-тесты у программистов;
- ну и вообще чем отличается командная разработка на Verilog или VHDL от разработки на C и Java.
Потому что я хорошо представляю, как это делается для больших программных проектов. А вот в Quartus поработал и что-то не вижу, как там скоординировать даже десяток разработчиков.
Интерес вполне праздный.
>вот в Quartus поработал и что-то не вижу, как там скоординировать даже десяток разработчиков
Квартус нужен только чтобы синтезировать проект, а проект должен собираться из исходников. А работа с исходниками может быть организована так же, как и в Си и Джаве - контроль версий, ветки и т.п.
Верификация - с использованием тестбенчей, для SV есть UVM.
>как подбирать "емкость" под желаемый функционал
Эмпирическим путем. Создаешь проект с какой-нибудь ПЛИС, синтезируешь. Если не хватает, берешь ПЛИС пожирнее.
ПС. Нажил кучу epm3032alc44-10n с панельками, хочу на них чего нибудь смастырить. Частотомер например.
Ааа, вона оно как. Спасибо, буду пробовать.
Спасибо. А как именно и чем проект должен собираться из исходников? Вот есть у того же Квартуса инструменты командной строки - надо запускать их из make? А как отслеживать зависимости?
Про тестбенчи и UVM я тоже понимаю. Есть ли практика запускать их автоматически через тот же make? А то в руководствах все больше предлагается смотреть на сигналы глазами.
Это ты CPLD ухватил, притом не самую свежую, бери FPGA - там ячеек на несколько порядков больше.
>>204211
>А то в руководствах все больше предлагается смотреть на сигналы глазами.
А чем на них надо смотреть, анусом?
Или ты предлагаешь программу писать, которая бы определяла правильность диаграмм? А ведь в ней тоже могут быть ошибки, кто их будет проверять, следующий уровень программ? Этак можно до бесконечности.
>>204130
Не могу блядскую ПЛЛку отконфигурировать.
У меня есть входная частота с генератора 16,384МГц, заведённая на одну ногу, мне нужно получить около 50 для ядра и 62,5 для УАРТ-приёмника.
Во-первых: точных частот выставить не удалось; во-вторых: одна ПЛЛка с двух выходов таких частот выдать не может, пришлось ставить две разные, но всё равно довольно грубую точность получил.
Две разные на одну клоковую ногу не ставятся, требует убрать какие-то буферы - я убрал, после чего с горем пополам откомпилировалось. И тут поплыли констрейны: УАРТ-приёмник, тактирующийся 62,5МГц более менее работает, а те схемы которые на 50 - сбоят и что с ними делать не понятно.
Блядский ксилинкс, говно собачье, альтера в 100 раз лучше, глаза бы мои его не видели, камни кривые, софтина кривая, всё криво, всё косо, внутрисхемная отладка через жопу, пиздец нахуй, какие же криворукие мудаки там в разработчиках сидят, охуеть можно.
>А как именно и чем проект должен собираться из исходников?
Не знаю, как там в Квартусе это сделано, в Vivado и PlanAhead есть возможность запуска tcl скриптов. Запускаешь среду, из нее запускаешь скрипт и проект автоматически собирается.
>Есть ли практика запускать их автоматически через тот же make?
Почему бы и нет? Вопрос только в сложности всего этого дела; можно написать скрипт, который будет создавать проект, запускать его на симуляцию и оценивать результаты симуляции, после чего писать результаты в файл.
>программу писать, которая бы определяла правильность диаграмм
Подожди, а зачем в систем-верилоге все эти ассерты, генераторы часов, события, последовательности... Я грешным делом думал, что правильные пацаны выводят из спецификации модуля инварианты, на которые затем пишут ассерты и гоняют тесты, пока не выстрелит. А уж тогда на сигналы смотрят. Не так, значит?
>входная частота с генератора 16,384МГц, нужно получить около 50 для ядра и 62,5
Бро, а на сколько разрядов в делителях PLL ты рассчитываешь? Потому что тебе нужно рациональное приближение для
3.0517578125 = 50/16.384
и 3.8146972656 = 62.5/16.384
Вот нашел тебе калькулятор, рациональное приближение считать: http://www.bee-man.us/math/fraction_approximation.htm
Кварц на 20 МГц не судьба поставить? Было бы все просто.
>Запускаешь среду, из нее запускаешь скрипт
Да tcl скрипт можно и из командной строки запустить, не проблема.
Я-то по привычке считаю, что все, что собирается, должно уметь собираться на билд-сервере, и там же тестироваться. А начальник отдела с утра заглядывает в почтовый ящик и восклицает: "Иванов! Опять в ебутроне регрессия вылезла!"
Вот и пытаюсь понять, насколько это соотносится с обычаями HDL-щиков.
Спасибище!!!!
>>204302
Для начала надо теорию цифровой схемотехники подучить, без неё HDL-языки - как мёртвому припарка.
https://youtu.be/aGMfFezjVnQ
>инварианты
>ассерты
Лол, я таких слов даже не знаю.
>а зачем в систем-верилоге все эти ассерты, генераторы часов, события, последовательности
Если честно, я по систем-верилогу не очень, больше по классическому, как что там не знаю, но думаю, чтобы входные воздействия в тестбенчах было легче создавать. А так чтобы автоматом результаты проверялись - я хз.
Ты мне про рациональные приближения можешь говорить всё что хочешь, но при опорной частоте 16,384МГц на этом сраном спартане 6 с двух разных ПЛЛок я получил 50,79 и 62,256МГц, а на сыклоне 4 я могу получить 49,99 и 62,464МГц из одной ПЛЛки.
Говно без задач этот ваш ксилинкс.
>Кварц на 20 МГц не судьба поставить? Было бы все просто.
Конечно, но плату рисовал не я, приходится работать с тем что есть, будь моя воля я б альтеру поставил.
>мне поставили резистор 100 Ом, а мне нужен 200 Ом. Говно без задач эти ваши резисторы по 100 Ом!
>Говно без задач этот ваш ксилинкс.
Тебе виднее. Уменя крома циклона-2 ничего в хозяйстве нет. Но отношение частот все равно жутко неудобное.
Оказалось достаточно погуглить и почитать форумы вечерок. Поддержка СистемВерилога 2012 есть только в приличных симуляторах вроде Квесты. Ни МоделСим (который идет вместе с Квартусом), ни Вивадо не тянут. А большинство плисанов ими, видимо, и пользуется.
Хуёвенькое твоё сравнение, ибо спартан 6 позиционируется именно как конкурент сыклону 4, на деле же сильно уступает, как минимум по вопросам ПЛЛ, а что будет дальше ещё не известно, я только начал с ним работать.
Есть, посмотри диск идущий с платой Terasic DE2-115, там было, но он, вроде как помню, всё равно на Ниосе крутится.
>спартан 6 позиционируется именно как конкурент сыклону 4, на деле же сильно уступает
>позиционируется
Давай ты еще про говно мамонта вспомнишь? Уже давно вышла седьмая серия, а ты все на Спартане пердолишься.
Я ж тебе говорю, я бы рад не пердолится, но что есть, то есть. Ну так сыклон 5 уже как давно есть.
Тут речь именно спартан 6 vs сыклон 4. Спартан сосёт, хотя вроде бы одного класса.
Квесту можно к чему угодно прикрутить, но ее красть надо, а мне не хочется (да, я странный).
Ладно, попробую, только там все больше по-английски будет.
>я бы рад не пердолится, но что есть, то есть
Ну я и говорю. Ты берешь плату, на которую впаяли резистор 100 Ом и жалуешься, что тебе нужен резистор 200 Ом. При этом мудаками нарекаешь производителей резистора, а не разработчика платы.
Т.е. ты хочешь сказать, что сыклон 4 лучше спартана 6? Ну ок, я тоже к этому склоняюсь.
Я хочу сказать, что плату надо проектировать под свои задачи. А не хуй пойми как.
А нахуя тебе это и что ты хотел закодить?
Бля, доской промахнулся, звиняйте.
Что это такое?
http://marsohod.org/11-blog/265-fpga
Там какие-то схемы и непонятно ничего!
Харрис Д., Харрис С., «Цифровая схемотехника и архитектура компьютера»
http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translatino.pdf
Осиливший книгу до конца сможет самостоятельно реализовать процессор на FPGA.
Так Altera или Xilinx?
Достойное упражнение для специальной олимпиады. В целом Альтера поприятней.
Verilog, SystemVerilog, VHDL?
Начни с верилога, а там разберешься.
А где взять?
Плату – купить на http://marsohod.org/ или http://www.aliexpress.com/ (по запросу ''FPGA development board”). Русская версия http://ru.aliexpress.com/, перевод ужасный.
Софт – скачать бесплатно Altera Quartus с http://dl.altera.com/?edition=lite или Xilinx Vivado http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2015-4.html.
Важно: обе ссылки выше – последние версии продуктов. Они не поддерживают старые чипы. Для них будут нужны http://dl.altera.com/13.0sp1/?edition=web или http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.html.
Так, сразу битая ссылка
Харрис Д., Харрис С., «Цифровая схемотехника и архитектура компьютера»
http://easyelectronics.ru/files/Book/digital-design-and-computer-architecture-russian-translation.pdf
Stephen Brown, Zvonko Vranesic. _Fundamentals of Digital Logic with Verilog Design_
https://www.researchgate.net/file.PostFileLoader.html?id=54d80f66d039b1d37d8b4659&assetKey=AS:273695321329668@1442265458526
Pong P. Chu. _FPGA Prototyping by Verilog Examples_
https://fpga.googlecode.com/files/FPGA Prototyping By Verilog Examples.pdf
Bryan Mealy, Fabrizio Tappero. _Free Range VHDL_
http://freerangefactory.org/pdf/free_range_vhdl.pdf
Peter J. Ashenden. _The Designer's Guide to VHDL, Third Edition_
http://xilinx.eetrend.com/files-eetrend-xilinx/forum/201404/7000-11806-the_designers_guide_to_vhdlpeter_j.ashenden.pdf
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/cyclone-iv/cyiv-51005.pdf, страница 5-23. Насколько могу понять, компенсация задержек в сети распределения тактового сигнала.
А схема PLL для IV E там же на рисунке 5-10
Ну по всему выходит, что PLL может синхронизироваться не только внутренней цепью обратной связи через делитель, но и внешней через GCLK например. Нахрена - объяснить не могу, опыта не хватает. Подозреваю, что это как-то компенсирует влияние потребителей на тактовые цепи.
Вот еще про это немного: https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/ug/ug_altpll.pdf
Вот еще пара статей Клиффорда Каммингса - о часах и о сбросах.
http://www.sunburst-design.com/papers/CummingsSNUG2003Boston_Resets.pdf
http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf
нашел в продаже альтеру, но на 240 вентелей, мне хватит этого для чего-нибудь толкового или стоит копить на вариант поширше?
Посмотри на барахолках платы от игровых автоматов, я нажил с десяток нахаляву, сейчас в отпуске соберу программатор и буду тренироваться.
Откуда вы такие лезете с 240 вентилями?
http://ru.aliexpress.com/item/Waveshare-Altera-Cyclone-Board-CoreEP4CE6-EP4CE6E22C8N-EP4CE6-ALTERA-Cyclone-IV-CPLD-FPGA-Development-Core-Board-Full/32433252150.html?spm=2114.03020208.3.114.UQNTon&ws_ab_test=searchweb201556_1,searchweb201644_4_10001_10002_10005_301_10006_10012_10003_10004_62_10007,searchweb201560_8,searchweb1451318400_6149
Кстати она в терре 863р стоит, неужто печатка у косоглазых на целую тыщу тянет?
От 15шт - 528р. Нахуя вот нужны эти китайцы?
Тебе в ёбыч дать, или в глазницы перестанешь долбиться?
Ну там не только печатка, там ещё обвязка, генер, вроде как, тоже денег стоит, монтаж элементов.
Скачай за бесплатно Квартус, спроектируй то, что хочешь и скомпилируй. Сразу увидишь, во что влезет, а во что нет, там можно выбрать целевое устройство.
240 вентилей это маловато, конечно.
Он наверное имел в виду CPLD с 240 макроячейками.
>Как переходить от плавающей точки к целым числам.
Вместо единицы делаешь 1024, вместо 0.5 - 512, вместо 1.5 - 1536. Например.
Ну, во первых, можно все сделать во флоате. Есть для этого все те же корки, ресурсов сожрет немеренно, целесообразность тоже не ясна, но все же. Так, для инфы.
Обычно, 99% случаев, используют fixed point arithmetic. Собственно что на пальцах объяснил >>214877 анон. Тоесть ты не хранишь положение точки в твоем числе, а говоришь. мол точка после третего бита.
У тебя на входе и выходе числа заданной разрядности, поэтому тебе нужна арифметика с фиксированной точкой. Хули непонятного?
>Хули непонятного?
Непонятно зачем мне в каждой арифметической операции учитывать вещественную часть, если мне нужна только целая часть.
лол ты школьнег штоле?
если у тебя есть целые числа, и тебе нужно сделать с ними что то страшное в математическом смысле, то в процессе выполнения математических операций тебе может понадобится увеличить разрядность промежуточных данных (если ты не понимаешь почему то пиздец ), если ты точно уверен что разрядность увеличивать не нужно то нет проблем, если разрядность увеличивать нужно, то есть два стула, увеличивать разрядность целых чисел или не увеличивая разрядность использовать числа с фиксированой запятой с возможной потерей точности, какую стратегию выбрать зависит от требований к проекту а так же от имеющихся ресурсов, в разных варинтах будет разный расход транзисторов против точности, в микроконтролере почти такойже выбор между скоростью, точностью и размером
если ты всего этого незнал т ты явно ардуинщег, хули тебе надо в плисотреде?
Ну ок, теперь более-менее понятно.
>увеличивать разрядность целых чисел
Скорее всего это, так как самих операций немного, большую часть элементов думаю кордик заберет.
Начинает немного прясняться. Например если разрядность значания угла для синуса 32 бита, то для вычисления norm = 2PI/SampleRate, в качестве 2PI необходимо использовать максимальное 32-битное целое число. Верно? И собственно все константы придется вручную вычислять.
И это ковбой, полехче, я конечно не ардуинщик, но всю жизнь писал на СИ, и вот так вот сходу сломать закостенелый мозг и мыслить чистыми битами в отвязке от типов данных не так то и просто. А ПЛИС для меня это хобби.
Ну в принципе да, это наверно перебор, просто для примера. Задача простая, есть сигнал на промежуточной частоте порядка 500кГц-1МГц, оцифровываем с частотой дискретизации порядка 3 МГц, подаем на ПЛИС. ПЛИС выполняет квадратурную демодуляцию, кордик здесь оказался очень удобный, можно сэкономить на множителях, поскольку как я понял, кордик вычисляет как раз I = Xsin(ph), Q = Ycos(ph), где X = Y = семл с АЦП. Если частота дискретизации 3МГц, то да разрадность угла выше 24 бит смысла делать наверно нет.
С большим натягом. Давай проведу маленькую аналогию.
AVR - большой муравей, который и швец и жнец и на дуде игрец - всё умеет, но в каждый момент времени делает что-то одно.
STM32 - муравей пожирнее, всё то же самое, только оче быстро.
ПЛИС - это муравейник. Допустим, что некоторая задача - поле пшеницы. Один муравей может собрать одно зёрнышко за один подход. Тогда соответственно десять муравьёв будут работать в десять раз быстрее. Сто - в сто раз. В зависимости от уровня декомпозиции задачи а плис нужна в параллельных вычислениях чаще всего и количества макроячеек можно построить такой процессор, который будет выполнять поставленную задачу значительно быстрее CPU и даже GPU. Именно поэтому ПЛИС используются в ЦОС - возможность распараллелить вычисления без притаскивания огромной пекарни.
Те же виртексы 7 особенно ультраскейл YOBA-камушки, способные заткнуть за пояс все топовые универсальные процессоры в узких прикладных задачах. Правда в этих задачах почти любая FPGA заткнёт любой процессор.
Флопс это floating point operation.
>Ибо ПЛИСка никаких команд не выполняет.
Но что-то же она выполняет. Тактовая частота есть , регистры есть. Вот например, как в этом хэлоуворде: https://youtu.be/1y-1glsex7c
>Флопс это floating point operation.
Тем более.
>Но что-то же она выполняет.
Она схему твою выполняет. Схема это не программа.
Можно соорудить модуль, который твои плавающие точки вычисляет, а потом этот модуль размножить внутри плис. Любой проц заткнуть за пояс можно, при наличии объёмистой плис.
Ну, к примеру, я хочу сделать свертку изображения (float цвет) 640х480 с фильтром 100х100. Насколько сложна эта задача для плис? Смогёт за один такт?
А если я захочу применить несколько фильтров других размеров, то повторно использовать схему, как я это делаю с кодом процессора, получится?
> Насколько сложна эта задача для плис? Смогёт за один такт?
Зависит от объёма плиски. Большая - сможет.
>А если я захочу применить несколько фильтров других размеров, то повторно использовать схему, как я это делаю с кодом процессора, получится?
Получится после изменений. Как правило, для таких задач пишут программу, которая по исходным требованиям составляет программу в свою очередь для плиски, и уже ещё зашивают в плисину.
При достаточном объёме у тебя в плиске может поместиться даже несколько сверток, которые смогут работать независимо и даже с разной частотой, причём некратной (если предусмотреть тактирование отдельных блоков от своего клока каждый).
> Насколько сложна эта задача для плис? Смогёт за один такт?
>>216614
>Зависит от объёма плиски. Большая - сможет.
В теории - да, на практике - навряд ли.
Если хочешь за один такт, то это должна быть комбинационная схема. Что-то я с трудом представляю, как такой непростой алгоритм можно реализовать на комбинационке.
>>216613
>А если я захочу применить несколько фильтров других размеров, то повторно использовать схему, как я это делаю с кодом процессора, получится?
Если сумеешь создать универсальный модуль, в который твои фильтры передаются из вне - пожалуйста.
Лол, я примерно так же отреагировал, когда мне показали ломалку DES, которой 10 дней на взламывание требуется.
>Хм, звучит круто, даже за 10 тактов она уделает любой проц, кроме дохуяядерных, лол.
Да и двухядерные за 20 тактов.
>А циклон это проц + плис?
Сиклон 5, предыдущие - нет.
>Они могут работать в связке, к примеру проц меняет схему плис в зависимости от задачи?
Точно не скажу.
Плисоводы 80 уровня каким-то макаром могут делать выбор с какой флешки грузить пошивку, тем самым меняя логику в плиске. А в Сыклоне 5 есть проц встроенный, может быть его можно под эту задачу приспособить, я х.з.
>>216798
Логика в плисине на частоте 1,5 Ггц? Что-то ты нам какие-то сказки Андерсона рассказываешь.
>Они могут работать в связке, к примеру проц меняет схему плис в зависимости от задачи?
Так и работают. На проце поднимается линукс, после чего с его помощью можно легко управлять ПЛИС. Например, грузить те же коэффициенты фильтра.
Подскажите ньюфагу, чтобы запилить голосовой УКВ трансивер этого достаточно? Или все же придется паять всякие АЦПы?
По возможности накидайте ссылок на тему связи с прабабушкой в Нижневартовске с помощью ПЛИС.
Этого недостаточно.
>ньюфагу
Сразу нет. Порог вхождения весьма высок, а ты, судя по всему, ничего сложнее пердуины в руках не держал, а если и держал, то с аналоговыми ёбушками дел точно не имел, раз не представляешь, как работает трансивер. Конкретно тебе будет дешевле его купить.
Спасибо конечно, учту.
>Конкретно тебе будет дешевле его купить.
Ты что-то перепутал. На кой он мне нужен купленный? Мне и скайпа хватает и нанотехнологий с али. Ну ты понял. А с "аналоговыми ёбушками" разбираться все равно придется.
Видел. И что?
https://marsohod.org/projects/marsohod2/246-fmradio
Вот здесь таки запилили, так что лучше я не буду больше тебя слушать.
Сам то читал что там написано? Это только демонстрация того что возможно сделать такой передатчик (кто бы сомневался).
Но качество сигнала там никакое и будет всюду срать помехами.
Если хочешь сделать приемник подключив антенну напрямую к АЦП, то АЦП потребуется неслабый и еще необходим полосовой фильтр. У наших барыг: https://www.terraelectronica.ru/catalog_info.php?CODE=56414 и то до УКВ не дотянет. И твой циклон-ii тоже не потянет.
Если ты читал внимательно, то там как минимум нужна еще и АНТЕННА в виде куска провода. Поэтому ответ на твой вопрос - "У меня есть циклон, хватит ли этого?" - нет.
Virtex-7 и Virtex-Ultrascale разработчик в треде, задавай свои инпуты
Я серьезно. У меня два 7-х виртекса лежат. Ибо проще каждый год покупать плату, а не лицуху на них, дешевле выходит. Пруфы нужны? Работаю с Kalray, Thales и кучей евроинститутов. Все довольны. 29 лвл
Да, опечатался. Разработчик НА виртексах
Как пришел к успеху в плане работы?
Че пилишь?
Приемник не нужен. Есть rtl свисток. Отлично справляется для начала. Чем сам циклон будет плох как передатчик, если на кварце генерить?
Кусок провода мне достался еще от деда. Он с него на фронте вещал и прикуривал. Должен хорошо работать.
Сама плата физически не может быть АЦП? Хоть с минимальной обвязкой?
С синусом да, но ведь большинству похуй, вещают прямоугольником и счастливы. Кодировки разные есть для цифрового вещания в конце концов. На гармоники и искажения в данном случае похуй, я думаю, не? Уже в зависимости от того, получу ли встроенный АЦП, можно говорить о модуляции.
Что еще за вещание прямоугольником? Насколько знаю, цифра делается путем всевозможных фазовых манипуляций. Или ты не о том?
Насколько я понял, ты хотел сказать что если я не сделаю на выходе модулированный синус, то я ничтожество срущее гармониками во все поля? Вот я и говорю что для начала сойдет и меандр. А про цифровое вещание не узнавал еще, возможно пизданул глупость. Насчет АЦП, щас вот понаходил много статей на тему как реализовать простой АЦП прямо в ПЛИСе. Так что возможно не все так плохо.
Ну можно сделать такой передатчик, можно сделать и приемник (но не на УКВ) на плисине. Но если так не делают, то наверно есть на то причины, не задумывался? А причина проста - никакие характеристики и дорогие комплектующие. Ну сделай, получишь какой-то опыт.
Как ты собираешься реализовывать АЦП прямо на плис? Я смог придумать только как сделать АЦП последовательного приближения. Компаратор есть - LVDS вход. В качестве ЦАП - ШИМ и RC цепочка. Но все равно понадобится минимум один резистор и конденсатор. И частота дискретизации такого АЦП будет хуже некуда.
Посоветовал бы почитать теорию по радиоприему, но, чувствую что бесполезно.
Все что попадалось либо устаревшее, либо вообще не связано с цифрой, либо связано но уже почти не про радио, а про обработку сигналов. Если подскажешь подходящую литературу, буду благодарен!
Получается проблема только в АЦП?
Линейные компоненты на обвязке - это я не считаю чем-то сложным и бессмысленным. А вот добывать и паять отдельные сороконогие микросхемы для преобразователей и фильтров - это как-то западло, тогда вообще непонятно на кой нужны эти ПЛИС, если все равно схема собирается снаружи.
Проблема в твоей голове. Устаревшее у него. Читай литературу, кукаретик, ты очень смешон.
И опять ни названий ни ссылок.
>либо устаревшее, либо вообще не связано с цифрой
У тебя из-за цифры антенна будет по другому работать? Или 2+2 станет равно не 4, а вообще непонятно чему?
Теория полувековой давности вполне применима к "цифровым" радиоприемникам.
Иди, делай уже что-нибудь. Передатчик этот хоть повторил уже?
> вообще непонятно на кой нужны эти ПЛИС, если все равно схема собирается снаружи.
ПЛИС нужна для цифровой обработки сигнала, например для AM\FM демодуляции.
Точнее даже не то что говно. Как-то слабо верится в это.
Правдали что такая очевидная разница? Я как-то романтично думаю, что проблемы вообще нет поменять одно на другое.
Ещё один сравнивальщик тёплого и мягкого.
>Ну там детекторы, фильтры, свертки, цдо.
Ну не знаю в тему мой достаточно абстрактный вопрос или нет. Короче надо на ПЛИС сделать LPF с плавающей частотой среза, и если собственно частота среза изменилась (ну допустим по команде от микроконтроллера), надо перерасчитать матрицу коэффициентов. Но с другой стороны, если уже мы потратили логические элементы на вычисление коэффициентов, то наверно можно вычислять коэффициент в соответсвующей позиции матрицы на каждом такте обработки очередного сэмпла. То есть матрицы фактически не будет, а коэффициент будет вычисляться динамически. Или я сейчас велосипед изобертаю?
>задавай свои ответы.
Используется прямое расширение спектра (DSSS) и код Рида-Соломона. На входе измерено отношение сиигнал/шум, нужно добиться заданной вероятности ошибки на выходе. Какие должны быть параметры у этих двух этапов кодирования для достижения максимальной скорости передачи?
>LPF
low-pass filter?
Если да, то какая реализация? FIR или IIR?
Например это FIR заданного порядка, ну например там 40 или 100. Если у вас будет у такого фильтра меняться частота среза, например вы будете её уменьшать, то будет увеличиваться неравномерность и уменьшаться прямоугольность. Это все будет оказывать как-никак влияние на работу вашей системы.
В такой постановке задачи, я считаю, имеет смысл задаться каким-то приемлимым количеством частот среза и посмотреть их все в матлабе. Ну даже если 100 частот среза, fir фильтр 100 порядка с 32 разрядными коэффициентами. Потратить на это 40кбайт памяти. И по команде загружать нужный набор.
Как ни крути, а память дешевле ресурсы ПЛИС.
Ну может и не том речь.
Кстати а зачем частоту среза-то менять?
Ну... абстракция другая. Тут даже и не програмирование, а схемотехника. Сравнивать и правда не корректно.
Ну если просто сказать, то да. Плис явно сложнее. Уровень вхождения выше, влияние мелочей больше, класс задач решаемых с помощью плис очень сложнее.
+ по статистике алтеры больше 50% проектов на плис содержат процессор. Програмный или аппаратный.
>Есть вариант перескочить на ксайлинкс. Правда говорят там инструментарий говно. На сколько это правда?
После альтеровского Квартуса смотрится убого.
Меня недавно на этот ваш ксилинкс посадили, весь исплевался.
Правда говорят там есть какая-то вивада, как там не знаю, но она только для жирных чипов.
>Pcie между плисами нормальная тема?
А нахуя?
Хуй знает. Я приемники пилю, а не передатчики.
>А нахуя?
ну типа мне надо с одной плис на другую передать 14 Гбит/с + управление на периферию с ответами + прерывания. и у меня как раз есть hard ip pcie 2.0 и 4 трансивера под это дело.
Можно придумать конечно что-нибудь свое. но тут кажется вроде норм решение использовать готовый протокол. хотя он какой-то мутный. Эзернет понятнее был.
>Кстати а зачем частоту среза-то менять?
Ну, я SDR хочу запилить, реализовать на ПЛИС все виды демодуляции, какие смогу осилить. Соответсвенно для каждого вида демодуляции своя ширина канала. Да, наверно сделаю все-же предопределенные таблицы коэффициентов.
>Правда говорят там есть какая-то вивада
Говорят еще она C\C++ транслировать может
>Говорят еще она C\C++ транслировать может
Да может и может, но думается мне хуита в итоге получается.
Может кому-то пригодится
http://ruecm.forum2x2.ru/t52-topic
Сам решил обмазаться Verilog и Xilinx
>для каждого вида демодуляции своя ширина канала.
Тогда разумнее загрузить все таблицы коэффициентов и переключаться между ними
Разумнее запилить канал управления и регистровый интерфейс, а уже через них грузить какие-угодно коэффициенты.
А в этом что-то есть. Я планировал по каналу управления загружать частоту среза, на основании которой генерировались бы коэффициенты. Можно дейстительно и на микроконтроллере генерить и заливать. У меня альтеровский EP4CE10. У него NiosII на борту есть? Может его как раз заиспользовать для этого дела? В смысле для генерации коэффициентов.
Сейчас такой девайс существует, но при малом времени измерения (>100 мс) он безбожно глючит и адски неточен, а нужно иметь точность хотя-бы 0,01Hz
Возникло желание запилить новую версию на ПЛИСине. Так как данных будет слишком много, чтобы запихнуть их в UART, то неплохо бы пихать их в ethernet, для чего понадобится процессор, на который также можно возложить некоторую первичную обработку данных.
Короче присмотрелся к спартан-6 и openRISC.
Буду начинать изучение всей этой лабуды практически с нуля (в универе был курс ознакомления с альтерой на уровне рисования схем из триггеров/счетчиков/регистров), концепцию я представляю, верилог изучу.
Затык ждал в самом начале: где скачать последнюю версию xilinx'овской студии бесплатно без смс?
Сажа прилипла.
Ты бы для начала описал как ты предполагаешь использовать ПЛИС в решении твоей задачи.
Хотел нарисовать блок-схему, но передумал из-за громоздкости.
В любом контроллере уровня STM32 есть несколько аппаратных счетчиков, которые можно настроить на разную херню.
При помощи двух таких счетчиков можно измерять частоту. Один из них просто мотает +1 за каждый такт опорной высокой частоты (считай частоты кварца проца), а другой насчитывает определенное количество импульсов на входе N (измеряемая частота) возможно быстро должен сгенерировать ивент захвата значения счетчика опорной частоты.
В STM32 Я использую ДМА, в камнях поменьше - прерывания.
Затем имея разность двух значений счетчика опорной частоты, а так же зная саму опорную частоту и значение N, можно вычислить саму входящую частоту.
Короче, чем больше опорная частота тем выше точность измерения, а чем меньше время измерения, тем хуже.
Контроллер не подходит по причине отсутствия необходимого количества аппаратных блоков, а вот его производительность полностью устраивает.
Алсо, если сделать все операции по захвату полностью аппаратно, то пропадут редкие выбросы, которые случаются на контроллере из-за наложения прерываний и прочего говна, их сейчас приходится подавлять программно.
>У него NiosII на борту есть?
Насмешил, содомит. Nios - это софтовый проц.
>>219900
>независимых источников
Источники что выдают, простые меандры?
>>219900
>то неплохо бы пихать их в ethernet, для чего понадобится процессор
Совсем не обязательно. Я в своё время всё на жескаче запилил.
А вообще, задачка на вид не сложная.
>Источники что выдают, простые меандры?
Да, уровни подгоню как надо.
>>то неплохо бы пихать их в ethernet, для чего понадобится процессор
>Совсем не обязательно. Я в своё время всё на жескаче запилил.
Ну так то можно извратиться и запилить все аппаратно, я и не против. Логику самого измерения я себе представляю и смогу её запилить, а вот сетевой стек полностью хардварно не представляю себе.
>А вообще, задачка на вид не сложная.
Ну вроде на пальцах да, для ньюфага могущего и контроллеры норм будет. Поэтому и взялся.
>сетевой стек полностью хардварно
Опять таки не обязательно. Я вот только МАС-уровень реализовал, ну у нас там сеть была из своих собственных дивайсов, на МАС-уровне подняли свой собственный протокол с блекджеком и шлюхами, а большего и не надо было.
А тебе, если в писюк надо выгружать - можно софтину соответствующую написать, которая и работала бы на этом МАС-уровне.
Возьми АЦП, и гейты с логическим управлением. ПЛИСкой циклично переключай гейты, поочередно подавая на вход АЦП сигнал с очередного источника, при этом синхронно снимая семплы с АЦП. И спектры сможешь сторить, и алгоритмы применять для вычисления среднего значения частоты. Ну ты понел короче. Может тут и ПЛИС не нужна.
Это же с какой частотой нужно дрочить ацп, чтобы получить точность 0.01Hz? Да и 24 входа.
Ммм, ну вот например есть AD9212-65 8 каналов 65 MSPS. Соответвенно 3 замера за 10мс на один канал. Это 300 замеров за 1 сек. Максимально измеряемая частота у тебя это 100KHz, следовательно частота дискретизации должна быть 200KHz, умножаем на 300 - получаем 60MHz. В заявленные 65 миллионов семплов в секунду укладываешься с небольшим запасом. Точность должна быть достаточная. Можешь вообще 3 таких АЦП поставить, тогда гейты вообще не нужны, а точность просто ацкая будет.
Возможно, я чего-то не понимаю, или ты не догоняешь.
Мне надо и точно и часто, за 1 сек я и на старом девайсе померею, а мне надо за 10мс.
Хм, вообще да, ты можешь один в один повторить на ПЛИС то, что здесь описал. >>219912. Только ПЛИС позволяет перехватывать вообще каждое изменение логического уровня входного сигнала по триггеру posedge или negedge. Плюс также заводишь триггер на такт от PLL (которая типа опорная частота). Триггер на такт PPL инкрементирует счетчик, триггер на такт входного сигнала сбрасывает в 0. При этом в момент срабатывания триггера на такт входного сигнала также можешь определить частоту сигнала, зная частоту PLL и значение счетчика. Фактически у тебя будет длительность какждого такта входного сигнала. А уж как это интерпретировать дело твое.
Вот об этом я и говорил, еще заодно можно аппаратно захватывать другой регитр, используемый как часы. Тогда каждый результат можно снабдить меткой времени, когда он фактически был получен, например
Канал 1: 72769.83Hz 13:27:48.689
Канал 2: 687.35Hz 13.27.48.701
Это упростит анализ, если клиенту захочется что-то отследить. И отпадут требования по доставке данных на ПеКа.
делаю сеть так.
Ниос делает все сервисные передачи по езернету по tcp/ip, udp, icmp.
Отдельно на железе уже собираются и разбираются UDP.
Есть удобство и гибкость настройки и управления, есть канал UDP 1000mbit/s.
Вообще стек не нужен для начала, можно просто udp в чистую сделать.
ЗЫ делать на чистом MAC изврат.
На ходу можно произвольное значение частоты среза задавать, а в матлабе нагенерить только на ограниченное множество заранее заданных значений.
>Ниос
Слушай, а я вроде читал, надо лиценцию покупать, без нее все модули на Ниос генерятся с ограничениями по времени. Это так?
>делает все сервисные передачи по езернету по tcp/ip, udp, icmp.
Там прям типо библиотечные методы для работы с сокетами?
слабый ниос - бесплатный, простая перефирия беплатная.
+ лицензии можно и намутить почти на все, это жи интернет.
Там используется usOS-II и NicheStack. Есть пример сервера в ниос ide.
Почему? Аргумены вида "Мне они больше нравятся" сразу нахуй.
Алсо, ссылкота http://www.ebay.com/itm/252209726635?_trksid=p2060353.m1438.l2649&ssPageName=STRK:MEBIDX:IT
На будующее взял бы что-нибудь по мощнее. Рано или поздно (скорее рано) захочется нативную связь с компом. Ну там ethernet, usb, да хоть com port (да можно сэмулировать через программатор, но это не то). Захочется дисплей, звук. Процесслр хуйнуть. Ацп, цап, если угореть по связи. И т.д.
Хотя для просто поморгать диодами пойдет любое говно. Хоть из роутера можно вынуть. Раньше чот модно было.
Зы у альтеры очень хорошие мануалы. Даже на руском много чего переведено. Так что сперва поищи материал.
Про хилых не знаю, учился на альтере.
http://ru.aliexpress.com/item/Free-shipping-ALTERA-FPGA-EP2C5T144C8N-fpga-board-USB-BLASTER-fpga-development-board-fpga-altera-board/793643076.html?btsid=16c684d7-9c0a-4ee4-bcae-1edbb73a8828&s=p&ws_ab_test=searchweb201556_2,searchweb201602_1_10034_507_10020_10001_10002_10017_10010_10005_10011_10006_10021_10003_10004_10022_10009_10007_10008_10018_10019,searchweb201603_6&spm=2114.03010208.3.36.1OlU0Y
А аргументы такие что альтера для ньюфагов более дружелюбна, менее глючный САПР, интуитивно понятные чипы, меньше глюков в целом. Работал и там и там, поверь, знаю о чём говорю.
>>220722
Это тебе DE2-115 в идеале, или вот такое китаеподелие:
http://ru.aliexpress.com/item/Free-shipping-ALTERA-FPGA-development-board-NIOS-CYCLONE-IV-EP4CE15/1794741577.html?spm=2114.03010208.3.19.a5ngEN&ws_ab_test=searchweb201556_6,searchweb201644_1_505_506_503_504_502_10001_10002_10016_10017_10010_10005_10011_10006_10012_10003_10004_10009_10007_10008,searchweb201560_2,searchweb1451318400_-1,searchweb1451318411_6449&btsid=974cf3ae-6d82-4410-be14-4e9501532c56
С одной стороны дело говоришь, но я вроде как не лично себе покупаю, а для работы, так что этой хватает с двойным запасом и цена демократичная, так что мне норм, наверное.
Если будет слишком большая, то я могу зажраться.
Езернет буду делать самопальный, благо микросхема 10/100BaseT стоит ~80рупий, платку изготовить дороже, просто добавлю к одному из заказов.
Проц вот этот http://opencores.org/project,altor32 с опенриском дела имел, разберусь, наверное.
В мониторы наигрался на STM32 еще.
>>220740
Первая выглядит интересно, вторая слишком жирно, морда треснет.
На самом деле я лично против альтеры ни чего не имею, но у меня есть знакомый, который может в Ксайлинкс, в случае чего он будет много полезнее, чем гуглинг того не знаю что.
Поясни за качество документации у альтеры, ксайлинксовская на первый взгляд выглядит норм, но зарыться капитально еще не успел, чтобы оценить.
>Поясни за качество документации
Хуй знает, как по мне, если вражье наречие знаешь, то с доками проблем не возникнет. Я, вот, сам в англюсик не могу, от того и страдаю.
Каким боком читалка с планшетиком до ПЛИСок?
DE2-115 хорошая плата. У меня есть такая. Я к ней подключал АЦП-ЦАП и рулил всем по ethernet.
>>220741
> у меня есть знакомый, который может в Ксайлинкс
Ну вот возьми алтеру. Поделитесь с ним впечатлении, у обоих кругозор будет шире.
Подход к проектированию и инструменты не зависят сильно от производителя. Направление куда гуглить он тебе сможет подсказать.
Плюсую вот этого. Альтера подружелюбнее будет к юзеру
ну мне VHDL не нравится из за того что чаще всего на нем строк кода выходит гораздо больше чем на Verilog'e.
иди отсюда, пёс.
серьезно?
Хули тут обосновывать? VHDL просто не предоставляет таких инструментов, какие дает SystemVerilog. В то же время в VHDL нет ничего такого, чего не было бы в Verilog.
Интерфейс с языком С и у Верилога2001 есть.
Пидор ты. Ты столько срал в радаче своим систем верилогом, что я практически решился его изучить.
Ты сольешь оттуда набор байт. Оно тебе надо? Или ты думаешь, что оттуда сливается код в разных вариациях: VHDL, Verilog и т.д.?
Ну да, я чо не? Я думал проникнусь работами мастеров. Ну и хрен с ней, буду тренироваться значит.
Зачем отпаивать? Там даже разъем под бластер распаян, а китайса мне прислал его за 250р.
Я в первый раз насрал. Так то сам я сижу на VHDL, но чувствую себя дном ебаным, ибо надо мигрировать на SV.
Меня в универе учили верилогу. Именно из-за этого я изучил VHDL сам, ибо университетская программа вызывает отвращение к объекту изучения. А вот теперь все чаще слышу про SystemVerilog. Правда, исключительно на дваче. Если по вакансиям смотреть, то все еще больше требуются VHDL и Verilog схемотехники.
Если ты знаешь SV, то значит и Verilog знаешь. SV используют только продвинутые ребята и их немного, это так.
А если говорить про синтез, то пофиг на чем писать вообще.
Тут SV ничего супер особенного не дает. Да повышает уровень абстракции, да улучшает читаемость кода, но это имеет выгодны на больших полностью рукописных проектах.
Если вы начнете использовать SV, по просто будете использовать logic и always_ff. Да, потом может быть еще byte для простоты, enum для автоматов, может быть структуры, для разбора регистров. Интерфейсы скорее всего нет, их тяжело сопрягать с qsys или просто со сторонним кодом. Ну операции с многомерными массивами еще. Это вообще мало кому надо.
Если вы делаете все это на Verilog с закрытыми глазами, то вы разберетесь в этом всем полностью за пару недель.
SystemVerilog это не новый язык, это новый стандарт по большому счету.
И что же я не смогу написать на Verilog'e?
анон с запчастями от игровых автоматов
ебать ты валера тупой.
Фото - это биты. Их можно сохранить в память.
В лутах есть триггеры. Неожиданно, но D-триггер - это память.
Да, все жиры твоей мамки не поместятся в твое маленькое говно, но концептуально все возможно мань.
Учи английский или програмь на АЛГОЛЕ!
Напиши мне модуль на VHDL, чтоб побайтово совпадал с фото моей мамаши и скомпилировался бы в квартусе, мудак.
Быдло кэннот инту хекс редактор?
Да на самом деле даже регистры не нужны.
Можно синтезировать многомерную комбинаторную логическую функцию, которая из константы (например все нули) генерирует изображение твоей жирной мамаши.
Не стоит вскрывать эту тему.
Просто же. Берёшь код и компилируешь под свой ASIC, на выходе получаешь фотошаблоны для производства. Я не прав?
все возможно
Нет, все немного сложнее. Да и меня интересует скорее финансовый вопрос, нежели технический
Есть проект на плисах стоимость 8к баксов, серийность мне почему-то не хотят уточнять, но как я понял что-то в районе тысячи штук. Меня интересует несколько вещей.
1. ПЛИС реализована на 28 нм, читал, что цена проектирование асиков с такой технологией улетает в небеса. Есть ли возможность перепилить на менее дорогой техпроцесс?
2. В ПЛИС аппаратно реализованы трансиверы, которые активно используются. Как можно решить этот вопрос? Не запилят ведь на том же tsmc альтеровские IP-блоки. Или запилят? Если у них есть какие-то другие свои решения, означает ли это, что нужно будет переписывать код под них?
3. Ну и собственно, какова будет примерная цена именно проектирования асика? Меньше 800к баксов?
По поводу объема заказа, слышал, что заводы выставляют условие от 15 до 50 тысяч, но есть же варианты с шаттлами?
>>222778
Проектировать топологию надо в САПР подписка на которые стоит лям баксов в год (по поводу этого всего не уверен, все где-то вычитал, точные цифры скрывают власти). И без лицензии на эти сапры заводы в твою сторону смотреть не будут (опять же инфа не 100, тут тоже хотелось бы уточнить у знающих господ).
Они больше не занимаются асиками как я понял
Может забыл какой то выходной порт подключить, а плл была оптимизирована за ненадобностью. Или ресет подрят
Спасибо, анон
>Проектировать топологию надо в САПР подписка на которые стоит лям баксов в год (по поводу этого всего не уверен, все где-то вычитал, точные цифры скрывают власти). И без лицензии на эти сапры заводы в твою сторону смотреть не будут (опять же инфа не 100, тут тоже хотелось бы уточнить у знающих господ).
Думается мне у братушек-китаюшек все эти вопросы решены уже.
Ну у тебя есть верхний уровень - это исходник, который непосредственно цепляется к ногам ПЛИС. Допустим, ты добавляешь в верхний уровень компонент (PLL). Если у тебя PLL окажется ни к чему не подключенной внутри верхнего уровня (подключены должны быть как минимум входной и выходной клоки), то умный синтезатор ее просто соптимизирует.
Да.
А ты думал, легко быть плиской?
да не все норм, подключено.
Во-первых: у ПЛИСок никаких программ нет.
Во-вторых: ПЛИСка эту самую "программу" сама подгружает во время инициализации, когда на неё подаются питание. Справедливо только для FPGA.
Сохраняет. Более того, в отличие от FPGA ей даже не надо ничего подгружать из ROM при инициализации.
Всё! Принимайте в ряды ПЛИСоводов. Моргаю светодиодом. Завтра начну проектировать машину Судного Дня.
Есть пару десятков EPM3032 с залоченым JTAG-ом. Нигде не найду как разлочить без ЙОБА-программатора за хуилиарды денег. Пичаль.
Для него шаг на Ethernet-разъеме, недостижим с папкиным стоваттным лудилом.
Ок. Ща выдеру с материнки, припаяю вместо простого светодиода.
Когда ты передаёшь инфу: задействован тх трансивер. И мигает от импульсов 1 лед. Когда принимаешь мигает другой. Активна линия рх рессивер.... Иначе они не мигают. Ваш кэп.
Хуя ты умный, у тебя наверно IQ 160?
Пробовал ли кто кодгенераторы? Вроде в матлабе есть, но я особо не вникал. Знаю, что говно, просто интересно, с орехами или без.
Алсо, чому у эмбедщиков с армами, фриртосами и пинусами на армах зп выше? Причём, солидно выше. Про софтопидоров я вообще молчу блять. Все считают, что плис - говно, и писать под них любой дебил может?
1. Можно скачать не виваду а ise, которое поддерживает спартан 3. Вивадо это апнутая ISE.
2. Про SV попахивает пиздежом, Просто очевидно для синтеза ограниченное подмножество применяется. Можно найти документ об этом.
3. Генерировал из матлаба цифровую обработку. Работает норм. + можно прикрутить тулзы производителя ПЛИС. Для альтеры это dsp builder toolbox for matlab. Дает модельное отображение мегафункций в симулинк, а при синтезе используются визарды мегафункций неявно, чтобы было роднее и оптимальнее под заданный кристалл.
На самом деле генерация кода это охуенная тема, и рано или поздно она будет иметь большой вес, почитать хоть анонсы альтеры, ксайлинкса, матворкс или интела. Надо её иметь ввиду и не относиться к ней пренебрежительно.
4. хз чот))) го опрос кто скока рубит))
ЗЫ рассказывай как докатился до жизни такой, что плис захотел использовать?
А, хуйню написал, я и имел в виду ISE. В справке к ней же написано даже, что она поддерживает синтез vhdl/verilog; isim поддерживает симуляцию vhdl/verilog, да и на форуме у них все пишут, что в ise никто поддержку sv не планировал пилить. Ну и примеров синтезируемых конструкций ни в одном документе к ise нет.
В принципе, насрать, но прямо интересно было, потому что читал, что, мол, sv вобрал в себя самое лучше из верилога и вхдл, плюс охуенные возможности для написания юнит-тестов.
>Генерировал из матлаба цифровую обработку.
Что конкретно? Кодер-декодер можно захуячить? Интересно было бы ещё сравнить то, что сгенерирует матлаб, с ip-ядром производителя ПЛИС.
>как докатился до жизни такой, что плис захотел использовать?
Да никак - сказали, что надо. Оно и понятно, потому что требовалось управлять сотнями ножек. Мне показалось проектирование устройств на ПЛИС весьма интересным, но пока ничего, кроме уарта, я под неё не писал. Делать сейчас нехуй, вот и думаю с платой поиграться.
>Алсо, чому у эмбедщиков с армами, фриртосами и пинусами на армах зп выше?
Откуда такая инфа?
>Что конкретно?
ну там типа приемник, ацп -> iq демодулятор, дециматоры, фильтры fir, быструю свертку на fft. Ну и формирователь сигналов - интерполятор, модулятор -> цап.
>Интересно было бы ещё сравнить то, что сгенерирует матлаб, с ip-ядром производителя ПЛИС.
Я не могу сравнить, мало генерацией занимался. Там много нюансов, которые надо знать и использовать чтобы круто вышло.
>ну там типа приемник, ацп -> iq демодулятор, дециматоры, фильтры fir, быструю свертку на fft. Ну и формирователь сигналов - интерполятор, модулятор -> цап.
Офигеть, такую же фигню делаю. Как планируешь IQ демодулятор запилить? Я набросал кой чего на верилоге, вернее нагуглил и немного перепилил.
>Как планируешь IQ демодулятор запилить?
ну тип умножаю на косинус и синус, брат)
По серьезке есть старый хинт:
Если пч попадает на частоту 1/4 от частоты дискретизации (ну в общем виде (1/4+n)fd, n=0,1,2... на сколько полоса ацп позволяет) , то синус и косинус реализуются как 0 1 0 -1 и 1 0 -1 0, потом убираешь нули, что как бы децимация в два раза, ставишь фильтр скользящего среднего и дециматор простой уже до полосы.
Сейчас делаем по другому. Генерируем синус и косинус кордиком, децимируем каскадно на CIC фильтрах.
Собственно у синуса и косинуса меняется частота динамически, можно перестраивать.
хз, не умею в конфы. в телеграмме типа? можно тогда конфу треда запилить уж.
Во-первых: гугли когерентный приём. Во-вторых: гугли схемы фазовой синхронизации: схему Костаса например
>Если пч попадает на частоту 1/4 от частоты дискретизации (ну в общем виде (1/4+n)fd, n=0,1,2... на сколько полоса ацп позволяет) , то синус и косинус реализуются как 0 1 0 -1 и 1 0 -1 0, потом убираешь нули, что как бы децимация в два раза, ставишь фильтр скользящего среднего и дециматор простой уже до полосы.
Чет не совсем понял, я как раз в сторону кордика смотрел.
>Собственно у синуса и косинуса меняется частота динамически, можно перестраивать.
Дак в этом как раз плюс, можно нулевую частоту менять произвольно, без изменения преносимой частоты в аналоговой части. Плюс кордик позволяет экономить на операциях умножения, при этом разрядность только на 1 бит поднимается. Плюс также если AM\FM демодуляцию на PLL делать, там тоже кордик идеально ложится, и atan2 и гипотенузу вычислять умеет.
>схему Костаса
ну тип оно и есть.
стоило наверное сказать, что это РЛС и формирователь и приемник работают от одной тактовой частоты. Это и дает когерентность.
ну всмысле нет смысла в синхронизации гетеродина по схеме костаса, если есть когеретность от тактовой синхронизации.
Нужна помощь.
Интерфейс RS323
Необходимо разработать ПО для реализации протокола обмена между ПЛИС и ПК(на прием и передачу)
Прием : ПЛИС должна принимать десятичное число (от 0-9) и передавать его на семисегментный индикатор для контроля
Передача: возврат полученного десятичного число (от 0-9)
1) Nios/microblaze
2) Прораммируешь как МК
3) ...
4) PROFIT!
А теперь ответь, нафига тут ПЛИС и на каком железе это собрано?
>>это все на AHDL
это брат тебе никто не поможет. От него попахивает уже мертвечиной.
ну как я понял тестовая задача это. я новичкам такое задаю.
какое железо? чем собираешь принимать на компе?
знаешь как работает uart? семисигментный индикатор? что такое плис вообще?
АЛСО поковыряй сперва отдельно индикатор. например нажимаешь на кнопку, прибавляется число. по второй кнопке все сбрасывается. дальше спрашивай.
ЗЫ требовать AHDL это вообще за гранью добра и знал. обьясни откуда такое требование?
> семисигментный индикатор? что такое плис вообще?
да
с семисигментным чет делал, было давно, вспомнить реально
что такое плис тоже в курсе
вот с uart не знаком
>какое железо?
у меня вроде как и реализация есть проги
только там все коментарии на китайском
и полный пиздец нихуя не понимаю
>ЗЫ требовать AHDL это вообще за гранью добра и знал
вообще я тоже думал послать нахуй это AHDL
и делать на verlog
> Можно, конечно
Решил не оттягивать коту яйцы, а скачал квартус и ебашу по хардкору гугля левой рукой непонятности. Уже захуярил счетчик, два компаратора и на удивление, всё работает в моделсиме. Ух. Ебать моща эти ваши ПЛИСы.
Один хуй ты даун - не мочь в такую простоту на последнем курсе. В манагеры пойдешь?
это VHDL же
>>225303
Братишка вот я тебе нашел:
http://www.fpga4fun.com/SerialInterface.html
5 лет назад использовал
>>225316
Если что-то можно сделать на логике, то это можно сделать на ПЛИС, но это не значит, что надо так делать.
>>225347
Ну хз чо. К меня вообще такого не было в институте. Лучше хоть так чем никак.
> но это не значит, что надо так делать.
Можно хоть помоделировать в квартусе, а потом собрать на 155 серии, а дядь?
У меня XCL в итоге будет 12.000.000Гц. 155 не потянет.
Зачем тебе ебашить огромную плату с кучей 155х, когда можно взять самую маленькую плисинку и все запихнуть в неё + еще и изменить поведение в случае необходимости можно будет, а не переразводить и перепаивать.
Если осилю эту сверхзадачу, то и захуярю на плисине epm240t100c5. У меня другой нет, а покупать лень.
Кстати, эту плисину, китайца продает по 120р/шт, а на сайте альтеры она 7.50 баксов. Как думаете, подъебка?
http://ru.aliexpress.com/item/1PCS-IC-EPM240T100C5N-TQFP100-ALTERA-NEW-GOOD-QUALITY/32464720379.html
Вах, нэт, штоты! Себе в убыток торгует, за ради тэбя, дарагой!
Как известно подавляющее число микросхем делаются в Китае.
Китайцы честно делают заказанную им партию и передают заказчикам, потом приходят ночью, включают станки и штампуют левак.
Так что эти чипы не совсем альтеровские, и гарантий работоспособности, соответственно, ждать не приходится.
> включают станки и штампуют левак
Бля, ну это же не сгонов на дюйм с четвертью наточить, а высокотехнологичная хуйня. Мне сдается, что эти чипы были отбракованы из партии, а ушлый желтолицый решил их впарить доверчивому русичу. Чип может и поработает некоторое время, а потом скажет, - досвидос, и сожгет всё окружение.
>а высокотехнологичная хуйня
Ну так это, я думаю, и не частная инициатива, на гос уровне у них такое поощряется.
Чорд, он и у в Терре 260р стоит. Наверное у китайцев закупаются. Короче. Возьму парочку, не обеднею на 250р думается.
NYET! Я их специально, в форме хуя, обвёл.
Этож альтера эдитион, он халявный
Не лайт, а Web Edition. Подбирай версию по модели плиски, а то для меня до сих пор загадка, как у них меняются поддерживаемые чипы от версии к версии.
У квартуса прайм эта версия лайт называется.
А я нарисовал и скомпилировал все в квартусе, нарисовал схему в орле, купил запчастюшки недостающий (в ЧиДе, в розницу, ебать его табуреткой) и на меня напала охуенная лень и никак не дорисую печатку, чтоб все спаять и радоваться частотомеру.
Да хз насчет особенностей.
Есть документы типа всякие справочные у альтеры. можно посмотреть.
Ну можно посмотреть отладочные платы terasic. там есть к них схемы, вся фигня.
Более конкретные вопросы мб есть?
Конкретно - где брать ДШ на конкретные чипы, что кроме самой плисины нужно класть на плату? Вроде пока всё.
Схемы там принципиальные, вот разводочку бы посмотреть...
Говорят есть какой-то метод совместной разводки платы и проекта в ПЛИС. Ну типа чтобы и сигналы в проекте по ногам грамотно раскидать и чтобы одновременно с этим печатку можно было проще развести.
есть конструкция, написанная на Verilogе вида:
case(ct)
1:begin
something
end
2:begin
something
end
3:begin
case(pc)
1:begin
something
end
2:begin
something
end
endcase;
4:begin
something
end
endcase;
до второго кейса доходит без проблем и происшествий, но назад не возвращается. default:disable не работает. Что с этим делать не знаю.
Уже похуй, переписал. Разбил просто по участкам и переходами между ними смастрячил. Я так понял в верилоге нет никаких аналогов сишного break.
Вероилог - ебанутый язык. [7:0]Y и [7:0]y это не одно и то же оказывается. Ну охуеть блять.
Тут выше был спор, где было хорошо объяснено, что верилогобляди не люди, так что уймись.
ADC - по началу, наверное, сойдёт любой, даже говнецо уровня 20M@8bit
DAC - не обязательно, т.к. сначала буду ебать только ADC, ну а DAC потом можно и накинуть так, но если будет сразу - заебись
Ethernet PHY или IEEE 1394 - первый предпочтительнее
Хоть сколько-нибудь памяти, лучше побольше
Ну и USB там скорее всего и так будет
Тебе приснилось, маня.
Нет. Но имея сверхбыстрый АЦП от TI и используя FPGA можно сделать осциллограф.
Нет, но можно сделать сверхбыстрый 64 битный резистор.
Шутник, на ней же нихуя нет.
https://www.altera.com/products/fpga/cyclone-series/cyclone-v/support.html
вот например документация на циклон 5. Там все документы важны.
Обрати внимание на обзор, даташит, хендбук, гидлайн и pcb.
что класть...
ну из очевидного питания разные всякие для ядра, банков, трансиверов, шунтирующие конденсаторы, есть где-то прога для расчетов в экселе. я сам не делал. ну прошивочная память, jtag.
Вообще посмотри платы отладочные на терасике. прикинь что надо.
>>229322
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=745&PartNo=4
качаешь диск.
там есть тестовые проекты, электрические схемы, псб, мануалы, полный фарш короче.
altium designer. в нем можно делать такое.
Но мы никогда так не делали.
>altium designer. в нем можно делать такое.
>Но мы никогда так не делали.
Совершенно правильно так не делали. Ибо инструментарий для ПЛИС в альтиумах отвратителен (в общем-то было очевидным и предсказуемым для всех, кроме альтиума)
http://wl.altera.com/technology/signal/board-design-guidelines/sgl-bdg-index.html
Читай, потом расскажешь.
Это чё это? Это всё читать что ли надо? Я сколько плат видел, там нихуя не заметно было, что такое читали.
Да, ethernet висит на процессоре. можно передавать данные из плис в процессор, а из процессора передавать в ethernet
> можно передавать данные из плис в процессор, а из процессора передавать в ethernet
насколько это сложнее стандартного FPGA<-(MII)->PHY и есть ли какая-то разница в скорости?
Хуй знает насколько сложнее, я ещё этим не занимался. Просто надо еще писать программу для линупса в процессоре, отлаживать это всё дело. А разница в скорости скорее всего будет заметна, лишняя прослойка жи есть. Хотя можешь скачать диск для этой платы, там есть пример такой связки. или в юсб, не помню точно
>Просто надо еще писать программу для линупса в процессоре, отлаживать это всё дело.
Ясно, тогда нахуй.
Есть вообще что-то типа этой же платы, только без ARM?
А то либо дешёвая хуита без нихуя, либо килограмовая хуерга с лист А4 за 500+ баксов...
Пацаны, не могу никак книгу найти "Michael Rice - Digital Communications. A Discrete-Time Approach". Ни у кого нет? Или, может, кто-то знает, где ещё можно поискать?
Много такого типа есть. Алсо тебе езернет обязателен? Просто у терасика только soc платы имеют езернет
>Алсо тебе езернет обязателен?
Ну вообще было бы неплохо. Мне он будет нужен в любом случае.
Так-то можно, конечно, шильдик с phy и разъёмом развести, но если будет сразу то ещё лучше.
>FPGA<-(MII)->PHY
Делал такую херь.
Скорость выжал максимальную, т.е. пакеты вылетали друг за другом в плотную, с минимально необходимыми по стандарту просветами.
>>230648
Чего только нет.
http://ru.aliexpress.com/item/EP4CE10-EP4CE10F17C8N-ALTERA-Cyclone-IV-FPGA-Development-Board-18-Accessory-Modules-Kits-OpenEP4CE10-C-Package-B/780162320.html?spm=2114.03010208.3.209.VzVXFJ&ws_ab_test=searchweb201556_10,searchweb201602_1_10037_10017_10021_507_10022_10032_10020_10018_10019,searchweb201603_6&btsid=1fc93fbd-8fc9-4efc-903c-01f2b7ef0559
>Делал такую херь.
Да я и не сомневался, что такое возможно и даже кто-то итт делал, меня интересовало чем та махарайка с ARM отличалась от этой схемы. Ну и, собственно, я уже узнал.
Алсо чего конуретно с езернетом пилил-то?
> Чего только нет.
Ммм, выглядит неплохо, но наверное всё же избыточно для моих целей пока.
Мне бы что-то типа >>229017 только без этого ебаного ARM. Одна небольшая плата на альтере с on-board программатором, немного памяти и езернет, всё остальное на гребенку.
>Алсо чего конуретно с езернетом пилил-то?
По гос заказу, вот только у государства, видимо, денег не хватило, приостановили пока.
>но наверное всё же избыточно для моих целей
Их там все по отдельности можно найти.
>Одна небольшая плата на альтере с on-board программатором, немного памяти и езернет
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=139&No=593
Езернет-модуль докупить у тех же китайцев и на GPIO повесить.
>Езернет-модуль докупить у тех же китайцев и на GPIO повесить.
Не мог бы ты посоветовать годный, мне 10/100 хватит с головой.
Кун-который-пилит-24-частотомара
Как только совладаю с тулчеином or1knd-, запилю репорт
Я писал выше, но повторюсь
Данных будет много, и в uart они уже не пролезут. Почему езернет а не usb? - Езернет универсальнее, и вообще стильно, модно, молодежно.
>>230890
Это мост spi<->ethernet же. Зачем такие полумеры, когда у меня не сраная Авр-ка а плисина?
>>230819
Похоже, это то, что мне надо.
> Данных будет много
Ты там прецизионный частотомер с обсчетом двухвыборочной дисперсии Аллана сочиняешь?
Мельком глянул это, пригодится, когда дойду до собственно блока частотомера.
Пилю репорт:
Поднял ядро altor32 http://opencores.org/project,altor32 на Spartan-6 (lx9)
Собственно плата пикрелейтед приехала из китая все цело и работает. С подключением траблов тоже не возникло.
Методом проб, ошибок и гугла добился, чтобы это все запускалось в симуляторе.
Главная проблема была по ньюфажности, как запилить память.
Решение: Двухпортовая память на 32К, одной стороной подключена к шине памяти программ проца, другой к шине памяти данных и IO.
Собранная прошивка заливается при помощи такой хуйни:
[code]
generate
if(IMAGE_FILE != "")
initial begin
$readmemh(IMAGE_FILE, mem);
end
endgenerate
[/code]
Для начала забил память из /dev/random и проверил, что проц извлекает команды и пытается их выполнять.
Далее принялся ебаться с тулчеином. На странице опенкорес была инструкция по сборке тулчеина, попердолившись я смог это собрать и запустить.
В комплекте с ядром идет стартап.S и gdb-stub. Для тех кто не знает: эта хуйня позволяет отлаживаться без наличия JTAG у проца, через UART. Правда пока не очень понял как ей пользоваться, но об этом позже.
Когда удалось собрать и прошить все это, я законектился из обычного gdb к процу
(gdb) target remote /dev/ttyUSB1
Гдб сказал, что все ок, и показал адрес останова.
Заключив, что все ок, я принялся собирать гдб для целевой платформы. Когда мне наконец это удалось, и я все это запустил, он мне показал следующее пик2
Далее модифицировал пример, чтобы он делал что-то вразумительное (вызвать sprintf)
B и тут-же соснул, ибо стандартной бибилотеки не собрано!
При сборке полного тулчейна с newlib'ом вылезли 2 подводных камня:
1. Не хотел собираться вариант с -mno-delay и -msoft-float
2. Из-за ошибки в организации cmake-проекта линкер пытался слинковать в готовый бинарь все объектники и утыкался в повторяющиеся символы, либо наоборот удалял все символы, по тому, что секция, в которой находятся векторы не линковалась с проектом.
Первую проблему починил найдя бинарный тулчеин для or1k, в котором есть и -mno-delay и -msoft-float. Вторую - переконфигурировав проект.
Нерешенные проблемы:
1. Как работать с gdb-stub. он показывает первый останов и запрашивает состояние регистров, но ска только делаешь continue, все.
[code]
Continuing.
Can't send signals to this remote system. SIGHUP not sent.
Cannot execute this command while the target is running.
Use the "interrupt" command to stop the target
and then try again.
[/code]
2. При попытке слинковаться с *printf() по зависимостям тянется столько, что не лезет в отведенные 32К, будем считать, что НИНУЖНА.
Если моё говно будет кому-то полезно, то вот оно http://rgho.st/6NnC8sNPJ.
Мельком глянул это, пригодится, когда дойду до собственно блока частотомера.
Пилю репорт:
Поднял ядро altor32 http://opencores.org/project,altor32 на Spartan-6 (lx9)
Собственно плата пикрелейтед приехала из китая все цело и работает. С подключением траблов тоже не возникло.
Методом проб, ошибок и гугла добился, чтобы это все запускалось в симуляторе.
Главная проблема была по ньюфажности, как запилить память.
Решение: Двухпортовая память на 32К, одной стороной подключена к шине памяти программ проца, другой к шине памяти данных и IO.
Собранная прошивка заливается при помощи такой хуйни:
[code]
generate
if(IMAGE_FILE != "")
initial begin
$readmemh(IMAGE_FILE, mem);
end
endgenerate
[/code]
Для начала забил память из /dev/random и проверил, что проц извлекает команды и пытается их выполнять.
Далее принялся ебаться с тулчеином. На странице опенкорес была инструкция по сборке тулчеина, попердолившись я смог это собрать и запустить.
В комплекте с ядром идет стартап.S и gdb-stub. Для тех кто не знает: эта хуйня позволяет отлаживаться без наличия JTAG у проца, через UART. Правда пока не очень понял как ей пользоваться, но об этом позже.
Когда удалось собрать и прошить все это, я законектился из обычного gdb к процу
(gdb) target remote /dev/ttyUSB1
Гдб сказал, что все ок, и показал адрес останова.
Заключив, что все ок, я принялся собирать гдб для целевой платформы. Когда мне наконец это удалось, и я все это запустил, он мне показал следующее пик2
Далее модифицировал пример, чтобы он делал что-то вразумительное (вызвать sprintf)
B и тут-же соснул, ибо стандартной бибилотеки не собрано!
При сборке полного тулчейна с newlib'ом вылезли 2 подводных камня:
1. Не хотел собираться вариант с -mno-delay и -msoft-float
2. Из-за ошибки в организации cmake-проекта линкер пытался слинковать в готовый бинарь все объектники и утыкался в повторяющиеся символы, либо наоборот удалял все символы, по тому, что секция, в которой находятся векторы не линковалась с проектом.
Первую проблему починил найдя бинарный тулчеин для or1k, в котором есть и -mno-delay и -msoft-float. Вторую - переконфигурировав проект.
Нерешенные проблемы:
1. Как работать с gdb-stub. он показывает первый останов и запрашивает состояние регистров, но ска только делаешь continue, все.
[code]
Continuing.
Can't send signals to this remote system. SIGHUP not sent.
Cannot execute this command while the target is running.
Use the "interrupt" command to stop the target
and then try again.
[/code]
2. При попытке слинковаться с *printf() по зависимостям тянется столько, что не лезет в отведенные 32К, будем считать, что НИНУЖНА.
Если моё говно будет кому-то полезно, то вот оно http://rgho.st/6NnC8sNPJ.
>Пацаны, не могу никак книгу найти "Michael Rice - Digital Communications. A Discrete-Time Approach"
До AvaxHome avxhome.in/ebooks - кладезь книжек, о которой каждый блять школьник знает свою ленивую жопу дотрясти не можешь?!
В самом spi? Да ничего. Правда и смысла вешать езернет на него тоже не больше.
Вот, ещё на несколько рандомных файлообменников залил:
https://dropmefiles.com/1xMMR
http://файлообменник.рф/u56pl8uu78tk.html
http://webfiles.ru/files/45010758
Я был уверен на 99% что пишу 90%-ное говно
1. Я понимаю, что такие механизмы, как счётчики, пишутся не через Т-триггеры, а делал я так, потому что по заданию нужно, вроде как, "дословно" перевести схему на VHDL. Лучше скажи, грамотно ли я пользуюсь включением одной сущности для использовании в архитектуре другой? Или так вообще не стоит делать и нормальные люди делают по-другому?
2. Есть ли места, в которых можно сократить код средствами языка, а не, например картами Карно и вдумчивым анализом? Если есть такая возможность, то покажи где. И, если не лень, покажи как это сделать или что гуглить?
3. Стоит ли учиться HDL-языкам по примерам из интернета или лучше взять книжку и основательно её прочесть,потом нихуя не понять и пойти снова гуглить примеры и стать быдлокодером?
Спасибо.
>Лучше скажи, грамотно ли я пользуюсь включением одной сущности для использовании в архитектуре другой?
Дробить схему на более мелкие это нормально, поэтому с этой точки зрения ты делаешь все правильно.
>места, в которых можно сократить код средствами языка
Для вставки однотипных компонентов используй цикл. Вместо однобитных сигналов используй шины. И клоки не надо плодить, на все компоненты подавай один клок.
>Стоит ли учиться HDL-языкам по примерам из интернета
Смотря че ты хочешь. Синтаксис и основы учатся по учебникам. Но если ты хочешь стать yobaплисоводом, то нужно учить не язык, а схемотехнику и изучать это дело, отталкиваясь от реальных задач.
> Для вставки однотипных компонентов используй цикл.
> Показал на пике как не плодить клоки и ещё пару трюков
Это великолепно! Как раз то, что мне нужно!
Не понял только, что значит "(others => '0')". Это всего лишь начальное нулевое значение всей шины?
> Но если ты хочешь стать yobaплисоводом, то нужно учить не язык, а схемотехнику и изучать это дело, отталкиваясь от реальных задач.
Хочу, и встреченные мною задачи показали, что HDL язык вообще чуть ли не последнее, что нужно знать. А вот стандарты интерфейсов, IP-ядра и САПР - это как раз то, что необходимо. Но самому велосипедить гораздо интереснее, чем использовать IP-ядра.
В общем, огромное спасибо! Пойду всё-таки почитаю книгу.
Посмотрел, на VCCIO у меня подтянуто 3.3 вольта. Хочу закидывать атмежкой упраявляющие команды на плиску. Собственно как уровень до 3.3 вольт опустить? Делителем на резисторах? Ну или буферы использовать?
>Делителем на резисторах?
Больной извращенец.
>Ну или буферы использовать?
Транзисторный ключ поставь.
Чем плох делитель, ему же в одну сторону гнать? Хотя я бы поставил резистор с диодом, для обрезания уровня единицы.
В почему не поставить что-нибдуь из 74LVC - один корпус на несколько линий?
Я тот питух с ТТЛ рассыпухой из времени и частоты треда.
Хотелось бы заменить эти отдельные счётчики-триггеры плисинами, чтобы уменьшить жор, габариты и поднять быстродействие пикрелейтед тогда вообще в пару сигаретных пачек влезет.
С чего начинать стоит и что заказывать сразу? Как я понял, мне хватит чего-то простого на 32/64 макроячейки с программированием в виде составления схемы.
Не бейте, лучше обоссыте, если что не так спрашиваю.
EPM3032A/EPM3064A или XC2C32A/XC2C64A
Заказывай сразу программатор и чипы.
Если с плисами жизнь связывать не хочешь - выбирай Альтеру - программатор дешевле говна стоит. Качай квартус и там ебись со своими схемами.
Бери чо нибудь типа ЕРМ240/520. И счетчики свои уместишь и еще на цифровую шкалу макроячеек останется.
Бери вот такую ёбу
http://ru.aliexpress.com/item/new-part-in-stock-EP4CE6-EP4CE6E22C8N-ALTERA-Cyclone-IV-FPGA-Development-Board-Kit-All-I-O/32631920715.html?spm=2114.03010208.3.27.UAYyM5&ws_ab_test=searchweb201556_10,searchweb201602_1_10039_10037_507_10032_10020_10017_10021_10022_10009_10008_10018_101_10019,searchweb201603_6&btsid=80dc7813-a76a-49f4-b53b-34d48838f8e4
И рассыпуху свою там уместишь, и интерфейс с внешним миром запилишь, и даже LCD-экранчик приколхозишь.
Заказал вот такую хуйню:
http://ru.aliexpress.com/item/New-CPLD-Minimum-System-Core-Board-Development-Board-MAX-II-EPM570-T100-Replace-EPM240-ALTERA-PLD/32655630117.html
И вот такую:
http://ru.aliexpress.com/item/Free-Shipping-New-Mini-Usb-Blaster-Cable-For-ALTERA-CPLD-FPGA-NIOS-JTAG-Altera-Programmer-in/1487146376.html
Жду.
Давай. Пиши потом про свою новую йобу.
Сап плисаны. Где можно почитать как нормальные парни пишут под ПЛИС? Ну типа когда блокирующие присвоения применять, а когда нет и тд. На сколько я понял если у тебя что то делается по клоку то делаем неблокирующее присвоение, если не по клоку то блокирующее так?
о спасибо большое анон
x1 <= in;
x2 <= x1;
out <= x2;
На первом клоке значение in запишется в x1, на втором колке значение x1 запишется в x2, значение in которое пришло со второмым клоком запишется в x1, на третьем колке значение x2 запишется в out, значение x1 запишется в x2, значение in которое пришло с тетьим клоком запишется в x1. И т.д.
x1 = in;
x2 = x1;
out = x2;
в x1, x2, out одновременное запишется значение in, и их значения будут сразу меняться если изменится значение in, независимо от каких-либо клоков.
сложно не понимаю, так когда <= это неблокирующее присвоение, а = блокирующее. Я так как ты описал первое представлял работу, блокирующего присвоения, а ты описал все наоборот.
Лол, на самом деле все еще немного сложней, тут еще надо смотреть на наличие\отсутствие always. Я во втором варианте описал непрерывное присваивание, то есть без always. Процедурное блокирующее присваивание, то есть с always - это второй вариант, но само изменение значений происходит таки по клоку. Короче неблокирующее присваивание - это цепочка триггеров, каждый из которых при поступлении очередного клока передает свое значение следующем триггеру в цепочке, и при этом получает новое значение от предыдущего триггера. Блокирующее - когда несколько триггеров при поступлении очередного клока переключаются в полученное значение.
Вкратце дела такие.
Блокирующее присвоение блокирует что?
Блокирует выполнение следующего оператора, до завершения текущего.
x1 = in; выполнение блокируется пока x1 не станет in
x2 = x1; тут x1 уже in. и опять блокируется. в конце x2 = in
out = x2; на выходе out = in;
в итоге при синтезе это 1 триггер.
далее
x1 <= in; выполнение не блокируется.
x2 <= x1; выполняется сразу же не ожидая результата. тут x1 это x1 c прошлого клока.
out <= x2; аналогично x2 - это x2 c прошлого клока.
в итоге имеет out(t) = x2(t-1)=x(t-2)=in(t-3)
t - текущий такт
t-1 - предыдущий такт
t-2 - за два такта до. ну и тд
чуешь? 3 триггера!
Кстати если говорить про язык.
Не имеет значения, что в списке чувствительности в процедурном блоке always. клоки, не клоки, хоть *. блокирующее и неблокирующее присвоение работает одинаково.
Применительно к непрерывному присвоению слова блокирующее/неблокирующее не имеет смысла. assign a=b. это присвоение. просто присвоение.
В конце универсальный совет.
always используешь только для синхронной логики. ВСЕГДА используешь <=.
Для комбинаторной логики используешь assign.
Да можно писать сложную комбитаторику в always при помощи =. Поверь, оно тебе не нужно, всегда есть путь понятнее и проще.
Вкратце дела такие.
Блокирующее присвоение блокирует что?
Блокирует выполнение следующего оператора, до завершения текущего.
x1 = in; выполнение блокируется пока x1 не станет in
x2 = x1; тут x1 уже in. и опять блокируется. в конце x2 = in
out = x2; на выходе out = in;
в итоге при синтезе это 1 триггер.
далее
x1 <= in; выполнение не блокируется.
x2 <= x1; выполняется сразу же не ожидая результата. тут x1 это x1 c прошлого клока.
out <= x2; аналогично x2 - это x2 c прошлого клока.
в итоге имеет out(t) = x2(t-1)=x(t-2)=in(t-3)
t - текущий такт
t-1 - предыдущий такт
t-2 - за два такта до. ну и тд
чуешь? 3 триггера!
Кстати если говорить про язык.
Не имеет значения, что в списке чувствительности в процедурном блоке always. клоки, не клоки, хоть *. блокирующее и неблокирующее присвоение работает одинаково.
Применительно к непрерывному присвоению слова блокирующее/неблокирующее не имеет смысла. assign a=b. это присвоение. просто присвоение.
В конце универсальный совет.
always используешь только для синхронной логики. ВСЕГДА используешь <=.
Для комбинаторной логики используешь assign.
Да можно писать сложную комбитаторику в always при помощи =. Поверь, оно тебе не нужно, всегда есть путь понятнее и проще.
На опенсорцах ищи.
>I2C
>на ПЛИС
Ты ебанутый? Универсальный I2C занимает около 500 LE, а именно такой ты в опенсорцах найдёшь. Пиши под конкретный чип протокол и не еби мозги.
Думал, кто-нибудь скажет, где по практической реализации (желательно ближе к плис) что-то почитать про это можно.
Ну ладно, смотри. На первой картинке дискретный (с намного большей частотой дискретизации, чем работает вся схема) синус попадает на блок, который по импульсам с генератора берет отсчеты с частотой два отсчета на полпериода синуса (считаю, что полпериода - это как раз мой один символ). Далее т.н. Fraction Delay, сделанный с помощью Farrow Interpolator, схему которого я взял из книги Nezami. TED, схему сделал тоже по книге, то ли по Райсу, то ли по Незами, я уже не помню. Выход TED стробируется NCO, причем, так как петля работает на частоте вдвое выше частоты этого строба, Райс говорит, что нужно между отсчетами выхода TED вставлять нули. Далее петлевой фильтр опять же из Незами, коэффициенты от балды (из примера с электроникс.ру), про них отдельный разговор. После него задержка, потому что иначе меня матлаб посылает
>Cannot solve algebraic loop involving...
И NCO, который я собрал по книге Райса из кода в примере для PAM с ZCTED.
Как я это все понимаю: рассинхрон по фазе между символьной частотой и частотой тактового генератора АЦП исправляется с помощью дробного интерполятора или хер знает, как он в нашей литературе называется, управляет которым расчет mu в NCO, который зависит от цепи с детектором и фильтром. Соответственно, в генераторе импульсов, я ставлю смещение по фазе на 3 сэмпла синуса, например. Чисто экспериментально я выяснил, что для этого на вход интерполятора должно поступать число "1.845". Что я получаю, если после выхода детектора не вставлять нули: при sample time входного синуса в 0.01 с у меня колбасит интерполятор, потом через 28 секунд с хером NCO перестает давать строб, и mu зависает на значении "1.446". Ну и все это время, само собой, интерполятор словно пальцем в жопу - никак не попадает в нужную мне точку. Если же нули вставлять, то NCO не перестает давать строб, но mu колбасит точно также.
Я тут сейчас подумал, а управляющий интерполятором коэффициент уж не должен ли быть равен значению сдвига? Если так, то должно быть не 1.845, а 1.76.
Алсо, есть подозрения, что схема взятия сэмплов, имитирующая АЦП, полная хуйня. Можно ли туда воткнуть блок даунсэмплинга?
Думал, кто-нибудь скажет, где по практической реализации (желательно ближе к плис) что-то почитать про это можно.
Ну ладно, смотри. На первой картинке дискретный (с намного большей частотой дискретизации, чем работает вся схема) синус попадает на блок, который по импульсам с генератора берет отсчеты с частотой два отсчета на полпериода синуса (считаю, что полпериода - это как раз мой один символ). Далее т.н. Fraction Delay, сделанный с помощью Farrow Interpolator, схему которого я взял из книги Nezami. TED, схему сделал тоже по книге, то ли по Райсу, то ли по Незами, я уже не помню. Выход TED стробируется NCO, причем, так как петля работает на частоте вдвое выше частоты этого строба, Райс говорит, что нужно между отсчетами выхода TED вставлять нули. Далее петлевой фильтр опять же из Незами, коэффициенты от балды (из примера с электроникс.ру), про них отдельный разговор. После него задержка, потому что иначе меня матлаб посылает
>Cannot solve algebraic loop involving...
И NCO, который я собрал по книге Райса из кода в примере для PAM с ZCTED.
Как я это все понимаю: рассинхрон по фазе между символьной частотой и частотой тактового генератора АЦП исправляется с помощью дробного интерполятора или хер знает, как он в нашей литературе называется, управляет которым расчет mu в NCO, который зависит от цепи с детектором и фильтром. Соответственно, в генераторе импульсов, я ставлю смещение по фазе на 3 сэмпла синуса, например. Чисто экспериментально я выяснил, что для этого на вход интерполятора должно поступать число "1.845". Что я получаю, если после выхода детектора не вставлять нули: при sample time входного синуса в 0.01 с у меня колбасит интерполятор, потом через 28 секунд с хером NCO перестает давать строб, и mu зависает на значении "1.446". Ну и все это время, само собой, интерполятор словно пальцем в жопу - никак не попадает в нужную мне точку. Если же нули вставлять, то NCO не перестает давать строб, но mu колбасит точно также.
Я тут сейчас подумал, а управляющий интерполятором коэффициент уж не должен ли быть равен значению сдвига? Если так, то должно быть не 1.845, а 1.76.
Алсо, есть подозрения, что схема взятия сэмплов, имитирующая АЦП, полная хуйня. Можно ли туда воткнуть блок даунсэмплинга?
Думал, кто-нибудь скажет, где по практической реализации (желательно ближе к плис) что-то почитать про это можно.
Ну ладно, смотри. На первой картинке дискретный (с намного большей частотой дискретизации, чем работает вся схема) синус попадает на блок, который по импульсам с генератора берет отсчеты с частотой два отсчета на полпериода синуса (считаю, что полпериода - это как раз мой один символ). Далее т.н. Fraction Delay, сделанный с помощью Farrow Interpolator, схему которого я взял из книги Nezami. TED, схему сделал тоже по книге, то ли по Райсу, то ли по Незами, я уже не помню. Выход TED стробируется NCO, причем, так как петля работает на частоте вдвое выше частоты этого строба, Райс говорит, что нужно между отсчетами выхода TED вставлять нули. Далее петлевой фильтр опять же из Незами, коэффициенты от балды (из примера с электроникс.ру), про них отдельный разговор. После него задержка, потому что иначе меня матлаб посылает
>Cannot solve algebraic loop involving...
И NCO, который я собрал по книге Райса из кода в примере для PAM с ZCTED.
Как я это все понимаю: рассинхрон по фазе между символьной частотой и частотой тактового генератора АЦП исправляется с помощью дробного интерполятора или хер знает, как он в нашей литературе называется, управляет которым расчет mu в NCO, который зависит от цепи с детектором и фильтром. Соответственно, в генераторе импульсов, я ставлю смещение по фазе на 3 сэмпла синуса, например. Чисто экспериментально я выяснил, что для этого на вход интерполятора должно поступать число "1.845". Что я получаю, если после выхода детектора не вставлять нули: при sample time входного синуса в 0.01 с у меня колбасит интерполятор, потом через 28 секунд с хером NCO перестает давать строб, и mu зависает на значении "1.446". Ну и все это время, само собой, интерполятор словно пальцем в жопу - никак не попадает в нужную мне точку. Если же нули вставлять, то NCO не перестает давать строб, но mu колбасит точно также.
Я тут сейчас подумал, а управляющий интерполятором коэффициент уж не должен ли быть равен значению сдвига? Если так, то должно быть не 1.845, а 1.76.
Алсо, есть подозрения, что схема взятия сэмплов, имитирующая АЦП, полная хуйня. Можно ли туда воткнуть блок даунсэмплинга?
Думал, кто-нибудь скажет, где по практической реализации (желательно ближе к плис) что-то почитать про это можно.
Ну ладно, смотри. На первой картинке дискретный (с намного большей частотой дискретизации, чем работает вся схема) синус попадает на блок, который по импульсам с генератора берет отсчеты с частотой два отсчета на полпериода синуса (считаю, что полпериода - это как раз мой один символ). Далее т.н. Fraction Delay, сделанный с помощью Farrow Interpolator, схему которого я взял из книги Nezami. TED, схему сделал тоже по книге, то ли по Райсу, то ли по Незами, я уже не помню. Выход TED стробируется NCO, причем, так как петля работает на частоте вдвое выше частоты этого строба, Райс говорит, что нужно между отсчетами выхода TED вставлять нули. Далее петлевой фильтр опять же из Незами, коэффициенты от балды (из примера с электроникс.ру), про них отдельный разговор. После него задержка, потому что иначе меня матлаб посылает
>Cannot solve algebraic loop involving...
И NCO, который я собрал по книге Райса из кода в примере для PAM с ZCTED.
Как я это все понимаю: рассинхрон по фазе между символьной частотой и частотой тактового генератора АЦП исправляется с помощью дробного интерполятора или хер знает, как он в нашей литературе называется, управляет которым расчет mu в NCO, который зависит от цепи с детектором и фильтром. Соответственно, в генераторе импульсов, я ставлю смещение по фазе на 3 сэмпла синуса, например. Чисто экспериментально я выяснил, что для этого на вход интерполятора должно поступать число "1.845". Что я получаю, если после выхода детектора не вставлять нули: при sample time входного синуса в 0.01 с у меня колбасит интерполятор, потом через 28 секунд с хером NCO перестает давать строб, и mu зависает на значении "1.446". Ну и все это время, само собой, интерполятор словно пальцем в жопу - никак не попадает в нужную мне точку. Если же нули вставлять, то NCO не перестает давать строб, но mu колбасит точно также.
Я тут сейчас подумал, а управляющий интерполятором коэффициент уж не должен ли быть равен значению сдвига? Если так, то должно быть не 1.845, а 1.76.
Алсо, есть подозрения, что схема взятия сэмплов, имитирующая АЦП, полная хуйня. Можно ли туда воткнуть блок даунсэмплинга?
А не проще АЦП заюзать?
Сигнал, как я понимаю, цифровой, только не двоичный, а какой-то четверичный.
Накапливаешь отсчёты, потом их анализируешь.
if xcnt16<="01110" then
если xcnt16:="00000"
Типа блок в симулинке или про какой ацп ты говоришь?
Алсо, костыльная схема тактирования меня тоже смущает слегка, тем более, ни в одном примере я такого не видел. Но других вариантов пока не придумал.
>>234568
Michael Rice - Digital communications. A discrete time approach.
Mohamed K. Nezami - RF architectures & digital signal processing aspects of digital wireless transceivers.
Райс весьма хорошо зделал, малаца. Не голая теория сплошная. Незами ещё ближе к практической реализации, но местами не разжевано.
Реализация в железе - там та еще херабора. Могу скинуть на фейкопочту реализацию блока восстановления символьной на VHDL.
Да я представляю, но тот же интерполятор проще будет описать на vhdl, если он будет состоять из блоков задержки, суммирования и тд, чем если он будет взят в виде готового блока симулинка, который хуй пойми как устроен и работает.
Алсо, управляется он не так, как собранные мной.
Пришли код на
Алсо, его же можно будет посмотреть в виде структурной схемы.
Аноны, запилил короче запись 8-битных регистров через I2C на Verilog. Покритикуйте что-ли стиль, реализацию. Нигде я там явно не обосрался?
http://pastebin.com/XdeNaL1A
Нет еще, тестбенч я наверно еще дольше чем сам модуль писать буду, а что не так? Адрес устройства 7-битный, а счетчик 8-битный. Можно было и через generate конечно сделать. Или ты о чем? Я писал по мотивам реализации с fpga4fun, там также примено сделано.
>Покритикуйте что-ли стиль, реализацию
Хуйня полная, говно собачье. Как ты будешь писать что-то сложнее 50 строк? А что-то быстрее i2c залупы? Реально говно. Буду писать все косяки в кучу пока не наблюю.
Сразу скажу. Да. твое говно будет работать. И будеть работать без ошибок и сбоев возможно.
1. асинхронная хуита. все должно работать от системного клока.
2. "negedge scl" это чо блядь за говно? negedge блядь? охуеть. Нет такого в реальности.
3. Блядь ну у тебя же автомат. вот же:
reg [2:0] phase; // 01 - проверка адреса устройства, 10 - запись адреса регистра, 00 - запись значения регистра
любой мудила поймет, что это автомат. ну и опиши его как классический автомат. В кварте ж даже шаблоны есть, ну еб твою мать.
4. module i2c_slave(sda, scl);
inout sda;
input scl;
Я верилог плохо знаю, но если на fpga4fun это работает, то тогда ок. Просто на VHDL такая конструкция с множественным присвоением без else не работает.
сука говно жопа моча. продолжение крч. палец соскочил на шифт
4. это чо за хуйня?
module i2c_slave(sda, scl);
inout sda;
input scl;
это 95 год! ты тогда еще может и не родился!
module i2c_slave
(
inout sda,
input scl
);
5. Форматирование вообще пиздец. Ты видел код настоящий? выбери стиль в нем и пиши все. BSD там например или еще чего.
вот это пушка:
end else begin
16 строка. нахуй оно в одну строку? строчек жалко? хуй разберешь потом жи
6. это чо за хуйня в 21 строке?
phase = 2'b01;
м? блокирующее? это вообще не должно компилироваться.
7, прижимаем sda???? прижимаем?
8. второй раз. phase - состояние системы. кодировать в нем дополнительную информацию и извлекать ей по частям хуево!
9. про условия. посмотри синтез этого блока. охуеешь. нельзя так бездумно проектировать ветвления. В данном случае это может работать. не спорю
10. спецификатор размера констант нужно использовать всегда!
bitcnt == 7 ??
11. хули параметр локальный? может тебе два говна таких понадобится?
module i2c_slave
#(
parametr I2C_ADR = 7'h27
)
(
inout sda,
input scl
);
12. для ЛОГИЧЕСКИХ операций используй ЛОГИЧЕСКИЕ операторы. Это подчеркивает их ЛОГИЧЕСКУЮ природу. алсо
логические : && || !
битовые : & | ~
13. а где сброс маня? вот ты включишь свое говно в каком состоянии будет phase? 3'b000 ? а ты уверен? А? кстати, нахуй 3 бита, если используешь 2?
14. кстати phase может стать 011, из-за метастабильности. что станет? все умрет?
ой лан заебался. задавайте ваши ответы котаны.
>задавайте ваши ответы котаны.
>1. асинхронная хуита. все должно работать от системного клока.
Тактируется по scl мастером, если I2С модуль тактировать оверсемл системным клоком, то я даже хуй знаю как это реализовать.
2. "negedge scl" это чо блядь за говно? negedge блядь? охуеть. Нет такого в реальности.
Поясни. Что не так?
3. ну и опиши его как классический автомат. В кварте ж даже шаблоны есть, ну еб твою мать.
Пока не разбирался, но чую что конкретно здесь будет сложнее и LE больше сожрет.
4., 5. это чо за хуйня?
Ну раз уж сказал, критикуйте ситль - ок. Хотя мне после СИ от этих begin end самому припекает.
6. проебал, да. Хотя квартус сожрал, не знаю как.
7. Лол, комментарии критиковать не просил.
>8. второй раз. phase - состояние системы. кодировать в нем дополнительную информацию и извлекать ей по частям хуево!
Хорошо, если если вместо 2-битового регистра сделаю два 1-битных, тогда норм? Или же сравнивать с конкретным значением всегда? Но тогда больше LE сожрется.
>9. про условия. посмотри синтез этого блока. охуеешь.
Ок, покажи как правильно. Могу предположить, 7-битный адрес надо задать как 8-битный со сдвигом влево на один бит.
10. Ок.
>11. хули параметр локальный?
Не принципиально, всегда можно переделать.
12. Ок.
>13. а где сброс маня?
Сброс при получении START последовательности от мастера
>нахуй 3 бита
Ок, моя ошибка.
>14. кстати phase может стать 011
Не умрет кончено, но сбой при записи будет.
Ну хоть тредик оживили, срачеки припекания, вот это все.
>задавайте ваши ответы котаны.
>1. асинхронная хуита. все должно работать от системного клока.
Тактируется по scl мастером, если I2С модуль тактировать оверсемл системным клоком, то я даже хуй знаю как это реализовать.
2. "negedge scl" это чо блядь за говно? negedge блядь? охуеть. Нет такого в реальности.
Поясни. Что не так?
3. ну и опиши его как классический автомат. В кварте ж даже шаблоны есть, ну еб твою мать.
Пока не разбирался, но чую что конкретно здесь будет сложнее и LE больше сожрет.
4., 5. это чо за хуйня?
Ну раз уж сказал, критикуйте ситль - ок. Хотя мне после СИ от этих begin end самому припекает.
6. проебал, да. Хотя квартус сожрал, не знаю как.
7. Лол, комментарии критиковать не просил.
>8. второй раз. phase - состояние системы. кодировать в нем дополнительную информацию и извлекать ей по частям хуево!
Хорошо, если если вместо 2-битового регистра сделаю два 1-битных, тогда норм? Или же сравнивать с конкретным значением всегда? Но тогда больше LE сожрется.
>9. про условия. посмотри синтез этого блока. охуеешь.
Ок, покажи как правильно. Могу предположить, 7-битный адрес надо задать как 8-битный со сдвигом влево на один бит.
10. Ок.
>11. хули параметр локальный?
Не принципиально, всегда можно переделать.
12. Ок.
>13. а где сброс маня?
Сброс при получении START последовательности от мастера
>нахуй 3 бита
Ок, моя ошибка.
>14. кстати phase может стать 011
Не умрет кончено, но сбой при записи будет.
Ну хоть тредик оживили, срачеки припекания, вот это все.
Я с твоего позволения не буду опять писать развернуто.
2. регистры в в любой реально плисе работают по положительному фронту.
8. это изменит описательную модель. Многие вещи в нашем мире можно описать по разному в разных случаях.
9. не. думать надо, чет лень уже.
отдельно.
Какой у тебя кристалл? чо ты эти LE пытаешься сэкономить? что-то типа <1к?
Программный код пишется не для машины, он пишется для читателя. В том числе и для тебя самого. Если ты не можешь достичь нужных целей понятным способом, то ты аккуратно, внимательно, с пояснением пишешь сложное решение и объясняешь, что оно тебе дает. И это уже требует повышенного внимания к временному анализу, ограничениям, портируемостью и всему такому.
Конечно это если тебе это нужно в дальнейшей работе и у тебя в планах стать гуру в программировании. Если нет, то вообще похуй.
>регистры в в любой реально плисе работают по положительному фронту.
Ты тралишь меня?
>не. думать надо, чет лень уже.
уже сделал, получилось конечно получше в плане количества LE
>Какой у тебя кристалл?
циклон на 10K, но это не важно, всегда стараюсь экономить ресурсы везде, где это возможно.
ну ты можешь мне не верить и посмотреть в синтезированную схему. Увидишь инвертор.
Потом можешь почитать документацию.
> всегда стараюсь экономить ресурсы везде, где это возможно.
короче ты этим не зарабатываешь. я уже понял.
В принципе навык безусловно нужный, но довольно редко.
Анончик, а сколько занимаешья верилогом? Каким еще программированием занимаешься?
Ну и в двух словах про отрицательный фронт поясни плз.
Давно не заходил, а тут такое оживление вдруг.
Сам контроллеро-холоп. Подумываю податься в плисо-боги.
>Увидишь инвертор.
Ну дак и что? Чем тебе "negedge scl" не понравился-то?
>короче ты этим не зарабатываешь.
Спасибо Кэп, да я Verilog начал ковырять несколько дней назад.
>нужный, но довольно редко.
А потом гроб, гроб, кладбище, пидр, новый КТС заказчику ты за свои деньги покупаешь.
>Типа блок в симулинке или про какой ацп ты говоришь?
Я говорю про Аналого-Цифровой Преобразователь, микросхема такая.
>>234689
>>234691
>phase = 2'b01;
>м? блокирующее? это вообще не должно компилироваться.
А что ты имеешь против блокирующего присвоения?
За каким-то лешим его же оставили в языке.
Если в одной конструкции begin-end переменная упоминается только один раз то оно работает точно так же как и не блокирующее, зато лишний символ печатать не нужно.
>12. для ЛОГИЧЕСКИХ операций используй ЛОГИЧЕСКИЕ операторы. Это подчеркивает их ЛОГИЧЕСКУЮ природу. алсо логические : && || !
Вот это полная хуита.
Ты на HDL-языке создаёшь схему, в ней по определению могут быть только бинарные операции. А у этих логических операций какой-то ебучий инверсный смысл, только путают.
>13. а где сброс маня? вот ты включишь свое говно в каком состоянии будет phase? 3'b000 ? а ты уверен? А?
Уверен, сама Альтера гарантирует.
>ну ты можешь мне не верить и посмотреть в синтезированную схему. Увидишь инвертор.
И чем он плох, в том случае если вся схема создана как negedge?
>>234679
>always @(negedge scl or posedge start)
>if(start) begin // start = 1, сработал триггер posedge start
Пиздец, конечно. У тебя триггер start в списке чувствительности, это значит что его выход заходит на тактовый вход твоего счётчика bitcnt. Как писали выше, крайне желательно, чтобы все триггеры тактировались одним синхросигналом.
Бывают исключения, но там нужно применять специальные меры.
>Типа блок в симулинке или про какой ацп ты говоришь?
Я говорю про Аналого-Цифровой Преобразователь, микросхема такая.
>>234689
>>234691
>phase = 2'b01;
>м? блокирующее? это вообще не должно компилироваться.
А что ты имеешь против блокирующего присвоения?
За каким-то лешим его же оставили в языке.
Если в одной конструкции begin-end переменная упоминается только один раз то оно работает точно так же как и не блокирующее, зато лишний символ печатать не нужно.
>12. для ЛОГИЧЕСКИХ операций используй ЛОГИЧЕСКИЕ операторы. Это подчеркивает их ЛОГИЧЕСКУЮ природу. алсо логические : && || !
Вот это полная хуита.
Ты на HDL-языке создаёшь схему, в ней по определению могут быть только бинарные операции. А у этих логических операций какой-то ебучий инверсный смысл, только путают.
>13. а где сброс маня? вот ты включишь свое говно в каком состоянии будет phase? 3'b000 ? а ты уверен? А?
Уверен, сама Альтера гарантирует.
>ну ты можешь мне не верить и посмотреть в синтезированную схему. Увидишь инвертор.
И чем он плох, в том случае если вся схема создана как negedge?
>>234679
>always @(negedge scl or posedge start)
>if(start) begin // start = 1, сработал триггер posedge start
Пиздец, конечно. У тебя триггер start в списке чувствительности, это значит что его выход заходит на тактовый вход твоего счётчика bitcnt. Как писали выше, крайне желательно, чтобы все триггеры тактировались одним синхросигналом.
Бывают исключения, но там нужно применять специальные меры.
> У тебя триггер start в списке чувствительности, это значит что его выход заходит на тактовый вход твоего счётчика bitcnt. Как писали выше, крайне желательно, чтобы все триггеры тактировались одним синхросигналом.
Ага, могу предположить, что ты говоришь например о следующей ситуации. Есть два триггера тактируемые клоком, при этом один меняет значение регистра, второй считывает его. Если допустим между триггерами будет рассинхрон, из-за того что клок на него подключен через некий элемент, который добавляет задержку по времени, то на достаточно высоких частотах второй триггер вероятно будет считывать фактически рэндомные значения регистра. Ну и наверно еще возможны какие-то негативные последствия. Так? Но если разобраться что приосходит - scl и sda это именно ноги плиски, которыми рулит внешний девайс на максимальной частоте в 400КГц. Стартовая последовательность - спад sda при высоком уровне scl, start выставляется в 1, срабатывает триггер posedge start, по которому инициируется значение счетчика. Возможное следующе событие - только спад scl, по которому уменьшается ранее установленное значение счетчика и собствнно все измненеия регистров далее идут только по сигналу scl, а по спаду sda в start всегда устанавливается 0. Короче триггер posedge start за весь цикл записи срабатывает только один раз при поступлении стартовой последовательности I2C, далее по спаду scl декрементируется счетчик битов либо переключение на следующую фазу, по фронту scl читаем значение бита от мастера и сравниваем с адресом устройства, либо формируем адрес и значение регистра. Если я ошибюсь - поправь меня. Собственно вовсе необязательно всегда использовать posedge clk, если конечно понимаешь, что делаешь.
5+ лет. Verilog, C, matlab.
>>234731
>КТС
эт чо такое?
>>234740
>Если в одной конструкции begin-end
В одном процедурном блоке always
>Вот это полная хуита.
ты нихуя не понял, из того что я написал.
>Альтера гарантирует.
альтера на fpga да, гарантирует. Но но это не единственная причина почему надо явно инициализировать сигналы и делать сбросы.
да и ты уверен, я уверен, а он может и не уверен... надо понимать что делаешь)
>Пиздец, конечно. У тебя триггер start в списке чувствительности, это значит что его выход заходит на тактовый вход твоего счётчика bitcnt. Как писали выше, крайне желательно, чтобы все триггеры тактировались одним синхросигналом.
>Бывают исключения, но там нужно применять специальные меры.
это асинхронный сброс. счетчик считает по scl
И в конце отдельно про negedge clk.
Схема логического модуля аппаратно так реализована, чтобы работать по положительному фронту. Там типа D-триггер на кмоп логике и вся фигня.
Так вот чтобы получить этот положительный фронт на триггере синтезатор вставит на клоковую цепь инвертор.
Вы ведь знаете про глобальные тактовые линии? Так чтобы проинвертировать сигнал его нужно вывести из глобальной линии на линию данных и подать на логический модуль. Дальше разные варианты: завести обратно, не заводить обратно, где этот модуль располагается физически, как много у этого нового клока абонентов...
В итоге это выливается в понижение стабильности сигнала самого по себе, а так же в несинхронность его прихода ко всем абонентам. Как следствие гонки и низкая максимальная тактовая частота работы.
Если этого не знать, то выглядит как магия и странные необъяснимые глюки. Например зависит работоспособность от компиляции к компиляции, от загруженности кристалла, от температуры.
Кстати знаете ведь про временной анализ? timequest, вся фигня.
5+ лет. Verilog, C, matlab.
>>234731
>КТС
эт чо такое?
>>234740
>Если в одной конструкции begin-end
В одном процедурном блоке always
>Вот это полная хуита.
ты нихуя не понял, из того что я написал.
>Альтера гарантирует.
альтера на fpga да, гарантирует. Но но это не единственная причина почему надо явно инициализировать сигналы и делать сбросы.
да и ты уверен, я уверен, а он может и не уверен... надо понимать что делаешь)
>Пиздец, конечно. У тебя триггер start в списке чувствительности, это значит что его выход заходит на тактовый вход твоего счётчика bitcnt. Как писали выше, крайне желательно, чтобы все триггеры тактировались одним синхросигналом.
>Бывают исключения, но там нужно применять специальные меры.
это асинхронный сброс. счетчик считает по scl
И в конце отдельно про negedge clk.
Схема логического модуля аппаратно так реализована, чтобы работать по положительному фронту. Там типа D-триггер на кмоп логике и вся фигня.
Так вот чтобы получить этот положительный фронт на триггере синтезатор вставит на клоковую цепь инвертор.
Вы ведь знаете про глобальные тактовые линии? Так чтобы проинвертировать сигнал его нужно вывести из глобальной линии на линию данных и подать на логический модуль. Дальше разные варианты: завести обратно, не заводить обратно, где этот модуль располагается физически, как много у этого нового клока абонентов...
В итоге это выливается в понижение стабильности сигнала самого по себе, а так же в несинхронность его прихода ко всем абонентам. Как следствие гонки и низкая максимальная тактовая частота работы.
Если этого не знать, то выглядит как магия и странные необъяснимые глюки. Например зависит работоспособность от компиляции к компиляции, от загруженности кристалла, от температуры.
Кстати знаете ведь про временной анализ? timequest, вся фигня.
>Если в одной конструкции begin-end
>В одном процедурном блоке always
уточню сам себя.
Да это не требования языка, что надо использовать одинаковое присвоение в блоках. Это рекомендация. Это нужно для более простого трактования написанного кода. Экономить символы и зарабатывать дурные привычки это хуевая затея.
Кстати еще пришло в головку.
Когда пишешь If и не пишешь else,то это вместо мультиплексора и триггера, которые есть в ячейке породит защелку которая будет хуево сказываться на быстродействии.
>КТС
>эт чо такое?
Комплекс техинческих средств. Хард заказчика, на котором выполняетя твой софт. Не экономишь на тактах и байтах, твой софт начинает тормозить, заказчит из бюджета проекта тратит бабло на новый хард, вместо того, чтобы выплатить тебе премию. Видимо не сталкивался, раз навык экономии считаешь редко нужным.
Это да, хард всегда свой.
Экономишь на тактах и байтах в ущерб понятности и структуре - не справишься с большими проектами. Типа на одной плате проц и 3 плис по 150к алм.
Видать ты просто никогда не сталкивался с большими проектами.
>на одной плате проц и 3 плис по 150к алм.
>Видать ты просто никогда не сталкивался с большими проектами.
Лол, ты представляешь себе софт и хард мобильного оператора на 100 миллионов абонентов?
Положил на лопатки. Сдаюсь.
Выходит сотовый оператор на 100 млн человек нанимает тебя, внештатного человека, писать под адски сложные, сверх быстрые системы. И ты это будешь писать один и считаешь, что сохранить лишний такт важнее надежности, а соблюдения структурирования и стиля излишества?
Или я что-то не так понял?
>Если я ошибюсь - поправь меня.
Да я сам малость затупил, оказывается это у тебя такой хитровыебанный сброс >>234767
>это асинхронный сброс. счетчик считает по scl
Если честно, не понял что ты расписал, но могу посоветовать сначала нарисовать желаемую схему и временные диаграммы её работы на бумажке, временные диаграммы надо рисовать как можно подробнее, со всеми возможными переходными процессами и много вопросов снимутся сами собой, и только мотом уже кодить, а после того как закодил посмотреть что получилось в rtl-вивере и сравнить со своей бумажкой. Муторно, зато дисциплинирует, нас в шаражке, где я учился, препод так делать заставлял, спасибо ему за это, сумел донести суть синхронного проектирования.
>>234767
>В одном процедурном блоке always
Верно глаголишь.
>Экономить символы и зарабатывать дурные привычки это хуевая затея.
Может ты и прав, конечно, но всё же.
>ты нихуя не понял, из того что я написал.
Да всё я понял. В топку логические операторы.
>Так чтобы проинвертировать сигнал его нужно вывести из глобальной линии на линию данных и подать на логический модуль.
Извини, но вот тут ты объебался.
Поставь инвертор на тактовом входе, откомпилируй проект и посмотри в чип планер. Я даже не поленился и сам сделал, на пик глянь.
Увидишь что инвертор физически ставится непосредственно перед тактовым входом. Актуально для Сыклона I и IV, на других не проверял.
>>234772
>Когда пишешь If и не пишешь else,то это вместо мультиплексора и триггера, которые есть в ячейке породит защелку которая будет хуево сказываться на быстродействии.
Это в том случае, если ты комбинационную логику пытаешься написать, по нашему называется триггерная схема, или проще говоря обратная связь в комбинационной логике. Крайне злостная штука.
Про быстродействие её не скажу, но могу запилить прохладную.
Как-то раз было у меня в схеме два автомата.
Один своим сигналом запускал второй, второй выполнял задачу, а после своим сигналом давал оповещение о том что задача выполнена, и всё заново. А автоматы эти были оба Мили, в которых, как известно, выходные сигналы зависят не только от состояния, как в Муре, но также и от входных сигналов.
И вот получается, что сигнал оповещения зависит от сигнала запуска, а сигнал запуска зависит от сигнала оповещения, получилась классическая петля в распределённой между автоматами комбинационной логике.
А проявлялось это в том, что сигналы на одном из автоматов через какое-то время работы срывались в автогенерацию.
Эту ошибку я отлавливал долго.
>Если я ошибюсь - поправь меня.
Да я сам малость затупил, оказывается это у тебя такой хитровыебанный сброс >>234767
>это асинхронный сброс. счетчик считает по scl
Если честно, не понял что ты расписал, но могу посоветовать сначала нарисовать желаемую схему и временные диаграммы её работы на бумажке, временные диаграммы надо рисовать как можно подробнее, со всеми возможными переходными процессами и много вопросов снимутся сами собой, и только мотом уже кодить, а после того как закодил посмотреть что получилось в rtl-вивере и сравнить со своей бумажкой. Муторно, зато дисциплинирует, нас в шаражке, где я учился, препод так делать заставлял, спасибо ему за это, сумел донести суть синхронного проектирования.
>>234767
>В одном процедурном блоке always
Верно глаголишь.
>Экономить символы и зарабатывать дурные привычки это хуевая затея.
Может ты и прав, конечно, но всё же.
>ты нихуя не понял, из того что я написал.
Да всё я понял. В топку логические операторы.
>Так чтобы проинвертировать сигнал его нужно вывести из глобальной линии на линию данных и подать на логический модуль.
Извини, но вот тут ты объебался.
Поставь инвертор на тактовом входе, откомпилируй проект и посмотри в чип планер. Я даже не поленился и сам сделал, на пик глянь.
Увидишь что инвертор физически ставится непосредственно перед тактовым входом. Актуально для Сыклона I и IV, на других не проверял.
>>234772
>Когда пишешь If и не пишешь else,то это вместо мультиплексора и триггера, которые есть в ячейке породит защелку которая будет хуево сказываться на быстродействии.
Это в том случае, если ты комбинационную логику пытаешься написать, по нашему называется триггерная схема, или проще говоря обратная связь в комбинационной логике. Крайне злостная штука.
Про быстродействие её не скажу, но могу запилить прохладную.
Как-то раз было у меня в схеме два автомата.
Один своим сигналом запускал второй, второй выполнял задачу, а после своим сигналом давал оповещение о том что задача выполнена, и всё заново. А автоматы эти были оба Мили, в которых, как известно, выходные сигналы зависят не только от состояния, как в Муре, но также и от входных сигналов.
И вот получается, что сигнал оповещения зависит от сигнала запуска, а сигнал запуска зависит от сигнала оповещения, получилась классическая петля в распределённой между автоматами комбинационной логике.
А проявлялось это в том, что сигналы на одном из автоматов через какое-то время работы срывались в автогенерацию.
Эту ошибку я отлавливал долго.
>это асинхронный сброс. счетчик считает по scl
>>234783
>Если честно, не понял что ты расписал
Ну да, у него он не будет асинхронным сбросом, потому что описан не правильно. Тут будет асинхронная предуставновка и это займет любые ваши лишние ресурсы.
Пример асинхронного сброса на пиках.
Синхронный сброс кстати будет работать чуть быстрее.
>Ну да, у него он не будет асинхронным сбросом, потому что описан не правильно.
Ну ок, опиши почему не правильно, и как будет правильно? Сброс должен генериться по условию START.
if(bitcnt == 4'h7) adr_match <= (sda == I2C_ADR[7]);
else if(bitcnt > 0 && sda != I2C_ADR[bitcnt]) adr_match <= 1'b0;
и посмотрел на схему, оказалось что все триггеры тактируются scl.
>Ну ок, опиши почему не правильно, и как будет правильно?
Ну это не то чтобы правильно. Это по другому чем у тебя. Более эффективно используется аппаратура.
if(start) begin // start = 1, сработал триггер posedge start
bitcnt <= 4'h8; // инициируем счетчик битов
phase = 2'b01; // переходим к проверки адреса устройства
end
Вот место описывающее сброс.
Нужно сделать чтобы значения сбрасывались в ноль. т.е. чтобы первое состояние phase было 2'b00, и сделать счетчик битов в другую сторону. Не 8:-1:1, а 0:1:7.
>чтобы первое состояние phase было 2'b00, и сделать счетчик битов в другую сторону. Не 8:-1:1, а 0:1:7.
Ага, понял, спасибо. Действительно выход start тогда подключается на CLR phase и bitcnt. Но I2C присылает сначала старший бит, а счетчик будет считать от младшего. Придется тогда корреткировать значение индекса битов, типа [4'h7 - bitcnt], или разворачивать в множество условий. А это опять задействование дополнительных ресурсов. Или есть другой вариант?
я может не очень хорошо подумал. Но ты можешь ведь все записать? Просто старший бит будет на месте младшего?
тогда можно на шине инвертировать порядок бит и все. При синтезе это сделается бесплатно.
Ну например есть
wire [7:0] A;
wire [7:0] B;
assign B = A;
надо инвертировать порядок бит на выходе
wire [7:0] A;
wire [0:7] B;
assign B = A; вот тут я не очень подумал надо проверить бы. Да и не очевидно на вид.
но вообще идея такая
wire [7:0] A;
wire [7:0] B;
assign B[7] = A[0];
assign B[6] = A[1];
ну в цикл завернуть надо, можно еще чего придумать.
>Но ты можешь ведь все записать? Просто старший бит будет на месте младшего?
Да, адрес и значение регистра пишем, а вот при проверке адреса устройства - просто сравниваются очередной пришедший бит и бит адреса определенного как localparam.
Вообщем пока сделал вот так http://pastebin.com/q8e3nh2c
по принципу assign B[7] = A[0]; в виде val_mem[4'h8 - bitcnt] <= sda;
И вроде даже дополнительных ресурсов не потребовалось.
>wire [7:0] A;
>wire [0:7] B;
>assign B = A;
Такую конструкцию квартус в что-то жуткое развернул.
Ну во-первых: хуй знает что у тебя там за Ария 5 такая, я сам всю сознательную жизнь на Сыклонах сидел.
Во-вторых: прописал ли ты констрейны? Может ты их не прописал и у тебя Квартус каждый раз разводит как попало.
Ты лучше покажи что в чип планере делается.
>>234873
У тебя разные регистры по разным фронтам тактового сигнала тактируются. Нахуй такие схемы.
И на трёхстабильный буфер посмотри, у тебя на его входе жёсткий ноль висит. А управляет им комбинационная схема, так тоже лучше не делать.
И тактовый сигнал, который scl, заходит на вход данных регистра старт, это тоже стабильно работать не будет.
Ты задачу изложи подробно, будет понятно как тебе помочь.
>Ты задачу изложи подробно
I2C slave только в режиме записи
>У тебя разные регистры по разным фронтам тактового сигнала тактируются. так тоже лучше не делать.
Да, так как по форнту scl происходит чтение sda, но после считывание последнего бита, при формировании ACK по спаду scl должно быть установлено значение sda ДО фронта scl.
>И на трёхстабильный буфер посмотри, у тебя на его входе жёсткий ноль висит. А управляет им комбинационная схема, так тоже лучше не делать.
Да, это как раз формирование ACK по спаду scl, если данные пердназначались для нас, до очередного фронта scl на sda необходимо установить 0, либо в high impedance, чтобы дать возможность другому устройству также установить 0.
>И тактовый сигнал, который scl, заходит на вход данных регистра старт, это тоже стабильно работать не будет.
Да, это необходимо для идентификации START последовательности - спад sda при высоком уровне scl, происходит это один раз за весь цикл записи. Да, I2C у меня работать будет макимум на 400кГц.
Да, если говоришь, "так лучше не делать", объясняй почему, в этом самая мякотка.
>Ну во-первых: хуй знает что у тебя там за Ария 5 такая, я сам всю сознательную жизнь на Сыклонах сидел.
Ну это как циклон 5. Архитектура такая же.
>Во-вторых: прописал ли ты констрейны? Может ты их не прописал и у тебя Квартус каждый раз разводит как попало.
Констрейн на клок с базовой нестабильностью. компилировал раз по 5 и то и другое чтобы в убедиться, что разводится одинаково. Разница не больше 1 МГц.
>Ты лучше покажи что в чип планере делается.
Тоже что и здесь >>234888. При использовании отрицательного фронта ставится инверсия на каждом триггере. Ну ALM вместо LE циклона 4, но это не важно.
>У тебя разные регистры по разным фронтам тактового сигнала тактируются
Потаму что частота уменьшается в два раза, так то у тебя есть время от нарастающего фронта до нарастающего, а так только до спадающего.
Ну а то что менее читабельно, это само собой.
>А управляет им комбинационная схема, так тоже лучше не делать.
Комбинационная логика это не триггер, у неё выход даёт дребезги и другие пички. Поэтому её нельзя заводить на входы чувствительные к таким вещам, например на тактовые или асинхронные входы. В том числе и на такие буферы, они у тебя от такого могут кратковременно переключатся, что, понятное дело, не желательно.
>Да, I2C у меня работать будет макимум на 400кГц.
Да частота тут роли особой не играет.
С чего ты решил что у тебя сигнал придёт сначала на тактовый вход, а потом на вход данных? Вдруг наоборот. Тут как повезёт. Потому таких схем нужно избегать.
А вообще тебе без нормального тактового сигнала не обойтись.
Эти твои scl, sda для этого не годятся.
Нужен тактовый сигнал хотябы раз в 10 побыстрее этого scl, тогда и код будет красивый и геморроя меньше.
Например так можно сделать твой триггер (код не проверял):
module Test(
inout Sda,
input Scl,
input C //тактовый сигнал
);
reg TStartStopQ;
wire FFrontSdaY, RFrontSdaY;
always @(posedge C)
begin
//синхронизируем сигнал sda для выделения спадающего и нарастающего фронтов
TSdaQ0 <= Sda;
TSdaQ1 <= TSdaQ0;
//триггер Старт-Стоп
if(FFrontSdaY & Scl) TStartStopQ <= 1'd1;
else if(RFrontSdaY & Scl) TStartStopQ <= 1'd0;
end
assign FFrontSdaY = !TSdaQ0 & TSdaQ1; //спадающий
assign RFrontSdaY = TSdaQ0 & !TSdaQ1; //нарастающий
endmodule
>У тебя разные регистры по разным фронтам тактового сигнала тактируются
Потаму что частота уменьшается в два раза, так то у тебя есть время от нарастающего фронта до нарастающего, а так только до спадающего.
Ну а то что менее читабельно, это само собой.
>А управляет им комбинационная схема, так тоже лучше не делать.
Комбинационная логика это не триггер, у неё выход даёт дребезги и другие пички. Поэтому её нельзя заводить на входы чувствительные к таким вещам, например на тактовые или асинхронные входы. В том числе и на такие буферы, они у тебя от такого могут кратковременно переключатся, что, понятное дело, не желательно.
>Да, I2C у меня работать будет макимум на 400кГц.
Да частота тут роли особой не играет.
С чего ты решил что у тебя сигнал придёт сначала на тактовый вход, а потом на вход данных? Вдруг наоборот. Тут как повезёт. Потому таких схем нужно избегать.
А вообще тебе без нормального тактового сигнала не обойтись.
Эти твои scl, sda для этого не годятся.
Нужен тактовый сигнал хотябы раз в 10 побыстрее этого scl, тогда и код будет красивый и геморроя меньше.
Например так можно сделать твой триггер (код не проверял):
module Test(
inout Sda,
input Scl,
input C //тактовый сигнал
);
reg TStartStopQ;
wire FFrontSdaY, RFrontSdaY;
always @(posedge C)
begin
//синхронизируем сигнал sda для выделения спадающего и нарастающего фронтов
TSdaQ0 <= Sda;
TSdaQ1 <= TSdaQ0;
//триггер Старт-Стоп
if(FFrontSdaY & Scl) TStartStopQ <= 1'd1;
else if(RFrontSdaY & Scl) TStartStopQ <= 1'd0;
end
assign FFrontSdaY = !TSdaQ0 & TSdaQ1; //спадающий
assign RFrontSdaY = TSdaQ0 & !TSdaQ1; //нарастающий
endmodule
>компилировал раз по 5 и то и другое чтобы в убедиться, что разводится одинаково.
Ну хуй знает. Может попозже сам попробую. По логике вещей всё норм должно быть.
>Тоже что и здесь
Здесь ничего нет, эта ссылка на мой пост.
Да, наверно буду все-таки перепиливать на внутрисистемный клок, принцип понятен.
>Комбинационная логика это не триггер, у неё выход даёт дребезги и другие пички. Поэтому её нельзя заводить на входы чувствительные к таким вещам, например на тактовые или асинхронные входы. В том числе и на такие буферы, они у тебя от такого могут кратковременно переключатся, что, понятное дело, не желательно.
Ага, то есть буфер надо только на триггер подключать? Вот собственно кусок кода assign sda = (bitcnt[3] & adr_match) ? 1'b0 : 1'bz;
тогда синхронно присваивать значение в какой-либо внутренний регистр и триггер на фронт повесить? Или как?
>сначала на тактовый вход, а потом на вход данных? Вдруг наоборот. Тут как повезёт.
Чем это обусловлено?
>Ага, то есть буфер надо только на триггер подключать?
Буфер должен управляться триггером.
>Вот собственно кусок кода assign sda = (bitcnt[3] & adr_match) ? 1'b0 : 1'bz;
>тогда синхронно присваивать значение в какой-либо внутренний регистр и триггер на фронт повесить? Или как?
Ну да. Надо этот sda пропустить через D-триггер.
sda на вход триггера, выход триггера на вход управления буфера.
>Чем это обусловлено?
Каждый раз проект компилируется по разному, и сигналы по плиске прокладываются по разному и время прохождения этих сигналов получается разным.
А если тактовый сигнал будет подключён только к тактовым входам триггеров можно быть уверенным что тактовый сигнал будет проложен по специальным тактовым цепям, а они очень быстрые, за счёт того что там мало элементов коммутации, и за счёт этого тактовый сигнал приходит на все триггеры почти одновременно.
>и за счёт этого тактовый сигнал приходит на все триггеры почти одновременно.
Спасибо за разъяснение, бро.
>Надо этот sda пропустить через D-триггер. sda на вход триггера, выход триггера на вход управления буфера.
Типа как на пикче? Вот только код получился мегастранный.
wire _sda;
assign _sda = (bitcnt[3] && adr_match);
reg __sda;
always @(negedge scl) __sda <= _sda;
assign sda = __sda ? 1'b0 : 1'bz;
Это норма?
Ну типа такого.
Можно и компактнее написать, без лишних переменных.
reg __sda;
always @(negedge scl) __sda <= (bitcnt[3] && adr_match);
assign sda = __sda ? 1'b0 : 1'bz;
Ага, понял. А чем обусловлена нестабильность выхода комбинационной логики?
Каждый логический элемент цепи вносит задержку, задержка у них разная. Зависит от класса скорости, но в общем можно сказать, что от технологии производства.
+ от длин цепей между элементами, что может отличаться от разводки к разводке. Анон выше упоминал об этом.
+ самое важное, что это все дерьмо зависит от температуры и ряда прочих внешних факторов
Проще вот этого хмыря глянь:
начиная с 1:01:30 и до конца
https://youtu.be/101az-mZFOA?t=1h1m27s
а после тут:
начиная с 26:10 и тоже до конца
https://youtu.be/uW8DPE6TRxM
Да и вообще, пощёлкай там по роликам, для общего развития.
Годные лекции, буду все смотреть, но фигово, что он на листочках рисует, интерактива не хватает для наглядности.
А объясните еще за разрадность. Я допустим хочу сделать FIR. Сформировал коэффициены, нормировал их так, что в сумме дают 1, привел к разрядности в 16 бит, так что в сумме дают 16'hffff, и если допустим разрядность входных данных также будет равна 16 битам, то разрядность выходных данных = [разрядность коэффициентов] + [разрядность входных данных] + 1 = 33 бита. Я все правильно понял? Как вообще округление применять? Например есть несколько каскадно стоящих элементов, выполняющих арифметические операции, каждый из которых повышает разрадность в два раза, но на выходе все равно ЦАП в 16 бит стоит. Как правильно поступать, накапливать разрядность, а потом просто 16 старших бит на ЦАП выводить, или после каждого элемента разрадность до 16 бит понижать, или еще как? Есть какие-то общие правила на этот счет? Вроде видел где-то формулу типа "разрядность на входе + log2(полоса на входе/полоса на выходе)", и вроде это только для фильтров, но почему именно такая формула - непонятно.
>накапливать разрядность, а потом просто 16 старших бит на ЦАП выводить
Ага, так и делай. Можно просто лишнее отбрасывать, можно округление добавить.
Не совсем верный совет.
т.к. ты использушь целочисленную арифметику, то очевидно у тебя коэффициент передачи >1.
т.е. чтобы привести коэффициент передачи к 1 ты должен поделить выход фильтра на максимум АЧХ фильтра. Это даст естественное усечение разрядности выхода до разрядности входа.
Да ты можешь отбросить разряды, это равносильно делению, просто получиться не так точно, но зато дешевле по ресурсам.
ЗЫ подход верный, все разрядности берешь из оценки по максимуму, усекаешь после вычеслений.
Зависит от того что тебе надо)
Для моих условий, деление это 0 проблем. Точность важнее ресурсов)
Есть другой вариант на самом деле.
Можно подобрать коэффициенты фильтра таким образом чтобы коэффициент усиления фильтра был близок к 2^n. Может придется расширить разрядность коэффициентов, порядок. ну короче понятно, повозиться в матлабе.
Потом сдвигом поделить на 2^n и получить близкое к 1 значение коэффициента передачи. ( на самом деле нужно получить немного меньше 1, чтобы не получить переполнения)
>Для моих условий, деление это 0 проблем. Точность важнее ресурсов
>Может придется расширить разрядность коэффициентов
А зачем заморачиваться с делением и коэффициентами? Можно-же найти наиболее подходящий множитель коэффициента усиления до степени двойки. Например, тот-же кордик дает 1.647 * 2487 = 4096.089. Дешево и сердито. Или я чего-то недопонял?
https://ru.m.wikipedia.org/wiki/Число_с_плавающей_запятой
Только нужны специальные блоки для таких чисел
Толсто
Плавающая точка дает больший динамический диапазон и точность данных, можно спокойно умножать делить нормировать. Но стандартные АЛУ процессоров и логика плис для этого не подходят, для этого созданы fpu- спец блоки для работы с такими данными.
И эпический оверкил для DSP, где все данные пришли с ЦАП и уйдут в АЦП конкретной разрядности. Даже запас по разрядности лучше чем использовать флоат
Черт, тогда нахера делают dsp с float? - не понимаю
Плавающая точка не дет точность. Она дает динамический диапазон. Для ких фильтра это не нужно, огромный перерасход ресурсов.
Но во всяких адаптивных алгоритмах это очень полезно. Например обращать матрицу при подавлении помех в mimo связи.
Насчет деления кстати. Кордик тупо имеет большую латентность чем деление, выигрыш ресурсов сомнительный при этом. Ну от кристалла зависит естессно.
Кстати плис с фп не за горами, готовимся.
Братик расскажи подробнее?
Она квантует сразу в фп? Но это игры с богом.
Мб там какая-то интерполяция стоит или другие предвычесления.
Или скорее всего просто преобразователь в фп, но это чушь. Тип ведь кастится в одну строку.
Крч непонятно.
>Еси ты такой умный, то объясни, нахуя целые линейнки dsp с фп у ti?
Спрашиваю про ацп, ты мне кидаешь бычку про дсп. Ват?
>Кордик тупо имеет большую латентность чем деление, выигрыш ресурсов сомнительный при этом.
Чет я не понял, зачем ты кордик с делением сравниваешь, и причем тут латентность.
Да никто тебе не говорит что ФП не нужно, просто чаще всего алгоритм ложиться на целочисленный ДСП, который быстрее выше и сильней при той же цене.
Ну деление с помощью кордика и деление напрямую делением, так сказать. Как lpm divide делает например, через умножения и вычитания.
> Кстати плис с фп не за горами, готовимся.
Чего? А это что?
https://www.altera.com/products/fpga/features/dsp/arria-v-cyclone-v-dspblock.html
MAC же, умножитель с аккумулятором
это не фп. фп блок будет в арии 10 и стратиксе 10. про ксайлинкс хз.
1 Как пайплайнить простые с точки зрения behavioral операци? Например, я готов делать сложение с latency в лишний такт, как это объяснить компилятору? Только честным описанием структуры со всеми переносами carry в два этапа и т.д.?
2. Нужна линия задержки. Если не создавать руками SRL16, синтезатор все сделает на 16 флип-флопах, или поймет, что можно и одним CLB в режиме SRL16 обойтись?
3. Если написать линию задержки из SRL16 и флип-флопов (для пайплайнинга, если вход и выход далеко друг от друга), синтезатор догадается, что флип-флопы и SLR можно менять местами для лучшего использования логики, ведь на результате это не отразится?
Как вкатиться в плис?
Колбаской
1, 2, 3 напиши код да попробуй засинтезировать, хули ты как не инженер? Да и про какой компилятор речь идет? Кроме того, у синтезаторов есть настройки, в том числе: использовать или нет SRL для линий сдвига.
>>234965
http://ru.aliexpress.com/item/EP4CE10-EP4CE10F17C8N-ALTERA-Cyclone-IV-FPGA-Development-Board-12-Accessory-Modules-Kits-OpenEP4CE10-C-Package-A/781548821.html?spm=2114.03010208.3.189.xcSBKB&ws_ab_test=searchweb201556_10,searchweb201602_1_10048_10047_10037_10017_10046_507_10045_10032,searchweb201603_7&btsid=69ad62c4-7618-4435-b833-4ac83eab68b4
http://ru.aliexpress.com/item/USB-Blaster-Download-Cable-Designed-for-ALTERA-Total-Series-FPGA-CPLD-Programmer-Debugger/636753274.html?spm=2114.03010208.3.1.xcSBKB&ws_ab_test=searchweb201556_10,searchweb201602_1_10048_10047_10037_10017_10046_507_10045_10032,searchweb201603_7&btsid=69ad62c4-7618-4435-b833-4ac83eab68b4
Я читал выборочно (на самом деле почти все после пары первых глав) вот это: Дэвид М. Харрис и Сара Л. Харрис - Цифровая схемотехника
и архитектура компьютера. Она же, но на английском digital design-and computer architecture. Охуенно вкатишься в то, что это такое вообще, с чем едят, и какая концепция написания кода в эту шнягу. Дальше скачай среду для альтеры или сасайлинкса (для последнего лучше ise, она как-то понятнее и интуитивнее, чем вивада, да и поддерживает старые небольшие fpga, но там не будет systemVerilog), бахни там счетчик, напиши ему юнит-тест, закажи дешевую платку, пока едет, напиши уарт и думай, что ты будешь делать с ней дальше, чтобы она не лежала бесполезно как черкаш на труханах. А то я в свое время малиновый пирог купил и теперь он мне на хуй не всрался.
После всего этого Сергиенко можно почитать, у него есть книга неплохая по VHDL и по ЦОС.
А тебе для каких целей?
Вивада унаследовала юзеринтерфейс от планахеда, я вкатился довольно быстро. Из плюсов хочу отметить на порядок более быструю отрисовку схематика, удобный дебаг с назначением цепей из того же схематика(ядра чипскопа + визуальная среда как в симуляторе), блочный дизайн вместо уебанского XPS, раздельный синтез для IP блоков. Зато полно каких то детских болезней и вылетов, нет старых серий - пиздец, хотя бы шестую оставили; констрейны на XDC вроде бы и плюс, но после их изменения устаревает синтез.
мимо 5 лет на ISE'е - кун
Я даже не знаю, стоит ли мне пытаться вкатываться, потому что выше шестой серии у меня не будет железок скорее всего. А отладочная плата так вообще на 3e.
А вот, кстати, про констрейны - где почитать? Я весьма смутно пока представляю, что это и как применяется. Знаю только как самый длинный путь посмотреть, а там же наверняка больше возможностей есть.
Ну и так-то для qpsk при использовании готового блока vco из симулинка возникает та же проблема.
Нашёл в книге по цос про фильтр Гильберта, там фчх на каких-то участках константа, пытаюсь сделать фильтр в матлабе - фчх линейно меняется на всем секторе частот. ЧЯДНТ?
Совсем не про xilinx, но гугли "TimeQuest для чайников". Там под квартус неблохо расписано. Примеры на верилоге, синтаксис констрейнов на tcl (правда, для ISE не актуально). По сути похожий инструмент есть и в ISE и в планахеде.
Если ты смотрел, из чего состоит логический элемент в ПЛИС, увидел бы триггер на выходе LE.
Пилю в квартусе, вот под эту шутку:
https://www.youtube.com/watch?v=wgHmtQfMBIk
Не бейте, лучше обоссыте.
На третьей пикче - что мне надо. В простом виде (т.е. с фиксированными интервалами, без нужного сейчас кейса) работает, что в видео можно наблюдать.
ттл-пидор-совкоёб-из-времени-и-частоты-треда
Разобрался. Спасибо.
In user mode, to use JTAG pins as regular I/O pins, tie the JTAGEN pin to a weak 1-kΩ pull-down. To use JTAG pins as dedicated pins, tie the JTAGEN pin to a weak 10-kΩ pull-up.
Сорян, проебался. Тогда получается, что можно прошить эти камушки только через высоковольтный программатор
не. у меня не срабатывает такая фишка.
сигнал ОЕ1 так же как и все звонится на vccio
пробовал 12в давать и на ое2 и на гклрн %) всё так же, дейвас не определяется.
значит всё гораздо сложнее
http://zx-pk.ru/threads/25998-programmator-mikroskhem-programmiruemoj-logiki(cpld)/page6.html
Но всё равно попробую, спасибо!
Планахед - недопиленная вивада. В планахеде тот же flow, что и в ISE - к примеру, написал/накидал исходников, симуляция, синтез, имплементация, вот это все. он быстрее отрисовывает нетлисты, не так тормозит на больших нетлистах, если вдруг откроешь такой. ну и тайминг анализ там более удобный, можно сразу отрисовать failing path, если после имплементации где-то проблемы.
> В планахеде тот же flow, что и в ISE - к примеру, написал/накидал исходников, симуляция, синтез, имплементация, вот это все.
Разве в виваде другой flow?
>симуляция, синтез, имплементация
Как это сделать средствами планэхеда? Я не пойму где этот функционал заныкан, то что в глаза бросается - только расстановка пинов
срян, я в понедельник тугой
>Разве в виваде другой flow?
Ну как минимум в виваде есть IP integrator с блочным дизайном, который посути заменил уебищный XPS.
>Как это сделать средствами планэхеда?
Запускаешь планахед не из ISE, создаешь проект ну и дальше по списку. Поидее, при запуске из айса на определенном этапе проекта, в планахеде откроется "набор"(layout) окон под конкретную задачу, как, например, расстановка пинов.
Блять, 3 года на ise от звонка до звонка пахал и не знал про такие фичи планэхеда.
Есть одна ПЛИСина и проц в ней, все работает, но ВСТАЛА проблема.
Запилил бутлоадер как образ блочной памяти, он запускается и начинает читать spi-флешку из которой грузилась сама плисина на предмет поиска специальной ключевой последовательности.
Найдя её он должен распарсить заголовок и скопировать все в память -> запустить.
Однако подводный камень вылез где не ждали:
promgen вместо того, чтобы сгенерировать такой образ
top.bit ---- 0x0
--------
app.bin ---- 0x80000
-------
преобразует app.bin в hex и ложит во флешку текстом! получается пикрелейтед.
Как пофиксить?
Исправил пикчу.
Алсо, использую команду
promgen -w -spi -c 0xff -p mcs -o top.mcs -u 0x0 top.bit -data_file up 0x80000 app.bin
Все вы, программисты, дебилы какие-то.
Алсо, мне надо в юнит-тесте симулировать отправку по uart команды, состоящей из 5 байт: 3 буквы сама команда, 1 байт - параметр, 1 байт типа контрольная сумма, которая считается как (сумма предыдущих 4 байт & 0xFF). Чтобы не делать это руками, решил написать на vhdl процедуру, которая на входе будет иметь строку из трех символов, байт в виде std_logic_vector и будет из всего этого говна считать контрольную сумму. Как я не ебался, у меня вместо контрольной суммы либо UU, либо XX. Либо вообще ошибки вылазят и симуляция не стартует. Как это правильно сделать? Пробовал приводить к unsigned каждый символ и складывать в unsigned переменную внутри процедуры, потом приравнивать контрольной сумме эту переменную, приведенную к std_logic_vector, и нихуя.
>которая считается как (сумма предыдущих 4 байт & 0xFF)
Нахуя 0xFF, он же на результат не влияет?
>насоветуйте годную книгу по vhdl
FPGA Prototyping by VHDL Examples - Xilinx Spartan-3 Version (Pong Chu)
>Имплаинг, оставить только младший байт от результата.
Ну так и выводи только младших 8 бит от результата, это же не си, прастигоспади
Ну я уточнил на всякий случай, понятно, что этому приравнять можно просто вектор восьмиразрядный. Алсо, проблему решил приведением (хотя это в C привидение, а тут хуй знает что) к виду std_logic_vector(unsigned(x)) и задержкой. В смысле, после приравнивания строки сигналу команды нужно было подождать один такт. В связи с чем вопрос: как обрабатываются тестбенчи в симуляторе? Я думал, что последовательно по строке, грубо говоря, прямо как работает код на том же C. Выходит, не так. А как тогда? Не так, как синтезируемые конструкции, не последовательно. Блять, какой-то прыжок изподвыподверта.
>>244787
Спасибо, гляну.
В тестбенче как раз таки последовательно, но каждое изменение входных данных должно быть привязано ко времени или событию (фронт клока/сигнала, определенный уровень или значение на шине итд)
Плисаны, посяните за регистры ввода-вывода.
Вот у меня есть в ПЛИСине несколько одинаковых блоков собранных generate.
В каждом из них 3 вегистра RO и 1 RW все 32 битные.
Сделал все в лоб, подключил это к шине и соснул на синтезе - триггеры кончились.
Прозреваю, что это надо делать при помощи двухпортовой памяти. Но если со стороны шины всё понятно, то со стороны девайса - нет.
Ткните ебалом на какой-нибуль пример.
Ответ прилип чот
Верилог уважаю, верилогоблядей - нет.
Не уверен что все правильно понял, но если твоих регистров в сумме наберется на килобиты, то, возможно, есть смысл и о двухпортовке задуматься. За примерами в доки к производителю. По внутренней шине - погугли, например, wishbone на опенкорсах. Там есть небольшие проекты по типу pci=>wishbone=>uart16550 или wishbone и какя-нибудь хуйня с регистрами.
>wishbone на опенкорсах.
Именно её и юзаю.
Тогда буду смотреть какой-нибудь езернет как сделан. Там должно быть много регистров.
SPI, например тоже оттуда, всё работает но там 1.5 регистра. Я делал примерно как там и соснул.
А, ну я вот так и сделал, всё заработало. Без ожидания такта нихрена не выходит.
>>244936
А какие альтернативы? Я в верилоге нихуя не разобрался с присваиваниями и типом "reg", мне коллега сказал, чтобы я забил на это болт и писал на vhdl, один хуй остальные на нем пишут.
Чем верилог лучше vhdl? Алсо, поясните за присваивания и типы.
>плиз
>Чем верилог лучше vhdl?
Как минимум выразительный простой синтаксис, хотя begin и end прямо из паскаля и вызывают отвращение.
>Алсо, поясните за присваивания и типы.
wire - провод, ему нельзя присвоить значение, только соединить выход с n входами
reg - Д-триггер - ячейка памяти на 1 бит. Ей можно присвоить значение синхронно (always @(...)) или асинхронно (ну знаешь, как у триггеров есть входы R/S)
1080x1920
Ну вот например изи задача для вката.
ПЛИС, представь себе, это не отдельные вентили, которые могут соединятся как угодно, а вполне определенная структура.
В первом приближении каждая ячейка ПЛИС - это программируемое комбинационное устройство (с 3-5 входами), подключенное к триггеру. Входы синхронизации всех триггеров подключены к единой (программируемой) сети.
В том числе и поэтому, крайне желательно, чтобы было как можно меньше разных тактовых сигналов. Также из этого следует, что формировать тактовый сигнал всякими триггерами и прочей логикой - тоже очень плохо.
Все это приводит к увеличению всяких задержек и неэффективному использованию ресурсов ПЛИС.
Ну и у графического ввода полно недостатков.
Про структуру я знаю. Просто после компиляции, если надо, смотрю, что у меня там насоединялось, и анализирую схему своими небольшими знаниями цифровой схемотехники. Увидел, например, что тактовый вход у триггеров в счётчике общий (не последовательно они соединены т.е.) - значит можно ждать хорошего быстродействия. С симуляцией еще не разбирался, пока проще осциллографом потыкать.
>крайне желательно, чтобы было как можно меньше разных тактовых сигналов. Также из этого следует, что формировать тактовый сигнал всякими триггерами и прочей логикой - тоже очень плохо.
Где и как его формировать тогда? Плодить корпуса, вынося наружу в виде рассыпухи?
>Входы синхронизации всех триггеров подключены к единой (программируемой) сети
>сети
Не к одному проводу же.
Вообще, CPLD перед началом работы видел как хорошую альтернативу отдельным логическим микросхемам, и это вроде подтверждается. Для большего использовать вряд ли буду.
>Ну и у графического ввода полно недостатков
Блоки на Верилоге написал, схема же только их все соединяет, мне так удобнее.
ттл-пидор-совкоёб
Я бы не сказал, что в vhdl синтаксис сложный. Begin и end меня вообще выбешивали всю жизнь, когда я узнал, что в C это говно заменили на фигурные скобки, он стал моим любимым языком. И по сей день такой, пожалуй. Жаль, что некоторые вещи типа работы со строками и парсинга на нем писать заебешься.
>wire - провод, ему нельзя присвоить значение, только соединить выход с n входами
Значение чего? Сначала я думал, что wire годится для комбинаторной логики, а reg для автомата с памятью. Потом я где-то видел такую фразу, мол, reg - это не регистр и не триггер ни разу, а тип сигнала. Нихуя не понятно. Триггер разве не надо описывать целой конструкцией? Как тогда на тип reg завести клок и сбросы? Или точно также описывается триггер, просто для него необходим тип reg, но сам по себе он в триггер не синтезируется? Wire для портов входа и выхода у модулей что ли нужен? Или только входа? А если на вход триггер надо поставить?
Коротко говоря - лютая асинхронщина.
>>245569
Глянь этого хмыря, для начала:
https://www.youtube.com/user/jack0ov/videos
Книги:
"Проектирование на ПЛИС. Курс молодого бойца (К. Максфилд, 2007).djvu"
"Проектирование систем на микросхемах программируемой логики.pdf"
"Схемотехника и средства проектирования цифровых устройств.pdf"
"ПЛИС фирмы Altera (Стешенко).djvu"
"основы проектирования цифровых схем.djvu"
"Проектирование цифровых устройств.djvu"
"Проектирование Цифровых Устройств - Хоуп.djvu"
"Угрюмов Е. Цифровая схемотехника.djvu"
"ЦИФРОВАЯ СХЕМОТЕХНИКА Гудилин.pdf"
"Цифровая схемотехника и архитектура компьютера.pdf"
"Цифровая электроника для начинающих (Хокинс).djvu"
"Цифровые системы. Теория и практика (Точчи).pdf"
>Begin и end меня вообще выбешивали всю жизнь
Я, тоже, неистовствую по этому поводу.
Слышал их можно как-то через `define переопределить, но у меня так и не вышло.
>>245576
>Значение чего? Сначала я думал, что wire годится для комбинаторной логики
Короч смоти.
wire - это полный аналог провода, он состояния хранить не может, только передавать от до.
reg - может синтезироваться как в комбинационную логику так и в триггер (регистр), тут как напишешь. В Верилоге, для меня, это был самый трудный момент: как так, пишем reg а на выходе получаем комблогику?
Вот такая есть в нём нелогичность, но это, пожалуй, единственный такой скользкий момент.
комблогика (мультиплексор):
wire хуй, говно, моча;
assign хуй = пизда? говно : моча;
reg Хуй;
always(*)
begin
if(пизда) Хуй = говно;
else Хуй = моча;
end
регистр (мультиплексор с триггером на выходе):
always(posedge злоебучий_клок or злоебучий_асинхронный_сброс)
begin
if(злоебучий_асинхронный_сброс) Хуй = 0;//типа асинхронный сброс
else
if(пизда) Хуй = говно;
else Хуй = моча;
end
Как видим в первом олвейсе вместо тактового сигнала стоит звёздочка, это значит, что наш триггер без клока, а раз он без клока, то это комблогика.
Во втором олвейсе клок указан, значит это полноценный триггер.
>Begin и end меня вообще выбешивали всю жизнь
Я, тоже, неистовствую по этому поводу.
Слышал их можно как-то через `define переопределить, но у меня так и не вышло.
>>245576
>Значение чего? Сначала я думал, что wire годится для комбинаторной логики
Короч смоти.
wire - это полный аналог провода, он состояния хранить не может, только передавать от до.
reg - может синтезироваться как в комбинационную логику так и в триггер (регистр), тут как напишешь. В Верилоге, для меня, это был самый трудный момент: как так, пишем reg а на выходе получаем комблогику?
Вот такая есть в нём нелогичность, но это, пожалуй, единственный такой скользкий момент.
комблогика (мультиплексор):
wire хуй, говно, моча;
assign хуй = пизда? говно : моча;
reg Хуй;
always(*)
begin
if(пизда) Хуй = говно;
else Хуй = моча;
end
регистр (мультиплексор с триггером на выходе):
always(posedge злоебучий_клок or злоебучий_асинхронный_сброс)
begin
if(злоебучий_асинхронный_сброс) Хуй = 0;//типа асинхронный сброс
else
if(пизда) Хуй = говно;
else Хуй = моча;
end
Как видим в первом олвейсе вместо тактового сигнала стоит звёздочка, это значит, что наш триггер без клока, а раз он без клока, то это комблогика.
Во втором олвейсе клок указан, значит это полноценный триггер.
>Коротко говоря - лютая асинхронщина
Ну дык, мне тут только частоту поделить да импульсы посчитать. Специально после счёта перед выводом на индикацию сделал задержку, чтобы все счётчики досчитали.
Дальше буду синт с ФАПЧ делать - вот там будет синхронный ДПКД.
Пикрелейтед - самый сложный модуль частотомера. Он работает, занял 50 LE, но можете меня обоссать, потому что от идеала инфа сотка, что далёк.
>Коротко говоря - лютая асинхронщина.
Я хуй, который пилит 24 частотомера.
Буквально вчера пытался собрать новый вариант и компилятор меня на хуй послал с моеё асинхронщиной.
Коротко говоря, по срабатыванию триггера мне нужно записать значение регистра в блочную память. Результат пикрелейтед.
Что теперь делать? Использовать выход триггера как ENABLE а писать по общей синхронизации?
> Использовать выход триггера как ENABLE а писать по общей синхронизации
This
А вообще, если уж хочется проверить что ты написал, то эту ошибку можно превратить в warning, последнюю строку без кавычек <> с пика добавь в файл констрейнов *.ucf
>эту ошибку можно превратить в warning, последнюю строку без кавычек <> с пика добавь в файл констрейнов *.ucf
Не, ну нахуй. зачем писать заведомый говнокод.
SystemVerilog впитал все лучшее из VHDL и при это остался верилогом. После релиза этого божественного языка битва языков окончена. Все. Там кстати вмето reg и wire теперь просто logic. Единственный минус, только 7-я серия у Xilinx. У альтеры с этим получше, помоему.
Вот все в тебе хорошо, железки делаешь, но форсить их везде заебал решительно. В каждом ебучем треде твое поделие.
И да, схематик для пидаров.
>только 7-я серия у Xilinx
Жадные проприентарщики. Искуствено создают ограничения, лишь бы бабла срубить.
>комблогика (мультиплексор):
Wire-переменной может быть присвоена только другая wire-переменная или порт, правильно? Она нужна только для соединения модулей что ли? А reg можно присвоить и reg, и wire, так?
Короче, для внутри модуля всем signal из vhdl можно сопоставить reg из verilog, за исключением тех, что заводятся на выход включенного в данный модуль модуля, например. Верно?
>>245656
Они вообще пидоры. В ISE нет SV, а Vivado не поддерживает небольшие плис. ISE еще и поддержки больше никакой не имеет вроде.
Вот тебе простой пример. Разумеется, такой код не имеет практического применения, он только показывает принцип.
>>245702
>Wire-переменной может быть присвоена только другая wire-переменная или порт, правильно?
Неправильно. wire можно присвоить комбинационное выражение. Прочти еще раз код того анона.
Сделал небольшую ошибку, вместо clk_div_8 написал clk_div_16
>Wire-переменной может быть присвоена только другая wire-переменная или порт, правильно? Она нужна только для соединения модулей что ли?
Да, но не только.
wire drisnya = govno & mocha;
Здесь провод drisnya является выходом элемента И.
А reg можно присвоить и reg, и wire, так?
Угу.
>Когда я попытался сделать сразу 10 мс из 50 МГц, Квартус меня нахуй послал. Пришлось делить.
>Что я делал не так?
А как ты пытался сделать 10 мс не деля?
Запилил пикрелейтед. Тактовая частота 50 МГц, шаг 1 кГц, аккумулятор 32 бита, занял всего 68 LE. По фронту с валкодера на соответствующем входе увеличивает или уменьшает частоту на шаг.
Но есть проблема: при вращении ручки в случайные моменты добавляется ошибка, некратная шагу.
Почему так?
Переписал.
>>245775
Триггеры и так были, но видимо фронты прыгали, поэтому ввёл одновибраторы по 200 мкс, теперь всё чётко.
Попробовал расширить аккумулятор до 64 бит - работает. При клоке 50 МГц и шаге 10 Гц относительная ошибка установки частоты 2.4х10-14.
Паром ссу. Как несложно, оказывается.
>>245825
Что скажете об этом варианте?
http://www.aliexpress.com/item/ALTERA-FPGA-CycloneII-EP2C5T144-Minimum-System-Development-Board-Learning-Board-FZ0697/1966348170.html
>waveshare altera
Оно в 2 раза дороже этих двух вариантов. Дорохо для нуба.
Второй Сыклон уже не в тренде.
Cyclone II и Cyclone IV, теперь видишь разницу?
Конечно, если ты не собираешься делать что-то быстрое на ПЛИС (например обработку сигналов), то этот вариант подойдет.
Посмотри: http://ru.aliexpress.com/item/xilinx-fpga-development-board-spartan6-xilinx-spartan-6-XC6SLX45-xilinx-board-xilinx-spartan-6/967529392.html
Также не забудь, что с этими платами тебе потребуется USB-Blaster.
Но я бы посоветовал брать плату с динамической памятью, например DE0-nano. Т.к. в FPGA все же мало блочной памяти для многих задач (например простейшей обработки видео).
Поясните тогда мне из ISE такую конструкцию (в code templates есть):
parameter ADDER_WIDTH = <adder_bit_width>;
wire [ADDER_WIDTH-1:0] <a_input>;
wire [ADDER_WIDTH-1:0] <b_input>;
wire [ADDER_WIDTH-1:0] <sum>;
assign <sum> = <a_input> + <b_input>;
Здесть wire присваивается выход сумматора. Он изменится вместе с изменением одного из входов? Что поменяется, если все wire в этом коде поенять на reg? D-триггер появится только если добавить код чувствительности к клоку?
Вообще, поглядел на verilog - он и правда куда легче и удобнее vhdl, с присваиваниями более-менее разобрался, осталось до конца в типы въехать, и можно начинать писать на нём.
Зайлинксовская ИСЕ и Вивада есть под прыщи и норм пашет.
Брат жив, зависимости нет. Правда я извращенец и пишу в КуТэ креаторе и собираю всё это говно Цмэйком.
Просто студия мне не нравится. Она выглядит чуть лучше блокнота. Подсказки? - хуй ты нюхал!
Только убогая подсветка синтаксиса.
Вот та часть, что отвечает за сборку верилога,
но там еще куча вспомогательных модулей, загрузчик и прошивка.
Суть в том, чтобы отслеживать изменения в коде загрузчика и пересобирать образ памяти по необходимости.
Если меняется прошивка - пересобирать битстрим.
Могу на гитхаб проект залить
Сажа прилипла
Спасиб
Для макета планирую использовать сд-карту. На сколько реализуемая задача?
Самое сложное тут подключить к ПЛИС 32 гига памяти, таких девбордов не много.
А так, ваще на легке, тут даже арм справиться
Ненене, Девид Блейн. Никаких процессоров. Контроллер SD должен быть полностью на логике. Причем SPI режим не подходит по скорости. Нужно UHS-II. Кто-то делал подобное на FPGA?
>Самое сложное тут подключить к ПЛИС 32 гига памяти, таких девбордов не много.
С ддр как раз все более менее понятно. А вот с ПЗУ куча вариантов
https://www.youtube.com/watch?v=WnmWHj7p0Z0
Но я сжёг плисину, уронив землю щупа осциллографа на плату, поэтому вопрос: сколько LE уйдёт на обоссаный ФНЧ порядка так эдак 10-го с разрядностью 12 бит? Денег мало, но нашёл на Али плату за 1к с самым простым вторым циклоном на 4к элементов, думаю, влезет ли в неё фильтр и сколько ещё останется на приёмник
Смотря как сделаешь.
Мы же не знаем, какое тебе требуется быстродействие.
Комбинационный умножитель очень большой, поэтому если ты сделаешь его на LE, он мало того что займет много LE, так еще и медленным будет. Поэтому в FPGA имеются готовые умножители, в EP2C5 есть 13 умножителей 18х18 разрядов. Сколько тебе потребуется умножителей для твоего фильтра?
А так же, LE в втором циклоне и четвертом отличаются, у LE четвертого вроде больше возможностей.
Возьми лучше четвертый циклон, как я советовал выше, всего лишь на 170 рублей дороже.
http://ru.aliexpress.com/item/xilinx-fpga-development-board-spartan6-xilinx-spartan-6-XC6SLX45-xilinx-board-xilinx-spartan-6/967529392.html
>Смотря как сделаешь.
Пикрелейтед. На входе АЦП, сигнал с которого перемножается с сигналом с перестраиваемого DDS, затем децимируется, фильтруется и преобразуется в аналоговый. Получается классический приёмник прямого преобразования, только в цифровом виде.
>Мы же не знаем, какое тебе требуется быстродействие
От фильтра требуется обрабатывать НЧ сигнал с частотой дискретизации не выше 50 кГц. Задержка побоку. Разрядность - 10..12 бит.
>Поэтому в FPGA имеются готовые умножители
В курсе. Вопрос в том, что их не сильно много, и
>Сколько тебе потребуется умножителей для твоего фильтра?
- я не знаю, лол. Вот и хотел спросить, как прикинуть количество коэффициентов фильтра, а следовательно и необходимых ресурсов, исходя из требуемых характеристик.
>Возьми лучше четвертый циклон
Заказал только что эту плату попутно недоумевая с названия в ссылке и успев обосраться, не разглядев поначалу флешку.
Частота дискретизации ФНЧ получается в пару тысяч раз меньше тактовой. Можно одно умножение хоть за 20 тактов делать. Для такого ФНЧ хватит одного умножителя. Даже микроконтроллеры с таким справятся..
А как ты себе представляешь дециматор? Дециматор это тоже ФНЧ, который наверняка окажется побольше.
DDS - таблицей тут не выйдет сделать большую разрядность, целесообразно взять библиотечную мегафункцию (IP core), NCO CORDIC кажется называется.
Советую попробовать все это смоделировать в симулинке, в нем можно из готовых блоков нарисовать всю схему и посмотреть получаемые спектры.
Тут наверное мало людей с опытом разработки устройств ЦОС. У меня такого опыта тоже почти нет.
В НИИ, в котором я работаю, относительно недавно взяли работу по разработке подобного приемника, хотя раньше подобным не занимались.
Вот теперь я почти в одиночку делаю этот приемник, и совета спросить почти не у кого.
Сам делаю нечто подобное. CORDIC сам делал, CIC взял на OpenCores, FIR тоже сам делаю - один множитель, линия задержки на RAM.
И что с того, что для CIC не нужны умножители? Он от этого проще становится?
Вот по примеру на который ты ссылаешься получается коэффициент усиления фильтра 162 дБ. Неслабо? Получается там требуются 12+27 = 39 разрядные сумматоры.
Или ты можешь сказать где можно отбросить разряды? Можно какие-то разряды отбросить вроде бы, но не все так просто. И все равно получается приличная разрядность.
И нахрена нужен компенсаторный фильтр, если после все равно ставишь ФНЧ?
>FIR тоже сам делаю - один множитель, линия задержки на RAM.
>>246645
>ФНЧ порядка так эдак 10-го
Анон из треда частоты и времени тут явно хотел IIR поставить, который намного менее требователен к ресурсам, чем FIR.
>Или ты можешь сказать где можно отбросить разряды?
Почитай вот здесь http://read.pudn.com/downloads163/ebook/744947/123.pdf
>however, truncation or rounding may be used
at each filter stage reducing register widths significantly
>И нахрена нужен компенсаторный фильтр, если после все равно ставишь ФНЧ?
Это и есть ФНЧ - только он еще АЧХ выравнивает, поэтому коэффициенты нужно специально рассчитывать
>Анон из треда частоты и времени тут явно хотел IIR поставить
Лол, вот тут тебя переполнение разрядности свойственное для IIR не смущает
>намного менее требователен к ресурсам
После дециматора на один семпл приходится куча тактов, дял FIR достаточно одного множителя и одного сумматора ну и еще немного LE.
Поясните плз за хендшейк.
Нахуя это вообще нужно? Особенно нихуя не понял про тот случай, когда valid и ready выставляются одновременно.
Мониторил илой AXI4 от интерконнекта до ядра DDR - везде встречался только первый вариант, когда мастер выставляет valid, через несколько тактов слейв выставлял ready и оба сигнала уходили в низкий уровень
Вангую, что все эти случаи - следствие асинхронного взаимодействия.
1. Мастер готов предоставить данные раньше чем слейв готов их прочитать.
2. Слейв готов считать данные раньше чем мастер готов их предоставить.
3. И мастер и слейв оказались готовы одновременно.
Что-то похожее есть в I2C но там слейв линией клока может управлять если не готов данные читать. А здесь отдельная линия.
в альтеровском авалоне такая же штука.
Честно я не вижу сложности. задай дополнительные вопросы.
Нужно это для контроля потока данных.
если у тебя обработка не синхронная с потоком, то тебе нужно останавливать конвеер.
или вот например если тебе нужно данные делить на пакеты и вставлять заголовки, то нужно останавливать поток данных.
Механизм valid/ready позволяет делает это и еще много чего.
Код на vhdl переносим?
Есть ли что-то типа бесплатных либ под плис, не на очевидном си?
Ip-коры были придуманы для покупки?
Если я у Арма куплю ядро, они мне дадут некие файлы, и я смогу на плис развернуть ядро?
>Код на vhdl переносим?
пиздец, я его надух непереношу, дерьмо это
>Если я у Арма куплю ядро
если у тебя дохуя денег, отдай их лучше мне, больше пользы будет
>Код на vhdl переносим?
Скорее да, чем нет. В каждой ПЛИСине есть определенный набор встроенных модулей типа PLL, DSP, и прочего говна Вот для их использования предопределены модули и они переносимы только в пределах семейства.
>Есть ли что-то типа бесплатных либ под плис
opencores.org
>Ip-коры были придуманы для покупки?
Проприетарщина, да.
>Если я у Арма куплю ядро, они мне дадут некие файлы, и я смогу на плис развернуть ядро?
Жирно слишком АРМ тебе. На том же опенкоресе полно процессоров. В частности видел Amber - открытая реализация набора команд Cortex-M3. Сам не щупал, для моей задачи он слишком жирен, сам пилю на altor32.
Алсо.
>они мне дадут некие файлы, и я смогу на плис развернуть ядро?
Вцелом так оно и работает.
>Если я у Арма куплю ядро, они мне дадут некие файлы, и я смогу на плис развернуть ядро?
Для такого по моему проще отдельный микроконтроллер поставить или взять Xilinx Zynq или Altera SoC какие-нибудь.
Например, какой-нибудь четырехъядерный Freescale iMX6Q на 1ГГц стоит всего лишь 50...60$. У microblaze, кстати, на virtex-7 максимальная тактовая 320МГц.
Часто проще и удобнее внешний процессор использовать, этот же процессор тогда сможет ПЛИС конфигурировать.
Спасибо, но я свой вопрос подводил к вопросу о разработке всяких чипов/мк в РОССИИ. На плис разработать логику, иметь n исходники, и эту логику развернуть на всяком кристалле. Арм взял для примера, понятно, что оно если и влезет, то займет почти все пространство плис
Что из себя представляет защелка?
Я правильно понимаю, что если в машине состояний в одном из ее состояний написать:
state1: begin
if (wire1==1) begin
reg1<=1;
state <= state2;
end
end
То мы получим эту самую защелку, т.к. не указали else?
Защелка это триггер с статическим управлением (по уровню), см. картинку.
Архитектура FPGA предполагает использование триггеров с управлением по фронту, хотя бы потому что они имеются на выходе каждой LE.
А триггеры со статическим управлением мало того что займут два LE, так еще и будут находится в неопределенном состоянии после включения. И синтезатор может неправильно посчитать задержки, т.к. задержки с триггерами со статическим управлением труднее считать.
>Я правильно понимаю, что если в машине состояний в одном из ее состояний написать:
Нет, если ты делаешь это по фронту клока, то никаких триггеров со статическим управлением не образуется.
Добра тебе! Можешь посоветовать какую альтеру купить на али с перспективой наебенить эмулятор 8086.
Один процессор сам по себе влезет в практически любую FPGA. Но тебе ведь захочется клавиатуру, видео, памяти побольше.
Для такой задачи основной критерий - наличие микросхемы динамической памяти, а такие платы на али часто дороже плат от нормальных производителей.
Советую что-то вроде http://store.digilentinc.com/arty-board-artix-7-fpga-development-board-for-makers-and-hobbyists/
Ясно, защелка это асинхронный RS-триггер, если по русски.
На плисоводских форумах столько хайпа по поводу быдлокода под плис. Но что-то у меня все норм работало до 200 МГц. Выше просто не было потребности заходить. Единственное правило, которого я придерживался - не использовал ассинхронщину.
Но всё же хочется познать более глубже все тонкости ПЛИС. Но натыкаюсь на такой момент, что на работе мои сырцы вообще не смотрят. Главное, чтоб тесты проходили, логика соответсвовала ТЗ, а как я там все сделал никого не ебет.
Чтение чужих исходников тоже не особо помогает. Все как-то по разному пишут.
Да ещё и работает значительно медленнее.
>Ясно, защелка это асинхронный RS-триггер, если по русски.
По моему защелкой называют еще и триггеры со статическим управлением (т.е. по уровню, а не по фронту), см. картинку.
>Но всё же хочется познать более глубже все тонкости ПЛИС. Но натыкаюсь на такой момент, что на работе мои сырцы вообще не смотрят. Главное, чтоб тесты проходили, логика соответсвовала ТЗ, а как я там все сделал никого не ебет.
Все то же самое, к тому же смотреть почти некому.
Мне помогает рисование на бумаге блок-схемы устройства, иногда вплоть до отдельных мультиплексоров. Примерно так: http://www.kit-e.ru/assets/images/1011/87_5.jpg
Такой подход помогает минимизировать устройство.
>По моему защелкой называют еще и триггеры со статическим управлением (т.е. по уровню, а не по фронту), см. картинку.
У тебя на картинке синхронный RS-триггер.
Не понимаю как он может управляться по уровню? Состояние на входах S и R будет учитываться по фронту сигнала на входе С
Или ты меня так странно траллишь или ты программист по специальности.
Нет, оно в этой схеме учитывается не по фронту, а в течение всего времени действия сигнала на входе С.
Класификация триггеров.
1) По логической функции - RS, T, D, JK
2) По способу записи информации - асинхронные, синхронные, универсальные.
У асинхронных триггеров информация записывается сразу при поступлении сигнала на информационные входы.
В синхронных триггерах информация записывается только при наличии разрешающего сигнала.
Универсальные - могут работать в качестве синхронных и асинхронных.
3) По способу управления - со статическим управлением и с динамическим.
Триггеры со статическим управлением воспринимают сигнал на информационных входах в течение всего времени действия разрешающего сигнала.
С динамическим управлением - воспринимают сигнал на информационных входах только при изменении разрешающего сигнала.
С 0 на 1 - по переднему фронту, с 1 на 0 - по заднему фронту.
Из асинхронного RS-триггера можно сделать синхронный D-триггер со статическим управлением: S = C & D, R = C & !D
А теперь представь, что нужно сделать из таких триггеров регистр сдвига: reg = (reg << 1) | input_bit, который будет срабатывать при подаче тактового сигнала.
Или попробуй представить T-триггер со статическим управлением.
Современные триггеры с динамическим управлением делают из двух триггеров со статическим управлением, как-то так: http://digitalchip.ru/uploads/2011/09/t_trigger_onlogic_t.gif При С=0 информация записывается в первый триггер, при С=1 во второй.
>Современные триггеры с динамическим управлением делают из двух триггеров со статическим управлением, как-то так: http://digitalchip.ru/uploads/2011/09/t_trigger_onlogic_t.gif При С=0 информация записывается в первый триггер, при С=1 во второй.
Хер там был.
То что у тебя по ссылке это, так называемый двухступенчатый триггер, собранный из двух синхронных со статическим управлением.
У триггера с динамическим управлением схема пикрил.
А вообще вот чувак пояснил за триггеры по хардкору:
https://youtu.be/i1_VdJOMStE
https://youtu.be/JY7rmZoaq8Y
https://youtu.be/uW8DPE6TRxM
Добавлю что так выглядит Д-триггер собранный на логических элементах, а в реальности эта схима ещё сминимизирована на уровне транзисторов.
Этот твой авторитетный чувак несет чушь. То что он называет двухступенчатыми триггерами ими не является.
Да, я согласен что схему с запрещающими связями, которую ты привел, нельзя отнести к двухтриггерным master-slave схемам, но двухступенчатый master-slave триггер от этого не перестает иметь динамическое управление.
В качестве примера: http://ee-classes.usc.edu/ee459/library/datasheets/sn7472.pdf аналог К155ТВ1.
Советую лучше почитать http://golibgen.io/view.php?id=1287528
>>249027
Согласен.
>То что он называет двухступенчатыми триггерами ими не является.
А чем же они являются?
>но двухступенчатый master-slave триггер от этого не перестает иметь динамическое управление
Под динамическим управлением подразумевается как раз работа по фронту. В двухступенчатых сначала по уровню С одна ступень срабатывает, потом по другому уровню С другая ступень, о фронтах тут речи не идёт.
Вот тут посмотри:
http://bookfi.net/book/488525
На рис 41 обрати внимание.
Циклон 4 покупай
de0-nano
Рассчитать уровень сигнала в децибелах. Нужен логарифм по основанию 10, $clog2 не подходит же.
Очевидно, что это должен быть либо жирный микроконтроллер, который потянет линух, либо SOC типа цинка, так же с поднятым линухом.
Сидюк, полагаю, лучше взять с USB-интерфейсом?
Сложно ли поднять линух? Сложно ли написать необходимый драйвер?
О, бро. Это изотерическое траханье.
Есть пару способов, зависит от точности что тебе нужна.
таблица и/или метод апроксимации сплайнами
Хорошо алгоритм ложиться на флоатпоинт, считаешь мантису апроксимацией, експаненту таблицей... профит
Возможно ли заставить работать дрова из комплекта USB-DVD которые например написаны под убунту?
>Возможно ли заставить работать дрова из комплекта USB-DVD которые например написаны под убунту на эмбедерском линухе
быстрофикс
Как быстро это надо сделать? Если очень, то вот в порядке убывания сложности
1) IDE CDROM, ваше легко программировать
2) Sata, сложнее но нужны трансиверы, а это дорого
3) USB Host будет анриал реализовать в HDL, но можно глянуть на SoC
Ну вообще я S meter хочу сделать, то есть фактически 10 значений нужны. Наверно действительно таблица нужна, по которой проверять вхождение значения в диапазон. Но блин даже ее просто синтезировать используя заднную разрядность я так понимаю не получится? Проще отдельно вычислить?
10 штук... Да просто в лоб напиши кучу if - else.
Не, ошибка про передоз
Вот с памятью компилятор может попробовать решить этот трабл... но чаще всего это выливаеться в часы компиляции и все равно передоз
Может есть какие статьи по линуксу для железячника-ньюфага в этих ваших пингвинах? Хотя бы обзорного плана, дабы понять как вообще работает загрузчик, какие действия надо осуществить с дистрибутивом линуха, чтобы он заработал на данной аппаратной платформе
Essentially for AXI VALID/READY handshaking is this:
The slave asserts READY when it can accept new transfers (VALID doesn't have to be asserted for this).
The master asserts VALID when it has something to transfer (READY doesn't have to be asserted for this).
A master can't wait with asserting VALID until a READY is asserted since the slave can wait for VALID before asserting READY.
If the master waits for READY, this can create a deadlock where both master and slaves waits for each other to assert the signal.
When both READY and VALID is asserted so it the transfer happening.
There are some requirements on the VALID.
VALID can not be deasserted after being asserted except when a transfer is happening (READY active).
The slave can withdraw READY at any time, however the cycle when both READY and VALID is asserted is still a valid transfer and the slave has to accept it.
>В сообщении присутствует слова из спам-листа
Ах да, бранч mimimac_no_fifo
Я конечно не шибко спец, но могу предположить. За один такт возможно только одна операция синхронного чтения-записи. Ты же за счет синтеза через for собираешься делать сразу несколько операций. Поэтому генерятся триггеры вместо SYNC_RAM.
Точно не в этом дело.
Рядом лежит файлик wb_dp_ram.v там такой же принцип и синтезируется без вопросов.
Алсо, дело в том что весь этот фор раскрывается в одно действе и нужен только для параметризации.
Похуй, других идей нет, выпилю всю универсальность и попробую в лоб, может какие мысли появятся.
>Рядом лежит файлик wb_dp_ram.v там такой же принцип и синтезируется без вопросов.
Я кончено хз, но возможно там генерится например двухпортовая память. Ну подумай сам, если WORD_WIDTH задать допустим в 1024, как можно за один такт фактически всю память считать, а еще при этом перезаписать другим значением.
А попробуй памяти задать атрибут ram_style = "block", хотя вряд ли поможет. Ну и ширину шины данных пробуй менять (не больше 32 бит для одной BRAM, например).
Если ты хочешь разложить память на разные клоки, то вместо signal память надо описывать как shared variable.
Чет я даже не обратил внимания, что там Верилог. Ну ладно, ебись сам тогда.
>>249990
Ясно, собственно в сорцы заглянуть слишком обременительно для вас оказалось, не стоило и пытаться, а именно там есть:
>parameter WORD_SIZE = WB_DATA_WIDTH/WORD_WIDTH;
И не более, хотя я не уверен, будет ли в спартане и 64 работать, но всё же 32 точно собирается в соседнем модуле
>// ( RAM_STYLE="BLOCK" )
>reg [WB_DATA_WIDTH-1:0] mem[MEMORY_CELLS_NUMBER - 1:0];
Уже всё указано
>>250007
Собственно и ебусь, но нахуй твой паскаль послал другой хуй.
>Ясно, собственно в сорцы заглянуть слишком обременительно для вас оказалось, не стоило и пытаться
Я заглядывал, но по делу ничего подсказать не могу.
>попробую в лоб, может какие мысли появятся.
Это очень хороший вариант, особенно если возникнет необходимость перехода на другие ПЛИС.
По моему желательно описывать память так, чтобы ее можно было сразу заменить на сгенерированную core genrator-ом (или мегафункцию на альтере).
>выпилю всю универсальность
А вот это не обязательно, в верилоге для такого есть оператор generate.
Я вообще хз где исходники твои лежат, дал-бы ссыль прямую. Не все знаешь-ли знают "того анона-из-времени-и-частоты-треда" следят за его исходниками.
Ну есть же ссыль на гитхаб на пике, прости, не догадался продублировать текстом.
только не говори, что не умеешь переключать бранчи
>>250040
> Я заглядывал, но по делу ничего подсказать не могу.
И на том спасибо.
> По моему желательно описывать память так, чтобы ее можно было сразу заменить на сгенерированную core genrator-ом (или мегафункцию на альтере).
Вообще не знаю что это такое. Я как саму студию открыл, так и сразу пошел гуглить, как собирать cmake-ом, слишком убого.
Открываю, только чтобы посмотреть шаблоны кнопка с лампочкой
Алсо после написания "в лоб" оно возьми и заработай, только теперь модуль приёма надо перепиливать, но лучше так.
>Я как саму студию открыл, так и сразу пошел гуглить, как собирать cmake-ом, слишком убого.
Нет, это не относится к "студии" или к графическому интерфейсу, по крайней мере для альтеры.
У альтеры мегафункции - это всего лишь разнообразные параметризуемые модули, такие как PLL. Как у xilinx это вроде бы называется примитивами.
Для мегафункций у альтеры есть графический конфигуратор, которым никто не заставляет пользоваться.
CMake конечно неплохая штука, но тут целесообразно использовать Tcl. Не знаю как у xilinx, но у альтеры сборка проекта на Tcl пишется в несколько строк.
Я думаю можно взять два счётчика тактируемых разными не кратными частотами и в момент когда нужно получить рандомное число поделить или какое другое действие значение одного счётчика на значение другого.
[Timing 38-282] The design failed to meet the timing requirements. Please see the timing summary report for details on the timing violations.
Что делать? Я раньше с таймингами не связывался. Вообще не знаю что тут ковырять
Проект так то работает. Но я чувствую, это очень хуёво.
Total Hold Slack?
Гугли TimeQuest для чайников. В свете того, что в виваде такой же синтаксис для скриптов констрейнов, должно быть понятно. Ковырять надо Open implemented->report timing. gui выведет тебе проблемные цепи в списке, плюс по каждой можно схему отрисовать. Короче, инфы для анализа хватит, лол
Твоя схема не может работать на той частоте, которую ты указал. Либо оптимизируй схему, либо понижай частоту.
Приехало. В такой всратой коробочке и с немного погнутыми штырями.
File -> Convert Programming File -> выбираешь тип флешки, указываешь .sof файл и конвертируешь.
Tools -> Programmer -> выбираешь режим Active Serial Programming, полученный .pof файл и программируешь.
Как-то так, вроде не напутал. Схему платы хотя бы нашел? А то мало ли что китайцы навыдумывали.
Вообще-то при разработке устройства чаще прихоится загружать конфигурацию в FPGA напрямую, минуя флешку, т.к. это намного быстрее.
>>250451
Вот эта частота и прописалась в созданном .ucf файле.
https://ru.aliexpress.com/item//967529392.
>>250699
Стирание происходит, а запись прерывается в некоторый момент.
При конвертировании можно выбрать EPCS16, но у меня на плате стоит M25P16. Неужели память не та?
>Схему платы хотя бы нашел?
Можно спросить у китайца. А что на схеме смотреть надо?
>Вообще-то при разработке устройства чаще прихоится загружать конфигурацию в FPGA напрямую, минуя флешку
У меня кроме плисины ничего не будет, поэтому единственный способ хранения конфигурации - флешка.
> При конвертировании можно выбрать EPCS16, но у меня на плате стоит M25P16. Неужели память не та?
Не знаю как у этой вашей альтеры, а у КСАЙЛИНКСА флешка вибирается из немаленького списка. И если промахнуться то при прошивке будешь послан.
> Можно спросить у китайца. А что на схеме смотреть надо?
Как ты собрался пилить на ней что-то не имея хотябы схемы?
> У меня кроме плисины ничего не будет, поэтому единственный способ хранения конфигурации - флешка.
Нет, тут суть в том, что в обычном режиме плисина после включения питания грузит конфиг из флешки сама, но для отладки можно в любой момент ей скормить конфигурацию прямо по jtag и она останется до выключения питания. Это на порядок быстрее тем и ценно.
>у КСАЙЛИНКСА флешка вибирается из немаленького списка
Ну, у Альтеры из маленького.
>Не знаю как у этой вашей альтеры
А зачем тогда пиздишь?
>Как ты собрался пилить на ней что-то не имея хотябы схемы?
Есть плата, на ней выведены и подписаны все USER-CONFIGURABLE IO PINS, разведено питание и флешка по аппноту, стоит генератор, который подписан, к какому пину он подключен.
>для отладки можно в любой момент ей скормить конфигурацию прямо по jtag и она останется до выключения питания
А я и не знал! Я канешн тупой, но не настолько.
Это работает, мне во флешку залить надо.
>>Как ты собрался пилить на ней что-то не имея хотябы схемы?
>Есть плата, на ней выведены и подписаны все USER-CONFIGURABLE IO PINS, разведено питание и флешка по аппноту, стоит генератор, который подписан, к какому пину он подключен.
Если ты еще не разобрался, то читай https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/cyclone-iv/cyiv-5v1.pdf
Как видишь, есть разные варианты подключения. Соответственно для программирования либо ставить два разъема или https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/an/an370.pdf http://www.kit-e.ru/articles/memory/2005_2_126.php
Или поставить как-то переключатель, как на некоторых отладках бывает.
Какую плату заказать с aliexpress для вкатывания в плис?
Чтобы подключение по usb было и прошивальщик в комплекте и все такое.
Есть задача разрезать цельный кадр 5120x1440, приходящий по дисплейпорту, на две части, перевернуть один из них и отправить на два HDMI. Частота 60Гц.
Вопрос: какая альтеровская плиска с этим справится в одно рыло при минимальной цене?
Подскажите, хотя бы, на какие параметры ПЛИС смотреть? LVDS это то что мне нужно? Ещё у сайклонов пятых есть какие-то 6.144Gbps трансмиттеры, которые я вообще не вкурил, это тоже то что мне нужно? По рассчётам поток будет в 10.8гигабит. Всю логику планирую писать сам.
Для таких вещей используют ФАПЧ для восстановления клока и сдвиговый регистор, гугли LVDS Serializer/Deserializer, SERDES.
Само собой такие штуки ставят во многие ПЛИС, бывают и внешние подобные микросхемы, например http://www.ti.com/product/TLK10002
Существуют варианты с передачей клока отдельной линией и без передачи клока.
И мне кажется, что будет дешевле использовать отдельную микросхему Serializer/Deserializer
>это тоже то что мне нужно?
Да, но не понятно, сможет ли это работать в требуемом режиме.
Также что-то мне подсказывает, что в ПЛИС не хватит памяти под целый кадр.
Весь мой опыт по этому вопросу - использование микросхемы Serializer/Deserializer совместно с древними ПЛИС на невысокой скорости.
Спасибо большое, ты открыл мне глаза на многие вещи.
> в ПЛИС не хватит памяти под целый кадр
Да, стандартных M9K/M10K блоков точно не хватит, внешняя память на скорости в десяток гигабит так же нереальна, но можно утилизировать очень много обычных LE под импровизированную память из регистров, но тут я тоже не уверен, что их хватит даже в количестве пары сотни тысяч. Это серьёзная проблема - хранить 21-мегабайтный кадр.
> SERDES
Да, это очень хорошо, но стоят они по ~$50 за штуку и содержат всего пару каналов. Для DisplayPort'а понадобится таких две, и ещё три на пару HDMI. Выходит ~$350 за одни только PHY'ки, которые могут замениться встроенными интерфейсами даже на маленькой Arria 10 за ту же цену. Ладно, шучу, мне и 3,7Гбита на канал цвета хватит, а эти 3,7Gbps SERDES'ы (TLK3132) всего по ~27$, тогда выходит ~$190 за интерфейсы.
Есть спец микосхемы для DP и TDMA HDMI. Для внешней памяти заюзай QDR, дорогая конечно, но выбора у тебя нет. Плис из серии среднего диапазона (ария, кинтекс, цинк) хватит за глаза
wire wire_1;
и
wire [0:0] wire_2;
Обязательно ли писать
assign wire_1 = wire_2[0];
или достаточно:
assign wire_1 = wire_2;
Часто вижу в исходниках, когда задают массив с одним лишь элементом. Нахуя так делать, если можно обойтись одиночным регистром или проводником?
разве если только ты хочешь написать дикоуниверсальный код, в котором параметром задается ширина шины
Поясните, что этот анон наворочал? Принял радио на sdr-приемник? Но это можно сделать и без плис.
алсо доставьте пожалуйста эту музыку
В каких случаях их надо использовать? Они работают как точка-точка: например от источника клока к отдаленной PLL и никуда больше или от одного источника сразу к нескольким приемникам?
Вообще тема интересная, пилил я проект по кускам. Каждый кусок по отдельности отлаживался в плиске. Когда собрал весь проект - появилось куча warnings по клокам. Хочется все сделать по человечески, без быдлокода.
Нет. Вообще ни разу не идеалист. Просто хуйня в том,что по отдельности узлы проекта работают, собрал всё вместе и пошла хуйня, даже ILA не определяется по джейтагу
Что-то троллингом здесь только ты занимаешься
Передатчик это, на плисине. С частотной модуляцией. Приём на свисток.
На схеме: SD_ADC - сигма-дельта АЦП, DDS - синтезатор частоты, sin_table - восьмибитная тааблица периода синусоиды.
https://www.youtube.com/watch?v=nxbFBA8l-4M
Насколько я помню, у хилых буфер ставится не между источником и ПЛЛ, а между ПЛЛ и потребителем, и потребителей тактирующихся от одного буфера может быть много.
Буферы определяют, к каким тактирующим ресурсам ты что подключаешь. Можешь, например, подключить источник к глобальному дереву, можешь к региональному. Синтезатор с этим неплохо справляется сам, если код адекватный.
Мне кажется, тебе надо прописать констрейнты для твоих клоков, чтобы определить между ними отношения.
Либо, если у тебя там Setup Slack отрицательные, то place-n-route тупо не может реализовать твою охуительную схему при такой частоте работы. Это вопрос не к клокам, а к тебе - переписывай пути с большими задержками, добавляй в них промежуточные регистры.
Бро, спасибо за ответ. Просмотрел я отчет по таймингам. Проблемное место в участке где данные из большого регистра (640 бит) сохраняются в фифошку на двух блоках RAMB36E1. Дабы было понятнее вкину мутную схему проблемного участка.
Правильно ли я понимаю, что из-за того, что регистр большой некоторые его части (FDRE) находятся ближе к брамке, а некоторые дальше и сигнал от отдаленных FDRE до входа брамки не успевает дойти к фронту клока?
Сорян за мелкую схему - двощ не дает прикрепить тяжелый файл.
Самое главное как победить эти тайминги?
Значит регистр в 640 бит запихнуть в две брамки на частоте 156 МГц это хуйня?
И еще как в терминах вивады называется трансфер дилэй и логик дилэй? где посмотреть?
спасибо за доку!
У меня есть регистр 640 бит хватит всем в котором копятся данные в течении нескольких десятков тактов. Есть стандартная хилая корка FIFO в которой я указал 640 бит ширину и глубину 1024. Когда данные готовы wr_en в высокий уровень и все дела.
Я не правильно выразился, про брамку. Блок называется RAMB36E1 и он вроде как может работать в режиме FIFO или в режиме bram (одноа большая или две маленькие).
reg [7:0] a[3:0]; reg a [7:0][3:0];
первое одномерный массив из четырех восьмибитных чисел.
второе двумерный массив 8 на 4 однобитных чисел.
В верилоге в массиве ты можешь обращаться только к элементу. Нельзя обратиться к строке или столбцу целиком.
>>253567
Вот например такой мультиплексор из альтеровского примера. я и сам так пишу.
assign avs_s0_readdata = (avs_s0_address == 4'h0) ? ({{29{1'b0}}, error_bit, running_bit, go_bit}) :
(avs_s0_address == 4'h1) ? (mac_dst[47:16]) :
(avs_s0_address == 4'h2) ? ({{16{1'b0}}, mac_dst[15:0]}) :
(avs_s0_address == 4'h3) ? (mac_src[47:16]) :
(avs_s0_address == 4'h4) ? ({{16{1'b0}}, mac_src[15:0]}) :
(avs_s0_address == 4'h5) ? (ip_src_addr) :
(avs_s0_address == 4'h6) ? (ip_dst_addr) :
(avs_s0_address == 4'h7) ? ({udp_src_port, udp_dst_port}) :
(avs_s0_address == 4'h9) ? ({{8{1'b0}}, dscp_reg, ident_reg}) :
(avs_s0_address == 4'hA) ? ({flags_reg, offset_reg, ttl_reg, proto_reg}) :
(avs_s0_address == 4'hB) ? (packet_len) :
(avs_s0_address == 4'hC) ? ({{16{1'b0}}, mac_type}) :
(packet_count);
форматирование сьехало. ну вы поняли крч
Хм. Оба варианта, конечно, похожи на говно, но вариант внизу, по-моему, чуть больше.
Я так тоже пишу, конечно, но обычно только если в одни (...) ? : не приходится вкладывать другие (...) ? : , иначе получается кровь-кишки-говно. То есть конечные автоматы всегда через case, например.
Нахуя в always-ах использовать вложенные ?: ?Пишите через case, как все нормальные люди, или через if.
Cyclone 4 dev board + usb blaster + память на борту
2 500 рублей
https://ru.aliexpress.com/item/FPGA-development-board-ALTERA-Cyclone-IV-EP4CE-four-generations-SOPC-NIOSII-send-send-remote-control-to/32691369830.html?spm=2114.10010208.1000014.10.4kFiAs&scm=1007.13338.51110.0&pvid=b1235f6e-917a-4488-920e-7668d50d560d&tpp=1&detailNewVersion=&categoryId=200003315
Так самый дешёвый Сыклон в линейке же.
Камни вообще по три сотки:
https://ru.aliexpress.com/item/EP4CE6E22C8N/32722649725.html
Заказал себе два, где-то поблизости, выехали из Екб позавчера.
Алсо, я же лох пиздец. Свою эту плату >>250696 сжёг, после чего наконец заземлил пекарню и заказал БОЛЬШЕ ЦИКЛОНОВ.
Документацию у китайца попросил, он отправил. С флешкой оказалось, что нужен Квартус от 11 и выше (у меня 9), и при конвертировании файл надо сжимать.
Вопросы >>246645 разрешились после пары ЦОС в универе, лол. Понял наконец работу FIR.
Квартус для последовательного 10-битного фильтра с сотней 20-битных коэффициентов в M9K (и регистрами там же) пророчит 593 LE, 8 блоков M9K и 11 тактов на семпл. Пикрелейтед.
Какой здесь я вижу кейс:
1) Отключить оптимизацию этого сигнала вообще, но в документации на устройство прописать, что ресет удерживать в течении n тактов.
2) для отдаленных триггеров пустить сигнал на прямую, а для ближних изобразить цепочку из нескольких лутов для выравнивания задержки
Какой вариант более правильный? Чем грозит отключение оптимизации для этой цепи?
>Этот сигнал априори не может распрастраниться одновременно на всю логику.
Не всегда так, Xilinx может его засунуть в BUFG, тогда он будет приходить повсюду примерно в одно время. Но для ресета этого обычно не требуется.
Хилые в своих руководствах предлагают устанавливать ресету set_false_path, то есть твой первый вариант.
Если какие-то регистры зависят от того в каком порядке они ресетятся, можешь сделать им синхронный ресет вместо асинхронного. Если их много, можно передавать им резет через конвеер - тогда за три, к примеру, такта ресет синхронно разойдётся по всей плисине.
Спасибо и добра тебе, анон. Продолжу свою войнушку с таймингами.
Вот оче старый гайдец от хилых про ресет http://www.xilinx.com/support/documentation/white_papers/wp272.pdf
tl;dr
> глобальный ресет жрет ресурсы и не нужен, автор предлагает локальный подход
> важно не момент включения ресета, а его снятие
> синхронный сброс FTW, если сброс для куска логики асинхронный - синхронизируй его в этом клоковом домене (пикрил)
> в 99,99% проектов сброс на "горячую" правильно проинициализирует устройство, для цепей, критичных к сбросу есть сихронный ресет
>пикрил - цепочка триггеров.
Как ее правильно запилить на верилоге, чтобы не выпилилась при оптимизации?
Не силен в верилоге, но как то так.
На буферы на пике не обращай внимания, это отсинтезированный результат, с подключенными пинами.
Наркоман чтоли? Обычный сдвиговый регистр. Применяется когда надо задержать/сдвинуть сигнал на несколько тактов.
Накатил 11-й Квартус, теперь EPCS16 нормально шъётся.
Но беда: пытаюсь сделать FIR-фильтр, и получаю 3 пик без какого-либо прогресса. Что за беда может быть?
Ну ты же одним фильтром не ограничишься? Захочешь что-то еще туда запихнуть, а места нету.
На несколько фильтров (ФНЧ, Гильберта), несколько перемножителей и пару синтезаторов частоты хватит. Больше и не надо пока.
CPLD и FPGA это уже несколько устаревшие термины
современые устройства это гибридные монстры
конечно с ними нужна ебля, нахуя они ещё нужны?
Брат, посоветуй CPLD начинающему, основное требование подключение по юсб и попроще.
Если нужен kit, чтоб работал искаропки, глянь в треде выше.
В лоукост сегменте, имхо, неплохо играют lattice. Глянь серию MachXO - это небольшие ПЛИС с встроенной энергонезависимой памятью, есть в qfp корпусах. Как правило, киты и референсы идут со встроенным отладчиком/программатором usb.
А ты чё несёшь деградант?
Zynq-7000 это чо FPGA может CPLD или ARM? Самое оно для ебли.
lattice cpld для деградантов и ардуинщиков хорошо заходит
Допустим у меня сотня приемников сигнала от одного регистра. Есть другой способ кроме как прописать set_false_path сотню раз?
>Допустим у меня сотня приемников сигнала от одного регистра.
Читни мануал, там расписаны все параметры set_false_path'а. Если ты пропишешь set_false_path -from regname, он применится ко всем путям, выходящим из regname.
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2015_4/ug903-vivado-using-constraints.pdf
страницы 111-114
http://rutracker.org/forum/viewtopic.php?t=5242265
судя по аватаркам - половина отписавшихся под раздачей с двача
Но мне и нужно под виртекс
видимо неуспели ASIC заказать, из за деадлайнов, а может посчитали и оказалось плисина дешевле ASIC даже оптом, мелкие плисины рулят
Mojo бери, годнота. Сам брал. Уроки у них на сайте есть, если в инглиш можешь а если не можешь - придётся смочь, не раньше, так позже.
Mojo бери, годнота. Сам брал. Уроки у них на сайте есть, если в инглиш можешь а если не можешь - придётся смочь, не раньше, так позже.
Вот как так можно даже последний пост в треде не прочесть?
>Mojo
>Spartan-6
>ебаться ISE
>кроме плисины на плате нихуя нет
Нахуй так жить? Лучше взять Arty за 100$ она тоже ардуино совместимая, но за то у нее есть DDR - можно попробовать эмбедерством позаниматься.
Или еще лучше взять Zdeboard за ~150% на божественном цинке. А эту мочу на старом камушке оставить ардуинщикам
Ну я не то чтобы нюфаня. В плисах да, опыта нет. Во какой список нашёл
https://joelw.id.au/FPGA/CheapFPGADevelopmentBoards
На ftp электроникса есть ломаная лицуха к 16.1, она по идее подойдет к 16.3, по крайней мере с ISE такое прокатывало
На фтп электроникса вроде пускают только "своих". Можешь устроишь слив для братушек-анонов?
На рутрекере скачай крек, он там чуть ли не файл сгенерированный без привязки к маку
кинь ссыль пожалуйста. Я в свое время утащил все раздачи с рутрекера и не только, но при этом не нашел годный генератор
>Матерится в плисо-треде
>Сагует плисо-тред
>Придирается к термину "крайняя версия"
>Обзывает кого-то быдлом
Почему погроммисты такие злые? От классов мозги поехали?
Плисотред сагают только программисты. Алсо это стандартная модель поведения для них.
Приходишь на форум программистов с вопросом по программированию
@
Групповое обоссывание новичка
@
RTFM! RTFM сука!
@
Тема скатывается в срач, обсуждают какую-то левую хуйню
@
Читаешь громадный мануал, в котором о твоей проблеме инфы с нихуя
@
После долгого гугления и экспериментов узнаешь, что проблема из-за какой-то банальной хуеты, а советы которые тебе дали на форуме только мешали найти решение
Приходишь на форум по электронике с вопросом о электронике.
@
Получаешь совет по делу
@
Все посылают друг-другу лучи добра
Пилю текущие достижения:
1. Ethernet
Удалось завезти это чудо. Итак аппаратная часть состоит из приёмника и передатчика RMII и контрольной логики с набором регистров.
Приёмник подключен к блочной памяти, разделенной на 4 куска по 1530 байт. Передатчик имеет 1 кусок на 2кб (1х RAMB16BWER). Плюс к этому аппаратный MDIO-контроллер для управления PHY.
Контрольные суммы Ethernet вычисляются программно, а вот преамбулы фреймов обрабатываются аппаратно.
Самый сложный момент был в том, что синтезатор не сошелся со мной во мнении о памяти приёмника и так наоптимизировал, что приёмник нормально записывал данные только в первый 2кб, а у остальных шина данных оказалась подключена к 0 (WTF?). Пришлось за эту память рученьками на примитивах RAMB16BWER.
Вторая проблема в том, что PHY отказалась работать на 50MHz подаваемых с ПЛИСины, пришлось мутить с кварцем, который был припаян к самому модулю PHY пикрелейтед и синхронизациеё клоковых доменов CPU <-> MAC.
2. Частотомер
Короче, он работает. Сейчас на плате подключено 10 входов, просто больше пинов не осталось, однако эта зараза оказалась чувствительна задержкам распространения внутри ПЛИСины. В итоге кроме синхронизаторов на все управляющие сигналы пришлось младшие 4 бита счетчика опорной частоты заменить счетчиком кода Грея. Говорят, эта хуйня работает на много лучше на высоких частотах, чем обычный счетчик. И действительно, после этой модификации и починке вылезших косяков частотомер стал работать идеально. Не скажу что дело только в счетчике Грея, но самое его добавление позволило выявить по варнингам косяки.
3. Софт
Разделен на 2 части: первая - загрузчик + отладочный мост на UART, загружается при инициализации ПЛИСины. Затем он инициализирует модуль SPI и начинает читать флешку. Там за прошивкой самой GKBCины лежит код приложения.
Распознаётся по заголовку, если он корректен, то загрузочный код копирует приложение в память, очищает .bss и передаёт управление в main(), однако отладочный код по прежнему активен и я с ним работаю.
На текущий момент запилено обслуживание частотомера и простенький UDP-срвер, который по запросу скидывает намереные значения запрашивающему на тот же порт.
Так же работает ARP и ICMP. Под #ping -f <IP-девайса> Не падает и не проёбывает пакеты.
В планах:
Поддержка TCP -> HTTP -> сервер -> вебморда.
Шкрепты.js и страницы.html буду хранить в загрузочной флешке и грузить строго по требованию.
Где хранить настройки? Есть вариант добавить на плату часы и хранить настройки в их памяти питающейся от батареечки, тем более что часы я и так хочу.
https://github.com/ololoshka2871/or1k-spartan6-freqMeter
Пилю текущие достижения:
1. Ethernet
Удалось завезти это чудо. Итак аппаратная часть состоит из приёмника и передатчика RMII и контрольной логики с набором регистров.
Приёмник подключен к блочной памяти, разделенной на 4 куска по 1530 байт. Передатчик имеет 1 кусок на 2кб (1х RAMB16BWER). Плюс к этому аппаратный MDIO-контроллер для управления PHY.
Контрольные суммы Ethernet вычисляются программно, а вот преамбулы фреймов обрабатываются аппаратно.
Самый сложный момент был в том, что синтезатор не сошелся со мной во мнении о памяти приёмника и так наоптимизировал, что приёмник нормально записывал данные только в первый 2кб, а у остальных шина данных оказалась подключена к 0 (WTF?). Пришлось за эту память рученьками на примитивах RAMB16BWER.
Вторая проблема в том, что PHY отказалась работать на 50MHz подаваемых с ПЛИСины, пришлось мутить с кварцем, который был припаян к самому модулю PHY пикрелейтед и синхронизациеё клоковых доменов CPU <-> MAC.
2. Частотомер
Короче, он работает. Сейчас на плате подключено 10 входов, просто больше пинов не осталось, однако эта зараза оказалась чувствительна задержкам распространения внутри ПЛИСины. В итоге кроме синхронизаторов на все управляющие сигналы пришлось младшие 4 бита счетчика опорной частоты заменить счетчиком кода Грея. Говорят, эта хуйня работает на много лучше на высоких частотах, чем обычный счетчик. И действительно, после этой модификации и починке вылезших косяков частотомер стал работать идеально. Не скажу что дело только в счетчике Грея, но самое его добавление позволило выявить по варнингам косяки.
3. Софт
Разделен на 2 части: первая - загрузчик + отладочный мост на UART, загружается при инициализации ПЛИСины. Затем он инициализирует модуль SPI и начинает читать флешку. Там за прошивкой самой GKBCины лежит код приложения.
Распознаётся по заголовку, если он корректен, то загрузочный код копирует приложение в память, очищает .bss и передаёт управление в main(), однако отладочный код по прежнему активен и я с ним работаю.
На текущий момент запилено обслуживание частотомера и простенький UDP-срвер, который по запросу скидывает намереные значения запрашивающему на тот же порт.
Так же работает ARP и ICMP. Под #ping -f <IP-девайса> Не падает и не проёбывает пакеты.
В планах:
Поддержка TCP -> HTTP -> сервер -> вебморда.
Шкрепты.js и страницы.html буду хранить в загрузочной флешке и грузить строго по требованию.
Где хранить настройки? Есть вариант добавить на плату часы и хранить настройки в их памяти питающейся от батареечки, тем более что часы я и так хочу.
https://github.com/ololoshka2871/or1k-spartan6-freqMeter
>возможно ли заставить работать компонент ядра на операциооной системе которая использует данное ядро?
Нет, наверное нельзя. Пиши свой драйвер.
Микроблейз == проприетарщина -> ненужно.
У меня это altor32 с опенкоресов и немого допиленый тулчеин под него, ибо он не может в аппаратное умножение. Работает на 50 MHz.
>Микроблейз == проприетарщина -> ненужно
Но ты же используешь проприетарный спижженный ise, что мешает использовать и микроблейз? Это что-то на уровне христианства. Искусственно создавать себе трудности из ничего.
Сложный вопрос, просто уперся лбом в стену, было вот так и хз что с этим делать, гуглил по всякому, наткнулся на статейку где вскользь упоминались небинарные счетчики.
Пикрелейтед - до счетчика грея.
>>256170
Да, дело принципа, можешь не соглашаться, дело твоё.
>>256171
Да, рассматривал. Даже хотел его поднимать, но решающим стала возможность отладки.
У данного проца в софте прилагался модуль отладочного моста через UART. Он глючный и портит данные в стеке, но он есть и работает, а у спарков такой фигни не было, а без отладки я, увы, не умею. Я пытался понять что там глючит но не смог и мучаюсь так.
>Да, дело принципа, можешь не соглашаться, дело твоё.
Я просто пытаюсь понять на чем основаны эти принципы.
И еще не понятно, в проекте вообще ни одного IP-ядра от хилых не заюззал?
>И еще не понятно, в проекте вообще ни одного IP-ядра от хилых не заюззал?
Именно так. Только примитивы RAMB16BWER и DCM_CLKGEN явным образом.
слоупок.jpg
> ты в любой момент понимаешь, что у тебя отжирается под каждой строкой
я могу понимать это в точности или с точностью до каких-то множителей?
a[0] <= b[0] занимает один регистр. a[7:0] <= b[7:0]; занимает восемь регистров. Каких - зависит от того, какой ты им сделаешь ресет. assign a[0] = (b[0]==0) ? c[0] && d[0] : e[0] || f[0]; занимает один LUT, если количество b, c, d... не больше шести-семи. Понимать эту хуйню в любом случае надо, но не для школооптимизаторства, а потому что иначе ты сделаешь кипятильник, которые будет работать максимум на паре мегагерц.
Бамп вопросу
Сап плисаны. Учу Verilog написал двух приоритетный шифратор из упражнения к книге. Работает. Но есть подозрения что я сделал это максимально по уебански. Не могли бы поправить если где то ошибся и объяснить как надо.
reg [9:0] first;
reg [9:0] second;
reg [9:0] buffer;
always @(SW)
begin
buffer = SW;
casex(SW)
10'b1xxxxxxxxx: first <= 10'b1000000000;
10'b01xxxxxxxx: first <= 10'b0100000000;
10'b001xxxxxxx: first <= 10'b0010000000;
10'b0001xxxxxx: first <= 10'b0001000000;
10'b00001xxxxx: first <= 10'b0000100000;
10'b000001xxxx: first <= 10'b0000010000;
10'b0000001xxx: first <= 10'b0000001000;
10'b00000001xx: first <= 10'b0000000100;
10'b000000001x: first <= 10'b0000000010;
10'b0000000001: first <= 10'b0000000001;
default: first <= 10'b0000000000;
endcase
buffer = buffer & (~first);
casex(buffer)
10'b1xxxxxxxxx: second = 10'b1000000000;
10'bx1xxxxxxxx: second = 10'b0100000000;
10'bxx1xxxxxxx: second = 10'b0010000000;
10'bxxx1xxxxxx: second = 10'b0001000000;
10'bxxxx1xxxxx: second = 10'b0000100000;
10'bxxxxx1xxxx: second = 10'b0000010000;
10'bxxxxxx1xxx: second = 10'b0000001000;
10'bxxxxxxx1xx: second = 10'b0000000100;
10'bxxxxxxxx1x: second = 10'b0000000010;
10'bxxxxxxxxx1: second = 10'b0000000001;
default: second = 10'b0000000000;
endcase
end
assign LEDR = second | first;
SW - это входной сигнал, LEDR - выходной
Сап плисаны. Учу Verilog написал двух приоритетный шифратор из упражнения к книге. Работает. Но есть подозрения что я сделал это максимально по уебански. Не могли бы поправить если где то ошибся и объяснить как надо.
reg [9:0] first;
reg [9:0] second;
reg [9:0] buffer;
always @(SW)
begin
buffer = SW;
casex(SW)
10'b1xxxxxxxxx: first <= 10'b1000000000;
10'b01xxxxxxxx: first <= 10'b0100000000;
10'b001xxxxxxx: first <= 10'b0010000000;
10'b0001xxxxxx: first <= 10'b0001000000;
10'b00001xxxxx: first <= 10'b0000100000;
10'b000001xxxx: first <= 10'b0000010000;
10'b0000001xxx: first <= 10'b0000001000;
10'b00000001xx: first <= 10'b0000000100;
10'b000000001x: first <= 10'b0000000010;
10'b0000000001: first <= 10'b0000000001;
default: first <= 10'b0000000000;
endcase
buffer = buffer & (~first);
casex(buffer)
10'b1xxxxxxxxx: second = 10'b1000000000;
10'bx1xxxxxxxx: second = 10'b0100000000;
10'bxx1xxxxxxx: second = 10'b0010000000;
10'bxxx1xxxxxx: second = 10'b0001000000;
10'bxxxx1xxxxx: second = 10'b0000100000;
10'bxxxxx1xxxx: second = 10'b0000010000;
10'bxxxxxx1xxx: second = 10'b0000001000;
10'bxxxxxxx1xx: second = 10'b0000000100;
10'bxxxxxxxx1x: second = 10'b0000000010;
10'bxxxxxxxxx1: second = 10'b0000000001;
default: second = 10'b0000000000;
endcase
end
assign LEDR = second | first;
SW - это входной сигнал, LEDR - выходной
Да, по уебански. Не стоит смешивать блокирующие и не блокирующие присваивания в always, это запросто может привести к возникновению защелок. Выше по треду про это довольно много писали.
>>258894
Для чего? Если для "Мам, я процессор сделал!", то купи самую простую плату на алиэкспрессе, выше по треду была ссылка на плату с EP4CE6 за ~1100р.
Внезапно узнал, что ИНТЕГРАЛ делает копии актелевских плисин http://integral.by/ru/products/bmk-i-plis
Какие-то они мелкие совсем. И не радстойкие похоже, в отличие от оригинала.
Интереснее воронежские аналоги второго циклона 5578ТС024. Но у них все портит кривое и тормозное ПО.
>Но у них все портит кривое и тормозное ПО.
Лол што?
Они же полностью совместимы с оригиналами, всё клепается под родным квартусом.
>Они же полностью совместимы с оригиналами, всё клепается под родным квартусом.
Это 5576, которые аналоги FLEX10K, полностью совместимы. 5578 совместимы частично, для них в квартусе делается только нетлист, place&route делает уже воронежский софт.
Вот ведь пидоры, вместо того чтобы полный аналог выпустить, надо обязательно изъебнуться.
Изредка пользуюсь Моделсимом для простого моделирования. Хочу узнать больше, но по документации как-то не совсем для меня понятна, например, такая фича как Code Coverage. Анон, расскажи, пожалуйста, простым доступным языком, что это такое, и как я могу ее применить с пользой для дела.
>Code Coverage
Полнота теста.
Есть разные способы подсчёта, в среднем 70% на сложных проектах считается хорошим каверджем.
Как этой хернёй пользоваться в Моделсиме я хз, самому интересно.
> Полнота теста
Это типа все ли возможные воздействия на входные сигналы я предусмотрел в своем тестбенче? Т.е. подсчет вероятности того, что моя схема проверена во всех возможных режимах?
>возможные воздействия на входные сигналы
Как бы да, но не совсем.
Можно перебрать все комбинации на входах, но скажем какой-нибудь автомат не попадёт в пару состояний, т.к. он устройство последовательное, и в этом случае кавердж будет не сотка, а вот если твой автомат побудет во всех состояниях - тогда да.
Побывать во всех состояниях еще не означает полное покрытие. Как минимум еще нехватает пройти все варианты ветвления
В настройках контроллера нельзя изменить "Number of peripheral interrupts" - оно выбирается автоматически.
Это баг, было в виваде 2013. Потом вроде пофиксили. Попробуй сначала validate design (F6), еще помогало удалять/добавлять конкат или контроллер прерываний.
Спасибо, помогло F6. Вивада 2016.3
В пердуине один ALU и какая-то переферия к нему, в FPGA ты сам задаешь то, что тебе нужно, можно хоть штук сто арифметических блоков сделать с параллельным вводом-выводом.
Ванговать не буду, что у тебя не работает, но вот тебе идеи:
1. Запиши во флешку что-нибудь, например 1 2 3 4... программаторм. Так ты поймёшь, чтение или запись не фурычит.
2. Недавно пилил ш2ц для часов в своём проекте. Юзал это https://opencores.org/project,iicmb , там есть разные интерфейсы ядро <-> шина, в том числе RAW если ты без проца, у меня взлетело без проблем.
Емкости на питании 24-ки, и скорость записи проверь. Я как-то полвечера убил, а оказалось между записями при побайтовом режиме надо паузы делать %5кто ж даташиты-то читает%%
скорее всего придётся работать с циклоном 4, а он дд3, как я знаю, не поддерживает.
лвдс написал сам на логике (2 приёмника, один по переднему фронту, другой по заднему, в итоге формируют один регистр на 12 бит)
синхрокоды детектирую следующим образом, матрица работает в режиме мастера, из неё идёт строчный синхрик, после него я считываю 4 слова (fff 000 000 и ещё какое-то) после него начинаю записывать полезную инфу
Да, FPAA
вместе с усб бластером. Вопрос в том, что я не знаю как ее запитать, видел на хабре что на некоторых 2А и 5V, но здесь мой китайский друг не написал этого.
EZ-USB FX3
Да, гитхаб
https://github.com/Nuand/bladeRF
только там используют нечто большее чем просто фай, что бы еще и плиску прошить. На сколько помню, интерфесом FX2 принципиально не сильно отличаеться
1) я жду сигнала XHS с матрицы, который идёт на отдельную ногу
2) по идее надо ждать 3 раза по 1111, но я жду только 2, т.к. иногда синхросигнал запаздывает на бит или два
3) после того как я принял 2 раза по 1111 я жду перепада в ноль и начинаю делить на слова по 12 (сигнал fff может прийти исключительно в синхрокоде)
Спасибо!
Последний рабочий день уходящего года - пилю отчет о проделанной работе:
Вцелом девайс готов, подводные камни собраны, шишки набиты.
1. Ethernet
По причинам, о которых ниже требовалось поднять быстродействие -> разогнать проц. Поэтому требовалась нормальная синхронизация. Я посчитал, что нахера мне эта гибкость, когда куча триггеров требуется а толку 0, поэтому приколотил гвоздями слоты передачи и приёма к конкретным адресам. Всё равно я их так же прибивал по в программе, а так дикая экономия. После этого допилил синхронизацию, которая раньше косячно работала.
2. I2C
Я подумал, что надо где-то хранить настройки и под руку попались часы ds1338. там кроме часов есть память, которая питается от батареечки. На настройки хватит ну и часы бонусом.
Сначало скачал с опенкоресов вот этот модуль https://opencores.org/project,iicmb - взлетело однако потом пришлос от него отказаться и сделать программный I2C, об этом позже. В проекте оставил опцей аппаратный / программный.
3. СОФТ
Перейдем к самому интересному. Я хотел запилить вебсервер, и да он работал.
Среди множества либ, я нашел вот такую https://github.com/ibexuk/C_Communications_Ethernet_TCP_IP_Driver
Хотя написана она невероятно странно и состоит из стейт-машин, но она мало весит, поэтому я взял её. долго допиливал, но в итоге UDP/TCP/HTTP всё это поднялось.
Сделал шкрипт, который генерит блоб из необходимых для вебморды файлов и зписывает его после программы во флешку, далее на стороне ПЛИСины он парсится и контент читается из этой самой флешки по требованию клиента (браузера). Тестовый шаблончик работал. И казалось-бы вот оно счастье, но нет! Проблема в том, что это всё занимало ужасно много места, оставалось около 2% памяти ПЛИСины, и это без некой логики, при помощи которой клиент сможет забирать результат измерений!
Было принято волевое решение дропнуть вебморду отключил в настройках, а из либы воспользоваться только UDP на котором поднять гугло-protobuf
https://koti.kapsi.fi/jpa/nanopb/
имел дело с ним раньше - годнота.
В итоге логика протокола заняла нехило места, но удалось уместить все, что хотел.
Производительность
В самом худшем случае, когда задействованы все каналы и все каналы опрашиваются пинг составляет около 8мс, что при минимальном времени измерения в 10мс вполне меня устраивает. Но так было не всегда.
Первым делом пришлось поднять частоту проца до 64МHz, больше - увы начинет глючить.
во вторых - аппаратный умножитель, который аппаратно выполняет стандартную gcc-шную функцию int __mulsi3 (int a, int b).
В третьих пришлось отказаться от аппаратного i2c, тут я не совсем понимаю, но когда он есть, то быстродействие ухудшается - проц нормально работает только на 60 MHz, видимо это связано с высоким процентом использования ПЛИСины (90+).
Еще был добавлен аппаратный вычислитель CRC32, но он, однако ощутимого выигрыша не даёт, оставил опцией вкл/выкл.
Теперь коллега займется разводкой платы и сборкой, когда приедут детали, а мне пилить софт на ПеКу под это поделье.
Последний рабочий день уходящего года - пилю отчет о проделанной работе:
Вцелом девайс готов, подводные камни собраны, шишки набиты.
1. Ethernet
По причинам, о которых ниже требовалось поднять быстродействие -> разогнать проц. Поэтому требовалась нормальная синхронизация. Я посчитал, что нахера мне эта гибкость, когда куча триггеров требуется а толку 0, поэтому приколотил гвоздями слоты передачи и приёма к конкретным адресам. Всё равно я их так же прибивал по в программе, а так дикая экономия. После этого допилил синхронизацию, которая раньше косячно работала.
2. I2C
Я подумал, что надо где-то хранить настройки и под руку попались часы ds1338. там кроме часов есть память, которая питается от батареечки. На настройки хватит ну и часы бонусом.
Сначало скачал с опенкоресов вот этот модуль https://opencores.org/project,iicmb - взлетело однако потом пришлос от него отказаться и сделать программный I2C, об этом позже. В проекте оставил опцей аппаратный / программный.
3. СОФТ
Перейдем к самому интересному. Я хотел запилить вебсервер, и да он работал.
Среди множества либ, я нашел вот такую https://github.com/ibexuk/C_Communications_Ethernet_TCP_IP_Driver
Хотя написана она невероятно странно и состоит из стейт-машин, но она мало весит, поэтому я взял её. долго допиливал, но в итоге UDP/TCP/HTTP всё это поднялось.
Сделал шкрипт, который генерит блоб из необходимых для вебморды файлов и зписывает его после программы во флешку, далее на стороне ПЛИСины он парсится и контент читается из этой самой флешки по требованию клиента (браузера). Тестовый шаблончик работал. И казалось-бы вот оно счастье, но нет! Проблема в том, что это всё занимало ужасно много места, оставалось около 2% памяти ПЛИСины, и это без некой логики, при помощи которой клиент сможет забирать результат измерений!
Было принято волевое решение дропнуть вебморду отключил в настройках, а из либы воспользоваться только UDP на котором поднять гугло-protobuf
https://koti.kapsi.fi/jpa/nanopb/
имел дело с ним раньше - годнота.
В итоге логика протокола заняла нехило места, но удалось уместить все, что хотел.
Производительность
В самом худшем случае, когда задействованы все каналы и все каналы опрашиваются пинг составляет около 8мс, что при минимальном времени измерения в 10мс вполне меня устраивает. Но так было не всегда.
Первым делом пришлось поднять частоту проца до 64МHz, больше - увы начинет глючить.
во вторых - аппаратный умножитель, который аппаратно выполняет стандартную gcc-шную функцию int __mulsi3 (int a, int b).
В третьих пришлось отказаться от аппаратного i2c, тут я не совсем понимаю, но когда он есть, то быстродействие ухудшается - проц нормально работает только на 60 MHz, видимо это связано с высоким процентом использования ПЛИСины (90+).
Еще был добавлен аппаратный вычислитель CRC32, но он, однако ощутимого выигрыша не даёт, оставил опцией вкл/выкл.
Теперь коллега займется разводкой платы и сборкой, когда приедут детали, а мне пилить софт на ПеКу под это поделье.
Это совсем разные вещи
Тем что пердуина - это микроконтроллер, а то ПЛИС.
По моему для начала хватит симулятора. Если хочется сразу видеть результат, то такая плата сойдет для начала. Но можешь взять https://ru.aliexpress.com/item/EP4CE10/32637947021.html или https://ru.aliexpress.com/item/EP4CE6/967529392.html
Наиболее дешевая из более серьезных плат, с DDR памятью, это наверное http://store.digilentinc.com/arty-board-artix-7-fpga-development-board-for-makers-and-hobbyists/
Брать более серьезную плату я бы не советовал, ПЛИС довольно быстро устаревают.
Выбор пал на тот вариант, так как он уже содержит перемирию на борту, и имеется возможность побаловаться с vga портом. Возится и что то подключать самостоятельно нет желания большого, а по финансам и тот доступен мне.
P.S./UPD писал подвыпившим, так что ещё раз прошу прощения за ошибки различного рода. Наверное, стоило начать с вопросов о том, как вообще вкатываются в профессии, связанные с работой с ПЛИС...
P.S./UPD писал подвыпившим, так что ещё раз прошу прощения за ошибки различного рода. Наверное, стоило начать с вопросов о том, как вообще вкатываются в профессии, связанные с работой с ПЛИС...
Тебе нужно вкатываться в таком порядке:
1. Основы цифровой электроники. Комбинационные и последовательные цифровые устройства. Синтез вручную этих устройств. Рекомендую изучить эту методичку: http://www.twirpx.com/file/68915/
2. Изучить внутреннюю структуру ПЛИС. Можешь начать со старых CPLD MAX7000 и закончить старыми FPGA FLEX10K.
3. Изучить Verilog, VHDL. Освоить средства моделирования, такие как modelsim.
Поскольку возникают такие вопросы:
>Нужно подрубать какой-нибудь АЦП
То с аналоговой частью у тебя не лучше, поэтому:
4. Для начала изучить курс "радиотехнические цепи и сигналы". Мог бы посоветовать учебник Баскакова или Гоноровского, но без лекций и практических занятий такой учебник трудно осилить.
>Spartan'a-6
Выкинь, он устарел.
>Или же отдельно процесс демодуляции аппаратно не реализуем, разве что только в составе какого-нибудь приёмника, где присутствуют какие-нибудь фильтры, детекторы и т.п.?
Не вполне понял. Подрубить напрямую к ПЛИС антенну и принять сигнал не выйдет, но для демодуляции оцифрованного аналогового сигнала (например с АЦП) хватит только ПЛИС.
>Вот допустим, я хочу демодулировать сигнал, запись которого представлена в файле с расширением .mat
>получается, что мне нужно определиться с интерфейсом, через который нужно будет подавать этот файл на входы плиски, и описать его на HDL?
Какой смысл загружать это в ПЛИС? Если хочешь посмотреть как будет работать описанное на HDL устройство с таким сигналом, то это делается в симуляторах.
>Попытался разобраться сам, почитав и Хоровица, и Харрисов, и даже Зотова
Никого из этих не читал. Цифровая обработка сигналов и программирование ПЛИС - это разные, хотя и соприкасающиеся области. Поэтому изучать их стоит отдельно.
Дальше на твои вопросы не вижу смысла отвечать, это тебе не поможет в изучении всего этого.
ПЛИС - цифровое устройство, всё что может делать процессор, то может и ПЛИС и даже лучше. От этого и пляши. Т.е. ЦОС - это математика и алгоритмы, а на чём их лучше реализовать - вопрос второй.
>VHDL
Тупиковый путь, лучше сразу verilog, если знаешь Сишник - вкатишься легко.
>>266702
Рекомендую изучить эту методичку
Можно также глянуть что-нибудь на подобие этого
https://youtu.be/NQE5Mlsj-9k
>если знаешь Сишник - вкатишься легко
Я вот реально не понимаю, как люди могут всерьёз утверждать, что умение писать программы для процессора настолько легко перенесится на описание цифровых схем на ПЛИС, что все проблемы, которые при этом возникнут - это каким символом обозначается побитовый сдвиг. И что исходя из этого и надо выбирать язык.
>как люди могут всерьёз утверждать
Я не про перенос умения с процессора на ПЛИС, я про выбор языка говорю.
Ежу понятно, что HDL отличается от программирование кардинально, но если знаешь Си, изучение virilog-a пойдёт легче чем vhdl-я.
else if (|hba_reset_cntr) hba_reset_cntr <= hba_reset_cntr - 1;
(|hba_reset_cntr) нахуя здесь оператор | и как это будет работать?
явно крестовый программист писал
Поидее, работать будет так же как и
if (hba_reset_cntr). Зачем так написано хуй знает. А можно больше контекста?
Я тоже так думаю, но зачем-то эту закорюльку поставили
>больше контекста
разметка конечно же проебётся..
always @(posedge aclk) begin
if (arst) hba_reset_cntr <= 0; // 1; no HBA reset at arst
else if (set_hba_rst) hba_reset_cntr <= {HBA_RESET_BITS{1'b1}};
else if (|hba_reset_cntr) hba_reset_cntr <= hba_reset_cntr - 1;
hba_rst_r <= hba_reset_cntr != 0;
if (arst) port_rst_r <= 0;
else if (set_port_rst) port_rst_r <= ahci_regs_di[0]; // write "1" - reset on, write 0 - reset off
if (arst || port_rst_on) was_hba_rst_aclk <= 0;
else if (set_hba_rst) was_hba_rst_aclk <= 1;
if (arst || set_hba_rst) was_port_rst_aclk <= 0;
else if (port_rst_on) was_port_rst_aclk <= 1;
if (arst) arst_r <= ~0;
else arst_r <= arst_r << 1;
end
https://github.com/Elphel/x393_sata/blob/727bf4bcab3be44b0395b3d9bbc9b1a7f42c6b86/ahci/axi_ahci_regs.v
Я мягко говоря афигел, когда наткнулся на их гитхаб. Наши бывшие соотечественники пилят такие крутые проекты.
Алсо среда в которой они пилят походу тоже их разработки - некий VDT-плагин для эклипса
Я тоже так думаю, но зачем-то эту закорюльку поставили
>больше контекста
разметка конечно же проебётся..
always @(posedge aclk) begin
if (arst) hba_reset_cntr <= 0; // 1; no HBA reset at arst
else if (set_hba_rst) hba_reset_cntr <= {HBA_RESET_BITS{1'b1}};
else if (|hba_reset_cntr) hba_reset_cntr <= hba_reset_cntr - 1;
hba_rst_r <= hba_reset_cntr != 0;
if (arst) port_rst_r <= 0;
else if (set_port_rst) port_rst_r <= ahci_regs_di[0]; // write "1" - reset on, write 0 - reset off
if (arst || port_rst_on) was_hba_rst_aclk <= 0;
else if (set_hba_rst) was_hba_rst_aclk <= 1;
if (arst || set_hba_rst) was_port_rst_aclk <= 0;
else if (port_rst_on) was_port_rst_aclk <= 1;
if (arst) arst_r <= ~0;
else arst_r <= arst_r << 1;
end
https://github.com/Elphel/x393_sata/blob/727bf4bcab3be44b0395b3d9bbc9b1a7f42c6b86/ahci/axi_ahci_regs.v
Я мягко говоря афигел, когда наткнулся на их гитхаб. Наши бывшие соотечественники пилят такие крутые проекты.
Алсо среда в которой они пилят походу тоже их разработки - некий VDT-плагин для эклипса
Афигеть, мир тесен!
Жаль, что у тебя не срослось, анон. Расскажи про эту поездку, если не лень
В том то и дело, что не школьник. Пишу с мобильника :(
познавший_кризис_среднего_возраста_в_27_лвл
БыдлоFPGAшником. Конечное звено в цепочке попила госбабла.
Осознаю что это хуже червя пидора, но все могло сложиться еще хуже
>пошёл на курсэру
Куда пошёл, простите?
>Сейчас вообще всё легко, пошёл на курсэру, посмотрел на изиче пару месяцев видеокурс, поделал домашки, и вот ты можешь в цифровую обработку сигналов.
Не знаю, как это может быть легко. Сколько не пытался вкатиться в ЦОС - не выходит, может, просто, я тупой.
Тогда все у тебя есть. Мониторишь вакансии на хедхантере@валишь из сраной рашки@добираешь на реальных проектах знания, для которых в рашке не было задач по причине потешности ее обороноподелок.
>>267009
coursera.org
Начни качать эльфа чуть раньше, с пределов, интегралов, рядов и комплексных чисел. Алсо в цос-треде есть книги для нубья.
Благодарю. Ещё интересует вопрос подбора литературы. Что посоветуете почитать из того, где есть хотя бы мало-мальские намёки на практическую часть (что-нибудь эдакое для маленького ребёнка студента, как лабораторный практикум с пошаговыми гайдами)? И где вообще советуете пиратить добывать книги по околоПЛИСам? Вот наткнулся на пикрил – что скажете, стоит знакомиться? Если нет, то прекрасно, а то ни скачать, ни купить пока нет возможности. https://www.ozon.ru/context/detail/id/34802000/
>Ряды Фурье и вот это всё.
>>267018
>Алсо в цос-треде есть книги для нубья.
Вот пытался читать первый пикрил, но даже его не осилил. Мне надо что-то типа второго пикрил, вот его я почти весь понял, но литературы такого уровня я не встречал.
>>267037
По HDL на русиче совсем мало книг, так-что выбирать не приходится.
>Вот пытался читать первый пикрил, но даже его не осилил.
Можешь пример привести, ну типа "вот тут понимаю, понимаю, понимаю, а вот тут БАЦ и не понимаю уже"?
Был там, нового мало узнал.
Будут рассказывать как проекты создавать, даже о ХДЛ ничего не скажут. У них вроде как отдельный курс есть, то ли по вхдлю, то ли по верилогу.
мне от работы надо было ещё 2 месяца назад, за это время сам всё выучил уже, но деньги уплачены, чтож, послушаю
Глава 3, забуксовал там где начали про вектора и пространства функций втирать.
Я ещё вперёд посмотрел, там совсем хардкор с комплексными числами пошёл.
В общем мат подготовки мне не хватает.
Где учился и по какой специальности, если не секрет?
На любой технической специальности все это должны объяснять на линейной алгебре. А на радиотехнических специальностях все это повторят еще несколько раз на разных курсах.
https://habrahabr.ru/post/267183/
Разбил ладонью лоб, пока почитал комменты до середины
Специальность называется вычислительные машины, системы, комплексы и сети. Немного не тот профиль, да и математику преподавали так себе и всего пару семестров, если правильно помню.
Алсо, надо проверить, какой тут алгоритм генерации.
>будет иметь смысл подбиралка трипкодов?
Оглянись вокруг, сколько ты видишь трипфагов на этой доске?
>Копакабана
Чтобы понять что ты имел в виду, мне пришлось гуглить. Наверное всем остальным анонам это слово тоже ничего не скажет.
>16 планками на 133МГц
И мне сразу представилась DIMM память. А при чем тут память? Отдельная память для подбора паролей вообще не нужна.
Оказалось что эта COPACOBANA состоит из плат в формате DIMM, на каждой из которых по 6 XC3S1000.
На каждой FPGA по 4 вычислителя DES, всего у тебя получается 384 вычислителя https://www.httpcs.com/es/news/cloud-cryptanalysis-how-the-cloud-could-modify-the-hacking-customs-in-a-close-future За сколько тактов считается один хэш не понятно.
В любом случае эта COPACOBANA - старье, сейчас все это можно заменить одной XC7A200T, например.
>на моем дряхлом ноуте выдает 5 миллионов комбинаций в секунду
Для начала возьми версию на CUDA или OpenCL. И на двойных паролях все равно обломаешься.
О как, думал, эту фирму тут все знают. Надо было приложить ссылку.
>Оглянись вокруг, сколько ты видишь трипфагов на этой доске?
Не поверишь, в /fag/. Там у них целый тред есть и у нескольких человек осмысленные части трипкодов довольно длинные, интересно, как они их подобрали наверняка облачные инстансы с GPU.
>За сколько тактов считается один хэш не понятно.
За один такт, но это для брутфорса DES, в моем случае понадобится как минимум два.
>сейчас все это можно заменить одной XC7A200T, например.
Серьезно? Она и стоит соответствующе. На неделе спрошу, есть ли аналог у нас, но подозреваю, что нет. В дорогих линейках не секу, купил себе махо второй от Lattice, копаюсь с ним.
>Для начала возьми версию на CUDA или OpenCL.
Она разогревает мою карту до 85 градусов и дает 15 мегахэшей. Наверно, проще будет изредка нанимать облако, или собрать нормальный пека, уже 2 года коплю на него. Спасибо за разъяснения.
В принципе, можно диплом на эту тему написать. Да и хочется сделать большой серьезный проект с высокой энергоэффективностью.
>О как, думал, эту фирму тут все знают.
Не знают, потому что эта ерунда годится только для брутфорса.
>За один такт
С чего ты взял один такт, опять препод сказал?
>но это для брутфорса DES, в моем случае понадобится как минимум два.
При чем тут два такта? Про конвейеризацию не слышал?
>В дорогих линейках не секу
Artix-7 это дешевое семейство FPGA.
>В принципе, можно диплом на эту тему написать.
Пиши что хочешь, но для меня брутфорс DES - это бесполезная ерунда. И даже не интересная - просто набор одинаковых ядер.
Лучше сделай на своей Lattice самодельный процессор, это тоже не нужно, но уже интереснее.
Какое нахуй видео? Читать не умеешь?
ПЛИС программируются посредством набирания кода. Код - это текстовая информация, что тут на видео можно показать?
Единственное на что годится видео - это наглядно показать расположение кнопочек в среде.
Что ж ты, няша, много раз давал здесь ссылку на канал упоротого хмыря, который как полоумный, видосы пилит. Обещал скоро верилог.
https://www.youtube.com/user/jack0ov/videos
http://www.codesrc.com/mediawiki/index.php?title=SCSI2SD
Для SGI Indy. Да, некроёб.
Но цена в $125 отбивает всё желание покупать. Заказывать детали с Али и паять — только если следующий вариант не прокатит по какой-либо причине. А вариант такой:
https://www.altera.com/products/fpga/cyclone-series/cyclone-v/overview.html
$179, по производительности, качеству исполнения, расширяемости и функциональности на порядки круче. Можно хоть осцилоскоп на ней запилить, синус-генератор и прочую обычно многократно оверпрайснутую технику для радолабы. И всё это я в будущем очень хотел бы реализовать с помощью сайта FPGA4FUN.
Ну может разводку SCSI-GPIO сделаю на плате и LVT125 припаяю-таки, а дальше всё на ПЛИС и можно будет подумать над чем-то акромя SD на другом конце. Остановите меня, или дайте советов мудрых.
Олсо, как думаете, может форум нормальный для любителей ПЛИС запилить? А то вон даже Intel купила Alter'у, Xeon'ы скоро с интегрированными FPGA будут выпускать. Тема становится популярной. С вики, FAQ, мануалами и открытыми проектами по запиливанию аналогов буржуйских девайсов. Ну что, пилить? пахом.svg
Астанавись. Для SD-карт наполовину закрыта спецификация, будешь долго по крупицам собирать инфу
У меня ПИЧОТ от русских форумов по электронике.
Электроникс - хозяива мудаки, достали со своей политикой деления на своих и чужих. Там сидит много толковых людей, но всё портит горстка индивидуумов, которые в каждой теме предлагают втюхать свои протухшие IP-ядра за бабло.
Отдельно хочу сказать про движок форума из 90х сукабля, зла не хватает.
easyelectronics.ru - всё бы хорошо, но уровень у них низковатый, больше любители. По плис там помогут разве что совсем новичку
еще есть горстка полукомерческих форумов, которые живут за счет продаж своих изделий типа: marsohod.org или bsvi.ru, но там совсем низкая активность.
И всё. Больше форумов где хоть как-то впишется тема про плис нет.
Чо0о0о0о? Для SD карт лежит всё, от низкого уровня, до библиотек.
Я про контроллер SD и говорил. Если у тебя в распоряжении SOC то нет проблем.
сукабля, я тебе экстрасенс штоле?
> Фреймворки целые есть для работы с соотв. микрухами.
О каких микрухах ты говоришь?
>А что движок? Какой лучше? vBulletin воровать не хочется.
Да там больше дело не в движке, а в оформлении сайта и форума. С 2007 года сайт нихуя не поменялся
Altera Cyclone V.
Я и картинку прилепил, и ситуацию описал, и ссылку на железки дал.
В глаза долбишься небось.
>О каких микрухах ты говоришь?
Да о любых. Для каждого чипа ПЛИС, даже для всякой UART-USB-хуйни производители пишут библиотеки и всякие фронтенды, чтобы их говнопрошивки можно было ставить в один клик. Я уж не говорю про Xilix c Alter'ой, так и китаёзы делают. Вот сейчас смотрел исходники прошивки для SCSI2SD - большая часть из сторонних библиотек + прошивалка бинарником. А это любительский проект энтузиаста.
Если ты про спецификации внутреннего устройства этих накопителей, то нахуй нужно вообще? Само собой крупный производитель будет стараться запрятать свои секреты поглубже и не дай бог какой китаёза попортит репутацию своими говноклонами.
>дело не в движке, а в оформлении сайта и форума
Ну то, что на скриншоте меня тоже немного в ступор ввело, но вообще даже больше удивлён такую-то придирчивость к внешнему виду в рядах ПЛИСофагов встретить. Тебе вон даже в лёгком варианте сделали форум — добавь ссыль в закладки, чо как маленький.
Мне вообще похуй на дизайн.
https://ru.aliexpress.com/item/EP4CE10/32637947021.html
https://ru.aliexpress.com/item/EP4CE6
Ничем не уступает твоей первой штуке. Можно проводками приделывать ардуиновские модули, точно так же как и к ардуине.
>Можно хоть осцилоскоп на ней запилить, синус-генератор и прочую обычно многократно оверпрайснутую технику для радолабы.
>12-Bit Resolution, 500Ksps Sampling Rate. SPI Interface.
>ЦАП только для звука.
Точно, можно. Так же как и на STM32 простеньких.
>>268325
>Фреймворки целые есть для работы с соотв. микрухами. И я же контроллер SD-карты не буду на ПЛИС делать, он есть на Cyclon'е, вместе с разъёмом.
ЧТО? Там SD карта напрямую приделана к FPGA, какие там могут быть микрухи?
А зачем тогда плодить еще один форум?
Да я в курсе, что полно моделей дешевле. На x86 у меня и пекарен полно. Я же говорю, вместо того, чтобы брать ad-hoc-железку от хуй пойми кого, лучше заплатить чуть больше и получить девайс, на котором при желании можно запилить что угодно. Один немец вбросил идею накостылять Lisp-адаптированный CPU и компилятор (то есть по сути LISP-машину) на FPGA. У меня самого подобная идея давно вынашивалась, а тут и в ирочке сообщество уже созрело, вроде бы. Ну и ещё есть пала больных идей по запилу кольцевых буферов и функционального рендеринга на ПЛИСке. Так что с выбором платы я вряд ли передумаю. Разве что ещё более йобу решусь взять.
>А зачем тогда плодить еще один форум?
Ну, как было отписано выше, большинство таких форумов имеют сильный коммерческий уклон. Я же хочу то же, что на FPGA4FUN, только поудобнее и на русском языке. Такое ощущение, что мало кто понимает, насколько охуенны ПЛИСы. Можно ведь на али заказывать дешманский обвес, прикручивать его к таким альтеровским платкам и костылять аналоги всяких осцилоскопов, синтезаторов, ЦАПов — чего угодно. То есть акцент всё болье смещается к коду. Я не говорю, конечно, что от схемотехники совсем можно отказаться, но там где раньше использовались дорогущие ЦАПы, к примеру, и бешено дорогие звуковухи, на их базе, можно народными (лол) силами запилить куда более дешёвые аналоги. Это же как с линупсом во времена его расцвета.
Было бы полезно забабахать анализатор протоколов(USB, SATA, Ethernet и т.п.) с открытым железом и софтом.
Суть проста: есть некий протокол, например USB. Для девайса наша железка прикидывается хостом, для хоста девайсом и пропускает через себя весь информационный обмен с возможностью захвата трафика.
>протокол, например USB
Суть охуенно как непроста.
>железка прикидывается хостом, для хоста девайсом и пропускает через себя весь информационный обмен с возможностью захвата трафика.
Что в итоге-то должно выйти? Просто триггерить протоколы хочешь или анализировать трафик на наличие чего-либо? Ты, часом, не из роскомнадзора?
>большинство таких форумов имеют сильный коммерческий уклон
А в чём выражается? Я вот, например, периодически хожу на электроникс, проблем, вроде, не испытываю, правда там местные обитатели малость бывает зазнаются, но это терпимо.
А так, как по мне, не форум нужно пилить, а свою борду, намного удобнее.
бери Ethernet, я серьезно
в разы проще USB
первый ethernet (со скоростью передачи около 3 мбит/с) вообще на коленке зделоли
поебаться только с гигабитным придется
алсо идея для анализатора эзернет - анализатор FLP, чтобы траблшутит проблемы автонастройки
>поебаться только с гигабитным придется
там двунаправленная передача по 4 параллельным линиям, в сулчае использования витой пары
Согласен, именно сам протокол простой. Только вот по изернету наверняка есть дешевые анализаторы. Да и вайршарком поснифать можно. С поправкой на то, что некоторые поля фрейма сетевая карточка может не показать
Обычно аудитория подобных форумов состоит из:
1. ардуинщиков всех мастей (роботостроители, автоматизаторы, лайфхакеры и проч), то есть те, кто предпочитает купить конструктор с руководством и собирать его;
2. ремотники оборудования, то есть люди хорошо разбирающиеся в говне современных сложных плат на высоком уровне, монтаже компонентов, экономической оправданности затей и т.п.;
3. дядьки за 40, паяющие порой довольно сложные девайсы, но что касается программирования - 0.
Все они могут быть как отличными специалистами, так и проблемными до мозга костей ЧСВшниками. Но обычно объединяет их нежелание искать новые решения. Если кто-то приходит и предлагает что-то на ПЛИСах, обязательно найдутся уверенные в том, что на советских релюхах всё будет работать куда железнее. А остальные согласно кивают, поддерживая авторитетов.
С ПЛИСами главное - код. А толковых погромистов вообще не так много. Надо содать условия.
>>268371
А целевая аудитория? Ethernet-сниффер cделать можно, только уверен, что не один ты будешь им пользоваться?
И в чём преимущество борды? В ламповости? В тредах, состоящих на 90% из хуйни?
Сюда можно задать какой-то вопрос, не боясь быть обоссаным мочератором. Можно поделиться бредовой идеей, которую стыдно озвучить без анонимности. Здесь нет ЧСВшных вниманиеблядей, нет ахуаров, которые пытаются на тебе заработать.
Ну и зачем-то ты сидишь в этом треде?
Картинка из Cyclone V GX Starter Kit, User Manual.
Ну не знаю...
>>268358
Я сравнивал этого китайца с SCSI2SD.
При чем тут х86? Это обычная альтера с минимальным обвесом.
>на котором при желании можно запилить что угодно.
Что тебя ограничивает, особенно по сравнению с SCSI2SD?
>Один немец вбросил идею накостылять Lisp-адаптированный CPU и компилятор (то есть по сути LISP-машину) на FPGA.
Тренируйся на симуляторе. Процессор на реальной FPGA будет работать абсолютно так же как в симуляторе.
>Ну и ещё есть пала больных идей по запилу кольцевых буферов и функционального рендеринга на ПЛИСке.
На SCSI2SD это вообще смешно, там нет на плате даже микросхемы DDR памяти.
>Можно ведь на али заказывать дешманский обвес, прикручивать его к таким альтеровским платкам и костылять аналоги всяких осцилоскопов, синтезаторов, ЦАПов — чего угодно.
Что мешает сделать то же самое на микроконтроллере или сигнальном процессоре?
>2. ремотники оборудования, то есть люди хорошо разбирающиеся в говне современных сложных плат на высоком уровне
Форумы ремонтников это отдельный разговор. Попробуй обратись за помощью на какой-нибудь monitor.net.ru
Они там обоссывают всех без разбору. Ибо если ты отремонтируешь свой девайс самостоятельно - у них не будет работы. Ахуенная логика сука.
Блядь, я даже знать не хочу, что у тебя за вопросы и идеи, за которые тебя модератор в FPGA-треде обоссать может. Ты так говоришь, будто я созываю народ перекатываться куда-то. Я спрашиваю только, не круто ли было бы запилить отдельный ресурс по ПЛИСкам с FAQ, Wiki, открытыми проектами, bug-трактором и прочими полезностями. Будет ли вообще в этом спрос. Вообще не удивлюсь, если всем похуй. Потому что даже на фриноде #fpga относительно мёртвый. Тема не то что новая, но популярность только начинает набирать (читай скоро будет дохуя дешёвого FPGA-железа). Это интересно, блядь. Вопрос только в том, мне ли одному.
Какие проблемы?
Звучит круто конечно, я бы и сам хотел вписаться в какой-нибудь opensource-проект по FPGA. Но только идей годных пока не нашел.
На SCSI2SD ARM справа вниху не просто так. Скачай исходники для V6 и посмотри заголовки хотя бы. В циклоне, понятное дело, и CPU, и контроллеры софтовые.
>При чем тут х86
Ну да, ни при чём. STM32 - это ARM. Сорян, попутал.
>Тренируйся на симуляторе.
Что тренировать? Навык симулирования работы индюшного SCSI-контролера? Пиздец, как же сложно с нискоуровневыми костыляторами общаться. Прочитай ещё раз >>268306
>На SCSI2SD это вообще смешно, там нет на плате даже микросхемы DDR памяти.
Ну ёб твою матушку. Тут ты уже перетолстил.
>Что мешает сделать то же самое на микроконтроллере или сигнальном процессоре?
>Если кто-то приходит и предлагает что-то на ПЛИСах, обязательно найдутся уверенные в том, что на советских релюхах всё будет работать куда железнее.
Вот такой хуйни на этих ваших бордах сотни. Пользы 0. Хуй знает, где вы тут ламповость или какие-то профиты находите. Одни тешат ЧСВ, другие боятся, как бы модератор их не обоссал.
Здесь уже проскакивала фраза, что знания, получаемые в ВУЗах устаревают на момент написания учебников. Не надейся особо на ВУЗ.
Ну меня цифровым схемам научили и синхронному проектированию, а на чём реализовывать, как говорится, сам думай.
я уже давно отмучился.
просто столкнулся на работе с проблемой лютого недостатка людей(нужно за год найти порядка 30 человек, военка, радиосвязь), способных вменяемо кодить под плис. Пытаюсь расшибать лоб сам, но я нихуя не погромист изначально, поэтому прогресс отрицательный. Утыкаюсь в элементарные вопросы на которые по два дня ищу ответы. Вот и стало интересно. Как уволят - в /dniwe пойду.
>просто столкнулся на работе с проблемой лютого недостатка людей(нужно за год найти порядка 30 человек, военка, радиосвязь)
Казавшийся бесконечным ресурс желающих за еду работать на самых мозгоёбных должностях внезапно закончился, вот ведь незадача.
Всё нормально. Это был временный перекос с прежних времён, но теперь всё устаканивается, переходный процесс завершается. Не может быть устойчивого потока желающих за гроши ебать себе мозги, не может быть устойчивого хай-тека в стране-бензоколонке.
>>266981-кун
Если не военнная тайна, хотя бы в общих чертах, что такого вы делаете на плисах, чего нельзя сделать на обычном микроконтроллере?
Ты чё, сука, наркоман штоле?
Человек же сказал радиосвязью занимается. О каких микроконтроллерах может идти речь?
>радиосвязью занимается
Теперь всё стало предельно понятно, это же РАДИОСВЯЗЬ, поэтому без ПЛИС никак.
Ладно бы ты еще про сигнальные процессоры спрашивал, так нет же, ты про микроконтроллеры.
я занимаю должность младшего черпальщика, однако плисо-грамистов нет и взять их негде, поэтому я пытаюсьпринудительно расшибать лоб об это. К слову меня уже почти уволили.
>>268567
цифровая обработка сигналовэто уже военная тайна конкретно радиоперехват, дешифровка разговоров, системы связи земля-спутник-земля
все это реализуется на плате размера А4, которая фактически компьютер на 1 - 12 плис с ОЗУ, ПЗУ, портами и тд, В крейте по 8-32 плат. Кол-во крейтов слабо ограничено. Вычислительные мощности представляешь? Охулиарды fft в секунду. Частоты спутниковой связи десятки гигагерц, кол-во каналов сотни-тысячи.
>>268519
ты пиздецки прав
старых более 3-5 лет стажа уволить нельзя
новых взять негде, разрабатывать некому а контрактов набрали
еще забыл что учить не хочет никто. Ибо сам себе конкурентов плодишь жопоголизм. Вот такая яма. Систему с циклом разработки 5-7 лет пытаются сделать за 1.5 года. До сдачи 8 месяцев, сейчас только комплектуха начинает приходить делать даже не начинали. Вот вам и роскосмос господа=)
Что есть младший черпальщик?
За что тебя хотят уволить? По моему опыту уволить человека с оборонного предприятия вообще анриал. Нужно капчевать без перерыва на обед, на работу класть хуй.
Сколько тебе платили?
С чем именно у тебя затруднения по ПЛИС?
Вкинь фейкопочту, пообщаемся..
инженер 3 степеникатегории
>За что тебя хотят уволить? По моему опыту уволить человека с оборонного предприятия вообще анриал. Нужно капчевать без перерыва на обед, на работу класть хуй.
а я по-твоему что делаю??7 Правда на обед хожу, вкусно готовят. У меня временный трудовой договор, можно уволить в любой час если не подходишь.
>Сколько тебе платили?
чистых в среднем 30к
>С чем именно у тебя затруднения по ПЛИС
с тем что я не программист вообще, попытка вычитать/записать память оканчивается провалом. Я прост вынужден на каждый долбоебский вопрос по полдня искать ответ в интернетах.
Придержи коней, анон.. Ты давно в оборонке работаешь? Еще не понял, как тут всё устроено?
Я трудился в одном почтовом ящике. На фоне своих коллег вроде делом занимался, разрабатывал новую железку.. Другие же занимались поддержкой старых изделий. Мой начальник нихуя не хотел меня стимулировать, хотя я много не просил. Надоело мне такое отношение и я уволился.
Железка моя к тому времени была фактически готова, осталось провести испытания.. Через джва года встретил своего коллегу, от него узнал, что моё детище так и не довели до ума, вместо этого дали заказчику бабла, чтобы тот принял сырое изделие.
работаю полгода, устраивался год.
к слову люблю сталк, так вот заводы брошенные в 90х похожи на мой чуть более чем полностью. Изменений вообще никаких. Ну совсем. вру конечно, ленина заменили на путена
Отписал тебе
Ну смотри, ты знаешь сколько ресурсов есть в этой плисине, теперь тебе надо загуглить утилизацию альтеровского ниоса(причем старого) и сравнить.
4k LE думаю маловато будет..
Я бы советовал подкопить деньжат и взять что-то лучше
Так, в том-то и суть, что я не знаю сколько в ней ресурсов. У них сук в разных моделях по разному устроены эти самые ячейке. Мне подойдет ответ в самом простом виде: мало/средне/много. Впрочем, все равно нужно наверное брать и пробовать. Я начал было в квартусе описывать ядро, но в эмуляторе его так неинтересно гонять =( Энтузиазм быстро пропадает без возможности пощупать все это дело вживую
Дело в том, что это семейство не поддерживает Nios II. По идее нужен старый Nios. Я с ходу что-то даже не нашел на него документацию
При чем тут конкретно ниос? Понятно что ниос для альтеры возможно будет лучше всего остального, но ему же сойдет и более простой процессор.
>>268602
Да, какой-то процессор можно сделать. Только что проверил этот простенький процессор: https://bitbucket.org/Shuleshkin/forth-computer/src/2071c158cfff4f3522a0f6107719302fb1484146/DE2_115/hdl/CPU/J1M.v
Заняло 83% Если оптимизировать под второй циклон, то возможно займет меньше.
Напиши процессор самостоятельно, это совсем несложно.
>>268634
Ну и зря, там же есть EP4CE6 всего лишь в полтора раза дороже.
>При чем тут конкретно ниос? Понятно что ниос для альтеры возможно будет лучше всего остального, но ему же сойдет и более простой процессор.
Зачем изобретать велосипед?
Во-первых можно не изобретать, а найти opencores простейший процессор, занимающий меньше места чем ниос.
Во-вторых тот анон хочет сделать что-нибудь для обучения, почему бы не самодельное ядро?
А так согласен, я сам не вижу смысла в использовании подобных самодельных процессоров.
Изобретать велосипед не стоит. Лучше заняться процом под который тулчеин имеется, ибо сурьёзный код на асме ебашить от корки до корки это пиздец.
>которая фактически компьютер на 1 - 12 плис с ОЗУ, ПЗУ, портами и тд
Какие типы плис используете?
Очевидные виртексы 6-7 очевидны.
В 2014 был. Я даже запускал на 4 и 5 стратиксах
Но почему-то при записи, судя по косвенным признакам, сначала стирается вся флешка. Это баг или я криворукий?
Наверное у меня скоро получится с помощью программ mb-objcopy и write_cfgmem, сделать единый mcs файл, но хотелось бы иметь возможность записывать это через графический интерфейс вивады.
Ты хочешь прошить сначала 1 файл, потом второй?
Я, например, собирал сначала один общий образ и уже его шил, при этом импакт намекал, что диапазоны адресов не смежные, но ему норм.
Какие там частоты?
Какие ваши предложения?
т.е. как я понимаю, в плисине должны быть специальные высокоскоростные ноги?
А что за корки, зачем они нужны, реализуют какое-то кодирование или зачем?
Да, даже не ноги, а специальные аппаратные блоки - мультигигабитные трансиверы. Корки нужны потому что документация на трансивер занимает несколько сотен страниц, а документация на корку - несколько десятков. Jни упрощают жизнь.
Данные которые передаются по высокоскоростным интерфейсам, типа USB/SATA/PCI Express/Aurora закодированы помехоустойчивым алгоритмом 8b10 или 64b66.
Всё рассчитано таким образом, чтобы на шине не передавалось несколько одинаковых бит подряд.
Кодирование реализуется аппаратно на уровне трансивера. В некоторых интерфейсах данные еще и скремблируются. Скремблирование и подсчет контрольных сумм уже делает корка.
>документация на трансивер занимает несколько сотен страниц
Я сейчас люто бомблю с этого. Дока на GTX у Xilinx на 500 листов, при этом написана она ну очень хуёво. Назначение некоторых выводов вообще не описано, в юзергайде просто указано рекомендованное значение.. Программисты называют такое Magic numbers.
В 6й серии трансиверы были проще!
А ты что с ним сделать хочешь? Руководство не выделяет бабок на лицензию для готовой корки HDMI/SATA/whatever?
>радиоперехват, дешифровка разговоров, системы связи земля-спутник-земля
Ты случаем не с Курска? Или с Орла?
Не работал в квартусе, но то что на скрине явно не то. Больше похоже на заданную в констейнтсах частоту сигнала clock
Какая fabric в крейте? Vpx, vme, cpci? Делали ли общение по pcie, или эзернет? Или лвдсами какое-то говно шлете как по уарту?
А что делать тогда? Не делать же одинаковые блоки на оба тракта. Наверное можно как-то коммутировать.
Почему?
Что за VCO с отверстием под подстроечник на втором пике?
Реквестую ссылки на такое, интересно почитать даташит на такое диво.
Я прекрасно вижу, что это кварцевый генератор в корпусе full. И, кажется, я понятно написал, что впервые вижу такое
>с отверстием под подстроечник
и попросил всего лишь ссылок на инфу по таким несколько необычным моделям.
>тупорылый
А еще я прекрасно вижу, что тебя сильно били по башке. Но, увы, видимо, недостаточно.
Блять, ну как ты себе это представляешь?
Расскажи, что конкретно за задача, а то кажеться что это какие то влажные фантазии без задач
Я сам пока только вливаюсь в работу с ПЛИС, так что мало могу пояснить по поводу отдельных элементов на платах.
Вот основная инфа от официалов:
http://www.4dsp.com/pdf/FMC150_data_sheet.pdf
http://www.4dsp.com/pdf/FMC150_user_manual.pdf
http://www.4dsp.com/pdf/4FM_Get_Started_Guide.pdf
>>271243
>>271343
На работе дали поиграться с этим набором для тренировки, чтобы хоть как-то начал осваиваться в аппаратной реализации ( занимался в основном мат. моделированием и с ЦОС баловался на матлабе, но теперь начальство походу хочет накинуть и работу с железом, хотя в вузике вообще ни с чем таким не сталкивался, так что кручусь как могу), и пока всё что смог – это клепануть FFT с DDS из CoreGeneartor'а, но как пройти дальше симуляции чётко себе не представляю. Для синтеза получившегося проекта нужно типа .ucf файл написать, и как будет там устроена распиновка – хз (нужно юзать только пины FMC или нужны будут какие-нибудь дополнительные манипуляции не ясно одно дело светодиодами поморгать, а совсем другое...).
>нужно типа .ucf файл написать
Взять готовый, если есть.
Если нет, то взять этот файл для ML605 с сайта ксайлинкса и в соответствии со схемой FMC-150 переименовать сигналы.
Задача - однополосный КВ трансивер (смотри тред про ЦОС).
Одни и те же блоки (ФНЧ, фильтр Гильберта) используются на приём и на передачу, и надо их разворачивать (пускать сигнал в обратную сторону), а не тупо дублировать.
Разобрался уже, пикрелейтед, работает. Не нужны тут двунаправленные шины.
Уже хуй знает сколько хотел вкатиться в плис(года два), и только ща развел отладку на епм3032, потыкался, и ее сразу оказалось невероятно МАЛО!
Внимание, ввопрос. где в ДС2 немедленно и сейчас купить отладку с альтерой на борту, какроцелов на 200+ и не какой нибудь йоба циклон который выйдет 10к.
Или могу с кем нибудь на что нибудь поменяться/купить.
Начни вкатываться с симулятора, а потом и плата приедет. Отладочная плата нужна для того чтобы на нее смотреть и радоваться что работает или для отладки работы с реальным внешним сигналом. Нет смысла вкатываться сразу с отладочной платой.
>какроцелов на 200+
Это очень мало. В это ничего кроме чего-нибудь вроде частотомера или генератора простого видеосигнала не влезет.
По моему нет смысла брать плату с CPLD для обучения. Например у китайцев плата с EPM240T100 (192 макроячейки) стоит около 400р, а с EP4CE10 (10320 LUT) около 1350р.
потому что это не шаблон а карта чтобы не проебать чо какой стороной ставить. ибо я еблан периодически могу ключем микру развенуть
>а вот хз. не люблю симуляторы.
Без симулятора будет сложно сделать что-то посложнее мигалки.
С осциллографом или логическим анализатором ты можешь очень долго искать какую-нибудь ошибку, вроде опечатки в названии сигнала. Verilog/VHDL вообще изначально создавались для моделирования.
Поэтому если действительно хочешь вкатиться, то придется освоить симуляторы.
>>271243
>>271352
>>271372
Возвращаясь к своему реквесту по поводу инфы о ML605-FMC150, хочу узнать, попадался ли кому-нибудь архив целиком или отдельные .ucf и .xco файлы для данного набора (архивчик раньше лежал тут: http://www.em.avnet.com/v6dspkit2.)
>https://www.xilinx.com/products/boards-and-kits/ek-v6-ml605-g.html#documentation
>ml605-ucf-rdf0041-rev1-0.zip
Сигналы на разъеме FMC все прописаны, остается только их переименовать. Их там всего лишь полторы сотни, часа за два можно справиться, даже если перепроверять по несколько раз.
Сам недавно так делал для плат с такими же разъемами.
А совета я спрашиваю по поводу чтива. Легко гуглится альтеровский туториал просто по "ручной" симуляции, но это для блочного шифрования какой-то пиздец же.
Проблемы, очевидно, не только с языком, но и с пониманием fpga и цифровой техники в принципе.
Просто используй пока и ковыряй простые вещи. Понимание всего потом придет.
>>273773
Таак бля ёпта, накатил ModelSim, поковырял примеры, так вроде что-то начало вырисовываться.
Прикрутил компонент (у меня всё на VHDL) симулирующий интерфейс со стороны контроллера, питон по табличному файлу "вход<->выход" генерит vhdl-код отправки данных по этому интерфейсу, потом запускается vsim -c -do ..., а там add list ..., write list ..., и снова скрипт, который этот list парсит, декодирует и сравнивает с ожидаемым выходом из того же табличного файла с тестами.
Вроде как и хотелось - из командной строки, можно рандомизировать, можно встраивать в make-файлы. Анон, а что, так и надо делать? Или я хуйню сотворил?
Попутно пока копался, заметил какие-то PSL и UVVM, но пока с ними не разбирался, а надо?
Чёт всё сложно как-то. Все необходимые воздействия можно сформировать средствами HDL-языка.
Если хочешь вкатываться по хардкору в верификацию, то кури UVM и SystemVerilog или OSVVM либу для VHDL-2008. Там есть и рандомизация из HDL, и code coverage, и логгирование результатов.
Как средствами HDL сымитировать AXI-Stream video на основе jpg-картинки, скачанной из интернета?
>>274135
> Анон, а что, так и надо делать? Или я хуйню сотворил?
Интересный вопрос. Я хз лол))))))))))) От этого безусловно веет кустарщиной. Что в этом решении хорошего - оно максимально отвязано от возможностей сапр, которые в электронике традиционно анальны, могут не поддерживать новомодные хипстерские средства верификации и т.д. А так всё, что требуется от них - уметь `include и $fwrite() (для верилога), остальное ты можешь на питоне сделать как угодно и очень быстро, это же питон.
Чтобы сделать из jpg-картинки видеопоток, тебе её надо превратить из сжатых бинарных данных в массив интеджеров размера X на Y на 3 (для RGB). Мз файла стандартным образом ты можешь прочитать сжатые бинарные данные, что с ними дальше делать?
Преобразуешь в свой массив интеджеров размера X на Y на 3 (для RGB) силами несинтезируемого подмножества, тестбенч же.
Или хочешь сказать, что имеющихся мощностей HDL-языка не хватит?
Делитесь опытом, жадины. Есть вариант бомжу написать мега-алгоритм на С++ и синтезировать его для зашивания в ПЛИС? Чего-то всё огорожено анально, будто кучка умачей сделали себе такие синтезаторы, компилят программы прям в железо и гребут бабло лопатой, а больше никого к себе не подпускают, пусть, мол, плебс дальше с Верилогом трахается.
>СистемЦ предназначен не для синтеза
Врёшь, жидорептилоид, есть же даже стандартизованный SystemC Synthesis Subset.
http://www.accellera.org/activities/working-groups/systemc-synthesis
Из того что я понял, СистемСи это не конвертер С++ в Верилог, это ещё один ХДЛ-язык на базе Си++, притом это обычный С++ плюс лол какая-то хитрая библиотека для синтеза параллельных процессов.
Так что взять и конвертнуть свой С++шный сорц не выйдет, в любом случае надо будет допиливать.
И есть ли здесь выгода надо ещё подумать.
С другой стороны я допускаю теоретическую возможность создания некоего конвертера преобразующего С++программы в автомат Мили.
Тащемта это называется HLS (https://en.wikipedia.org/wiki/High-level_synthesis) и инфы в инете много, но всё платное и непонятно насколько оно стоит внимания.
В частности интересует применимость для Altera и Lattice.
Тред не читал, сразу спрашиваю - как вкатываться в ПЛИС?
Квартус есть, легкие камни с 5 и 4 циклоном есть, программатор тоже. Где взять простенькие проекты для изучения-перепилов?
Как писать быдлокод под NIOS, чем компилить?
Как можно на FPGA реализовать подобие свича - гигабит на входе, (буфер ???), 100/1000 мегабит на выходе..
Есть, ищи RTL Diagram или что то такое
>Как можно на FPGA реализовать подобие свича - гигабит на входе, (буфер ???), 100/1000 мегабит на выходе..
Поищи здесь
>Communication controller
https://opencores.org/projects
как? до этого я напряжения складывал только операционником
Смотря какой бюджет
Очень рекомендую Z-Turn
www.myirtech.com/list.asp?id=502
100 баксов, современный камень и программатор не нужен
>www.myirtech.com/list.asp?id=502
Чот прям крутота. Zynq с гигом рамы и стоит дешевле чем De0 Nano. В чем подвох? Где покупать без СМС и писечек? Брать ли их шилд (Z-turn IO Cape)? Не пошлют ли с такой бордой вендорские тулзы?
Покупать прям на их сайте, в Киев доехало DHL-ем
Шилда у меня нет, но коннекторы на той борде довольно мелкие, шаг 1.27, так что без борды работать невозможно. Советую делать свою брекаут борда под конкретную задачу
>Да, штуки три.
Не понял. Чего штуки три?
>Подвоха нет, сам ждал
Тулзы ок? Чем пользуешься?
>Правда я половину переферии не использую (HDMI, CAN)
С HDMI там какая-то муть насчет лицензии на блок IP, который они упоминают.
Где покупать-то, покупать-то где? Прямо у них или как?
Помогите чем могёте. Где про неё можно почитать? К буржуям не отправляйте, у меня с англюсиком плохо.
Было бы хорошо, если бы кто-то из вас научил меня, а ещё лучше если бы не поленился и запилил видос с комментариями.
>Не понял. Чего штуки три?
Три борды, а ты о чем подумал?
>Тулзы ок? Чем пользуешься?
А что тулзы, стандартная вивадо да линуксовый тулчейн. Да программатор для дебага, для прошивки не нужен
>С HDMI там какая-то муть насчет лицензии на блок IP, который они упоминают.
Есть такое, но есть куча вариантов...
>Где покупать-то, покупать-то где? Прямо у них или как?
Прямо у них на сайте через пейпел
>Три борды
То есть ты эту плату не в качестве devboard используешь? Иначе зачем три?
>стандартная вивадо да линуксовый тулчейн. Да программатор для дебага
В общем все они таки работают нормально с этой платой?
>То есть ты эту плату не в качестве devboard используешь? Иначе зачем три?
Да, единичные кастомные девайсы
>В общем все они таки работают нормально с этой платой?
Ну да, никаих проблем не нашел
>На али такая ёба в джва раза дороже. В чем подвох?
Хер его, маркетинговые чудеса
на али девайсы с хобикинга тоже дороже
Разобрался, там полный фарш продаеться с болком питания, кабелечками и материнской бордой
>единичные кастомные девайсы
А ведь дейтствительно имеет смысл наверное.
Посмотрел сейчас на digikey, цены на голый чип начинаются с $46, а 7010 - так и с $58. И это еще добавлять ОЗУ, разводить плату, паять с программируемым профилем нагрева и вся остальная еботня.
Вообще эта ебанутая ценовая политика FPGA-вендоров задрала уже. Крупняку они все это продают не то что в разы, но в десятки раз дешевле, а обычным людям вот такие йоба-цены выставляют. А потом плачутся что FPGA как-то хуево идут в народ. Ну что за долбоебизм-то такой. Ну и с тулзами пиздец конечно у всех.
Ну чего, цену STM32DISCOVERY они не могут сделать, ПЛИС это дорого и мошьно, я считаю что все в гармонии
Могут же. Ну не одной discovery, а двух-трех, но могут.
Иначе так оно в народ и не пойдет. И нормальных свободных тулзов так и не появится. С FPGA фактически ситуация как с компьютерами до IBM PC (а может быть даже и как до IBM360).
А вот у них такая еще есть, фарша заметно больше, а деньги те же - в чем минус?
http://www.myirtech.com/list.asp?id=525
Разобрался, вопрос снимается.
Это просто модуль для их девборды (которая с фаршем, но за $300).
Ну сделай свою ПЛИС с человеческим лицом к простому народу и швабодкой. Повторишь успех IBM PC, вытеснишь всех с рыночка и запануешь.
Скорее успех ардуинки
Предположим в наш модуль на вход поступает signal_1. При переходе signal_1 из 0 в 1, signal_2 на один такт clk переходит в 1 и затем переходит в 0 до тех пор, пока signal_1 опять не перейдет из 0 в 1.
Сорян, что так сумбурно написал, но думаю вы меня поймете
Типичная схема выявления нарастающего фронта.
reg Temp;
always @(posedge clk) Temp <= signal_1;
assign signal_2 = signal_1 & !Temp;
Здесь предполагается что signal_1 синхронен с clk.
Спасибо, лаконично вышло
Да это всё хорошо, но говорю же, с англюсиком плохо у меня.
> Какие-то мак-адреса, какая-то хуйня.
Ты настолько туп, что не можешь посмотреть свой мас-адрес, отослать запрос в Альтеру и получить бесплатную лицензию? Надеюсь ты качал веб-эдишн, а не субскрайб?
>отослать запрос в Альтеру
Ну-ка, опиши как это сделать. И какого хуя веб-эдишен сразу не идет с лицензией?
https://www.altera.com/support/support-resources/download/licensing.html
Они хоть и пишут, шо - Quartus Prime Lite Edition or Quartus II Web Edition - NO License Required у меня матерился и требовал лицензию.
Идешь сюда и ебашишь себе лицензию https://mysupport.altera.com/AlteraLicensing/license/index.html
Я уже написал половину проекта с такими FIFO, но т.к. я не пользуюсь (не умею) QSYS), то у меня в проекте получилось уже 15 FIFO 2-4 битных разрядностей, в которых никогда больше одного слова не накапливается (статусы меняются всегда 1 раз в 16.6 мс). К тому же появилось куча костылей в виде ACK сигналов на каждом подблоке DSP блока. Иными словами, уже места в голове не хватает, чтобы помнить за что какой сигнал записи в FIFO отвечает.
Спасибо, может потом попробую эту хуйню. Пока поставил зайлинкс, ХОТЯ БЫ ТАМ нет этого гемора с лицензиями.
Качай Квартус версии 9.1sp2 самая пиздатая версия. Она и на рутрекере есть крякнутая.
1. Это последняя версия где остался встроенный симулятор, хотя он тебе, наверно, нах не нужен, он не понимает HDL.
2. Не тормозящий графический редактор схем, наверно, тебе это тоже не надо.
3. Быстро и компактно компилит. Сам не проверял, но люди говорят, что у них были проекты у которых 95%-тные заполнения, 9.1 компилил такие, а старшие версии говорили что проект большой для данной плисины. Буржуи пидоры специально так делают чтобы более жирные чипы покупали.
4. Можно взять с рутрекера, легко крякается.
> встроенный симулятор
А Моделсим чем тебе не нравится?
> легко крякается.
Старые крякались заменой нескольких байт в НЕХ-редакторе.
>А Моделсим чем тебе не нравится?
Всем нравится. Я сейчас юзаю QuestaSim какой-то версии не помню, тоже самое что и МоделСим, только они его почему-то КвестаСимом обозвали, тоже на рутрекере с кряком есть.
>Старые крякались заменой нескольких байт в НЕХ-редакторе.
Ну не только, там ещё в самом файле лицензии нужно свой мак-адрес поставить много-много раз.
Хотел меню с чекбоксами замутить, а тут чего-то того этого.
Если память девать некуда, то так можно сделать. Либо отдельно память со шрифтом, отдельно с текстом. Неплохим вариантом может оказаться использование NIOS/Microblaze.
Ну понятное дело, что таким топорным способом не хочется делать. А какие варианты то?
Вот использовать софт-ядро это тема очень даже, надо почитать про это повнимательней.
Памяти это тебе не сэкономит, картинки всё равно где-то хранить надо.
Можно попробовать на ходу вычерчивать квадратики и прямоугольнички, типа как векторная графика.
Вот это более-менее мой вариант. Нужно то всего генерить строки текстовые, да перепещать какой-нибудь радиобаттон справа для визуализации выбора.
Ты о чем? Речь же шла о текстовом меню. Для экономии памяти достаточно лишь хранить текст и шрифт отдельно.
>>283650
Примеров с выводом текста на экран с помощью FPGA полно:
https://github.com/Derek-X-Wang/VGA-Text-Generator
https://saveriorusso.wordpress.com/
https://www.mikrocontroller.net/topic/349089
Во всех этих примерах используется отдельная память со шрифтом и отдельная с текстом. По моему это очень простые устройства, в чем тут могут быть трудности?
Ну мне нужен не просто текст, а меню с подсветкой выбранного варианта. Может там легко это модифицировать просто изменением цвета шрифта, например, я пока не особо углублялся.
Но у тебя же на картинке combo box. А чекбокс можно сделать как пару обычных символов.
>изменением цвета шрифта
В тех примерах на которые я ссылался это делается элементарно. По моему, для простых выпадающих списков достаточно будет комбинации одного из тех примеров и простейшего процессора. А с более красивыми визуальными эффектами будет немного сложнее.
например:
0h = 0;
01h = 1;
02h = 1;
03h = 2;
04h = 1;
...
и т.д.
Представить байт в виде отдельных бит и сложить. Я б так сделал:
reg [7:0]byte;
reg [3:0]nobits;
wire bit0;
wire bit1;
...
wire bit7;
assign bit0 = byte[0];
assign bit1 = byte[1];
...
assign bit7 = byte[7];
always @ (posedge Clk)
begin
nobits <= bit0 + bit1 + ... + bit7;
end
Типа такого (тут пример с четырехбитным словом, чтобы много не писать). Короче, обычный преобразователь кодов без триггеров.
architecture Behavioral of main is
begin
s <= "0001" when c="0001"
or c="0010"
or c="0100"
or c="1000" else
"0010" when c="0011"
or c="0101"
or c="1001"
or c="1010"
or c="1100"
or c="0110" else
"0011" when c="0111"
or c="1110"
or c="1011"
or c="1101" else
"0011" when c="1111";
end Behavioral;
логика короче. макс частота выше, но размер больше
Тот случай, когда синтезатор умнее человека. Вивадо развела эту схему в два каскада лутов.
Самостоятельно я бы ебался со всякой хуйней типо карт карно пожалуй пол дня
говорю же, вивадо мне развело эту схему в два каскада лутов. Куда уж более оптимально?
rtl - это синтез, математическая модель, там совсем не то что после компиляции бывает.
Ух ты, это симулятор плиса/логики с изображением в виде схемы? Хотет.
Раньше не хотел связываться, потому что у плиса 100 циклов перезаписи и они дорогие.
Как называется прога?
Да это Vivado 2017 же.
С добрым утром, RTLviewer называется.
> потому что у плиса 100 циклов перезаписи и они дорогие
Лол, что?
У так называемых FPGA флешка внешняя и циклов перезаписи в ней как у обычной УСБ-флешки. А младшие модели этих плисин стоят около 1,5к руб.
>Лол, что?
В даташитах альтеры так написано. Странно, учитывая что для микроконтроллеров десятки тысяч циклов.
>младшие модели этих плисин стоят около 1,5к руб.
Младшие модели ФПГА? Все равно это дороже стмки за сотню.
Но внешний флощ круто.
компиляция это такое условное понятие. в случае плис это синтез, фиттер и асемблер. так что не пизди тут, пожалуйста. будь няшкой.
Сам будь няшкой и не вводи путаницу в терминологию. Компиляция - вполне конкретное понятие, включает в себя всё тобой перечисленное, она состоит из этих этапов.
В какой-то степени так и есть.
>>283969
Блин, ну одну-две можно купить. Но что с ней делать? Да, там овердохуя ячеек, и все дела. Но это одна девайсина.
Впрочем, если использовать FPGA как отладочную платформу, а готовые изделия пилить на минимально достаточных плисках, то им не понадобятся тысячи циклов.
Да. Есть какие-то траблы с этим?
>Блин, ну одну-две можно купить. Да, там овердохуя ячеек, и все дела. Но это одна девайсина.
У тебя там промышленные масштабы что ли?
>минимально достаточных плисках
Я больше по FPGA, как там сейчас обстоят дела у CPLD не в курсе, по канону эти CPLD призваны заменить собой рассыпуху, что-то более менее значимого ты на них не сделаешь, так что могу тебе посоветовать первое время поюзать что-то вроде:
https://ru.aliexpress.com/wholesale?ltype=wholesale&d=y&origin=y&isViewCP=y&catId=0&initiative_id=SB_20170517141900&SearchText=waveshare+altera+cyclon&blanktest=0&tc=af
а дальше освоишься и сам решишь что тебе нужно.
>А младшие модели этих плисин стоят около 1,5к руб.
Тоже так поначалу думал, пикрелейтед считал наёбом. Пока не приехало и оказалось рабочим.
Крут. Чтобы пикрелейтед повторить с 4-мя ADC-каналами, какой уровень радиодрочерства нужен по 80lvl шкале?
>4-мя ADC-каналами
Но их там два. И два DAC.
Частота дискретизации меньше 100 МГц, значит выравнивать длины проводников не нужно. То есть с разводкой справиться не сложно. Платы можно заказать у китайцев, при большом желании можно и самодельные сделать.
Припаять все это тоже не сложно, т.к. нет даже QFN.
>Но их там два.
Ну так я и говорю, нужен аналог с четырьмя. Сомневаюсь, что если заказывать плату по проекту китайцам, выйдет дешевле. Я прост нафантазировал себе, как костыляю осциллограф, функциональный генератор и ещё кучу всего на одном циколне, но время/деньги говорят, что проще заработать и купить готовое. С другой стороны с ныне дешёвыми циклонами очень хочется поиграться, да и платки паять придётся всяко.
>Сомневаюсь, что если заказывать плату по проекту китайцам, выйдет дешевле.
Десять двухслойных плат с размером до 10х10 см будут стоить 1500...2000 рублей вместе с доставкой.
Или ты еще и про сборку у китайцев?
>Я прост нафантазировал себе, как костыляю осциллограф, функциональный генератор и ещё кучу всего на одном циколне
В осциллографе кроме этого еще много чего должно быть. А программировать все это придется еще дольше. И осциллограф с частотой дискретизации 65 МГц, или даже 200 МГц - это всего лишь детская игрушка.
>>284187
Всмысле? В пайке сложнее QFN может быть BGA. Паять QFN сложнее чем QFP, хотя бы потому что нужен фен.
Вообще никогда не понимал как вы умудряетесь паять этот пиздец. Они же вроде выпускаются для заводской пайки роботами?!?!
>В пайке сложнее QFN может быть BGA
А в чем сложность запайки BGA? Ну, кроме необходимости наличия ИК-станции для больших чипов.
Я к тому, что отсутствие молотка при необходимости забить гвоздь - не означает, что забивание гвоздей является чем-то сложным.
>>284200
Просто мы - роботы, очевидно же!
>Или ты еще и про сборку у китайцев?
Лично мне хотелось бы только с программной частью работать, но выходит так, что если аппаратная часть уже готова, то она либо обрезанная, либо на китайских костылях, либо очень дорого и ещё и без проприетарных IP-ядер работать не будет. Китайцам партию заказывать будет время, когда уже не будет сомнений в оправданности вложений в такой проект.
>В осциллографе кроме этого еще много чего должно быть.
Кроме ПО делители. Буферы в Terasic'овской плате и так есть, насколько я помню. Что-то ещё?
>А программировать все это придется еще дольше.
Есть несколько человек, интересующихся темой (даже куда более сложной, чем осциллограф/ФГ) чисто for fun. Это железных дел мастеров днём с огнём не сыщешь.
>осциллограф с частотой дискретизации 65 МГц, или даже 200 МГц - это всего лишь детская игрушка.
Много ты знаешь осциллографов, работающих на >200Мгц только в реальном времени? Вообще, для подавляющего числа случаев использования осциллографа, насколько я знаю, хватает Sample Rate, растянутой во времени буферами (Equivalent-Time Sampling rate). Как-то преобразовывать высокочастотный сигнал задача уже для устройств другого уровня.
>Буферы в Terasic'овской плате и так есть, насколько я помню.
Там трансформаторы, это для осциллографа не подойдет.
>Много ты знаешь осциллографов, работающих на >200Мгц только в реальном времени?
На работе есть несколько. Хотя да, не намного больше 200 МГц.
У нормального энтри-левел осцилла sample rate от 1gsa/s, то есть нормальные измерения до 100 мгц частот.
А эквивалентный режим давно обоссан, он не работает как надо даже с повторяющимся сигналом.
>У нормального энтри-левел
>нормальные измерения
>1gsa/s, то есть … до 100 мгц частот.
>А эквивалентный режим давно обоссан
Меня как-то отправляли в Тюмень за 50к на недельные курсы asp.net при том, что я его уже неплохо знал.
Прост надо было бюджет на обучение освоить, хоть контора и не распильная. А для меня такой-то отпуск лол.
Аналогично. Но тема интересна и хочется дальше двигаться в ней, работать в т.ч.
Алсо, тут можно попросить помощи в реализации одного проекта?
Когда игрался со свистоперделками на отладке все было отлично, тут же не очень.
Описать в коде могу все сам, только понять бы что писать.
Белый экран, вообще ничего не подгружается
>>284640
Есть отладка с XC6SCLX9 на борту и MLX 90614.
Примитивная задача, нужно организовать обмен данными от температуре датчик => плис, складывать их куда-нибудь, в 2 регистра по 8 бит, допустим.
Примеры подобных проектов в интернете не нашел, хотя казалось бы.
Вопросы:
Как реализовать Z-состояние? Как описывать I/O пин в констрейнах? Вообще не понимаю как пользоваться примером описания из ISE, какие-то параметры, о которых даже в офф документах мало что сказано.
Обязан ли я подводить обе линии к питанию через резистор? Почему не могу от мастера подавать единицу когда захочу?
(Пока писал, понял, что датчик не сможет отвечать в таком случае, но почему с тем же успехом не могу дергать чисто SCL?)
Как обращаться к датчику? Есть дефолтный адрес с которым все работает, хорошо. Но дальше нужна команда чтения из EEPROM к какой ячейке обращаться?
Вроде бы все. Только вкатываюсь в тематику, все очень нравится, но туповат.
>Как реализовать Z-состояние
Кстати тоже интересует вся эта хрень. Киньте литературы, где описано в подробностях (со схемами и проч.) как работает двунаправленная шина, например.
>Как реализовать Z-состояние?
input I;
output O;
inout pin;
input T ; // out enable
assign pin = T ? I : 1'bz;
assign O = pin;
pin выводишь реально на пин, z состояние реализуется только в буферах микросхем, внутри плис этого нет уже.
Происходит следующее. Ты хочешь начать передавать I в pin. для этого ставишь T=1;
Например, послал ты команду и ждешь ответа, тогда ставишь T = 0. Источник напряжения при этом отключиться от пина и пин будет z состоянии (в состоянии высокого импеданса), т.е. не будет влиять на шину. И сигнал от периферии можно будет с неё прочитать. А сигнал как правило будет в четко определенное время. Из O все это вынимаешь по протоколу.
Если интересно что там под капотом гугли уже сам tristate buffer или типа того. Но со стороны ПЛИС это все что нужно сделать.
>Как описывать I/O пин в констрейнах?
в данном случае это не нужно, слишком все медленное. А вообще описывается минимальная и максимальная задержка (set_input_delay)
>Вообще не понимаю как пользоваться примером описания из ISE, какие-то параметры, о которых даже в офф документах мало что сказано.
не понял о чем речь, я на Альтере
>Как обращаться к датчику? Есть дефолтный адрес с которым все работает, хорошо. Но дальше нужна команда чтения из EEPROM к какой ячейке обращаться?
в даташите все написано же, какой-то SMBus, который типа I2C. Попробуй почитать про I2C, более распространенная вещь.
ПС сори за мутное изложение.
>Как реализовать Z-состояние? Как описывать I/O пин в констрейнах?
Открываешь library guide на spartan6 https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/spartan6_hdl.pdf
Там ищешь компонент "буфер ввода-вывода с Z-состоянием", такой есть на странице 132 и называется IOBUF. 4 порта, все описаны. Ниже есть пример его вставки в проект на VHDL и Verilog, копируешь, подключаешь соответствующие цепи (вход, выход, управление состоянием, вход-выход, торчащий наружу). Потом в констрейнтах надо будет прописать, на какую ногу торчит цепь входа-выхода, и всё.
>(Пока писал, понял, что датчик не сможет отвечать в таком случае
Ещё хуже - если датчик попытается ответить, то получится короткое замыкание с VCC на GND.
>, но почему с тем же успехом не могу дергать чисто SCL?)
Потому что i2c имеет такой механизм, как clock stretching - если слейв не успевает, он может придавить к земле клок, в этом случае мастер обязан мониторить и ждать, когда клок встанет обратно.
Внутри плисины двунаправленных шин нет. Снаружи они заводятся через буферы ввода-вывода (типа того же IOBUF), который внутри плисины раскидывает их на отдельные сигналы ввода, вывода и переключения состояния.
Так, ну об этом читал и понимал как работает, но еще раз спасибо.
> даташите все написано же
Да, какая-то околоI2C-шная хреновина, которая даже не знаю даже чем отличается координально.
Проблема как раз в том, что не могу понять нужный абзац из даташита корректным образом.
>>284685
> потом в констрейнтах надо будет прописать
Из примера описания ISE, опять же, вытащил вот такую строчку:
> NET "netname" LOC=P(pin №) |IOSTANDARD=(Что-то из даташита на микросхему?)|SLEW=SLOW|SUSPEND=3STATE_PULLUP|IN_TERM=NONE|OUT_TERM=NONE;
Последние параметры вообще без понятия что это.
Или достаточно будет прописать NET "netname" LOC=P(pin №), если осуществить описание схемы, как ты сказал?
Да, по поводу организации питания понял, буду все перекраивать.
IOSTANDARD обязательный, без него битстрим не сгенерируется.
SLEW - скорость переключения
SUSPEND - поведение в режиме сна
*_TERM - это встроенные резисторы, которые подключаются к пину для согласования импедансов в быстрых стандартах передачи сигналов (терминаторы).
Кстати, ты можешь не вешать на i2c внешние резисторы к VCC, а подключить встроенные в плис, для этого есть атрибут PULLUP.
Да,есть все подозрения полагать, что это LVCMOS33.
>>284693
> для этого есть атрибут PULLUP
Черт, звучит неплохо. Единственное, как тогда реализация будет выглядеть?
Тогда и писание будет проходить через кристалл, грубо говоря, не?
А по поводу всего остального. Кроме IOSTANDARD'а ничего не трогать и так оставить?
>Тогда и писание будет проходить через кристалл, грубо говоря, не?
PULLUP подключается не к питанию кристалла (оно мелкое, 0.8-1.2В обычно), а к специальной шине VCCO, к ней же подключается питание буферов на пинах. Да, тебе в любом случае надо будет запитать её согласно даташиту, если ты планируешь использовать LVCMOS33.
>Кроме IOSTANDARD'а ничего не трогать и так оставить?
Да, это всё для высокоскоростных интерфейсов, к которым i2c не относится.
Для меня загадка, как могут за 3 дня научить верилогу. И это ж наверно не по 24 часа там сидят, максимум часов 8.
бездарю эти курсы не помогут.
если человек нормальный, о сам это быстрее прочитает.
плюсы у курсов на самом деле есть. если там достаточно сложная и для вас абсолютно новая. вам опишут возможности и покажут флоу. вы сэкономите немного времени.
за свои деньги это делать абсолютно нельзя
Инфу нормальную очень сложно зачастую найти, чтобы с нуля вкатиться. Нужно перебрать десятки всяких монографий, прежде чем наткнешься на что-то толковое. С чего начинать не знаешь, всей картины целиком не представляешь и нигде это не написано.
Жиза(((
угарнул содомит. мы же про плис говорим, а не что-то волшебное.
у альтеры есть супер отличные манулы для новичков, просто по ним все повторяешь и все. есть примеры на все случаи жизни.
есть книги прекрасные, даже на руском. харис и харис например.хорошие статьи на ките, на хабре и тд. есть видео даже на ютубе.
просто кому-то проще ныть, чем читать.
да даже если отойти к науке, то по любой науке есть несколько признанных центральных общих книг. одну книгу читаешь и ты в теме.
что-то современное конечно другой разговор, но нахера тебе что-то новое без базы.
>вам опишут возможности и покажут флоу
За 70к? За 70к, блядь, они мне флоу покажут?
Я тоже кому-нибудь хочу флоу в Квартусе показать, хотя бы за 20.
Есть какие-либо бюджетные отладочные платки, чтоб вкатиться в загадочный мир ПЛИС?
Это для HSTL и SSTL, для остальных не требуется вроде бы. Вообще все это несложно найти в документации. Нужно учитывать, что не все банки поддерживают все возможные режимы (уровни напряжения и прочее). И естественно, нужно учитывать то что разные режимы требуют разного напряжения питания. При питании 3,3В выводы могут работать только в режимах 3.3-V LVTTL и 3.3-V LVCMOS.
>>285101
Не угадал. И есть более дешевые платы https://ru.aliexpress.com/item/EP4CE10/32637947021.html
Когда учишься сам - получаешь инфу из разных источников, обрывками.. В голове каша. Приходишь на эти курсы - тебе все раскладывают по полочкам.
С нуля я бы туда не советовал ходить.
У разных людей разный склад ума. Кто-то, привыкнув к общепринятой системе образоваиния, предпочитает заплатить, получить диплом (и бонусом 100-процентный манёвр "нас этому не учили"), кто-то разбирается сам. Первые, если материал усвоили хорошо, как правило, применяют его хорошо после стажировки и в конторках с узкой специализацией. В остальном к ним можно обращаться разве что за справочным материалом. А самоучки совсем разные, но с "карьерной лестницей" хуже, опять же, как правило.
Возмущает не наличие или отсутствие подобных курсов - они конечно нужны, возмущает их запредельная стоимость.
Ну, можно, конечно, возмущаться, а можно разобраться в ценоформировании и, возможно, какие-то профитные выводы для себя сделать. Капитализм. Добро пожаловать.
>разобраться
Да и так понятно, желающих мало, вот они и решили при первой возможности с каждого три шкуры драть, думая что на дураках наживиться сумеют. В итоге на такие курсы идут всё меньше, а они цены ставят всё больше.
http://www.ixbt.com/video/postfilter.html
не знаю это ли тебе нужно, но статья всё равно интересная
про палитры bmp файлов можно найти в соответствующей статье на википедии
не совсем мне нужно заранее посчитать значения для компонент цветов моей исходной палитры
Это на LUT делается. Сохраняешь соответствующие каждому уровню компоненты R, G, B в память BRAM по адресам 0..255. Потом входной сигнал подаёшь на шину адреса, а выходной снимаешь с шины чтения данных.
>>285181
В смысле "заранее посчитать значения для компонент цветов моей исходной палитры"? В фотошопе открой свою палитру и пипеткой посмотри. Если в матлаб не можешь.
у меня и вопрос как узнать то эти значения для данной палитры на глаз сидеть подбирать чтоли для каждого цвета?
В матлаб загрузи картинку с палитрой и посмотри.
https://www.mathworks.com/help/matlab/ref/imread.html
вот это именно мне и нужно было, спасибо
долго, хотелось быстро получить табличкой
она почти 9 килорублей стоит. Более бюджетные есть? Схуя такой ценник на эти плис?
>она почти 9 килорублей стоит. Более бюджетные есть? Схуя такой ценник на эти плис?
80 бачей. для белых людей копейки.
кто ж виноват, что у нас страна нищая?
По моему, относительно отладок с микроконтроллерами, цена не намного больше. Достаточно сравнить:
http://store.digilentinc.com/arty-artix-7-fpga-development-board-for-makers-and-hobbyists/
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=593&PartNo=1
и
http://www.st.com/en/evaluation-tools/32f746gdiscovery.html
А самое главное, что для вкатывания в ПЛИС, отладка с ПЛИС не обязательна. В отличие от микроконтроллеров, симулятор имеет совсем другое назначение.
я бы не стал советовать китай для первого раза.
там документации нет, примеров нет, мануалов нет, обсуждений никаких нет.
да и косяки могут быть.
проще один раз пройти по альтере родной, а дальше уже дело техники
есть такой вопрос, у меня сейчас имеется одна китайская отладочная плата с альтеровской плис у которой программу надо каждый раз грузить через JTAG, а при старте она загружает программу из флеш памяти на плате. Как можно сделать чтоб при старте она всегда загружала ту программу которую я в неё заливаю, ну или можно ли не выпаивая перепрошить эту флешку на плате как нибудь? Также вопрос вот по этой плате
http://www.waveshare.com/product/fpga-tools/coreep2c5.htm
у неё также надо каждый раз грузить программу JTAG или она сразу прошивается в флешку на плате? Как вобще это определить по внешнему виду платы ?
флэшка подключена к jtag? тогда поф прошивай в нее.
если подключена отдельно то конверни соф в жик и прошивай через плис
>флэшка подключена к jtag
как это узнать? он шьёт в ПЛИС .sof фаил
> конверни соф в жик и прошивай через плис
и как это сделать?
мне не к спеху я на будущее спрашиваю, хочется просто купить плату которая шьётся сразу в флеш без постоянных перезаливок
>и как это сделать?
file -> convert programming file
Указываешь в окне тип своей флешки, выходной файл jic и ещё какие-то опции по мелочи, разберёшься кароч.
Как прошьёшь во флешку - передёрни питание.
да там только плис
>Какой там может быть пример, если там нет никакой периферии кроме одного светодиода?
у меня вот на плате и rs232 и vga, и ps/2, а примеров неn, нужно гуглить
похожа только у меня синяя с циклон 2, меня китайским не напугать я на таобао отовариваюсь
5V я могу подавать/снимать с её выводов?
50MHz этой FPGA как будут дружить с 8MHz ардуины?
Цель - поучиться немного работе с FPGA и верилогами, ну и сэкономить на 74HC микросхемах лол.
>я ведь смогу делать на ней разные rs/d-триггеры, регистры сдвига и прочие мультиплексоры/сумматоры
ну да, они там такое есть, почитай сперва про структуру ячеек, много вопросов развеет
>подключать с их помощью какие-нибудь светодиодные матрицы/клавиатуры к своей ардуине?
диоды к плис? а плис а ардуину чем соединять хочешь? spi?
>5V я могу подавать/снимать с её выводов?
подавать вроде да, снимать нет, 3.3максимум.
>50MHz этой FPGA как будут дружить с 8MHz ардуины?
всмысле?
>диоды к плис? а плис а ардуину чем соединять хочешь? spi?
spi/i2c/etc. поупражняться же
>всмысле?
Вопрос снимается, эт я торможу
А легко ли нечаянно сжечь подобную борду? Может парочку взять? Или несколько запасных чипов циклона купить, чтоб перепаять, если что?
можно сжечь ядро, через жтаг или питание, но надо подать дофига или закоротить.
питание банков io отдельное, и если подашь дофига на ножку, то может сгореть ножка, а может и банк. но остальное скорее всего выживет.
посмотри в даташите ограничения по току на ножках (12 или 24 мка вроде). или в пинплэнере это видно в кварте.
крч нифига не сгорит, если работать нормально
Практически за те же деньги там продают подобные платы с 4-ым циклоном, причем с большим числом LE. Покупать платы с уже сильно устаревшими ПЛИС нет смысла.
>я ведь смогу делать на ней разные rs/d-триггеры, регистры сдвига и прочие мультиплексоры/сумматоры и подключать с их помощью какие-нибудь светодиодные матрицы/клавиатуры к своей ардуине?
Для таких простых устройств FPGA применять не целесообразно, лучше использовать CPLD. FPGA целесообразно применять для более сложных задач, например для вывода сложного изображения на монитор через VGA.
>А легко ли нечаянно сжечь подобную борду?
Сжечь ПЛИС не намного проще, чем сжечь атмегу. Если ты не жег свои ардуины, то и ПЛИС не сломаешь.
>Сжечь ПЛИС не намного проще, чем сжечь атмегу. Если ты не жег свои ардуины, то и ПЛИС не сломаешь.
Существенно проще. Невероятно нежная штука.
>Практически за те же деньги там продают подобные платы с 4-ым циклоном, причем с большим числом LE. Покупать платы с уже сильно устаревшими ПЛИС нет смысла.
Можешь ссылочку на что-то конкретное кинуть? Я в глаза долблюсь, но вижу с 4 циклоном только от 1800 руб.
>Для таких простых устройств FPGA применять не целесообразно, лучше использовать CPLD. FPGA целесообразно применять для более сложных задач, например для вывода сложного изображения на монитор через VGA.
>>285710
>Цель - поучиться немного работе с FPGA и верилогами
После элементарщины меня на что-нибудь посложнее потянет, а ждать железку с али ещё 2-3 недели я уже не смогу
Как-то не заметил этого. Много раз соединял выход микроконтроллера с выходом ПЛИС, так ничего и не сгорело. Сжечь отдельные выводы мне удавалось лишь неосторожно тыкая в них осциллографом.
>>285756
>Можешь ссылочку на что-то конкретное кинуть?
>>285104 Документация отсутствует, но это не критично, т.к. схема типовая, а на плате все подписано.
Еще есть то же самое, но со схемой: >>285254
>неосторожно тыкая в них осциллографом
Закоротил выводы щупом штоле, или есть другие способы?
Есть задумка сделать чудо-цап аудиофильский на одном чипе и небольшой россыпи транзисторов, т.е. на "микроконтроллерной" части чипа - USB-приёмник или миникомп с линухом, чтобы считывать файлы и подавать на FPGA-часть, на которой запрограммирован цифровой фильтр и дельта-сигма модулятор однобитный, далее аналоговый FIR на резисторах и уже потом обычный восстанавливающий ФНЧ на ОУ.
Кто-нибудь делал похожее? Из опыта, как много ячеек займёт фильтр и ДС-модулятор в плисине?
ну а хули предлагаете оверпрайснутый кал для топ девелоперов в ногу со временем, если спрсили для нуба руку набить
чем не устраивает софт процессор? это дешевле. линух то зачем, чтобы файлы кидать..
про фильтр и модулятор глупый вопрос.
от порядков и разрядностей зависит.
реализуй и посмотри.
если реально хочешь сок альтеровский с5 например, то поместишься даже в 5к, вероятно.
>Ruby/Erlang/C++/Scala/C/JavaScript, админам, QA Automation и DevOps,
А они что, мало зарабатывают?
Мимо быдло с КБ за 12к фултайм.
Хуйню они там пишут. Нет никакого заговора, блядь, есть "нахуя тебе платить больше, если ты и так работаешь, а в отделе кадров ещё очередь таких же".
>Выкладываете все свои секреты в опенсорц или нет?
Все секреты выложены на инглише, а если ты не можешь в инглиш, то ты один хуй не можешь в профессию. Учебники по инглишу тоже выложены.
Дичайше проиграл.
А зачем? Из преимуществ вижу только теоретическую возможность сделать линейную ФЧХ. Из недостатков - искажения из-за отклонений в источниках тока и номиналах резисторов (и, таким образом, невозможность получить линейную ФЧХ).
Хотя более-менее понятно, задача была реализовать ФНЧ внутри микросхемы, а конденсатор нужного номинала стандартным техпроцессом на ней не запилишь. Но нафига тебе-то эта фигня на рассыпухе?
>А зачем?
-Это очень интересно
-Учиться работать с какой-то новой железкой всегда проще, когда есть конкретная задача, а ещё лучше - когда есть готовая реализация, с повторения которой можно начать, а дальше перепилить всё самому по мере освоения.
>>287608
>а конденсатор нужного номинала стандартным техпроцессом на ней не запилишь.
Какой конденсатор? Речь о цифровом фильтре и дельта-сигма модуляторе на FPGA, всё программно, разумеется. FPGA для этого прекрасно подходит.
>Но нафига тебе-то эта фигня на рассыпухе?
Как раз для упрощения аналоговой части. Там из рассыпухи-то только ключи (можно вообще их не ставить теориетически, прямо на выводы плиски повесить) и резисторы AFIR'а.
Как-то так http://www.signalyst.com/hardware.html
>как много ячеек займёт фильтр и ДС-модулятор в плисине?
Вот пример моего простейшего модулятора.
>Какой конденсатор? Речь о цифровом фильтре
Вот этот "КИХ на резисторах" - это уже чисто аналоговая штука. Цифровой сигнал превращается в аналоговый в районе источников тока, которые являются интерполяторами нулевого порядка (zero-order hold).
>Там из рассыпухи-то только ключи
А источники тока?
В симуляторе работает, но я не знаю за synтезацию, и вообще это нормальный подход или нужно по другому.
Короткий ответ: да, если ты делаешь <= на одном такте, то берутся значения сигналов, сгенерированны в предыдущем такте.
Правильный ответ: ты должен не гадать, что делает твой код, а знать, что ты хочешь сделать, и писать так, как ты хочешь, чтобы оно работало. Там не так много базовых понятий и конструкций, которые надо запомнить - комбинационная логика, синхронная логика, конвейер. Прочти учебник по цифровой схемотехнике, где это разбирается, и где говорится, как это описывать на HDL (Харрисы, например) - у тебя мышление сразу в правильную сторону повернется.
HDL - это схема в текстовом виде, а схема - это набор элементов и провода между ними. Зачем всё остальное?
Никаких проблем. Просто я долгое время писал на ВХДЛ, а теперь решил попробовать Верилог. И я пока что не ебу, как мне переписывать конструкции навроде четырехмерных массивов сигналов из предобъявленных типов из одного языка в другой.
>Зачем всё остальное?
Затем, что схему можно сделать масштабируемой. Вот тут-то и начинается веселье.
Ну вот. А в ВХДЛ мне в помощь generic, generate и собственные типы.
Ну зато в Systemverilog'е типов подкинули. Правда, профит от них разве что в симуляции, хотя logic использовать удобней вместо wire и reg.
Мой кейс: в проекте сейчас сходится все на тоненького из-за некоторых цепей с кучей комбинаторных слоев между триггерами. Разбавить эту комбинаторику триггерами нет возможности - упадет производительность, частоту снижать тоже не вариант по той же причине. Пока спасаюсь перебором стратегий с большим эффортом, но с ростом или даже с изменением в проекте может опять "нехватить одного байта". Про флорплан вкурсе, но на практике еще не доводилось применять.
>Разбавить эту комбинаторику триггерами нет возможности - упадет производительность
Ты процессор, что ли, делаешь? Тогда поверю. Во всех остальных случаях "напихать побольше регистров" — наше всё. Если логика требуется для вычисления состояний FSM, то one-hot encoded FSM хорошо помогает.
Твое критичное место вообще никогда не раскладывается по таймингам? Или от раза к разу?
Если второе, то можешь один раз разложить так, чтобы тайминги сошлись, а потом критичные цепи железно зафиксировать констрейнтами.
>Вот этот "КИХ на резисторах" - это уже чисто аналоговая штука.
Как бы тут спорный момент. Даже без АКИХ - DSD-сигнал с выходов модуляторов как бы цифровой, но его можно подать на вход усилителя, где он отфильтруется на входном фильтре и паразитных реактивностях, и вуаля - мы услышим звук. С повышенным уровнем искажений, но вполне аналоговый.
>Цифровой сигнал превращается в аналоговый в районе источников тока
>А источники тока?
Источники тока там на резисторах и построены. Перед ними не ИТ, а ИН (цифровой повторитель).
>Как бы тут спорный момент. Даже без АКИХ - DSD-сигнал с выходов модуляторов как бы цифровой
Нет тут ничего спорного. Вот тебе простое правило, как отличить цифровой сигнал от аналогового: для цифрового сигнала важно только то, какую величину он имеет в точке сэмплирования. В ПЛИС, например, между двумя тактами сигнал на выходе лута может несколько раз поменяться, пока все сигналы до входов лута пройдут, но значение имеет только величина на выходе лута в момент фронта синхроимпульса. Для аналогового сигнала, даже если он с чем-то синхронизирован, важны все его значения в каждый момент времени. DSD потому фильтруется на входе усилителя, что он в любой выбранный момент, в том числе между тактами, действует на входную цепь усилителя и либо заряжает, либо разряжает конденсатор фильтра.
Ну это кот Шрёдингера получается, т.к. подашь его на вход цифровой схемы - и она его вполне корректно обработает, как цифровой, подашь на вход аналоговой - и аналогично он обработается, как аналоговый. Причём чем дальше аналоговая схема от идеала, тем меньше он будет похож на исходный DSD'шный.
Хотя это всё софизм, конечно.
>>287935
>>287968
У меня проблема аналогичная. Пишу под ISE для спартана 6, тайминги все вроде сходятся, ругается только на межтактовые переходы, но у меня там всё синхронизировано потому констрейнами отключил проверку межтактовых переходов. И вроде бы всё работает, но когда плату суёшь в минус начинаются чудеса. Как смотреть, куда копать непонятно.
Фильтр медленный, 15 кспс всего.
долбоёб-с-КВ-шарманкой
Не поленился и нарисовал как бы я это сделал. Хотя можно делать и как ты написал.
https://youtu.be/HHKZroRlJR8
Сдвигается адрес. Для примера покажу как это работает с фильтром 4-ого порядка:
1) входные данные записываются по 0 адресу, потом последовательно считываются данные с адресов 1, 2, 3, 0;
2) входные данные записываются по 1 адресу, потом последовательно считываются данные с адресов 2, 3, 0, 1;
3) входные данные записываются по 2 адресу, потом последовательно считываются данные с адресов 3, 0, 1, 2;
3) входные данные записываются по 3 адресу, потом последовательно считываются данные с адресов 0, 1, 2, 3.
4) и т.д.
Это более универсальный вариант, т.к. не везде блочная память может работать в режиме FIFO, как M9K.
Да ладна тебе, норм видосики, нудные только. У него там и по цифровой схемотехнике курс неплохой лежит.
Охуенно, спасибо. Понял.
А остаток от деления много LE отожрет? При порядке фильтра 128, например, т.е. счетчики 7-битные.
В этом случае, когда делитель равен степени двойки, остаток от деления это отбрасывание старшего разряда.
В остальных случаях остаток от деления можно вычислять вычитанием. То есть, если сумма больше или равна N, вычесть N. Отожрет оно немного, но задержка будет ощутимая.
Вообще я ожидал, что он в первом видео, допустим, более подробно расскажет о технологиях ПЛИС, как там это всё работает, в подробностях расскажет о РЕАЛЬНЫХ логических ячейках в микросхеме, как там конкретно они соединяются, программируются и работают и прочее. И чем альтеровские плисы отличаются от зайлиновских, например. Ну по схемотехнике тоже довольно сумбурно всё, но кое-что можно посмотреть.
Не помешал бы еще исторический экскурс, как вообще развивались программируемые схемы и прочее.
И курс основ физики до кучи.
>когда делитель равен степени двойки, остаток от деления это отбрасывание старшего разряда
Лол, дошло через две минуты после отправки сообщения.
Попробовал сделать, получилось, 630 LE освободил. Только адресацию сделал не как ты подсказал, а двумя отдельными счётчиками, один из которых (для RAM) просто считает на такт больше второго. Не бейте, лучше обоссыте.
Фильтр был 50 порядка, поэтому щас сделал до ближайшей степени двойки 64, в оставшиеся ячейки просто дописал нули. Разрядность семплов - 10 бит, коэффициентов - 16 бит. Клок 50 МГц, дискретизация 15 кспс (отсюда счетсик control, который до 3332 считает).
Теперь надо придумать, как аналогичным образом заебенить фильтр Гильберта, у которого надо точно знать задержку, чтобы скомпенсировать её во втором канале.
С RAM можно наконец расширить разрядность фильтров до полных 18 бит, которые на выходе CIC, а не только младших 10 бит (на большее LE не хватало), что были до этого, и сделать уже нормальную АРУ после всех фильтров.
Третий пик - для понимания, что это вообще за говно.
Pong P. Chu FPGA Prototyping by Verilog Examples
Pong P. Chu Embedded SOPC Design with Nios processor and Verilog Examples
Годная книга. Хотя я не раз делал обработку данных конечными автоматами, но не знал, что такая структура называется FSMD, а метод проектирования - register transfer methodology. Век живи век учись.
>Pong P. Chu Embedded SOPC Design with Nios processor and Verilog Examples
можно ссылочку, добрый человек.
>почитать про связь тактовых доменов на уровне повыше чем статья про хендшейк и дцфифо
А выше этого ничего и нет. Задача пересенхронизации состоит в том чтобы не попасть на фронт или нестабильное значение считываемого сигнала.
Тут выше о лекциях какого-то шизика говорили
https://youtu.be/82MIcxi5pPo
https://youtu.be/JpUUdEEKZeg
поддерживаю. лучший пересинхронизатор - двухпортовая память. можно конечно пытаться сэкономить, но зачем?
Привет, читаю книжку Digital Design and Computer Architecture, дошёл до главы про флип-флопы -- триггеры... и впал в ступор. Начал делать задания по проектировке разных триггеров и зашёлок, понял, что нихуя не понимаю, как их, собственно, проектировать. Это искусство или здесь есть какая-то логика? Памахите.
Всё просто, триггер - это комбинационная схема с обратной связью.
И снова лекции того шизика. Да их проще в шапку треда добавить.
https://youtu.be/i1_VdJOMStE
https://youtu.be/T5upUHhsBpw
https://youtu.be/JY7rmZoaq8Y
https://youtu.be/bUGiji2tJNc
https://youtu.be/uW8DPE6TRxM
https://youtu.be/Mx0e8Bgzib8
Спасибо, а есть какой-нибудь текстовый материал? Можно и на английском, я врозумляю.
А я нет, потому подсказать не могу, но среди отечественной литературы подробного объяснения как проектировать триггеры я не встречал.
Предполагается что это и не нужно, все основные триггеры уже изобретены, нужно только уметь преобразовывать из одного типа в другой, RS -> D, JK -> T и т.д, хотя сейчас и это уже не нужно, САПРы всё делают сами, но для общего развития, конечно, знать надо.
Функциональные узлы цифровой автоматики - И. С. Потемкин. (88 год!!!)
Кое-что есть по проектированию триггеров, расписаны схемы и принципы работы основных триггеров, дана попытка классификации триггеров и прочее.
Собственно, даже на обложке уже схема триггера.
Да, эта фамилия тоже на слуху.
Наконец докатилась машинка до релиза. Ну ладно, бета, тут пара косяков в плате, но это не моя проблема уже.
Все оставшееся время пилил/перепиливал гуйню на шарпе.
Исходнота на гитхабе в актуальном состоянии.
Ну и отлично, штука на пике под EPM7064SLC44 например
Так и хочется plcc, например EPM7064SLC44
Для начала теорию синхронного проектирования изучи и какой-нибудь САПР.
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
А так, конечно, стоит. Те кто в ЦОС шарят не хило так бабосики гребут.
Чувак, пили свои видосы дальше. Понятное дело, что они не идеальны и зачастую довольно бессистемны, но это блять хотя бы что-то. Другой инфы подобного рода на русском языке в видеоформате походу вообще нет. Или почти нет. Я например смотрю эти видосы.
Правильно делаешь, не слушай мудаков! Сам хоть и закатывался в digital design через буржуйский edx, но твой канал очень даже гуд.
>>289632
>>289628
Перепись не ходивших в институте на лекции.
>>289622
Ты рассказываешь намного хуже моего препода, который смог подробно рассказать все это за 30 лекций. При этом препод успел более-менее подробно рассказать об устройстве ПЛИС серий FLEX10K и MAX7000, а ты это проскочил и сразу начал рассказывать о том куда тыкать в квартусе.
>зачастую довольно бессистемны
Где ты там у него бессистемность-то нашёл? Вроде всё последовательно излагает.
>Перепись не ходивших в институте на лекции.
Не всем повезло к хорошим преподам попасть. Мне вот повезло, смог научить. А другой отвернётся к доске и бормочет себе под нос.
>все это за 30 лекций
Ну так и там 30 лекций курса цифровой схемотехники.
>и сразу начал рассказывать о том куда тыкать в квартусе
Так это уже другой цикл, так и называется "Квартус", а не "устройство ПЛИС". Есть мнение, что подробно рассказывать что делается внутри плисины - вредно для начинающих, избыточные подробности только отпугнут, сложные вещи надо постигать в несколько заходов, двигаясь с каждым шагом от общих представлений к более подробному рассмотрению предмета.
>Перепись не ходивших в институте на лекции.
Я учился вообще по другой специальности, например. И где доставать инфу, если хочешь самостоятельно вкатиться? Я бы рад был в институте лекции послушать.
>Перепись не ходивших в институте на лекции
Долбоёбина, я инженер-механик! Нам по определению цифровую схемотехнику не должны преподавать. Просто из интереса решил в серьёзный робототех закатиться со всеми пирогами: с микроконтроллерами, с ЦОС и т.д.
Там охуенная схема ультразвукового генератора была.
потом получаешь одинаковые числа.
например 40. 85=58.
таким образом если подашь в шину40 8 слов, то получишь из шины64 5 слов.
и вот такими пакетами кодируешь. формат пакетов знаешь, можешь сувать и вынимать данные.
умножение в третьей строчке потерялось 5 на 8 =8 на 5
Хотел сначала делать так. Просто и понятно, и буфер нужного размера автоматически легко генерируется. Но он получается огромный, наименьшее общее кратное 40 и 64 == 320 бит. Писать и читать легко, но синхронизировать сложно, чтобы прочитать первые 64 бита, надо получить на вход два раза по 40, но чтобы прочитать вторые 64 бита, достаточно получить ещё только одну посылку в 40 бит. И вот так оно шатается, хуй знает, как сгенерировать синхронизирующий FSM под все случаи жизни с разными m и n. Можно сделать двойной буфер, пока в один пишется, из другого читается, но это удвоенный расход FF. и так немаленькие 320 FF превращаются в 640.
Буду делать, наверное, так >>290883 , но тут уже без всякой надежды сделать параметризуемую корку.
ну буфер нужен не на 320, немного меньше)) . ну и выходные регистры 64 бита.
ну, как считать, то это не выглядит супер сложно, если речь идет о байтах и шины кратны байтам. в произвольном случае я бы стал заморачивать и зделал под систему.
>чтобы прочитать первые 64 бита, надо получить на вход два раза по 40, но чтобы прочитать вторые 64 бита, достаточно получить ещё только одну посылку в 40 бит
Лол, напиздел. Чтобы получить вторые 64 бита, нужно принять ещё два раза по 40, но чтобы получить третьи 64 бита, достаточно принять 40 ещё только один раз сверх полученного. Короче, появилась одна мысль, как это автоматизировать, попробую реализовать.
>>291042
Секрет :> Но я не в рашке. Завёл трактор.
Сорян, промахнулся.
Я думал здесь все мои друзья, какие от друзей могут быть секреты?
Собственно вопрос. Насколько реально скормить их квартусу, чтобы не работать в б-г мерзком махсплюсплюсдва?
или ебись оно конем, писать в nppпривычнее. но все же?
lда, говно старое, но и я не плисоебстм-32 дрочер, но понадобилось реализовать работу с PCI
>Насколько реально скормить их квартусу
https://www.altera.com/support/support-resources/support-centers/devices/programming-tools/tls-altera-software.html
https://dl.altera.com/devices/
Если пишут что нельзя, значит нельзя.
>да, говно старое
Значит задержки большие во всех элементах, сложнее будет уложиться в временные ограничения. А если захочешь повторить устройство, то найти такие FPGA за вменяемую цену не получится.
Устройство штучное, повторять точно не планируется.
Ладн, Мне всего лишь надо загнать быстро с двух ацп большой объем данных в оперативу компа. Плисины у меня 4 грейд, 84 мегагерца. 66 мегов pci мне не усрался, 33 вполне хватит. если не юзать парити чек, то всё вроде укладываюсь в тайминги протокола.
и все же, можешь посоветовать плисину минимально для меня годную из не древнемамонтового дерьмища?
циклон 4-5
Работает он примерно по такой схеме:
Пульт поднимает wifi сетку, к этой сети подрубается сам квадрокоптер и мобилка. Ключ от сети известен: 12341234
Соответственно, можно подключиться к этой сетке и ее поснифать. Вопрос в следующем. Можно ли на плисине запилить девайс, который будет подрубаться к сетки коптера, принимать видео-поток и гнать его скажем в HDMI с минимальной задержкой?
Далее мои рассуждения. Видеопоток в сетке коптера я так думаю сжимается. Возможно что-то вроде h.264. Как узнать точно? Какой сниффер может показать что за протокол используется для передачи видео?
Предполагаю нужно решить 3 задачи:
1) Подцепиться к WiFi сетке. И тут уже засада. Готовых корок для работы с WiFi нет. Возможно получиться настроить роутер на выдачу видеопотока из WiFi в Ethernet. Для Ethernet корки уж точно не проблема найти.
2) Восстановить из сжатого видео-потока "сырые данные". Вроде у Xilinx была корка с h.264 кодаком. Если повезет планирую ее использовать для раскодирования видео
3) Сырые данные гоню в hdmi, profit!
Двач, на сколько ебанутую задачу я поставил? Делись своими идеями на этот счет. Возможно подобное устройство удастся впарить телевизионщикам, у которых дорогие инспаеры, которые построенны по такому же принципу..
Можно использовать готовый WiFi МК (ESP32 лiл) в "promiscuous mode", ловить все пакетики и передавать на плисину через какой-нить Quad SPI.
Потом долго и больно ебаться с расковыриванием протоколов - определять кто что кому послал и вынимать сырое, сжатое ДОБРО из TCP/IP пакетов.
Короче я так понял надо начать с того, чтобы поснифать сетку коптера. на этом можно и кончить
Правильно подумал, латенси на приемнике это только пол беды, и не факт что ты справишься лучше производителя
Попробуй расковырять прошивку и уменьшить размеры буферов, а не траханье с ПЛИС
Цель всего этого траханья не в том, чтобы снизить задержку, а в том, чтобы вытащить картинку с камеры коптера в hdmi например с целью ее трансляции на большом экране. Ну и потом наверняка найдутся средства для трансляции картинки в сеть.
Зачем для этой задачи использовать ПЛИС? Не проще ли взять какой-нибудь одноплатный компьютер, типа малинки, с аппаратным декодером H.264?
Откуда вообще увереность в том что эта камера работает по какому-то особенному протоколу, когда почти все IP-камеры используют https://ru.wikipedia.org/wiki/RTSP либо MJPEG?
>Можно ли на плисине запилить девайс, который будет подрубаться к сетки коптера, принимать видео-поток и гнать его скажем в HDMI с минимальной задержкой?
>Двач, на сколько ебанутую задачу я поставил?
Крайне ебанутую, ведь то, что ты описал, можно сделать программно со средненького ноута с помощью WireShark+GStreamer. Зачем городить целое устройство, да ещё на ПЛИС, когда можно решить ту же задачу с помощью бесплатных программ?
Зашло дело за работу с flex10k, и все бы хорошо, но их поддержка в шквартусе начиная с 9.2 прекратилась(как и вторых дропнувшихся мне max7000). Более ранние шквартусы на линуху весьма черезжопно из за ебливости кряков. так бы то хуй с ними, но айпи корки нужны всеж садятся, и вот далее какой вопрос. Цеплял ли кто поддержку устаревших камней к новык квартусам?
Как меня радуют такие ярые адепты швитого линупса. Берешь древнее говно, ставишь на него хрюшку, шквартус и пердолишься как белый человек. Никому не рассказываешь, чтобы не тралили отступлением от святынь. Нахуя вы превозмогаете непревозмогаемое?
У меня второй системой стоит восьмерка, которой пользуюсь совсем иногда. Нолишний раз загружаться в непривычную винду не очень удобно. Ясен хер что если ничего не придумаю то навалю на винду девятую шкварку и буду с недовольной рожей из под винды ковыряться. Но зачем, когда хочетсяпоебаться удобно работать в привычном окружении.
> которой пользуюсь совсем иногда
Под одеялом, когда никто не видит?
> работать в привычном окружении.
Да ща линупс от винды практически неотличим. Шо ты несешь?
И ваще. Оптимальная система для пердолинга с контроллерами и прочими ПЛИС - Windows XP + старая материнка с несколькими СОМ и ЛПТ-портами.
>>292387
проследуй в хуй, я же сказал, меня не ебет твое мнение о операционках. Я бляждь не спрашивал совета чем и чем мне пользоваться. я спросил совсем другое.
Для пердолинга с контроллерами оптимальнее таки линуха. стм8ястм32 с линухи удобнее с ними работать, потому что эклипс в винде настраивать заебешься для работы под них. иар - моча хуже стандартного блокнота, кейл для даунов.
ком порт давно нахуй никому не нужен, как и лпт.
если тебе надо гпио с компа вывеси то если быстро вешай на pci и пиши драйвер(который под винду ты хуй напишешь, да), или если медленно собери расширитель с юсб на хоть что тебе угодно.
>flex10k
Серия 5576?
>айпи корки нужны
В флексах блоковая память однопортовая и асинхронная, а в более новых ПЛИС - синхронная двухпортовая. Многие новые IP ядра наверняка используют двухпортовую память, соответственно их точно не выйдет использовать с flex10k.
И вообще флексы слишком сильно отличаются от более новых ПЛИС, глупо надеяться что все так просто.
>>292387
Вот не надо тут. Я 5576ХС1Т и ХС4Т нормально под восьмеркой программирую. А ЛПТ вообще для программирования почти никаким боком.
>>292388
Все это хорошо, но с САПР для печатных плат под линуксом вообще никак. Ты можешь сказать что программисту это не нужно, но схемы смотреть в любом случае приходится. А в PDF это намного менее удобно.
>Цеплял ли кто поддержку устаревших камней к новык квартусам?
Соснёшь, ибо официально это не предусмотрено.
>>292394
>посоветуйте книжку по verilog
На русском вообще немного, а чтоб на пальцах я вообще не видел.
Вот тут на ютубе был челик обещал чёта по верилогу запилить, жди.
https://www.youtube.com/user/jack0ov/playlists
мой горяче любимый орел штатно из коробочки работает под линухой.
Закатись взад в свою порашу, пидор. Как вы уже заебали.
>Плисач, поясни за хай левел синтез. Неужели скоро не останется работы для простой верилог-макаки?
прекрасно же. отличный стимул для тебя стать не верилог макакой, а инженером
Бывший веб-девелопер Васян на питоне же.
В принципе, обработку сигналов с некритичной latency, одним и тем же уравнением для всех обрабатываемых данных и большим bandwidth уже сейчас при помощи HLS можно делать очень хорошо. Рассматривайте эту фичу не как отъём у себя работы, а как способ ускорить процесс разработки отдельных блоков.
К этим io standart нужно подавать еще и соответствующие напряжения на IOVCC. На большинстве китайских плат эти напряжения можно поменять только что-то перепаяв на плате.
Подключай, ничего не сгорит. Но лучше предварительно убедись что там действительно 3,3 В.
>К этим io standart нужно подавать еще и соответствующие напряжения на IOVCC
То есть в проекте класс напряжений указывается просто для расчётов?
>На большинстве китайских плат эти напряжения можно поменять только что-то перепаяв на плате.
На моей два ждампера, которые переключают 2.5 и 3.3(или 3 не помню). С этих джамперов напруга идёт на все банки напряжений. И вот что мне было непонятно, банки работают только на выход, я не прав? Какое напряжение подашь на банк, такое напряжение и будет на выходе пина, который запитан от этого банка напряжения, а вот на счёт допустимых входных напряжений? Посмотри картинку, та ли это таблица в даташите?
Тем что микроконтроллер исполняет программу, а ПЛИС - цифровая схема, которую можно переконфигурировать по своему желанию, грубо говоря, это матрица элементов НЕ-И с произвольно выставляемыми связями между ними.
>Тем что микроконтроллер исполняет программу, а ПЛИС - цифровая схема, которую можно переконфигурировать по своему желанию, грубо говоря, это матрица элементов НЕ-И с произвольно выставляемыми связями между ними.
слишком грубо говоря, лучше было и не говорить ничего
>То есть в проекте класс напряжений указывается просто для расчётов?
Нет. Для того чтобы это понять, достаточно посмотреть продолжение этой таблицы (6 - 3), где расписаны всякие дифференциальные режимы.
> банки работают только на выход, я не прав?
Не прав. В стандартах (всякие JESD8) написано что считается нулем, а что единицей для разных уровней. Причем эти уровни отличаются для LVTTL и LVCMOS.
Соответственно на входе стоит схема в которой эти уровни задаются программно.
>допустимых входных напряжений?
Это в таблице 1–1. Absolute Maximum Ratings for Cyclone IV Devices. Для I/O циклона 4 это от -0,5 до 4,2 В.
Хотя может я ошибаюсь на счет работы банков. Вроде как вход вполне может соответствовать LVCMOS 3.3 и LVCMOS 2.5 одновременно без всяких переключений.
Но с другой стороны, если там сделали разные дифференциальные режимы, то вполне могли сделать какие-то переключалки LVCMOS 3.3 и LVCMOS 2.5.
Говоришь так будто суть их не в этом.
Тут ньюфаг в треде же спрашивает принципиальную разницу между проц. и плисами, зачем грузить излишним?, всё равно не поймёт.
Мне надо. Как работают банки напряжений на вход и как с этим связан выбор стандарта логических напряжений в пин планере?
Что такое LVDS знаешь?
Так вот, дифференциальный вход представляет собой компаратор. Это означает что в ПЛИС на входах стоят такие компараторы, возможно на каждом выводе. Если это так, то может быть в не дифференциальных режимах на один из входов этого компаратора подается соответствующее стандарту напряжение.
Приходится перечитывать весь код в поисках места, где я наебался. Трачу на это всегда уйму времени. Может есть способ найти этот участок кода быстрее?
Ну во-первых: они меняются от производителя к производителю и от семейства к семейству.
Во-вторых: прям подробно-подробно тебе никто не расскажет, ибо по очевидным причинам производители свои архитектуры держать в секрете.
Если кратко на примере какого-нибудь Сыклона 4, то вся ПЛИС состоит из ячеек соединённых между собой коммутационным полем. Этих полей несколько, одно глобальное для связи удалённых ячеек друг с другом и локальные для связей рядом стоящих ячеек, служащие для создания сдвиговых регистров и счётчиков. Понятное дело глобальные линии работают медленнее чем локальные. Есть ещё так называемые клоковые цепи, тоже бывают глобальными и локальными, предназначены для доставки тактового сигнала до ячеек, они специально так спроектированы чтобы тактовый сигнал поступал на ячейки с минимальным по времени разбросом.
Сама ячейка представляет из себя Д-триггер и элемент реализующий логику таблицы истинности на 4 входа и 1 выход.
По мимо этого в ПЛИС аппаратно присутствуют вспомогательные устройства: умножители частоты (PLL), безопасные мультиплексоры тактовых сигналов, много маленьких и независимых кусков ОЗУ, которые можно объединять в более крупные или использовать по отдельности, арифметические умножители. В более дорогих экземплярах могут присутствовать высокоскоростные приёмопередатчики для реализации PCIE и других высокоскоростных протоколов. В Сыклоне 5 есть даже аппаратный процессор, т.е. ПЛИС, процессор и все нужные между ними связи в одном корпусе. Проскакивала новость, что у Хилых появилась плисина с встроенным АЦП, т.е. можно построить SDR практически на одной микросхеме.
Ну если кратко, то как-то так, за подробностями в даташит на конкретный чип.
>Проскакивала новость, что у Хилых появилась плисина с встроенным АЦП
В МАКС 10 же есть встроенный АЦП.
>т.е. можно построить SDR практически на одной микросхеме.
В MAX10 АЦП 12 бит, 1 МГц. Можно сравнить с микроконтроллером LPC4370 в котором 80 Msps 12-bit
ADC.
А готовых SDR на одной микросхеме и так полно, хотя бы SI4702.
Можешь привести какой-нибудь ультраминималистичный кусок кода, в котором вылезет такая ошибка?
Вангую, основная проблема окажется в том, что ты пишешь как мудак.
В том то и дело, что происходит это когда написал кода на 800-1000 строк. При таких объёмах всей структуры в голове не удержать и невольно забываешь соединить какую-нибудь шину с внешним миром(другими модулями). В результате Вивадо выпиливает всё, что по ее мнению бессмысленно. Не поверю, что подобное деяние не отражается в логах.
This. Вообще не представляю, как можно ожидать, что поделие сразу заработает в железе, если ты его не отдебажил в логическом моделировании. Так что пиши тестбенчи.
Не знаю, что ты имеешь в виду под "обращаться", но в тестбенче на systemverilog'e с нормальным симулятором можно через иерархию модуля читать и force устанавливать сигналы. Т.е. конструкция типа module_name.signal_name (module_name имя субмодуля в модуле тестбенча) подставляется в if'ы, wait'ы, assert'ы и прочие таски. Писать не пробовал, ибо без надобности, но там используется force module_name.signal_name = 1'b1, например. Алсо, паскаль за 2008 тоже поддерживает работу с сигналами в иерархии.
Не сказал бы, что это дохуя клёво. Это как писать на сишке, делая все переменные глобальными.
если в программе пять переменных я ибал бы там мутит какието функции-хуюнкции с локальными переменными
в общем запилил я конфиг девайс-программатор для альтеры(стм32ф103 и и2ц флеша на 64 килобайта, со стороны стмки MSC, подключаю по юсб, кидаю .rbf, на стмке навалено fatfs, дальше оно тупо побайтно в пассив сериал отправляется на плисину, если кому интересно, сорцы и платумогу дать потом)
но это всеж не так удобно, нужно перетаскивать вручную файл на юсб диск.
В общем сейчас я хочу стмкой прикинуться юсб бластером, чтобы из квартуса можно было напрямую конфигурировать, и сохрянять эту же прошивку в стмку, чтобы в дальнейшем юзать как конфиг девайс с встроенным программатором(хочу это потому что всего один корпус, и цена 100р за камень). Пока получилось прикинуться юсб бластером, тупо содрав дескриптор юсб. в диспетчере устройств я программатор определяю корректно, драйвер к нему подцепляется тоже нормально, но квартус упорно его не видит.
Внимание вопрос, кто нибудь делал подобное?
Я нашел сорцы юсб бластера под пик16, но все равно не ясен сам о заполнение эндпоинтов.
Любая помощь приветствуется.
когда я конфигурирую плисину своим девайсом, я дергаю ncfg, потом отклочиваю свои 16 килобайт в плисину( кстати на 16 мегагерцах по spi через dma идеально работает) , поднимается cfgdone, и все счастливы(1 пик).
когда конфигурирую с юсб бластера, вначале транзакции на линии нистатус какое то говнище(2 пик)
Это что за херня? нигде не видел чего либо подобного в документации.
Как быть с констрейнтсами?
Тайминг аналайзер ругается на multiple_clock. Что с ним делать?
640x480, 0:04
Почему ты отвечаешь вопросом на вопрос? Ты евгей?
Если ты спрашиваешь об этом тут, то для тебя - никак.
А вообще для этого нужно написать код на verilog/vhdl, создать проект в соответствующей IDE и т.д.
без задней мысли, берёшь и пишешь какие индикаторы должны гореть для каждой нужной тебе цифры
Русской литературы по этому колдунству очень мало. Буду читать ангельскую и пытаться понять.
По верилогу на русском нашлось 14 книг. http://gen.lib.rus.ec/search.php?&req=verilog&phrase=0&view=simple&column=def&sort=language&sortmode=DESC
Но вообще-то нет никакого смысла читать по основам языка более одной книги. А чтобы разобраться куда нажимать в IDE, можно посмотреть ютуб.
Но я москвич и это у меня не заблокировано пока еще. Даже если заблокируют, то обходится это обыкновенным прокси. Провайдер МГТС, если что. А хохол возможно выше >>302127 (судя по авторам учебника).
Но дело все равно не в этом, а в том что это:
>Русской литературы по этому колдунству очень мало.
Мало того что не соответствует действительности, так еще и для задачи >>302077 хватило бы любой одной книги по верилогу.
С ростелекома открывает.
да похуй вобще
Микросхемы можно запиливать с помощью:
https://ftp.gnu.org/pub/gnu/electric/electricBinary-9.07.jar
Готовый MIPS-проц, спроектированный в этой поеботе (пикрил):
http://www.staticfreesoft.com/contrib/muddChip.tar.gz
Туториалы:
https://www.youtube.com/watch?v=b_Q5Rspved4&list=PLZv8x7uxq5XYYdpxtQR2nlEKMGn6ssFjT
https://www.u-cursos.cl/usuario/9553d43f5ccbf1cca06cc02562b4005e/mi_blog/r/CMOS_Circuit_Design__Layout__and_Simulation__3rd_Edition.pdf
>>302285
У меня полная схема со всеми раскрытыми болоками (с пика) на 2GB ram core i3 сенди норм не тормозит.
Цель: общение на околоплисовые темы, выходящее за рамки треда. Например иногда хочется обсудить ситуацию на рынке труда, но не засорять же этим тред? Кроме того, ИТТ отписывалось много интересных анонов. Хотелось бы поддерживать друг с другом контакт.
Ссылка на конфу:
t.me/fpgach
Мочератор, поддержи нас, ну или хотя бы не удаляй этот пост.
Назло маме отморожу уши? Ну давай.
Не нужно.
>Например иногда хочется обсудить ситуацию на рынке труда, но не засорять же этим тред?
С хуя ли? Более чем релейтед.
Возможно тут даже найдется полтора анона, державших в руках ими же спроектированные микросхемы, но не более того. Насколько я знаю, ASIC начинают окупаться при серии более 100 тыс. изделий. Так зачем это тут? Это выглядит как если бы ты с плисами полез в /hw/ в тред с обсуждением процессоров.
>>302399
Присоединяюсь. Не нужно. Тем более что это требует номера телефона, а тут вроде аноны сидят.
>Насколько я знаю, ASIC начинают окупаться при серии более 100 тыс. изделий.
Там другой прикол. Прошивка плисы - это все еще software, с отсутствием патентов на алгоритмы (только на реализацию). Железка - это уже hardware со всеми вытекающими:
https://www.google.com/search?tbm=pts&hl=en&q=adder+circuit
https://www.google.ru/search?tbm=pts&hl=en&q=nand+circuit
https://www.google.ru/search?tbm=pts&hl=en&q=nor+circuit
https://www.google.ru/search?tbm=pts&hl=en&q=nand+circuit
https://www.google.ru/search?tbm=pts&hl=en&q=inverter+circuit
Так то, когда в ход идут виртексы и стратиксы, то прифтность ASIC'ов уже с партий в 5-10 тысяч начинается.
Нет. Если здесь общаться как в конфе, то полезная инфа, которая иногда появляется затеряется среди мусора. В конфе же более живое общение.
>>302402
>Тем более что это требует номера телефона, а тут вроде аноны сидят.
Об анонимности можно не беспокоиться - телеграмм скрывает твой номер телефона. Все остальные видят только твой ник.
Посоветуйте отечественные ПЛИС. Про Воронеж и Зеленоград знаю. Нужно для импортозамещения.
Есть задача, нужен аналог MAX2, MAX5. Пока рассчитываю запилить прототип на MAX2, а потом перевести на БМК. Но это геморойно, хочется ПЛИС.
Родной, тебе в /biz, в /ra олигархов не водится:
>NRE Cost = $ 44,228
>(Engineering Cost + Prototype Fabrication Cost)
>Production Die Cost = $ 1.460
(c)http://www.sigenics.com/page/Asic-Cost-Calculator
>>302412
За МКАДом Объединёнными Пиндостанами жизни нет?
Что за запись такая на верилоге "(|sr_count)"
Это равносильно 0|sr_count?
>вроде аноны сидят
ну учитывая что хостинг теперь майл.ру предоставляет, это скорее форум без ников пока
>Дыров сам лично покажет
учитывая иски к нему это маловероятно, да и номер нужен до момента включения двухфакторной аутентификации, если она включена то даже имея телефон доступ восстановить нельзя будет, нужно будет знать почту и пароль от неё.
Так что телеграм по анонимнее будет в данном случае
Не знаешь подробностей - лучше не советуй. >>260253
Добавлю также что этот софт написан на питоне, работает только под линуксом и все взаимодействие через веб-интерфейс. И этот софт еще сильно тормозной, средний проект разводит за полчаса-час минимум.
Преимущества серии 5578 по сравнению с 5576 это умножители (18х18 разрядов, 20 шт.) и немного меньшие задержки. Если умножители не нужны и хватает быстродействия, то нет смысла использовать эту серию.
Вроде бы еще интеграл делал какие-то CPLD, возможно как замена MAX II они лучше подойдут.
>>302477
>>302414
>это скорее форум без ников пока
Ну да, в этом и причина почему местные "аноны" не предпочли форум с никами. По моему весьма серьезная причина.
30-50 средняя цена у них сайт был, там все цены есть
> местные "аноны" не предпочли форум с никами. >По моему весьма серьезная причина.
Какие-то вы здесь странные. Что мешает не указывать ник в телеге?
>этот софт написан на питоне, работает только под линуксом
Охуенно, теперь буду делать всё только на воронежских плисинах.
мимопрыщеблядь
А если серьёзно, то это надо было с адовыми костылями писать, чтобы настолько серьёзно поломать питонью кроссплатформенность.
Ну там еще веб-интерфейс на джаве (tomcat), хотя это тоже все кроссплатформенное.
Из-за тормознутости это все равно желательно запускать это на отдельном компьютере, просто для того чтобы на рабочем месте в этот момент можно было делать что-то еще. Поэтому наверное нет смысла делать это кроссплатформенным. Основная проблема в том что результат синтеза намного хуже по сравнению с квартусом, а то что оно только под линукс это уже мелочь.
>Вроде бы еще интеграл делал какие-то CPLD, возможно как замена MAX II они лучше подойдут.
Не совсем аналог. Придётся похоже на Libero пересаживаться.
Сап.
Кто-нибудь использует генератор verilog на python под названием migen?
https://github.com/m-labs/migen
Суть в том, что объекты ведут себя как модули (или энтити). При подстановке тупо прописываются все сигналы модуля и соединяются как если бы модуль раскрыли и получается один верилог-файл. На самом деле можно каждый модуль писать отдельно, но не пробовал.
Пишу на vhdl для virtex 6 и вконец заколебался копипастить/править описания.
Например, когда нужно тупо соединить два блока, приходится объявлять дохуя сигналов, как они надоели и прописывать соответствия вручную.
Или если у меня набор сигналов на шине нужно завести в буффер, приходится все их объединять в битовый вектор, а потом назад разделять для дальнейшей обработки.
В общем, не хватает понятия интерфейс модуля.
В migen можно было бы написать интерфейс, но не хочу делать это в одиночку, так как питон начал учить недавно и только из-за этого проекта. Вангую получится велосипед с костылями.
Ведь что такое интерфейс? Это набор сигналов, которые можно куда-то подключать но только все вместе. То есть нужен класс и пара методов. В общем, пока думаю.
Я использую блок дизайн в виваде для этой цели. Текстом пишутся модули в behavioral-стиле и соединяются между собой линиями на схеме (в том числе с автоматическим объединением в шины, для которых у вивады есть определения). Можно долго ололокать про "программирование мышкой как в дельфи лол хддддддд", но на практике так выходит, что behavioral-стиль на HDL пишется хорошо, а structural — какой-то невыносимый пиздец, и чтобы решить задачу, которая в схематик эдиторе решается двумя кликами по интерфейсам, приходится написать горы бойлерплейт-кода.
Не окажется ли так, что вот выучишь system verilog, а поддерживают его фичи лишь полтора хипстерских симулятора, а синтезаторы от вендоров ПЛИС, куда даже свежие стандарты vhdl и verilog со скрипом завозят, шлют тебя прямиком нахуй? Питон-то хотя бы на них не завязан.
В плане симуляции с SV все нормально, а вот с синтезаторами есть проблемы - за альтеру не скажу, а, например, та же вивада в качестве топ-модуля для IP ядра не приемлит описание на systemverilog'e и с интерфейсами не побалуешь. Мб на поздних версиях что-то и поменялось, но за 16 год проблема была.
И какой смысл его тогда рекомендовать разработчику? Ему же железяку запиливать надо, а не бесконечно аутировать в симулятор.
свезий верилог - это верилог 2005?))
систем верилог - это не какой-то другой язык. это и есть верилог.
>>302783
migen разработали китайцы. Как оказалось, есть французский litex совместимый с migen, поддерживающий нужный мне функционал.
https://github.com/enjoy-digital
Сам модуль
https://github.com/enjoy-digital/litex/blob/master/litex/soc/interconnect/stream.py
Пример пайплайна.
https://github.com/enjoy-digital/litescope/blob/master/litescope/core.py
Наконец-то можно соединять интерфейсы, а не провода.
self.submodules.pipeline = stream.Pipeline(self.sink,
self.buffer,
self.trigger,
self.subsampler,
self.converter,
self.fifo,
self.source)
Не скажу, что весь код стал коротким и понятным, но он почему-то становится обозримым. Может, потому что заморочки языка не отвлекают от задачи?
>>303021
>изобретать костыли вместо systemverilog
А, так systemverilog еще не изобрели даже?)
На самом деле я его не осилил на этапе запуска примеров.
Ну и не знаю, как там с sv, но у французов написаны ethernet, usb, sata и др. и jesd204b, на который я полгода потратил с vhdl. Впрочем, я их лично не проверял, слишком сложно пока.
Ну, если сообщество подхватит идею, я буду счастлив, что мне не одному не придется лазить по чужому коду.
Пробовал как-то воспользоваться $clog2 для определения ширины шины в компайл тайм. Вивада меня послала с этой хуйнёй, с тех пор даже не пытаюсь использовать sv. Спасибо, но лучше никак, чем через жопу.
>$clog2
Это вроде бы в verilog 2005 появилось, это вовсе не особенность system verilog. А чем тогда определяешь ширину? Прописываешь все руками?
Написал функцию clog2 на честном цикле, которая двигает аргумент вправо, инкрементируя счётчик, пока все единицы не уедут. И таскаю её за собой. Зависимость есть.
Хм, да, действительно работает, только это надо сперва включить. https://www.xilinx.com/support/answers/57984.html
Сорян.
Хочу сделать мнгофазный (interleaving) PWM, 3-4 фазы, из имеющихся под рукой STM32F1xx STM32F4xx прямого способа ШИМ-ить не придумал (нужно что-нибудь вроде Infineon XMC / Freescale Kinetis K, там таймеры позволяют)
Вопрос - влезет ли пара счётчиков на 16бит и десяток компараторов в x2c128 xc95144?
Для того чтобы одназначно ответить нужно написать код и синтезировать для конкретной микросхемы. Приближенно можно оценить по требуемому количеству триггеров, в этих CPLD их 128 и 144 соответственно. Так что однозначно не влезет, если я правильно понял замысел.
1) Чем это будет отличаться от таймеров STM32? В них на каждый таймер приходится по 4 capture/compare регистра.
3) Модулировать хочешь синусоидой? Эти синусоиды будешь передавать с микроконтроллера? Если да, то через какой интерфейс?
Это ККМ aka PFC на 6-7 кВт, заполнение на всех фазах одинаковое
Задача CPLD - равномерно раскидывать на каналы и генерить интеррапты для запуска ADC в середине цикла.
Запись значения duty в CPLD - параллельный ввод.
Чем отличается - идея легко реализуется на верилоге, а вот реализация запуска сдвинутых по фазе 3-4 каналов для STM32F4xx/F1xx мне в голову пока не пришла, курю доки и пытаюсь придумать. Две фазы легко - это Up/Down PWM + инверсия на одном канале ну и запись (D) & (1-D)
Здесь один таймер и ногами он дёргает на своих выводах одновременно. Мне нужно сдвинуть каждую фазу на (phase_num/pwm_period), т.е. нулевая фаза - референс, первая - сдвиг на четверть периода, вторая - на 2 четверти, третья - на три четверти.
Похоже, что можно обойтись 5-тью таймерами - 4-ы конфигуряются одинаково, и один запускает их по очереди с нужным сдвигом. Сейчас посмотрю, хватает ли нужных эвентов
Тогда нужен один счётчик на n бит, один загружаемый регистр сравнения на n бит, одна FSM на 3 бита, которая будет переключать каналы по одному, генерить сигналы прерываний и задавать направление счёта (вверх/вниз). Если n=8, то число использованных регистров == 19/128. Я бы больше преживал за LUTы. Хотя, по-моему, их хватит.
>одна FSM на 3 бита, которая будет переключать каналы по одному
Заполнение может быть высоким (под 90%), при 4ех фазах нужно 8-мь выходов (PWM и строб на ADC), это, как я понял из даташита на xc2c128/xc95144 заберёт одну ячейку с триггером, один бит на счётчике в xc95 будет треботвать от 1 до 4ых п-термов
вобщем при 8-10 битах будет, наверное, на пределе.
пока останавливает поиск и скачка версии web ise, который поддерживает это "старьё"
Скажи, ты пользуешься макросами в программировании? Удобно? А теперь представь, что их можно писать на простом ЯВУ с большими возможностями, с подключением чуть ли не любых мыслимых библиотек. Включи фантазию.
1. Был ассемблер (HDL).
2. Придумали макросы (HLS). Стало удобно.
3. Оставили только макросы, получился ЯВУ. Стало универсально, но не оптимально.
Для FPGA считаю на данный момент лучшим вариант 2.
Интересное сочетание, видел только аппноты по переконфигуряции больших фпга для уменьшения времени загрузки для пи-си-ай-экспресс.
Тебе нужно то же самое, но шифрованное?
у меня довольно специфический продукт. FPGA как бы разделена на две части; первая часть системная, и для нее разработчик пишет прошивку, зашифровывает и распространяет в зашифрованном виде, чтобы ее не спиздили и не скопировали продукт; вторая часть добавляет поддержку как бы дополнительных функций, ее может написать любой пользователь, доступен интерфейс с первой частью, битопотоки для нее можно распространять и использовать свободно.
проблема в том, что все, что я нашел с поддержкой partial reconfiguration, слишком продвинутое, дорогое, в BGA-корпусах, а использовать две FPGA для этого тоже плохо для цены, а также интерфейс между частями, скорее всего, будет содержать больше сигналов, чем есть пинов у QFP-корпуса. мне нужен QFP-корпус.
мерзкие производители. нет чтоб открыть формат битопотоков.
>>305121
Да вот работаю как-то, нормально так.
Аноны, с какой целью вы такое использовали? Я не использовал ни разу, сейчас вот прочитал, попытался прикинуть, куда это можно засунуть. И получилось, что, с одной стороны, для высокопроизводительных операций не используешь, потому что там FSM, который получает задание и ебошит его, и в это время трогать его не моги. По-хорошему, такие вещи надо разворачивать в конвеер, когда каждая стадия в каждый момент времени обрабатывает свою часть от нескольких одновременно решаемых заданий. С другой стороны, для структурно сложных, но не требующих адового числодробления вычислений в системе всегда уже есть процессор, просто потому что он уже есть всегда.
На самом деле я просто дал ссылки и Vivado HLS никогда не использовал. Я упомянул HLS, чтобы показать аналогию. Мой проект работает на предельных частотах, а если распараллелить, не влазит в кристалл. Поэтому контроль над низким уровнем так важен. В то же время писать деревянные vhdl-корки, которые с трудом поддаются изменениям и настройке, надоело. Поэтому и ратую за litex за его гибкость. А насчет HLS сам с удовольствием послушаю. И на картинке вроде есть опция "конвейер".
Годный видос по заданию констрейнтсов для вивады
>латентность
Только не говорите, что это калька с latency.
Кстати, запихал фильтры в рам и сделал говно-ару. Вроде работает.
На генераторе гонял, в реальном эфире еще не испытывал.
долбоеб-с-кв-шарманкой
Через ноги кинь.
Есть возможность составить программу для третьекурсников. Направление: телекоммуникации. Как вам такой вариант программы:
1) Базовые логические вентили.
2) Мультиплексоры, шифраторы, дешифраторы, сумматоры и умножители целых чисел, и т.д.
3) Тестбенчи.
4) Арифметика в фиксированной и плавающей точке.
5) Реализация АЛУ, включающего все вышеперечисленные устройства.
6) Последовательная логика. Тактируемые процессы. Триггеры, регистры, память. Тестбенчи для тактируемых процессов, сигналы сброса.
7) Управление потоками данных в радиотехнических системах.
8) Конечные автоматы Мили/Мура. Синтез КА, декомпозиция КА и т.д.
9) Косимуляция с использованием Matlab/Simulink.
10) Работа с ядрами. Деление, FFT, Cordic-арифметика и т.д.
11) Реализация различных фильтров: согласованная фильтрация, ФНЧ, ПЧ и т.д.
12) Реализация модуляторов/демодуляторов MPSK, MQAM и т.д.
13) Реализация канального кодирования/декодирования, перемежители, деперемежители.
14) На данном этапе уже можно собрать простенький приемник-передатчик и затестить его через hardware-in-the-loop.
15) Coding style, примеры плохого и хорошего кода, всякие тонкости.
Как вам?
>Coding style, примеры плохого и хорошего кода, всякие тонкости.
Какого кода-то? В твоей программе ни слова про HDL.
Ненависть от количества требуемой писанины на зачеты. Сам учил это говно годами, хочет заставить выучить за семестр.
Если курс ЦОС у них уже был, то норм. Если не было, то не норм и будет напоминать рисование совы в момент перехода от "а вот так, дети, выглядит конвейер" к "а теперь, дети, давайте сделаем согласованный линейный стационарный фильтр с конечной импульсной характеристикой".
Дебилоид, ты серьезно думаешь, что этот курс можно пройти толково за семестр? Для галочки разве что можно пройти.
Что сложного в этом курсе? Я сам в свое время за семестр все это освоил. Если вам это кажется очень сложным, значит вам плохо объясняли.
>Если вам это кажется очень сложным, значит вам плохо объясняли.
Это значит не это. Просто некоторые - дебилы. :)
Вариантов - масса. Например, во время преамбулы приблизительно определяешь частоту клока, запускаешь NCO, дальше подстраиваешь фазу на переходах.
Просто некоторые воображают, что что-то поняли, сдав лабы и получив зачет. На производстве/разработке будут хуй сосать и бекать.
EE (RF, аналоговое разное барахло) & SW (Embedded)
>На производстве/разработке будут хуй сосать и бекать.
На любом серьезном производстве все будут сосать первые несколько месяцев, а то и пол-года. Пусть это софт, DSP/HDL, EE.
>На любом серьезном производстве все будут сосать первые несколько месяцев, а то и пол-года.
>выучил все за семестр
Какие же отличники дегенераты, пиздец просто
Предложи тогда свой вариант программы.
>Ну разумеется все предложенные пункты в программе надо будет реализовать на vhdl, что ты как дурачок.
Сам ты как дурачок. По хорошему все эти вещи надо изучить на схемотехнике, а уже потом показать HDL-язык как мощный инструмент в помощь разработчику.
>vhdl
Хотя почему как...
Все что нужно знать на начальном этапе телекоммуникационщику, работающему с ПЛИСами из цифровой схемотехники, это то, что описано в книге Харрисов. Да и что значить изучить на схемотехнике? Реализацию всех алгоритмов вручную доводить до транзисторного уровня? Но зачем? Это же обезьянья работа, гораздо важнее уметь разрабатывать алгоритмы и реализовывать их. Кроме того на данный курс отводится один семестр. Да и подход, основанный на доскональном изучении цифровой схемотехники устарел и сейчас полностью не нужен, когда есть хорошие средства автоматизации всех этих процессов. Короче, ты размышляешь как старый дед.
Что не так в vhdl?
Или предлагаешь сначала досконально изучить все концепции и парадигмы описания аппаратуры? Пиздец...
>Реализацию всех алгоритмов вручную доводить до транзисторного уровня? Но зачем?
https://www.youtube.com/watch?v=HDMkw6lnzmI
>Реализацию всех алгоритмов вручную доводить до транзисторного уровня?
Не транзисторного, а уровня логических элементов.
>подход, основанный на доскональном изучении цифровой схемотехники устарел и сейчас полностью не нужен
Ну да, а потом такие вот студенты, после одного семестра галопом по европам, не могут простейшего, например определить наличие фронта у сигнала, или вот >>307726 без обид, хотя аспирантик с заумным видом, употребляющий в своей речи разные американизмы типа "стейт машины" вообще днище и прочих, втирал им за системы автоматизирования.
>на данный курс отводится один семестр
В этом то и проблема.
>>307800
>Что не так в vhdl?
То что это не Верилог.
wire input_signal, clk;
reg front_detected;
reg [2:0] input_signal_z;
always @ (posedge clk) begin
input_signal_z[0] <= input_signal;
input_signal_z[2:1] <= input_signal_z[1:0];
front_detected <= !input_signal_z[2] && input_signal_z[1];
end
асинхронобляди не нужны
На самом деле студентов надо учить вхдлу, потому что для учёбы похуй, для общего развития надо знать то и другое, а для продакшена выучить верилог уже самостоятельно. И ты таки не ответил, давали студентам ЦОС или нет, без этого спор не имеет смысла даже.
>Да вот просто, нащупать фронт у двоичного сигнала и сделать какое-нибудь действие по этому событию.
И что в этом сложного, даун?
Я согласен, что HDL-языки преподавать нужно, но это надо делать как дополнение к уже пройденному курсу цифровой схемотехнике, а не как независимый курс.
>для учёбы похуй
А если похуй, тогда почему не сразу Верилог?
>>307850
>input_signal_z[0] <= input_signal;
>input_signal_z[2:1] <= input_signal_z[1:0];
Можно и короче
input_signal_z[2:0] <= {input_signal_z[1:0], input_signal};
ЦОС в полной мере дают только на 4-м курсе, но у 3-го курса есть предмет, где они разбирают дискретизацию, ДПФ, БПФ, фильтры и т.д. Но там объяснение идет чисто на пальцах, без радиоматематики.
>А если похуй, тогда почему не сразу Верилог?
Потому что после верилога учить вхдл никто не будет, это будет похоже на боль. А верилог учить после вхдла будет похоже на полёт птицы.
>А если похуй, тогда почему не сразу Верилог?
Верилог не будет давать по рукам, когда нужно дать по рукам, в отличие от вхдл, поэтому для обучения вхдл предпочтительнее.
>И что в этом сложного, даун?
Что студенты будут его писать как
always @ (posedge input_signal) begin
some_reg <= some_value;
end
Нет, в предлагаемой мной программе будут приводится шаблоны синтаксических конструкций с подробным объяснением того как стоит делать, а как не стоит, и почему.
Ну и зачем превозмогать боль?
>>307860
Верилог хоть и не даёт по рукам, но даёт ворнинги, которые надо читать и устранять.
>>307861
В том что студенты после таких программ не могут в элементарщину.
>>307866
Это всё мёртвому припарка. Схемы нужно изучать именно как схемы, а не как шаблоны синтаксических конструкций. Суть схемы в том что это схема. Когда собираешь какой-нибудь автомат на элементах малой степени интеграции намного лучше понимаешь процессы в нём происходящие, становится понятна механика этих процессов: у элемента есть выход, элемент выдаёт на него сигнал, единичку или нолик, он идёт на вход этого и этого элемента, они, в свою очередь, переключаются так-то и так-то... В этом случае схему как бы пропускаешь сквозь себя и начинаешь действительно понимать как она работает. ХДЛ-языки в этом смысле только вредят, скрывая своей абстракцией от неокрепших умов смысл происходящего.
Ну вообще-то чтобы понять, почему оно так, надо как минимум схемотехнику плисов разобрать и временной анализ. А если не понимать, то никто этого всё равно не усвоит. Детектор фронта они ещё скопипастят, а экстраполировать принцип - уже хуй, пока своими глазами не увидят, что проект не синтезируется, и не полезут искать инфу (у кого мозгов хватит).
Я б на самом деле выкинул всю обработку сигналов из начального курса и дал больше таких вот вещей. Луты, триггеры, клоковые деревья, pll, буферы, временной анализ, быстродействие. А если останется время, лучше бы показал, как запилить систему-на-кристалле с софт-процессором и периферией на стандратных шинах (microblaze).
>>307868
>Ну и зачем превозмогать боль?
Я ж написал — инженеру надо знать и то, и другое. Лучше учить всё в менее травмирующей последовательности. Вхдл не травмирует, если ты ещё не видел верилог.
>инженеру надо знать и то, и другое
Ну весьма спорое утверждение, если только не бегать из канторы в контору, где писать на определённом языке вменяют в обязанность.
Потому и выпускают, грубо говоря, дебилов. Много раз встречал ситуацию, когда курсы несогласованы по времени.
Как выглядит вся программа в целом от преподавателя не зависит, за все несостыковки надо сказать спасибо минобру. А несостыковок очень и очень много.
Если бы так было, то все разряды имели бы одинаковое значение.
Это сдвиговый регистр. D-триггеры соединены последовательно — к входу N-ого триггера подключен выход N-1-ого триггера.
Что ты называешь линией задержки? Сдвиговый регистр, FIFO? Или последовательно соединенная комбинационная логика как тут: https://people.csail.mit.edu/devadas/pubs/wifs2010.pdf
Не знаю как большинство, но под линией задержки я понимаю в первую очередь второй вариант.
>Нарисуй диаграмму, тогда понято станет.
Схема мне понятна, непонятен синтаксис
>reg [2:0] input_signal_z;
Это сколько d-триггеров?
Это столько регистров. Они могут стать триггерами. Они могут стать сигналами, если присваивать их внутри always @ (*) begin ... end. Короче, не пытайся с наскоку впихнуть невпихуемое, лучше пойди книжку почитай.
>лучше пойди книжку почитай.
Читаю, как раз вопрос с reg непонятен. В случае, когда они синтезируются в тригеры, это сколько триггеров?
Судя по всему, ты читаешь какое-то говно, иначе подобного вопроса бы не возникло. Читай Харрисов, потом спасибо скажешь.
Линия задержки это сдвиговый регистр и ничего больше. FIFO - это FIFO, а не линия задержки.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY delay_line IS
generic(
delay_value : integer;
sample_width : integer
);
port(
clk : in std_logic;
symbol_dv : in std_logic;
frame_start : in std_logic;
sample_real : in std_logic_vector(sample_width - 1 downto 0);
sample_imag : in std_logic_vector(sample_width - 1 downto 0);
frame_start_d : out std_logic;
sample_real_d : out std_logic_vector(sample_width - 1 downto 0);
sample_imag_d : out std_logic_vector(sample_width - 1 downto 0)
);
END ENTITY delay_line;
--
ARCHITECTURE a OF delay_line IS
type tdelay is array (delay_value-1 downto 0) of std_logic_vector(sample_width-1 downto 0);
signal sdelay_real : tdelay;
signal sdelay_imag : tdelay;
signal fsdelay : std_logic_vector(delay_value - 1 downto 0);
BEGIN
sample_real_d <= sdelay_real(0);
sample_imag_d <= sdelay_imag(0);
frame_start_d <= fsdelay(0);
delay_1tact : if delay_value = 1 generate
process(clk) begin
if rising_edge(clk) then
if symbol_dv = '1' then
sdelay_real(0) <= sample_real;
sdelay_imag(0) <= sample_imag;
fsdelay(0) <= frame_start;
end if;
end if;
end process;
end generate;
delay_2andMore_tacts : if delay_value>1 generate
process(clk) begin
if rising_edge(clk) then
if symbol_dv = '1' then
sdelay_real <= sample_real & sdelay_real(delay_value - 1 downto 1);
sdelay_imag <= sample_imag & sdelay_imag(delay_value - 1 downto 1);
fsdelay <= frame_start & fsdelay(delay_value + 3 - 1 downto 1);
end if;
end if;
end process;
end generate;
END ARCHITECTURE a;
Держи, пользуйся.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY delay_line IS
generic(
delay_value : integer;
sample_width : integer
);
port(
clk : in std_logic;
symbol_dv : in std_logic;
frame_start : in std_logic;
sample_real : in std_logic_vector(sample_width - 1 downto 0);
sample_imag : in std_logic_vector(sample_width - 1 downto 0);
frame_start_d : out std_logic;
sample_real_d : out std_logic_vector(sample_width - 1 downto 0);
sample_imag_d : out std_logic_vector(sample_width - 1 downto 0)
);
END ENTITY delay_line;
--
ARCHITECTURE a OF delay_line IS
type tdelay is array (delay_value-1 downto 0) of std_logic_vector(sample_width-1 downto 0);
signal sdelay_real : tdelay;
signal sdelay_imag : tdelay;
signal fsdelay : std_logic_vector(delay_value - 1 downto 0);
BEGIN
sample_real_d <= sdelay_real(0);
sample_imag_d <= sdelay_imag(0);
frame_start_d <= fsdelay(0);
delay_1tact : if delay_value = 1 generate
process(clk) begin
if rising_edge(clk) then
if symbol_dv = '1' then
sdelay_real(0) <= sample_real;
sdelay_imag(0) <= sample_imag;
fsdelay(0) <= frame_start;
end if;
end if;
end process;
end generate;
delay_2andMore_tacts : if delay_value>1 generate
process(clk) begin
if rising_edge(clk) then
if symbol_dv = '1' then
sdelay_real <= sample_real & sdelay_real(delay_value - 1 downto 1);
sdelay_imag <= sample_imag & sdelay_imag(delay_value - 1 downto 1);
fsdelay <= frame_start & fsdelay(delay_value + 3 - 1 downto 1);
end if;
end if;
end process;
end generate;
END ARCHITECTURE a;
Держи, пользуйся.
И что ты собрался рассказывать про луты и триггеры? Что там непонятного-то? Ага, временной анализ и быстродействие студентам, которые первый раз с ПЛИСами столкнулись. Это нужно все рассказывать после того, как студенты потеребонькали ПЛИСы, а не до.
>И что ты собрался рассказывать про луты и триггеры? Что там непонятного-то?
Да-да, и поэтому ПРОСТО И БЕЗ ЗАДНЕЙ МЫСЛИ пишут вот так → >>307862. А хули, всё ж правильно. Временной анализ штука вообще охеренно важная, на ней строится всё. Он гораздо фундаментальнее, чем просто способ увеличить число мегагерц, к нему гвоздями прибита и архитектура ПЛИС, и синтез. Знать, о чём он, нужно и чтобы понимать, что ты должен ожидать от плис, и что инструменты ожидают от тебя, и в каких случаях они пошлют тебя нахуй.
А, впрочем, этот разговор меня утомил, кому я что доказываю, блджад, пойду лучше оливье заебашу.
Может я тупой, но я не знаю чем отличается сдвиговый регистр от FIFO. Может объяснишь?
>>308013
Молодец, а теперь перепиши с кольцевым буфером на блочной памяти.
>>308019
Только там еще один триггер на выходе, всего 4 триггера. А так может и хватило бы, но что если input_signal - это выход комбинаторной логики? Так что такой вариант тоже может пригодиться.
Это три штуки.
>>307979
Вот конкретно это меня всегда бесило в Верилоге, вроде бы написано
reg [2:0] random_name;
а после
always@()
begin
random_name = ...;
....
end
Получаем комбинационную схему, хотя термин "регистр" обозначает группу триггеров.
>>307980
Кароч, reg [2:0] random_name; синтезируются в триггеры, если используются в always@(posedge C), если в always@() то это будет КС.
>>308013
Это что, асинхронщина? Асинхроноблядь ненужна, Асинхроноблядь хуже червя.
>>308014
>Что там непонятного-то?
Ну когда в теме, то конечно, всё понятно. А когда в первый раз смотришь на это, как баран на ворота, будет тяжело и не каждый такой порог самостоятельно возьмёт. Почему говорят, что порго вхождения в ПЛИС выше чем в просто программирование? Именно по этому.
Хватило бы и одного, запоминать одно предыдущее значение.
Два первых триггера - clock domain crossing, потому что input_signal может быть не синхронен с clk, а синхронен с чем-то ещё.
>>308022
>А так может и хватило бы, но что если input_signal - это выход комбинаторной логики?
За такое — только пиздить, очень больно. Потому что если input_signal не синхронен с clk, то нет способа определить, действительно ли с него пришёл ожидаемый фронт, или срач с комбинаторной логики между тактами синхронизации.
>Ну и сравните объёмы кода
Не сравнивайте, потому что одно — элементарный пример, второе — параметризуемый модуль на разные жизненные случаи. Серьёзно, если хочешь в срачи, хотя бы выучи оба языка.
>Может я тупой, но я не знаю чем отличается сдвиговый регистр от FIFO. Может объяснишь?
Да, ты тупой. FIFO можно использовать, например, для согласования тактовых доменов. Кроме того бывает куча разных видов фифошек. Из фифошки ты можешь читать данные, если FIFO не пустое, в отличие от сдвигового регистра длины N, где данные на выходе регистра появятся только через N тактов, после их прихода на вход регистра.
Ну так хорошо, временной анализ это важно и т.д. Давай весь семестр рассказывать про временной анализ и архитектуру ПЛИС. В итоге получим студентов, которые будут знать временной анализ и архитектуру ПЛИС, но не смогут написать согласованный фильтр.
Просто надо дать студентам возможность почувствовать именно процесс разработки, дать им представление о воркфлоу, дать им возможность релизовать что-то близкое именно к их специальности. Если кто-то из них решить свою будущую деятельность с разработкой под ПЛИС, то они сразу же смогут начать работать над какими-то проектами, потому что предлагаемая программа даст им именно опыт разработки основных базовых вещей. И эти знания позволят им в будущем развиваться в этой области. Будут пилить сложные проекты, будут где-то не сходится тайминги и прочие констрейны, и вот только на этом этапе стоит углубиться в архитектуру ПЛИС, в стратегии синтеза и т.д.
Например сдвиговый регистр и кольцевой буффер на двухпортовой памяти. Но по моему это не отменяет того факта, что сдвиговый регистр является разновидностью FIFO. Впрочем, это скорее вопрос терминологии.
Также могут быть на однопортовой памяти разных видов, с одним клоком или двумя независимыми.
Знаешь, как они почувствуют процесс разработки, получат представление о форкфлоу и реализуют что-то близкое к их специальности? Я тебе расскажу.
1. При попытке ответить на вопрос "а что вообще происходит внутри ПЛИС?" перед глазами у них будет повисать чёрная пелена.
2. При попытке ответить на вопрос "а чё мы вообще делаем?" будет возникать образ шамана, в некоторой последовательности бьющего в бубен и заклинающего камни
3. Написание HDL будет у них чем-то типа древней магии, которая пока работает, ни в коем случае ничего не трогай и ничего не меняй. А работать будет только то, что в методичке. Почему — никто не знает.
4. После получения зачёта (методом перепечатывания лабораторок из методички в редактор кода) у них отложится в голове только то, что плис — это непонятная и непостижимая магия.
5. Они реализуют согласованный фильтр на лабораторке, но впадут в ступор при просьбе написать скользящее среднее. Потому что написание фильтров без знания ЦОС — это вообще 10 магий из 10. Ничего хуже для понимания и убивания интереса к предмету, чем преподавать его в виде магии, сделать в принципе невозможно.
Хотя на самом деле заебись. Чем больше таких студентов, тем ценнее я как профессионал.
>После получения зачёта (методом перепечатывания лабораторок из методички в редактор кода) у них отложится в голове только то, что плис — это непонятная и непостижимая магия.
Забыл добавить: и это не только не приблизит их к тому, чтобы стать разработчиками, но и серьёзно подорвёт у них уверенность в собственной способности вообще работать с ПЛИС. По крайней мере, у тех из них, кто ещё не усвоил, что образование в рашке — это днище.
Покаялся тебе за щёку.
>абыл добавить: и это не только не приблизит их к тому, чтобы стать разработчиками, но и серьёзно подорвёт у них уверенность в собственной способности вообще работать с ПЛИС.
Хорошие разработчики/инженеры - это те, кто дополнительно к задачам в универе делает что-то сам, на своём энтузиазме.
Такие люди, во-первых, уже в универе самостоятельно изучают интересные им вещи,
во-вторых легко применяют изученное на практике для решения каких-либо задач, своих или нет,
в-третьих, уже имеют больший кругозор и багаж знаний и после универа очень быстро разгоняются и лекго вливаются в рабочий процесс.
Днище, которое на собеседовании и потом постоянно ноет, "нам этого не преподавали", - не нужно (хотя часто им это преподавали, а они - пиздаболы).
>Такие люди, во-первых, уже в универе самостоятельно изучают интересные им вещи,
Правильно, давайте сделаем программу обучения, чтобы у них было для этого как можно меньше времени. Где еще они обучатся бюрократии, как не в университете.
>Блядь, засрали тред настолько, что телефон с 4мя гигами оперативки нормально не отображает.
~ $ curl -s https://2ch.hk/ra/res/127314.html (М) | wc -c
4486188
Итого нужен ~ 1ГБ оперативки, чтобы отрендерить 1МБ говеного HTML, во как. А вы тут байтики выдрачиваете.
Простите, не удержался.
По приёму:
ФНЧ Чебышева 6 порядка со срезом на 22 МГц; плавный аттенюатор 0..40 дБ; двухкаскадный усилитель на ОУ ADA4817; АЦП LTC2247 на 14 бит 40 Мспс (заюзан на 10 бит 50 Мспс).
По передаче:
ЦАП AD9744 на 14 бит 210 Мспс (заюзан на 10 бит 50 Мспс); линейный УМ класса B на 20 Вт на 7 МГц и 10 Вт на 14 МГц; ФНЧ Чебышева 3 порядка со срезом на 15 МГц
Окучиваю на передачу пока два любительских диапазона - 7 и 14 МГц.
На приём - от средних волн до 21 МГц.
Преселекторов на входе (кроме ФНЧ) вообще нет?
Какая антенна?
Я игрался с SDR, пришёл к выводу - что нужен хороший динамичиеский диапазон, ну хотя бы 100 дБ, иначе будет тоска из-за мощных вещалок.
Поначалу юзал одноконтурный преселектор с добротностью 70, когда динамики было децибел 60.
Щас динамика децибел 80, выкинул его нахуй. Надеюсь довести до 100 дБ, включив оставшиеся 4 разряда АЦП.
Антенна: при экспериментах на прием (до трансиверизации) была Mini-Whip:
https://www.youtube.com/watch?v=dOOwxxjjmQY
Сейчас - резонансная полуволновая веревка длиной 20 м (7 МГц), согласованная параллельным контуром.
С преселектором:
https://www.youtube.com/watch?v=y4Hv7NDJJf4
И без:
https://www.youtube.com/watch?v=j4qBDacbdy0
На НГ была попытка ввести АРУ (из >>306460):
https://www.youtube.com/watch?v=T7VJUj-bK_w
>тоска из-за мощных вещалок
https://www.youtube.com/watch?v=R33LkHWn-2w
>>тоска из-за мощных вещалок
У меня амплитуда овер 100 мВ, окна на амурский залив. На 7мгц / 14 мгц вещаки идут ппц как сильно.
Как вариант - делать рамочную антенну с трубы и строить на диапазон.
Только вместо L3 транс 2:1.
И мощность 10 и 20 Вт соответственно. На пикче старые числа с макета.
>>308679
SFDR не смотрел (чтоб совсем не опечалиться), смотрел только по забитию - разница между уровнем полного размаха на входе АЦП и уровнем собственного шума. Сигнал давал с генератора Г4-102, выход смотрел звуковым спектроанализатором.
Солидно вышло, я думал будет двухтактный оконечник на народных полевиках (irf510/520)
Зачётный проект.
Кстати, мне показалось или у тебя на видео с QSO с R2DT на фоне китайцы разговаривают?
Вот же пидор ебучий. Наворовал деталей дорогущих и похваляется теперь. Те транзисторы стоят по почке за каждый. Почему одним - все, а другим - ничего? Жучара вороватый. Чтоб тебя током уебало.
>Те транзисторы стоят по почке за каждый
> KT912/20
У тебя камни во всю почку штоле, что твои так дешево стоят?
Это тебе шутки, гадина? 300-1000р за штуку. Наворовал ведро и рад, сидит себе, радуется, махарайки паяет. А другие только мечтают о таком, всякий копеечный мусор пользуют. Ублюдок.
Москвич дохуя штоле? В регионах зп 20к, а ему транзисторы по 300-1000р - как семечки.
Ну не смешно же нихуя. Зачем?
>>308701
А вот с этого в голос.
>>308690
>(irf510/520)
Впадлу было возиться с емкостью затвора. Поздно слишком прочитал статью Гончаренки про включение её в фильтр.
>показалось или <...> на фоне китайцы разговаривают?
Не показалось, так и есть. Почему-то получилось прямое детектирование вещалки.
А КТ912 я брал в местном магазе за 60 российских рублей. А 920 вообще даром.
>Москвич дохуя штоле?
Нет. Я в Тверских ебенях живу. До города пол часа на велосипеде, сейчас пешком хожу раз в неделю.
>ссылкой
http://dl2kq.de/pa/1-4.htm
>Как формируешь ссб?
Пикрелейтед.
Вот немного протухшее описание с замечаниями по текущему состоянию:
DDC однополосный телефонный КВ трансивер с такими характеристиками:
Диапазон частот приемника: 100 кГц до 21.5 МГц;
Диапазон частот передатчика: 1.8 до 14.5 МГц;
Шаг перестройки частоты: 0.1 кГц;
Модуляция: телефонная LSB/USB с полосой 3 кГц;
Чувствительность приемника: 1 мкВ при отношении с/ш 10 дБ;
Динамический диапазон приемника: 80 дБ;
Выходная мощность передатчика на нагрузке 50 Ом (РЕР): 20 Вт на 7 МГц и 10 Вт на 14 МГц;
Питание: 15 В (4 литиевые банки).
Вся обработка сигнала в самом мелком четвертом Циклоне, кроме усилителей: входного и УМЗЧ у приемника, микрофонного и УМ у передатчика.
АЦП приемника — TDA8763M/5 (50 Мспс 10 бит), хотя ранее был нашел и поставил обратно LTC2247 на 14 бит, но я его сжег. Перед ним два каскада на гигагерцовых ОУ ADA4817-1 с общим усилением около 90 40. До усилителя стоит плавный аттенюатор до 40 дБ и ФНЧ Чебышева 6 порядка со срезом на 22 МГц.
ЦАП передатчика — AD9744 (200 Мспс 14 бит).
Микрофонный АЦП передатчика и звуковрй ЦАП приемника — сигма-дельта, сделанные прямо в ПЛИС.
Микрофонный усилитель-ограничитель — простейший на ОУ и диодах. УМЗЧ приемника — на микрухе TDA2822. УМ передатчика — трехкаскадный, с выходом на КТ912Б в чистом классе B.
Частота дискретизации с ВЧ стороны — 50 Мспс, разрядность — 10 бит. С НЧ стороны разрядность та же 17 бит, а частота — 15 кспс.
В качестве ФОС приемника и ограничителя спектра передатчика применен КИХ-ФНЧ 50 порядка с окном Блэкмана. В качестве НЧ фазовращателя применен КИХ-фильтр Гильберта 50 порядка с окном Блэкмана.
Синтезатор частоты — с 36-битным фазовым аккумулятором, 10-битным кодом фазы и 14-битной амплитудой.
Для экономии ресурсов фильтры сделаны 10-битными 17-, хотя эффективная разрядность на выходе CIC приемника 17 или 18 бит; взяты младшие 10 сейчас все. Из-за этого пришлось ввести аттенюатор.
Управляется это всё с МК ATMEGA328 щас мега8. Он опрашивает энкодер и кнопки, считает 36-битный код частоты для синтезатора, выводит его по последовательному интерфейсу в ПЛИС, считает КСВ при передаче и отображает все параметры на индикаторе.
Конфигурацию ПЛИС описывал на Верилоге в Квартусе II версии 11 перешел на 15. Готовые ядра фильтров на моём некрокомпе компилиться отказались, поэтому все блоки пришлось писать самому (кроме сигма-дельта ЦАП, который нашел в готовом виде в аппноте от Хилых).
В планах — введение АРУ почти сделано, требует дебага и демодулятора АМ, установка более разрядистого АЦП сделано в приемный тракт, упихивание фильтров в блоки памяти сделано, перенос всего этого на одну плату.
Сейчас проект занимает около 4к7 3к7 ячеек из 6к2, 12 16 перемножителей из 30 и около 22 33 кбит памяти из 270.
Изначально упор делался на возможность реализации малогабаритного, маложрущего, не требующего сложной настройки и с хорошими фильтрами трансивера, и оно в принципе удалось.
>ссылкой
http://dl2kq.de/pa/1-4.htm
>Как формируешь ссб?
Пикрелейтед.
Вот немного протухшее описание с замечаниями по текущему состоянию:
DDC однополосный телефонный КВ трансивер с такими характеристиками:
Диапазон частот приемника: 100 кГц до 21.5 МГц;
Диапазон частот передатчика: 1.8 до 14.5 МГц;
Шаг перестройки частоты: 0.1 кГц;
Модуляция: телефонная LSB/USB с полосой 3 кГц;
Чувствительность приемника: 1 мкВ при отношении с/ш 10 дБ;
Динамический диапазон приемника: 80 дБ;
Выходная мощность передатчика на нагрузке 50 Ом (РЕР): 20 Вт на 7 МГц и 10 Вт на 14 МГц;
Питание: 15 В (4 литиевые банки).
Вся обработка сигнала в самом мелком четвертом Циклоне, кроме усилителей: входного и УМЗЧ у приемника, микрофонного и УМ у передатчика.
АЦП приемника — TDA8763M/5 (50 Мспс 10 бит), хотя ранее был нашел и поставил обратно LTC2247 на 14 бит, но я его сжег. Перед ним два каскада на гигагерцовых ОУ ADA4817-1 с общим усилением около 90 40. До усилителя стоит плавный аттенюатор до 40 дБ и ФНЧ Чебышева 6 порядка со срезом на 22 МГц.
ЦАП передатчика — AD9744 (200 Мспс 14 бит).
Микрофонный АЦП передатчика и звуковрй ЦАП приемника — сигма-дельта, сделанные прямо в ПЛИС.
Микрофонный усилитель-ограничитель — простейший на ОУ и диодах. УМЗЧ приемника — на микрухе TDA2822. УМ передатчика — трехкаскадный, с выходом на КТ912Б в чистом классе B.
Частота дискретизации с ВЧ стороны — 50 Мспс, разрядность — 10 бит. С НЧ стороны разрядность та же 17 бит, а частота — 15 кспс.
В качестве ФОС приемника и ограничителя спектра передатчика применен КИХ-ФНЧ 50 порядка с окном Блэкмана. В качестве НЧ фазовращателя применен КИХ-фильтр Гильберта 50 порядка с окном Блэкмана.
Синтезатор частоты — с 36-битным фазовым аккумулятором, 10-битным кодом фазы и 14-битной амплитудой.
Для экономии ресурсов фильтры сделаны 10-битными 17-, хотя эффективная разрядность на выходе CIC приемника 17 или 18 бит; взяты младшие 10 сейчас все. Из-за этого пришлось ввести аттенюатор.
Управляется это всё с МК ATMEGA328 щас мега8. Он опрашивает энкодер и кнопки, считает 36-битный код частоты для синтезатора, выводит его по последовательному интерфейсу в ПЛИС, считает КСВ при передаче и отображает все параметры на индикаторе.
Конфигурацию ПЛИС описывал на Верилоге в Квартусе II версии 11 перешел на 15. Готовые ядра фильтров на моём некрокомпе компилиться отказались, поэтому все блоки пришлось писать самому (кроме сигма-дельта ЦАП, который нашел в готовом виде в аппноте от Хилых).
В планах — введение АРУ почти сделано, требует дебага и демодулятора АМ, установка более разрядистого АЦП сделано в приемный тракт, упихивание фильтров в блоки памяти сделано, перенос всего этого на одну плату.
Сейчас проект занимает около 4к7 3к7 ячеек из 6к2, 12 16 перемножителей из 30 и около 22 33 кбит памяти из 270.
Изначально упор делался на возможность реализации малогабаритного, маложрущего, не требующего сложной настройки и с хорошими фильтрами трансивера, и оно в принципе удалось.
Есть ли варианты лучше? Лишний обвес не нужен, больше ног - лучше.
С нуля, да.
>Динамический диапазон приемника: 80 дБ;
При десяти битах и 50 мспс и даунсэмплинге в 4 раза у тебя будет 11 бит, а это меньше 70 дБ
Или у тебя сейчас 14 бит и 50 мегасэмплов?
>даунсэмплинге в 4 раза
А теперь внимательно:
>Частота дискретизации с ВЧ стороны — 50 Мспс
>С НЧ стороны <...> — 15 кспс
50М / 15к = 3333.
Что даст увеличение на 35 дБ, и при 10 битах на входе, на выходе получим 95 дБ. Но по факту меньше, из-за нелинейностей АЦП и усилителя перед ним.
>Или у тебя сейчас 14 бит?
АЦП на 14, но работают только старшие 10.
>>308974
Я с такой начинал, потом докупил отдельно нужный быстрый АЦП и сделал приёмник. Только у меня за тот же ценник было 6к ячеек.
Ты сейчас на 40-ке покричать можешь? Мне интересно послушать твой сигнал/модуляцию (передавать нечем)
Достойно!
Выдалось свободное время, решил восполнить сей пробел. В вивадо открыл референсный проект, поморгал светодиодом, поспамил в com-порт, подергал прерыванием и что-то ощутил себя ардуинщиком из соседнего треда.
Поясните, для чего белые люди обычно используют процессор внутри ПЛИС? Какие для него типовые задачи?
Поднять на нем линукс и оттопырить UI в сеть.
Запилить параллельное управление зоопарком периферии.
Ну вот я видел матричный сопроцессор (на альтере) в который можно загрузить программу, состоящую из матричных констант и арифметических операций. Потом пинаешь туда вектор, например, а оно его всяко хитро мучает и выдает ответ. Программа как раз интерпретировалась NIOSом.
Тыкал в альтере простенькие примеры на верилоге. Захотелось начать работать, стажироваться.
В вакансии пишут:
обмен по SPI, UART, I2C, Ethernet;
процессорные системы на базе Zynq, Microblaze, PowerPC, сопряжение с различными типами памяти, системы обработки видео, формирование изображений на индикаторах по интерфейсам VGA, HDMI.
Про SPI, UART, I2C что-то где-то когда-то слышал и прогал на пиках даже.
Про Zynq, Microblaze, PowerPC читал и не понял, нахуя оно. Это как малина, только сок+плис?
К чему нужно быть готовым, чтобы не обосраться на собеседовании? Уметь написать сортировку, решить задачку про три кофейника, написать д-триггер на бумаге или чего?
А гугл пишет что это РПКБ. Ты действительно думаешь что у них там везде Zynq и Microblaze?
>Про SPI, UART, I2C что-то где-то когда-то слышал и прогал на пиках даже.
Вот это есть практически в любом микроконтроллере, нахуя тогда ПЛИС?
>формирование изображений на индикаторах
Как минимум с этим разберись. Хотя бы сделай вывод текста из памяти на монитор через VGA или HDMI, а потом расширь функциональность до чего-то типа VT100.
>К чему нужно быть готовым, чтобы не обосраться на собеседовании?
На собеседовании скорее всего спросят о теме дипломной работы, о хобби. Со студента много спрашивать не будут. В таких КБ задачки на собеседованиях обычно не дают, а если дадут, то могут дать самые разные. Например попросят предложить конструкцию ГУН на 13,5МГц (для видеосигнала).
>Ты действительно думаешь что у них там везде Zynq и Microblaze?
Поскольку не видел боевых проектов на плис - не знаю.
>Вот это есть практически в любом микроконтроллере, нахуя тогда ПЛИС?
Об этом знаю. Вот как раз и получается, что там софт ядро и типа МК на плис выходит? Нахуя - не ко мне вопрос.
>Хотя бы сделай вывод текста из памяти на монитор через VGA
Делал контроллер вга, который выводил всякие полосочки цветные на моник. Посмотрю подробней.
>Со студента много спрашивать не будут
Спасибо, что обнадежил. Главное потом на рабочем месте не напортачить.
>А гугл пишет
Подозревал, что пытливому анону захочется погуглить. Ничего не скроешь в постиндустриале.
>студенту
>простенькие примеры на верилоге
>процессорные системы на базе Zynq, Microblaze, PowerPC, сопряжение с различными типами памяти, системы обработки видео, формирование изображений на индикаторах по интерфейсам VGA, HDMI
Пока что не твой уровень, пойди работать в какой-нибудь ФГУП, поработай годика три, а там уже и сориентироваться сможешь.
Я тоже так считаю. Но знаю только один ФГУП, где можно плисоебствовать. Но там совсем за еду.
Да ладно? На картинке типичная система отображения информации, которыми занимается РПКБ в числе прочего. В соседнем треде ардуинщики делают ненамного менее сложные интерфейсы, пусть и более медленные. Хотя если человек пишет:
>читал и не понял, нахуя оно
То может быть и не его уровень.
Но как я узнаю, что нужно, если не будут давать задач?
Вот, например, делал я эти триггеры и юарт контроллеры. А тут, оказывается, микроблейз надо знать.
Ну вот сиди на работке и изучай микроблейз в свободное время.
>РПКБ
Лол, я там работал.
>Ты действительно думаешь что у них там везде Zynq и Microblaze?
Сейчас, как и везде потужности к импортозамещению, но раньше всё делали только на Xilinx
У меня из фейков только qTox:
189085AB23EB7A64F25866E3A3F4649E52E4074609E2D6E50D34381231D5601B374132E17C88
Если уж очень захочется - пиши.
Ладно, похуй на анонимность, расскажу тут. В целом, ламповое место, особенно для зеленого студента. За тобой нет особого контроля, полная самостоятельность. Можно мутить свои темы. Мы с ребятами угорали по радиогубительству и для своих целей выписывали со склада всякие интересные компоненты. Можно поступить в аспирантуру. Пару раз в год от конторы отправляют на платные курсы, если подсуетиться можно даже самому выбрать. Много различных ивентов - турслеты, экскурсии, даже как-то был турнир по КС. Каждый день после обеда
Короче, возможностей масса, важно не начать деградировать - это здесь поощряется тоже.
В плане зп здесь грустно. Когда я уходил была жесткая уравниловка, выше средней цифры по вашему отделу прыгнуть сложно.
Почему уволился - словил день сурка, захотелось больше денег и еще достала общага. В итоге, как и многие завел трактор в москвабад.
Спасибо, обрадовал.
А еще у них есть страничка про стажировку, но не написано, куда писать на этот счет.
А аспирантура - вообще каеф.
А вот молодежная хуйня мне не оче нравится. Активности, слеты, хуеты. Брр.
А с зп может и не грустно, если в москве не гулять? Вот предложили сейчас параллельно стажироваться за 30к\20ч, но это москва и с контролем.
Про зп не строй илюзий. На погулять в ДС хватит, а вот купить хату едва ли.
Я сейчас ищу работу и обнаружил, что вакансий чуть меньше чем у программистов МК. А вакансии висят по нескольку месяцев. Не знаю как обстоят дела в ДС, но у меня создалось впечатление, что в ДС-2 плисоёбов совсем нихуя нет и это неудивительно. Я хорошо знаю анонов из других вузиков, и нигде больше семестра (хорошо если хотя бы один) этой теме не уделяют.
Ну так радуйся.
Да, на 6-м курсе получить семестр VHDL - это совсем такое себе.
А что там изучать?
Цифровая схемотехника ПЛИС не отличается от общей цифровой схемотехники.
Аналоговая часть в смысле reset'ов, pll, phy - тоже соотвествует общей схемотехнике.
Ограничения временных параметров - возможно, но это тоже не плисовская тема, а тема синхронной цифровой схемотехники и соблюдения условий, при которых эти абстракции работают. Verilog/VHDL - это тоже общецифровое, а не ПЛИСовское. На кафедрах, связанных с микроэлектроникой изучается.
В итоге, чисто на ПЛИС остаётся - это то, как экономить интерконнекты, использование третьих состояний и прочее. Даже внутреннее устройство логических элементов/макроячеек, а это уже не тема систематического образования, а тема применения конкретной железки.
Сама разработка - это больше системотехника даже, а не схемотехника. Когда припёрло, Verilog для синтезируемых конструкций освоил за неделю (правда, coding style handbook мне предоставили). Потом, когда работал с VCS, Spyglass, DC изучил уже некоторые нюансы, которые позволяют ускорить работу уже после написания кода - во время функциональной и формальной верификаций, статического анализа кода (чтобы меньше warning'ов генерировало). Так что полгода VHDL - это дохера ещё. Хотя, не знаю, может VHDL не такой минималистичный, как Verilog.
В итоге, гораздо больше времени уходит на верификацию, а там не ПЛИС надо знать, а программирование. ООП, вся вот эта херня.
>Вот это есть практически в любом микроконтроллере, нахуя тогда ПЛИС?
Вот это вот всё есть не только в микроконтроллере, а в часах реального времени, АЦП, токовых мониторах, ЦАП, и т.д.
И АЦП к ПЛИС подключается по тем интерфейсам, которые в ней есть, только, специально для ПЛИС часто в SPI, Скажем, АЦП, введен режим, позволяющий получать данные быстрее, например, 12-битное значение за 13 тактов. На ПЛИС реализуешь кастрированный SPI, который только это и умеет, зато в разы меньше, чем SPI общего назначения. Далее обрабатываешь сигнал с той скоростью, либо с теми задержками, на которые МК не способны. В общем, ПЛИС ради ПЛИС, конечно, не нужна. Но если есть конкретные задачи, которые решаются на ПЛИС, и нужна связь с реальными сигналами, то все эти интерфейсы общего пользования (I2C, SPI и т.д.) реализуются в ПЛИС.
>Source please.
Mine is confidential, and under NDA.
Но в сети можно найти, например, от xilinx: https://wiki.electroniciens.cnrs.fr/images/Xilinx_HDL_Coding_style.pdf
или вот эту:
http://www.ee.ncu.edu.tw/~jfli/vlsidi/lecture/VerilogCoding-2009.pdf
Но те две верхних - это просто по первым ссылкам сейчас нашёл, пролистал, правильные вещи в них, вроде, есть.
Сам я поначалу нередко заглядывал вот сюда:
http://fpgacpu.ca/fpga/hdl/coding_guidelines.pdf
Но суть не в этом, увидев флагманский кристалл хилых, мне захотелось посмотреть на мид-рендж девайсы. И я был просто поражён количеством документации, литературы и плат. В общем заказал себе Zybo Z7-20 с видеокамерой, буду машин-вижен запиливать.
Ты молодец. Ровно такая же мысль, вот просто один, посетила меня на днях. Но, к сожалению, закажу немного попозже. Удачи тебе с этим делом.
С тулами под линупс у хилых, вроде, всё в порядке? Или нужно синопсисовскими пользоваться?
Не обязательно IDE, можно синтезатор, симулятор и трассировщик отдельно. Но понял. Удивительно, что Debian и Ubuntu, а не RedHat.
Нормас, только /bin/sh должен указывать на bash и локаль, желательно американская в системе. Может в последних вивадах уже починили, но ИСЕ иногда сбоило
Спасибо
Нет, если умеешь в децимацию. Задачи какие хочешь решать?
Ты бы схему для начала нашел, иначе это даже не плачевно, а просто мусором будет. По моему проще самому припаять все это.
>попробовать ЦОС, и всё такое.
Ну даже не знаю, так-то ЦОС можно делать хоть на атмеге. Или RTL-SDR можно взять.
>проще самому припаять все это
Заказал таки ацп да цап, ждите через месяцок плач с мольбой, как развести плату с обвязкой.
>Заказал таки ацп да цап, ждите через месяцок плач с мольбой, как развести плату с обвязкой.
Если дела и правда так обстоят, скажи, а ты уже подумал, как ты будешь с ПЛИСиной связываться, чтобы данные посмотреть? Только через ChipScope или его аналоги?
Gay's, есть несколько штук ЕРМ3256 в 208-ногом корпусе. Подкиньте схем логических анализаторов на CPLD, а? Я уже изгуглился, всё на Хилинхе выдает и ничего на Альтере. Хоть ткните носом в принципы и схемотехнику, позязя.
Ничего хорошего в эту микруху не влезит. Вся MAX серия нужна что бы заменять рассыпухи логических микросхем.
ДС-2 ушлёпок 19-и лет от роду вкатился. Насколько смотрят на корку при приёме на должность байтослесаря-схемотехника? Сейчас учусь на 2-м курсе соответствующей специальности и все фибры моей души говорят мне бросать эту парашу и идти в подмастерье к какому нибудь усачу с производства. Если в программировании мальчики с подворотами вполне могут тебя принять за хороший перечень своих проектов на гитхабе, то как на меня посмотрят люди из касты программистов-электронщиков? Без корки никак? Помоги, двощ, заебало слушать нудные лекции. Со старших курсов тоже не слышно ничего положительного
Берешь самый дешевый плк с ethernet и n модулей ввода - вывода, например таких:
http://www.owen.ru/catalog/modul_diskretnogo_vivoda_oven_mu110_8r/39036535
Можно даже без плк, просто конвертер modbus-tcp в modbus проводной
Как правило, смотрят корку. Хоть какое-то образование в околоэлектронной области у тебя должно быть.
Без корки категорически никак. Не бросай, потом пожалеешь. Попробуй вынести с лекций что-нибудь полезное, но если не получится, то вынеси хотя бы корку, она пиздец как важна.
Двочую этого. Вот например я долбаеб, еле натянул вышку на тройку. А позже оказалось, что без хорошего математического аппарата фактически закрыт путь в ЦОС. Вот так каких-то из-за двух лет проеба в институте отсек себе добрую половину вакансий по FPGA, не говорю уже про программирование.
Как будто универ помогает шарить в ЦОС, матане и программировании.
У меня все эти дисциплины были, в последствии после зачета благополучно их забыл. Такие дела.
>не говорю уже про программирование.
Матан (континуальная математика) в программировании и нахуй не сдался.
Программирование - это буквы, а не цифры, лол.
Ты не прав. Цель программирования - реализация алгоритмов. От знания синтаксиса языка, ООП, и всяких хитровыебанных парадигм программирования мало толку, если ты не сможешь понять как работает алгоритм, который тебе требуется реализовать.
В некоторых случаях без знаний математики это вообще невозможно.
Последовательность действий алгоритма можно запрограммировать без понимания как и почему этот алгоритм работает. Если сам алгоритм и его параметры выбирает не программист, а кто-то еще, то зачем программисту о чем-то задумываться?
Разумеется, программирование - это математика.
Просто это другая математика, не матан.
И в этой математике нет цифр.
Ну, или почти нет.
Что сейчас возможно запилить в одно рыло и чего нет в открытом доступе?
Аппаратные эмуляторы соснулей, педальки цифровые для гитарастов, раньше еще манямайнеры на спартан4 были актуальны, сейчас уже - хуй.
Тебе для души или для дохода мимо кармана работодателя? Если первое, то берёшь и делаешь какую-нибудь относительно малоизвестную, но документированную, старую ЭВМ (ту же БЭСМ-6 может и оплисили, но всякие Уралы и Мински — нет). Или берёшь что-то уже готовое, но делаешь свой вариант с блэкджеком и шлюхами.
Нужно быть плисоводом 99 лвл, чтобы иметь доход мимо работодателя. Так что этот вариант можно не рассматривать.
С консолями понятно, можно поиграть, в сети полно дампов. А какой профит от некро-ЭВМ?
> А какой профит от некро-ЭВМ?
Да тот же самый: ПРОСТО играться в своё удовольствие. Позапускать программы (если сохранились образы/исходные тексты), погонять всякие Dhrystone/Whetstone/смесь Гибсон-3, чтобы сравнить быстродействие своей игрушки с оригиналом… В общем всё то же самое, что и на програмном эмуляторе, плюс руками пощупать можно:
http://web.archive.org/web/20171118234453/http://chrisfenton.com/homebrew-cray-1a/
P.S. Или взять железный процессор, а на ПЛИС обвязку делать:
https://github.com/dekuNukem/FAP80
http://tech.mattmillman.com/projects/8od/
Плисаны, посоветуйте ПЛИС для поиграться, чтобы кодить как в ардуине и с модулями до ~500 рублей(меньше лучше ) и подходил к программатору пикрил. Желательно с обвязкой и относительно большим количеством gpio или как это у вас называется. Если под мои запросы ничего нет, то просто обоссыте, а то надоело быть в одном загоне с ардуинщиками
Твой выбор cyclone 4, ищи у китайцев по запросу waveshare. Но до 500 - нет, 1,5к примерно.
У меня с пяток таких вот хуевин. Нажиты забесплатно на свалке с игровых автоматов диких нулевых. Даже разъем под бластер выведен.
Эти любят расстояние между штырями делать 2 мм, что очень неудобно. На алиэксперссе есть другие платы с EP4CE6 за ~1000р с нормальным шагом штырей.
>>315391
Это же мелкая CPLD, туда ничего кроме каких-нибудь часов или чего-то вспомогательного не влезет.
Но для начала может и сойдет. Как вариант, можно взять переходную плату для tqfp и самостоятельно припаять к макетной плате. Или взять CPLD в PLCC корпусе с панелькой и обойтись без переходной платы.
TQFP:
https://www.chipdip.ru/product/epm240t100c5n-tqfp100
https://www.chipdip.ru/product/ppo-qfp-pcb (Это пример, нужно выбрать с нужным шагом выводов)
PLCC:
https://www.chipdip.ru/product/epm3032alc44-10 Хотя это настолько мелкая, что даже часы не влезут.
https://www.chipdip.ru/product/plcc-44
Так что, даже если покупать в оверпрайснутом чипдипе, начальный вариант может уложиться в 500 рублей. Другое дело, что ничто интересное в такое не влезет.
Ну да, именно про эти платы я писал:
>На алиэксперссе есть другие платы с EP4CE6 за ~1000р с нормальным шагом штырей.
Кстати, наткнулся тут, из списка «чем заебать студента»: «Низкочастотный радиоприёмник с магнитной антенной для разбора сигнала до мегагерца или первых мегагерц -- фактически просто магнитная антенна и полосовой усилитель к ней, с выходом на ADC платы, или со своим ADC и каким-то цифровым портом. Готовые чипы тоже можно поискать, было такое. FPGA может сканировать и развернуть спектр, озвучить простые сигналы (всякие цифровые). Интересное занятие, люди залипают. :) На малые расстояния (near field) сможет и передавать с одной платы на другую». Ну и вообще всякие SDR, когда оцифровываем пойманное на антенну и подаём на FPGA для обработки.
P.S. Плюс ещё есть такие вещи, как логические анализаторы. Берёшь тот же опенсорсный Logic Sniffer и переделываешь его со старого Spartan-3E (там как-раз место давно кончилось) на новый жирный Spartan-6 или Cyclone-iV.
>Ну, у тех вариантов платок, что с двумя гребёнками, обычное 2.54мм.
Не на всех платах, например тут 2мм: https://www.waveshare.com/product/fpga-tools/altera/core/coreep4ce10.htm
Еще на всякий случай скажу банальную вещь: для изучения verilog/vhdl необходимости в железке нет. Роль симулятора тут совсем не та что для микроконтроллеров, без симулятора для ПЛИС вообще ничего толком не сделать.
>К ним ещё придётся старый квартус брать.
По сравнению с тем что было у xilinx с вивадой и ISE, это мелочи.
Что насчёт этого можешь сказать? https://www.tindie.com/products/nolando/arduino-compatible-spartan-6-fpga-board/
Обычная плата с плис+питание+штыри. При выборе xilinx важны последние цифры - количество LUT, у меня они всегда первыми кончаются. На картинке 9, т.е. 9000 - самый маленький кристалл. Когда соединяешь модули, как раз тысячами и оперируешь. То есть скажем, положешь туда проц, spi ему на шину и смотришь, уже поджимает. Но скажем >>315411 >логические анализаторы
самое то.
У papilio хотя бы библиотеки
были какие-то к ise, но я не смог запустить, там как всегда заморочки с окружением и зависимостями.
Вообще, для легкого вката рекомендую https://github.com/enjoy-digital/litex . Одно то, что ему похуй на производителя (xilinx, intel, latix) и файлы проекта генерятся на лету, - большой плюс. Там не просто генератор verilog, - там целый фреймворк.
А то збс у хилых - выучи ucf, выучи xdc, выучи еще 10 форматов, собранных на коленке, чтобы подключить свое ядро к microblaze. Ну нах, надо было на php-макаку учиться.
https://ru.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180313015457&SearchText=+spartan+6
Если есть деньги, поищи artix 7, он круче (выше частоты, круче pll и др., )
Бери любую, потом просто создашь свой файл наподобие этого
https://github.com/enjoy-digital/litex/blob/master/litex/boards/platforms/minispartan6.py
и в добрый путь.
ps я знаком и все это проделывал только с xilinx.
Закрытые исходники, привязка к конкретной плате. Не слишком полезно.
https://github.com/enjoy-digital/litex/tree/master/litex/soc/interconnect
Вот уже кто-то axi-lite прикрутил, тут-то библиотек хватает, да и проект растет. И я напомню, что весь код там равен по оптимизации верилогу.
На этом я угомонюсь, чтобы не быть навязчивым.
Нужно запилить Курсач в Quartus, хочу написать на Verilog,но столкнулся со следующим:
На ютубчике есть видос
https://www.youtube.com/watch?v=tAKhX_-EyT4
Тут автор пишет в верилог файле конструкцию вида:
module firstproject
{
input in,
output out
};
Квартус на такую конструкцию отзывается след образом:
Error (10170): Verilog HDL syntax error at firstproject.v(2) near text "{"; expecting ";"
И, вроде как, более правильно для него
module firstproject (in, out,);
input in;
output out;
Почему тогда у автора лыжи едут, а я ебанутый?
Алсо,посоветуйсте простой, годный гайд по верилогу. Спасибо.
У тебя скобки не те.
>И, вроде как, более правильно для него
Без разницы. Первый вариант не работает только в verilog-95.
>Мне какие-нибуь онлайн статьи или видео подавай.
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
Верелога ты от него наверно не дождёшься.
>enjoy digital
А можно подробнее что это за ерунда?
Там получается пишешь на питоне и эта махарайка генерит HDL-код под выбранную архитектуру?
Подробнее в мануале:
https://m-labs.hk/migen/manual/
Зайди сюда, установи пакет и сгенерируй пример. Если знаешь verilog, увидишь, что ничего лишнего там не сгенерировалось. Verilog сам по себе поддерживается всеми архетиктурами, но вот файлы ограничений - нет.
https://github.com/m-labs/migen
А здесь уже реализованы ip модули, которые можно использовать в своем проекте.
https://github.com/enjoy-digital/litex
Проект сырой, как законченное решение рекомендовать не могу.
Купи, за одно отпишешся как оно. 280р. - не такие уж и большие деньги, кроме того - есть рефанд, если что-то не так будет.
>Купи
Купил, еще в придачу пару STM32F103CBU6 по 50р. Только проверить сразу хуй получится, надо печатку еще замутить.
Враноеб покупал. Он вроде бы в ЦОС-треде писал, а может и в этом.
>>315814
Деньги то небольшие, но учти усилия по замене на работоспособную микросхему.
Я бы чуть дороже (386 рублей) купил тут: https://www.terraelectronica.ru/product/851969
>усилия по замене на работоспособную микросхему
Срезать резаком ноги и снять остатки паяльником? Ну минут пять потрачу.
>не надо по одной микросхеме покупать.
Я у них и так натарился с нового года, пока пусть покурят.
Это вопрос скорее по схемотехнике, если речь идет о синтезируемом коде. Счетчик с входом разрешения счета можешь сделать? А сильно ли отличается передатчик UART от сдвигового регистра с счетчиком?
Да, спасибо. Так и сделал. По сигналу завершения приема в модуле uart_tx выставляется true на регистр разрешения передачи, а дальше уже собственно передается посылка.
>>316240
По сути там регистр со счетчиком, насколько я могу судить. Я вообще не особо умный. Пытался запихнуть always в always и бугуртил, почему не получается.
Собственно, все что я сейчас хочу сделать это эхо тест uart, но пока не особо получается. Байты отправляются и принимаются, но во-первых принимаются обратно не те, что отправлены я сначала думал порядок битов противоположный, но это не так. Прием вроде нормально работает, т.к. выводил байт на линейку светодиодов. Во-вторых, после того как отправил байт, если отправить за ним другой, отличный от предыдущего, то сначала вернется предыдущий, а уже потом настоящий. В общем учиться и учиться.
Добавьте в шапку, а то я заебался каждый раз линки кидать:
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZs-gvs0dC8oO3HXrmGC1bm
https://www.youtube.com/playlist?list=PL4UMfOeGYsvZTAJkgY3XfsrFyK1laAchO
ПЛИсаны, я не понял, вот я синтезировал конфигурацию и залил ее в эту вашу FPGA, отключил питание и все пропало? Это мне надо отдельный контроллер мутить, чтобы каждый раз конфигураци. закидывать в нее?
http://ru.farnell.com/avnet/aes-ku040-db-g/dev-board-kintex-ultrascale-prog/dp/2775206?st=kintex
Может есть что-то с более оптимальным соотношением цена/производительность?
И если заказывать с фарнелл - не завернёт ли таможня? Пугают буквы "AES" в названии.
Хуясе тебе "ардуину" растянули!
В мамку твою десяток ссыклонов поместится.
>TMS320F241
>The on-chip flash is shipped with a serial bootloader code programmed at the following addresses: 0000−00FFh.
Для начала стоит попробовать прочитать через bootloader, возможно его не стерли.
>Vccp
Так написано там же:
>Flash programming voltage supply pin. This is the 5-V supply used for flash programming.
Это напряжение питания нужно для записи во флешку, по моему все понятно.
Возможно вывод Vccp не подключен из-за того что там масочное ПЗУ вместо флешки:
>For large-volume applications consisting of stable software free of bugs, low-cost, masked ROM is available and supported up to 16K or 4K words. If you want a custom ROM, you can provide the code or data to be programmed into the ROM in object-file format, and Texas Instruments will generate the ap-propriate process mask to program the ROM.
Со страницы 48:
>Unlike most discrete flash memory, the F243/F241 flash does not require a dedicated state machine, because the algorithms for programming and erasing the flash are executed by the DSP core.
Если я правильно понял, то для прошивки в ОЗУ через JTAG помещается загрузчик и далее этот загрузчик по кусочкам пишет во флешку. Аналогично делается в большинстве ARM микроконтроллеров. По моему в таком случае можно прочитать ПЗУ (инструкция чтения там есть - TBLR) вне зависимости от Vccp. А снимать дампы с помощью снифферов так можно долго.
>снять с них дампы, чтобы перезалить их в "новые" аналогичные микрухи
Зачем? Или у тебя несколько одинаковых плат и на одних эти DSP исправны, а на других нет?
Да, все именно так, поэтому это очень важный момент, на котором я и акцентирую внимание.
Слушай, извини, конечно, но я права в этом не столь хорошо смыслю. Можешь поподробнее пояснить?
bootloader - это небольшая программа, которая может принять данные по какому-нибудь интерфейсу, например UART, и записать их в ПЗУ. В некоторых микроконтроллерах bootloader может находиться в неперезаписываемой области памяти, в некоторых его вообще нет, а в этот DSP его прошивают на заводе в ПЗУ. Хотя в этом DSP bootloader находится в перезаписываемой памяти, все же вполне возможно что он тут оставлен.
Активация bootloader-а часто происходит путем перемыкания каких-нибудь ног. То есть при старте программа проверяет лог. уровни на каких-то выводах и в зависимсоти от результата либо переходит к выполнению основной программы либо начинает ждать данные для прошивки.
>The serial bootloader can be used to load flash-programming algorithms or code to any destination RAM through the on-chip serial communications interface (SCI).
>Refer to the TMS320F240 Serial Bootloader application note (located at ftp://www.ti.com/) to understand on-chip flash programming using the serial bootloader code. (Choose /pub/tms320bbs/c24xfiles at the main ftp directory to locate the f240boot.pdf file.)
То есть этот bootloader может загрузить какой-то код в ОЗУ, а потом уже загруженный код будет прошивать дальше. Тебе нужно почитать про то как активируется bootloader и про его команды.
Хотя, если у тебя есть JTAGjet C2000, может стоит начинать с JTAG.
>либо переходит к выполнению основной программы
Вот с этим я мог ошибиться. Не все bootloader-ы так делают.
А еще, если там масочное ПЗУ (как там написано, для удешевления, при большой серии), то JTAG могли выкинуть для удешевления. Хотя упоминаний про такое я не нашел, но зачем нужен JTAG если меняют флешку на масочное ПЗУ?
Благодарю за участие, попробую инфо от тебя применить на деле. JTAGjet не помогает, при попытке коннекта выдает ошибку "I/O Port = 240". Смотрел инфу от тех, у кого она же, с техподдержкой общался, но все пока что безрезультатно, либо сама микро на таргетборде неправильно подключена (у меня таргетборд просто кусок текстолита с разъемом под JTAG, питаловом и панелькой под микруху), либо с дровами проблема, либо что-то с железом не так. На JTAG логический анализатор показывает, что есть дрыганья лишь по двум линиям, и то если в софте от С2000 на TRST подать 1. Про режимы бутлоадера находил инфо - если будет интересно, скину - тип там есть просто bootmode и emulation mode - это как на STM32 свистке пины пермыкать по-разному при прошивке (в частности, бутлоадера)?
И да, на плате пин Vccp таки тоже задействован.
Этот не всплывал последние месяцы, а тут внезапно всплыл.
Вы видите копию треда, сохраненную 15 января 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.