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

    

Ссылки на готовые описания модулей на форуме

различные IP core от des00 (SV)

http://electronix.ru/forum/index.php?showtopic=100684

 

Реализация БПФ на ПЛИС, Тудности, встречаемые при реализации (vhdl)

http://electronix.ru/forum/index.php?s=&am...st&p=531957

 

модуль spi slave (verilog/vhdl)

http://electronix.ru/forum/index.php?showtopic=127855

 

функция arctg (VHDL)

http://electronix.ru/forum/index.php?showt...st&p=478938

 

afifo (verilog)

http://electronix.ru/forum/index.php?s=&am...st&p=841625

 

пример параметризуемого знакового интегратора с насыщением (VHDL)

http://electronix.ru/forum/index.php?s=&am...st&p=922058

 

мост для данных (разрядность 1 бит) из одного частотного домена в другой (verilog)

http://electronix.ru/forum/index.php?s=&am...st&p=996795

 

Параметризуемый фильтр КИХ. Реализация - вторая прямая форма,порядок чётный,ИХ симметричная,латентность - 2 такта не зависимо от порядка. (VHDL)

http://electronix.ru/forum/index.php?s=&am...t&p=1031100

 

для новичков: JK триггер (VHDL)

http://electronix.ru/forum/index.php?s=&am...t&p=1327650

 

параметризируемый модуль целочисленного деления (vhdl)

http://electronix.ru/forum/index.php?s=&am...t&p=1179161

и

https://electronix.ru/forum/index.php?showtopic=138910

 

функция sqrt (vhdl)

http://electronix.ru/forum/index.php?showt...=sqrt&st=30

 

для новичков: Делитель частоты (vhdl)

http://electronix.ru/forum/index.php?s=&am...t&p=1335306

 

PS Я только начал собирать... Надеюсь на помощь...

PS PS в дальнейшем хотелось бы к каждому описанию прикрепить текстовое объяснение того, что реализовано

PS PS PS PS давать желательно ссылки на проверенные/рабочие описания модулей на форуме

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Классная идея!

 

:a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Немного добавлю, после того будет таки прикручен вики движок, описания переедут именно туда. Авторы тем будут оповещены о вики.

 

http://electronix.ru/forum/index.php?showtopic=64955

конфигурируемый wishbone interconnect на SV, варианты shared bus и crossbar switch

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
очень быстрый логарифм

http://electronix.ru/forum/index.php?showt...st&p=616021

+1, немного допилил сдвинув запятую на нужное мне количество разрядов и использую в своих проектах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сумма 1 в векторе

http://electronix.ru/forum/index.php?s=&am...st&p=814251 (verilog) ( объяснение Viko http://electronix.ru/forum/index.php?s=&am...st&p=814665 )

 

полный аналог на Vhdl

 

---- Объяснение:
---- Нулевая ступень - суммируем группы по 4 бита, каждому такому сумматору должно потребоваться 3 LUT и никаких переносов. 
---- Дальше суммируем обычным деревом сумматоров. Но - старшие биты в каждом из сумматоров обладают свойством, назовем, "исключительности". 
---- То есть, если этот бит в 1, то все остальные младшие биты в 0 (максимальные числа в ступенях s0, s1, s2, s3 будут 4, 8, 16 и 32). 
---- Поэтому для вычисления старшего бита не нужны переносы из младших. Вот на этих переносах задержки и экономятся.
---- Дальше - нужно применить схемы параллельных переносов, когда для их формирования используются только входные сигналы. 
---- Только нужно еще определить, в каком случае параллельные переносы будут эффективнее последовательных. 
---- Надеюсь, если правильно все написать, то быстродействие будет не меньше, чем при игнорировании carry. 


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
USE ieee.numeric_std.ALL;

entity sum1_std_logic_vector is
Port ( clk : in std_logic;
		rst : in std_logic;
	   d : in std_logic_vector(63  downto 0);
	   sum : out std_logic_vector(6  downto 0));
end sum1_std_logic_vector;

architecture behavioral of sum1_std_logic_vector is

type ARRAY_TYPE_s0 is array (0 to 15) of std_logic_vector(2 downto 0);
type ARRAY_TYPE_s1 is array (0 to 7) of std_logic_vector(3 downto 0);
type ARRAY_TYPE_s2 is array (0 to 3) of std_logic_vector(4 downto 0);
type ARRAY_TYPE_s3 is array (0 to 1) of std_logic_vector(5 downto 0);

signal s0 : ARRAY_TYPE_s0;
signal s1 : ARRAY_TYPE_s1;
signal s2 : ARRAY_TYPE_s2;
signal s3 : ARRAY_TYPE_s3;

signal dc : std_logic_vector(63  downto 0);
signal sumc : std_logic_vector(6 downto 0);

begin 
process (clk, rst)
begin
if (clk'event and clk = '1') then
dc <= d;
  sum <= sumc;
end if;
end process;

process (dc, d, s0, s1, s2, s3)
begin

for i in 0 to 15 loop
  s0(i) <= conv_std_logic_vector( conv_integer(dc(4*i)) + conv_integer(dc(4*i + 1)) + conv_integer(dc(4*i + 2)) + conv_integer(dc(4*i + 3)), 3);

for j in 0 to 7 loop
  s1(j)(2 downto 0) <= conv_std_logic_vector( conv_integer(s0(2*j)) + conv_integer(s0(2*j +1)), 3);
  s1(j)(3) <= s0(2*j)(2) and s0(2*j +1)(2);
end loop;

  for k in 0 to 3 loop
  s2(k)(3 downto 0) <= s1(2*k) + s1(2*k +1);
  s2(k)(4) <= s1(2*k)(3) and s1(2*k +1)(3);
end loop;

for m in 0 to 1 loop
  s3(m)(4 downto 0) <= conv_std_logic_vector( conv_integer(s2(2*m)) + conv_integer(s2(2*m +1)), 5);
  s3(m)(5) <= s2(2*m)(4) and s2(2*m +1)(4);
end loop;
 sumc(5 downto 0) <= conv_std_logic_vector (conv_integer(s3(0)) + conv_integer(s3(1)), 6);
 sumc(6) <= s3(0)(5) and s3(1)(5);
 end loop;

end process;

end behavioral;

 

простенький тестбенч

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
USE ieee.numeric_std.ALL;							   

ENTITY sum1_std_logic_vector_vhd_tst IS
END sum1_std_logic_vector_vhd_tst;
ARCHITECTURE sum1_std_logic_vector_arch OF sum1_std_logic_vector_vhd_tst IS
-- constants												 
-- signals												   
SIGNAL clk : STD_LOGIC;
SIGNAL d : STD_LOGIC_VECTOR(63 DOWNTO 0):= (63 => '1', 62 => '1', 61 => '1', 60 => '1',  others => '0');
SIGNAL rst : STD_LOGIC;
SIGNAL sum : STD_LOGIC_VECTOR(6 DOWNTO 0);
COMPONENT sum1_std_logic_vector
PORT (
clk : IN STD_LOGIC;
d : IN STD_LOGIC_VECTOR(63 DOWNTO 0);
rst : IN STD_LOGIC;
sum : OUT STD_LOGIC_VECTOR(6 DOWNTO 0)
);
END COMPONENT;
BEGIN
i1 : sum1_std_logic_vector
PORT MAP (
-- list connections between master ports and signals
clk => clk,
d => d,
rst => rst,
sum => sum
);

clk_process :process
  begin
	clk <= '1';
	wait for 5 ns;
	clk <= '0';
	wait for 5 ns;
  end process;

  rst_process :process
  begin
	rst <= '0';
	wait for 10 ns;
	rst <= '1';
	wait;
  end process;

  process (clk, rst)
begin
if (clk'event and clk = '1') then			   
  --d <= "0000000000000000111111111111111111111111000000000000111111111111";
  d <= d + "0000000000000000000000000000000000000000000000000000000000000001";
  end if;
  end process;

END sum1_std_logic_vector_arch;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про сумму единиц тут большее количество вариантов и результатов под разные плис http://electronix.ru/forum/index.php?showt...mp;#entry549588 и http://electronix.ru/forum/lofiversion/index.php/t80083.html

ЗЫ. Использовал в длинных знаковых согласованных фильтрах

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

модуль с произвольным количеством портов на классическом верилог http://electronix.ru/forum/index.php?showtopic=122903

тоже самое, но на SV http://electronix.ru/forum/index.php?showt...t&p=1158069

(очень красивое решение от dxp)

 

Wishbone B4 интерконнект от ~Elrond~ http://electronix.ru/forum/index.php?showt...t&p=1323978

 

Учебный процессор от tAmega http://electronix.ru/forum/index.php?showtopic=100305

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Многовходовой сумматор (verilog)

http://electronix.ru/forum/index.php?s=&am...t&p=1170319

 

Bin2Bcd. параметризованый с InputWidth в generic. (vhdl)

http://electronix.ru/forum/index.php?s=&am...st&p=989872

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


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

как время будет прошерстю пару подфорумов в глубину страниц на 50, потом уже по готовым ссылкам займусь более менее описанием :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Описание поиска 3 минимальных значений из входных паралельно приходящих 32 значений. Pipeline реализация - задержка 9 тактов.

ссылка

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Упрощенный USB-хост для клавиатуры - чтобы беспроводную можно было подключить без софт-процессора с Линуксом (из проводных намного проще взять PS/2). Проект для DE0-nano, ~400 ЛЕ (спасибо разработавшей USB армии даунов). На выходе модуля скан-код последней нажатой клавиши, счетчик нажатий, и карта нажатых Ctrl/Alt/Shift. 0-я версия, комменты в исходниках писать лень, проверил на паре клавиатур - работает.

ссылка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти