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

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


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

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



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

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

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

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

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


--------------------
Go to the top of the page
 
+Quote Post
14 страниц V  « < 3 4 5 6 7 > »   
Start new topic
Ответов (60 - 74)
Leka
сообщение Oct 28 2010, 21:07
Сообщение #61


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(sazh @ Oct 29 2010, 01:01) *
А практический смысл в чем.

Пример - многопортовый регистровый файл на распределенной памяти (с несколькими портами записи).
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 29 2010, 06:14
Сообщение #62


Нечётный пользователь.
******

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



Цитата(Leka @ Oct 28 2010, 23:39) *
Да
Ну это «навеяно фланктером». Когда-то хоть и работал с альтерой, но xilinx-овский сайт тоже изучал.

Тю, у них был ещё html-ный вариант с нормальными картинками-схемами. А сейчас только pdf-ка с плохими.
Надо порыться в тогдашних архивах, может, где-то рядом с AHDL-кусочками и страничка с сайта сохранена.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 29 2010, 06:29
Сообщение #63


я только учусь...
******

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



Цитата(Leka @ Oct 29 2010, 00:07) *
Пример - многопортовый регистровый файл на распределенной памяти (с несколькими портами записи).

а двупортовая память чем не устраивала? В чем разница в использовании?
PS Ее (память) ж можно реализовать как на распределенной логике так и с ипользованием блочной памяти.


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 29 2010, 09:07
Сообщение #64


Профессионал
*****

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 29 2010, 10:13
Сообщение #65


Нечётный пользователь.
******

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



Цитата(Leka @ Oct 29 2010, 12:07) *
Тут ещё и информации больше, спасибо.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ViKo
сообщение Oct 30 2010, 11:14
Сообщение #66


Универсальный солдатик
******

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



Цитата(Leka @ Oct 28 2010, 22:03) *
Задачка: описать 2х-портовый триггер на синтезируемом HDL,
поведение при "совпадении фронтов" - произвольное (выбирайте сами).

Картинка не полностью описывает поведение триггера. Что должно быть внутри блока с Q (оно будет не только при совпадении фронтов) - &, 1, =1? После этого можно сделать (один из вариантов уже показали). На мой взгляд, сама задумка неправильная с точки зрения гонок, метастабильных состояний. Зачем два тактовых сигнала? И вообще, для этого нужно было создать отдельную тему в будущем разделе.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 30 2010, 12:11
Сообщение #67


Профессионал
*****

Группа: Участник
Сообщений: 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;

- поведение синтезируемой схемы не будет совпадать с моделированием, задача - синтезировать схему, полностью соответствующую верилоговской модели. Вариант решения:





(на другом форуме за эти "издевательства" над Верилогом - забанили на несколько суток).
Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Alex1961
сообщение Oct 30 2010, 12:12
Сообщение #68





Группа: Новичок
Сообщений: 1
Регистрация: 11-06-10
Пользователь №: 57 865



Цитата(ViKo @ Oct 30 2010, 14:14) *
Картинка не полностью описывает поведение триггера. Что должно быть внутри блока с Q (оно будет не только при совпадении фронтов)
При совпадении (± зона переходных процессов) понятно что бардак, а так, на мой взгляд, всё понятно — в зону входов для CLK1 входит только D1, поэтому по фронту CLK1 в Q должно записаться значение D1 без никакой связи со значением на D0.
Go to the top of the page
 
+Quote Post
sazh
сообщение Oct 30 2010, 12:18
Сообщение #69


Гуру
******

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



Цитата(Leka @ Oct 30 2010, 15:11) *
Частный случай этой "задумки" - Flancter.

(на другом форуме за эти "издевательства" над Верилогом - забанили на несколько суток).


Про бан не понятно.
А в Flancter увидел свой вариант.
Работа по разным фронтам клока. И отработка событий как по одному плечу, так и по другому.
Ничего не теряя.
Конвеер событий.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 30 2010, 12:22
Сообщение #70


Нечётный пользователь.
******

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



Ooopss!!!!
Сообщение выше как бы от Alex1961 — было от меня.
Что-то крепко на форуме с куками и запоминанием входа глюкнуло. Ща жаловаться буду.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 30 2010, 12:29
Сообщение #71


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Flancter:

Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
ReAl
сообщение Oct 30 2010, 12:46
Сообщение #72


Нечётный пользователь.
******

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



+1
Именно от этой точки («а, ну так это нужен такой триггер, из которого таким вот образом получится фланктер») обратным ходом от фланктера и был получен приведеный код.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Nov 15 2010, 09:37
Сообщение #73


тоже уже Гуру
******

Группа: Свой
Сообщений: 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
Прикрепленные файлы
Прикрепленный файл  div_signed_unsigned.txt ( 5.84 килобайт ) Кол-во скачиваний: 276
 


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Nov 15 2010, 10:43
Сообщение #74


тоже уже Гуру
******

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



а для того чтобы не ждать так долго каждое деление был сделан массив из таких делителей(кол-во ктых зависит от ширины делимого) с вращающимся по кругу раздатчиком операндов /сборщиком результатов

синтез для 16х16 на xc2vp70 -6 даёт примерное 130МГц при 2889 из 33088 (8%)
32 на 32 даже страшно проверять (кому не страшно может сам попробовать)

ЗЫЖ внимание, сборщик не защёлкивает результаты в регистры на выходе
Прикрепленные файлы
Прикрепленный файл  div_pipelined.txt ( 3.5 килобайт ) Кол-во скачиваний: 199
 


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post
CaPpuCcino
сообщение Nov 15 2010, 12:04
Сообщение #75


тоже уже Гуру
******

Группа: Свой
Сообщений: 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
 


--------------------
И снова на арене цирка - дрессированные клоуны!! Оказываем консультации по электронике за симпу круглосуточно.
Go to the top of the page
 
+Quote Post

14 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 15:57
Рейтинг@Mail.ru


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