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

Postoroniy_V

Свой
  • Постов

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

  • Посещение

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


  1. ну много чего такого появляется в последнее время - за всем не уследишь, да и не надо например "новый" язык стамеска по аглицки chisel -> https://chisel.eecs.berkeley.edu/ вот процессор на нём же https://github.com/ucb-bar/riscv-sodor з.ы трудно за всем угнаться(MyHDL, OpenCL, стамески всякие) а верилог,вхдл уже тут и работают з.з.ы вот сюды гляньте https://launchpad.net/tce и http://tce.cs.tut.fi/ там в этом TCE "всё как вы хотите" процесс итераций и прочее
  2. китайских? оно в индии пишется и оттуда же поддерживается и кстати, к китайским программистам/железячникам не стоит так шапкозакидательно относится.
  3. про версию годичной давности могу сказать что это просто ужасть. последняя версия хороша. И да использовал и пользуют в коммерц проектах. и самое удивительно что как бы всё ок. (хотя я недавно писал о якобы косяке в маппере, но то оказался мой косяк ) з.ы. вивадо только для 7 семейства, никаких виртухаев 5 или 6
  4. для Virtex6 с ISE нужен быстрый проц, много памяти, как тут писали. а чтобы инженер не сидел без дела нужно по другому организовать процесс, скажем синтез/маппер запускать на ночь и утром проверять если же есть возможность не использовать Virtex6 и переползти в 7 семейство то лучше использовать вивадо. вивадо на том же железе/проекте даёт сокращение с 4 часов до 2-х(зинк045)
  5. Computer Architecture A Quantitative Approach осторожно трафик -> http://eecs.oregonstate.edu/research/vlsi/...ve_approach.pdf http://electronix.ru/forum/index.php?showtopic=88548
  6. вот что было у ТС большую часть сигналов и настроек сделал через parameter, и модуль меняется. А сейчас появилось желание избавиться от части функционала, прям от нескольких входов - выходов, и блока их обработки. Оставить выход в воздухе - варнинг что выход не подключен, плюс часть функционала не оптимизируется и есть ресурсы. спсб за разьяснения про initial, оно мне как бе не надо это пусть ТС мучается :rolleyes: в первом исходнике что я дал нет никаких варнингов и синтезируется как надо. про VHDL не было речи, так что давайте без "а вот на VHDL..."
  7. wire[2:0] DistCode; нужно почитать про packed и unpacked array
  8. я не считаю этот как бе симулятом за симулятор проверял в симплифае всё делает как надо вот попробуйте так module test #(parameter TEST_ON0=0, TEST_ON1=0 ) ( input clk, reset, input valid_in, input[31:0]data_in, output reg[31:0] data_out, output reg data_val, output [31:0]test_out ); reg[31:0]test_out_r; always@(posedge clk or posedge reset) if(reset) begin data_out<=0; data_val<=0; end else begin data_out<=(valid_in)?data_in:data_out; data_val<=valid_in; end generate if(TEST_ON0==1 && TEST_ON1==0)begin:TEST_ON0_GEN reg[31:0] testt; always@(posedge clk or posedge reset) if(reset) begin testt<=0; test_out_r<=0; end else begin testt<=(valid_in)?testt+1:testt; test_out_r<=(valid_in)?testt:test_out_r; end end endgenerate generate if(TEST_ON1==1 && TEST_ON0==0)begin:TEST_ON1_GEN reg[63:0] testt; always@(posedge clk or posedge reset) if(reset) begin testt<=64'd0; test_out_r<=0; end else begin testt<=(valid_in && data_in==2)?testt+1:testt; test_out_r<=(valid_in)?testt[63:32]:test_out_r; end end endgenerate assign test_out=(TEST_ON0==TEST_ON1)?0:test_out_r; endmodule это если синтез понимает initial, то да так тоже можно
  9. Этот безусловный always должен всем понравится потому что нужен для того чтобы назначить reg значение ибо assign test_out=0 для reg не верно ну а смысл того always в том что я хочу выкинуть выход test_out и всю логику подключенную к нему независимо от сброса и смысла в сбросе не вижу для это выхода. и да ваша правда симплифай не выкидывает в топе НО переделывает(переписывает) массив входов/выходов в "плоский" и вот тут как раз и подстава( это верно для systemverilog и vhdl, в верилоге (2001)нельзя иметь массив входов/выходов)
  10. препроцессор тут самое оно и если в исе с этим всё плохо я бы использовал генерате для удаления не нужного функционала module test #(parameter TEST_ON0=1, TEST_ON1=0 ) ( input clk, reset, input test_on0, input test_on1, input valid_in, input[31:0]data_in, output reg[31:0]data_out, output reg data_val, output reg[31:0]test_out ); always@(posedge clk or posedge reset) if(reset) begin data_out<=0; data_val<=0; end else begin data_out<=(valid_in)?data_in:data_out; data_val<=valid_in; end generate if(TEST_ON0==1)begin:TEST_ON0_GEN reg[31:0] testt; always@(posedge clk or posedge reset) if(reset) begin testt<=0; test_out<=0; end else begin testt<=(valid_in)?testt+1:testt; test_out<=(valid_in)?testt:test_out; end end endgenerate generate if(TEST_ON1==1)begin:TEST_ON1_GEN reg[63:0] testt; always@(posedge clk or posedge reset) if(reset) begin testt<=64'd0; test_out<=0; end else begin testt<=(valid_in && data_in==2)?testt+1:testt; test_out<=(valid_in)?testt[63:32]:test_out; end end endgenerate generate if(TEST_ON1==TEST_ON1)begin:NOTEST_GEN always@(*) test_out=0; end endgenerate endmodule по другому никак. итого варианты 1)ifdef 2)generate 3)пробовать синтезировать в симплифай в исе импортировать edif. Тут может быть подстава, симплифай выкинет неиспользованые входа выхода и в инстансе уже при синтезе xst будет ругань. нужно будет ешё и аттрибуты прописать keep...
  11. :bb-offtopic: Гарри, есть большая разница в прохождении собеседования и реального использования с++ те товарищи умеют хорошо готовить на с++ и в принципе твой пост можно переделать вот так Истины ради, а не холивара для. Все, кто ругает C/С++/Java/Verilog/VHDL, просто готовить его не умеют. :) Это проверено и доказано практикой многократно. нужно завязывать этот страшный холивар. один ч0рт адепты при своём мнении останутся и тогда контструктивом могут быть рекомендации новичкам по пунктам, на что обратить внимание и т.д. и т.п. вышел из темы всем хорошего дня!
  12. на С нет, не жалуются чего не скажешь про С++ вот пример, хотя наверное не ахти какой. Попробуйте порыть какой нить опенсорс написаной с кучей темплейтов? я пробовал на досуге, досуг не получился ну и сравните это мучение с pure C. да и в том же С можно (он ж позволяет вольности) написать некое чудо с редко воспроизводимым багом (casting не сделан например) тоесть глаз замылен и варнинги не читаются, ну и программа падает редко - "все счастливы". Но ведь никто не отменял линт когда мозг отключен или глаз замылен. И кое-где линт не только не отменён, но и является обязательным перед релизом. Не сделаный(забытый) кастинг и есть глупая/детская ошибка. так вот подобие линта есть уже в самом синтаксисе вхдл. возможности (ну или так "возможности" ) синтаксиса вхдл конечно не спасают от функциональных "заложенных" просчётов. а вот непонимание конструкций, синтасиса, не опытность использования вхдл(его долбаная strong type-ность) может вывести кого угодно из равновесия. и тут я согласен - придётся тратить время(в самом начале примерно 2-3 дня) на всякую фигню типа "как этот integer перевести в std_logic_vector" и наоборот. вот тут и наступает некий переломный момент. ну или не наступает , потому что работадателю ваши хотелки до фонаря. "Вам платят за написание на вхдл/верилог/java, потому что это внутренний стандарт компании!" или так "Вам платят за результат, потому что это куда важнее!" попробуйте последний случай на себе тут Вы будете один на один с проблемой. айгаранти! в моём случае, используя системверилог, все баги/шишки/косяки/прочяя - всё моё, удовольствие порой мало приятное. Но вы всё же попробуйте! Опыт гарантирован Короче к чему я всё это. а к тому что, тут есть некий психологический и стратегический момент в выборе языка. вот SV популярен и востребован потому что сейчас очень много времени уделяется верификации. Это стратегия. А вот если кому-то важна надёжность дело ни в вхдл, ни в верилоге. дело в человеках и их мозгах, их опыте, в том как налажен процесс верификации продукта. Это типа психология. :cranky: сколько человеков столько и мнений, каждому свой баг. з.ы. знакомые упомянали что им было проще проходить собеседование об/про java и они категорически отказывались от с++ на собеседовании
  13. это врядли SystemVerilog enhances assignments of a literal value in two ways. First, a simpler syntax is added, that allows specifying the fill value without having to specify a radix of binary, octal or hexadecimal. Secondly, the fill value can also be a logic 1. The syntax is to specify the value with which to fill each bit, preceded by an apostrophe ( ' ), which is sometimes referred to as a ”tick”. Thus: • '0 fills all bits on the left-hand side with 0 • '1 fills all bits on the left-hand side with 1 • 'z or 'Z fills all bits on the left-hand side with z косяк проявлялся только в квесте симплифай, ква да и вивадо такое понимают
  14. Лучше всего учить тот язык на котором разговаривал Ленон! а если серьёзно тот что требует работодатель и тут знание обоих vhdl и verilog никак не помешает для себя решил что - vhdl для ядра того что разрабатывается. Потому что 1)vhdl не даст сделать дурацких и очень глупых ошибок 2)Обычно (у меня) то что написано на vhdl работает в железе без лишнего дебага(хотя да - пишется может и дольше, но оно как то более продумано чтоли) - verilog(точнее systemverilog) Для тестбенча. Потому что 1) очень быстро пишется(и правится) без лишних сущностей 2) не нужно заморачиваться с длинной\шириной и прочее с этим связанное 3) легко цеплается simulink, DPI, systemC( понятия не имею как оно обстоит в тестбенче на vhdl и даже пробовать не стану :-D) 4) работа с файлами привычна и почти так же как и в С(оно там с человеческим лицом ) косяки 1)при использовании vhdl не заметил каких либо глупостей в симплифай, ква и ise был страный косяк в questasim 10.1 b (откатился на 10.1a - всё ок) 2)при использовании systemverilog(!) ise не поддерживает, переключаемся на вивадо ква - ок(хотя и были очень давно 5 лет назад например - for(int i...) такое выбрасывалось нафиг) симплифай - ок таже questasim 10.1b как то странно обрабатывала сдвиг например - a<={a,b} questasim 10.1a - при таком вот описании: always@(posedge clk or posedge reset) if(reset) {a,b,c,d,e}<='0; else .... если a,b,c просто bit и d,e bit[x:0] то по какой то причине после сброса в d выставляет не нули а что то невнятное с верилог(2001) там всё ок, не заметил косяков.
  15. :bb-offtopic: я не то чтобы фанат хилых или альтеры, но вот есть такой нехороший факт про альтеру - на 1000 плис нашлась одна у которой не работал dsp(ария2гх). чего пока что не было у хилых. хотя и у хилых может быть подобное - имею незабываемый секс с зинком от PnR до PnR результаты разные от полностью не рабочего дизайна до полоностью рабочего(ясное дело времянки все ок). вывод, пофиг что там и кто там главное чтобы работало _как задумывалось_
  16. Quartus да ISE никогда не поддерживал и не будет поддерживать SDC. а вот новое творение от хилых вивадо поддерживает XDC ( sdc subset от хилых) тут документ про миграцию в xdc http://www.xilinx.com/support/documentatio...o-migration.pdf так что только ucf в ISE. а как скормить set_output_delay -min в planahead я думаю что никак (надеюсь что не прав :) ) тем более чтобы trce _всё_ понял +в вивадо конечно все проще http://www.xilinx.com/support/documentatio...constraints.pdf страница 77 про UCF http://forums.xilinx.com/t5/Timing-Analysi...TER/td-p/205513 You can't constrain the minimum delay, but you can see it in the static timing report if you enable "Report fastest path(s) in each constraint." и ниже там же ответ хилых The one nice thing about placing the output registers in the IOB is that the timing is fixed - as far as the data path goes. The clock skew is different depending on which pin location you choose, and the compensation of any PLL, but is also deterministic for that specific pin location. What Gabor was stating is that for hold times, you want to look at the fastest path of output for the downstream hold times. But, one additional consideration is that you may receive a faster part than labeled. In order to account for this, you should use the "absolute" minimum delays for downstream device hold time in system sycnhronous I/O applications. Please keep in mind that this minimum speed grade (-0) is only characterized for minimum output delays, and is not to be used for input, or register to register delays. Also, source synchronous interfaces do not need this analysis given the clock and data skew is all that is relevant.
  17. 1)на мой ключевой вопрос был дан ключевой ответ - да полно 2)ТС хотел не 2-а 16 битных сумматора а это многовходовой синтезируемый сумматор...Кол-во входов 128 как вы такое смогли развести я не очень понимаю ->16х128. можно взглянуть на собраный вами проект? 3) если же суммировать все 128 16 битных чисел то Вам не кажется что 16 битного сумматора не хватит? 4) проект в исе я не собирал конечно. ибо... проверял в синплифае вот его оценку и привожу ниже(камень XC7K410TFFG900-2) 4.1) тот исходник что тут приводил немного подправленный с 1 dsp48 - 802LUT 500MHz(около того). 4.2) та же функциональность(теже такты на подсчёт) что и 4.2 но на логике 858LUT 325MHz . 5)умножитель не может быть проблематичным если вы слышали про алгоритма Бута(Booth)
  18. если есть дсп блоки то не использовать их крайне странное решение тем более что такое решение будет занимать меньше всего логики и работать будет на высокой частоте, чем в той же логике
  19. ну полный исходник писать мне лень и к тому же то что написал это для DSP48 xilinx input[63:0][15:0] inputA, input[63:0][15:0] inputB, input clock, input reset, ..... always@(posedge clk) begin if (start) begin a<= inputa[counter]; b<= inputb[counter]; dsp_clr<=0; end else if(done) out<=P;// выход с dsp48 dsp_clr<=0; else dsp_clr<=1; end assign sel_oper=oper_sum_AB_P; dsp_operation A+B+P ну или в генерате подключить все входа ко входам dsp48(с операцией A+B+PCIN), pcout к pcin, итог будет - 64 dsp блока (либо A+B+C+PCIN не уверен что dsp48 такое умеет) масштабираемо :)))
  20. в том в чём будет работать есть dsp блоки? если да то....
  21. через мес будет анонсировано 8 Series. меня вот одно поразило - ариа5 dsp сделан зачем то "весьма" ограниченым(чем мог бы) - chainout нельзя использовать если коэффиценты 16 бит но зато в стратиксе 5 можно чистой вода маркетологи нашептали. ибо цена стратика5 в 2раза более чем арии 5. Результат - кинтекс 7 рулит ;) как по цене так и по тактовой. чего не скажу про арию 5//к сожалению. зы ох уж эти маркетинговые игрульки Stratix10! почему не 6?
  22. 1.0) Вопросы про метастабильность очень любят все и вся. ЧТо это? Откуда? Как избежать проблем и прочее 1.1) Что такой за зверь MTBF? 1.2) переход/синхронизация между двумя клок доменами(как что и к чему да и почему) 2) Про автоматы(FSM) какие бывают? почему? к чему? зачем? 3) что сами писали/отлаживали? 4.0) что такое setup/hold time? Tco? 4.1) имеется отчёт STA в нём указаны слеки(Tsu slacks) -1.0 , 0.0 и 1.0 - Описать и обьяснить свои действия 4.2) какая связь между Tsu/Th и метастабильным состоянием? 5) даётся распечатанный исходник на vhdl/verilog - найдите ошибки 6) даётся другой распечатанный исходник на vhdl/verilog - нарисовать схему 7) даётся алгоритм - нарисовать схему/автомат вспомнил только это. могу ещё набросать попозже
  23. использовал record в ква - всё скушалось и работало как надо\ приведите пример того что ква не смог у вас осилить(что оооочень страно Ж))
×
×
  • Создать...