cyfrowy wybrać calcultion

S

shadeslayer

Guest
hi all

Napisałem następujący kod, może ktoś mi powiedzieć thr jeśli jest coś brakuje?

Kod:

-----------------------------------

-----------------------------------

--- Wybierz wzmacniacza cyfrowego calc --------

-----------------------------------

-----------------------------------wykorzystania ieee.std_logic_1164.all;

wykorzystania ieee.std_logic_arith.all;

wykorzystania ieee.std_logic_unsigned.all;

Biblioteka IEEE;
Jednostka jest sobotaport (

DIN: w srd_logic_vector (7 downto 0); ---- wprowadzania danych linii

DOUT: out std_logic-vector (7 downto 0); ---- dane wyjściowe linii

reset: in std_logic; ---- zresetować sygnału

nochange: w std_logic; ---- wskazania nie zrobić zmiany danych

);sobota końca;Architektura behawioralnej z sobota jest

Typ Rega jest tablica (0 do 7) bitowe; --------- Rega refrance początku = 0

Typ regb jest tablica (0 do 7) bitowe; --------- RegB = dane użytkownikazacząćprocesu (jeden)

Zmienna reg1: Rega;

Zmienna reg2: regb;zacząćProcedura transferuzacząćreg1 (0) <= reg2 (0); ---------------- subroutine na zmianę danych

reg1 (1) <= reg2 (1);

reg1 (2) <= reg2 (2);

reg1 (3) <= reg2 (3);

reg1 (4) <= reg2 (4);

reg1 (5) <= reg2 (5);

reg1 (6) <= reg2 (6);

reg1 (7) <= reg2 (7);zakończenia procedury przeniesienia;DIN (0) => reg2 (0); --------------

DIN (1) => reg2 (1); --------

DIN (2) => reg2 (2); -----

DIN (3) => reg2 (3); - Dane teken na RegB

DIN (4) => reg2 (4); --

DIN (5) => reg2 (5); -----

DIN (6) => reg2 (6); --------

DIN (7) => reg2 (7); --------------reg1 (0): = 0; --------------

reg1 (1): = 0; --------

reg1 (2): = 0; -----

reg1 (3): = 0; - Rega jest inicjowany na zero

reg1 (4): = 0; --

reg1 (5): = 0; -----

reg1 (6): = 0; --------

reg1 (7): = 0; --------------if (reg2 (0)> reg1 (0)) następnie ---------------------------------

transfer;elseif (reg2 (1)> reg1 (1)) następnie -----------------------------

transfer;elseif (reg2 (2)> reg1 (2)) następnie -------------------------

transfer;elseif (reg2 (3)> reg1 (3)) następnie ----------------- transferu danych, jeśli RegB> Rega

transfer;elseif (reg2 (4)> reg1 (4)) następnie ----------------- więc na koniec otrzymujemy wartość maksymalna

transfer;elseif (reg2 (5)> reg1 (5)) następnie -------------------------

transfer;elseif (reg2 (6)> reg1 (6)) następnie -----------------------------

transfer;elseif (reg2 (7)> reg1 (7)) następnie ---------------------------------

transfer;w przeciwnym razie

nochange; = 1; ---- podać żadnych zmian (nie wymagane)end if;reg1 (0) => DOUT (0); ----------- danych wykupionych

reg1 (1) => DOUT (1);

reg1 (2) => DOUT (2);

reg1 (3) => DOUT (3);

reg1 (4) => DOUT (4);

reg1 (5) => DOUT (5);

reg1 (6) => DOUT (6);

reg1 (7) => DOUT (7);koniec procesu;koniec behawioralne;
 
1.nochange muszą być obecnie
2.należy użyć <= w nochange stowarzyszenie
3.Ci nie zdefiniować sygnał nazwie jednego (w procesie sensitivety list)
4.masz błąd składni w niniejszej deklaracji (srd_logic. ..)Dodano po 7 minut:I kilka innych

 
plz tell me, które inni?

I dont wanna do żadnych zmian w terminie, jeżeli nie ma żadnych warunków setisfied, to b okie jeśli dnt wykorzystania nochange sygnał, ale zamiast WHT shuld użyć?

 
Cóż, nie mam czasu na wyjaśnienia, ale nie określają procedury poprawnie, a nie nazywają go prawidłowo.Ale nie jest poprawne, bo nie mogę dostać tego, czego dokładnie robi.Czy jakiekolwiek opracowanie algorytmu?Jaki program używacie?Dodano po 7 minut:Mogę polecić kilka przydatnych książek, takich jak:
RTL sprzętu VHDL Design Korzystanie przez Pong P. Chu,
Circuit Design z VHDL przez VA Pedroni,
Design Recipes dla FPGA przez P. Wilson, itp.

 
Tutaj zrobiłem przykład:

Biblioteka IEEE;
wykorzystania IEEE.STD_LOGIC_1164.ALL;
wykorzystania IEEE.STD_LOGIC_ARITH.ALL;
wykorzystania IEEE.STD_LOGIC_UNSIGNED.ALL;

Jednostka jest d_p
Port (DIN: w STD_LOGIC_VECTOR (7 downto 0);
dout: obecnie STD_LOGIC_VECTOR (7 downto 0);
reset:
in STD_LOGIC);
koniec d_p;

Behavioral architektury z d_p jest

zacząć
Proces (DIN, reset)
Zmienna dat: std_logic_vector (7 downto 0);
zacząć
if (reset ='1 '),
a następnie dat: = "00000000";
elsif din> następnie dat dat: = DIN;
end if;
dout <= dat;
koniec procesu;
end Behavioral;Dodano po 8 minut:Oto symulacji:
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
oh jej nice,,,, thx,,,

Używam xilinx9.2i i activehdl7.1Dodano po 2 minuty:I dalej chcesz dodać, refrence i licznik,,,

czyli, jeśli wziąć 03 THN refrence jak będę chk, ile czasu mam danych powyżej 03 i jeśli mogę uzyskać dane countinuously 03 do 1 min THN chcę zatrzymać proces,,,

Myślałem o użyciu protmaping, i połączyć elementy, ale im nie wiesz, jak dodać do tego w ten kod,,,

 
Do licznika można użyć języka Szablony od wewnątrz ISE (menu Edycja).
Dla wartości referencyjnej można użyć polecenia generycznych.
Aby połączyć składników musisz użyć struktury opisu.To jest dobre do zbadania "ISE In-Depth Tutorial", jak również ISE Quick Start Tutorial.
Można je znaleźć w obrębie:
Xilinx ... \ doc \ usenglish \ książki \ docs

 
Biblioteka IEEE;
wykorzystania IEEE.STD_LOGIC_1164.ALL;
wykorzystania IEEE.STD_LOGIC_ARITH.ALL;
wykorzystania IEEE.STD_LOGIC_UNSIGNED.ALL;

Jednostka jest d_p
Port (DIN: w STD_LOGIC_VECTOR (7 downto 0);
Dot.: w STD_LOGIC_VECTOR (7 downto 0);
dout: obecnie STD_LOGIC_VECTOR (7 downto 0);
h_out: obecnie STD_LOGIC_VECTOR (3 downto 0);
reset:
in STD_LOGIC);
koniec d_p;

Behavioral architektury z d_p jest
zacząć
Proces (DIN, reset)
Zmienna dat: std_logic_vector (7 downto 0);
zmienna cnt: integer;
zacząć
if (reset ='1 '),
a następnie
dat: = ref;
cnt: = 0;
elsif din> dat następnie
dat: = DIN;
cnt: = cnt 1;
end if;
dout <= dat;
h_out <= CONV_STD_LOGIC_VECTOR (cnt, 4);
koniec procesu;
end Behavioral;
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
i
didnt dostał ten kod?mylić ,,,,,

I niech wyjaśnić szczegółowo, co należy zrobić b,, THN Myślę i zrozumieją, co im wyraźnie stara się uczynić,,,

im używając 2 komparatory, będzie okazja obliczyć wartość lub u można powiedzieć, maksymalnej wartości, innym będzie piszczeć, gdy mój wkład jest większy THN powiedzieć ref 03, obecnie
jeżeli moje wejście dontgo powyżej 03 do 2mins lub 3mins następnie mój cały proces zostanie zatrzymane,

hope u got it,,, i będzie próbował przesłać Schemat blokowy,

btw thx za ten kod u tell me litel bit abt ten kod,Dodano po 3 minuty:I thout również do korzystania z licznika, tak aby i będzie wiedzieć, ile razy mój wkład się powyżej refrence napięcia

 
Cześć,
I attached symbolem.
Gdy reset = 1 następnie h_out = 0.
Pierwsze wartości d_out jest wartości referencyjnej.
Za każdym razem d_in staje się większa niż bieżąca wartość d_out,
a następnie d_out = d_in.
Za każdym razem d_out zmiany jego wartości, h_out wzrasta o 1 (to się liczy, ile razy d_in były większe niż d_out).
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
Teraz widziałem, masz na myśli h_out musi liczyć, ile razy wejściowego jest większa niż wartość referencyjna, więc trochę zmienić ten kod można zrobić.

 
tak, a także wyzerować sygnał shuld b 1
tzn. wszystkie shuld proces zatrzymać przy din jest poniżej ref dla 2or 3 min, i 1 kod i dał również shuld b thr,,,

tak na koniec procesu i shuld uzyskać wybrać wartość na wyjściu countinuously,,,

 
Jak będziesz otrzymywać 2 lub 3 min.okres?Mam na myśli, czy zamierzają syntetyzują czy nie?Jeśli nie syntetyzują kod, możesz skorzystać z "po", inne muszą mieć odniesienie sygnał zegara końca sobie innego licznika podział częstotliwości zegara.

 
co?I dzięki dostał u, co ur próbujesz powiedzieć?Dodano po 7 minut:To znaczy, że za pomocą jednego komparatora, będę geting wybrać wartość,,,

i za pomocą innego komparatora Mogę howmany czasu mój sygnał jest powyżej moich refrance napięcie,,,

patrz i WLL daje tłumienie wavefor jako wkład do ADC, i wyjście cyfrowe i będzie używać do symulacji, ryt,,,Teraz, jeśli im o daping fali na wejście THN po pewnym czasie mój sygnał będzie osiągnąć stan równowagi, więc po tym ja dont mieć trzeba sprawdzić okazja amplitudy,,,

tak myślałem, co jest, jeśli ja dont dostać sygnał powyżej mój ref napięcia dla 2or 3 min następnie shuld i zresetować system i będzie przechowywać mój wybór wartości somewher frm gdzie mogę go dostać na wyjście,,,,

inthe
1-ga programu i oddał go będzie b chaknig do wybrania wartości i woriknig dobra, ale jak musing tłumienie fal (acostic emisji sygnału) jako wkład THN po pewnym thim sygnału będzie b stałej, b tak, że będzie koniec jedno zdarzenie ,, THN ponownie po pewnym czasie i będzie innym tłumienia sygnału, który będzie również ba tłumienie sygnału jest to mój drugi wypadek ...

hope u rozumieć

 
Co masz na myśli z "2 lub 3 min."Myślę, że masz na myśli minut.Tak więc, w VHDL nie masz możliwości pomiaru czasu, z wyjątkiem sytuacji, gdy mają odniesienie częstotliwości i liczyć jego cykli.Dlatego będziesz nead kontrzawiadomienia.Albo musisz znaleźć inną drogę, aby znaleźć steade państwa (powiedzmy, jeżeli liczba razy wkładu pozostawia na jej wybrać poziom, ale nie zapominaj o tym mogą być pewne picks powyżej i na steade państwa).

 
tak im talknig o miutes, będzie b lepszego wykorzystania conter które genrated puleses kiedykolwiek po kilku secnods i conting tm tht możemy zrobić, ale im nie abel do kodu, który,, cant używamy opóźnienia, które jest poczekać na jakiś czas typu oświadczenia?

Proszę wpisać kod zależności od tego, co u got, I think u got pełnej rzeczą co chcę powiedzieć, jak u mnie explaind abt, jak możemy wykorzystać conter się 2 lub 3 minut chkout,,,

thx

 
Biblioteka IEEE;
wykorzystania IEEE.STD_LOGIC_1164.ALL;
wykorzystania IEEE.STD_LOGIC_ARITH.ALL;
wykorzystania IEEE.STD_LOGIC_UNSIGNED.ALL;

Jednostka jest d_p
Port (DIN: w STD_LOGIC_VECTOR (7 downto 0);
Dot.: w STD_LOGIC_VECTOR (7 downto 0);
reset:
in STD_LOGIC;
zmiana: obecnie STD_LOGIC;
dout: obecnie STD_LOGIC_VECTOR (7 downto 0));
koniec d_p;

Behavioral architektury z d_p jest
zacząć
Proces (DIN, reset)
Zmienna dat: std_logic_vector (7 downto 0);
zacząć
if (reset ='1 '),
a następnie dat: = ref;
elsif din> następnie dat dat: = DIN; zmieniony <='1 ';
else zmiana <='0 ';
end if;
dout <= dat;
koniec procesu;
end Behavioral;
Biblioteka IEEE;
wykorzystania IEEE.STD_LOGIC_1164.ALL;
wykorzystania IEEE.STD_LOGIC_ARITH.ALL;
wykorzystania IEEE.STD_LOGIC_UNSIGNED.ALL;

Minutnik jednostka jest
Port (reset:
in STD_LOGIC;
CLK:
in STD_LOGIC;
Stały: obecnie STD_LOGIC);
Minutnik końca;

Architektura Behavioral z Minutnik jest
zacząć
Proces (CLK, reset)
zmienna cnt: integer: = 0;
Zmienna zakończony: STD_LOGIC;
stałej t_per: integer: = 12; - 2min jeśli CLK = 0.1Hz (10 sek)
zacząć
jeśli reset ='1 ',
a następnie cnt: = 0; zakończony: ='0';
elsif (clk'event i CLK ='1 'i zakończył = "0"),
a następnie cnt: = cnt 1;
end if;
jeśli cnt> = t_per następnie cnt: = 0; zakończony: ='1 ';
end if;
Stały <= zakończony;
koniec procesu;
end Behavioral;

wykorzystania IEEE.STD_LOGIC_1164.ALL;
wykorzystania IEEE.STD_LOGIC_ARITH.ALL;
wykorzystania IEEE.STD_LOGIC_UNSIGNED.ALL;

Jednostka jest pick_det
portu (zegar: w std_logic;
DIN: w std_logic_vector (7 downto 0);
Dot.: w std_logic_vector (7 downto 0);
reset:
in std_logic;
pick_value: out std_logic_vector (7 downto 0);
gotowe: out std_logic);
koniec pick_det;Behavioral architektury z pick_det jest
sygnał rst: std_logic;
składnik d_p
port (reset:
in std_logic;
DIN: w std_logic_vector (7 downto 0);
Dot.: w std_logic_vector (7 downto 0);
zmiana: obecnie std_logic;
dout: out std_logic_vector (7 downto 0));
end component;

składnik Minutnik
port (reset:
in std_logic;
CLK:
in std_logic;
Stały: obecnie std_logic);
end component;

zacząć
U1: d_p
port map (DIN (7 downto 0) => din (7 downto 0),
ref (7 downto 0) => ref (7 downto 0),
reset => reset,
zmiana => rst,
dout (7 downto 0) => pick_value (7 downto 0));

U2: Minutnik
port map (CLK => zegar,
reset => rst,
Stały => gotowe);

end Behavioral;
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
może dać bit i wyjaśnienia, co się dzieje, jest przyczyną-falowych nie są jasne,,, I mean valus abel mogę widzieć prawidłowo,,, thxDodano po 19 minut:i cpuner shuld policzyć ile czasu wejścia greator następnie ref sygnału nie, ile razy mój wybór wartości zmian, myślę, że w tym programie pokazano jej, ile razy to cchanging,,,w moim kod, który dałem w początkowa i używane nochang sygnał coz tylko na czas tht i
didnt rememberd null oświadczenia, ale nie jest nochange req,, licznik będzie mi howmany impulsów Mam powyżej ref sygnału,w calulation z sygnałów acostic this helps partii materiału clulating siły,,,

 
Kiedy (reset = 1) a następnie dout = ref.value.
Kiedy (i = 0 zresetować din> dout),
a następnie dout = DIN, zegar zaczyna liczyć od początku (0), clearingu wyjściowego (sygnał) stały.
Podczas resetowania i DIN = 0 <dout następnie Minutnik zwiększa jego zawartość na każdej krawędzi rosnące zegar puls.Kiedy osiągnie koniec państwa (12 to jego sprawa) to resetuje się i ustawia sygnał stały.
Obwód jest strukturalnego kodu.Pierwsza jednostka deklaracji (pick_det) jest cały urządzenia.W architekturze pierwszej części (d_p) jest komparatora, drugi - minutnik.U1 i U2 są instantiations poszczególnych składników.
I będą pewne zmiany, aby nie liczyć, ile razy wejście jest wyższa niż wartość odniesienia.

 
tak musimy się liczyć, ile razy wejściowego jest wyższa, wówczas wartość ref, tutaj im pisanie dobrych wyjaśnienia tht mogę dać,,,

reset = 1 przy czym system shuld zatrzymać lub nie działa

Teraz whn reset = 1 THN

dout = wybrać wartość DIN (pętla będzie działać tak samo jak ur
1-ci code)

jeśli wgięcie> ref THN shuld to wzrost liczby
i jeśli din <ref dla powiedzieć 12 CLK pules THN zresetować = 1 sys zatrzyma,,,,

teraz, aby ponownie uruchomić system do pracy, shuld manualy się zresetować = 0

Myślę, że to bitowy jasne,,,

 

Welcome to EDABoard.com

Sponsor

Back
Top