Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ссылки на готовые описания модулей на форуме
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
Maverick
различные 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 давать желательно ссылки на проверенные/рабочие описания модулей на форуме
Sefo
Классная идея!

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

http://electronix.ru/forum/index.php?showtopic=64955
конфигурируемый wishbone interconnect на SV, варианты shared bus и crossbar switch
_Anatoliy
очень быстрый логарифм
http://electronix.ru/forum/index.php?showt...st&p=616021
des00
Цитата(_Anatoliy @ May 14 2015, 23:01) *
очень быстрый логарифм
http://electronix.ru/forum/index.php?showt...st&p=616021

+1, немного допилил сдвинув запятую на нужное мне количество разрядов и использую в своих проектах.
Maverick
сумма 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

CODE
---- Объяснение:
---- Нулевая ступень - суммируем группы по 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;


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

CODE
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;
des00
Про сумму единиц тут большее количество вариантов и результатов под разные плис http://electronix.ru/forum/index.php?showt...mp;#entry549588 и http://electronix.ru/forum/lofiversion/index.php/t80083.html
ЗЫ. Использовал в длинных знаковых согласованных фильтрах
des00
модуль с произвольным количеством портов на классическом верилог 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
Maverick
Многовходовой сумматор (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
_Anatoliy
Ну,вообще то, так и думалось - ответят пару человек и тема заглохнет.Непонятно,дело то хорошее...
des00
Цитата(_Anatoliy @ May 26 2015, 20:27) *
Ну,вообще то, так и думалось - ответят пару человек и тема заглохнет.Непонятно,дело то хорошее...

как время будет прошерстю пару подфорумов в глубину страниц на 50, потом уже по готовым ссылкам займусь более менее описанием sm.gif
Maverick
Описание поиска 3 минимальных значений из входных паралельно приходящих 32 значений. Pipeline реализация - задержка 9 тактов.
ссылка
Maverick
Упрощенный USB-хост для клавиатуры - чтобы беспроводную можно было подключить без софт-процессора с Линуксом (из проводных намного проще взять PS/2). Проект для DE0-nano, ~400 ЛЕ (спасибо разработавшей USB армии даунов). На выходе модуля скан-код последней нажатой клавиши, счетчик нажатий, и карта нажатых Ctrl/Alt/Shift. 0-я версия, комменты в исходниках писать лень, проверил на паре клавиатур - работает.
ссылка
Мур
http://freerangefactory.org/cores.html

альтернатив ....и в доступе
aat_81
Цитата(Мур @ Jan 26 2017, 08:38) *
http://freerangefactory.org/cores.html

альтернатив ....и в доступе

Так это opencores.org только в другой обертке
Мур
http://kanyevsky.kpi.ua/fpgadesign/dsp_rab1r.html
Модели генераторов сигналов и их обработка на VHDL А.М. СЕРГИЕНКО
Мур
https://allhdl.ru/link.php
Цитата
MC68000 Verilog I. P. Core — синтезируемое Verilog I. P. Core микропроцессора 68000
USB 1.1 Host/Function Verilog I. P. Core — синтезируемое Verilog I. P. Core USB контроллера
Ethernet MAC 10/100 Mbps - синтезируемое Verilog I. P. Core Ethernet контроллера
8051 VHDL IP Core — синтезируемое VHDL I. P. Core микроконтроллера 8051 от Oregano Systems
8088 VHDL IP Core — синтезируемое VHDL I. P. Core микропроцессора 8088 от HT-LAB
UART 16550 VHDL IP Core — синтезируемое VHDL I. P. Core UART
VHDL library GLOBAL EASY — VHDL-библиотека глобальных определений
VHDL library std_logic_1164 — исходный VHDL-код известной библиотеки
VHDL coding tips and tricks — интересные примеры на VHDL
- ресурс содержит большое колличество VHDL и Verilog кодов различных устройств

Мур
http://kanyevsky.kpi.ua/GEN_MODUL/SQRT/index_sqrt_ukr.php

SQRT module
Мур
http://kanyevsky.kpi.ua/GEN_MODUL/APgen/FiltergenAP_ru.php
Г Е Н Е Р А Т О Р РЕКУРСИВНЫХ ФИЛЬТРОВ БЕЗ БЛОКОВ УМНОЖЕНИЯ
Maverick
acceleration/deceleration step motor
Мур
http://www.sigmatone.com/utilities/crc_gen...c_generator.htm стоит доверять... проверено
Мур
http://kanyevsky.kpi.ua/en/ip-core-generators/

SQRT Module Generator
VHDL-design of MULTIPLIER-FREE IIR-FILTERS
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.