Série de protocolo de comunicação FPGA UART Vol1 | Ofer Keren | Skillshare

Velocidade de reprodução


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Série de protocolo de comunicação FPGA UART Vol1

teacher avatar Ofer Keren

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Assista a este curso e milhares de outros

Tenha acesso ilimitado a todos os cursos
Oferecidos por líderes do setor e profissionais do mercado
Os temas incluem ilustração, design, fotografia e muito mais

Aulas neste curso

    • 1.

      Apresentação

      1:00

    • 2.

      O que é UART

      7:03

    • 3.

      UART e sua camada física

      2:35

    • 4.

      Como é o pacote de dados UART

      10:29

    • 5.

      Como amostra do pacote de dados UART

      10:20

    • 6.

      Nosso projeto de estrutura UART

      25:48

    • 7.

      Transmissor UART

      15:39

    • 8.

      Receptor UART

      12:15

    • 9.

      Simulação de receptor

      18:21

    • 10.

      Simulação de transmissor

      16:05

    • 11.

      Palestra de bônus

      2:30

  • --
  • Nível iniciante
  • Nível intermediário
  • Nível avançado
  • Todos os níveis

Gerado pela comunidade

O nível é determinado pela opinião da maioria dos estudantes que avaliaram este curso. Mostramos a recomendação do professor até que sejam coletadas as respostas de pelo menos 5 estudantes.

43

Estudantes

--

Sobre este curso

Este curso foi feito por um engenheiro eletrônico profissional especializada em FPGA

Este curso é o primeiro em uma série de cursos sobre protocolos de comunicação.

Neste curso, você vai aprender tudo o que precisa saber sobre UART

  • Nenhum conhecimento prévio do protocolo de comunicações é necessário - vou ensinar tudo sobre comunicação em série e como prová-lo e sobre os problemas que podemos ter dentro do FPGA ao tentar provar um sinal do mundo exterior.

  • Você vai aprender como projetar uma UART - vou ensinar passo a passo sobre meu projeto UART e explicar como projetar melhor.

  • Vou passar pelos fundamentos da comunicação UART e explicar - vou ensinar o que é UART e sobre o protocolo UART, mais do que falar sobre a camada física do RS232.

  • Vou explicar meu código UART VHDL e até simular isso juntos - vamos simular o receptor e transmissor

No final deste curso, você vai ter seu próprio UART trabalhando em linguagem VHDL!!!

Neste curso, também vou ensinar sobre protocolos de comunicação em série em geral e como usar nosso relógio rápido para provar o sinal lento do mundo exterior.

Este curso foi feito para todos os níveis por um engenheiro eletrônico e de computador profissional. com uma enorme experiência com FPGAs de todas as empresas do mercado.

Conheça seu professor

Teacher Profile Image

Ofer Keren

Professor

Habilidades relacionadas

Design Design de UI/UX Prototipagem
Level: All Levels

Nota do curso

As expectativas foram atingidas?
    Superou!
  • 0%
  • Sim
  • 0%
  • Um pouco
  • 0%
  • Não
  • 0%

Por que fazer parte da Skillshare?

Faça cursos premiados Skillshare Original

Cada curso possui aulas curtas e projetos práticos

Sua assinatura apoia os professores da Skillshare

Aprenda em qualquer lugar

Faça cursos em qualquer lugar com o aplicativo da Skillshare. Assista no avião, no metrô ou em qualquer lugar que funcione melhor para você, por streaming ou download.

Transcrições

1. Introdução: Olá, bem-vindos ao meu curso de comunicação. Se você quiser aprender sobre sua transmissão de 0 e anote um código VHDL. E vou explicar-lhe sobre o meu design e tudo dentro deste documento sobre a camada física de um uart, sobre os pacotes e tudo o que você precisa saber para se comunicar com uart com o seu FPGA. Vou compartilhar com vocês meu projeto para o transceptor UR e vamos passar pelo seu transmissor e receptor. Nós também simularemos o design, é claro, e mostrarei tudo o que você precisa saber e explicarei sobre a comunicação serial. E especificamente neste curso sobre neurotransmissão, neste curso de três cursos sobre comunicações seriais. Então você é bem-vindo para participar do meu curso e começar a colocar em camadas de 0, como escrever em seu controlador de arte de 0. Então você é bem-vindo para participar do meu curso e começar a escrever seu URL, código VHDL, o formulário 0. 2. O que é UART: Olá, bem-vindo à próxima palestra. Nesta palestra vamos falar sobre o que é uma nova arte. Antes de começar, você tem este documento. Você pode baixá-lo. Ok. Escrevi aqui umas coisas, está bem? E se eu adicionar mais, eu vou apenas enviá-lo para esta palestra, ok, então você pode baixá-lo aqui mesmo. Ok, então vamos começar e você está no Transmissor Receptor Assíncrono Universal, ok? É uma comunicação em série, muito antiga. Agora, o protocolo é usado para trocar dados entre dois dispositivos, ok? Ele usou apenas dois fios, TX e RX para cada direção. E o que significa na verdade é que para enviar dados do receptor para o transmissor, na verdade, para fazê-los se comunicar uns com os outros, precisamos apenas de dois fios, um em cada direção. E uart é até transmissão full duplex. Isso significa que ele pode estar no modo simplex, o que na transmissão significa que um lado pode enviar dados para o outro lado. Ok? Meio-duplex. Só dois lados podem falar, mas apenas um de cada vez. E full-duplex significa isso. E isso o que você está suporta. Full-duplex significa que ambos os lados podem enviar dados ao mesmo tempo. Ok? Então, se você pensar em um uart, gays, ele se parece com esse cara. Vou abordar neste segundo caso. E o formato dos dados é um quadro, qual conjunto de regras? Falaremos sobre isso nas próximas palestras. Agora se, Se vamos falar sobre, se pensarmos sobre o UR para k, temos um turno liberado ela para transmitir os dados e temos um registro de turno para receber os dados. É por isso que, por que come uma transmissão full-duplex. Ok, e vamos dar uma olhada, ok, então é assim que ele está realmente conectado entre dois componentes. Novamente, se não estamos pensando agora sobre a ala FPGA, tudo bem. Temos dois componentes. Eles podem falar um com o outro em um caso Uart pórtico, comunicação serial. Ok, então aqui eu escrevi de novo um protocolo serial comum usado, ok? Principalmente foi usado em seu PC, em suas portas de comunicação, em modems RS232 e muito mais. Ok. Sim, já dissemos que é um ensaio de comunicação de chifres. Mas, portanto, está bem. O transmissor e o receptor não compartilham um relógio comum. Ok? E quando digo que eles não têm um relógio comum. Ok. Não significa que não tenham frequência. Ok. Então a frequência entre os estaleiros dos barcos precisa ser ajustada, ok, predefinida. Cada batida tem seu próprio tempo k. então precisamos saber qual é a fase de tempo bit. Falaremos sobre isso mais tarde. Ok? Agora a maioria da comunicação uart ou apenas usando um RX e TX sinais, às vezes vamos ver RTS e CTS embutido em seu chipset. E CTS significa claro para enviar. Um RTS significa pronto, pronto para enviar. E esses sinais são usados para controlar a própria transmissão. E isso só significa que às vezes você quer ter algum controle sobre o protocolo Uart, Gay. Então pense em duas peças, por exemplo, chip conectado a chip. Então, se você tiver o RTS e o CTS, você vai querer que você diga ao outro, eu estou pronto para enviar. Ok, então o que significa, na verdade, se tivermos um link barato, muito barato, certo? Ok, Então, se este uart quer dizer este URL para gays que ele está pronto para receber dados. Ele vai cêntimos, pronto para enviar, e este vai chegar lá claro para enviar gás. Então isso significa que a Rota do Mar dizendo ao outro uart estou pronto para receber dados. Ok. Então apenas controlador, não tão comumente usado Gay. Ok, neste curso, é claro que vamos conectar apenas os arcos aos carrapatos. Nesta é a comunicação mais comunista para hoje. Aqui podemos ver uma conexão regular entre dois computadores k. Agora, aqui é onde estamos chegando à camada física. A camada física estará na nossa até 32. E isso só significa que sua comunicação está bem, a tensão está sendo transmitida para um tipo de tensão diferente, ok? Então a comunicação Uart em si é apenas um protocolo para a comunicação, ok? Como o quadro se ajustou, como as frequências e os limites e tudo mais. Ele não inclui que tensões vamos usar um, como o, como os dados vão mudar de acordo com a nossa placa fechada onde mesmo esteve em. Ok, então se você quiser até 85 metros de cabo, por exemplo, você pode usar o RS-232, ok? Então, não é tão comumente usado para conectar dica muito barato direcionando link URL direto, ok? Principalmente ele vai passar por buffer de linha RS232 ou para um COM portas Gay. Ok. Estes são o ar comum sobre as taxas. Ok. As taxas de transmissão padrão serão entre esses números. Ok? Então é só, você pode ver que está pulando. Se você estiver familiarizado com esses números, você pode vê-lo em seu PC, em seus comports gays. Quando você está configurando a taxa de baud, às vezes k. você pode ver isso se você usou Arduino, ok, Por exemplo, você pode ver esses números. Eu acho que este é o mais comum usado em Arduino e estes 12, ok? Ok, e isso é para esta palestra, e eu vou ver na próxima palestra, e isso é por enquanto. E obrigado. 3. UART e sua camada física: Olá, bem-vindo à próxima palestra. Nesta palestra vamos falar sobre a camada física uart. Ok, então S para a UR, o York é na verdade um protocolo padrão para um protocolo para o protocolo de comunicação. E sobre a camada física. Não existe tal coisa. Camada física ou para o seu, ok , na verdade, isso significa que o, seu protocolo em si não inclui as tensões que precisam ser enviadas, ok? Significa que precisamos de amortecedores, está bem? Assim como te mostrei aqui , precisamos de amortecedores. Na verdade, conecte-se entre dois metros. Claro que podemos ligar ponta a ponta. Isso será TTL ou cmos, mas queremos usar para 32. E quanto ao protocolo aqui, tudo bem. Então, a fim de conectar a URL a um nove BC pente canino sido com, gays , por exemplo, temos que usar as setas para 32 buffer para converter as tensões para ser sinalização polar. Ok? Isso só significa que se vocês querem se conectar entre duas peças e você tem um tabuleiro, ok, que você criou. Você vai precisar usar algo como este caso, algum amortecedor como este, ok? E basta conectar o TX e RX do UR que vamos criar diretamente no conector EPC D19, que é realmente este conector. E aqui você pode ver que estes serão os sinais. Nós só vamos usar o RX dy e dx dy sendo 2 e 3. E, claro, vamos usar o solo, ok, e esta é a maneira que vamos conectá-lo ao pino 32 e ao solo. Ok? Então, se você estiver indo para criar seu próprio conselho, se você está entediado desenvolvedor. Ok? Isto é o que você deve usar. Claro, existem muitos outros componentes no mercado que estão convertendo entre a comunicação serial do uart, dois tipos diferentes de comunicações, como RS 485, ok, quatro a dois. E você pode usar o que quiser portão. E, na verdade, este é o fim para esta palestra. E verei você na próxima palestra e pensamento. 4. Como parece o pacote de dados UART: Olá, bem-vindo à próxima palestra. Nesta palestra vamos falar sobre o pacote de quintal. Ok, então quanto a New York Beckett, podemos ver que um pacote sendo construído a partir de uma batida inicial, ok? Cinco a nove bits de dados, 0 a um bit de parte e um a dois bits de parada. Estes vão ser o nosso jogo de dataframe. uso mais comum são sete batidas para números ASCII em oito bits, que é um byte. Uma coisa pequena sobre os números ASCII, ok? ASCII são os nossos números de teclado. Ok, então o nosso teclado, no nosso PC sendo representado por sete bits de dados, ok? Então cada tecla H que você está pressionando, por exemplo, 0 será uma caridade em hexadecimal, ok, será 7 bits de dados. Agora vamos falar sobre o pacote em si, ok? Ok, então as batidas de ações deram para o pacote que realmente reconhecendo o início de um pacote no receptor será 0. Ok? Então, toda vez que o receptor reconhece um 0, isso significa que o pacote, pacote vêm logo após ele. Ok? Agora, é claro, o receptor e o transmissor precisam saber, precisam estar no mesmo dataframe, ok? Então ele precisa saber quantos bits temos dentro dos dados. Ok, então ele não sabia quantos, muito simples. E então sabemos quando a festa vem, se há uma paródia ou não, quantas paragens temos. Tudo isso precisa ser exatamente o mesmo no receptor e no transmissor. Ok? Então o debate escuro, como dissemos, cinco a nove bits de dados e os bits de paridade, 0 ou um, bits de paridade. Agora vamos dizer que temos um bit de paridade. Vamos falar sobre os bits de paridade. O que significa, a parte da paridade, ok? Então, temos dois tipos de bits de paridade. Temos um par de bits de paridade e um bit de paridade ímpar. E isso só significa que em um bit de paridade par que o número de 1s deve ser par. Ok? Agora, quando estamos dizendo o número de um, isso significa que o dataframe mais a paridade precisa ser par, Ok, então o número de um no dataframe e o próprio partido precisa ser homossexual quando estamos falando de uma paridade estranha, Ok, claro, o número de 1s deve ser ímpar. E eu escrevi, ouviu isso? Se você quiser definir o seu bit de paridade quando você está enviando um quadro, por exemplo, você quer armazenar todas as contas e, e este será o seu partido, mas bater que você vai enviar. Se você vai calcular o XOR de todos os bits, você vai ver que você acabou de completar, bem como deveria para paridade uniforme. E para um bit de paridade ímpar, precisamos armazenar todas as batidas e inverter. Certo, o que temos. Então não é x4, pague todos os bits. Este será o valor dos bits de paridade. Agora vamos falar, vamos dar um exemplo. Ok, então vamos entender mais. Então, o exemplo de paridade, quando dizemos o número de uns, significa, ok, para todos os bits, incluindo os dados no grupo como eu disse. Então, por exemplo, temos esses dados, certo? Então, este será 36 em hexágono, 0, 0, 1, 1, 0, 1, 1, 0, ok? Aqui é 36. Agora, para paridade igual, o número de uns aqui já está igual, certo? Temos quatro, está bem? Então, já está quites. Então o bit de paridade será 0 porque queremos uma paridade par, você um número par de uns. Agora, para uma paridade ímpar, o número de uns é par e queremos uma parte ímpar, um número ímpar de 1s caso. Então o bit de paridade também será um, ok? E assim teremos um número ímpar de um gays no quadro. E agora, portanto, o valor do bit de paridade é sempre SAW ou não x4 dos bits de dados k. Assim, por exemplo, número par de 1s nos dará 0. Ok? Então vamos voltar aqui. Então, se você está explorando esses números, nós temos um número par de uns. Isso nos dará 0. Toda vez que você está indo para X4 0 com 0, você vai ter outro 0. Então, quando estamos resolvendo um número par de fundos terá 0. Ok? Assim, para paridade par, a paridade pode ser apenas XOR das batidas e XOR de número ímpar de 1s nos dará 1. Ok? Até agora o nosso exemplo para a pobreza mesmo só viu todos os bits e obter 0, e este será o nosso partido, ok, para paridade ímpar, vai AX4 as batidas e obter 0. Mas precisamos inverter o partido para ser um. Portanto, será só visto, está bem? E a resposta do valor da pobreza, que na verdade é uma, certo? Então a paridade, os bits de paridade em si k. Você precisa saber que ele só pode levar um ganho de bit de frota porque estamos explorando os dados. Agora podemos entendê-lo. Somente se um bit for invertido, k ele pode ser detectado. Agora pense sobre isso. Por quê? Por que dissemos apenas um pouco virado? Porque estamos, por exemplo, aqui estamos explorando e temos um número par de 1s se duas batidas foram invertidas, por exemplo, essas duas, por exemplo, Ok? Diremos que o partido é a mesma paridade, então não podemos reconhecê-lo, certo? Agora, se apenas um aqui acabou de virar, vamos começar do XOR aqui 0. Agora, isso só significa que o receptor, quando o receptor recebe os dados, ele precisa armazenar todos os bits, ok? E para compará-lo com o partido, é claro, se é um evento, ele vai XSOAR, se é estranho, ele vai exercer um invertido e então comparar. Ok? Então o que vamos fazer com os dados, vamos armazenar todos os bits, ok? E, na verdade, basta verificar com a festa. Agora, é assim que a transmissão em si se parece. Isto é uma transmissão num fio, está bem? Então, toda vez que está ocioso, não temos nada para transmitir. A linha será uma, ok, ou alta, ou cinco volts ou qualquer área física que vai usar. E quando temos 0, é a parte inicial, ok? Logo depois disso, temos a primeira parte até a última parte, vai ser de cinco a nove, ok? E começando com ALS bit primeiro. E é claro, isso é o que eu quis dizer quando eu disse antes que nós estamos bem, que nós temos tempo. Ok, então este é o momento dos bits, ok? É um dividido pela taxa de transmissão, ok? Por exemplo, 9.600. E aqui não temos paridade, está bem? Se tivéssemos a prioridade, seria como uma outra batida aqui. E depois disso temos uma parada. E pare. Só significa que vamos a um, está bem? De volta a qualquer um deles. Ok, então neste curso, nós vamos fazer isso. Você está transmitindo sem pobreza quando um, com uma parada, um bits de início e oito bits de dados. E, claro, nós vamos passar, este será este código, ok? Certo, isso eu escrevi. Vamos passar por este código. Este é o transmissor, o receptor. Ok? E quanto a outro código, ok, com a paridade, com coisas mais genéricas, ok, aqui você pode ver que eu só tenho constantes aqui. E aqui, tenho outro guia de código que escrevi. Eu tenho a opção de genérico, ok? Agora, genérico significa que você pode, você pode escolher, você pode escolher seu tipo de festa, par ou estranho. Se você tem ou não tem paridade. Número de tópicos, K, 012, ok. Isso pode ser, você pode mudar de cinco para 15, embora precise ser um cinco para nove, ok? E número de bytes. Você pode enviar pacotes depois de pacotes de dados, ok? Então você pode enviar, você pode transmitir muitos, muitos, muitos de dados um após um. Ok? Ok, e este código pode ser encontrado na última palestra. Vou adicioná-lo. Você pode ter todos os desafios. Você pode chegar lá. E vamos passar por este código simples, ok, na próxima palestra que está por vir. E é isso por enquanto, gays. E eu vou te ver na próxima palestra e depois Q 5. Como provar o pacote de dados UART: Olá, bem-vindo à próxima palestra. Nesta palestra, vamos falar sobre como simplificar a transmissão uart. Primeiro, tudo o que vou dizer é sobre montar a neurotransmissão e todas as comunicações. Transmissão. Está bem. O metal é o mesmo. Agora, se você assistiu meu curso VHDL, eu falo sobre como simples dados que vêm do mundo exterior. Está bem? Se não, ficarei feliz por você se juntar ao meu curso VHDL. Ok, agora vamos começar e pensar sobre isso. Primeiro de tudo, temos uma transmissão entre dois gays de York ou FPGAs para, ou de um meu FPGA para um PC, ou do meu FPGA para outro URL para K. Então podemos pensar sobre é que temos o cara uart bem aqui. Será que os carrapatos vão para o RX e vice-versa. Está bem. Isso seria como, Desculpe, enviar o RX e submetido takes, sim. Agora, quando estamos enviando dados para o uart, por exemplo, precisamos amostras com um relógio, ok? Então este é, por exemplo, este é o uart e nós temos aqui um relógio rápido, ok? No nosso projecto vou usar 25 megahertz, está bem? Porque nosso FPGA pode usar um relógio muito rápido, e precisamos de um relógio mais rápido. Em seguida, a transmissão em si. A transmissão em si, como dissemos, tem uma taxa de transmissão muito baixa, em torno de centenas de hertz a 100 milhares de células ciliadas. Está bem? Então a taxa limite é muito baixa. Está bem? Isso, sua transmissão é muito baixa sobre direitos, gays. É, é, é um protocolo de comunicação lento rápido. Agora, para simples em seu k direito, precisamos pensar sobre o mundo exterior, ok, o que aconteceu com o sinal lá fora? Está bem? Agora, o sinal pode ser algo assim. Como você pensa sobre isso, geralmente vai dizer que é essencialmente apenas olhar algo como isso, ok, subindo, descendo. Mas, na realidade, este não é o caso, está bem? Então isso é errado pensar como este K, seu sinal está sempre parecido com este caso. Então, há um tempo crescente, ok? Na maioria das vezes, o tempo de queda será mais rápido. Está bem. E novamente, dois está surgindo tempo e um tempo de queda. E a coisa é que eu, se eu vou provar este aqui é homossexual, por exemplo, sobre um verdadeiro você é homossexual. Então todos os dias você vai ficar ocioso e então em algum lugar no momento ele vai cair para 0, k. Então este seria o nosso começo, ok, Começando bit. E então ele vai subir. Por exemplo, este é o caso de dados pode subir, ele vai ficar baixo. Está bem? E vamos dizer um pouco togolês, ok? Então eu posso dizer que este não é um 012 e assim por diante. Até chegarmos à parada, esta será a parada. Este será o começo. E o que está acontecendo aqui é que eu estou provando k. então cada vez que eu estou amostrando os dados, ok, com este relógio rápido. E eu quero ver quando eu vou começar este primeiro começo, ok? Agora o que eu quero fazer em um, em um par de URLs no mercado. Está bem? Vamos trabalhar de forma muito fácil de entender. Você é, tudo bem. E vou explicar-lhe o passo a passo para reconhecer este 0. Por exemplo, se temos um relógio rápido, eu vou primeiro muitas, muitas vezes k. Agora, por exemplo, se eu, se eu amostrado aqui, em algum lugar aqui, eu não sei se é 0 ou um. Está bem? E por aqui serão apenas zeros, está bem? Toda vez que eu vou provar o FPGA, nós o reconhecemos como um 0. E bem aqui, eu não sei, é nesta área. Eu realmente não sei se vai ser 0 ou 1, ok? Agora, outra coisa que pode acontecer também é que o sinal vai ser assim. Está bem? Ou mais assim, está bem? E na maioria das vezes aconteceu com a borda ascendente, você vai ver E pode ver algo assim. Ok, então se você vai olhar para o escopo, e isso está acontecendo quando você está recebendo de volta, ok. Dados na linha de transmissão. Está bem? Isto, isto é algo com uma linha de transmissão. Então, novamente, se você fizer uma amostra aqui, isso pode realmente destruir tudo o que fazemos. Primeiro, queremos fazer, sabemos disso, sabemos a taxa de transmissão desse cara. Então a primeira coisa que você pode fazer, se você provar o primeiro 0, você sabe que se você vai contar, ok. Tchau, ok, tchau o limite para você pode dizer o quanto você precisa contar. Você sabe, nós estamos, nós estamos onde para onde provar aqui mesmo. Está bem. Então você sabe como provar aqui se tiver um contador, certo? Digamos que eu reconheça o primeiro 0 aqui, certo? Então eu posso definir um contador e então eu vou simplesmente escrever aqui. E então eu vou ter novamente o mesmo contador e simples aqui. Está bem? Então é por isso que ambos os EUA precisam saber o mesmo limite, certo? Está bem? Então eles saberão a hora de cada batida, certo? Para que eles possam saber o tempo livre todo. Um método diferente para isso. E não é sobre isso não é sobre um temporizador. É sobre quando iniciar o temporizador. Se quisermos livrar-nos destas coisas, está bem? Se não quisermos, não queremos começar por aqui, está bem? Isto vai ser mau para nós. Então aqui podemos reconhecer 0. E se começarmos aqui, o balcão, vamos continuar e simples branco aqui. Então podemos simplesmente 0 em vez de um simples. Está bem? Então o que queremos fazer, e isso será apenas no meu pro uart k. o que eu vou fazer, e este é um truque que fazemos todas as vezes. Está bem? Podemos ter um registo. Está bem? Vou usar o registrador ou 4 bits. Desde que este registo B, k, melhor o seu reconhecimento dos dados. Mas você também precisa lembrar que, se o relógio não é tão rápido, você precisa, você precisa colocar um registro menor, ok? Porque se você estiver montando apenas duas vezes, você pode colocar o registro de 4 bits. Será, será simples aqui, aqui. E então nós fazemos simples esses dois. Ok, então se nós temos realmente relógio rápido que amostragem muitas vezes maio, digamos 100 vezes aqui. Então estamos bem com os quatro bits. Agora, o que é que ele faz? É que vamos dizer que se este vetor vai ser todos zeros ou todos uns, ok? Vamos definir, vamos, podemos dizer que a batida é 0 ou um. Por exemplo, o que aconteceu aqui? Se tivermos isto, se vamos usar isto, está bem? Então, se vamos usar isso, e estamos bem aqui, ok, Este é um bom exemplo aqui. Então estamos, se vamos ter quatro vezes que estamos nos reunindo. E nós realmente queremos provar este aqui, ok? Então teremos, por exemplo, como um só. E então ele reconhecerá 0, 1, 1, 1, 1, 0, 1, 1. E eu não posso, não posso dizer que eu estou em, você sabe, em um logotipo único. Está bem. Não posso dizer que consegui o que queria. Está bem. Agora, desde que este registo fique bem, teremos mais amostras. Se tivermos mais amostras, podemos reconhecer mais deste espaço que temos aqui. Um problema, está bem? Queremos que isto seja um Guan Gei longo, mas não queremos que seja muito longo, está bem? E você também precisa pensar, estamos falando de FPGAs, ok? Então, em FPGAs, se você fizer um registro realmente grande, você só vai levar muitas cargas e você não quer, você não quer que seu uart se torne, você sabe, um grande ok. Design porque você está ao lado de ser um leve e barato. Está bem. Quando estamos falando sobre o espaço e o tempo que você está colocando em seu, você está projetando. Ok. E esta é a verdade para esta palestra. E vejo-te na próxima palestra. 6. O design de estrutura UART: Olá, bem-vindo à próxima palestra. Nesta palestra eu vou falar sobre o nosso design estruturado uart. Ok, então primeiro de tudo, cada Uart consiste em receptor e transmissor. E aqui temos o nosso reset e o relógio. Ok? Então toda vez que você está criando um componente ou qualquer outra coisa, ele teria sido um reset e um relógio. Ok. E estou chamando este Uart de transceptor, que é transmissor, receptor. Ok? Então nós temos as duas coisas em nosso quintal, ok, queremos que ele envie dados e receba dados. Agora, porque eu te disse que vamos fazer algum design realmente fácil, GA4GH você é, ok só para você entender o método. Mais tarde, você poderá mudar nosso design para o que precisar. Você pode adicionar mais estado nas máquinas de estado, por exemplo, se você quiser provar a prioridade também, ok? Ou você pode ir para a última palestra e encontrar meu outro design, ok, que é um design mais complicado por um ano ou dois. E você terá lá todos os genéricos que eu disse nas palestras anteriores. O que podemos ver aqui no transceptor? Vamos começar com o transmissor, ok, nas próximas palestras, vamos falar primeiro no transmissor e mais tarde no receptor. Então, como você pode ver aqui do transceptor ao lado do relógio reset n, ok, aqui mesmo neste transmissor, nós temos a entrada de dados, ok? Então, todos os dados foram introduzidos simultaneamente, ok? Então vai ser uma entrada paralela com oito bits, ok? E nós temos a entrada de dados certa, que está habilitando na verdade o certo. Ok, então toda vez que eu estou, eu vou apenas definir os dados e, em seguida, afirmar os dados certos dentro Ok? E nós teremos, você sabe, a transmissão nesta saída serial, ok? E claro que teremos os ovos prontos. Então estes no pronto é apenas um bom de ter visto. Ok, eu não vou usá-lo no mundo exterior. E você vai vê-lo nas simulações. Ok? Agora sobre o r x terá uma entrada serial do Ártico, ok? E eles lêem a saída, ok, então sobre o 3D lá fora, apenas vá em frente e eu vou apagar isso. Certo, então aqui você pode ver todos os sinais, o que eles realmente fazem. Ok, então toda vez que temos novos dados, ok, este é o dado antigo em novos dados, ok, na saída D, ok? E você dados paralelos do receptor, ok? Eles não estão fora. Novo, será afirmado para 11 relógio, ok? E os dados para fora onde o será afirmado todo seu tempo até que vamos afirmar a leitura para fora. Ok. Quando nós, quando vamos afirmar a leitura na próxima borda ascendente, o exteriormente será o afirmado. Agora, isso acontece porque não sabíamos se alguém aqui estava realmente nos dados. Então, se você está lendo muito de você terá que redefinir o 3D fora, ok? Se não, você não está realmente nos dados. Toda vez que novos dados estão chegando, esses pools saltarão. Este vai ficar afirmado até que você vai ler esses dados e o afirmado, este o exterior pronto. Ok? Isto é um exagero para o nosso receptor, está bem? E você pode usar esses bits. Não é uma coisa de massa para se fazer. Você pode apenas olhar no Delta nu, ver quando há novos dados e lê-lo. Agora porque estamos usando FPGAs e não é uma CPU. Ok, então você não vai, você não, você não está sempre tendo qualquer outro processo para fazer. Então. Não é como uma CPU, porque estamos trabalhando de forma paralela. Mas às vezes até mesmo no FPGA, o FPGA, algo atrás no backend ainda não está pronto, ok, Então você tem todos os sinais. Podes usá-los, está bem? Agora, quero começar com o transmissor. Ok? Assim, o transmissor será muito mais fácil de entender. Ok? Então você verá dentro deste documento que temos os blocos do transmissor, gays, e agora tudo está conectado. Ok, isso é o que você vai ver dentro do código. Vamos passar por isso nas próximas palestras. E aqui você terá realmente a máquina de estado transmissor, ok? Ok, e mais dessas constantes, ok, então nós vamos usar essas constantes, ok, vai ser 2500 hertz. Ok? Estas taxas de transmissão, ok. 115200. E você terá essa contagem T1. Ok? Vou explicar isso em um segundo. Ok. Vamos ao vapor antes mesmo de irmos ao lado do receptor e explicarmos sobre isso. Agora bem aqui você pode ver que temos os dados dentro. Temos todas as entradas e saídas que vimos bem aqui no transmissor. Ok? Então nós temos o relógio e os riscos, é claro, que vêm em cada dois, cada componente na verdade e escrever dados e nós temos os dados dentro e escrever dados dentro. Ok, então bem aqui nós vamos, você sabe, esta afirmação todas as oito batidas da entrada de dados. E temos um registo de turnos. E o registro de turno realmente deslocando os dados do LSB para o MSB. Ok? Então, se você quiser mudar esses pequenos NDM para começar o fim, você pode alterar os dados em, no código para ser sete e então você vai ficar bem. Ok, então não se esqueça, claro, mudar a forma de registro de turno. Certo, então está mudando para um sentido. Você quer começar a mudar para o outro lado. Ok, então desta forma nós vamos habilitar os dados certos. E como você pode ver, nós temos um portão final aqui, então a máquina de estado realmente controlando a transmissão, ok, Então ele vai controlar quando estamos ativando esta extremidade configurando Habilitar carga um. E, na verdade, ele nos dirá que a transmissão está pronta. Além disso, temos todos esses sinais de controle para controlar esse flip-flop para a transmissão. Ok? Agora, outra coisa que temos aqui é este temporizador, ok? Agora, este erro de tempo, eu preciso explicar seus corpos ou assim que nós temos, você lembra que eu te disse nas palestras anteriores. Temos cada batida tem seu próprio tempo. Ok? Então, aqui você verá que T1 contagem igual a 217. Agora, qual é esse número? Ok, eu quero ir para este número. Explicar-te isto. Certo, como escrevi ali, estamos trabalhando em 25 megahertz. Ok? Este é o nosso relógio, está bem? E sobre a taxa da transmissão em si vai ser esta, ok? Isso é claro com Hertz, certo? Assim, o contador T1 será igual ao relógio k dividido pelo curvado. Espere. Ok, o que isso nos dá? Ok, então vamos pensar que temos a nossa taxa curvada, ok? Por exemplo, este é o nosso relógio lento, ok? O uart mudando a fase do tempo. Ok, então nós não temos um relógio, mas em todos os Ok. Desculpe, em todo esse tempo. Ok. Vamos chamá-lo de t curvado. Toda essa quantidade de tempo, nós temos os dados mudando, ok? Então não temos esse relógio no sistema real. Mas aqui vamos ver essa transmissão. Então, por exemplo, estamos ociosos e então temos a parte inicial, ok? E então vamos dizer que eu estou indo para 11 K, por exemplo, 0. Ok? Desculpe. E isto vai ser assim. Então este é o momento certo, certo? Esta é a hora do dia. Esta é uma batida. Esta é a parte inicial. Estes são os dados 0 e que U1 e assim por diante. Ok? Este é o item k e eu disse que seria um, ok? Agora, se formos amostras com este manto, está bem? Agora este bloco vai ser muito rápido. A, digamos assim. Vai ser assim muito, muito rápido, muito rápido. Certo, até mais do que isso. Ok, então nós estamos montando um monte de tempo k. Agora, digamos que aqui neste lugar, porque eu disse a você que os dados realmente não se parecem com isso. Ok? Assim, os dados podem ser assim, por exemplo. Ok? O Sul, os dados vão olhar na palavra real, ok? Vamos dizer que está bem, isso, vamos dizer isso aqui. Ok, vamos apagar este. Ok. Vamos dizer isso. Certo neste momento, Ok, eu encontrei a minha batida inicial um encontrou o meu 0. Ok? Eu quero esperar. Ok. Quero pesar esta quantidade de tempo, está bem? Por exemplo, eu quero ponderar essa quantidade de tempo porque eu posso dizer isso nessa quantidade de tempo. Ok. Vou chamá-lo de T um, está bem? Estarei no lugar certo, certo? Para simples o D, está bem? E se eu esperar novamente, T1 estará exatamente no lugar certo para simples D1, ok? Só porque reconheço o 0 aqui. Agora este é o capuz Met deste código, ok? E como eu disse no código da próxima palestra, na última palestra, desculpe. Eu vou ter lá não só um simples, eu vou provar 4 vezes k. Então cada vez que eu sou simples em quatro vezes, eu vou esperar e então eu vou simples novamente quatro vezes, ok? Então não posso contar com essa diferença entre as batidas. Então aqui eu estou apenas, eu estou contando com essa lacuna entre as partes. Agora isso nos dará 217. Isso significa que eu vou simples aqui para um 117 vezes, ok? E eu vou ter um relógio na verdade que contando dois para um 117 e quando eu estiver chegando ao 217, ok, eu sei que eu cheguei a este ponto. Ok? Então este é o método de dividir aqui. Claro, se você quiser, Evan relógio diferente ou uma taxa de baud diferente, este número será diferente. Ok? Agora vamos voltar aqui. Então isto é sobre este temporizador, ok, então é simples. Em cada vez que as batidas são, mostramos isso aqui na máquina do estado em um segundo. Ok? Ok, e aqui temos a contagem d, ok, que a contagem está ajustada para sete. Mudar os dados está nos dizendo quantos dados sobraram. E isto está definido para sete, mas temos oito bits K. Não se esqueça. Agora, se você precisar das nove batidas, é claro, você precisa colocar o seu oito, ok? Então é apenas o número de bits que você quer mudar um menos 1, ok? Este seria o valor deste k no código. Ok, então vamos falar sobre a máquina do estado do transmissor. Ok? Então aqui começamos com o ocioso, certo? E bem aqui no lado direito você verá que este é o gatilho e abaixo aqui, este é o real, ok, então em ocioso, escreva entrada de dados. Quando quisermos escrever dados, precisamos definir como um, certo? Toda vez que é 0, vamos ficar aqui, certo? Porque 0 e está invertido, vai ser um. E quando y dot.me que queremos escrever um dado, ok? Aqui estamos enviando a parte inicial, ok? Depois de enviar o bit de início, temos que esperar T1, ok, Como eu disse, estamos esperando uma lacuna de batida, ok? E depois disso, quando chegarmos ao T1, vamos limpar este temporizador T1 e voltar e enviar os dados. Ok, então aqui, este círculo, apenas enviando os dados, esperando um intervalo de batida, ok, esperando por T1 e mudando os dados. Novamente, enviando os dados e mudando, mudando para a conta, desculpe, estamos mudando o desconto de contagem, ok, Então estamos contando quantos bits nós realmente enviamos. Ok? E isso vai continuar até chegarmos aqui no 7. E isso é, precisa chegar a sete porque quando temos o estado, nós já enviamos um dado, então é um mais sete é oito bits, ok, como eu disse aqui, sete, mas na verdade está enviando oito bits. E aqui mesmo no final de nós estamos terminando a contagem. Ok? Eoc, é fim da contagem. E nós estamos enviando o bit de parada esperando por T1, ok, Então nós vamos ter uma largura bit stop com um trigo T01, ok. E, em seguida, novamente para ocioso e redefinir todas as coisas que precisamos para redefinir. Ok, este é o transmissor. Agora, claro que este é o, este é o cálculo do 217. Ok, agora vamos falar sobre o receptor. Ok, então o receptor, nós vamos receber os dados do mundo exterior. Não sabemos de onde veio, então queremos sincronizar os dados. Ok. Novamente. Este é um sincronizador muito simples. Ok, no nosso, dentro, no código que eu te disse que é mais para especialistas. Vou sincronizar quatro batidas. Então vai ser quatro chinelos D. Gay e eu vamos verificar este registro que é igual a todos os zeros ou uns. Ok, então é uma melhor sincronização. Agora você também pode adicioná-lo a este código aqui. Ok? Não é um problema sincronizar com mais chinelos D, ok? Agora, aqui temos a máquina do estado. E parece tudo igual, está bem? Como o transmissor. Ok, então nós realmente estamos recebendo os dados aqui mesmo no registro de turno, ok? Então, toda vez que recebermos daqui a pouco, vamos salvá-lo bem aqui, está bem? E quando terminarmos, vamos colocar tudo lá fora. Guy, todos os oito bits para os dados. E é claro que temos aqui o turno habilitar. Nós vamos mudar cada vez que T1 vai nos dizer para mudar. Veremos isso mais tarde. E Y2 temos outra equipa que ligou para o T 2, está bem? E eu vou mostrar-lhe isso na máquina do estado e vamos falar sobre isso. Ok? Vamos ver a máquina do estado. Isso deixa tudo mais claro. Ok? Ok, então o T2 realmente tem k. Isso vai fazer a sincronização mais fina, ok, se eu posso dizer isso. Agora olha para isto. Vamos ficar ociosos quando recebermos um pouco de início. Ok, nós vamos esperar t2, ok. Vamos esperar o tempo T2. Eu vou te dizer exatamente o que é T2 em um segundo, ok? Então temos a verificação inicial, que vai ser onde estamos verificando que ainda estamos no início. Ok? Nós ainda temos 0, ok, então nós verificamos duas vezes, um aqui, um aqui. Nós também ponderamos o tempo T2, ok? E então vamos pesar os dados. Ok? Então, na verdade, verificando aqui, vai apenas o peso dos dados aqui, desculpe, o peso dos dados aqui está esperando t1. Agora, o que aconteceu aqui? Ok? Então eu disse a vocês um segundo atrás que se eu tiver esses dados que entram, desculpe, que vêm assim, ok, este é o bit de início, ok, por exemplo, vamos dizer que esses são meus dados de alguma forma e então ele vai querer, ok, então certo Aqui está a parte inicial. Salmo vai verificar se isso vai ser 0 e, em seguida, espera T2, T2. Este é o valor do T 2, ok? O valor de t2 é metade de T1, ok? Agora, o que isso significa? Significa que vou esperar. Ok, em vez de esperar, ok, então isso vai ser T1, por exemplo. Na verdade, este vai ser t1 é o tempo de uma batida. Ok? Então, em vez de esperar daqui até aqui, ok? Quero estar mais no meio, então vou esperar metade da batida em algum lugar aqui. Ok, então isso é como metade da batida. Este vai ser o “t dois”. E a partir daqui começar a saltar d1 toda vez. Ok? Então eu vou provar aqui, simples aqui, Symbian aqui. Agora os dados na vida real se parecem com isso, é, você realmente não sabe onde está o 0, onde está D1? Ok? Você só, eu posso te dizer se eu poderia colocar um marcador em T1. Então isso vai ser T1. Por exemplo. Isto vai ser outra vez, o tal. Ok? Então, se eu estou esperando aqui, metade das batidas, ok, eu estou roubando lado as partes iniciais. Desculpe, a parte inicial. E então eu vou esperar T1. Ok? Então há algo que você precisa saber sobre amostragem, ok? E sobre algumas organizações e outras coisas. Estou a falar da cena, o meu VHDL aprende desde o início do curso, está bem? Então, digamos que temos um sinal do mundo exterior. Ok? Na eletrônica há algo chamado o porão. Desculpe, o, você verá estes na folha de dados. O T segura na configuração, ok, set, ok. Então o que queremos fazer, certo, de um lado, vai ser o Salão T. Ok. Isto vai ser os Ts estão na armadilha. Ok. E então você terá o T. Hall. Agora, na maioria das vezes que a configuração, as folhas de dados de todos os componentes desconhecidos irão dizer-lhe que você precisa esperar muito tempo na configuração do tee. E então o todo realmente não importa. Vai ser por aí, mesmo por volta de 0. Ok? Então você precisa simplesmente perder em algum lugar aqui, ok? Agora isso é apenas devido ao fato de que ok, sinais estão ficando loucos no início, ok? Eles podem ser assim. Ok? Na maioria das vezes eles estão parecidos com isso. E o vento vai mudar, ok? A queda vai ser muito suave e se parece com isso. Ok, desculpe, mais, mais ainda assim. Ok? Então o seguinte vai ser muito rápido, ok? Mas o tempo de ascensão vai ser uma loucura. Então você tem problemas simples aqui. Você sempre vai querer provar por aqui, ok? Isto é como uma zona segura para simples. Ok? Então aqui, se reconhecermos o começo aqui, e então estamos ponderando T2, T2 gays, por exemplo. Nós vamos estar em algum lugar antes do final da batida, ok? Porque coisa que nós provamos k em algum lugar aqui. E então estamos ponderando T2 tempo k, É metade de T1, T2. E depois vamos provar bem aqui. Então nós somos como em torno dessas zonas seguras. Agora, por que eu não, eu acho que esta dessincronização a é menos melhor. Ok. Então os especialistas em Oseias, ok, quando você está contando com o registro por causa disso, ok. Isto não leva em conta neste design, está bem? Agora, se você é um bom designer de conselho ou você sabe, você quer ter esse problema, ok? Mas, por exemplo, se você tem esse problema, ok, e você amostrou, ok, seu, Digamos que você precisa simples esses zeros, por exemplo, ou qualquer outra coisa. Digamos que você tenha o simples Dwight aqui, certo? Digamos que você tem um simples, ok, este vai ser um. Então eu provei bem aqui, eu estou dizendo, oh, ótimo, eu tenho um, mas você tem aqui, você acabou de começar. Ok, só, foi apenas um delta pulando aqui. Então daqui até aqui você terá T2 e então você não está tanto na zona segura, ok, Então é menos melhor, mas é fazer o trabalho. Ok. Então não temos nenhum problema com isso. Ok? Então, bem aqui depois de verificarmos o início, ok, estamos esperando por dados aqui, este recebendo os dados. Ok? Estamos recebendo os dados toda vez aqui. Gay, e claro, uma mudança nele. Ok. Então você pode vê-lo bem aqui. Estamos apenas recebendo os dados e o turno habilitado, apenas mudando os dados, ok? Quando terminarmos a contagem bem, dos dados, vamos parar. Certo, para esperar um pouco de parada. Agora, se você quer um pouco de paridade, é aqui que você precisa colocar o estado, ok? Mesmo entre esperar por um caminho de parada, você precisa esperar por um pouco de paridade. E antes de fazer, antes mesmo de saltarmos aqui, você terá cada vez que estar aqui dois XOR todos os bits e, em seguida, compará-lo. Ok? Então aqui vamos direto para a parte da parada, ok, nós não temos um pouco de pobreza. Certo, então vamos parar e checar. Se o bit de parada for válido. Vou até lá fora. Se não for, estou quebrando. Ok. E esta é a máquina do estado do receptor. Você verá isso no meu código. Vamos ver o meu código nas próximas palestras. Ok? E isto é por enquanto. Está bem, vemo-nos na próxima palestra e obrigado. 7. Transmissor UART: Olá, bem-vindo à próxima palestra. Nesta palestra, vamos falar sobre o transmissor. Certo, primeiro, fiz o upload do código, ir a essa palestra. E como eu disse, se você quer o código profissional, como eu disse em uma palestra anterior, vá para a última palestra. Ok? Você pode ver, você pode ver lá dentro, ok, você pode ir e assinar e obter o código completo do código profissional. Ok? Então vamos falar sobre este código fácil, ok? Então pode ser mais fácil para você entender o método, ok? Ok, então nós vamos realmente criar este design, ok, então eu, eu criei este design bem aqui dentro deste código. E como você pode ver aqui na entidade, nós temos todas as entradas e saídas como aqui, ok? Esse é o e1, que é oito bits, ok? Se você quiser que ele seja maior ou menor, você pode mudar este. Como eu disse que já falamos sobre isso. Você vai vê-lo aqui mesmo no código. Ok? Aqui você pode ver o componente aqui. Você está no nosso X. Então este é o receptor. Ok? Só o usei para simular o portão do transmissor. Então ignore a TI, cara, você pode realmente ignorá-la. Neste momento, nesta palestra. E quando simularmos o transmissor, usaremos o receptor para simular o transmissor, certo? Ok, então a próxima coisa que você vai ver no código é um distinto, nós já conversamos sobre isso, este relógio de hora. Este relógio precisa vir do mundo exterior. Ok? Então, seu FPGA, recebemos esta porta de relógio aqui como seu relógio do sistema, certo? E esta vai ser a nossa taxa de rejeição, está bem? Agora, toda essa URL, você vai ver que vamos usar um cara do relógio que vem aqui do mundo exterior com um reset n, ok? Agora este relógio do mundo exterior vai ser o 25 megahertz. Este limite, este é o limite que estamos prestes a usar. Agora, se você tem um relógio diferente e um limite diferente que você quer, como 9.600, você pode apenas mudar, mudá-lo aqui. Estes vão ser todos os sinais, e esta vai ser a máquina do estado. Agora esta máquina de estado é exatamente a máquina de estado aqui. Certo, vamos ver os nomes. Ok, então nós temos o ocioso, os dados certos no início. Este é o início areia, na verdade deu claro CLR cronômetro é o temporizador claro. Ok. Enviar dados está certo, certo. Dean Data, tudo bem. Aqui temos o irritante da contagem de turnos C. E a parada certa do Dean é o sentido. Ok. Então estes vão estar indo máquina de estado RB. Agora note que para a máquina de estado temos 22 sinais que estão levando este tipo de máquina de estado o dia. Então temos o estado atual e o próximo estado. E aqui quero ignorar isto, está bem? Então tudo isso, todas essas linhas serão para o receptor uart, dentro do transmissor. E aqui, eu tenho esse processo, ok, que na verdade é o que ele está fazendo todo relógio, ok? Você apenas carregando o próximo estado para o estado atual. Ok? Então, se você der uma olhada aqui, você verá que este processo não é um processo cronometrado, ok? Então ele não tem nenhum relógio dentro dele, ok, e não o portão de reinicialização. Então, toda vez que estamos entrando nesse processo, você só precisa entender que todas essas linhas Suite vai acontecer. Ok? A menos que tenhamos entrado neste estado, em qualquer um destes casos, qualquer um destes. Ok. Então o último é o que levou em conta. Então, o que quero dizer? Ok, então, por exemplo, se nós temos aqui, eles ativam a contagem e é 0, ok? Mas digamos que o estado atual vai ficar bem aqui, a contagem de turnos, ok? Então eles permitem a contagem. Gay será um. Ok. Então este vai ser o último a ser levado em conta, ok? Porque vem depois disso. Ok. Então, se você já viu meu VGA aprender desde o início curso homossexual, Eu lhe disse que se você está escrevendo duas linhas como. Um após um. Ok. Este será levado em conta bem. Porque está vindo depois. Ok. Então isso eu sei que você precisa notar o vapor bom. Então, bem aqui dentro do estado atual, vamos dar uma olhada lá dentro rapidamente. Ok? Então, no ídolo. E dê uma olhada aqui. Ok, então no ocioso, eu te disse que este é o gatilho, esta é a ação. Ok, então o gatilho para passar de ocioso para o próximo estado estará certo. Dados em, ok? Então escreva que n é 0. Vamos ficar ociosos. Se for um, vamos para o próximo estado. Ok? E então o que aconteceu no próximo relógio? Ok, o próximo estado está carregando o estado atual, ok? E bem aqui dentro do qui-quadrado olhando para o estado atual, ok. E quando ele está carregando no próximo relógio, o estado atual, estamos entrando no processo k. Agora, esta é uma maneira de escrever um processo com a máquina de estado. Tenho tantas maneiras diferentes de escrever. Faça o que achar, mais fácil e certo para entender, certo? Ok, então aqui eu tenho esses três Ok. Estes três sinais ok, que eu defini-los como, como eu atirar. Ok? Então eu quero limpar a contagem de dados. Eu quero habilitar a carga e que leva pronto é 0 porque nós não temos nenhum dado que nós enviamos agora. Ok, agora quando estamos começando em enviar o início, nós dissemos no dy DX, pronto? Ok? Estes, vamos dar uma olhada aqui. Ok? Então este TE, apenas ativando o temporizador. Ok. Então habilitando o temporizador. Então saberemos quando, sabe, quando enviar o próximo cara. A próxima aqui, a próxima parte. Ok? E dê uma olhada. Então, fora desse processo, nós temos esse processo, ok. Então esta é a era do tempo da conta T. Ok? Então quando, quando estivermos, quando estivermos ativando o temporizador, ok? Isto, a contagem irá contar até que seja igual a esta conta T. E a contagem D1 é 217 para estes 25 megahertz. E a taxa de transmissão que escolhemos. Sempre que não for igual a 217, ele continuará subindo. Ok, quando, quando for igual a ele, ele vai parar, ok? Agora, aqui mesmo. Ok? Se a contagem for igual à contagem, ok? Então, se a contagem de um, se desculpe, t é igual a 217, vamos ter um portão um para o outro. Será 0. Então vamos ver o que T1 está fazendo aqui. Então T1, sempre que for 0, vamos ficar aqui mesmo. Certo, sempre que T1 for um, vamos limpar o temporizador. Então você apenas faz este processo aqui, desculpe, este estado aqui, apenas limpando o temporizador e vai enviar os dados imediatamente. Ok? Então ficou lá apenas um relógio de 25 megahertz. É realmente uma pequena quantidade de tempo comparando com a taxa de transmissão, ok, então você nem vai notar isso, ok? Quando você está enviando os dados. Então aqui estamos despejando para escrever dados. Nós dissemos neste sinal assim novamente, que os ovos prontos já é um. Bem aqui estamos nós. Nós habilitando novamente o contador, ok, para 217, a largura de bits, e nós habilitamos a transmissão. Ok? Vamos ver o que isso faz. Bem aqui. Ok, então habilitando o X. Então depois, depois de nós realmente aqui, desculpe. Vamos ver. Queria mostrar-te uma coisa antes de continuar a falar sobre isto. Por isso, quero falar sobre estes dois processos antes de prosseguirmos. Ok? Então vimos este temporizador. Temos o contador dos dados. Ok. Claro que ele só está contando os dados quando estamos mudando. Ok. Bem aqui neste processo, está bem? E aqui temos esse metamorfo, certo? Certo, e esse é o truque que eu quero falar. Ok? Então, bem aqui neste TeX claro, isso é realmente. Ok, o sinal de que vai sair, vamos dar uma olhada. Ok? Então isso, o x sig está indo para a transmissão. Ok? Então, na verdade, se você quiser pegar tudo isso, se você quiser ignorar algo aqui, você não deve ignorar este. Ok? Então a teca ver aqui no dx claro é 0 dia porque este é o começo com o conjunto. O X vai ser um, eu acho que é bem aqui. Ok? Então está sob “pare de escrever”. Então este é o Stop Bits. Então, começa com “Pare com isso”. E aqui estão os dados. Ok? Agora, se você quer que seja, se você quer que ele seja big-endian deu do MSB para LSB. Você só precisa mudar essa linha. E isso aqui, isso precisa ser sete e você precisa mudar a maneira como você muda os dados. Ok? Então você quer que ele seja deslocado para a esquerda em vez de mudar para a direita. Ok? Certo, então agora estamos lá dentro, habilitei o processo XT. Estamos aqui, ok, então estamos permitindo a transmissão de dados, ok? Agora, toda vez que um está chegando a D1, entre em um, ok, nós apenas terminamos um pouco, 1-bit. Então vamos testar Yossi. Ok. Não é o fim das contas, então vamos mudar. Ok. Porque nós não somos Nós não terminamos nós não terminamos, você sabe, a fase de enviar todos os dados. Então vamos mudar a contagem. Ok? Você tem uma toalha bem aqui. Ok, então nós vamos mudar para baixo, nós vamos voltar para os dados. Isto vai umas sete vezes e depois voltamos aqui mesmo. Ok, então vamos ver o fim disso. Então, quando for o fim da contagem vai ser um. Vamos ver quando. Então o fim da contagem será um quando a contagem for sete. Ok? E então nós vamos escrever o top k. Então este é realmente o transmissor, ok? Não é tão complicado. Pode ler o código. Você só precisa ir passo a passo e usar esta máquina de estado transmissor principalmente e um pouco disso. Ok, agora você pode ver que eu apenas, o que eu fiz na verdade, eu apenas peguei cada Vamos chamá-lo de componente e eu fiz como um processo. Ok, eu os separo e eu apenas conectei todas as coisas aqui. Então esta é a maneira de tomar um complexo. Qualquer outro design complexo. Você não tornou as coisas mais fáceis para você. Então, às vezes eu faço projetos muito difíceis para DMA com DDR e é apenas, é apenas uma bagunça. Então esta é uma maneira de projetar, certo? Então, se você está trabalhando em, você sabe, em uma empresa séria, você saberá que você tem duas maneiras de projetar coisas. Invadimos a área de cima para baixo. Ok, Matt, quem então você tem de baixo para cima. Então isso significa que de cima para baixo, você está construindo um monte de componentes e então você está indo para dentro, ok? Ou você pode construir todos os componentes, ok? Tipo, como aqui, e então apenas conecte-os. Ok? Depende. Depende de quão complexo é o modelo. Bem aqui? Fiz de baixo a cima. Na maior parte do tempo faço o cara de cima para baixo porque é mais fácil entender tudo. Então eu apenas construo um grande componente e então eu estou indo para dentro e uma conta mais componentes. Ok. Bem aqui, era só uma página, então eu não preciso ficar louco com isso. Ok, e isso é para esta palestra, ok, na próxima palestra vamos falar sobre o receptor e então vamos simular tudo. Ok? E este é o fim por enquanto. E então Q 8. Receptor UART: Olá, bem-vindo à próxima palestra. Nesta palestra vamos falar sobre o receptor. Ok? Então, como eu lhe disse, como eu mostrei antes nas palestras anteriores, nós temos este diagrama e a máquina do estado. Ok, agora, esta é uma grande escala como máquina de estado. Vamos dar uma olhada aqui. Ok, então este é o código do euro para o receptor. Agora, ao lado das entradas e saídas, bem como do transmissor, que é equivalente a este diagrama. Ok, então podemos ver aqui o recente e as horas, nossa leitura x. Você está pronto? Certo, são os mesmos nomes. Dados para fora. Que é claro que estamos recebendo um dado serial e queremos emiti-lo em um dado paralelo, ok? Então seria um dado de arnês, ok? Aqui, oito batidas. Novamente, se você quiser receber cinco batidas ou de outra forma, você precisa mudá-lo agradável e você precisa mudar no código. Então você vai ver que o código do receptor é quase o mesmo como o transmissor com pequenas mudanças, ok? Porque é exatamente o oposto se você assumir a fuga. Então, do jeito oposto. Certo, então estamos contando. Mais uma vez, vamos ver que temos o contador, É o mesmo contador. Temos o temporizador. Só temos o cronômetro 32, que já expliquei sobre isso nas palestras anteriores. Então você vai ver aqui que contagem T2, que é na verdade contagem T1 dividido por dois, ok, então é 108. Claro, se você escolher, relógios diferentes são diferentes taxas de baud. Estes números vão ser diferentes. Agora aqui você pode ver todos os sinais que precisamos para esta York. E aqui você pode ver a máquina do estado, que é, vamos um por um aqui. Ok, vamos dar uma olhada. Vá para que tenhamos o ocioso, o peso inicial, comece a garota. Ok? Então começar peso esperando 0, começando com Star Trek é só esperar mais um relógio, ok? Para verificar se ainda estamos na largura inicial, ok? E então nós vamos pontuar o peso. Certo, então temos uma verificação de dados. Ok? E novamente, é o mesmo método, como enviar. Este será este recebendo os dados. Ok? Agora temos aqui, Pare, espere, pare, verifique o peso do estoque. Então, depois de receber todos os dados onde queremos esperar por um bit stop, ok, Agora novamente, eu disse que se você quiser um bit de paridade, você pode adicionar aqui mais estados, você pode jogar com isso. Ou você pode continuar e baixar meu outro código, que é mais genérico, mais global. Você tem lá tudo o que você precisa para qualquer transmissão URL, ok, Então ele só suporta todas as opções que estão disponíveis no mercado. Então você pode ir à minha última palestra e baixá-la de lá. Ok, então você pode encontrá-lo ali. Está bem, então vamos continuar. Então isso está esperando por este top aqui. Está checando se ainda estamos na parada. Ok? E se este não for o portão do caso, então nós vamos quebrar, se este for o caso, nós vamos apenas voltar para ocioso. Ok? Vamos actualizar a saída, está bem? A saída vai ser os dados paralelos. Ok, então nós vamos dizer um, nós temos uma saída, ok? Então o novo D'Arthur vai ser habilitado. Então você pode ver tudo isso aqui, ok, Novamente, temos a mesma coisa com o próximo estado e estado presente. Claro, estes dois sinais vão tomar o tipo de estados, ok? Então cada um deles tem todos esses estados k. então cada relógio de 25 megahertz aqui. O próximo conjunto será carregado para o estado atual. E aqui dentro desta parte combinacional, vamos fazer tudo o que precisamos. Ok? Agora vamos dar uma olhada aqui. O que, o que aconteceu, ok? O que está acontecendo? Então, aqui mesmo no ocioso, está bem? Quando estamos, quando há excesso, o que é logístico, olha qual é o nosso excesso? Ok? Então, nosso excesso, novamente, vamos dar uma olhada aqui. Nosso excesso. A entrada sincronizada do RX, porque como eu disse, não sabemos como a onda está parecendo. Parece que é aqui. Quero ter certeza de que estou em 0 ou um dia. Claro que isso não resolve todas as opções de sincronização, como eu disse na palestra anterior. Então isso é apenas sincronizar uma vez, ok? Na maioria das vezes, queremos fazer um duplo montagens, ok? Então, duas amostras. Para uma boa sincronização. Se você fizer mais, vai ser melhor. Mas não faça muito, ok, Como eu disse em palestras anteriores, se você fizer muito, você pode sair da batida no tempo k e então você estará em outra batida lá. Você vai continuar a provar demais. Se você é sinfonia demais, não é bom se você se separar em dois. Se você simplesmente menos que, então o que você precisa, Não é bom também. Ok, então você quer experimentar uma quantidade decente de tempo, depende do seu relógio e das suas taxas curvadas. Certo, então tudo bem. E sim, isso é sobre isso. Ok, então nosso excesso, é apenas um processo, ok, que está montando nosso x em cada borda ascendente. Ok, então nós apenas algo RX e colocamos em nosso acesso. E quando eu acesso é um, nós não começamos. Ok, então nós manchamos no ídolo, Hey, nós estamos esperando por bit estrela quando nosso acesso é 0, ele vai para o outro e nós começamos com, nós podemos começar a contar t2, ok, Então isso vai ativar o contador. Novamente. Nós temos o T0, T0 habilitando onde ambos os contadores, ok, Então ele irá habilitar. Então aqui nós só nos preocupamos com habilitado neste contador. Então nós temos aqui um T2, ok, Então ambos vão correr quando t é um, mas nós apenas dando um loop, vamos dar uma olhada aqui e começar Waitangi no T2 na metade do bit, como eu disse. Ok? E vamos verificar se você ainda está no 0. Se não fosse apenas uma falha ou apenas, sabe, e barulho. Certo, então ainda continuamos procurando por dados. Ok. Então, se foi uma falha ou algum barulho que vem do mundo exterior. Na verificação de estoque, não veremos o sistema de arco 0 porque era apenas, você sabe, saltando muito baixo e muito alto. Então vamos voltar a ficar ociosos. Então, se tivéssemos 0 aqui em Star Trek, cara aqui, vamos pular para confiar em nosso cheque. Se tivermos um 0, ainda temos um 0 e começou, vamos esperar pelos dados. Certo, então aqui de novo, estamos habilitando aquele T2, certo? Como eu disse antes, note que quando estamos aqui no início, verifique, o T E será igual a 0. Ok? Porque aqui estamos em Star Trek e não há mais nada que substitua esse valor. Ok? Então, sempre que eu quiser começar peso, por exemplo, ou peso inicial, esses valores substituindo esse valor, ok? Porque eles são os últimos que estão sendo iniciados. E aqui não vai acontecer. Então T será 0 e os contadores serão 0. E aqui vamos começar de novo a contar. Ok, então quando T1 k igual a 1, queremos verificar os dados. E novamente, se tivermos, se acabarmos com a contabilidade, vamos para a contagem e esperaremos até a próxima parte, certo? Quando terminarmos, a contagem vai parar. Espere. Novamente. Fim da contagem. Nós queremos dizer que nós apenas história simples. Acabamos de receber, sim, amostras de sete batidas, k mais uma batida como eu disse em palestras anteriores. Ok? Então aqui, você só conta sete, mas quando chegamos aqui, já é simples, o primeiro, então é sete mais 1, é 8, oito bits ou um byte. E mais uma vez vamos parar, espere. E você vai de novo como aquele transceptor, ok? Ok. Então vamos parar e verificar se temos um pouco de parada. Gay. Se houver excesso é 0, não há bit stop. Queremos libertá-la. Se for um, estamos atualizando a saída. Ok? Então atualize a saída é esse cara. Vamos ver o que aconteceu na atualização da saída. O que ele faz? Ok, então aqui, que habilitar é um, os dados Shift K, bem aqui nós mudamos novamente se você quiser, se você está recebendo ok. Big Endian, tudo bem. Se você mudar o receptor e o transmissor, desculpe, você terá que mudar o receptor. E este R x x virá aqui. E você vai escrever aqui seis para 0. Então ele vai parecer, então se você está mudando isso para um grande endian, ele vai se parecer com este K, eu só quero mostrar a vocês isso, ok, então seria como seis abaixo para 0. Então aqui você vai girar para a esquerda. Isto vai girar para a direita. Ok? Ok, então o Alt Shift aqui embaixo do exterior habilitar a mudança será igual ao exterior e o exterior é sempre igual aos dados de saída. Ok? Então nós temos algo que está dizendo, hey, eles não estão fora está pronto e os dados para fora, que foi girado todo esse tempo. Ok? Mais uma coisa. Precisamos dizer que a saída está pronta. Então o novo dizendo que a saída está pronta e todas essas coisas são iguais a este caso. Então isso vai, o que vai acontecer. E vamos vê-lo na simulação nas próximas palestras. Ok? E, na verdade, é isso por enquanto sobre o receptor. Você pode passar por isso, ok, eu vou enviar isso para esta palestra. E isto é por enquanto. Está bem, vemo-nos na próxima palestra. E depois Kim. 9. Simulação de receptor: Olá, bem-vindo à próxima palestra. Nesta palestra vamos simular o receptor uart. Certo, primeiro, temos o arquivo receptor Gay chamado Yard são X-Dot VHD. E eu também enviei para esta palestra, ok, o banco de testes para o portão do receptor Uart. Então vamos passar por estes testbench, ok? E depois disso, vamos continuar e abrir um produto dentro modal mesmo e simular o receptor. Então você vai entender mais sobre sua transmissão. Então, está bem. Ok, então vamos começar aqui. Ok, então dentro do banco de testes, é claro que temos o componente do receptor terrestre, gays. Temos alguns sinais aqui, o reset, o relógio, os dados de leitura, e agora eles são sobre essas saídas. Deixei-os abertos. Vamos dar uma olhada diretamente no componente, ok, dentro do componente, não precisamos apenas olhar para isso. Então podemos apenas olhar para a saída em si, ok? Certo, então aqui temos o relógio de 25 megahertz. Ok, e nós temos um portão de reinicialização que ativa baixa reinicialização. Sim, então aqui dentro está o banco de testes em si mesmo. Então aqui você pode definir a taxa de transmissão, ok? Se você quiser um diferente, se você vai mudar a taxa de transmissão bem aqui e o relógio, é claro, você precisa mudá-lo aqui, ok? O relógio e a taxa de rejeição, está bem? Outra coisa que você precisa mudar aqui, se você quiser alterá-lo para k, o número de dados que você tem dentro do cara do pacote. Aqui está um byte. Ok, então aqui você pode ver que a cada 100 microssegundos que vamos enviar para o receptor, diferentes dados seriais vão para o RX. Então a coisa é que nós vamos enviar com estes quatro, ok, esta beterraba, ok. Este vai ser o primeiro dado. Este vai ser o segundo dado, e assim por diante. E dentro destes 44 podemos ver que estamos apenas girando os dados. Nós apenas cada vez que estamos enviando bits de 0 a sete. Então outra coisa, se você quiser mudar de um Little Endian, muito grande endian, e assim por diante. Você precisa mudar esses loops de sete para 0, ok? Ou apenas virar os bits. Claro, você deve apenas alterar o para loops de sete para 0. Ok? Então vamos continuar e ver como vai ser. E o que ganhamos quando enviamos isto para o receptor? E outra, mais uma coisa que eu queria dizer. Então aqui mesmo antes de enviarmos tudo isso. Então estamos definindo o r x para ser 1. Então é o item, este é o bit de início, e aqui é o Stop it. Ok? Então, se você quiser adicionar um bit de paridade k ao código aqui, você pode adicioná-lo entre o fim do loop para o bit stop. Mas também você pode ir para a última palestra. Está bem. Vou entrar no meu site e baixar o, o receptor e transmissor que eu tenho lá, que são profissionais e verificados em muitos, muitos produtos. Está bem. Isso também foi verificado em quadros e projetos de desenvolvimento. Mas novamente, o outro está apenas exagerado. E é muito profissional. Está bem. Então, o que queremos fazer agora, vá em frente e continue. E eu já fiz. Eu já mudei o caso do diretório. Então é aqui que vou trabalhar na minha pasta de cursos. Certo, vou criar um novo projeto. Isso é chamado de trabalho. Está bem. Chame de REX, não importa. Está bem. E adicione arquivos existentes K. Deixe-me levar isso. - Sim. Então, aqui mesmo. Então, em ambos obtê-lo o mais perto. Isso compilar todos eles. Ok, e eu quero ir para a biblioteca. E aqui mesmo simular gays. Agora, se você não tem este Windows, você pode ir aqui em vista, desculpe, em View. E aqui você tem a biblioteca e o projeto X. Então, depois que ele for aberto, você verá esse cara da janela sim. Este é o banco de testes. Ok, vamos editar aqui. Vamos chamá-lo de TV. Pressione aqui. Vamos criar outro. Desculpe. Este é o receptor, a unidade receptor. Vamos adicionar tudo, está bem? E deixe-nos executá-lo. Vamos ver o quanto queremos, está bem? Porque é muito lento. Vamos em um milissegundo aqui. Ok, então esta é a fase de simulação. Vamos dar uma olhada e ver o que temos. Ok? Primeiro, vamos dar uma olhada no primeiro. Ok? Então aqui estamos enviando c e c k aqui estamos enviando 35. Ok? Então, se você achar difícil de entender como você pode ir para a calculadora, você tem qualquer janela pressionando bem aqui, programador ir para binário. E aqui e colar. E você pode ver que este é CC em hexadecimal. E este vai ser, eu posso apagar isso. Este vai ser 35 em hexágono, ok? O último vai ser F e 0, ok? E aqui você pode ver que fizemos isso. Eu fiz um f, um erro de quadro. Está bem. Então ele precisa romper com isso porque não há um quadro de sua flecha aqui porque o fim, não há fim. Ok? Então o ID vai ser 0. Ok, então nós vamos ter uma seta de quadro porque nós estamos enviando 0 em vez de uma batida final de 140. E branco aqui. Acabamos de colocar em uma pequena piscina para as piscinas iniciais. Ok? Então nós apenas verificamos se, ok, as piscinas de início são realmente curtas, o que vai acontecer? Ok? E queremos ver o que aconteceu nestes dois. Então só procuramos esses dois caras para CC e 35. Agora, se você olhar para esta perna que você pode ver que os dados fora dizendo CC e 32 com os dados para fora novo. E aqui mesmo. E aqui mesmo, nada aconteceu. E este será o começo curto na batida, e este será o erro de quadro. E outra coisa que você pode ver aqui, que está bem aqui, você apenas quebra. Espere. Certo, nos outros, ficou ocioso. E vamos ver isso e ver o que está acontecendo. Para que eu possa ampliar bem aqui. Ok, e eu vou te explicar a coisa com o t2 e o T1, ok? Então, sob o nosso x, obtemos 0. Primeiro. Vamos adicionar mais um destes do mais grosseiro. Então aqui está chegando a 0. Vamos procurar este. Ok? E como podem ver, podemos dizer que a próxima mudança será bem aqui. Está bem. Deixe-nos ver. Então, se estamos nos dividindo, apenas vamos voltar para os cientistas grossos. Um dividido por 1152 mil e vai ser 8,68, hey, 0,798. Ok? Ok, então esta vai ser nossa, na verdade nossas batidas, k1 batidas. E dê uma olhada de novo. Vamos tomar outro, está bem? 8.8. Está bem. Então, porque estamos trabalhando com 25 megahertz e você quer receber 115 a 100. E temos um pequeno desvio, está bem? Então, há um, você pode realmente criar, comprar-se uma tabela de desvio, gays. Ou você pode encontrar na internet. Então, em que clube eles querem trabalhar para receber o menor desvio K para um certo uart sobre a direita? Ok, então você pode fazer a Internet da Índia. Você nem precisa de mim para fazer isso. Então aqui podemos ver. Ok, a primeira batida chegando, ok, vai ser 0 na próxima parte que vamos querer receber aqui vai ser este 100 e depois um, ok? Então vai ser 0 e depois outro 0 daqui até aqui, ok? E aqui vai ser 11. Ok? Então, o que aconteceu aqui? É só que quando está chegando a 0, temos um peso inicial, estamos no peso inicial, ok? E depois disso, vamos começar a verificar. Está bem. Quando temos 22 vai para um, vamos começar a verificar. Ok? Depois de um T2 chegar a um, estamos esperando novamente. Certo, isso o aguarda. Estamos aguardando os dados, o único e, em seguida, queremos provar cada vez no meio da batida. Ok? Então estamos sempre que aquele cara do T1 aqui vai pular para um. Na verdade, estamos, como te disse nas palestras anteriores, está bem? Então nós realmente queremos estar no meio do BD2K. Então, se este é o, este pode ser 000 001. Ok, então cada vez que T1, porque temos este turno de T2 e então estamos começando a contar o T1. Ok? Então o t, nós estamos indo para simples bem no meio da batida. Ok? Então, toda vez que estamos nos reunindo, e quando estamos montando, algo acontece aqui, certo? E você deveria dar uma olhada nisso, ok? Bem aqui, o turno de saída de dados está sendo deslocado, se eu abrir este. E vamos diminuir um pouco. Você pode ver que está se movendo. Ok? Então ele está se mudando até chegarmos em C e C. No final aqui, temos os dados longe, todo o peso dos dados. Certo, no final temos a parada, espere, esperando a parada. Ok? Então estamos verificando se estamos realmente na parada. Em seguida, atualize as saídas. Ok, estamos dizendo que a saída é válida. Vamos ver bem aqui. Está bem. Então, os dados novos são válidos e torná-lo para fora onde os israelenses, ok. Agora porque não temos ninguém para lê-lo, você pode ver que o ponto pronto está esperando o tempo todo então até eu ler, ok, se eu vou lê-lo aqui, o ponto fora Verdi vai para um 0. Ok? Então podemos fazer alguma coisa. Legal aqui. Vamos, vamos em frente e, e vamos continuar e lê-lo aqui mesmo. Ok, vamos ver quando vamos e realmente tentamos aqui. Ok, deixe-me encontrar essa hora, a hora certa. Ok, então nós vamos lê-lo em 153 microssegundos e então ver os dados prontos indo para 0. Ok? Então, se você é um receptor, desculpe se você é, se você está no backend do receptor K no lado FPGA. E você tem o receptor. E você está lendo a partir do back-end, ele deve ir para 0. Certo, então vamos dar uma olhada nisso. Vou correr 100, 53 microssegundos, está bem? E aqui, vamos ler o ponto, K SOM. Diz-lhe que estou tipo, tu sabes, a olhar para fora. Está bem. Se eu for o back-end, tudo bem. E eu estou dizendo, ei, eu, eu fui muito legal. Está bem. Omri, as necessidades. Está bem. Então vamos pular um microsegundo. Ok, isso é o suficiente. E como você pode ver, quando eu estava realmente limpo, ok, os dados fora pronto vai para 0. Ok, vamos agora pressionar nenhuma força, ok? Então vamos voltar para 0. E agora, quando rodarmos novamente, você verá que os dados prontos vão subir apenas nos próximos dados que estão aguardando. Ok? Então, se você quiser trabalhar direito com o backend, quando você, quando você está lendo isso, você pode simplesmente, sempre que o ponto para fora ou você pode simplesmente ir em frente e dar uma olhada lá fora novo. E sempre que há novos, se você sabe, isso depende. Se você sabe que seu back-end vai estar ocupado. Ok? E você não pode ler aqui que quer. Você tem algo que está fazendo no back-end. Eu não sei. Você tem um FIFO que eles podem estar cheios, talvez. Está bem. Se você tem sozinho um monte de transmissão e seu um FIFO totalmente suficiente, Ok. Você não pode ler um imediatamente e você quer lê-lo aqui, ok? Então você pode dar uma olhada em New. Você terá que dar uma olhada nos dados, nossos 20 e dizer Ok, que fora está pronto. Ok, eu posso ler, Ok, e então ele vai dizer que eu estou lendo e nos próximos dados que na quarta-feira será outra vez. Está bem. Mas se o seu back-end é LU é, é, está bem e você não tem nada que eles estão presos em você ao receber os dados. Então você pode apenas dar uma olhada nos dados para fora novo. Ok, então sempre que for um, você só vai ler e continuar. Ok? Portanto, existem dois métodos de leitura dos dados aqui. Depende do que você deseja fazer no back-end. Certo, então aqui podemos ver isso. Vamos ver o que aconteceu aqui. Então tem que parar, esperar, parar, verificar. Ok, ele está verificando o bit de parada, mas os bits de parada aqui vai ser 0, ok, Então este tópico não pode ser 0 e você apenas quebra o peso. E note que a saída foi habilitada, por isso é Quebrar peso e ido, passou para ocioso. Ok? Então vai ficar ocioso. Então ele vai para qualquer um sempre que a linha está voltando para um cara. E este é o modo ocioso sempre que x é 1, ok? E branco aqui, é claro que temos um pequeno bem aqui, temos apenas um pequeno salto para o peso inicial e depois vamos ver o que aconteceu aqui. Ok? Bem aqui o que eu fiz aqui, ok. Então, em vez de ser você se lembra que era 8.8.8. Está bem. Então são dois pontos, 17 microssegundos, certo? Este é um pequeno começo de dois em um pouco. Então T2 estava contando, certo? E branco aqui, nós verificamos, ok? E nós verificamos se é válido, ok, e não era válido, vamos ver. Ok, então nós verificamos o início e não era válido e nós vamos apenas voltar OK, para ocioso porque não era válido. Ok? Ok, e este é o fim para esta palestra. Na próxima palestra, simularemos o transmissor K e usaremos o receptor. Vou explicar como vamos fazer isso. Ok? E este é o fim por enquanto. E 10 Q 10. Simulação de transmissão: Olá, bem-vindo à próxima palestra. Nesta palestra vamos simular o transmissor do uart. Certo, primeiro, no arquivo UART DEX que você já baixou e as palestras da Ampere. Você pode encontrar aqui mesmo que o componente que você é, nosso x vai estar também dentro do código, gays. E eu disse-te que podes tirá-lo se não estiveres a simular. Mas agora vamos simular, então você terá que habilitar esse cara. Apenas deixe assim. Agora, a razão pela qual estamos colocando a Terra REX bem, dentro, eu quero mostrar a vocês primeiro. Isto não é um Desmond sobre DX, só um segundo. Então isso é, você também tem aqui mesmo sob esta palestra, este uart leva testbench k. então eu vou apenas mostrar-lhe agora o que estamos fazendo nos carrapatos uart. E então vamos explicar sobre este componente e por que, por que nós realmente editamos a Terra, nosso x dentro, ok, então o que nós realmente fazemos? Temos o uart leva k e temos a entrada de dados. Queremos carregar o transmissor com dados paralelos , um byte aqui, por exemplo. E queremos escrever para habilitar o direito. E então queremos ver as saídas de transmissão na saída serial com um limite que dissemos e tudo mais. Agora a coisa é que não podemos realmente verificar pelos nossos olhos se a transmissão está bem. Ok, então o que vamos fazer aqui, antes de configurá-lo para a saída dentro do ERT x, vamos dar uma olhada. Ok, nós temos o portão de sinal de ticks e o sinal de pico está sempre indo para os ticks. Nós vamos realmente conectar o excedente dentro do Uart REX. E, na verdade, isto irá verificar a nossa simulação. Certo, então em vez de, você sabe, dar uma olhada em cada batida e, você sabe, será realmente difícil para nós verificar e verificar se isso ok, que a comunicação está certa. Vamos apenas conectar as saídas seriais para o uart RX e o York RX vai realmente verificá-lo para nós. Vamos ver novamente a transmissão dx no uart RAX. E vamos ver os dados aqui fora alternar nos mesmos dados que acabamos de adicionar. Então vamos dar uma olhada no, ok, no banco de testes. Então aqui temos, é claro, o RTX a, precisamos conectar este. Claro que temos o relógio dos 25 megahertz reset. E aqui todas as coisas vão acontecer, está bem? Então, bem aqui dentro do processo, você verá que o primeiro envio será bem aqui. Ok? Então estamos enviando 0 e apenas adicionando a idade. E o que isso significa? Estamos adicionando os valores ASCII. E o valor ASCII do caractere idade do nosso teclado j será 48 hexadecimal. Como é que eu sei disso? Você pode ir ao Google? Basta anotar a mesa ASCII e você vai encontrar pinças de tabelas ASCII, ok? E basta dar uma olhada nesta tabela e entender, ok, então idade, personagem em seu teclado, se você quiser imprimir do seu FPGA para o seu PC, o personagem de idade, por exemplo, você terá que escrever para o PC 4800 hex. Ok, então se você der uma olhada aqui, você pode ver que há um nome de coluna, char, personagem homossexual. E aqui abaixo da idade, você verá que o valor decimal é 72. O valor hexadecimal é 48. Ok? Então isso é realmente o que vai ser enviado. Estes valores 48 em hexadecimal ou 72 nesse CMO. Claro que estamos trabalhando, nós tributamos agora. As pessoas estão dizendo números ascii representados por sete bits. Ok, isso mesmo. Mas quando estamos conectando nosso FPGA ao nosso computador e nós vamos falar com o termo terror atender a eles. Nós não passamos por isso, mas vamos escrever aqui e eu vou te mostrar o que isso significa. Então você tem duas opções para se conectar. Seu sim. Quero dizer, você tem muitas opções, ok? Mas você tem duas aplicações principais que estarão se comunicando com comunicação serial. E um é Tera Term, certo? É uma fonte aberta, claro. Você pode baixá-lo. Este, o termo terror, está bem? Então, quando você baixá-lo, ele vai ficar assim, ok? E você pode escolher um cereal e a porta COM no seu PC. Bom é estar conectado ao seu. Seu conselho de desenvolvimento, e você terá mais opções para escolher lá. Você pode escolher o limite que você vai usar, e como as batidas se parecem e muito mais. Ok? Então você pode realmente escolher entre cinco a nove batidas. Você pode escolher a pobreza do trigo sem pobreza, uma a duas paragens e assim por diante e assim por diante. Ok? O outro, que é muito bom, chamado Pucci, ok. Este também é gratuito para download. Ok. É uma ferramenta muito forte para, ok, eu gosto dos dois. Estou usando o termo terrorista, mas na verdade não importa. Os rapazes os dois. Realmente bom. Ok. Então isto é sobre esta coisa. Ok, então se você vai usar e você quer imprimir para si mesmo, você sabe, coisas para o seu PC. Você pode usar oito bits, ok? Tudo depende do que você vai definir no termo de terror ou no banheiro. Então, tudo bem, você sabe, escrever oito bits mesmo que se você vai continuar e escrever ascii, por exemplo, e você vai ler sobre isso. Você verá que os números ASCII serão representados por sete batidas, certo, é um caractere de 7 bits, ok? Por isso, não ignores isto, está bem? Isto é o que, eu acho que você deve fazer. E agora mesmo aqui no primeiro, vamos enviar a idade Carter, ok? E nós vamos lá, fazer tudo o que precisamos. Ok? Então aqui nós apenas carregamos os dados para o transmissor. Nós não fazemos nenhuma alternância fora o bit de início e parada. O neurotransmissor precisa fazer isso sozinho. Ok, então nós vamos enviar alta kh I. E então nós vamos, nós podemos enviar isso para ok, então isso é apenas um retorno de cartucho e isso vai apenas ir, é como um enter, ok? Então, se você quiser gostar de pessoa entrar, você vai escrever barco tão escuro vindo juntos, um CR e n lf. Então você vai ver como terminar a transmissão e ir uma linha. Ok? Então chama-se CRLF. Estes são chamados de alimentação de linha? Ok. E este chamado retorno de cartucho. Ok, então isso é apenas algo para você saber. Você não tem que imprimir os dois, mas pode ser uma coisa legal de se fazer. Ok, e bem aqui dentro deste processo, nós também vamos verificar a transmissão homossexual. Então esta será a segunda maneira de verificar a transmissão. Ok, então temos uma maneira bem aqui dentro do transmissor. Acabamos de implementar o receptor uart K. Claro, se você estiver usando o código como eu disse, você pode ignorar esses índices apenas para simulação. E nós temos outra coisa que apenas, eu vou verificar nosso transmissor K. Então, só, novamente, que leva nosso x, é que sinaliza a saída da escala ureterica. Na verdade, é a saída. Então este processo irá apenas verificar se temos bits de início no loop for. Ele vai levar 11 por um todos os bits para a entrada D e apenas colocá-lo para o dia fora k. e ele vai nos mostrar o valor que temos aqui. Claro, ele está checando aqui o bit stop e tudo mais. E é um processo muito simples. Ok, agora vamos continuar e começar a simular. Ok, então aqui eu tenho o arquivo, novamente, novo produto. Vamos trabalhar. Podemos chamá-lo de X. Isso realmente não importa. Ok. Adicionar arquivos existentes. E por que você quer adicionar todos os três arquivos? Ok? O transmissor e o transmissor, um banco de testes, tudo bem. E os escuros RX só nos verificam se está tudo bem. Clique com o botão direito compilar tudo E aqui, dentro da biblioteca, vamos trabalhar. Clique com o botão direito no estímulo Test-Ban. E você deveria aparecer. Tudo deve aparecer agora. Basta tomar em um segundo e escrever você.Vamos continuar e adicionar um pouco de divisória. Então este será o nosso banco de testes. Apenas escreva aqui. Isto é quando somos um transmissor e vamos escrever aqui o receptor dentro do transmissor, ok? Nossas dores dentro da escala de QI. Então você vai entender o que é isso? Então este é o banco de testes. Bem aqui. Temos o transmissor. Eles podem pressionar aqui para os nomes e aqui mesmo com o receptor. Ok. Agora, vamos continuar e comandar tudo. Ok? Então, o que fazemos? O que vemos? Desculpe. Então aqui, podemos ver que adicionamos aqui os dados, certo? Certo, então o que queremos fazer aqui, podemos escolher uma cor diferente. Deixa-me só levar este. Certo, aqui e agora você pode ver o que está acontecendo. Ok, então eu posso ampliar. Então colocamos a entrada de dados k, os 48 sobre os quais falamos, ok, esta idade, Carter, e escrevemos no carro lá no transmissor. Ok, então bem aqui dentro das entradas do transmissor, você verá que na entrada e a direita dentro está pulando um. Ok? E o que está acontecendo? Quando fazemos isso? Vamos dar uma olhada na saída, ok, no caso dos ticks está indo para 0. Esta é a parte inicial, ok? E então está começando a enviar algo, algo, eu não sei. Podemos realmente, o que podemos fazer, gays, o que realmente podemos fazer. Podemos ir em frente e calculá-lo. Posso colocar os cursores. Isto é o que eu quis dizer. Não podemos dizer o que enviamos para cá. Ok. Então eu posso trabalhar muito duro e ir em frente e colocar, você sabe, com os cursores no lugar certo. E os nossos direitos são de cerca de 88, procura 8,8 microssegundos. Ok. Então nós podemos realmente adicionar mais deles. Ok, então eu posso colocar aqui. Ok. E se estivéssemos dando uma olhada no T x novamente, um pouco vá em frente e mude o quarto da onda. Certo, deixe-nos ir para esta casa. Ok, então você pode ver que é 0, a data de início e depois 000 001, eu acho que é 001. Ok, e assim por diante e assim por diante. Ok. E eu posso ver o “Pare com isso”. Agora. Não sei dizer o que enviamos para cá. Ok. Agora, se eu quiser se eu quiser ver o que nós enviamos novamente, é por isso que nós adicionamos aqui o receptor. Ok. Então as entranhas do receptor dentro destes são a mesma coisa. Ok? Você tem a mesma transmissão. E então na saída você pode ver o transmissor apenas adicionado à estaca fora todos esses cursos para que o receptor acabou de receber o transmissor transmite, ok? E, claro, na saída, você verá o nosso 48. Isso significa que nós realmente temos isso. Certo, como queríamos. E também você pode ver no próprio banco de testes, então esta é esta parte bem aqui. Ok? Então este é apenas um processo aqui. Então, na dúvida, tudo bem. Você pode ver que são os 48. Então você tem nós temos dois processos que verificam isso. Ok. Temos este processo, está bem? No banco de testes em si e temos o receptor que verificando nossas transmissões. Então você pode realmente dar uma olhada na próxima coisa que vamos carregar o caso. Então, será a próxima coisa que vamos carregar vai ser 69. E mais uma vez, nem preciso me preocupar com isso. Ok. Então acabamos de enviar 69. Ok. Então a transmissão envia 69. E eu de novo, vá em frente. Desculpe. Eu posso ir até o receptor, dentro do transmissor e ver que ele realmente envia um 69. Ele realmente envia o 0 d k e está enviando o a k. Vamos dar uma olhada aqui. Ok, então é D e A. E claro que este foi o 69. Agora, é assim que vamos testar nosso transmissor K. E é isso para esta palestra. Não se esqueça de baixar o arquivo Testament do medidor. E não te esqueças da necessidade dos três ficheiros, está bem? E, na verdade, este é o fim para esta palestra, ok? E eu vou ver na próxima palestra, vá em frente e confira. Ok. Verifique a próxima palestra, se quiser. Sabe, meu melhor. Seu transceptor, código VHDL. Ok, então vá em frente e veja a próxima palestra, e é isso por enquanto. Vejo-te na próxima palestra e obrigado. 11. Palestra de bônus: Olá a todos. Obrigado por se juntar ao meu curso e terminá-lo. Se queres o meu código, este código é um código genérico, está bem? Então podes escolher tudo o que quiseres, está bem? Você pode enviar muitos, muitos backends que fizemos. Você pode escolher o tamanho da mordida, o número de bits de parada e a paridade. Se houver paridade ou não, o tipo de pobreza. Se você quer esse código, tudo bem, você tem esses três arquivos. Basta ir para o meu site, assinar e você receberá meu código profissional. Gay. Eu trabalho muito duro para este código. Então, por favor, se você quiser esses códigos, você vai, você pode ir em frente e assinar. Também com esta assinatura, você receberá meus outros cursos, cupons duas a três vezes por mês, ok? E você receberá atualizações sempre que eu estiver indo para lançar um novo curso sobre tudo em eletrônica, FPGAs, VHDL, o Arduino, o que quer que eu esteja fazendo, k. então basta ir para o meu site. Você pode conferir. Não se esqueça de se juntar ao nosso grupo de convés do Telegram. E você também pode se inscrever e participar do meu grupo no Facebook e fazer meu canal no YouTube. E este é o aberto que se juntou ao curso. Se tiver alguma dúvida, não hesite em me enviar uma mensagem. E claro, eu realmente apreciarei se você revisar meu curso ou deixar o comentário, ok? E é isso por agora, ok, eu vou estar gostando. Gostei do curso e espero vê-lo em meus outros cursos. Certo, então entre e confira meus outros cursos. Então vou lançar novos cursos sobre outros protocolos de comunicação. Então você também pode, então, se você quiser ser atualizado sobre eles, então não é ir em e assinar, Ok. Você receberá um dispositivo logo após a assinatura, ok. Então, onde quer que se inscreva, obteremos esses arquivos. Não importa quando. E isto é por enquanto. Vejo-te nos meus próximos cursos. Obrigado por se juntar a este curso.