szybkość dzielnik

M

modeonz

Guest
ja jestem przy pomocy Spartan 3e ...Staram się komunikować z komputerem za pomocą komunikacji szeregowej .....Używam 50 MHz CLK .....Chcę 9600 szybkością do wysłania 8 bitów rejestru ....Jaka jest wartość tych dzielnik należy podjąć .....i używane do 5208 dzielnik również próbowałem 1302, ale i niczego nie otrzymać w hyberterminal ?!!!!!!whatshould zrobićZrobiłem ten kod

itried ten kod w symulatorze i uzyskać prawdziwe wyjście usind przez dzielnik = 5 do ogłoszenia produkcji, tak myślę, że ten błąd będzie na szybkośćc jest zegar
y jest tx

LIBRARY IEEE;
WYKORZYSTANIE ieee.std_logic_1164.all;
WYKORZYSTANIE ieee.std_logic_arith.all;
wykorzystania ieee.std_logic_unsigned.all;JEDNOSTKI Trybunał
PORT (
c: IN std_logic;
rst: IN std_logic;
y: OUT std_logic
);

- Deklaracje

KONIEC sądu;

- HDS interface_end
ARCHITEKTURA muha sądu IS
sygnału TM: std_logic_vector (15 downto 0): = (others =>'0 ');
stałej div: integer: = 5208;
sygnał CLK: std_logic;
sygnał zajętości: std_logic: ='0 ';
sygnał bałagan: std_logic_vector (9 downto 0): = (others =>'0 ');
sygnał sądu: std_logic_vector (15 downto 0): = (others =>'0 ');
BEGIN
clkgen:
process (rst, c)
zacząć
jeśli rst ='1 ',
a następnie
TM <= (others =>'0 ');
CLK <='0 ';
elsif c ='1 ',
a następnie
CLK <='0 ';
jeśli tm = div następnie
TM <= (others =>'0 ');
CLK <='1 ';
w przeciwnym razie
TM <= TM 1;
end if;
end if;
koniec procesu;
shif: proces (c)
zacząć
jeżeli zajęty ='0 ',
a następnie
bałagan <= "0111010111";
zajęty <='1 ';
elsif (zajęty = "1"),
a następnie
if (CLK ='1 'oraz c ='1'),
a następnie
y <= bałagan (9);
bałagan (9 downto 1) <= bałagan (8 downto 0);
cout <= sądu 1;
end if;
end if;
jeśli sąd = 20 następnie
zajęty <='0 ';
cout <= (others =>'0 ');
end if;
koniec procesu;
KONIEC muha;

 
Nie mogę zidentyfikować zegar Divider w projekt, nie ma krawędzi wrażliwych wypowiedzi w tym procesie.Każda rising_edge (c) lub (c'event oraz c = "1"), konieczne byłoby w celu uzupełnienia kontrzawiadomienia odpowiednio Divider zegara.

Porównaj z UART projektowania http://www.opencores.org/projects.cgi/web/uart/overview

 
I zamiast wzrosnąć krawędzi warunek c = 1 i CLK = 1

 
To nie jest "krawędzi" warunkiem, że jest "poziom" stanie.

Ponieważ co nie wymienione w wykazach czułość,
będziesz musiał kilka komunikatów ostrzegawczych w sprawozdaniu podsumowującym, można powiedzieć, że symulator nie będzie symulować jakie narzędzia wygeneruje.

 
tak jest to poziom, ale warunkiem jej Innym warunkiem, że je lubisz krawędzi warunek, to dlatego, że "proces (c)", które sprawiają, że proces uruchomić tylko wtedy, gdy zmiana zegara c zrobienia.tak, aby generować podobne ...i mi, że dla wszystkich, bo odkrywamy, że winy nie był w kodzie
była na kabel

Zrobiłem błąd przy użyciu "UNCROSSED" kabel zamiast krzyża kabla.Myślałem, że to był krzyż, ale gdy badania i znaleźć nie jest

dziękuje wszystkim za poświęcony czas

 
Jeżeli konstrukcja jest pracować w taki sposób, to byłoby bardzo dziwne: Zegar licznik jest budowanie zamków z zamiast flip-flops.Może to być, że Xilinx narzędzie posiada opcję, aby włączyć do zamków flip-flops, inaczej I trudno sobie wyobrazić, jak go podzielić zegar poprawne.Ale to nie powinien być mój problem.

 
Ok,

Ja polecam Ci mapę swój buadrate zegar (T) na niewykorzystane wyprowadzenie FPGA a następnie sprawdzenie go oscope.Jeśli nie, jak należy spróbować zmienić projektowania aż pojawi się to, czego potrzebujesz.Przed znalezieniem dobrej zegar nie rozpocząć pracę na innych części projektu.

Ale jest oczywiste, że kod nie działa, dopóki nie dodasz zegar krawędzi warunkiem kodu.i guess you mylić i myślisz jak verilog nie VHDL.W VHDL zegar krawędzi warunku jest niezbędne.inaczej nie działa.

 
Projekt również nie będzie działać w Verilog, powodują zawsze @ (c rst) wraz z (c == 1) warunkiem wyprowadza jeden zatrzask.Ale faktycznie składni jest bardzo różne w tym względzie.Zastanawiam się, jeśli Xilinx również szablony, które wskazują na podstawową strukturę synchronicznych wzorów jako @ ltera ma.Zasadniczo powinieneś mieć coś takiego:
Kod:

Proces (c, rst)

zacząć

jeśli rst ='1 ', a następnie

- Resetuj działania

elsif c'event oraz c ='1 ', a następnie

- Zegar działania dla każdego cyklu

jeśli CLK ='1 ', a następnie

- Warunkowo zegar z CLK działania jako umożliwienia

end if;

end if;

koniec procesu;
 
I nie próbować kod daliście mi, ale jest to symulacja mojego kodu przy użyciu modelsim w Mentor Graphics oprogramowania i jest to samo co ise8.2 symulator

I make 2 proste różnicy, ale nie jest to rzeczywista różnica ....i poddane wstępnej wartość y ='1 '
i dzielnik = 2 do ogłoszenia zmiany

można zauważyć, że dzieli się przez 3, ponieważ stan i umieścić w kodzie

Postaram kodu do poprawy moich wzorów

Nie jestem specjalistą w VHDL, w pierwszej próbie, aby za pomocą kodu krawędzi warunek ale nie działał w symulacji ...Więc pytam, co jest moim własnym rozumieniu proces (a, b) to znaczy, że proces będzie trwał whaen zmiana a lub b occure
więc można, zamiast wzrosnąć, ale na krawędzi po raz pierwszy zrobiłem się, że przesunięcie o 2 liczby, kiedy patrzyła na symulacji i zobaczyć, że się go na wzrost i nie krawędź zegara generowane więc poddane innym warunkiem, że c = "1", aby uczynić ją jednym czasie każdej zmiany zegar

Sądzę, że przejście od problemu do innego i od tego zacząć ale postaram się je wszystkie rozwiązać, dzięki za zainteresowanie [/ img]
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
I nie próbować kod daliście mi, ale jest to symulacja mojego kodu przy użyciu modelsim w Mentor Graphics oprogramowania i jest to samo co ise8.2 symulator

I make 2 proste różnicy, ale nie jest to rzeczywista różnica ....i poddane wstępnej wartość y ='1 '
i dzielnik = 2 do ogłoszenia zmiany

można zauważyć, że dzieli się przez 3, ponieważ stan i umieścić w kodzie

Postaram kodu do poprawy moich wzorów

Nie jestem specjalistą w VHDL, w pierwszej próbie, aby za pomocą kodu krawędzi warunek ale nie działał w symulacji ...Więc pytam, co jest moim własnym rozumieniu proces (a, b) to znaczy, że proces będzie trwał whaen zmiana a lub b occure
więc można, zamiast wzrosnąć, ale na krawędzi po raz pierwszy zrobiłem się, że przesunięcie o 2 liczby, kiedy patrzyła na symulacji i zobaczyć, że się go na wzrost i nie krawędź zegara generowane więc poddane innym warunkiem, że c = "1", aby uczynić ją jednym czasie każdej zmiany zegar

Sądzę, że przejście od problemu do innego i od tego zacząć ale postaram się je wszystkie rozwiązać, dzięki za zainteresowanie
Przepraszamy, ale musisz logowania w celu wyświetlenia tego zajęcia

 
Nie widzę z ModelSim fali jeśli wzór działa poprawnie, TM wydaje się liczyć z dzielnik 4, Obawiam się, że w prawdziwym FPGA lub czas symulacji, to nie liczą się regularnie na wszystkich, na powiedział powodów.

Zasadniczo proces wrażliwości lista nie zapewniam, że kod jest oceniany na krawędzi tylko VHDL ma "atrybut przypadku odpowiednio rising_edge () / falling_edge () funkcji do osiągnięcia tego celu.A flip-flop lub roszczenie nie będą generowane, bez korzystania z tej budowy, można zasięgnąć wszelkich VHDL podręcznik.

 
ok, i będzie odbudować moje projektowania w oparciu o które
ale co z tego kodu
Czy myślisz, że może go używać, to praca w symulacji, ale nie używać go jeszcze w czasie rzeczywistym

LIBRARY IEEE;
WYKORZYSTANIE ieee.std_logic_1164.all;
WYKORZYSTANIE ieee.std_logic_arith.all;
wykorzystania ieee.std_logic_unsigned.all;JEDNOSTKI liczyć IS
- Deklaracje
generycznych (opóźnienia: Czas: = 104166.6666ns);
Port (CLK:
in std_logic;
y: out std_logic);
KONIEC liczyć;

- HDS interface_end
ARCHITEKTURA zachowania liczyć IS
BEGIN
proces
zacząć
poczekaj za opóźnienie;
y <='1 ';
poczekaj za opóźnienie;
y <='0 ';
koniec procesu;
KONIEC zachowań;także możemy używać częstotliwości w ogólnych

 

Welcome to EDABoard.com

Sponsor

Back
Top