Sou novo em FPGA e atualmente estou cursando HDL (particularmente Verilog). Tenho conhecimento suficiente em design digital, como circuitos combinacionais e sequenciais.

Quero criar um projeto semelhante a aquele mostrado neste vídeo do YouTube .

Eu também sei que o Xilinx ISE pode processar sinais lógicos e simular formas de onda. Ele tem capacidade extra, como obter os sinais de entrada via USB, câmera etc. e enviá-los para seu computador.

É possível executar este projeto (como uma simulação no computador) sem comprar uma placa FPGA real? O que quero dizer é, posso construir, codificar e executar esse projeto no meu computador e apenas conectar minha câmera via USB e, em seguida, deixar os sinais de vídeo de entrada processado por simuladores HDL como Xilinx ISE, etc. (sem realmente comprar uma placa FPGA e sintetizar seu projeto lá, atualmente não tenho orçamento para ter uma)

( O que realmente quero dizer é fazer a interface do design HDLl em fontes do mundo real, código C, etc.)

Comentários

  • Eu não ‘ não sei se você pode fazer isso com o simulador do Xilinx ‘, mas algo como o Icarus Verilog permitirá que sua interface de simulação para o código C, que poderia obter dados de fontes do mundo real; no entanto, é provável que execute ordens de magnitude mais lentas do que em tempo real, então processar uma fonte de vídeo ao vivo seria difícil.
  • ah, essa é a frase estou encontrando, fazendo interface com fontes do mundo real
  • @vvavepacket votar positivamente nos comentários / postagens para agradecer ao comentador / postador.
  • O FPGA no vídeo se parece com Altera DE2. Ele ‘ está entre 200 e 600 USD dependendo da licença e do chip. Existem ‘ re simuladores em csc.kth.se/~emille/niisim
  • O O Terasic DE0-nano custa cerca de US $ 80 e pode fazer interface com câmeras e LCDs; na verdade, eles têm demonstrações disso em seu site. Não é afiliado a eles, mas o DE0-nano ‘ tem um pequeno FPGA muito bom em uma placa com preço decente. Eu ‘ sempre odiei como a maioria das placas de desenvolvimento são caras.

Resposta

As ferramentas Xilinx não podem fazer interface em tempo real, tanto quanto eu sei, nem o ModelSim (usado pelo IDE Libero da Actel)
Eu não sei sobre simuladores de código aberto, existem alguns projetos exóticos lá fora, então é possível que haja algo que possa fazer isso.

No entanto, esta pode ser uma resposta que você não pediu (vou excluí-la se não for útil), mas eu consideraria construir sua própria placa FPGA para fazer isso ou pelo menos comecei no caminho para isso. Eu criei minha primeira placa FPGA e, embora fosse muito simples (a placa não é o processo ;-)), ela me ensinou muito rapidamente.

Prós:

  • Barato
  • Vá direto ao ponto final e aprenda tudo o que você precisa saber sobre as considerações de hardware. Força você a ler a maioria das planilhas primeiro e escrever suas próprias código inicial, que IMHO geralmente é melhor do que a abordagem de placa de desenvolvimento plug and play para aprender.
  • Apenas coloque no quadro o que você precisa. objetivo de um projeto real de trabalho com possivelmente o mesmo esforço / pesquisa que descobriria como simular tudo em tempo real.

Contras:

  • Ainda preciso comprar um programador, embora versões baratas dos programadores Xilinx / Altera possam ser encontradas no eBay.
  • Se o projeto e os problemas do PCB / integridade do sinal não forem algo em que você deseja se concentrar, talvez você não esteja interessado em muito do conhecimento a ser obtido ao fazer isso dessa maneira.

Eu entendo que gravar sua própria placa provavelmente é desnecessário, eu só fiz isso porque tinha FPGAs lá, estava impaciente e não queria esperar 2 semanas pela chegada de um PCB. Existem negócios extremamente baratos aqui para placas de 2 camadas, o que serviria para pelo menos executar seu projeto (possivelmente em velocidades mais baixas do que o desejado – normalmente a contagem mínima de camadas para um projeto FPGA de alta velocidade seria 4, mas estes são muito mais caro)

De qualquer forma, a Spirit Circuits oferece um negócio de PCB “esqueleto” de 2 camadas totalmente gratuito (um por mês, um design, sem máscara ou serigrafia) que é útil para um design único .
Além disso, para placas de protótipo baratas de 2 e 4 camadas adequadas, ITead e Seed Studio custam apenas US $ 10 para serviços de 10 placas (ou possivelmente 5 por esse preço).

Comentários

  • abordagem muito interessante sobre isso! e também encorajadora

Resposta

O padrão Xilinx ISE Webpack (a versão gratuita que você pode baixar em xilinx.com) inclui um simulador chamado iSim. Não é um grande simulador, mas é totalmente funcional e o preço é justo.

Embora eu não tenha usado as ferramentas Altera, ficaria surpreso se um simulador não fosse incluído.

Mas … Você precisa saber o que um simulador pode ou não fazer . Para começar, ele não pode simular um FPGA funcionando a toda velocidade. Na verdade, eles são bastante lentos. Dependendo da complexidade do FPGA que está sendo simulado, não me surpreenderia ver que levaria 1 minuto para simular 1 ms de “simulado tempo “. Se você quiser simular uma hora de” tempo simulado “, serão necessárias 1000 horas de tempo real.

Além disso, um FPGA simulado não pode se comunicar diretamente com coisas como sua porta USB. O FPGA simulado se comunica com um “testbench”. O testbench é um pedaço de código VHDL ou Verilog que alimenta as entradas do FPGA (ou partes do FPGA) e verifica a saída de seu FPGA. Você pode fazer algumas coisas bastante complexas em um testbench , como usar números de ponto flutuante, ler e gravar arquivos e executar lógica impossível de sintetizar.

Comentários

  • A ltera ‘ s tem edições gratuitas do Quartus que incluem ModelSim. A versão gratuita do ModelSim limita a velocidade da simulação e a versão gratuita do Quartus limita o número de núcleos da CPU usados para sintetizar, mas são totalmente funcionais.
  • Altera ModelSim não oferece suporte à co-simulação de VHDL e Verilog no mesmo design.

Resposta

Não conheço nenhum simulador que fará interface direta aos sinais que chegam em uma porta USB (ou outro hardware).

Pelo menos em teoria, seria possível escrever algum software que pegaria os sinais que chegam em uma porta e os traduzir em um arquivo testbench que um simulador pode processar. Infelizmente, não conheço nenhum software existente para fazer isso, e escrevê-lo sozinho seria decididamente não trivial.

Comentários

  • a melhor maneira é obter um quadro fpga de nível básico e de baixo custo para n00bs como eu
  • Você não ‘ realmente precisa passar por um arquivo testbench se você tiver um simulador que h suporta uma interface para o código customizado como VPI, no entanto, dado que o simulador será executado ordens de magnitude mais lento do que em tempo real, pode ser mais fácil lidar com os dados capturados em um arquivo que pode ser lido na velocidade da simulação.
  • @ChrisStratton Estou interessado na ideia dos dados capturados em um arquivo. Quaisquer recursos para isso? Obrigado
  • Depende inteiramente dos periféricos que você deseja usar como fontes de dados.

Resposta

Você precisará usar interfaces de co-simulação (DPI, VPI, VHPI, FLI) que permitem que você escreva código que se conecte ao simulador e, assim, faça uma ponte entre o RTL em execução na simulação e o hardware real em sua máquina .

Os problemas significativos que você encontrará (além das interfaces mal documentadas) estão relacionados à sincronização e ao tempo. O RTL em execução na simulação é muito mais lento do que o hardware real – você precisará ser capaz de passar pelas interações com a interface externa para corresponder à velocidade da simulação. Algumas interfaces de hardware não serão assim! Por exemplo, se estiver usando TCP, você pode ter que falsificar os temporizadores na pilha do kernel para evitar retransmissões espúrias, etc.

Ícaro suporta o VPI e é gratuito, então você pode experimentar sem gastar dinheiro com licenças. Você pode querer examinar as estruturas existentes que fazem parte do trabalho pesado de co-simulação e fornecem uma abstração mais limpa ao simulador. Uma dessas estruturas é o Cocotb , uma biblioteca de código aberto que fornece uma interface Python para o simulador. ( Aviso de isenção: eu sou um dos desenvolvedores do cocotb.)

Um exemplo que pode ser relevante: ontem eu criei alguns RTL para responder às solicitações de ping e criei um testbench que abre uma interface TUN. Você pode executar ping na interface usando o comando ping e o RTL em execução na simulação recebe o ping e responde. O testbench inteiro tem menos de 50 linhas de Python! O código-fonte deste exemplo está no Github e é executado no Icarus no Linux.

Resposta

Na grande maioria dos casos, qualquer coisa que você fizer na simulação permanece na simulação. Você não pode acessar o hardware real a partir dele – você precisa ter um modelo de simulação do hardware real.

No entanto, se você estiver disposto a se esforçar, a maioria dos simuladores possui uma interface para código arbitrário. Em Verilog, é uma interface razoavelmente padrão, pelo que entendi, então o lado Verilog das coisas será portado entre os simuladores. Em VHDL-land, há uma maneira padrão de fazer isso, mas pelo menos um dos grandes fornecedores tem sua própria maneira de fazendo!

Também tenha em mente que a interface em tempo real (ou seja, na taxa que o FPGA faria) é muito improvável – e o resto de sua simulação (o HDL) não rodará em real -tempo também.Conforme observado nos comentários, o processamento simulado em tempo real de vídeo não é viável desta maneira.

Pessoalmente, nunca tive a necessidade de tentar isso, acho que sou mais produtivo escrevendo modelos de o hardware e executando tudo em VHDL.

Mas, não negligencie os benefícios de fazer simulação – é uma maneira muito mais rápida de descobrir se as coisas estão funcionando (compila leva segundos) do que construir fluxos de bits (compila leva dezenas de minutos a horas) e testá-los no hardware.

Comentários

  • Falso, veja os comentários da pergunta.
  • OK, eu deveria ‘ ter sido mais claro – estava limitando minha resposta a ” eu ‘ m novo para FPGA ” nível 🙂 Resposta atualizada

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *