Jump to content
    

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

различные 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

от des00  

 

 

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

от des00 

 

 

функция 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 давать желательно ссылки на проверенные/рабочие описания модулей на форуме

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

очень быстрый логарифм

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

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

Share this post


Link to post
Share on other sites

сумма 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;

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

модуль с произвольным количеством портов на классическом верилог 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

Share this post


Link to post
Share on other sites

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

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

c сигналом разрешения 

 

 

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

ссылка

 

Share this post


Link to post
Share on other sites

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

ссылка

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...