реклама на сайте
подробности

 
 
> "Схемотехнические трюки для ПЛИСоводов", создание аналога "Алгоритмические трюки для программистов"
des00
сообщение Sep 8 2010, 02:21
Сообщение #1


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Добрый день уважаемые коллеги.

На этом форуме, за годы его существования, выложено много интересных схемотехнических и HDL решений (в том числе с сорцами). Есть предложение обобщить опыт и создать на форуме раздел вида "Схемотехнические трюки для ПЛИСоводов".

По мере возможности, я складываю интересные сорцы с форума в библиотеку и при работе иногда к ним обращаюсь. Помогают не изобретать велосипед лишний раз. Думаю что я не один такой.

Формат изложение видится такой : Задача -> решение -> комментарии. Сие будет полезно всем, а особенно начинающим. Что бы не задавались вопросами типа таких или таких .

От администрации форума получено согласие на поддержку в реализации этого проекта. Но тянуть такое в одиночку нет времени, было бы интересно набрать небольшую команду. Если у кого то есть интерес, прошу назваться %)


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Sep 10 2010, 02:19
Сообщение #2


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(des333 @ Sep 9 2010, 04:59) *
Но, лично я, слово "трюки" в названии раздела употреблять бы не стал. Хотя это уже мелочи.  smile.gif

ничего другого, не сленгового, но описывающего в целом предмет, мне в голову не пришло %)

Цитата(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(cool.gif; i++) ScramblerBit (b[i], state, msb[i]);
end
else begin // pMSB_FIRST == 1
for (i = $high(cool.gif; i >= 0; i--) ScramblerBit (b[i], state, msb[i]);
end
end
endtask

endmodule

Как видите, для добавления нового полинома, нужно изменить всего две строки (если бы не дополнительная проверка, то одну). При этом ни каких варнингов при синтезе не будет %)


--------------------
Go to the top of the page
 
+Quote Post
sazh
сообщение Sep 11 2010, 06:54
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(des00 @ Sep 10 2010, 05:19) *
Мне импонирует стиль подачи материала как в в книге "Алгоритмические трюки для программистов", которую не однократно упоминал. В этой книге, на простых примерах, без привязки к целевой платформе даются красивые реализации простых вещей, которые обычно решаются в лоб. Можно назвать это копилкой удачных решений.


Наверно имеет смысл подавать это в связке с написанием testbench_ей.
Ибо систематизированных описаний красивых реализаций пока нет.
Решения в лоб привалируют. Сплошь и рядом откровения типа оказывается можно одной строчкой
Код
while(flag == 1'b0)        repeat (1) @(negedge clk);

Особенно это актуально для Альтеровцев, ибо классный язык и наличие качественного встроенного симулятора в Квартусе сыграли с разработчиками злую шутку.
Симулятора уже нет, на AlteraHDL многие подсели. (Поэтому смотрят на симулятор Альдека, графика)
А ip_core идут в связке с моделсимом.
А два симулятора - это уже перебор.
Думаю, наступила пора только текстового описания и того и другого.
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 14 2010, 02:49
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(sazh @ Sep 11 2010, 01:54) *
Наверно имеет смысл подавать это в связке с написанием testbench_ей.
Ибо систематизированных описаний красивых реализаций пока нет.

А это идея.
Цитата
Решения в лоб привалируют. Сплошь и рядом откровения типа оказывается можно одной строчкой

Можно и не такое в одну строчку %)

Извините за паузу, работы много. Итак, явное желание войти в команду выразили : XVR, Maverick, des333, на днях создам новую тему где выложу детали %)



--------------------
Go to the top of the page
 
+Quote Post
Intekus
сообщение Sep 28 2010, 17:53
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(des00 @ Sep 14 2010, 06:49) *
Итак, явное желание войти в команду выразили : XVR, Maverick, des333, на днях создам новую тему где выложу детали %)

А меня если можно запишите пока в резервисты smile.gif


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- des00   "Схемотехнические трюки для ПЛИСоводов"   Sep 8 2010, 02:21
- - Dima_G   Поддерживаю - идея хорошая. К сожалению помочь вря...   Sep 8 2010, 03:10
- - andrew_b   Цитата(des00 @ Sep 8 2010, 06:21) Есть пр...   Sep 8 2010, 04:49
|- - des00   Цитата(andrew_b @ Sep 7 2010, 23:49) Вы п...   Sep 8 2010, 06:01
|- - Maverick   Цитата(des00 @ Sep 8 2010, 09:01) Как это...   Sep 8 2010, 09:49
- - XVR   Идею поддерживаю. Как то кидал сюда модуль реализу...   Sep 8 2010, 09:20
- - ViKo   Идея хорошая. Потому, что найти что-то, промелькну...   Sep 8 2010, 10:13
- - des333   Я идею поддерживаю. У самого опыта пока мало, но м...   Sep 8 2010, 10:42
- - des00   Цитата(ViKo @ Sep 8 2010, 04:13) Вот des0...   Sep 8 2010, 10:59
|- - des333   Цитата(des00 @ Sep 8 2010, 14:59) именно ...   Sep 8 2010, 11:04
|- - Maverick   Цитата(des00 @ Sep 8 2010, 13:59) Всем кт...   Sep 8 2010, 11:40
|- - des00   Цитата(Maverick @ Sep 8 2010, 06:40) Допу...   Sep 8 2010, 11:45
|- - Maverick   Цитата(des00 @ Sep 8 2010, 14:45) До поры...   Sep 8 2010, 11:47
|- - iosifk   Цитата(des00 @ Sep 8 2010, 15:45) Потом о...   Sep 8 2010, 11:53
- - one_man_show   Если нужно разделение работ по видео-обучалкам и в...   Sep 8 2010, 11:57
- - des333   Я думаю лучше не объединять, а сделать новый разде...   Sep 8 2010, 12:34
|- - Maverick   Цитата(des333 @ Sep 8 2010, 15:34) На рол...   Sep 8 2010, 13:14
|- - Aprox   Цитата(Maverick @ Sep 8 2010, 17:14) Полн...   Sep 8 2010, 17:38
|- - Maverick   Цитата(Aprox @ Sep 8 2010, 20:38) А я не ...   Sep 8 2010, 17:58
|- - sazh   Цитата(Aprox @ Sep 8 2010, 20:38) А я не ...   Sep 8 2010, 18:11
|- - CaPpuCcino   2 вопроса: а) чем содержательно должен отличаться ...   Sep 8 2010, 20:57
- - one_man_show   ЦитатаНа роль модератора нового раздела, естествен...   Sep 8 2010, 12:50
- - one_man_show   Aprox, когда серьезные люди начинают делать серьез...   Sep 8 2010, 18:09
- - des00   Цитата(iosifk @ Sep 8 2010, 06:53) Я пред...   Sep 9 2010, 02:36
|- - des333   Цитата(des00 @ Sep 9 2010, 06:36) Не хоте...   Sep 9 2010, 10:59
|- - Serhiy_UA   к des00 это как в книге "Исскуство схемотехни...   Sep 9 2010, 12:57
- - andrew_b   Продолжаю не постигать, зачем такие сложности? Зач...   Sep 9 2010, 05:00
- - one_man_show   Андрей, если я правильно понял Дениса, в результат...   Sep 9 2010, 06:31
- - andrew_b   Ну ладно, поживём -- увидим.   Sep 9 2010, 07:10
|- - sazh   Цитата(andrew_b @ Sep 9 2010, 10:10) Ну л...   Sep 9 2010, 07:12
|- - andrew_b   Цитата(sazh @ Sep 9 2010, 11:12) Что тако...   Sep 9 2010, 08:18
|- - sazh   Цитата(andrew_b @ Sep 9 2010, 11:18) Если...   Sep 9 2010, 08:53
|- - CaPpuCcino   Цитата(sazh @ Sep 9 2010, 11:53) Спасибо ...   Sep 9 2010, 11:24
|- - Maverick   Цитата(CaPpuCcino @ Sep 9 2010, 14:24) во...   Sep 9 2010, 11:27
|- - Maverick   Присоединяйтесь к теме по написанию статей - обсуж...   Sep 9 2010, 13:58
- - one_man_show   Цитатахочется попросить малиновые штаны (раз предс...   Sep 9 2010, 13:15
|- - CaPpuCcino   Цитата(one_man_show @ Sep 9 2010, 16:15) ...   Sep 9 2010, 20:38
|- - ViKo   Цитата(des00 @ Sep 10 2010, 05:19) ничего...   Sep 10 2010, 09:10
||- - Maverick   Цитата(ViKo @ Sep 10 2010, 12:10) "Х...   Sep 10 2010, 10:00
||- - des333   Цитата(Maverick @ Sep 10 2010, 14:00) Мож...   Sep 10 2010, 23:46
|- - des00   Цитата(des00 @ Sep 13 2010, 21:49) Извини...   Sep 20 2010, 06:05
||- - des333   Цитата(des00 @ Sep 20 2010, 10:05) еще ра...   Sep 20 2010, 09:10
|- - dsmv   Цитата(des00 @ Sep 14 2010, 06:49) Итак, ...   Sep 28 2010, 15:40
- - des00   Цитата(dsmv @ Sep 28 2010, 10:40) А может...   Sep 29 2010, 05:18
|- - lexus.mephi   Хочу на своем сайте такой раздел сделать с SV трюк...   Oct 1 2010, 22:21
- - Shtirlits   Лично я за примеры, требующие минимальных знаний и...   Oct 1 2010, 23:35
|- - CaPpuCcino   а может на трюках не стоит останавливаться, а прос...   Oct 8 2010, 09:02
- - Victor®   Есть неплохая книга ... "Advanced FPGA Design...   Oct 8 2010, 09:32
|- - CaPpuCcino   Цитата(Victor® @ Oct 8 2010, 12:32) ...   Oct 8 2010, 11:28
|- - Victor®   Цитата(CaPpuCcino @ Oct 8 2010, 14:28) а ...   Oct 8 2010, 12:37
|- - CaPpuCcino   Цитата(Victor® @ Oct 8 2010, 15:37) Ради ...   Oct 8 2010, 13:08
- - Leka   Задачка: описать 2х-портовый триггер на синтезируе...   Oct 28 2010, 19:03
|- - Maverick   Цитата(Leka @ Oct 28 2010, 22:03) Задачка...   Oct 28 2010, 19:10
|- - ViKo   Цитата(Leka @ Oct 28 2010, 22:03) Задачка...   Oct 30 2010, 11:14
|- - Leka   Цитата(ViKo @ Oct 30 2010, 15:14) Картинк...   Oct 30 2010, 12:11
||- - sazh   Цитата(Leka @ Oct 30 2010, 15:11) Частный...   Oct 30 2010, 12:18
|- - Alex1961   Цитата(ViKo @ Oct 30 2010, 14:14) Картинк...   Oct 30 2010, 12:12
- - ReAl   Давненько не брал в руки шашек... Но скоро опять п...   Oct 28 2010, 19:24
|- - Leka   Цитата(ReAl @ Oct 28 2010, 23:24) Как-то ...   Oct 28 2010, 20:39
|- - sazh   Цитата(Leka @ Oct 28 2010, 23:39) Да А п...   Oct 28 2010, 21:01
||- - Leka   Цитата(sazh @ Oct 29 2010, 01:01) А практ...   Oct 28 2010, 21:07
||- - Maverick   Цитата(Leka @ Oct 29 2010, 00:07) Пример ...   Oct 29 2010, 06:29
|- - ReAl   Цитата(Leka @ Oct 28 2010, 23:39) ДаНу эт...   Oct 29 2010, 06:14
|- - Leka   Цитата(ReAl @ Oct 29 2010, 10:14) вариант...   Oct 29 2010, 09:07
|- - ReAl   Цитата(Leka @ Oct 29 2010, 12:07) http://...   Oct 29 2010, 10:13
- - ReAl   Ooopss!!!! Сообщение выше как бы о...   Oct 30 2010, 12:22
- - Leka   Flancter:   Oct 30 2010, 12:29
- - ReAl   +1 Именно от этой точки («а, ну так это нужен тако...   Oct 30 2010, 12:46
|- - CaPpuCcino   всем привет! это конечно не трюки, но наверное...   Nov 15 2010, 09:37
|- - CaPpuCcino   а для того чтобы не ждать так долго каждое деление...   Nov 15 2010, 10:43
|- - CaPpuCcino   конвеерный пирамидальный умножитель знаковых/беззн...   Nov 15 2010, 12:04
- - ViKo   Спасибо за код. Любопытно будет посмотреть, особен...   Nov 15 2010, 14:22
|- - CaPpuCcino   Цитата(ViKo @ Nov 15 2010, 17:22) Я лично...   Nov 15 2010, 15:14
|- - nikolascha   2 'CaPpuCcino': Ну что, даёте добро на офо...   Nov 15 2010, 19:15
|- - CaPpuCcino   Цитата(nikolascha @ Nov 15 2010, 22:15) 2...   Nov 15 2010, 19:33
|- - des00   Цитата(CaPpuCcino @ Nov 15 2010, 13:33) З...   Nov 18 2010, 04:00
|- - CaPpuCcino   Цитата(des00 @ Nov 18 2010, 07:00) для си...   Nov 18 2010, 09:20
- - ReAl   Так там натальные табуляции и стоят (что мне кажет...   Nov 15 2010, 15:00
|- - ViKo   Цитата(ReAl @ Nov 15 2010, 17:00) Так там...   Nov 15 2010, 15:08
- - XVR   Цитатаа для радиационной устойчивостиТоже по бараб...   Nov 18 2010, 09:48
|- - CaPpuCcino   Цитата(XVR @ Nov 18 2010, 12:48) Тоже по ...   Nov 18 2010, 10:09
|- - des00   Цитата(CaPpuCcino @ Nov 18 2010, 04:09) ч...   Nov 18 2010, 10:18
|- - CaPpuCcino   Цитата(des00 @ Nov 18 2010, 13:18) фифо ч...   Nov 18 2010, 11:13
|- - des00   Цитата(CaPpuCcino @ Nov 18 2010, 05:13) о...   Nov 18 2010, 11:37
|- - CaPpuCcino   Цитата(des00 @ Nov 18 2010, 14:37) я тако...   Nov 18 2010, 13:50
- - XVR   Цитатачудненько. а может кто реализовывал очередь ...   Nov 18 2010, 11:32
|- - CaPpuCcino   Цитата(XVR @ Nov 18 2010, 14:32) У Xilinx...   Nov 18 2010, 13:36
||- - XVR   Цитата(CaPpuCcino @ Nov 18 2010, 16:36) а...   Nov 18 2010, 14:35
||- - XVR   Цитата(XVR @ Nov 18 2010, 17:35) Вечерком...   Nov 18 2010, 18:31
|- - BSV   Цитата(XVR @ Nov 18 2010, 14:32) У Xilinx...   Nov 18 2010, 13:47
- - des00   Цитата(BSV @ Nov 18 2010, 07:47) У хилых ...   Nov 18 2010, 14:03
- - CaPpuCcino   Цитата(des00 @ Nov 18 2010, 17:03) исполь...   Nov 18 2010, 14:17
- - dmitry-tomsk   Цитата(des00 @ Nov 18 2010, 18:03) самая ...   Nov 18 2010, 15:08
- - des00   Цитата(dmitry-tomsk @ Nov 18 2010, 09...   Nov 18 2010, 16:04
- - dmitry-tomsk   Цитата(des00 @ Nov 18 2010, 20:04) этот с...   Nov 18 2010, 16:17
- - des00   Цитата(dmitry-tomsk @ Nov 18 2010, 10...   Nov 18 2010, 16:28
3 страниц V   1 2 3 >


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th May 2024 - 09:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016