fundo
Estou trabalhando com um cliente em um grande projeto que exige que um chip de rede personalizado seja projetado para resolver os requisitos de transferência de dados no projeto. A rede pretende enviar pequenos pacotes a alguns centímetros de um PCB para outro através de um único cabo de par trançado. Iremos projetar e especificar o protocolo de rede, e outra empresa será responsável pela implementação do silício.
Eu estimo que a taxa de dados de 20 Mbps entre os nós lidará facilmente com a quantidade de dados que precisa ser enviada, com bastante espaço para a cabeça caso a quantidade de dados aumente no futuro.
Problema
O cliente está me perguntando por que estou especificando apenas 20 Mbps. Por que não algo como 1Gbps? Isso não seria melhor? Intuitivamente, acho que aumentar a taxa de dados massivamente além do necessário seria uma má idéia. Inicialmente, pensei que o cabeamento precisaria ser blindado (o que eu não quero), mas olhando para as categorias de cabos Ethernet, vejo que a Gigabit Ethernet pode ser executada no cabo Cat 6, que não precisa ser blindado.
Outras restrições
- O projeto é desesperadamente limitado por espaço, e não temos espaço para coisas como magnetismo, a menos que seja um componente muito pequeno (0603 máx.).
- Os cabos precisam ser o mais finos e flexíveis possível.
- O dispositivo funcionará com a energia do plug-in, portanto, não há um requisito específico de baixa energia.
Questão
Quais são os problemas, em termos de design de silício, cabeamento e qualquer outra coisa, que possam ser enfrentados em 1Gbps, que não seriam tão ruins em 20Mbps? Devo seguir a sugestão do meu cliente de implementar a rede em 1 Gbps ou devo insistir em implementar apenas o que é necessário?
Como estamos sob uma NDA rigorosa, não posso fornecer muitos detalhes sobre nossos requisitos. Mas, por favor, deixe um comentário se precisar de esclarecimentos.
fonte
Respostas:
Alguns motivos:
Poder
Velocidade mais rápida significa mais potência. Você não precisa apenas de circuitos analógicos mais rápidos, que consumirão mais energia, todos os componentes eletrônicos ao seu redor precisam ser mais rápidos. Seus sistemas digitais, travas, gerenciamento de relógio etc. Se você obtiver esses 1 Gbps usando a sinalização multinível, agora precisará de ADCs e DACs melhores. Pode ser necessário começar a lidar com a filtragem mais complexa. Você pode começar a exigir o FEC, que também precisa acompanhar.
Tamanho do chip
Mais rápido significa mais acontecendo. Você precisa de uma melhor estabilidade do relógio, o que significa circuitos maiores. Você precisa de um tempo melhor, o que significa um sistema de recuperação de relógio mais complexo. Pode ser necessário mudar para o DSP para fazer a equalização do canal. Seu FEC potencialmente necessário precisa de espaço no chip.
Sensibilidade ao ambiente
Se você mudar de algumas dezenas de megabaud para o que for necessário para gigabit, ficará muito mais sensível ao meio ambiente. Pequenas incompatibilidades que podem ser imperceptíveis em algumas dezenas de MHz tornam-se rascunhos ressonantes em frequências mais altas. As reflexões podem começar a causar desempenho intermitente. Um cabo cortado devido a abuso ao longo dos anos (não conheço o ambiente de aplicativos do seu produto) pode ser bom para velocidades mais baixas, mas causa um desempenho ruim quando você sobe.
Esforço de design
Penso que é óbvio por todas as questões adicionais discutidas acima que o tempo e o esforço de criar um link de comunicação mais rápido são significativos. Isso por si só deve ser motivo suficiente.
EMI
Uma velocidade mais rápida significa que atender aos requisitos de EMI pode ser mais difícil.
fonte
Os sinais TTL (terminação única, não terminada) podem lidar facilmente com 20 Mbps ou mais - veja o SPI, por exemplo. Se você estiver apenas alguns centímetros, o cabo de fita e os conectores IDC (ou algum tipo de backplane) o levarão de placa em placa.
1 Gbps coloca você no campo de ter que lidar com traços, conectores e cabos controlados por impedância. Os receptores precisarão usar técnicas PLL / DLL para manter a sincronização e separar o relógio / dados, enquanto que na velocidade mais lenta, a lógica síncrona normal será suficiente. O excesso de 50 × e as dores de cabeça adicionais simplesmente não valem a pena, se você tiver certeza de que 20 Mbps serão suficientes para o futuro próximo.
Certa vez, projetei (há 25 anos ou mais) um protocolo de barramento serial personalizado para controle e status de placa a placa entre as placas de um rack de telecomunicações. Tipo de cruzamento entre I 2 C e SPI - sinais unidirecionais como SPI, mas endereços de dispositivos incorporados como I 2 C.
fonte
A pergunta óbvia é: "1 Gbps significa 1000BASET Ethernet?" Se é isso que o cliente está pensando, sua exigência de que "não temos espaço para coisas como magnetismo" exclui imediatamente. A Ethernet usa magnetismo na camada física, e quando eu projetei uma interface há alguns anos, os magnéticos faziam parte de um cubo de aproximadamente 1 polegada.
Você diz que está usando FPGAs, mas não diz de quem. Se você optar pelo Xilinx, saiba que os modelos atuais oferecem suporte nativo ao LVDS, o que pareceria ideal para o seu propósito. Os primeiros sistemas LVDS (televisores de alta definição) rodavam a 122 Mbps, e a tecnologia pode ultrapassar um Gbps se você realmente precisar. Sendo diferencial, e supondo que suas duas placas não usem áreas flutuantes, a imunidade ao ruído é excelente.
Quanto à sua escolha específica de frequências de clock, adicionar mais espaço do que você acha que precisa é uma daquelas decisões que podem salvar seu bacon no futuro, então eu não descartaria escolher algo como 100 MHz, mas isso é com você. Você pode familiarizar seu cliente com a lei de Roberge (Jim Roberge era um conhecido professor de engenharia elétrica no MIT há algumas décadas): "Aqueles que pedem mais largura de banda do que precisam merecem o que recebem". É verdade que ele estava falando de servo-sistemas, mas o princípio permanece bom em uma variedade notavelmente ampla de disciplinas.
fonte
O aplicativo que você descreve não faz sentido pular diretamente para uma solução de silício personalizada. As taxas de dados que você antecipa podem ser facilmente manipuladas pela tecnologia FPGA com preço moderado e o FPGA pode ser programado para implementar o protocolo especial se você realmente acredita que esse protocolo é necessário.
Com muito mais frequência, você deve considerar uma camada física padrão e, em seguida, construir o protocolo personalizado. Para uma largura de banda líquida de 20 Mbps do canal de comunicação, você deve planejar uma sobrecarga de protocolo de alguma quantia, porque o enquadramento, a codificação de verificação de erros e a sincronização consomem parte de sua largura de banda. Então, talvez considere uma largura de banda bruta mais alta para acomodar essa sobrecarga.
Depois de ter seu projeto testado, você pode ir ao fornecedor do FPGA e fazer com que ele produza um design de chip rígido a partir da programação do FPGA. Essa abordagem atenua todos os riscos de desenvolvimento inicial e reduz os custos gerais de NRE em uma quantidade tremenda ao longo do "mergulho no silício personalizado apenas porque parece legal".
fonte
A questão real é: por que projetar um protocolo quando tudo já existe.
Para soluções Ethenet, você usa 10/100 e não 1GbE porque ainda é um pouco mais barato e muito mais fácil de fazer o layout. A propósito, a Ethernet pode funcionar sem magnetismo. Mas exige MAC, que pode ser um IC extra. Ou você tem um em um microcontrolador?
20 Mbps é algo que se encaixa em Rs485 ou outra camada, que é ainda mais barata e mais simples. Os pares trançados vêm com todos os tipos de cabos, mais ou menos flexíveis, com conectores ou apenas soldados ao seu PCB.
Ah, o mais importante. É mais fácil estragar tudo com 1Gb. Mas se eles precisam de espaço para um crescimento adicional, isso limita menos.
Conclusão: você precisa entender os requisitos do sistema.
fonte
Eu sugeriria que a rota mais simples com a melhor probabilidade de sucesso e menos sobrecarga de software seria implementar uma conexão Ethernet de 100 Mbps. Você pode implementar isso sem nenhum magnetismo envolvido quando as distâncias são pequenas.
Aqui está um começo com informações sobre o controlador Intel 8255 PCI-Ethernet e uma nota de aplicação sobre conexões sem o magnético.
Não estou sugerindo que você use o 8255, mas você pode obter IP (10/100 / 1000Mbps) para qualquer um dos FPGAs que provavelmente usará com muita facilidade e está bem depurado.
Supondo que você tenha um processador no mix, o suporte a um controlador Ethernet padrão é uma maneira muito baixa de esforço de software para implementar redes ponto a ponto.
Usamos um monte desse tipo de conexões ponto a ponto em placas-mãe especializadas da Intel, elas eram fáceis de depurar e muito confiáveis.
fonte
As respostas aqui são técnicas, dou uma perspectiva de engenharia de requisitos:
Minha opinião é simples
Você precisa de pelo menos 20 Mbps para fazê-lo funcionar; portanto, não especifique 20, mas "20 ou mais" para o aplicativo.
qualquer hardware mais rápido também cumpre sua exigência
se o HW mais rápido for mais barato / mais fácil de desenvolver devido aos padrões existentes, seu requisito também poderá ser cumprido por esses.
Se o cliente quiser mais, tente descobrir se há algo por trás dele (pode ser que ele já planeje atualizações e queira permanecer compatível entre as placas ao trocar)
fonte
Potência, integridade do sinal e tempo. Eu trabalhei em um chip com uma interface de 25 gbps e isso significava uma taxa de clock de 1,6 GHz e uma tonelada de energia. Se pudéssemos rodar em 19,2, a taxa de clock teria sido de 1,2 GHz. Mais de 200ps de margem extra por período de relógio, isso teria sido uma grande ajuda.
Eu nunca fiz o design da placa, mas espero que 20 Mbps não seja um problema. 1 Gbps ainda não é tão difícil, mas muito mais difícil que 20 Mbps.
fonte