|
"Схемотехнические трюки для ПЛИСоводов", создание аналога "Алгоритмические трюки для программистов" |
|
|
|
Sep 8 2010, 02:21
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Добрый день уважаемые коллеги. На этом форуме, за годы его существования, выложено много интересных схемотехнических и HDL решений (в том числе с сорцами). Есть предложение обобщить опыт и создать на форуме раздел вида "Схемотехнические трюки для ПЛИСоводов". По мере возможности, я складываю интересные сорцы с форума в библиотеку и при работе иногда к ним обращаюсь. Помогают не изобретать велосипед лишний раз. Думаю что я не один такой. Формат изложение видится такой : Задача -> решение -> комментарии. Сие будет полезно всем, а особенно начинающим. Что бы не задавались вопросами типа таких или таких . От администрации форума получено согласие на поддержку в реализации этого проекта. Но тянуть такое в одиночку нет времени, было бы интересно набрать небольшую команду. Если у кого то есть интерес, прошу назваться %)
--------------------
|
|
|
|
|
Sep 8 2010, 04:49
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(des00 @ Sep 8 2010, 06:21)  Есть предложение обобщить опыт и создать на форуме раздел вида "Схемотехнические трюки для ПЛИСоводов". Формат изложение видится такой : Задача -> решение -> комментарии. Сие будет полезно всем, а особенно начинающим. Что бы не задавались вопросами типа таких или таких . Вы пытаетесь переизобрести wiki. Wiki у нас уже есть, надо её наполнять. Раздел форума не нужен.
|
|
|
|
|
Sep 8 2010, 10:13
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Идея хорошая. Потому, что найти что-то, промелькнувшее в форуме, потом трудно. Хоть листай страницы, хоть поиском... Что успел скопировать в свой файл, то имею. Поэтому в новом разделе со временем будет то же самое - ни за что не найдешь того, что надо. Значит, нужна какая-то другая форма хранилища. Но тогда невозможно будет комментировать. Вот des00 в своем блоге, например, мог бы выкладывать, сам же и оценивать качество.  Я думаю, не доверять гуру ни у кого причин нет. Только смущает фраза "не для всех". А для кого?
|
|
|
|
|
Sep 8 2010, 10:42
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Я идею поддерживаю. У самого опыта пока мало, но может быть чем-нибудь помочь смог бы. Так что, если возьмете, буду рад участвовать. Если уважаемый des00 как автор темы не против, напомню о несколько другой, но близкой идеи, которую я когда-то уже предлагал: ставится какая-нибудь несложная задача, а потом разными людьми предлагаются различные решения этой задачи и анализируются (примеры таких тем у нас на форуме бывали). В контексте данной идеи это помогло бы тем, что предложенное кем-то решение не сразу заносилось в wiki или куда-то еще, а сначала анализировалось бы другими участниками, предлагались бы альтернативные варианты решения (которые могут оказаться лучше изначально предложенного). Это, конечно, требует чуть большего времени и чуть большего усилия со стороны участников, но и качество отобранных решений тоже достаточно возрастет.
--------------------
|
|
|
|
|
Sep 8 2010, 10:59
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(ViKo @ Sep 8 2010, 04:13)  Вот des00 в своем блоге, например, мог бы выкладывать, сам же и оценивать качество.  тогда я это буду делать очень долго, всё таки сказывается работа на 3-х фронтах %) Цитата Только смущает фраза "не для всех". А для кого? Имелось в виду доступ на редактирование вики должен быть не для всех, лучше перебдеть чем надобдеть. На чтение никаких ограничений естественно не будет. Цитата(des333 @ Sep 8 2010, 04:42)  Я идею поддерживаю. У самого опыта пока мало, но может быть чем-нибудь помочь смог бы.  нескромничайте Цитата ставится какая-нибудь несложная задача, .... именно так и планируется построить работу, только вынести обсуждение решений в отдельные ветки. Но исходного материала, в виде обсуждений, на форуме много. На вскидку в моих запасниках лежит ~20-40 полезных примеров слитых с форума/залитых на форум %) Всем кто хочет участвовать предлагаю перетрясти свои запасники, что бы иметь оценку объема работы до старта проекта.
--------------------
|
|
|
|
|
Sep 8 2010, 11:45
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Maverick @ Sep 8 2010, 06:40)  Допустим потрясли и что-то нашли. Куда эту информацию девать или что с этой информацией делать или эту информацию высылать на какой-то электронный ящик? До поры до времени держать при себе. Цитата В общем интересует общение - между собой. Каким образом будет происходить выкладывание информации. Может будет вначале кто-то все выкладываемое будет проверять, так сказать будет главным редактором, а потом уже будет происходить выкладывание информации. Ну и все сопутствующие вопросы... Подожду до конца недели, чтобы с командой определится. Потом обращусь к администрации форума, чтобы выделили место для обсуждений и права для управления %)
--------------------
|
|
|
|
|
Sep 8 2010, 11:53
|
Гуру
     
Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369

|
Цитата(des00 @ Sep 8 2010, 15:45)  Потом обращусь к администрации форума, чтобы выделили место для обсуждений и права для управления %) Я предлагаю объединить это обсуждение с обсуждением видео-обучалок. По существу здесь нет никакой разницы. И предлагаю делать выкладывание в два этапа. Сначала на обсуждение. Потом автор правит, если есть замечания или дополнения. Потом модераторы переносят материал к месту хранения.
--------------------
www.iosifk.narod.ru
|
|
|
|
|
Sep 8 2010, 12:34
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Я думаю лучше не объединять, а сделать новый раздел с названием типа "Оптимизация ..." Ведь, по существу, все эти темы и вопросы и связаны с оптимизацией по площади, либо по времянкам, либо по потреблению. Объединять с обучалками, я думаю, не стоит. Слишком различный смысл. Насчет обсуждение в два этапа согласен. После того, как участники придут, так сказать, к "оптимальному" варианту, модератор переносит решение. На роль модератора нового раздела, естественно, предлагаю des00. Он, с одной стороны, автор идеи, а с другой стороны, гуру.
--------------------
|
|
|
|
|
Sep 8 2010, 13:14
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(des333 @ Sep 8 2010, 15:34)  На роль модератора нового раздела, естественно, предлагаю des00. Он, с одной стороны, автор идеи, а с другой стороны, гуру.  Полностью согласен
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Sep 9 2010, 02:36
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(iosifk @ Sep 8 2010, 06:53)  Я предлагаю объединить это обсуждение с обсуждением видео-обучалок. Ответил вам в вашей теме Цитата(one_man_show @ Sep 8 2010, 06:57)  Скажите, что считаете более приемелемым Надо немножко подумать Цитата(des333 @ Sep 8 2010, 07:34)  Я думаю лучше не объединять, а сделать новый раздел с названием типа "Оптимизация ..." Не хотелось бы останавливаться только на оптимизации. У меня накоплен небольшой багаж по и HDLным трюкам. Т.е. как более красиво описать то или иное. Например CaPpuCcino помнит про решение задачи создании шаблона функций в SV %) Помимо этого есть небольшой багаж по тупости синтезаторов. Например оптимальное в ква описание массива счетчиков, была года два назад и такая тема. Всё это представляет собой обобщенный класс "трюков", который и хотелось бы донести. Цитата(Aprox @ Sep 8 2010, 12:38)  А я не согласен. Он AHDL на дух не переносит. Как уже говорил я работал на языках AHDL/VHDL/V/SV и совершенно ровно отношусь к ним ко всем. Но, как вы правильно заметили, я на дух не переношу голословных, не подтвержденных делом утверждений. Говоря простым языком "Нужно отвечать за базар" %) Но это уже офтоп. Цитата(CaPpuCcino @ Sep 8 2010, 15:57)  а) чем содержательно должен отличаться подразумеваемый раздел от 4-ого раздела по ПЛИС "Системы на ПЛИС - System on Programmable Chip" (он открывался для обсуждения корок)? большей мелкозернистостью обсуждаемых модулей? Целью создания. Например в свое время я сохранил несколько вариантов делителей опубликованных на форуме. Когда мне потребовалось поставить в свой проект делитель, мне стало интересно написать свою версию. Достал из запасника то что сохранил, раскрутил алгоритм и написал свои реализации. Т.е. использовал форум как справочный материал. Таких справок по форуму лежит много : переход доменов, подсчет КРК, единиц, математика, сортировка и т.д. и т.п. Почему бы их все не объединить в одну справочную базу, снабженную комментариями опытных разработчиков. Помимо этого все мы используем в своей работе какие то наброски, наработки, описания, которые по нашему мнению идеально подходят и представляют собой что-то вроде собственной "черной магии". Выводились же все эти "трюки"/"хаки" не в слепую, а используя определенные предпосылки и логические заключения (те же шаблоны функций в SV). Было бы интересно всё это собрать под одной темой показав логическую сущность и(или) нестандартность нелинейность мышления HDL дизайнера. %) Цитата б) по какому принципу будет организовываться структура раздела? надеюсь каталогизация подразумевается? Это обсуждаемо, каталогизация нужна, иначе будет кто в лес, кто по дрова. Wiki структура хорошо для этого подходит, но формат подачи материала нужно еще обдумать. ЗЫ. В свое время на телесистемах существовал FAQ по ПЛИС, содержащий базовую информацию. Когда я 10 лет назад начинал работать, мне он сильно помог, не смотря на то, что количество вопросов там было мало.
--------------------
|
|
|
|
|
Sep 9 2010, 06:31
|

Помогу, чем смогу
     
Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25

|
Андрей, если я правильно понял Дениса, в результате работы в разделе в том числе будет происходить наполнение полученных результатов в Wiki. Раздел для того, чтобы набрать команду, согласовать действия, найти темы, найти решения задач, совместно разработать, поделиться, покритиковать. Все это в направлении действия конкретной команды с конкретными результатами на выходе.
--------------------
|
|
|
|
|
Sep 9 2010, 08:18
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

|
Цитата(sazh @ Sep 9 2010, 11:12)  Что такое wiki/ Не понял вопроса. Если имеется в виду, что такое вики в принципе, то Википедию вы, наверняка, видели. Если имеется в виду, что такое вики на Электрониксе, то ссылка вверху страницы: http://electronix.ru/mkportal/modules/mediawiki/index.php. Цитата явно не дотягивает до желаемого Не совсем понятна претензия. Отчасти оттого, что я так и не понял, в чём это желаемое состоит. По ссылке используется обычный вики-движок. Ну а что структура наполнения не развита, так это зависит от наполняющих.
|
|
|
|
|
Sep 9 2010, 11:27
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(CaPpuCcino @ Sep 9 2010, 14:24)  вот я тоже только вчера нашёл, что на электрониксе есть какое-то вики, но, думал, я один такой невнимательный. хочется попросить малиновые штаны (раз представитель оных здесь на удачу уже присутствует), чтобы население форума более активно информировалось по ключевым событиям в жизни форума (например почтовой рассылкой). глядишь так и wiki будет активнее наполнятся это Вы метко подметили по поводу наполнения wiki. На мой взгляд - он вообще запущен и забыт.
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Sep 9 2010, 12:57
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
к des00это как в книге "Исскуство схемотехники"? или это копилка удачных решений... или размышления о том, как лучше сделать... Цитата(des00 @ Sep 9 2010, 05:36)  ...У меня накоплен небольшой багаж по и HDLным трюкам. Т.е. как более красиво описать то или иное... Приведите для примера один-два трюка, что бы другие в таком же стиле выкладывали свои.
|
|
|
|
|
Sep 9 2010, 13:15
|

Помогу, чем смогу
     
Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25

|
Цитата хочется попросить малиновые штаны (раз представитель оных здесь на удачу уже присутствует) Если это в мой огород, то из него же граблями отвечу  На Шараге.орг, как один из ее участников, готов использовать принятую там терминологию, здесь как-то хочется иного...я даже не про уважение...ну вы понимаете  Относительно предложения отмечать в рассылках новые веяния, согласен полностью, но здесь был с моей стороны не злой умысел, а чистая эксплуатация жизненного опыта: если кинуть клич на создание команды, или открытие нового проекта, то в первую очередь отреагируют те, кот в этих начинаниях мало заинтересован (мягко говоря) или готов в основном обсуждать (точно выражаясь). В связи с этим я начал с предварительной работы, нашел заинтересованных и предложил им начаьт работу, когда сформируются компетентные группы, можно и всем в рассылке указать, что есть новые проекты, к которым можно присоединиться. В такой ситуации уже компетентные группы будут входным фильтром для "обсуждальщиков", в их темах долго не пофлудишь, при этом модерирование даже не понадобится. В теме у Иосифа по поводу видео-обучалок немного заоффтопил, здесь повторюсь, что и Статьи у нас в запустении. Пытаюсь "привлечь заинтересованных", чтобы в отдельной теме эти вопросы начать обсуждать, не мешая уже развивающимся проектам
--------------------
|
|
|
|
|
Sep 10 2010, 02:19
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(des333 @ Sep 9 2010, 04:59)  Но, лично я, слово "трюки" в названии раздела употреблять бы не стал. Хотя это уже мелочи.  ничего другого, не сленгового, но описывающего в целом предмет, мне в голову не пришло %) Цитата(Serhiy_UA @ Sep 9 2010, 06:57)  это как в книге "Исскуство схемотехники"? или это копилка удачных решений... или размышления о том, как лучше сделать... Мне импонирует стиль подачи материала как в в книге "Алгоритмические трюки для программистов", которую не однократно упоминал. В этой книге, на простых примерах, без привязки к целевой платформе даются красивые реализации простых вещей, которые обычно решаются в лоб. Можно назвать это копилкой удачных решений. Цитата Приведите для примера один-два трюка, что бы другие в таком же стиле выкладывали свои. параметризация функций в SVили пример использования task в синтезируемом коде, который позволяет красиво описать нужную функциональность и получить легкую расширяемость модуля CODE //------------------------------------------------------------------------------------------------------ // Self synchronous scrambler //------------------------------------------------------------------------------------------------------ module scrambler #( parameter int pTYPE = 23, // 5/6/7/8/9/10/11/15/16/17/18/20/21/22/23/33/43 parameter int pWIDTH = 1, parameter bit pMSB_FIRST = 0 // 1/0 :: first scrambled bit is MSB/LSB ) ( iclk , iena , ibyp , idat , odat , oena ); //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ input wire iclk; input wire iena; input wire ibyp; // bypass data or not input wire [pWIDTH-1 : 0] idat; output logic [pWIDTH-1 : 0] odat; output logic oena; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ typedef logic [pWIDTH-1 : 0] data_t; typedef logic [pTYPE : 1] state_t; state_t state; //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ // synthesis translate_off initial begin : ini odat = '0; oena = '0; state = '0; end // synthesis translate_on //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ generate if ( (pTYPE == 5) || (pTYPE == 6) || (pTYPE == 7) || (pTYPE == 8) || (pTYPE == 9) || (pTYPE == 10) || (pTYPE == 11) || (pTYPE == 15) || (pTYPE == 16) || (pTYPE == 17) || (pTYPE == 18) || (pTYPE == 20) || (pTYPE == 21) || (pTYPE == 22) || (pTYPE == 23) || (pTYPE == 33) || (pTYPE == 43) ) begin always_ff @(posedge iclk) begin if (iena) begin if (ibyp) {state, odat} <= {'0, idat}; else ScramblerWord(idat, state, odat); end oena <= iena; end end else begin assign state[-1] = 1'bx; // incorrect scrambler type is set end endgenerate //------------------------------------------------------------------------------------------------------ // 5bit : x^5 + x^3 + 1 // 6bit : x^6 + x^5 + 1 // 7bit : x^7 + x^6 + 1 // 8bit : x^8 + x^6 + x^5 + x^4 + 1 // 9bit : x^9 + x^5 + 1 // 10bit : x^10 + x^7 + 1 // 11bit : x^11 + x^9 + 1 // 15bit : x^15 + x^14 + 1 // 16bit : x^16 + x^15 + x^13 + x^4 + 1 // 17bit : x^17 + x^14 + 1 // 18bit : x^18 + x^11 + 1 // 20bit : x^20 + x^17 + 1 // 21bit : x^21 + x^19 + 1 // 22bit : x^22 + x^21 + 1 // 23bit : x^23 + x^18 + 1 // 33bit : x^33 + x^20 + 1 // 43bit : x^43 + x^41 + x^20 + x + 1 //------------------------------------------------------------------------------------------------------ task automatic ScramblerBit(input bit b, inout state_t state, output bit msb); case (pTYPE) 5 : msb = state[5] ^ state[3] ^ b; 6 : msb = state[6] ^ state[5] ^ b; 7 : msb = state[7] ^ state[6] ^ b; 8 : msb = state[8] ^ state[6] ^ state[5] ^ state[4] ^ b; 9 : msb = state[9] ^ state[5] ^ b; 10 : msb = state[10] ^ state[7] ^ b; 11 : msb = state[11] ^ state[9] ^ b; 15 : msb = state[15] ^ state[14] ^ b; 16 : msb = state[16] ^ state[15] ^ state[13] ^ state[4] ^ b; 17 : msb = state[17] ^ state[14] ^ b; 18 : msb = state[18] ^ state[11] ^ b; 20 : msb = state[20] ^ state[17] ^ b; 21 : msb = state[21] ^ state[19] ^ b; 22 : msb = state[22] ^ state[21] ^ b; 23 : msb = state[23] ^ state[18] ^ b; 33 : msb = state[33] ^ state[20] ^ b; 43 : msb = state[43] ^ state[41] ^ state[20] ^ state[1] ^ b; default : msb = 1'b0; endcase state = (state << 1) | msb; endtask //------------------------------------------------------------------------------------------------------ // //------------------------------------------------------------------------------------------------------ task automatic ScramblerWord (input data_t b, inout state_t state, output data_t msb); int i; begin if (pMSB_FIRST == 0) begin for (i = 0; i < $size(  ; i++) ScramblerBit (b[i], state, msb[i]); end else begin // pMSB_FIRST == 1 for (i = $high(  ; i >= 0; i--) ScramblerBit (b[i], state, msb[i]); end end endtask endmodule Как видите, для добавления нового полинома, нужно изменить всего две строки (если бы не дополнительная проверка, то одну). При этом ни каких варнингов при синтезе не будет %)
--------------------
|
|
|
|
|
Sep 10 2010, 23:46
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Цитата(Maverick @ Sep 10 2010, 14:00)  Можно. Я предлагаю следующее: Схемотехнические головоломки на ПЛИС и способы решения Почему же сразу "головоломки"? Некоторые из обсуждаемых вопросов являются банальными "ежедневными" задачами ПЛИСоводов. Кстати, насчет задач. Извиняюсь за кроспостинг, но укажу ссылку, чтобы читающие данную тему были в курсе. Задача подсчета количества единичных бит до сих пор не получила своего оптимального решения. Отличие результатов анализа частоты, которые получали разные участники обсуждения оказались вызваны различием версий Квартуса. Подробности тут: http://electronix.ru/forum/index.php?showt...80083&st=30
--------------------
|
|
|
|
|
Sep 11 2010, 06:54
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(des00 @ Sep 10 2010, 05:19)  Мне импонирует стиль подачи материала как в в книге "Алгоритмические трюки для программистов", которую не однократно упоминал. В этой книге, на простых примерах, без привязки к целевой платформе даются красивые реализации простых вещей, которые обычно решаются в лоб. Можно назвать это копилкой удачных решений. Наверно имеет смысл подавать это в связке с написанием testbench_ей. Ибо систематизированных описаний красивых реализаций пока нет. Решения в лоб привалируют. Сплошь и рядом откровения типа оказывается можно одной строчкой Код while(flag == 1'b0) repeat (1) @(negedge clk); Особенно это актуально для Альтеровцев, ибо классный язык и наличие качественного встроенного симулятора в Квартусе сыграли с разработчиками злую шутку. Симулятора уже нет, на AlteraHDL многие подсели. (Поэтому смотрят на симулятор Альдека, графика) А ip_core идут в связке с моделсимом. А два симулятора - это уже перебор. Думаю, наступила пора только текстового описания и того и другого.
|
|
|
|
|
Sep 14 2010, 02:49
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(sazh @ Sep 11 2010, 01:54)  Наверно имеет смысл подавать это в связке с написанием testbench_ей. Ибо систематизированных описаний красивых реализаций пока нет. А это идея. Цитата Решения в лоб привалируют. Сплошь и рядом откровения типа оказывается можно одной строчкой Можно и не такое в одну строчку %) Извините за паузу, работы много. Итак, явное желание войти в команду выразили : XVR, Maverick, des333, на днях создам новую тему где выложу детали %)
--------------------
|
|
|
|
|
Sep 28 2010, 15:40
|
Местный
  
Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284

|
Цитата(des00 @ Sep 14 2010, 06:49)  Итак, явное желание войти в команду выразили : XVR, Maverick, des333, на днях создам новую тему где выложу детали %) А может и меня в команду возьмёте ?
|
|
|
|
|
Sep 28 2010, 17:53
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621

|
Цитата(des00 @ Sep 14 2010, 06:49)  Итак, явное желание войти в команду выразили : XVR, Maverick, des333, на днях создам новую тему где выложу детали %) А меня если можно запишите пока в резервисты
--------------------
...а Сила, Брат - она - в несиловых решениях.
|
|
|
|
|
Oct 8 2010, 12:37
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(CaPpuCcino @ Oct 8 2010, 14:28)  а вот меня она не впечатлила. как-то куцо всё и на систематическое изложение не тянет. Ради интереса, а какая впечатлила? В частности - по сходной тематике. Да и вообще по FPGA design. А вообще - было бы интересно сделать рейтинг книг по FPGA design....
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Oct 28 2010, 19:24
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Давненько не брал в руки шашек... Но скоро опять предстоит. Как-то так? Код module ff2chan ( output q, input c0, d0, e0, c1, d1, e1 );
reg qq0, qq1;
assign q = qq1 ^ qq0;
always @(posedge c0) if( e0 ) qq0 <= d0 ^ qq1;
always @(posedge c1) if( e1 ) qq1 <= d1 ^ qq0;
endmodule
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Oct 29 2010, 06:14
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Leka @ Oct 28 2010, 23:39)  Да Ну это «навеяно фланктером». Когда-то хоть и работал с альтерой, но xilinx-овский сайт тоже изучал. Тю, у них был ещё html-ный вариант с нормальными картинками-схемами. А сейчас только pdf-ка с плохими. Надо порыться в тогдашних архивах, может, где-то рядом с AHDL-кусочками и страничка с сайта сохранена.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Oct 29 2010, 09:07
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(ReAl @ Oct 29 2010, 10:14)  вариант с нормальными картинками-схемами http://www.floobydust.com/flancter/Flancter_App_Note.pdf - нагуглил(про фланктер - не знал). Цитата(Maverick @ Oct 29 2010, 10:29)  а двупортовая память чем не устраивала? В чем разница в использовании? Попробуйте описать асинхронную память с двумя портами чтения и записи (чтение - асинхронно, запись - по клоку) - на блочной не реализуется, на распределенной - только если самому хитро описать, в лоб - софт соберет на триггерах, а не на ЛУТ-ах (давно делал, на новом софте не проверял).
Сообщение отредактировал Leka - Oct 29 2010, 09:07
|
|
|
|
|
Oct 30 2010, 12:11
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Цитата(ViKo @ Oct 30 2010, 15:14)  Картинка не полностью описывает поведение триггера. По аналогии с 2х-портовой памятью. Цитата Что должно быть внутри блока с Q Код always @(posedge c0) q <= d0; always @(posedge c1) q <= d1; - моделируется, но не синтезируется. Цитата На мой взгляд, сама задумка неправильная с точки зрения гонок, метастабильных состояний. Частный случай этой "задумки" - Flancter. Еще пример использования "многопортового триггера". Код always @( posedge c1 or posedge c2 ) if ( c1 ) q <= d1; else q <= d2; - поведение синтезируемой схемы не будет совпадать с моделированием, задача - синтезировать схему, полностью соответствующую верилоговской модели. Вариант решения: (на другом форуме за эти "издевательства" над Верилогом - забанили на несколько суток).
Прикрепленные изображения
|
|
|
|
|
Oct 30 2010, 12:12
|
Группа: Новичок
Сообщений: 1
Регистрация: 11-06-10
Пользователь №: 57 865

|
Цитата(ViKo @ Oct 30 2010, 14:14)  Картинка не полностью описывает поведение триггера. Что должно быть внутри блока с Q (оно будет не только при совпадении фронтов) При совпадении (± зона переходных процессов) понятно что бардак, а так, на мой взгляд, всё понятно — в зону входов для CLK1 входит только D1, поэтому по фронту CLK1 в Q должно записаться значение D1 без никакой связи со значением на D0.
|
|
|
|
|
Oct 30 2010, 12:18
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(Leka @ Oct 30 2010, 15:11)  Частный случай этой "задумки" - Flancter.
(на другом форуме за эти "издевательства" над Верилогом - забанили на несколько суток). Про бан не понятно. А в Flancter увидел свой вариант. Работа по разным фронтам клока. И отработка событий как по одному плечу, так и по другому. Ничего не теряя. Конвеер событий.
|
|
|
|
|
Nov 15 2010, 09:37
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
всем привет! это конечно не трюки, но наверное кому-нибудь пригодится: есть у меня склад всяких разных элементов вычислительных на которых я когда-то в стародавние времена учился Верилогу. я их тогда вроде верифицировал, но может быть что-то и не доглядел, так что "доверяй, но проверяй". сейчас перепроверять уже не хочется. единственное, что я подправлю, так это переделаю чуть-чуть шапки на манер SV ANSI и комментарии в заголовках вставлю, чтобы было юзабельно. выкладывать буду по мере. кто чего будет доделывать-переделывать не забывайте добавлять свои имена и какой-нить лог о переделках. первый релиз-кандидат целочисленный последовательный знаковый/беззнаковый делитель с коррекцией остатка при операндах 32 на 32 бита синтезица в Ксайлинкс В2Про 2VP2fg256 грэйд -6 примерно на 140 МГц жрамши 277 слайсов 16х16 бит на xc2vp70 -6 примерно 150 МГц при 131 из 33088 слайсах описание: sequential integer divider with reminder correction takes in 2 arguments of adjustable width (parameters op_A_width, op_B_width) and divide the first one by the second treating them either signed or unsigned depending on op-type input which takes op_A_width+1 clock cycles + 1 cycle for reminder correction, provided that stall_n signal is deasserted rdy_n output indicates completion of operation with result(rez) and reminder containing valid results the unit provides additionally an overflow and division by zero exception flags
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 15 2010, 10:43
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
а для того чтобы не ждать так долго каждое деление был сделан массив из таких делителей(кол-во ктых зависит от ширины делимого) с вращающимся по кругу раздатчиком операндов /сборщиком результатов синтез для 16х16 на xc2vp70 -6 даёт примерное 130МГц при 2889 из 33088 (8%) 32 на 32 даже страшно проверять (кому не страшно может сам попробовать) ЗЫЖ внимание, сборщик не защёлкивает результаты в регистры на выходе
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 15 2010, 12:04
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
конвеерный пирамидальный умножитель знаковых/беззнаковых чисел 16 х 16 на xc2vp70 -6 примерно 180 МГц при 564 из 33088 слайсах описание: pipelined integer multiplier takes in 2 arguments of adjustable width (parameters op_A_width, op_B_width) and multiply the first one by the second treating them either signed or unsigned depending on op_type input with op_B_width clock cycles of initial latency, provided that stall_n signal is deasserted
Прикрепленные файлы
mul.txt ( 3.15 килобайт )
Кол-во скачиваний: 214
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 15 2010, 15:14
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(ViKo @ Nov 15 2010, 17:22)  Я лично пользуюсь отступами в 2 пробела. да я тоже пользуюсь 2-пробельной табуляцией. именно поэтому так широко размазано и получилось. но думаю это переживабельно. очередь с рукопожатием на обоих портах. может быть сконфигурирована на использование block RAM так и на обычной логике (в зависимости от установленного атрибута). для указателей на концы очереди использована тривиальная схема кодирования (бинарный код) так что не советую использовать в самолётах, спутниках и в районе экватора. можно только для поиграться. есть две ноги для заглядывания в будущее (может быть полезны для поддержания непрерывного потока данных интерфейсных КА). замеры не делал, потому как там мало управляющей логики. Исправленный код выложен тут описание: parameterizable queue with a trivial pointer encodings can be implementer eather with on-chip Block RAM or distributed memory, subject to synthesis attribute setting of the stack memory when implemeted with a RAM block adopt the first-word-falls-through policy for zero latency immediate pop provides forward read and write grant signals for smooth operation of FSMs controlling the data-flows on both ports of the channel(queue)
Причина редактирования: Указанна ссылка на файл без ошибки, по просьбе автора (с) des00
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 15 2010, 19:33
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(nikolascha @ Nov 15 2010, 22:15)  2 'CaPpuCcino': Ну что, даёте добро на оформление этих схемотехнических приёмов в виде статей на wiki или нет? И если да, то на нашей вики выкладывать (будет выглядеть как моноширинный текст) или в Викиучебник (будет с подсветкой синтакиса и автоматической нумерацией строк)? выложил в сеть, значит каждый может делать с этим что его душе угодно. тем что выложил в открытый доступ уже дал согласие на свободное использование. но а разве в отстойнике эти коды не нужно подержать? так может кто покритикует, народ ошибки поищет, а то может быть там что неправильно, или какая у нас по этому направлению политика? в принципе мне-то всё равно где это висеть будет. я в команду трюкачей не записывался и как вы положили сии дела вести не знаю. ЗЫ: вот например FIFO как минимум могли бы обсудить, ведь разные схемы кодирования указателей существует. бинарный код не самый лучший вариант.
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 18 2010, 13:50
|

тоже уже Гуру
     
Группа: Свой
Сообщений: 2 047
Регистрация: 13-06-05
Из: Кёлн - Санкт-Петербург
Пользователь №: 5 973

|
Цитата(des00 @ Nov 18 2010, 14:37)  я такое в свое время для себя делал спб. а в реальной разработке использовали, хорошо работает? Цитата(BSV @ Nov 18 2010, 16:47)  Если интересно, могу выложить. а чего ж не интересно. я так понял здесь собираются делать библиотеку разных решений. разнообразие это хорошо. выкладите, пожалуйста.
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
Nov 18 2010, 14:03
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(BSV @ Nov 18 2010, 07:47)  У хилых есть еще иксаппы по теме ФИФО. Я их код причесал и параметризовал. Если интересно, могу выложить. самая зачетная из них, это сверхбыстрое фифо на LFSR счетчиках. Цитата(CaPpuCcino @ Nov 18 2010, 07:50)  спб. а в реальной разработке использовали, хорошо работает? использовал, чему там не работать то ?
--------------------
|
|
|
|
|
Nov 18 2010, 15:08
|
Знающий
   
Группа: Свой
Сообщений: 672
Регистрация: 18-02-05
Пользователь №: 2 741

|
Цитата(des00 @ Nov 18 2010, 18:03)  самая зачетная из них, это сверхбыстрое фифо на LFSR счетчиках.
использовал, чему там не работать то ? Вот только непонятно, почему сверхбыстрое ассоциируется с LFSR. Самый тормоз во всей схеме updown счётчик для контроля состояния фифо, разрядность у него такая же, как и у адреса, так зачем же LFSR да ещё же с ущербом с одно слово? Логикорное фифо похоже на lfsr, а скорость там так себе. Ещё понимаю LFSR на внешних шинах для уменьшения SSO, но внутри?
|
|
|
|
|
Nov 18 2010, 18:31
|
Гуру
     
Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847

|
Цитата(XVR @ Nov 18 2010, 17:35)  Вечерком дойду до дома, отправлю (если я ее не потер  ) Увы, потер  В принципе ее просто получить - заходите в C:\Xilinx\coregen\ip\xilinx\primary\com\xilinx\ip\fifo_generator_v3_2 и декодируете все исходники, которые там есть (в поддиректориях тоже) Потом идете в iputils, blkmemdp_v6_2 и blk_mem_gen_v2_2 и декодируете все оттуда тоже. Полученная свалка, плюс генерируемые GUI файл конфигурации (с define'ами) и есть корка Декодировал я это прогой xldecomp.exe (из закромов, кажется)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|