| Author |
Message
|
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#1
21 Jul 2011 12:54 VHDL schemat kompresora danych (Huffman) |
|
|
|
Czy wie może ktoś jak powinien wyglądać schemat kompresora danych (dynamiczne kodowanie Huffmana)
Wiem że układ powinien zawierać histogram,który zrobiłam
http://www.elektroda.pl/rtvforum/viewtopic.php?p=9528992#9528992
Ale schematu nie potrafię wymyślić.
Będę wdzięczna za pomoc
Pozdrawiam
|
|
| Back to top |
|
 |
Google

|
#
21 Jul 2011 12:54 |
|
|
|
|
|
| Back to top |
|
 |
tymon_x Poziom 20

Joined: 17 Jun 2010 Posts: 814 Location: Gdańsk
|
#2
21 Jul 2011 21:04 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
Biednie to wygląda...
A internet taki bogaty w zasoby: XAPP616 - Huffman Coding
|
|
| Back to top |
|
 |
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#3
22 Jul 2011 07:54 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
:) dzięki! to co mi podesłałeś chyba już znalazłam,tylko nie wiem jak wyglądać ma schemat do adaptacyjnego kodowania huffmana,to jest to ?
|
|
| Back to top |
|
 |
tymon_x Poziom 20

Joined: 17 Jun 2010 Posts: 814 Location: Gdańsk
|
#4
22 Jul 2011 18:39 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
| mogik wrote: |
| :) dzięki! to co mi podesłałeś chyba już znalazłam,tylko nie wiem jak wyglądać ma schemat do adaptacyjnego kodowania huffmana,to jest to ? |
Powiedzmy, adaptacyjny bazuje na nim. W tym dokumencie masz wskazówkę, jak można zrobić adaptacyjny, Jeśli chcesz rozruszać szare komórki, dojdziesz do tego: Adaptive Huffman coding.
|
|
| Back to top |
|
 |
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#5
29 Jul 2011 10:06 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
Chcę zeby funkcja posortowała mi w moim koderze huffmana prawdopodobieństwa od najmniejszego do największego tymczasem funkcja wyrzuca mi tylko największą wartość.Jakieś pomysły?
| Code: |
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.MATH_REAL.ALL;
use ieee.numeric_std.all;
entity median_module is
port(
clk : in std_logic ;
rst_n : in std_logic ;
Mat0 : in std_logic_vector(7 downto 0);
Mat1 : in std_logic_vector(7 downto 0);
Mat2 : in std_logic_vector(7 downto 0);
Mat3 : in std_logic_vector(7 downto 0);
Mat4 : in std_logic_vector(7 downto 0);
Mat5 : in std_logic_vector(7 downto 0);
Mat6 : in std_logic_vector(7 downto 0);
Mat7 : in std_logic_vector(7 downto 0);
Mat8 : in std_logic_vector(7 downto 0);
out_data : out std_logic_vector(7 downto 0)
);
end median_module;
architecture behavioural of median_module is
type matrix is array (0 to 8) of std_logic_vector (7 downto 0);
signal mat_temp : matrix;
signal temp : std_logic_vector(7 downto 0);
begin
mat_temp(0) <= Mat0;
mat_temp(1) <= Mat1;
mat_temp(2) <= Mat2;
mat_temp(3) <= Mat3;
mat_temp(4) <= Mat4;
mat_temp(5) <= Mat5;
mat_temp(6) <= Mat6;
mat_temp(7) <= Mat7;
mat_temp(8) <= Mat8;
process(clk,rst_n)
variable temp_mat : matrix;
begin
if(rst_n = '0') then
-- temp_mat <= "00000000";
-- temp <= '0';
-- out_data <= '0';
elsif (rising_edge(clk)) then
temp_mat := mat_temp;
loop1:for i in 0 to 8 loop
loop2: for j in 0 to 8 loop
if(temp_mat(i)<temp_mat(j)) then
temp <= temp_mat(i);
temp_mat(j) := temp_mat(i);
temp_mat(i) := temp;
end if;
end loop loop2;
end loop loop1;
out_data <= temp;
end if;
end process;
end behavioural; |
|
|
| Back to top |
|
 |
Google

|
#
29 Jul 2011 10:06 |
|
|
|
|
|
| Back to top |
|
 |
tymon_x Poziom 20

Joined: 17 Jun 2010 Posts: 814 Location: Gdańsk
|
#6
29 Jul 2011 19:56 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
Użyj znacznika syntax, bo tego się czytać nie da i jakieś formatowanie wstępne ! (no cóż, z code jakąś żyłem, ale jak pojawia się takie udogodnienie, to trzeba korzystać ;) ).
| mogik wrote: |
| Chcę zeby funkcja posortowała mi w moim koderze huffmana prawdopodobieństwa od najmniejszego do największego tymczasem funkcja wyrzuca mi tylko największą wartość.Jakieś pomysły? |
1) Próbujesz wszystko zrobić w jednym takcie zegara! Twoja funkcja poprawnie czy nie, wykona się rzeczywiście tak jak chcesz, ale na wyjściu przypisania pojawi się jeden ostatni wynik po wyjściu z procesu.
process begin a <= tmp_1; a <= tmp_2; end process;
W przykładzie powyżej, a zawsze będzie miało wartość sygnału tmp_2, i teraz dodaj do tego otoczkę w postaci Twojej pętli oraz że ten twór wykonana w pojedynczym cyklu. Zawsze otrzymasz ostatni wynik przed wyjściem z procesu. W dodatku masz jedno wyście, czyli dane powinny iść szeregowo co np. cykl. Jeśli taki był Twój zamiar.
2) Teraz uwagi sprzętowe. Chcesz zajechać logikę, karzesz syntezerowi rozpracować macierz 8x9, posortować i wykonać to w jednym cyklu zegara, o zgrozo pętlą loop ? Ani to szybkie, ani to mało logiki używa, podatne na hazardy. Rozpracuj ten algorytm na kilka cykli zegarowych, z sygnałami Valid (dane ważne), Ack (potwierdzenie), Ready (zakończono konwersję), Bo ten twór dla dużej macierzy nie będzie się nadawał.
|
|
| Back to top |
|
 |
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#7
04 Aug 2011 08:55 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
a jak wyrzucić największą wartość ze zbioru wartości?
|
|
| Back to top |
|
 |
tymon_x Poziom 20

Joined: 17 Jun 2010 Posts: 814 Location: Gdańsk
|
#8
05 Aug 2011 07:43 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
| mogik wrote: |
| a jak wyrzucić największą wartość ze zbioru wartości? |
Troszkę wyżej:
| mogik wrote: |
| Chcę zeby funkcja posortowała mi w moim koderze huffmana prawdopodobieństwa od najmniejszego do największego tymczasem funkcja wyrzuca mi tylko największą wartość. |
:P
1) Maszyna stanów, objeżdża całą pamięć lub grupę rejestrów. Z reguły pojedyncza dana na cykl. Mało logiki, relatywnie szybka, wymaga czasu na pracę (cykle zegara).
2) Układ kombinacyjny, asynchroniczny. Dwa rejestry na wejściu, komparator equal (A > B), na wyjściu sterowanie mux, czy ma przepuścić dalej A czy B. Za pomocą generate można zbudować pokaźne drzewo. Z równoleglenie zadań.
3) Wymieszanie techniki z pkt. 1 i 2 w celu uzyskania najbardziej efektywnego sposobu wyrzucenia wartości max. Do tego jeszcze pipeline i wio...
|
|
| Back to top |
|
 |
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#9
09 Aug 2011 11:07 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
Chodziło mi o to że po posortowaniu już nie potrzebuje największej wartości tylko największą wartość ze zbioru bez największej poprzedniej wartości -czyli ta troszkę mniejszą:P
tak to napisałam że samą mnie zadziwiła moja logika,pozdrawiam i dzięki za podpowiedź!
|
|
| Back to top |
|
 |
tymon_x Poziom 20

Joined: 17 Jun 2010 Posts: 814 Location: Gdańsk
|
#10
09 Aug 2011 21:05 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
| mogik wrote: |
Chodziło mi o to że po posortowaniu już nie potrzebuje największej wartości tylko największą wartość ze zbioru bez największej poprzedniej wartości -czyli ta troszkę mniejszą:P
tak to napisałam że samą mnie zadziwiła moja logika,pozdrawiam i dzięki za podpowiedź! |
Nie wiem czy ambitna jesteś czy nie, pewnie korzystasz z gotowych wzorców, a idąc tym tropem możesz wykorzystać to powyższe cudo do takiej realizacji. Wystarczy oprócz wyniku, dodać zmienną wskazującą największą wartość i wyzerować ten rejestr wejściowy (definitywne zero), i tak dostaniesz w następnym cyklu największą wartość ciutkę mniejszą niż poprzednio (ale to zabrzmiało). Pasi takie rozwiązanie ?
|
|
| Back to top |
|
 |
Google

|
#
09 Aug 2011 21:05 |
|
|
|
|
|
| Back to top |
|
 |
mogik Poziom 4

Joined: 10 May 2011 Posts: 10
|
#11
25 Dec 2011 18:16 Re: VHDL schemat kompresora danych (Huffman) |
|
|
|
Dzięki,po wielomiesięcznej ciszy musze powiedzieć że sie udało:)
|
|
| Back to top |
|
 |