Перейти к содержанию
    

Muscat

Свой
  • Постов

    275
  • Зарегистрирован

  • Посещение

Весь контент Muscat


  1. https://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=Russia&city1=Moscow&country2=Taiwan&city2=Taipei You would need around 285,513.92руб (105,313.47NT$) in Taipei to maintain the same standard of life that you can have with 220,000.00руб in Moscow (assuming you rent in both cities). Average Monthly Net Salary (After Tax) 45,214.16 NT$ http://www.salaryexplorer.com/salary-survey.php?loc=212&loctype=1&job=3&jobtype=2 A person working in Developers and Programmers in Taiwan typically earns around 119,000 TWD per month. Salaries range from 96,200 TWD (lowest average) to 164,000 TWD (highest average, actual maximum salary is higher).
  2. Всем привет, Открыта вакансия на опытного FPGA разработчика в Копенгаген, Дания. https://www.alipes.dk/Jobs/Details/10 - Надо хорошо знать Xilinx FPGA, - какие бывают ресурсы, низкоуровневые оптимизации и знать Python - Желательно иметь навыки в машинном обучении, С++ 14/17 - Компания оформляет визу для работы - Вся работа на английском языке, коллектив интернациональный, учить датский не требуется - Компенсация выше, чем Ericsson или Nokia :) ---------------------------------- Немного про страну - Дания занимает 3 место в мире по знанию английского, среди неанглоговорящих стран, https://www.babbel.com/en/magazine/best-non-native-english-speaking-countries Копенгаген стабильно входит в топ городов качества жизни https://www.wonderfulcopenhagen.com/wonderful-copenhagen/international-press/copenhagen-tops-monocles-best-cities-quality-life-index-2021 ( На оффтоп не отвечаю, извините)
  3. Так, если кому еще интересно версия 10.4 c лекарством сохранила проблему. Дело не в интеле. Пробую вот такие варианты logic [8191-1:0] ram_buffer0 ; logic [8192-1:0] ram_buffer1 ; logic [4000-1:0][2-1:0] ram_buffer2 ; Пробую вот такие массивы. Массив 0 в списке объектов есть, массив 2 есть, массива 1 нет. Квеста не показывает в списке объектов переменную, если в ней более 8191 элемента. Ее нельзя добавить ни в лист, ни в вейвы, потому что не видна как объект add wave -position end vsim:/tb/UUT/ram_buffer1 Красеньким # (vish-4014) No objects found matching 'vsim:/row_buffering_tb/UUT/ram_buffer1'. продолжаю исследование logic [10000-1:0][5:0] test_ram_buffer_long ; logic [5:0] test_ram_buffer_last ; assign test_ram_buffer_long[10] = 42; assign test_ram_buffer_last = test_ram_buffer_long[10]; Переменная test_ram_buffer_last сохраняет свое значение, в смотрелке вейформ видно ее присвоение. Но объект test_ram_buffer_long не виден. То есть бага не симуляции, а видимо того что дампится в WLF, а что нет. на рабочей тачке такого горюшка не наблюдал, но там RHEL. Дома win7, 16GB RAM.
  4. Хорошая попытка угадать, но нет :) 1. В других версиях квесты купленных за деньги многомерные массивы (packed/unpacked) все видны в списке обьектов. в бесплатном моделсиме от интела не видны. Про Е6 и сознание не понял. 2. Через прямую команду пробовал add wave /tb/uut/array_name пробовал - object not found. Как только массив становится одномерным. то появляется в списке обьектов и по команде тоже доступен
  5. Всем привет, есть вопрос по Questa Sim Пробую бесплатную лицензию от Intel, симулю SystemVerilog. В смотрелке переменных пропадают многомерные массивы. Одномерные есть. Это ограничение бесплатной лицензии?
  6. Вилка 100-150к http://www.superjob.ru/research/articles/1...aty-v-sfere-it/ Вот например 2015 год, потолок для ведущего 200к, средняя 120. Тут вроде не в гугл зовут и в банк.
  7. Коллеги, всем огромное спасибо за советы, ссылки и мнения. По вопросу с бюджетом - если честно не выделял. Сколько получится, сколько меня устроит и мою жабу :) Пока как я понял а) Разводить на ноуте все равно не вариант б) Надо покупать домой отдельный кузов, больше памяти, больше гигагерц. Есть ли смысл брать готовые сборки?
  8. Прошу прощения у модераторов, если тема не по адресу, но хочется услышать именно мнение плисоводов, Задача - нужна машина для работы с FPGA, остальное по мелочи - схемотехника, топология, вижуал студио, матлаб и проч. САПР - Vivado, Cadence Capture, Aldec, Sympify, Altium Designer. С офисной машиной все понятно, накупил серверных ядер побольше и памятия погуще намазал. Но вот дома раньше обходился ноутом 2009 года, а сейчас задумался над обновлением. Ключевые ресурсоемкие задачи - Временное моделирование (большие проекты, тяжелые корки) - Синтез и разводка Xilinx 7Series, Zynq и UScale - Отдельно выделю ресурс - большой экран. Не могу работать за стандартными, привык к 2-3 широкоформатным мониторам, чтобы тут сорцы, там браузер с доками, а тут вейформы с логами. В качестве ключевых критериев выбрал Core i7 и от 12ГБ оперативки Ноутбуки Ноут HP Lenovo Получается 65 тыр, плюс еще отдельный монитор, итого выходит под 90к, это немного минус. Но с другой стороны инструмент же для зарабатывания. Из плюсов мобильность конечно. Стационарный Стационарный - все по все 33к. Больше гигарец и памяти при в 2 раза меньшей цене. Из минусов - не получится разводить и симулить нигде, кроме как дома. С другой стороны можно сидеть со старого ноута набирать код, а тяжелые вычисления крутить на новом ящике, спрятанном дома, по SSH? Но если работать не дома, то опять вопрос мониторов. В качестве монитора друзья предложили попробовать телевизор Например и например разница 25 против 15 при тех же размерах. Если в игры играть не планирую, то может тогда телек? Или он не подходит? Короче вроде вопрос простой, но немного в растерянности Поделитесь опытом, кто чем пользуется для работы вне офиса? Стоит ли овчинка выделки и разорения на ноут? Или все это баловство и надо брать полноразмерный?
  9. Ну вроде разобрались :) Если дефолтный режим асинхронный, то почему флэшка недоступна после конфигурирования, но доступна если загружена по JTAG? Ведь при загрузке по JTAG тоже startupe блока нет, а значит и нет клок?
  10. Да, с направлением клока ошибся :) Так, то есть если я правильно понял, что 1) ПЛИС при подаче питания включилась в режим синхронного чтения из флэшки http://www.xilinx.com/support/documentatio...ries_Config.pdf (Страница 62) 2) Вычитала память, загрузилась и оставила висеть клоковую ногу CCLK_0_N10 (N10) в воздухе http://www.xilinx.com/support/documentatio...p135_rev1_0.pdf (страница 3) 3) Как я понял из описания корки http://www.xilinx.com/support/documentatio...100-axi-emc.pdf Она не может тактировать память, среди External Memory Interface Signals нет клока 4) Надо взять блок Startup2 и передать через него "на улицу" клок s_axi_clk, главное тот что подан на пин rdclk корки. В блокдизайне это делать нельзя, корка не поддерживает, по старинке объявлять ручками во враппере блок STARTUPE2 #( .PROG_USR("FALSE"), .SIM_CCLK_FREQ(10.0)) STARTUPE2_inst ( .CFGCLK (/* NC */), .CFGMCLK (/* NC */), .EOS (/* NC */), .PREQ (/* NC */), .CLK (1'b0), .GSR (1'b0), .GTS (1'b0), .KEYCLEARB(1'b0), .PACK (1'b0), .USRCCLKO (MY_CLK), .USRCCLKTS(1'b1), .USRDONEO (1'b0), .USRDONETS(1'b0) ); http://www.xilinx.com/support/documentatio...ries_Config.pdf (Страница 91) 5) В бутлоадере и приложениях, которые хочу использовать добавить Xilflash в BSP. ( Это уже пробовал раньше, эффекта не было - при загрузке из JTAG и так работало, при загрузке из флэшки и так не работало, убрал :) )
  11. 1) Если EMC в режиме linear flash, то нет доступа к внутренним регистрам (AXI_REG шина не появляется) 2) Не понял? В режиме синхронного чтения клок выходит ИЗ флэшки и идет В ПЛИСу, разве нет? Страница 62 http://www.xilinx.com/support/documentatio...ries_Config.pdf При этом блок STARTUPE (там же страница 92) используется для вывода клока ИЗ плисы, когда используется SPI FLASH. Разве не так? 3) Не менял, но флэшку не вижу после конфигурации из нее. У вас же так же было "по умолчанию"? Вы добавили блок Startupe? Или изменили режим? Последний пункт не понял. Почему не будет? Если ПЛИСа сконфигурирована через JTAG, то как раз все работает, бутлоадер видит флэшку, можно обращаться к данным по указателю. См пункты 3.1-3.3 Для Commong Flash Memory Interface нужно еще какое то ядро? EMC не подходит? Огромное спасибо что так активно и содержательно помогаете
  12. http://ru.aliexpress.com/item/Practical-Ne...1563828031.html 930 рублей новый, а вы продаете за 3500 да еще и б/у
  13. Всем огромное спасибо за ответы Итого остаются те же 2 варианта а) Формовать б) Сверлить. Осталось выяснить, как хотел делать производитель. По сверлению вопрос - сейчас плата с этими транзисторами (а их несколько десятков) разведена так, что они стоят один напротив другого с двух сторон платы. Можно ли сверлить сквозные отверсия и вставлять их с двух сторон? Так можно делать? И попутно тогда - есть ли аналоги этих транзисторов из МОПа? Мы не нашли, но вдруг плохо искали...
  14. http://www.gz-pulsar.ru/images/foto_statiy/cherteg/KT-23.png 10мм полная длина, диаметр корпуса 3.6, итого длина ножки (10-3.6)/2= 3.2мм
  15. Интересует вопрос, как правильно паять корпус КТ-23 http://www.gz-pulsar.ru/index.php/poluprov...-p-n-perekhodom 1) Формовка выводов - но их длина 3.2мм, не слишком ли мало для формовки? ТУ на формовку таких корпусов найти не удалось 2) Сверлить отверствие в плате. Не хотелось бы, тк под ним куча других слоев и дорожек 3) Заливать оловом как есть, тоже колхозно Как правильно? Спасибо за ответы
  16. Реализовали код QC LDPC кол 7154+1022=8176, Столкнулись со следующей проблемой. Смотрим вот эту доку https://standards.nasa.gov/documents/view_o...7/GSFC-STD-9100 Есть "sub-code", который берет 7154 информационных бита (14 кусочкой по 511) и делает из них 1022 проверочных (2 кусочка по 511). Получаем код 8176,7154. Как учит нас этот документ далее, этот код плох тем, что что не кратен 32 битам. Тогда берем информационную последовательность длиной 7136 (223 слова по 32 бита), добиваем 18 нулями до 7154, считаем от "расширенного" слова 1022 проверочных бита, мусорные 18 бит не передаем, а получившуюся конструкцию (7136 исходных и 1022 вычисленных) и добиваем 2 битами до кратности 32х, получаем 7136+1022+2=8160 (255 слов по 32 бита). Тут все понятно. И наконец последнее - код (8176,7156). Что делать с ним совершенно непонятно. Стандарт CCSDS 131.1-O-2 (гугл) говорит, в главе 2 говорит This section describes the base (8176, 7156) LDPC code. For reasons outlined below, implementations should shorten the base code according to the format described in subsection 2.5 В разделе 2.5 говорится о рандомизации, а весь прочий материал посвящен тому, как закодировать 7154 информационных бита. Куда девается 2 бита из 7156 непонятно. The encoder can be designed using the method given in reference [C1.6]. The generator matrix of the (8176, 7156) code consists of two parts. The first part is a 7154 Ч 8176 submatrix in systematic-circulant form as shown in figure 2-5. It consists of a 7154 Ч 7154 identity matrix and two columns of 511 Ч 511 circulants Bi,js, each column consisting of 14 circulants. The Is are the 511 Ч 511 identity submatrices and the 0s are the all zero 511 Ч 511 submatrices. The second part consists of two independent rows. The first part generates a (8176, 7154) LDPC subcode of the (8176, 7156) code. Each codeword in the subcode consists of 7154 information bits and 1022 parity check bits. For reason given in section 2.4, there are advantages in using the subcode implementation. The circulants Bi,js are constructed based on the algorithm given below: Краткое содержание Генераторная матрица кода 8176,7154 состоит из двух частей - одна на картинке 2.5 (единичные матрицы слева и B циркулянты справа) и она генерирует (8176, 7154) LDPC subcode of the (8176, 7156) code Вторая часть состоит из двух независимых строк (что?) The second part consists of two independent rows (каких строк, откуда??) Что делать, если информация 7156 бит? Как ее кодировать таким кодером? Кто работал с этим кодом?
  17. process (fall_edge, rise_edge, state) begin if state /= IDLE then if rising_edge (rise_edge) then - В список чувствительности включайте клок и резет, если юзаете асинхронный резет - Для автоматов удобно использовать case - Сигналы фронтов считывайте тем же клоком, которым их формируете. Всякий раз, когда вы пишите новый if rising_edge() от нового сигнала, то вводите новый клоковый домен (сам страдал этим). В данной ситуации это совершенно лишнее. Лучше писать так process (clk) begin if rising_edge(clk) then case (state) is when idle => if (rising_edge='1') then.... Про разделение протокола на иерархии сказали совершенно правильно. Сам делал SPI следующим образом - Один блок ловит фронты и спады SCK и выдает тычки. И все. - Другой блок задвигается данные из MOSI в регистр и выдвигает данные в MISO из другого (другой был нужен да) принимая тычки предыдущего блока. Он не смотрит на сигнал SCK и на содержание данных в шине. - Третий блок читает эти регистры и делает уже нахлобучку протокола с командными словами, словами данных, пакетами и прочими усложнениями. Он работает со словами и ничего не знает о шине моси мисо.
  18. Есть MIG корка для работы с памятью. На 400МГц память не работает (не калибруется), на 200 работает. Снаружи корки торчит сигнал q и d с 3мя состояниями, т.е. подалются на tristate буферы. Хочется посмотреть эти сигнала в ILA, но напрямую его подавать понятное дело нельзя. Что делать? 1) Закопаться на 5 уровней вглубль, добраться до места, где этот сигнал превращается в обычный и вытащить обратно наружу? 2) Может быть у верилога есть такое волшебное свойство, как присвоение значений сигналам внутри иерархий? Ну например assign a=*/u_ip_top/u_QDR1_mig_7series_v1_8/mig_7series_v1_8_u_clk_ibuf/sys_clk_i; 3) Написать некоторую хитрую конструкцию для синтезатора, чтобы он увидев присвоение сигнала с тремя состояниями догадался снять хороший сигнал без трех состояний со входа буфера? Есть варианты?
  19. yes, в заглавном посте особо оговоренно, что речь идет не о постоянных структуах record, а необходимости собирать в шины разные сигналы. вы ответили на вопрос как назначить record в record, что понятно.Но а) Если уж говорить об использовании record'ов для межсоединений, то необходимо создавать часть интерфейса in, часть интерфейса out б) Речь идет о назначении рекода в шину, а не в другой рекорд. Timmy Если я правильно вас понял, то по объему кода и читаемости вложение функции в функцию будет сравнимо с пирамидой констант, как в примере выше.
  20. Всем привет В VHDL бывают ситуациями, когда надо собрать несколько разных шин в одну большую, проделать какую то операцию (например посчитать CRC , передать в память, протолкнуть в другой компонент), после чего снова собрать. Часто это приходится делать руками, например constant w1: integer:=5; constant w2: integer:=8; constant w3: integer:=2; signal i_sig1: std_logic_vector (w1-1 downto 0); signal i_sig2: std_logic_vector (w2-1 downto w1); signal i_sig3: std_logic_vector (w3-1 downto w); signal bus1: std_logic_vector (w3+w2+w1-1 downto 0); --Собиратель bus1<=( i_sig3 & i_sig2 & i_sig1); --Разбиратель o_sig1<=bus1(w1-1 downto 0); o_sig2<=bus1(w1+w2-1 downto w1); o_sig2<=bus1(w1+w2+w3-1 downto w1+w2); Основная проблема конечно в разбирателе. Когда переменных много, то приходится вводить промежуточные константы (w2_lim=w1+w2), а когда надо собрать 8 шин получается совсем уж страшные пирамиды. Если работа идет с заранее заданной структурой record, то там можно написать 2 метода "собрать-разобрать" для данной ситуации, но хочется иметь универсальный инструмент, чтобы работали это следующим образом --Функция взятия ширины constant bus_width:intger:= fget_width(sig1,sig2,sig3); bus1: std_logic_vector (bus_width-1 downto 0); --Собиратель bus1<=fbunch(i_sig1,i_sig2,i_sig3); --Разбиратель fslit(bus1,o_sig1,o_sig2,o_sig3); Ну и совсем уж имперский комфорт, это формировать лист указателей list1:=(sig1,sig2,sig3), после чего во все места передавать именно этот лист в качестве аргумента. Какие пути я пока вижу 1) Писать функцию. Возможно ли в VHDL написать функцию с переменным числом параметров? Есть ли примеры? 2) Если нельзя, то использовать возможность перегрузки. При использовании циклов можно быстро написать 20 функций, принимающих от 1 до 20 сигналов на вход с одинаковым именем. В зависимости от количества переменных будет вызывать соответствующая. Вроде тупой подход, но зато точно позволит достичь результата за разумное время. 3) Городить структуры типа record, куда затакливать sig1,sig2, но это все снова универсально 4) В VHDL 2008 есть какие то новые плюшки для работы с функциями. Кто знает, есть ли там возможность реализовать написанное выше? Или велосипед уже готов?
  21. Интерфейс корки соответствует интерфейсу FIFO (сигналы full, emplty), я предполагал, что он подкапливает данные и выдает их в память. Когда я работал с шиной данных на памяти 18 и burst_len=8 все было хорошо, тк я подавал на вход сразу 144 бита. В новой корке я выбрал в 2 раза большую шину данных = 36. А burst_len осталась прежней. Из-за этого корка болела. Я исправил значение бёрста до 4ех и все стало хорошо.
  22. Использовал MIG 1.7, работал с RLDRAM в режиме 1 блока памяти. Все было хорошо. Начал использовать корку 1.8 и конфигурацию с двумя микросхемами MT49H32M18 (все общее,кроме шины данных). И тут столкнулся с такой проблемой. Кидаю в МИГ команды записи-чтения, получаю ответ http://fastpic.ru/view/52/2013/0124/a2624d...e7b854.png.html В ответ 1 команду чтения приходит 2 валида. Ну мало ли, подумал я, вдруг не все баги поправил (изначально корки не симулятся в альдеке без доработки напильником) Но тут заметил, что проблема еще глубже Он иногда не просто дублирует байты, а вообще напрочь залипает http://fastpic.ru/view/54/2013/0124/37dd99...ecdc31.png.html То есть вместо того, чтобы выдать 1 валид на 1 байт, он выставляет этот самый байт и держит валид в течении 12 тактов. При этом тестовая версия (example_top с traffic_gen) работают без сбоев. Доктор, что я делаю не так? может в него нельзя кидать команды по одному?
  23. А как с реализацией? Неужели алгоритмы OpenCV реализуются в ПЛИС вот так слету?
×
×
  • Создать...