baud rate divisore

M

modeonz

Guest
Sto usando spartano 3e ...Io cerco di comunicare con il pc tramite la comunicazione seriale .....utilizzare i 50 MHz clk .....Voglio arrivare a 9600 baud rate per inviare un registro a 8 bit ....qual è il valore del divisore dovrebbe prendere i .....ho usato per il 5208 ho provato anche divisore 1302, ma io non ricevere nulla al hyberterminal ?!!!!!!whatshould fareHo fatto questo codice

itried questo codice nel simulatore e ottenere una vera e propria uscita dal usind divisore = 5 bando di gara per l'output in modo penso che l'errore sarà il baud ratec è l'orologio
y è la tx

BIBLIOTECA IEEE;
USO ieee.std_logic_1164.all;
USO ieee.std_logic_arith.all;
ieee.std_logic_unsigned.all uso;ENTITY giudice
PORT (
c: IN std_logic;
rst: IN std_logic;
y: OUT std_logic
);

- Dichiarazioni

FINE giudice;

- Hds interface_end
ARCHITETTURA DI muha giudice
segnale tm: std_logic_vector (15 downto 0): = (altri =>'0 ');
costante div: integer: = 5208;
segnale clk: std_logic;
segnale di occupato: std_logic: ='0 ';
segnale mess: std_logic_vector (9 downto 0): = (altri =>'0 ');
segnale giudice: std_logic_vector (15 downto 0): = (altri =>'0 ');
BEGIN
clkgen: processo (rst, c)
iniziare
se rst ='1 ', quindi
tm <= (altri =>'0 ');
clk <='0 ';
elsif c ='1 ', quindi
clk <='0 ';
tm = se poi div
tm <= (altri =>'0 ');
clk <='1 ';
altro
tm <= tm 1;
end if;
end if;
fine processo;
shif: processo (c)
iniziare
se occupato ='0 ', quindi
mess <= "0111010111";
occupato <='1 ';
elsif (occupato ='1 '), poi
if (clk ='1 'e c ='1'), poi
y <= disordine (9);
mess (9 downto 1) <= disordine (8 downto 0);
cout <= tribunale 1;
end if;
end if;
se poi giudice = 20
occupato <='0 ';
cout <= (altri =>'0 ');
end if;
fine processo;
FINE muha;

 
Non riesco a individuare un orologio divisore nel tuo disegno, non ha espressione bordo sensibile nel processo.Ciascuna rising_edge (c) o (e c'event c ='1 ') sarebbero necessari per portare un contatore rispettivamente orologio divisore.

Confronta con un design come UART http://www.opencores.org/projects.cgi/web/uart/overview

 
utilizzare invece i margini di aumento della condizione di c = 1 e clk = 1

 
Questo non è un "bordo" condizione, che è un "livello" condizione.

A causa di cosa non lo
è la sensibilità di cui liste, si avrà un numero di messaggi di avviso nella relazione di sintesi, che indicano il simulatore non simulare ciò che gli strumenti che generano.

 
sì è una condizione di livello, ma hanno un nother condizioni che lo rendono come condizione bordo, è perché "processo (c)" che rendono il processo di correre solo quando il cambiamento di fatto l'orologio c.in modo da generare simili ...e mi dispiace per tutto questo, perché scopro che la colpa non è nel codice
è stato il cavo

ho fatto un errore con "UNCROSSED" cavo invece di attraversare via cavo.ho pensato che era croce, ma quando i test che mi sembra non è

ringrazia tutti per il vostro tempo

 
Se il progetto sta lavorando in questo modo, sarebbe davvero strano: L'orologio contatore è da costruire, invece di serrature flip-flops.Esso potrebbe essere, che la Xilinx strumento ha un opzione per attivare serrature in flip-flops, altrimenti è difficile immaginare come si deve dividere il tempo corretto.Ma questo non dovrebbe essere il mio problema.

 
Ok,

Vi raccomando la vostra mappa buadrate orologio (Y), su uno dei pin inutilizzati FPGA e poi controllare da oscope.Se non è come avete bisogno di provare a cambiare la progettazione fino ad ottenere ciò di cui hai bisogno.Prima di ottenere un buon orologio non inizia a lavorare su altri una parte del design.

Ma è ovvio che il codice non funziona fino a quando si aggiunge un orologio di bordo per la vostra condizione codice.Immagino che si è confuso e non pensare come Verilog VHDL.In VHDL orologio bordo condizione è necessaria.altrimenti non funziona.

 
Il disegno non avrebbe funzionato anche in Verilog, causare un sempre @ (c, rst) insieme ad un (c == 1) condizione deduce uno fermo.Ma la sintassi in realtà è molto diversa a questo riguardo.Mi chiedo, se Xilinx ha anche modelli che suggeriscono una struttura di base per i disegni sincroni come ha ltera @.Fondamentalmente si dovrebbe avere qualcosa di simile a questo:
Codice:

processo (c, rst)

iniziare

se rst ='1 ', quindi

- Reset azione

elsif c'event e c ='1 ', quindi

- Orologio per ciascun ciclo

se clk ='1 ', quindi

- Condizionale orologio con clk come attivare

end if;

end if;

fine processo;
 
i non provare il codice che ha dato a me, ma questo è il mio codice di simulazione utilizzando Modelsim mentore nel software di grafica ed è la stessa ise8.2 al simulatore

rendere i 2 semplice differenza, ma non è davvero la differenza ....Ho messo a valore iniziale y ='1 '
e divisore = 2 a notare il cambiamento

si noterà che è diviso per 3, perché la condizione di mettere il codice

vorrei provare il tuo codice per migliorare il mio disegno

Io non sono professionali in VHDL, prima ho cercato di rendere il codice utilizzando condizione bordo ma non ha funzionato nella simulazione ...Chiedo quindi la mia auto qual è il significato del processo (a, b), significa che il processo verrà eseguito whaen un cambiamento di uno o b occure
in modo che possa essere, invece di salire a bordo, ma prima volta che ho fatto fare turni da 2 numero quando ho guardato la simulazione Vedo che lo rendono in aumento e non a bordo del clock generato così ho messo
un'altra condizione che c = '1 'per rendere ogni spostamento un tempo di clock

Penso di passare da un problema ad un altro, poiché i iniziare questo ma cercherò di risolvere tutti, grazie per il vostro interesse [/ img]
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
i non provare il codice che ha dato a me, ma questo è il mio codice di simulazione utilizzando Modelsim mentore nel software di grafica ed è la stessa ise8.2 al simulatore

rendere i 2 semplice differenza, ma non è davvero la differenza ....Ho messo a valore iniziale y ='1 '
e divisore = 2 a notare il cambiamento

si noterà che è diviso per 3, perché la condizione di mettere il codice

vorrei provare il tuo codice per migliorare il mio disegno

Io non sono professionali in VHDL, prima ho cercato di rendere il codice utilizzando condizione bordo ma non ha funzionato nella simulazione ...Chiedo quindi la mia auto qual è il significato del processo (a, b), significa che il processo verrà eseguito whaen un cambiamento di uno o b occure
in modo che possa essere, invece di salire a bordo, ma prima volta che ho fatto fare turni da 2 numero quando ho guardato la simulazione Vedo che lo rendono in aumento e non a bordo del clock generato così ho messo
un'altra condizione che c = '1 'per rendere ogni spostamento un tempo di clock

Penso di passare da un problema ad un altro, poiché i iniziare questo ma cercherò di risolvere tutti, grazie per il vostro interesse
Siamo spiacenti, ma è necessario il login per visualizzare questo attaccamento

 
Non riesco a vedere dal Modelsim ondata se il disegno o modello funziona correttamente, tm sembra contare con un divisore di 4, ho paura, che in una vera e propria o di un FPGA tempi di simulazione, non contare regolarmente a tutti, per la detto motivi.

In sostanza un processo sensibilità elenco non assicuro, che il codice è valutato a bordo uno soltanto, ha VHDL 'evento attributo rispettivamente rising_edge () / falling_edge () funzione per raggiungere questo obiettivo.Un flip-flop o un contatore non saranno generati usando questo senza costruire, si può consultare qualsiasi libro di testo VHDL.

 
ok, mi ricostruire il mio progetto sulla base di tale
ma per quanto riguarda il codice
pensi che posso usare, è il lavoro di simulazione, ma non ho ancora utilizzare in tempo reale

BIBLIOTECA IEEE;
USO ieee.std_logic_1164.all;
USO ieee.std_logic_arith.all;
ieee.std_logic_unsigned.all uso;ENTITY count is
- Dichiarazioni
generico (ritardo:
il tempo: = 104166.6666ns);
porto (CLK: in std_logic;
y: out std_logic);
FINE contare;

- Hds interface_end
ARCHITETTURA E 'il comportamento del Conte
BEGIN
processo
iniziare
attendere per il ritardo;
y <='1 ';
attendere per il ritardo;
y <='0 ';
fine processo;
FINE comportamento;inoltre siamo in grado di uso delle frequenze nella generici

 

Welcome to EDABoard.com

Sponsor

Back
Top