Monday, 29 May 2017

Movendo Média Filtro Xilinx


Alta Definição, Baixa Delay, Transmissão de Vídeo Baseada em SDR em Aplicações de UAV Os transceptores RF agudos integrados não são apenas amplamente empregados em arquiteturas de rádio definidas por software (SDR) 1 em estações base de telefones celulares, como o sistema de acesso distribuído multiserviço (MDAS) , Mas também para transmissão de vídeo HD sem fio para aplicações industriais, comerciais e militares, como veículos aéreos não tripulados (UAVs). Este artigo irá examinar uma implementação de cadeia de sinal de vídeo sem fio de banda larga usando AD9361 AD9364 2,3 ICs transceptores integrados, a quantidade de dados transmitidos, o RF correspondente ocupado sinal largura de banda, a distância de transmissão ea potência transmitterrsquos. Também descreverá a implementação da camada PHY do OFDM e os resultados atuais do teste de freqüência de salto para evitar a interferência de RF. Finalmente, discutiremos as vantagens e desvantagens entre o Wi-Fi e o transceptor ágil RF em aplicações de banda larga sem fio. A Cadeia de Sinal A Figura 1 ilustra o esquema de transmissão de vídeo sem fios simplificado utilizando o AD9361AD9364 e um BBIC. A câmera captura a imagem e transmite dados de vídeo para um processador de banda base via Ethernet, reg. USB ou outra interface. Image codingdecoding pode ser tratado por hardware ou o FPGA. A frente RF inclui o switcher, LNA e PA para o transceptor integrado programável. Quantos dados precisam ser transmitidos A Tabela 1 mostra a diferença de tamanho significativo entre as taxas de dados não comprimido e comprimido. Usando a codificação de vídeo de alta eficiência (HEVC), também conhecida como H.265 e MPEG-H Parte 2, podemos diminuir a taxa de dados e economizar largura de banda. H.264 é actualmente um dos formatos mais utilizados para a gravação, compressão e distribuição de conteúdo de vídeo. Ele apresenta um grande passo em frente na tecnologia de compressão de vídeo e é um dos vários sucessores em potencial para o amplamente utilizado AVC (H.264 ou MPEG-4 Parte 10). A Tabela 1 resume as taxas de dados não compactadas e comprimidas em diferentes formatos de vídeo. Suposições incluem uma profundidade de bits de vídeo de 24 bits e uma taxa de quadros de 60 fps. No exemplo de 1080p, a taxa de dados é de 14,93 Mbps após a compressão, que então pode ser facilmente manipulada pelo processador de banda base e pela camada PHY sem fio. Tabela 1. Largura de banda do sinal de taxa de dados comprimido O AD9361AD9364 suporta largura de banda do canal de lt200 kHz a 56 MHz alterando a taxa de amostragem, filtros digitais e decimação. Os AD9361AD9364 são transceptores de zero-IF com canais I e Q para transmitir os dados complexos. Os dados complexos incluem partes reais e imaginárias, correspondendo a I e Q, respectivamente, que se localizam na mesma largura de banda de freqüência para duplicar a eficiência do espectro quando comparado a uma única parte. Os dados de vídeo comprimidos podem ser mapeados para os canais I e Q para criar pontos de constelação, que são conhecidos como símbolos. A Figura 2 mostra um exemplo de 16 QAM em que cada símbolo representa quatro bits. Para um sistema de uma única portadora, a forma de onda digital I e ​​Q precisa passar através de um filtro de formação de impulsos antes do DAC para moldar o sinal transmitido dentro de uma largura de banda limitada. Um filtro FIR pode ser utilizado para moldar os impulsos e a resposta do filtro é ilustrada na Figura 4. Para manter a fidelidade da informação, existe uma largura de banda de sinal mínima correspondente à taxa de símbolos. E a taxa de símbolos é proporcional à taxa de dados de vídeo comprimida como mostrado na equação abaixo. Para o sistema OFDM, os dados complexos devem ser modulados para as subportadoras utilizando o IFFT, que também transmite o sinal numa largura de banda limitada. O número de bits transmitidos com cada símbolo depende da ordem de modulação. Em que alfa é o filtro largura de banda parâmetro. A partir das fórmulas anteriores podemos deduzir esta equação, para que possamos calcular a largura de banda do sinal ocupado RF como resumido na Tabela 2. Tabela 2. Largura de banda do sinal RF ocupado com tipos de ordem de modulação (alfa 0.25) O AD9361AD9364, com até 56 MHz de sinal Largura de banda, suporta todas as transmissões de formato de vídeo da Tabela 2 e taxas de quadros ainda mais altas. A modulação de ordem superior ocupa uma largura de banda menor eo símbolo representa mais bits de informação, mas é necessário um SNR maior para demodular. A distância de transmissão ea potência do transmissor Em aplicações como UAVs, a distância de transmissão máxima é um parâmetro crítico. No entanto, é igualmente importante que a comunicação não seja interrompida mesmo a uma distância limitada. O oxigênio, a água e outros obstáculos (exceto a atenuação do espaço livre) podem atenuar o sinal. A Figura 6 mostra o modelo de perda de canal de comunicação sem fio. A sensibilidade do receptor é normalmente tomada como o sinal mínimo de entrada (S min) necessário para demodular ou recuperar as informações do transmissor. Depois de obter a sensibilidade do receptor, a distância de transmissão máxima pode ser calculada com algumas suposições, como mostrado aqui: (SN) min é a relação sinal / ruído mínima necessária para processar um sinal NF é a figura de ruído do receptor k é Boltzmannrsquos Constante 1.38 vezes 10 ndash23 joulek T 0 é a temperatura absoluta da entrada do receptor (Kelvin) 290 KB é a largura de banda do receptor (Hz) O parâmetro (SN) min depende da modulação da ordem de modulação. Com a mesma SNR, a modulação de ordem inferior obtém um erro de símbolo mais baixo, e com o mesmo erro de símbolo, a modulação de ordem mais alta precisa de SNR mais elevado para demodular. Assim, quando o transmissor está longe do receptor, o sinal é mais fraco eo SNR não é capaz de suportar a demodulação de alta ordem. Para manter o transmissor on-line e manter um formato de vídeo com a mesma taxa de dados de vídeo, a banda de base deve usar modulação de ordem inferior à custa do aumento da largura de banda. Isso ajuda a garantir que as imagens recebidas não sejam desfocadas. Felizmente, o rádio definido por software com modulação e demodulação digital oferece a capacidade de mudar a modulação. A análise anterior baseia-se no pressuposto de que a potência de RF do transmissor é constante. Embora uma maior potência de transmissão de RF com o mesmo ganho de antena alcance um receptor mais distante com a mesma sensibilidade do receptor, a potência máxima de transmissão deve cumprir os padrões de radiação FCCCE. Além disso, a frequência da portadora terá uma influência na distância de transmissão. Como uma onda se propaga através do espaço, há uma perda devido à dispersão. A perda de espaço livre é determinada por: onde R é a distância, lambda é o comprimento de onda, f é a freqüência e C é a velocidade da luz. Portanto, a freqüência maior terá mais perda na mesma distância de espaço livre. Por exemplo, a frequência portadora a 5,8 GHz será atenuada em mais de 7,66 dB em comparação com 2,4 GHz na mesma distância de transmissão. Freqüência de RF e comutação O AD9361AD9364 tem uma faixa de freqüência programável de 70 MHz a 6 GHz. Isto irá satisfazer a maioria das aplicações de frequência NLOS, incluindo vários tipos de frequências licenciadas e não licenciadas, tais como 1,4 GHz, 2,4 GHz e 5,8 GHz. A freqüência de 2,4 GHz é amplamente utilizada para Wi-Fi, Bluetooth reg. E IoT short-range comunicação, tornando-se cada vez mais lotado. Usá-lo para a transmissão de vídeo sem fio e sinais de controle aumenta as chances de interferência de sinal e instabilidade. Isso cria situações indesejáveis ​​e muitas vezes perigosas para UAVs. A utilização da comutação de frequência para manter uma frequência limpa manterá os dados ea ligação de controlo mais fiáveis. Quando o transmissor detecta uma freqüência lotada, ele alterna automaticamente para outra banda. Por exemplo, dois UAVs que usam a frequência e que operam em estreita proximidade irão interferir com cada outra comunicação. A comutação automática da frequência LO e a re-seleção da banda ajudarão a manter uma conexão sem fio estável. Adaptando a seleção da freqüência portadora ou canal durante o período de inicialização é uma das características excelentes no UAV de ponta. Frequency Hopping O hopping de freqüência rápida, que é amplamente utilizado em contramedidas eletrônicas (ECM), também ajuda a evitar interferências. Normalmente, se quisermos saltar a frequência, o PLL precisa reativar após o procedimento. Isso inclui escrever os registros de freqüência e passar pelo tempo de calibração VCO e tempo de bloqueio PLL para que o intervalo da freqüência de salto seja aproximado a centenas de microsegundos. A Figura 7 mostra um exemplo de frequência LO do transmissor de salto de 816,69 MHz para 802,03 MHz. O AD9361 é usado no modo de mudança de freqüência normal e a freqüência de saída do transmissor de RF salta de 814,69 MHz para 800,03 MHz com uma freqüência de referência de 10 MHz. O tempo de frequência de salto é testado utilizando o E5052B como mostrado na Figura 7. A calibração de VCO e o tempo de bloqueio de PLL são cerca de 500 micros de acordo com a Figura 7b. O analisador de fonte de sinal E5052B pode ser usado para capturar a resposta transiente PLL. A Figura 7a mostra o modo de medição de transiente de banda larga, enquanto que as Figuras 7b e 7d proporcionam uma resolução significativamente fina na medição de transientes de fase e de frequência com salto de frequência. 6 A Figura 7c mostra a resposta da potência de saída. 500 micros é um intervalo muito longo para a aplicação hopping. No entanto, o AD9361AD9364 inclui um modo de bloqueio rápido que possibilita a obtenção de mudanças de freqüência mais rápidas do que as normais, armazenando conjuntos de informações de programação do sintetizador (chamados perfis) nos registros devicersquos ou no espaço de memória processorrsquos de banda base. A Figura 8 mostra o resultado do teste usando o modo de bloqueio rápido para implementar a frequência de salto de 882 MHz a 802 MHz. O tempo é menor que 20 micros, de acordo com a Figura 8d resposta de fase. A curva de fase é desenhada referindo-se à fase de 802 MHz. O tempo de escrita SPI e o tempo de calibração VCO são ambos eliminados nesse modo devido à informação de frequência e aos resultados de calibração guardados nos perfis. Como podemos ver, a Figura 8b mostra a capacidade rápida de salto de frequência do AD9361AD9364. Implementação do PHY LayermdashOFDM A multiplexação por divisão ortogonal de frequência (OFDM) é uma forma de modulação de sinal que divide um fluxo de modulação de taxa de dados elevado em muitas subportadoras de estreito espaçamento de banda estreita lentamente modulada. Isto torna menos sensível ao desvanecimento selectivo da frequência. As desvantagens são um pico elevado à relação de poder média e sensibilidade ao deslocamento e à deriva de portador. O OFDM é amplamente aplicado na camada de comunicação sem fio de banda larga PHY. A tecnologia crítica do OFDM inclui IFFTFFT, sincronização de freqüência, sincronização de tempo de amostragem e sincronização de simbologia. O IFFTFFT deve ser implementado via FPGA da maneira mais rápida possível. Também é muito importante selecionar o intervalo das subportadoras. O intervalo deve ser grande o suficiente para suportar a comunicação de mobilidade com a mudança de freqüência Doppler e pequeno o suficiente para transportar mais símbolos dentro da largura de banda de freqüência limitada para aumentar a eficiência do espectro. COFDM refere-se a uma combinação de tecnologia de codificação e modulação OFDM. COFDM com sua alta resistência de atenuação de sinal e correção de erro de avanço (FEC) vantagens podem enviar sinais de vídeo de qualquer objeto em movimento. A codificação irá aumentar a largura de banda do sinal, mas geralmente vale a pena o trade-off. Combinando o design baseado em modelos e ferramentas de geração de código automático da MathWorks com os poderosos Xilinx reg Zynq SoCs e Analog Devices transceptores de RF integrados, SDR projeto do sistema, verificação, testes e implementação pode ser mais eficaz do que nunca, levando a maior desempenho de rádio Reduzir o tempo de colocação no mercado. 7 Quais são as vantagens sobre Wi-Fi Drones equipados com Wi-Fi são muito fáceis de se conectar a um telefone celular, laptop e outros dispositivos móveis, o que os torna muito conveniente de usar. Mas para transmissão de vídeo sem fio em aplicações UAV, a solução FPGA mais AD9361 oferece muitas vantagens sobre Wi-Fi. Em primeiro lugar, na camada PHY, a comutação de frequência ágil eo salto rápido do AD9361AD9364 ajudam a evitar interferências. A maioria dos chips Wi-Fi integrados também operam na banda de freqüência de 2,4 GHz, sem nenhum mecanismo de ressignificação de banda de freqüência para tornar a conexão sem fio mais estável. Em segundo lugar, com a solução FPGA mais AD9361, o protocolo de transmissão pode ser definido e desenvolvido de forma flexível por designers. O protocolo Wi-Fi é padrão e baseado em um handshake bidirecional com cada pacote de dados. Com Wi-Fi, cada pacote de dados tem que confirmar que um pacote foi recebido, e que todos os 512 bytes no pacote foram recebidos intactos. Se um byte é perdido, todo o pacote de 512 bytes deve ser transmitido novamente. 8 Embora esse protocolo garanta a confiabilidade dos dados, é complexo e demorado reiniciar o link de dados sem fio. O protocolo TCPIP causará latência alta que resulta em vídeo e controle não real-time, o que pode levar a um acidente de UAV. A solução SDR (FPGA mais AD9361) usa um fluxo de dados unidirecional, o que significa que o drone no céu transmite o sinal de vídeo como uma transmissão de TV. Não há tempo para reenviar pacotes quando o vídeo em tempo real é a meta. Além disso, o Wi-Fi não oferece o nível adequado de segurança para muitas aplicações. Utilizando o algoritmo de criptografia e protocolo definido pelo usuário, a solução FPGA mais AD9361AD9364 é muito menos suscetível a ameaças de segurança. Além disso, o fluxo de dados de transmissão unidirecional oferece capacidades de distância de transmissão de duas a três vezes a das abordagens Wi-Fi. 8 A flexibilidade da capacidade de rádio definida por software permite que o ajuste de modulação digital de modulação satisfaça os requisitos de distância ou ajuste a mudança de SNR em ambientes de radiação de espaço complexo. Conclusões Este artigo ilustrou os parâmetros críticos do uso de uma solução FPGA mais AD9361AD9364 para a implementação de transmissão de vídeo sem fio de alta definição. Com a banda de freqüência ágil de comutação e salto de alta freqüência, é possível estabelecer uma ligação sem fio mais estável e confiável para resistir à radiação cada vez mais complexa no espaço e diminuir a probabilidade de um acidente. Na camada de protocolo, a solução é mais flexível, usando uma transmissão unidirecional para reduzir o tempo de estabelecimento sem fio e criar uma menor latência de conexão. Em aplicações industriais e comerciais, como agricultura, inspeção de linhas de força e vigilância, transmissões estáveis, seguras e confiáveis ​​são vitais para o sucesso. Referências 2 AD9361 folha de dados. Analog Devices, Inc. 3 AD9364 folha de dados. Analog Devices, Inc. 4 Ken Gentile. Nota de Aplicação AN-922, Digital Pulse-Shaping Filter Basics. Analog Devices, Inc. 5 Scott R. Bullock. Transceptor e Design de Sistema para Comunicações Digitais. 4ª edição. Wei Zhou é um engenheiro de aplicações da Analog Devices, Inc., que apoia o design e desenvolvimento de produtos e aplicações de transceptor de RF, especialmente na transmissão de vídeo sem fio e campos de comunicação sem fio. Ele tem trabalhado no ADIs Central Applications Center localizado em Pequim, China, por cinco anos, apoiando vários produtos, incluindo DDS, PLL, alta velocidade DACADC e relógios. Antes de ingressar na ADI, ele recebeu seu B. S. Graduado pela Universidade de Wuhan, em Wuhan, China, em 2006, e seu M. S. Graduado do Instituto de Eletrônica, Academia Chinesa de Ciência (CAS), Pequim, China, em 2009. Ele trabalhou como um RF e microondas circuitos e engenheiro de projeto de sistema para uma empresa de tecnologia aeroespacial de 2009 a 2011. Related Article Related Products RF Agile TransceiverHomemade Receptor GPS Na foto acima é o primeiro front-end, primeiro mixer e amplificador IF de um receptor GPS experimental. O SMA mais à esquerda é conectado a uma antena comercial com filtro LNA e SAW integral. Um primeiro oscilador local sintetizado aciona o SMA inferior. Os cabeçalhos de pin à direita são entrada de alimentação e saída IF. O último é conectado a um FPGA Xilinx que não só executa DSP, mas também hospeda um sintetizador de freqüência N fracionário. Mais sobre isso mais tarde. Eu estava motivado para projetar este receptor depois de ler o trabalho 1 de Matjax017E Vidmar, S53MV, que desenvolveu um receptor GPS a partir do zero, usando principalmente componentes discretos, há mais de 20 anos. Seu uso do DSP seguindo um IF de difícil limitação e um ADC de 1 bit me interessava. O receptor aqui descrito funciona com o mesmo princípio. Seu ADC de 1 bit é o IC de 6 pinos perto dos cabeçalhos de pinos, um comparador de saída LVDS. Escondido sob o ruído, mas não obliterado no bi-nível quantised mush que emerge são sinais de todos os satélites em vista. Todos os satélites GPS transmitem na mesma frequência, 1575.42 MHz, utilizando espectro de dispersão de sequência directa (DSSS). O transportador L1 é espalhado sobre uma largura de banda de 2 MHz ea sua resistência na superfície terrestre é -130 dBm. A potência de ruído térmico na mesma largura de banda é -111 dBm, de modo que um sinal de GPS na antena de recepção é de 20 dB abaixo do nível de ruído. Que qualquer um dos sinais presentes, sobrepostos uns aos outros e enterrados no ruído, são recuperáveis ​​após a quantização de dois níveis parecer contra-intuitiva. Eu escrevi uma simulação para me convencer. O GPS baseia-se nas propriedades de correlação de seqüências pseudo-aleatórias chamadas Códigos de Ouro para separar sinais de ruído e entre si. Cada satélite transmite uma seqüência única. Todos os sinais não correlacionados são ruídos, incluindo os de outros satélites e erros de quantificação de limitadores rígidos. Misturar com o mesmo código na fase correta de-espalha o sinal desejado e ainda espalha tudo o resto. Filtragem de banda estreita remove o ruído de banda larga sem afetar o sinal desejado (mais uma vez estreito). Hard-limiting (1-bit ADC) degrada SNR em menos de 3 dB, um preço vale a pena pagar para evitar hardware AGC. Atualização em Maio de 2013 Este é agora um receptor GPS portátil de 12 canais, verdadeiramente portátil, com software turnkey, que adquire e rastreia satélites e recalcula continuamente a sua posição sem intervenção do utilizador. O sistema completo (abaixo, à esquerda) é composto por: display LCD 16x2, computador modelo A de framboesa Pi, duas placas de circuito impressas personalizadas, antena de remendo comercial e bateria de iões de lítio. O consumo total de corrente do sistema é de 0,4A para uma duração de bateria de 5 horas. O Raspberry Pi é alimentado através do cabo de fita ligando seu cabeçalho GPIO à placa FPGA Frac7 e não requer nenhuma outra conexão. Atualmente, o Pi está rodando Raspbian Linux. Uma distro menor encurtaria o tempo para a primeira correção. Depois de inicializar a partir do SD-Card, o software de aplicação GPS inicia automaticamente. Na saída, ele fornece um meio para desligar corretamente o Pi antes de desligar. Pi desenvolvimento de software foi feito head-less via SSH e FTP através de um dongle USB Wi-Fi. O código fonte ea documentação podem ser encontrados na parte inferior desta página. Ambos os PCBs personalizados são placas simples de 2 camadas PTH com planos de solo contínuos na parte inferior. Indo no sentido horário em torno do Xilinx Spartan 3 na placa FPGA Frac7: de 12 oclock para 3 oclock são o filtro de loop, VCO, divisor de energia e prescaler do sintetizador de freqüência de microondas inferior direito são o joystick e conector JTAG e, às 6 oclock, um Pin para o cabo de fita Framboesa Pi. A extrema esquerda é o conector LCD. Próximo à esquerda é um oscilador de cristal controlado por tensão com compensação de temperatura (TCVCXO) proporcionando uma freqüência de referência estável, vital para a recepção GPS. O TCVCXO é bom, mas não completamente até GPS padrão quando operando un-boxed em locais ventosos. O sopro sobre ele desloca o oscilador de cristal de 10.000000 MHz em cerca de 1 parte em 10 milhões ou 1 Hz, que é ampliado 150 vezes pelo sintetizador PLL. Isso é suficiente para desbloquear momentaneamente os circuitos de rastreamento via satélite, se feito de repente. O dispositivo é também ligeiramente sensível a infravermelhos, v. g. De lâmpadas de halogéneo e controles remotos de TV Quando lançado pela primeira vez em 2011, este era um receptor de quatro canais, o que significa que só poderia acompanhar quatro satélites simultaneamente. Pelo menos quatro são necessários para resolver a posição do usuário e viés de relógio do receptor, mas maior precisão é possível com mais. Nessa versão original, quatro instâncias idênticas do módulo de rastreador preencheram o FPGA. Mas a maioria dos fracassos só eram cronometrados uma vez por milissegundo. Agora, uma CPU soft-core personalizada dentro do FPGA serializa o processamento e apenas 50 do tecido FPGA é necessária para um receptor de 8 canais ou 67 para 12 canais. O número de canais é um parâmetro na fonte e pode ir mais alto. Precisão de posicionamento é melhor quando a antena pode ver 360deg de céu e receber sinais de todas as direções. Geralmente, quanto mais satélites estiverem visíveis, melhor. Dois ou mais satélites no mesmo rolamento podem levar ao que é chamado de má geometria. A melhor solução até agora foi plusmn1 metros em um local muito aberto usando 12 satélites, mas a precisão é tipicamente plusmn5 metros em locais mais pobres com menos satélites. Atualização de setembro de 2014 O código-fonte para este projeto foi relançado sob a GNU General Public License (GPL). Arquitetura Processamento é dividido entre FPGA e Pi por complexidade e urgência. O Pi lida com o levantamento de peso intensivo em matemática em seu próprio ritmo. O FPGA sintetiza o primeiro oscilador local, presta serviços de alta prioridade em eventos em tempo real e rastreia os satélites de forma autônoma. O Pi controla o FPGA através de uma interface SPI. Convenientemente, o mesmo SPI é usado para carregar o fluxo de bits de configuração FPGA e código executável binário para a CPU incorporada. O FPGA também pode ser controlado através de um cabo USB JTAG da plataforma Xilinx a partir de um PC com Windows e detecta automaticamente qual interface está em uso. As frequências L1 são convertidas para baixo para uma 1ª FI de 22,6 MHz, misturando-se com um oscilador local de 1552,82 MHz na placa frontal GPS3. Todo processamento de sinal IF e banda base subseqüente é feito digitalmente no FPGA. Dois controladores proporcional-integrais (PI) por satélite, porta-faixas e fase de código. Os dados NAV transmitidos pelos satélites são coletados em memória FPGA. Isto é carregado para o Pi, que verifica a paridade e extrai efemérides do fluxo de bits. Quando todos os parâmetros orbitais necessários são coletados, um instantâneo é tirado de certos contadores internos FPGA, a partir do qual o tempo de transmissão é calculado para mais precisão 15ns. Muito do sintetizador 1552.82 MHz é implementado no FPGA. Pode-se esperar problemas de jitter, co-hospedar um detector de fase com outra lógica, mas funciona. A pureza espectral da saída do sintetizador é excelente, mesmo que o núcleo FPGA esteja afastando-se furiosamente e não todas em freqüências harmonicamente relacionadas. Esta abordagem foi tomada porque uma placa semelhante ao Frac7 já existia a partir de um projeto de sintetizador anterior. A adição de um front-end foi o caminho mais curto para um protótipo de receptor. Mas essa primeira versão não era portátil: tinha requisitos de energia inconveniente e nenhum padrão de frequência a bordo. Processamento de sinal até e incluindo o limitador rígido: O comparador LMH7220 tem uma tensão máxima de deslocamento de entrada de 9,5mV. Ruído térmico ampliado deve confortavelmente exceder este para mantê-lo toggling. Os sinais fracos do GPS só influenciam o comparador perto de cruzamentos de zero Eles são amostrados pelo ruído Para estimar o nível de ruído na entrada do comparador nós tabulamos ganhos, perdas de inserção e números de ruído: O ruído dentro da banda na saída do misturador é -1740.828-1.5-3.920- 610log10 (2,5e6) -73 dBm ou 52microV RMS. O misturador é resistivamente terminado em 50-ohms e os estágios depois trabalham em impedância mais alta. A tira discreta de IF tem um ganho de tensão total de 1000 para que o nível de entrada do comparador seja 52mV RMS. O LMH7220 adiciona 59 dB de ganho, totalizando 119 dB para todo o IF. Implantar tanto ganho em uma freqüência foi um risco. Para minimizá-lo, circuitos balanceados sobre um plano de massa sólido foi usado e blindado par trançado transporta a saída para o FPGA. A motivação era a simplicidade, evitando uma segunda conversão. Na prática, o circuito é estável, então o jogo valeu a pena. O desacoplador activo Q1 fornece 5V para o LNA remoto. O amplificador de MMIC U2 fornece ganho de 20 dB (não em IF) e garante baixa figura geral de ruído do sistema, mesmo se forem usados ​​cabos de antena longos. L1 e L2 são invólucros de microondas de mão com freqüência de auto-ressonância muito alta, montados perpendicularmente um ao outro e livres do plano de terra. Vento 14 voltas, ar-cored, diâmetro interno de 1mm dos comprimentos de 7cm do fio de cobre esmaltado 32swg. Verificado com o gerador de rastreamento em um Marconi 2383 SA, estes eram bons para 4 GHz. O Mini-Circuits MBA-15L DBM foi escolhido por sua baixa perda de conversão de 6 dB em 1,5 GHz e baixa exigência de drive de 4 dBm LO. R9 termina a porta IF. Três etapas de amplificador IF totalmente diferenciadas seguem o misturador. Baixo-Q paralelo circuitos sintonizados entre coletores definir a largura de banda -3 dB em torno de 2,5 MHz e evitar a acumulação de DC offsets. L4, L5 e L6 são rolos Toko 7mm. O BFS17 foi escolhido por sua alta (mas não muito alta) 1 GHz f T. I e é 2mA para o mais baixo ruído e betar e. O primeiro IF de 22,6 MHz é convertido digitalmente para 2,6 MHz por subamostragem a 10 MHz no FPGA. 2,6 MHz está perto do centro da banda de 5 MHz Nyquist. É melhor evitar o centro exato, por razões que serão explicadas mais tarde. Várias outras primeiras frequências IF são possíveis: 27,5 MHz, que produz inversão de espectro na 2 ª IF, também foi tentado com sucesso. Há um trade-off entre os problemas de imagem com menor e BFS17 disponível ganho em freqüências mais altas. Detecção de sinal implica resolver três incógnitas: o que os satélites estão em vista, seus turnos Doppler e fases de código. Uma busca sequencial deste espaço tridimensional a partir de um chamado arranque a frio pode levar muitos minutos. Um início quente usando dados de almanaque para prever posições e velocidades ainda requer uma pesquisa de código. Todas as 1023 fases de código devem ser testadas para encontrar o pico máximo de correlação. O cálculo de 1023 integrações de correlação no domínio do tempo é muito caro e redundante. Este receptor GPS utiliza um algoritmo baseado em FFT que testa todas as fases de código em paralelo. Do frio, leva 2,5 segundos em um Pentium de 1,7 GHz para medir a força do sinal, o deslocamento Doppler ea fase de código de cada satélite visível. A framboesa Pi é um pouco mais lento. Com a conjugação de over-bar, a função de correlação cruzada y (Tau) do sinal complexo s (t) eo código c (t) deslocado pelo deslocamento Tau é: O Teorema de Correlação indica que a transformada de Fourier de uma integral de correlação é igual a O produto do complexo conjugado da transformada de Fourier da primeira função ea transformada de Fourier da segunda função: FFT (y) CONJUGADO (FFT) FFT (c) A correlação é realizada na banda de base. O código de 1.023 Mbps CA é 1023 chips ou 1ms de comprimento. O comprimento FFT para frente deve ser um múltiplo. A amostragem a 10 MHz durante 4 ms resulta num tamanho de compartimento FFT de 250 Hz. 41 Deslocamentos Doppler devem ser testados girando os dados do domínio da freqüência, uma caixa de cada vez, até mais de 20 compartimentos plusmn5 KHz. A rotação pode ser aplicada a qualquer uma das funções. O primeiro IF de 22,6 MHz do ADC de 1 bit é sub-amostrado por um relógio de 10 MHz no FPGA, convertendo-o digitalmente para um 2º IF de 2,6 MHz. No software, o 2º FI é convertido para baixo para banda base complexa (IQ) usando osciladores locais em quadratura. Para sinais de dois níveis, os misturadores são simples portas XOR. Embora não mostrado acima, as amostras são temporariamente buffered em memória FPGA. O Pi não é capaz de aceitá-los em 10 Mbps. 1.023 Mbps e 2.6 MHz são gerados por acumuladores de fase de oscilador com controle numérico (NCO). Estas frequências são bastante grandes em comparação com a taxa de amostragem, e não são sub-harmônicos exatos dele. Consequentemente, os NCOs têm esporões fracionários. O número de amostras por chip de código cai entre 9 e 10. Felizmente, os receptores DSSS são tolerantes a interferentes de banda estreita, externos ou autogerados. A banda base complexa é transformada no domínio da frequência por uma FFT directa que só necessita de ser calculada uma vez. Uma FFT de cada código de CA de satélites é pré-calculada. O tempo de processamento é dominado pelo loop mais interno que executa deslocamento, conjugação, multiplicação complexa e um FFT inverso por teste Doppler por satélite. O GPU Raspberry Pis Videocore poderia ser alavancado para acelerar as coisas. A uma taxa de amostragem de 10 MHz, a fase de código é resolvida para os 100ns mais próximos. A saída CCF típica é ilustrada abaixo: Cálculo de pico a potência média sobre estes dados dá uma boa estimativa de SNR e é usado para encontrar os sinais mais fortes. Os seguintes foram recebidos às 20:14 GMT em 4 de março de 2011, em Cambridge, Reino Unido, com a antena em uma borda exterior da janela norte: De latitudes norte, mais satélites GPS serão geralmente encontrados no céu do sul, isto é, em direção ao equador. Tirar amostras mais longas aumenta SNR, revelando sinais mais fracos, mas o cancelamento ocorre quando a captura abrange transições de dados NAV. O comprimento FFT dianteiro é um número inteiro de milissegundos, no entanto, a FFT inversa pode ser encurtada, simplesmente por jogar dados fora em caixas de freqüência mais alta. SNR é preservada, mas a fase de código não é tão resolvida. No entanto, uma boa estimativa da posição de pico é obtida pela média ponderada dos dois compartimentos adjacentes mais fortes e testes off-air sugerem que isso poderia funcionar até mesmo para curtos intervalos FFT inversos. Depois de detectar um sinal, o próximo passo é bloquear, rastreá-lo e desmodular os dados de NAV de 50 bps. Isto requer dois loops de fase de interdependência (PLLs) para rastrear o código e a fase da portadora. Estes PLLs devem operar em tempo real e são implementados como funções DSP no FPGA. O software Pi tem uma função de supervisão: decidir quais satélites monitorar, monitorar o status de bloqueio e processar os dados NAV recebidos. Os loops de rastreamento são bons em manter bloqueio, porque eles têm largura de banda muito estreita no entanto, esta mesma característica torna-os pobres em adquirir bloqueio sem ajuda. Eles não conseguem ver além da largura de banda do loop para capturar algo mais distante. As fases iniciais e as frequências devem ser pré-ajustadas para a fase de código medida eo deslocamento Doppler do satélite alvo. Isto é orquestrado sob controle Pi. Os loops devem ser in-lock desde o início e permanecer assim. A fase de código é medida em relação à amostra FFT. O código NCO no FPGA é reiniciado no início da amostragem e acumula fase em um fixo 1.023 MHz. É alinhado mais tarde com o código recebido parando brevemente o acumulador de fase. O deslocamento Doppler na portadora de 1575,42 MHz é plusmn5 KHz ou plusmn3 ppm. Também afeta a taxa de código 1.023 Mbps por plusmn3 chips por segundo. O comprimento da pausa é ajustado para fluência de código no tempo desde a tomada da amostra. Felizmente, o código Doppler é proporcional ao portador Doppler para o qual temos uma boa estimativa. Software de hardware dividido No diagrama abaixo, o código de cores mostra como a implementação do DSP de rastreamento agora é dividida entre hardware e software. Anteriormente, tudo isso era feito em hardware, com instâncias paralelas idênticas repetidas para cada canal, tornando o uso ineficiente de recursos FPGA. Agora, o processamento mais lento de 1 KHz é feito por software, e duas vezes mais canais podem ser acomodados em metade do FPGA real-estate. Os seis acumuladores de integração e dump (Sigma) são bloqueados em um registro de deslocamento na época do código. Uma sinalização de solicitação de serviço sinaliza a CPU, que lê o bit de dados - em série. Com 8 canais ativos, 8 de tempo de CPU é gasto executando a instrução oprdBit Mas há tempo de sobra, e IO serial usa FPGA tecido economicamente. Luxos como RSSI e registro de IQ (por exemplo, para gráficos de dispersão) podem agora ser proporcionados. As funções de transferência do filtro de laço F (z) engulam 2 da largura de banda da CPU por canal ativo. Estes são controladores padrão proporcional-integrais (PI): a precisão de 64 bits é usada e os coeficientes de ganho KI e KP, embora restritos a potências de 2, são dinamicamente ajustáveis. Cada canal tem que esperar sua vez, as atualizações de taxa de NCO podem ser adiadas por dezenas ou centenas de microssegundos após uma época de código, mas isso introduz um desvio de fase desprezível em freqüências onde a margem de fase é determinada. Rastros finos são 1-bit, representando nocionalmente plusmn1. O portador de 2,6 MHz é primeiro desdobrado misturando-se com códigos cedo, tarde e pontuais. Os produtos de banda base I e Q complexos da segunda ordem de misturadores de portão XOR são somados em 10000 amostras ou 1ms. Esta filtragem de baixa passagem reduz drasticamente a largura de banda de ruído e, assim, aumenta SNR. O downsampling para 1 KHz necessita de caminhos de dados mais avançados no domínio do software. A fase de código é rastreada usando um loop de atraso-bloqueio convencional ou um gate de atraso antecipado. A potência nos canais precoce e tardio é calculada usando P I 2 Q 2 que é insensível à fase. Códigos precoce e tardio são um chip distante, ou seja, frac12 chip à frente e por trás pontual. Este diagrama ajuda a obter o erro correto: Um Costas Loop é usado para o rastreamento de veiculos e recuperação de dados NAV no canal pontual. Os dados NAV, m, são retirados do bit de sinal do braço I com uma incerteza de fase de 180 graus. K é a amplitude do sinal recebido e theta é a diferença de fase entre a portadora recebida (sem modulação) e o NCO local. K varia de cerca de 400 para os sinais recuperáveis ​​mais fracos até mais de 2000 para os mais fortes. Observe como o termo de erro retornado ao controlador da planta F (z) no loop Costas é proporcional à potência do sinal recebido ksup2. O slope de rastreamento e, portanto, o ganho de loop, também variam com a potência do sinal no loop de código. Abaixo está um gráfico de Bode de ganho de malha aberta para o Costas Loop em k500: Costas Loop largura de banda é de cerca de 20 Hz, o que é ideal para rastreamento de transportadora. A largura de banda do loop de código é de 1 Hz. O poder de ruído em tais largura de banda é pequeno e os loops podem rastrear sinais muito fracos. Os kI acima e kP trabalho para a maioria dos sinais, mas precisa cair um entalhe para o muito mais forte. Scilab prevê, e parcelas de dispersão confirmar, o início da instabilidade em kge1500. Os erros de paridade não ocorrem a menos que as amostras se desviem para a metade oposta do plano de QI. (I) Instabilidade em kge1500 O acima são 2 quadros consecutivos de 5 subframes cada. Subframes são de 300 bits de comprimento e levar 6 segundos para transmitir. A coluna 1 é o preâmbulo 10001011. Isto aparece no início de cada subtrama mas pode ocorrer em qualquer lugar nos dados. O contador de 17 bits na coluna 5 é hora-de-semana (TOW) e redefine a zero na meia-noite domingo. O contador de 3 bits na coluna 7 é o ID de subtrama 1 a 5. As subtramas 4 e 5 são subcomutadas em 25 páginas cada e uma mensagem de dados completa compreendendo 25 quadros completos leva 12,5 minutos para transmitir. Estou usando apenas os dados nas subquadras 1, 2 e 3 no momento. Solução para a posição do usuário Todo satélite GPS transmite sua posição e o tempo. Subtrair tempo enviado a partir do tempo recebido e multiplicar pela velocidade da luz é como um receptor mede a distância entre si e os satélites. Fazer isso com três satélites resultaria em três equações simultâneas em três incógnitas (posição do usuário: x, y, z) se o tempo exato estava disponível. Na prática, os relógios receptores não são precisos o suficiente, o tempo exato é um quarto desconhecido, quatro satélites são, portanto, necessários e quatro equações simultâneas devem ser resolvidos: Um método iterativo é usado porque as equações são não-lineares. Usando o centro de terra (0, 0, 0) eo tempo aproximado como ponto de partida, o algoritmo converge em apenas cinco ou seis iterações. A solução é encontrada mesmo se o erro do relógio do usuário for grande. Os satélites carregam relógios atômicos, mas estes também têm erros e os coeficientes de correção na subtrama 1 devem ser aplicados ao tempo de transmissão. Os ajustes típicos podem ser centenas de microsegundos. O tempo de transmissão não corrigido é formado por dimensionamento e adição de vários contadores. Tempo-de-semana (TOW) em segundos desde meia-noite domingo é enviado cada subframe. As bordas de dados marcam intervalos de 20 ms dentro de subtramas de 300 bits. O código é repetido 20 vezes por bit de dados. O comprimento do código é de 1023 chips e a taxa de chip é de 1,023 Mbps. Finalmente, os 6 bits mais significativos da fase de código NCO são anexados, fixando o tempo de transmissão para plusnn 15ns. As posições dos satélites no tempo de transmissão corrigido são calculadas usando efemérides nas subtramações 2 e 3. A posição orbital em um tempo de referência toe (tempo de efemérides) é fornecida juntamente com parâmetros permitindo calcular a posição (x, y, z) até alguns Horas antes ou depois. Efemérides são atualizados regularmente e satélites só transmitem os seus próprios. As órbitas de longo prazo de toda a constelação podem ser preditas com menos precisão utilizando os dados do Almanaque nas subtramações 4 e 5, no entanto, isto não é essencial se for utilizada uma pesquisa rápida baseada na FFT. As soluções são calculadas em coordenadas centradas na terra, fixadas na terra (ECEF). A localização do usuário é convertida em latitude, longitude e altitude com uma correção para excentricidade da terra, que se projeta no equador. Os diagramas de dispersão abaixo ilustram a repetibilidade, o benefício da média e o efeito de escolhas de satélites pobres. Quadrados de grade são 0.001deg em cada lado. Os pontos azuis marcam 1000 correções. Os triângulos amarelos marcam os centros de gravidade: (i) Rebordo da janela virado para o norte (ii) Antena da cobertura (iii) Rebordo da janela orientada para o leste O conjunto apertado (ii) foi obtido utilizando satélites em quatro diferentes partes do céu. Apenas a antena no último andar tinha uma visão clara em todas as direcções. Mas as boas correções foram obtidas pela média, mesmo quando metade do céu estava obscurecida. As correções do telhado também exibem o espalhamento como (i) e (iii) se os satélites errados forem escolhidos. As soluções acima foram geradas sem compensar os atrasos de propagação ionosférica usando os parâmetros na página 18 da subtrama 4 que devem ser aplicados porque este é um receptor de frequência única. A refração ionosférica aumenta o comprimento dos trajetos entre usuários e satélites. Em abril de 2012, eu corrigi um bug que causou erros significativos nas soluções de posição do usuário. Originalmente, ao não transformar as posições de satélites de coordenadas terrestres (ECEF) centradas na terra (ECI), eu estava efetivamente ignorando a rotação da Terra durante os 60 a 80 ms que os sinais estavam em vôo. Agora estou vendo precisão de solução posicional de plusmn 5 metros após a média, mesmo com visibilidade de satélite limitada. Ive criado um apêndice mostrando como a solução iterativa é desenvolvida, a partir de uma equação geométrica intervalo, que é linearizado usando uma Taylor Series expansão, e resolvido por métodos de matriz, para o caso especial de quatro satélites ou o caso geral de mais, com a Opção de usar quadrados mínimos ponderados para controlar a influência de determinados satélites. Você encontrará este e código-fonte da solução C nos links na parte inferior da página. Estou grato a Dan Doberstein por me enviar um rascunho de seu livro de GPS 2 que me ajudou a entender o algoritmo de solução. O governo oficial dos EUA GPS Interface Specification 3 é uma referência essencial. Monitor de sinal A disposição de circuito acima, implementada na maior parte em FPGA, de-espalha tomando o produto do 1-bit IF e do código pontual, deixando a modulação de dados de 50 bps. Um pequeno entalhe devido à supressão de portadora BPSK pode ser visto: Estes espectros mostram a mesma transmissão de propagação em diferentes intervalos e largura de banda de resolução (RBW). O deslocamento Doppler foi de -1,2 KHz. O piso do ruído é o ruído térmico da antena amplificado e filtrado pela faixa IF. -3 dB de largura de banda parece em torno de 3 MHz, ligeiramente maior do que o planejado. O portador de espalhamento é 5 dB acima do ruído a 30 KHz RBW e 25 dB acima a 300 Hz RBW. A intensidade do sinal recebido na antena pode ser estimada como -174110log10 (30e3) 5 -123 dBm. Ainda me espanta como a informação de domínio freqüência bem é preservada através de hard-limiting O transmissor LVDS tem uma corrente de saída constante de 1mW em 100 ohms. O pico de potência visto na SA não pode exceder 0 dBm. Aqui, vemos essa potência disponível espalhada por uma faixa de freqüências. A densidade de espectro de potência integrada de banda larga deve ser o primeiro oscilador local Ive sido a construção de sintetizadores experimentais fraccionada-N usando lógica programável de propósito geral por vários anos: Xilinx Spartan 3 FPGA Frac7 foi construído para este propósito, mas eu não tinha idéia Frac5 seria usado em um GPS Quando eu originalmente concebido. A foto abaixo mostra como a saída VCO do ROS-1455 no Frac5 foi dividida resistivamente entre a saída SMA e um preditor Hittite HMC363 dividir-por-8. A saída do divisor de 200 MHz é encaminhada (diferencialmente) para o FPGA cuja fase o bloqueia para uma referência mestre usando métodos documentados em meus projetos anteriores. Circuity microondas em Frac7 é semelhante, mas usa um divisor Mini-Circuits 3dB. Elevada estabilidade e baixo ruído de fase são alcançados, como pode ser visto nos espectros de saída de VCO mostrados abaixo. Quando o Frac5 foi originalmente desenvolvido, como um sintetizador de freqüência dedicado, o alternar simultâneo em freqüências não harmonicamente relacionadas foi evitado para minimizar os estímulos de intermodulação. O FPGA era estático quando pulsos de relógio que a saída de detector de fase alternada cruzou o tecido. Nenhum luxo como é prático quando o FPGA está hospedando um receptor GPS no entanto, felizmente, a saída do oscilador local é bom o suficiente: Os analisadores de espectro Marconi 2383 50 MHz STD OUTPUT foi usado como a fonte de referência mestre para Frac5 e todos os relógios receptor interno GPS. Os receptores GPS precisam de precisões melhores do que 1 ppm (partes por milhão) para medir os desvios Doppler de +5 KHz na portadora L1 de 1575,42 MHz. Qualquer incerteza de frequência exigiria um intervalo de pesquisa mais amplo. Embedded CPU Meu receptor GPS original só poderia rastrear 4 satélites. O tecido disponível não foi utilizado eficientemente e o FPGA estava cheio. A lógica idêntica foi replicada para cada canal e somente habilitada para clock na era de código de 1 KHz. Taxas de atualização de GPS são bastante não exigentes ea maioria do processamento paralelo pode ser feito facilmente seqüencialmente. A incorporação de uma CPU para esta tarefa aumentou tanto o número de canais quanto o espaço livre no FPGA. Esta CPU executa diretamente as primitivas FORTH como instruções nativas. Os visitantes da minha página do Mark 1 FORTH Computer já estarão cientes do meu interesse no idioma. FORTH não é mainstream e seu uso aqui pode ser uma barreira esotérica no entanto, eu não pude resistir a fazer outra CPU FORTH, desta vez em FPGA, depois de ver o excelente projeto J1, que foi uma inspiração. FORTH é uma linguagem baseada em pilha, o que basicamente significa que a CPU tem pilhas em vez de registradores de uso geral. Wikipedia tem uma boa visão geral. Recursos de FPGA: 360 fatias 2 BRAMs Execução de instrução de ciclo único Arquitetura de pilha de 32 bits e caminhos de dados de ALU Arquitetura de pilha de 32 bits e caminhos de dados ALU 64 bits de precisão dupla Multiplicador de hardware 2k byte (expansível a 4k byte) Desenvolvimento de código de montador Memória e IO Dois BRAMs são usados: um para a memória principal, o outro para pilhas. Xilinx bloco RAM é dual portado, permitindo que uma instância para hospedar dados e pilhas de retorno. Cada ponteiro de pilha varia mais da metade da matriz. A dupla movimentação da memória principal permite o acesso a dados simultâneos com a busca de instruções. Uma porta de memória é endereçada pelo contador do programa, a outra por T, o topo da pilha. Gravações para a porta endereçada por PC também são usadas para download de código, o contador de programa fornece endereços incrementais. Código e dados compartilham a memória principal, que é organizada como 1024 (expansível a 2048) palavras de 16 bits. Os acessos de memória podem ser 16, 32 ou 64 bits, alinhados por palavras. Todas as instruções são de 16 bits. O código total mais o tamanho dos dados do aplicativo GPS é inferior a 750 palavras, apesar de todos os loops serem desenrolados. O IO não é mapeado em memória, ocupando seu próprio espaço de seleção de 36 bits (12 em 12 eventos fora 12). A codificação One-hot é usada para simplificar a decodificação de seleção. As operações de E / S são variadas de 1 bit serial, 16 ou 32 bits paralelo. Os dados em série deslocam 1 bit por ciclo de relógio. Os eventos são usados ​​principalmente como estroboscópios de hardware e diferem das gravações ao não estourar a pilha. Formato de instrução 24 instruções de um possível 32 são alocadas atualmente no espaço do opcode h80XX - h9FXX. Essas operações são principalmente de ALU de pilha de operando zero. A opção ret, que executa o retorno da sub-rotina, executa em paralelo, no mesmo ciclo. Add-imediata é a única instrução de um operando. Uma opção de carry-in aumenta a precisão de adição (empilhada, implícita). HF0000 - hFFFF é de reposição. Os caminhos de dados Stack e ALU são de 32 bits, contudo, são suportadas operações de 16, 32 e 64 bits. Os valores de 64 bits ocupam dois locais na pilha, com bits menos significativos no topo. Topo da pilha, T e próximo na pilha, N, são registrados fora do BRAM para eficiência. Para além do deslocamento à esquerda de 64 bits (opshl64), que é de ligação directa para a execução de ciclo único, todas as outras funções de dupla precisão são sub-rotinas de software. Linguagem de montagem O binário embutido de GPS foi criado usando o Macro MASER Assembler de Microsofts. Isso só suporta mnemônicos x86 mas opcodes são declarados usando equ e código é montado usando diretivas dw. MASM não só fornece resolução de rótulo, expansão de macro e avaliação de expressão, mas mesmo estruturas de dados O operador MASP dup () é usado extensivamente para desenrolar loops, e. Dw N dup (opcall dest) chama uma sub-rotina N vezes. Este fragmento dá algum sabor do estilo da fonte. Stack-effect é comentado em cada linha: opfetch16 e opstore16 são primitivas. Opstore32 e opstore64 são sub-rotinas ou instruções compostas utilizáveis ​​como se fossem primitivas. T é na verdade 15: 0,31: 16 após opswap16. Mas nós não nos preocupamos com os 16 bits superiores aqui. Opstore16 deixa a profundidade da pilha de endereços só pode mudar plusmn1 por ciclo. Os puristas podem preferir: dw N addi Host interfaces série O FPGA pode ser controlado via SPI pelo Raspberry Pi, ou por um PC com Windows usando um cabo Xilinx plataforma USB JTAG. Existem dois níveis de prioridade de solicitação: Send new command e poll for response to previous As novas imagens de código são copiadas para a memória principal através de um terceiro BRAM que faz a ponte entre os domínios de CPU e serial clock. Assim descarregadas, as imagens binárias são executadas automaticamente. Os comandos do host são capturados na ponte BRAM ea CPU é sinalizada para a ação deles. Suas respostas são coletadas pelo host da ponte na próxima varredura. As pesquisas de loop principais de nível superior para solicitações de serviço de host. A primeira palavra de qualquer mensagem do host é um código de comando. Requests are dispatched through the Commands jump table: optor moves vector to the return stack. Some host requests (e. g. CmdGetSamples) elicit lengthy responses. Data ports on the CPU side of the bridge are 16-bit. The CPU can read and write these via the data stack however, more direct paths exist for uploading main memory and GPS IF samples. The instruction opwrEvt GETMEMORY transfers a memory word directly to the bridge, using T as an auto-incrementing pointer. GETMEMORY is the only event which has stack effect. The instruction opwrEvt GETSAMPLES transfers 16 bits from the IF sampler: Unrolling loops at assembly time with dup() trades code size for performance, avoiding a decrement-test-branch hit and the entire application binary is still tiny however, long loops must be nested, as illustrated above. CHANNEL data structure An array of structures holds state variables and buffered NAV data for the channels. MASM has excellent support for data structures. Field offsets are automatically defined as constants and the sizeof operator is useful. The epoch service routine (labelled Method: ) is called with a pointer to a CHANNEL structure on the stack. Affecting OO-airs, stack-effect comments refer to it as this throughout the routine. A copy is conveniently kept on the return stack for accessing structure members like so: The Chans array is regularly uploaded to the host. Raspberry Pi application software The Raspberry Pi software is multi-tasked using what are variously known as coroutines, continuations, user-mode or light-weight threads. These co-operatively yield control, in round-robin fashion, using the C library setjmplongjmp non-local goto, avoiding the cost of a kernel context-switch: Up to 16 threads can be active:Embedded Engineering In post. Eu vou mostrar-lhe como implementar o filtro digital mais simples possível filtro quotmoving média. Embora seja muito fácil de implementar, mas ainda em muitas aplicações isso é mais que bom o suficiente. Por exemplo, reduzindo o ruído aleatório do sinal. Ofcourse quando é muito simples tem problemas como. Ele não tem resposta de filtro muito afiada. Canal 1. Varredura de 20Hz a 6Khz, Canal 4 (Verde) saída filtrada 15 pontos, saída M (Vermelho) no domínio freq Sábado, 1 de outubro de 2016 Este projeto é a parte final em Fazer uma Luz Solar realmente poderosa. Neste projeto nós intigrate LTC3478 Based philips lumileds Driver e BQ24650 Baseado MPPT Solar Li-Ion controlador de carga. Nós estaremos usando o total de 3 9 Watt cada placas de Driver de LED e um controlador de carga para carregar 6 Cell 7.6V 20000mah li-lion bateria, há 4 display LED gráfico de barras para mostrar estimativa de nível de bateria e um único botão para controlar Onoff, De Brilho. E selecione um. Todas ou algumas das placas de LED para litup. Não há muito a descrever em termos de schmeatic e firmware como todos os Firmware e Schmeatic aer já no meu github account. User painel de interface é feita de PCB com 4 baterias status LED uma porta para painel solar conector e um interruptor de controle. Quando a bateria é chargin LED estado exibido em conformidade e quando a bateria está descarregando led estado atualizado em conformidade. Na adição ao pequeno projeto de iluminação solar que eu estava trabalhando em eu criei este pequeno controlador de carga solar para carregar a bateria de íon de lítio (li-ion). Circuito Utilize o Texas Instrument BQ24650 no centro do loop para controlar a carga. Como o circuito tem mosfet externo tão máxima corrente 160charge pode ser ajustada para valores realmente altos. 160Circuit aceitam valores do painel solar de 5V a 28V. Eu testei com 12V nominal (17Volts circuito aberto) 160. e 24 Volts nominal painel solar em carga da bateria até 4A. Atualmente instalado em minha casa desde alguns meses Carregar uma bateria 20000 mAh li-ion. Circuito tem grande 4 pinos de alta capacidade atual conector Molex para painel solar. Conector de 6 pinos para a bateria e interruptor de carga. Também é possível conectar o NTC para a monitoração da temperatura da bateria. BQ24650 automaticamente pode monitorar temprature da bateria. O microcontrolador dedicou a saída de 3 PWM para o escurecimento do diodo emissor de luz e o encabeçamento do pino de 6 gpio para o melhor estado conduzido e uma chave da interface de usuário. Hallo zu Deutsch Leser. Das ist mein erste Artikel auf Deutsch. Eu sou um advogado da Alemanha que desembaracei de um projeto de lei alemão, que foi publicado em inglês e em alemão. Eu sou um autor de um livro em inglês. Meine erfahrungen auf deutsch kurze ist 160 160 160 160So beginnen wir. Heutzutage arbeite ich an einem Projekt. QuotMPPT Solar li-ion Laderquot. O diodo emissor de luz do diodo emissor de luz do diodo emissor de luz do diodo emissor de luz do eine160sehr160vollmacht 25W LED. Aber 25W ist viel pele ein160LED-Triber. O diodo emissor de luz do diodo emissor de luz 25 W LED-Triber zu entwerfen. Hauptsorge sobre a projeção quotMPPT Solar - o Laderquot ist zu Lernen com o MPPT Larder Arbeitet und wie die software Algorithmus sind. Das Projekt ist ein teil von ein Projekt was publiziere ich spter.160 160 160 160 Reticentemente eu estava trabalhando um projeto de iluminação solar 160little , Eu preciso de uma iluminação louca realmente brilhante de 25W 160LED. Mas a questão foi para 25W que um monte de energia para LED e que exigem algumas habilidades para fazer uma alta potência LED driver. Objetivo primário deste projeto é obter um conhecimento de descida de MPPT controlador de carga e MPPT algoritmos de carregamento. Este projeto faz parte do projeto. Que vou postar mais tarde. 160160160 Este post vai ser a quarta parte da série de fazer um Linux capaz ARM Board em casa. Clique em Primeiro. Segundo e Terceiro para ir para Peças anteriores, então vamos começar. O que é um Bootloader, Por que precisamos it160 um carregador de boot é um programa que é o primeiro a ser executado pela CPU. Ele severs algum propósito muito específico quotconfiguring algumas coisas muito essenciais antes de carregar o programa principal (pode ser OS) na memória principal. Por isso é chamado de carregador de inicialização. Dependendo das necessidades carregador de inicialização pode fazer alguma outra tarefa (vamos cobri-los aqui). Existem várias formas e tamanhos dos bootloaders. Todos eles servem praticamente o mesmo propósito. Com microcontroladores. Algumas vezes ele não realmente carregar o programa principal na memória, mas passar o ponteiro de execução para o programa principal para que o programa principal pode executar diretamente a partir da memória onde está. Board Com 4,3 polegadas LCD executando o aplicativo Qt5 para exibir JPEG Image e Time

No comments:

Post a Comment