Jump to content

    

iiv

Свой
  • Content Count

    2220
  • Joined

  • Last visited

Everything posted by iiv


  1. Уважаемая Татьяна, конечно я полностью с Вами согласен, что это мои бурные фантазии, вот будь я российским работодателем, и узнай про моих сотрудников, оформленных на полную ставку в штат, что они колымят, я бы точно зарплату урезал! А вот если у сотрудника третья форма допуска, то узнать об этом работодателю становится гораздо проще. Ну да ладно, пусть это будут только мои фантазии :) С уважением ИИВ
  2. Нет, не совсем! Сам топикстартер писал, что "оформляется третья форма допуска, не ограничивает выезд за границу, но обязывает письменно уведомить куда сотрудник выезжает" Вот допустим в свой законный отпуск решил я смотаться в штаты покалымить, то бишь заработать, а, уведомив письменно об этом своего работодателя, мне по приезде мою зарплату на сумму колыма урежут, не так ли?
  3. Уважаемый Метан, у вас есть такая же тема, только она уже в курилке. Давайте мы в ней обсудим все Ваши вопросы, Вам оно надо в моей ветке, как у себя, троллить? Убедительная к Вам, Метан, просьба, не пишите, пожалуйста, более в этой ветке! Если я не прав, пусть меня забанит модератор!!!
  4. Позвольте полюбопытствовать, а о чем и к чему Вы это сейчас сказали? Вы на Тикле писали? А на дот-нете? Если у Вас имеется многолетний опыт работы и на дот-нете и на Тикле, думаю, что Вы бы сейчас так не утверждали. Сугубо ИМХО.
  5. не, ну чисто сам синтаксис языка можно и быстро выучить. Когда меня жизнь заставила, я уже через 3 недели очень быстро на тикле после фортрана программировал (кстати знание тикла очень в Квартусе помогает). Хотя конечно за 20 лет много всякого добра успел сделать, только не сильно это, к сожалению, нужно тому же NASA или еще кому - я достаточно осведомлен как народ там дела делает, и почти все большие конторы довольно давно перестроились на аутсорсинг в Китае или Индии, а те, кто не перестроились, также, как Квант, американские формы допуска требуют :(
  6. Да еслиб там были бы какие-то такие прорывные технологии, которые стоило бы от кого-то скрывать бы, ну я бы понял бы, а так чисто запрет на возможность где-то за границей подработать.
  7. Спасибо за ответ, к сожалению, на таких условиях мне не интересно, даже и не рассматривайте.
  8. А я Вам подойду? http://electronix.ru/forum/index.php?showtopic=88816 а без формы допуска можно? Привет Абрамову и Лацису передавайте, пожалуйста, они должны меня по инициалам вспомнить, а если нет, то, надеюсь, вспомнят после ключевых слов Абрау-Дюрсо 98. Если подойду, то пишите в личку, поторгуемся :)
  9. Ответил приватно. Название действительно слегка изменено чтобы гуглить сложнее было :) А вот если его правильно ввести, на сайте диссеркат-дот-ком автореферат за 200 руб и диссер за 500 руб купить можно :) Если кому надо, пишите в личку (при соблюдении выше мной указанных условий), пришлю так, с огромной радостью, что кому-то это может быть полезно. +1000 Вот и я тоже, у меня сейчас на обоих ядрах квартус пыхтит (1-10 часов время сборки), а на остальных компах очень на долго все забито некоторыми численными задачками, поэтому и есть время на форуме что-то написать :)
  10. Вот видете, уровень моего русского совсем не на высоте, что меня такие профи как УИГ не понимают. Еще раз попытаюсь донести свою мысль, на всех трех этих языках я говорю и изъясняюсь примерно на одинаковом уровне, при сильной необходимости, могу подтянуть уровень моего французского до того же уровня. 2 YIG: Уважаемый УИГ, а не подскажите, чем схожи монгольский и татарский языки, может мне и монгольский будет легко освоить? Или это Ваше утверждение на каких-то советско-школьных воспоминаний построенно? Если я прав, то давайте, пожалуйста, ближе к теме без флуда!
  11. на всех этих языках примерно одинаково, по-русски я тоже часто оговариваюсь, или описываюсь, или очень заумно формулирую свои мысли, возможно из-за моих татарских корней :)
  12. Диссер по теме "Parallel and Structured Computations in Quantum Mechanics". Суммарный цитейшн индекс по всем моим статьям составляет около 70. Из них довольно значимые 3 статьи в JACS, есть конечно и другие, с меньшими :( и большими :) индексами цитирования. Покорнейше прошу не уточнять это здесь, по личным соображениям, хотя любому потенциальному работодателю, явно сформулировавшему мне название его фирмы и возможную должность, полностью напишу список статей (если конечно я к нему буду апплицироваться). Правда я достаточно много сказал о себе, поэтому любознательному человеку не составит труда узнать практически все про меня из гугла. Очень прошу тех, кто это сделает, не выкладывать эту информацию в этот топик.
  13. Уважаемые Новчек, Штирлиц и Айдл, очень Вам благодарен за пространные советы, реально сильно меня сейчас поддерживающие! Также очень польщен фразой Штирлица по поводу уровня моих вопросов, хотя, честно, думаю, что очень многие плисоводы очень многому меня могут поучить, хотя я думаю, что мне просто повезло, что мне дали интересную задачу программировать, только я сам до нее еще не дорос. Буду думать о Вами сказанном, смотреть по сторонам, надеюсь, найду что-то интересное.
  14. Один год у меня уже есть :) Да, бывают иногда области знаний, которые просто ну никак не хочется осваивать. Например, мне гораздо проще понять любые заморочки с контроллерами, их таймингами, перформансом, алгоритмами в силу уже накопленных знаний, но вот с жавой ну не идет она просто ну ни как... Поэтому я и написал про плисы и контроллеры. Как мне кажется, эту область я могу осваивать на порядок быстрее, чем дот-нет и жаву. А если в Москве только 30тыр, то сколько где еще? Ведь на зарплату еще квартиру снимать надо и семью содержать! Семьей-то я обзавелся, а квартирой - еще нет и нет чего-то такого, чтобы можно было бы продать, чтобы потом на полученные деньги купить квартиру. Вот у меня такое чувство, что я именно так сейчас и работаю
  15. не, в тех областях, у меня к, сожалению, табу, под названием оверквалифаед...
  16. Всем привет, имею * маленький, около года, опыт программирования ПЛИС от Альтеры, * около полугода опыта программирования на атмегах*28 и атмелах под дебьяном, * около 20 лет опыта написания всякой шняги на фортране, * совершенно не знаю ни одного продукта фирмы Майкрософт, включая и их операционную систему, * правда довольно сносно знаю разные клоны юникса и линукса, * в том числе уже знаю как встраивать всякие модули в ядра линуксов на примере атмеловского дебьяна, * при возрасте 37 лет, * с акцентом иностранца, а иногда и с апшибками, говорящий на русском, английском и немецком, * с кучей всяких статей в научных и околонаучных журналах, * с кфмн дипломом, * с семьей, интересуюсь сменить очередной раз работу (менял уже 6 раз, максимальное время работы на одном месте составило 9 лет). Сколько и где я буду стоить и где правильнее работать? Основное желание к работе - где-то начать и там же рости без смены места работы, ну и чтобы семье денег хватало. Сейчас территориально, деревня на Южном Урале. PS: отвечу на пост novchok здесь, жавы классической, веба, дотнета не знаю, сложно мне, старый я. Пытался много раз, первый раз, когда браузером был мозаик, но так дальше голого третьего хтмля на виайе с жаваскриптовыми вставками не выучил, и, боюсь, не смогу в этом разобраться. PPS: если вдруг мой опыт кого-то заинтерисует, пишите, пожалуйста, также готов обсудить любые разумные проекты по удаленке.
  17. Вот представьте, что Вы хотите сказать то, о чем мы все подумали и у Вас получается или "типс" (то есть чаевые по-английски) или "тераипс" (при произношении "и" однозначно превратится в "е", а то и "ё"). Согласитесь, и то и другое очень не созвучно и на русском, и на английском языках. Так как в русском языке два корня в словах обычно объединяются гласной "о" из-за того, что эти корни оканчиваются на согласные, а, в нашем случае, имеет место полностью противоположная ситуация, вводим новое правило объединения корней русских заимствованных слов и используем красивую по звучанию буковку "м" получая терамипс! А Вам не наравится?
  18. Позвольте с Вами не согласиться, FPGA->x86_6->GPU Нормальный 5970 радеон за штуку бакс дает пиковых 1.1терафлопс на дабле, 600 терафлопс на дабле на тестовых и 400 на реальных получается. Итого 1 гигафлоп за бакс в пике и 0.4 гигафлопа за бакс в реале на дабле, причем это уже со стоимостью всего обвеса. Я конечно смог однажды на третьем стратиксе так отконвертить алгоритм, что его аналог на целочисленной арифметике функционировал с 900гфлопс эквивалентной производительности, но 150 стратикс все-таки не совсем дешев, итого те же 0.4гигафлопа за бакс, причем здесь только можно сказать об эквивалентных гигафлопах - в алгоритме умножение одно было отскалировано на сдвиг, все операции в целых числах, но именно этот алгоритм на ГПУ не через даблы был не реализуем. А если даблы на плиски честные делать, то, исходя из сегодняшних цен, если и 0.05гигафлопа за бакс получится, то сильно здорого. Если взять средний четырехядерный АМДшник, который стоит около 100 бакс, и на нем реально получить 20 гигафлопс на дабле ну совсем не напрягаясь (0.2гигафлопа на бакс), ИМХО, плискам пока только удел в интерфейсах, и энергоэкономных, переносимых, военных отраслях числа перемалывать. ЗЫ Что-то я задумался о своем, и не заметил, что топикстартер только о целочисленных операциях вопрошал. Почти все мною вышесказанное, переноситься из дабла и на целочисленные операции. На том же радеоне в целочисленной арифметике я терамипс на реальной задаче получал, а его пик, сложно подумать, 5.5терамипсов.
  19. Не, внутри плиски частоту тригером ронял, и вместо 8 бит по двум фронтам на 200МГц получал 32 бита по одному фронту на 100МГц. Дальше все уже было очень просто, правда у С25 циклона совсем впритык было умножителей, но, как-то удалось втиснуться.
  20. На очень схожей задаче - циклон3, 16бит 200МГц АЦП у меня все получалось только после деления частоты в два раза, через распараллеливание данных. Вход был по лвдсам и по обоим фронтам. На самой 200МГц частоте что-то разумное собрать не получилось, хотя тесты (какие-то простые арифметические операции) на 200МГц этот циклон тянул.
  21. Добрый день, Роман, огромное Вам спасибо за советы и ссылки про таймквест и логиклок - сильно помогло. Поставил все клоки через ПЛЛ, стало проще и нагляднее. Есть один момент, даже не знаю как правильно объяснить, помогите, пожалуйста, советом, как правильно. Основной клок у меня 400МГц, я его получаю из ПЛЛ на основе входной 50МГц частоты. Если у меня получаются фмакс(85С)=390-410, фмакс(0С)=400-420, то на практике имеются ошибки. Похоже где-то у меня не устойчиво частота получается. Я для этого хочу в ПЛЛ указать частоту 400МГц, а Квартус заставить компилиться на 420МГц. Этим вызвано то, что я указывал большие частоты в SDC файле. Скажите, пожалуйста, есть ли какой-то более правильный подход? И еще сразу вопрос... Читал про таймквест, но, до конца не понял, вдруг не сложно будет, посоветуйте, пожалуйста. Сейчас у меня есть 15 клоков. Все кроме 3-х из них - это асинхронные вводы-выводы, данные между которыми ходят через FIFO. Правильно ли я понимаю, что для всех этих клоков я должен написать в SDC такую инструкцию: set_clock_groups -exclusive -group {GPIO1_D[29]} А вот три клока генерятся одним ПЛЛ и имеют четко прописанные частоты 400МГц, 200МГц и 66.(6)МГц и данные между этими домейнами постоянно гуляют туда и обратно. Правильно ли я понимаю, что их как раз ни как не надо описывать? Спасибо И
  22. Уважаемый Роман, огромное спасибо Вам за советы и помощь! Косяк с MiddleSum - действительно мой косяк, правда который совсем, как оказалось, не влияет на получаемый результат, приходящий сигнал имеет постоянное значение, и это кривое усреднение не сказывается на получаемом результате. Уже придумал как переписать это все правильно и для работы с одним клоком. У меня к Вам два вопроса, я, к сожалению, не все до конца с понимаю с Квартусом и с терминологией, помогите, пожалуйста: Вот Timequest timing analyzer я в репорте имею, а вот где в нем можно найти этот report top failing paths, тыкните, пожалуйста, моим носом в точное место и простите великодушно за такой мой глупый вопрос! Правильно ли я понимаю, что если я буду использовать разрешающие сигналы на тригеррах, то этот кусок кода все еще должен констрейниться на высокой частоте. То есть если есть конструкция always @(posedge CLK) //здесь основная чатсота 400МГц if (InDataSW) //здесь разрешающий вход для триггеров begin .... // вот здесь могу ли я выполнять операции, которые длятся 5нс (200МГц) или все-таки только 2.5нс? end Если так, то мне подойдет решение только на ПЛЛ... Спасибо, и простите за глупые вопросы, я, пока еще только разбираюсь! Вот тут запутался в Вашем ответе, пожалуйста, помогите! Мне нужен один клок Clk для умножителей 400МГц и половинный клок InDataSW (200МГц) для сумм. Я не могу понять, что же я не правильно сделал: PS2/ Частота clk - 400МГц (период 2,5ns), по коду InDataSW получается в два раза меньше Цитата always @(posedge Clk) InDataSW<=~InDataSW, а в ограничениях Цитата InDataSW" -name {DATA_Aq:DATA_Aq_module|InDataSW} -period 4.8 -waveform {0.0 2.4} разве я не законстрейнил InDataSW на частоту 1000/4.8=208MHz? ЗЫ с одним вопросом про разрешающие сигналы - разобрался, поэтому поправил свой ответ
  23. Уважаемые друзья, Jojo, Slawikg, Bogaev_Roman и все, кто помогает мне советами! Огромное вам за советы человеческое СПАСИБО! С Логиклоком я сейчас разбираюсь, и начал на мелкой кошке тренироваться. По последним Вашим замечаниям мне показалось, что я могу что-то еще не учесть. Вдруг вас не затруднит, пробегитесь, пожалуйста по тексту моего проекта, вдруг Вы сразу заметите что-то, что я делаю криво. Буду Вам очень-очень благодарен! Урезал проект до минимума, оставив только самый сложный кусок, который и тормозит ужастно и должен на большой частоте работать. module ... wire [13:0] MidData[0:2]; // приходят из еще одного модуля (выход от ФИФО на МЛАБах) и синхронизованы с Clk wire [31:0] CommonTimers[0:54]; // приходят из еще одного модуля (каунтеры 55 ножек), тоже синхронизованы с Clk wire Clk; ... DATA_Aq DATA_Aq_module(Clk, MidData, GPIO1_D[25], GPIO1_D[24], GPIO1_D[23], GPIO1_D[29], GPIO1_D[28], CommonTimers); my_pll my_pll_module1(OSC1_50, Clk); // 8-ми кратный умножитель частоты, на выходе должно быть 400МГц endmodule module DATA_Aq(Clk, In, ClkOut, OutOn, Out, SP1, SP2, InputCounters); parameter N=42; parameter M=100; parameter LSSH=3; parameter MAXLOCBUF=(56>N*9+5)?56:N*9+5; parameter IMPULSEBITS=14; parameter IMPULSELEN=16*1024; input Clk, ClkOut, OutOn, SP1, SP2; input [13:0] In[0:2]; input [31:0] InputCounters[0:54]; output reg Out; // Memory //////////////////////////// reg signed [13:0] D[0:2][0:1]; reg signed [13:0] Data[0:2][0:M-1]; wire signed [31:0] ScalY[0:8][0:N-1]; reg signed [31:0] MiddleSum[0:2]; reg [31:0] LocBuf[0:MAXLOCBUF]; wire signed [31:0] ShortSumY[0:8][0:N-1]; reg signed [31+LSSH:0] LevelSumY[0:5]; reg signed [31:0] LevelSum[0:5], ShortSum[0:5]; reg [5:0] cmpres; reg [2:0] cmpton; reg cmpon; reg InDataSW; reg [255:0] OutData; reg [7:0] OutDataLen; reg [IMPULSEBITS-1:0] PosIn, PosOut; reg [31:0] OutCounter; reg [63:0] CurTimer, ImpulseTime, ReadImpulseTime; reg [17:0] NewStatus; reg [7:0] BlockLen; reg [31:0] Counters[0:54]; reg [2:0] MemCounter; reg MemClk; wire [251:0] OutDataMem; wire [251:0] InDataMem; assign InDataMem[251:238]=Data[0][M-1]; assign InDataMem[237:224]=Data[1][M-1]; assign InDataMem[223:210]=Data[2][M-1]; assign InDataMem[209:196]=Data[0][M-2]; assign InDataMem[195:182]=Data[1][M-2]; assign InDataMem[181:168]=Data[2][M-2]; assign InDataMem[167:154]=Data[0][M-3]; assign InDataMem[153:140]=Data[1][M-3]; assign InDataMem[139:126]=Data[2][M-3]; assign InDataMem[125:112]=Data[0][M-4]; assign InDataMem[111: 98]=Data[1][M-4]; assign InDataMem[ 97: 84]=Data[2][M-4]; assign InDataMem[ 83: 70]=Data[0][M-5]; assign InDataMem[ 69: 56]=Data[1][M-5]; assign InDataMem[ 55: 42]=Data[2][M-5]; assign InDataMem[ 41: 28]=Data[0][M-6]; assign InDataMem[ 27: 14]=Data[1][M-6]; assign InDataMem[ 13: 0]=Data[2][M-6]; my_lmem my_lmem_module1(InDataMem[143: 0], PosIn, InDataSW, PosOut, ClkOut, 1, OutDataMem[143: 0]); // 16*M144 my_lmem2 my_lmem_module2(InDataMem[251:144], PosIn, InDataSW, PosOut, ClkOut, 1, OutDataMem[251:144]); // 216*M9K // Generating modules generate genvar i, j, k; for(i=0; i<N; i+=2) begin : aaa for(j=0; j<3; j++) begin : bbb for(k=0; k<3; k++) begin : ccc MultOne MultOne_Module(Clk, D[j][0], D[j][1], Data[k][i], Data[k][i+1], InDataSW, ScalY [j+3*k][i], ScalY [j+3*k][i+1], ShortSumY[j+3*k][i], ShortSumY[j+3*k][i+1]); end end end endgenerate // Initialization of variables initial begin MemCounter=0; MemClk=0; cmpres=0; InDataSW=0; ImpulseTime=0; ReadImpulseTime=0; OutData=0; OutDataLen=0; PosIn=0; PosOut=0; NewStatus=0; BlockLen=0; CurTimer=0; OutCounter=0; end // Reading Data from Channels /////// always @(posedge Clk) // клок на 400МГц begin for(int i=0; i<2; i++) for(int j=0; j<3; j++) D[j][i]<=Data[j][i+InDataSW]; for(int j=0; j<3; j++) Data[j][0]<=In[j]; for(int i=0; i<M-1; i++) for(int j=0; j<3; j++) Data[j][i+1]<=Data[j][i]; InDataSW<=~InDataSW; end always @(posedge MemClk) // программный делитель на 3 от клока на 200МГц, то есть 66.6666МГц begin CurTimer<=CurTimer+1; if(PosIn) PosIn<=PosIn+1; else if(ReadImpulseTime==ImpulseTime && cmpon) begin ImpulseTime<=CurTimer; PosIn<=PosIn+1; for(int i=0; i<55; i++) Counters[i]<=InputCounters[i]; end end always @(posedge InDataSW) // программный делитель на 2 от клока на 400МГц, то есть 200МГц begin for(int i=0; i<3; i++) begin ShortSum[i*2]<=ShortSumY[i][0]; ShortSum[i*2+1]<=ShortSumY[i][0]-ShortSumY[i][1]; MiddleSum[i]<=MiddleSum[i]+D[i][0]+D[i][1]-(MiddleSum[i]>>>17); end // for(int i=0; i<6; i++) cmpres[i]<=((ShortSum[i]>=LevelSum[i])?1:0); cmpton<=(cmpres==6'h3f && BlockLen!=0)?{cmpton[1:0], 1'b1}:{cmpton[1:0], 1'b0}; // if(MemCounter==2) begin MemCounter<=0; MemClk<=1; cmpon<=(cmpton==7)?1:0; end else begin MemCounter<=MemCounter+1; MemClk<=0; end // if(cmpres==6'h3f) begin for(int i=0; i<6; i++) begin LevelSumY[i]<=LevelSumY[i]-(LevelSumY[i]>>>LSSH)+ShortSum[i]; LevelSum[i]<=LevelSumY[i]>>>LSSH; end end end always @(posedge SP1) begin NewStatus<={NewStatus[16:0], SP2}; if(NewStatus[17:13]==5'b01010 && NewStatus[4:0]==5'b01010) BlockLen<=NewStatus[12:5]; end always @(posedge ClkOut) // медленный клок 15МГц для сбора данных с плиски, никак не синхронизован с теми клоками, которые выше, блок написан абы как, так как при этой скорости выжимать производительность не имеет смысла begin if(OutOn==0) begin begin {OutData[254:0], Out}<=OutData; if(OutDataLen>0) OutDataLen<=OutDataLen-1; else begin //////////////////////////////// if(OutCounter==0) begin OutDataLen<=63; if(ImpulseTime>ReadImpulseTime) begin OutCounter<=64-57; OutData<={32'h0000ffff, 32'h0000ffff}; LocBuf[0]<=ImpulseTime[63:32]; LocBuf[1]<=ImpulseTime[31:0]; for(int i=0; i<55; i++) LocBuf[i+2]<=Counters[i]; end else begin OutCounter<=512-N*9-5; OutData<={32'h0000ffff, 32'h0000aaaa}; LocBuf[0]<=CurTimer[63:32]; LocBuf[1]<=CurTimer[31:0]; for(int i=0; i<N*9; i++) LocBuf[i+2]<=ScalY[i%9][i/9]; for(int i=0; i<3; i++) LocBuf[i+N*9+2]<=MiddleSum[i]; end end //////////////////////////////// else if(OutCounter==63) begin OutCounter<=512; OutData<=LocBuf[0]; end //////////////////////////////// else if(OutCounter==511) begin OutCounter<=0; OutData<=LocBuf[0]; end //////////////////////////////// else if(OutCounter<511) begin OutDataLen<=31; OutCounter<=OutCounter+1; OutData<=LocBuf[0]; for(int i=1; i<MAXLOCBUF; i++) LocBuf[i-1]<=LocBuf[i]; end //////////////////////////////// else if(OutCounter<64*BlockLen+511) begin PosOut<=PosOut+1; OutCounter<=OutCounter+1; OutDataLen<=251; OutData<=OutDataMem; end else //////////////////////////////// begin PosOut<=0; OutCounter<=0; OutDataLen<=251; OutData<=OutDataMem; ReadImpulseTime=ImpulseTime; end end end end end endmodule module MultOne(Clk, A1, A2, B1, B2, SW, Res1, Res2, PRes1, PRes2); parameter SHR=18; parameter RSH=5; input Clk, SW; input signed [13:0] A1, A2, B1, B2; output reg signed [31:0] Res1, Res2; output reg signed [31:0] PRes1, PRes2; reg signed [13:0] P1, P2, Q1, Q2; reg signed [28:0] Sum; reg signed [28:0] SumR0, SumR1, SumR2, SumDM0, SumDM1; // reg signed [31:0] Mul1, Mul2; reg signed [28+SHR:0] ScalX1, ScalX2; reg signed [28+RSH:0] ScalZ1, ScalZ2; reg signed [31:0] Z_Res1, Z_Res2; reg signed [31:0] Z_PRes1, Z_PRes2; my_madd my_madd_module(Clk, P1, Q1, P2, Q2, Sum); // мегафункция altmult_add always @(posedge Clk) // частота 400МГц begin P1<=A1; P2<=A2; Q1<=B1; Q2<=B2; // Mul1<=P1*Q1; Mul2<=P2*Q2; Sum<=Mul1+Mul2; SumR0<=Sum; SumR1<=SumR0; SumR2<=SumR1; end always @(posedge SW) // половина частоты Clk begin SumDM0<=SumR1; SumDM1<=SumR2; // ScalX1<=ScalX1+SumDM0-(ScalX1>>>SHR); ScalX2<=ScalX2+SumDM1-(ScalX2>>>SHR); Z_Res1<=ScalX1[28+SHR:SHR-3]; Z_Res2<=ScalX2[28+SHR:SHR-3]; Res1<=Z_Res1; Res2<=Z_Res2; // ScalZ1<=ScalZ1+SumDM0-(ScalZ1>>>RSH); ScalZ2<=ScalZ2+SumDM1-(ScalZ2>>>RSH); Z_PRes1<=ScalZ1[28+RSH:RSH-3]; Z_PRes2<=ScalZ2[28+RSH:RSH-3]; PRes1<=Z_PRes1; PRes2<=Z_PRes2; end endmodule а констрейны написаны в файле так: set_time_format -unit ns -decimal_places 3 #************************************************************** # Create Clock #************************************************************** derive_clocks -period "1.0" create_clock -name {GPIO1_D[29]} -period 1000. -waveform {0.0 500.} [get_ports {GPIO1_D[29]}] create_clock -name {GPIO1_D[25]} -period 60. -waveform {0.0 30.} [get_ports {GPIO1_D[25]}] ######################## create_clock "DATA_Aq:DATA_Aq_module|InDataSW" -name {DATA_Aq:DATA_Aq_module|InDataSW} -period 4.8 -waveform {0.0 2.4} create_clock "DATA_Aq:DATA_Aq_module|MemClk" -name {DATA_Aq:DATA_Aq_module|MemClk} -period 28.8 -waveform {0.0 14.4} ######################## derive_pll_clocks #************************************************************** # Create Clock #************************************************************** create_clock "OSC2_50" -name "CLK" -period 20 #************************************************************** # Create Generated Clock #************************************************************** create_generated_clock -master_clock 20. -source "OSC1_50" -name "CLK_OUT" -multiply_by 8 -divide_by 1 create_generated_clock -master_clock 20. -source "OSC1_50" -name "Clk" -multiply_by 8 -divide_by 1 [get_ports {my_pll_module1|altpll_component|auto_generated|pll1|clk[0]}] Спасибо! ЗЫ несколько редактирований этого сообщения были вызваны глюком при набивке сообщения и желанием откоментарить текст для удобства восприятия
  24. Уважаемый jojo, очень Вам благодарен за классные советы и разъяснения. Я, к сожалению, новичек в квартусе (только один год опыта) и, некоторые вещи пока еще не знаю. вот как это сделать, не понимаю. Допустим у меня есть собранный проект. ; Logic utilization ; 50 % ; ; Combinational ALUTs ; 23,937 / 113,600 ( 21 % ) ; ; Memory ALUTs ; 84 / 56,800 ( < 1 % ) ; ; Dedicated logic registers ; 60,800 / 113,600 ( 54 % ) ; ; Total registers ; 60800 ; ; Total block memory bits ; 4,131,624 / 5,630,976 ( 73 % ) ; ; DSP block 18-bit elements ; 210 / 384 ( 55 % ) ; Это последний из максимальных, который у меня собирается, но его fmax=398MHz (85С) и 420МГц (0С), то есть чуть-чуть меньше, чем надо. Я кстати заметил, что хоть кристалл и до 60С разогревается во время работы, но данные бывают битые, если fmax меньше 420МГц, хотя у меня клок системы через плл из плиски задается и составляет ровно 400МГц. Возможно где-то нестабильность имеется, ну да ладно, главное я знаю на какую частоту мне все затачивать. По спидгрейдам кристалла, умножители могут работать до 490МГц, все остальное - совсем простое - суммы примерно 40 битных чисел, работающие на полуклоке, то есть на 200МГц от основного клока. Вот получил я Technology Map Viewver на 615 страницах :) или Resource Property Editor с огромным числом информации, большая часть которой мне не понятна, или получил картинку от Chip Planner, красивая конечно, но что мне с ней делать, можно по разному ее покрасить, но путей там не видно... Если FanIn кнопку нажимаю, получается сначала какое-то мессиво, а потом квартус зависает с полной загрузкой компьютера. Это здесь именно я должен был увидеть картинку сбойных путей, подскажите, мне, если Вас не затруднит, пожалуйтса! ЗЫ: вроде и компьютер не совсем тормознутый, 2*2.2ГГц с 8 ГБ оперативки. Спасибо И
  25. Благодарю Вас за ответы и советы! и так по минимуму :) Будьте любезны, разъясните, пожалуйста, как это делается. Вот получил я, например, fmax=330MHz вместо ожидаемых 400МГц. И как я это исправлю, куда смотреть? Спасибо