Hvordan lage en enkel seriell UART-sender i Verilog HDL

Hvordan lage en enkel seriell UART-sender i Verilog HDL


Mest Universal Asynchronous Receiver Transmitter (UART) som jeg fant på nettet, er for komplisert og vanskelig å forstå, her vil jeg forklare noen enkle teori og også koden på hvordan å bygge en.

Bruksanvisning

1 Først kan snakke om hvordan sendere fungerer. Det grunnleggende prinsippet er å sende flere biter av data over en enkelt linje. I vår transmitter, er parallell disse dataene, men for å redusere antallet av ledninger, bruker vi seriell kommunikasjon som blir omdannet til parallell på mottakersiden.

De grunnleggende ting som vi trenger er følgende:

En taktdeler (vår teller)

Dette gjør oss i stand til å sende data med en viss hastighet (overføringshastighet). Vår mottaker vil smake og ta data bit for bit.

En skiftregister

Vi trenger å vite hvor mange biter om gangen vi overfører, vil vår skiftregisteret har en start bit, databiter, paritetsbit (valgfritt), slutten litt.

En tilstandsdiagram

Før writting noen kode, må vi tenke på hva vi trenger for å lage og den beste måten er å skape en tilstand diagram av vår design. Vi vet for en sender vi trenger 2 stater, IDLE og overføring.

2 Hvordan lage en enkel seriell UART-sender i Verilog HDL

Etter å ha en tilstandsdiagram, nå kan vi beregne hva vår telleren vil være. Dette gjøres ved å bruke:

teller = FPGA klokkehastighet / overføringshastighet

I dette eksempelet bruker jeg en overføringshastighet på 9600, noe som gjør min teller = 5208.

3 Hvordan lage en enkel seriell UART-sender i Verilog HDL


Sist, beregner vi vår skiftregisteret og ferdig med å skrive vår stat maskin. I min eksempelkode bruker jeg en start bit, paritetsbit, 8 biter av data og slutten litt. Dette er 11 biter totalt.

Begge bildene i trinn 2 og 3 sammen i samme modul vårt senderkoden kreves for å programmere til FPGA. Denne koden vil fungere med en annen FPGA koblet i serie eller med vinduer Hyperterminal blant annet hardware. Kan være lett modifiserbare å jobbe med mye mer.

4 Sist, skaper vi en test av ligaen for å fikse eventuelle feil og simulere vårt program før du programmerer FPGA.

Dette avslutter senderen. Vennligst la kommentarer hvis du har spørsmål eller føler at det er noe som mangler her.

Hint

  • Både sender og mottaker må vite baud hastigheten som data blir sendt.