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

|
Добрый день уважаемые коллеги. На этом форуме, за годы его существования, выложено много интересных схемотехнических и HDL решений (в том числе с сорцами). Есть предложение обобщить опыт и создать на форуме раздел вида "Схемотехнические трюки для ПЛИСоводов". По мере возможности, я складываю интересные сорцы с форума в библиотеку и при работе иногда к ним обращаюсь. Помогают не изобретать велосипед лишний раз. Думаю что я не один такой. Формат изложение видится такой : Задача -> решение -> комментарии. Сие будет полезно всем, а особенно начинающим. Что бы не задавались вопросами типа таких или таких . От администрации форума получено согласие на поддержку в реализации этого проекта. Но тянуть такое в одиночку нет времени, было бы интересно набрать небольшую команду. Если у кого то есть интерес, прошу назваться %)
--------------------
|
|
|
|
|
 |
Ответов
(60 - 74)
|
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
--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|