Vhdl Moving Average Example


Eu estou tentando escrever um VHDL movendo média uniformemente ponderada módulo que usa FSMD ata Do que eu entendo, os estados necessários seria algo como buscar, dividir, saída Abaixo está o processo que eu escrevi, mas eu sinto que a minha lógica é um pouco fora Note-se que os dados I m média é apenas uma matriz constante de 8 bits números, então eu pensei que deveria ser bom para usar um design non-causal. Os dados tem 64 entradas, e no momento a janela para a média é de 4. Como errado faz este olhar. Alguns problemas que eu posso ver imediatamente. Você não reinicializa a temp em qualquer lugar. Você não tem nenhumas verificações do limite para a contagem é ele um subtype ou apenas um inteiro natural O que acontece com contagem do teste mim quando você Aproximar-se do limite Como você rola over. Your for-loop é 0 para len - você tem certeza de que didn t significa 0 para len - 1.Desde todo o processo de decodificação de estado é clocked, você realmente não precisa nstate em tudo Note que Você não está mesmo inicializando cstate, mas você ainda está decodificando-lo ou fazer o seu estado decodificar uma combinação separada Al processo ou apenas se livrar de nstate e atribuir a cstate diretamente. Caso contrário, depende de seus objetivos de design Se você não se preocupam com a taxa de transferência, mas precisa executar em uma taxa de clock muito alto, você pode querer executar a sua adição sequencialmente em vez de Em paralelo, por exemplo. Respondido Sep 5 14 at 13 32.thanks, que definitivamente faz as coisas melhor sobre o rollover contagem, eu não tenho certeza realmente como fazê-lo porque para cada contagem de padrão até 63, eu quero exibir seu Valor ea média da janela em torno dele assim se eu rollover em coun-len, ele shouldn t sair de limites, mas não vai mostrar dados completos se eu estava fazendo uma implementação causal eu teria algum atraso no início, é Uma coisa semelhante que eu preciso aqui, mas no final user1710566 Sep 5 14 at 23 23.my solução foi elsif clk evento, em seguida, se contagem 64, em seguida, contagem 0 else calcular final se no loop for i colocar uma saída se contagem i foi maior do que 63 User1710566 Sep 6 14 at 0 05.I tem uma pergunta relacionada à média contínua de ADCs v Alue A abordagem que eu usei é a média contínua de exemplo 256 amostras O valor adcaout mostrado no código abaixo que eu recebo em minha GUI aumenta lentamente Como exemplo, se eu estou esperando o valor 100mA, Minha GUI mostra 4mA, 8mA, 15mA e, em seguida, Finalmente depois de 2 minutos eu fico 100mA estável valor Eu quero ver o 100mA diretamente em minha GUI de adcaout em vez de valores de incremento e estabilizar depois de algum tempo Outra pergunta é que, posso de alguma forma fazer esse processo rápido para que eu não tenho que esperar 3 minutos para receber estável 100 mA de adcaout O clock clk no desenho digital abaixo é de 20 MHz O relógio para receber valores ADC na placa FPGA é 15 KHz .-- o arquivo está abaixo. Seu código é modificado da seguinte forma. Saída que eu estou vendo na minha GUI é slvvalue1 e slvvalue2.How sobre isso em redefinir ou em qualquer outro tempo, se você quiser, atribuir o valor de dados para todos os elementos em sua matriz palco Isso deve imediatamente definir sua média para o valor atual. Exemplo abaixo mostra t Ele completa o código para uma calculadora de média móvel Minha sugestão é que você estudá-lo até que você entenda Então, tente usá-lo em seu projeto Finalmente, e só depois de ter um circuito básico de trabalho, você poderia alterá-lo para satisfazer suas limitações de design Se você quiser usar o código acima para manter duas médias separadas para dois sinais distintos, basta instanciar a entidade de média duas vezes. Editar Como eu entendo do seu Comentários, você pode precisar de uma entrada extra para definir a média instantaneamente para o valor de entrada atual Nesse caso, você pode usar uma entrada de carga como mostrado abaixo. resposta 26 nov 13 em 15 45.VGA Interfacing e Controle usando MENTOR GRAPHICS HDL DESIGNER Software. e o Conselho de Desenvolvimento Altera DE1. VEJA A MINHA PÁGINA DE1 DEVOTED NO LINK ABAIXO. O software usado neste tutorial é chamado o desenhador de HDL por gráficos de Mentor, junto com os vários programas do companheiro tais como. ModelSim e síntese da precisão. Apenas para informá-lo todos antes que nós vamos mais. Não estará dando para fora os arquivos cheios do código de fonte de VHDL para o download. Se você for novo à programação de VHDL, eu recomendo que você revise minha página de VHDL como uma introdução. Entretanto, se você for já programação e compreenda VHDL a algum grau então você pode Pule a Intro e vá em frente.- Companion Textbook para este Project. A altamente recomendada Textbook para este projeto é um dos dois livros mostrados below. RAPID PROTOTYPING DE DIGITAL SYSTEMS. These livros particulares contêm algumas informações sobre VGA grande interface e fornece Alguns do código Basic VHDL para criar um controlador VGA Eu altamente recomendável que você comprar um desses livros para ajudar a solidificar o seu entendimento. Este tutorial irá mostrar-lhe como programar o Altera DE1 D Para produzir o controle VGA necessário e sinais de dados para exibir gráficos em cores 2D em um monitor de computador VGA Isso, por sua vez, permitirá que você produza um estilo de jogo 2D PONG estilo. Muitos jogos estilo VHDL PONG foram demonstrados on-line Tal como Este abaixo Isto é semelhante ao que seu projeto final será parecido como uma vez completado No entanto, você é livre para adicionar mais recursos para o jogo se você tiver tempo para fazê-lo antes do final do seu Semestre. Funcionalidades adicionais podem ser adicionados ao seu jogo Para aqueles de vocês que desejam ir além do esboço deste Tutorial Recursos como um Score Board, Limite de Tempo, Efeitos Sonoros, ou até mesmo um Joystick Game Pad Interface de Controle para dois jogadores Isto é definitivamente incentivado como ele vai ajudar a solidificar a sua compreensão de O código VHDL. Este tutorial usa uma resolução de tela de 640 x 480 com uma taxa de atualização de tela de 60Hz Se você quiser ir tudo para fora e tentar usar configurações de alta resolução, como 800 x 600, 1024 x 768 ou mesmo 1600 x 1200, em seguida, por todos os meios fazê-lo Você definitivamente estaria acima de alguns pontos de bônus principais se você pode obtê-lo para trabalhar. Visite o link abaixo para uma lista de vários requisitos de tempo de sinal VGA para diferentes configurações de resolução. Este tutorial pode ser facilmente aplicada A outros conselhos de desenvolvimento e outros pacotes de software VHDL. Como o Altera DE2, Altera UP1, UP2, CPLDT-2 e muitos mais Você pode até mesmo usar um programador universal para programar o seu próprio CPLD ou FPGA Há também a opção de usar um JTAG interface Programador e fiação-se para um JTAG compatível FPGA Isso permite que você use um programador 15 00 JTAG como o Altera USB-BLASTER para programar o seu próprio Off-the-Shelf CPLD ou FPGA Desde que o FPGA você compra suporta um JTAG interface, em seguida, você pode ligá-lo você mesmo e simplesmente Programa-lo com o mesmo Software Logic que você usa com o seu DE1 desenvolvimento board. For uma explicação detalhada sobre a interface JTAG, Confira a minha página de interface JTAG e vídeo instrucional no Link B Elow. I ter preparado um conjunto de Vídeos de instrução para este projeto para sua revisão Os vídeos irão cobrir os conceitos necessários para você combinar 10 VHDL BLOCKs em HDL Designer, para produzir um jogo de vídeo PONG Estilo em seu Altera DE1 Development Board Você vai Interface seu DE1 a um monitor VGA usando a porta VGA DB-15 onboard. Agora, como este é um projeto popular TERM para muitas faculdades e universidades eu não vou fornecer arquivos de código fonte VHDL para você baixar, copiar e colar em seu Projeto e, em seguida, submetê-lo ao seu professor e obter um passeio livre para este Project. I vai ter vários vídeos de instrução que irá percorrer os conceitos fundamentais do projeto e eu também terá alguns exemplos VHDL ARQUITECTURA e PROCESS geral para cada um dos 10 VHDL blocos Será até você para aplicar o código de exemplo para o seu próprio projeto Eu acredito que é importante que você escrever o seu próprio código, executar simulações e ver como as coisas funcionam através de tentativa e erro. Just Remember Yo U pode fazer isto. Tente escrever para fora algum código de VHDL você mesmo, execute simulações de MultiSim e você verá como rapidamente você pode aprender. Então outra vez, eu não estarei dando para fora os arquivos de código fonte de VHDL para download. Se você usar esta página de web e meu Agora, se eu fosse responder a 100 s de e-mails que todos me enviam, pedindo ajuda com o seu código VHDL, eu não seria capaz Para encontrar o tempo para trabalhar ou até mesmo comer Então, por favor Registre-se, e perguntar todas as suas perguntas relacionadas VHDL no CPLD FPGA Digital Design Forum. If você precisar de alguma ajuda com o seu código VHDL ou outros projetos relacionados com Engenharia do fórum é o lugar para ir Você pode conversar com outros profissionais da indústria para ajudar a solucionar problemas e resolver seus problemas de codificação VHDL Seu fórum GUI baseada na web é equipado com CODE e COMMENT formatação Isso torna a sua Mensagem posts muito clara e organizada Ter sua mensagem mensagens claramente formatado desta forma, Permite que outros o ajudem mais A interface VGA foi padronizada pela IBM em 1987 com requisitos de sinal para exibir imagens em cores em um monitor de computador de tubo de raio catódico ou CRT para Short Quando os monitores LCD foram liberados mais tarde, eles adotaram o mesmo padrão de sinal VGA, a fim de funcionar com a atual infra-estrutura de computador no mundo. CRT - Cathode Ray Tube. CRT LCD Differences. CRT LCD - Cutaway Diagram. Therefore Monitores LCD têm um Interno do conversor que converte sinais de VGA ao monitor exigido da exposição do cristal líquido Sinais Isto acontece tudo automaticamente dentro dos circuitos dos monitores do LCD e trabalha todos os mesmos a nós Assim nós don t tem que preocupar-se sobre ele. Interface - Requisitos de Sinal. Basicamente existem 5 requisitos de sinal separados para a interface VGA para funcionar. Estes são sinais de controle de resolução H-SYNC V-SYNC ea cor VERDE VERDE e AZUL Os sinais de H-SYNC V-SYNC que você enviar para o monitor, ditar qual definição de resolução que você está tentando usar Dependendo do monitor, ele só pode suportar uma resolução específica, onde outros monitores podem suportar mais de um monitor Sinal de referência Padrões para todas as configurações de resolução disponíveis, dentro de um chip de memória EEPROM que faz parte dos circuitos internos dos monitores. Cada configuração de resolução requer uma freqüência específica de sincronização de H-SYNC V-SYNC Largura de pulso e Ciclo de trabalho Estes requisitos de sinal foram padronizados Por IBM Nós estaremos usando o tamanho de resolução de tela mais antigo e menor disponível, como a maioria dos monitores VGA irá suportá-lo. Que sendo a resolução VGA 640 x 480 com uma taxa de atualização de 60Hz. As linhas de sinal de controle de cor VERMELHO, VERDE e AZUL, cada uso Analog Os níveis de tensão entre 0 0 a 0 7 Volts DC para determinar a intensidade de cor utilizada para cada Pixel Como você sabe, todas as cores são feitas a partir de misturar várias quantidades de VERMELHO, VERDE e AZUL Experimente e visualize os sinais H-SYNC e V-SYNC como COUNTERS personalizados que estão constantemente em execução e contando até o valor máximo declarado, redefinindo para zero e depois contando mais uma vez. O contador de H-SYNC é reposto a zero, o contador V-SYNC é incrementado apenas por 1. A imagem GIF animada mostrada abaixo mostra como os sinais H-SYNC V-SYNC são usados ​​em conjunto para criar o Ciclo de Refresh de Tela. Sinais como contadores XY, eles essencialmente contar através de cada Pixels na tela do canto superior esquerdo todo o caminho para baixo na seqüência para o canto inferior direito Este processo repete 60 vezes por segundo, devido ao fato de que estamos usando uma taxa de atualização de 60Hz. Os padrões de sinal H-SYNC e V-SYNC que enviamos para o monitor VGA, quando trabalhando em conjunto, eles criam o efeito de varredura Zig-Zag como mostrado abaixo Agora, dependendo da freqüência, largura de pulso e ciclo de trabalho destes padrões de sinal Podemos criar resolução diferente setti Ns para o monitor para display. So nós temos um específico H-SYNC e V-SYNC padrão de sinal para criar o ciclo de varredura Zig-Zag de uma resolução de tela de 640 X 480, e também temos outro sinal H-SYNC e V-SYNC Padrão para uma resolução de tela 1600 X 1200, e muitos mais. A imagem acima está realmente mostrando o que s chamado Frames Entrelaçados Você realmente não precisa se preocupar com isso agora, como não estamos usando este formato específico A imagem animada é principalmente Usado para mostrar o conceito básico de uma tela Refresh Cycle. Now o fato de que estamos usando uma definição de resolução de 640 x 480 isso significa que temos 640 Pixels que correm do lado esquerdo da nossa tela para o lado direito Isso também significa Que temos 480 pixels que são executados a partir do topo da tela para o Bottom. In outras palavras, o que temos aqui é um 640 X 480 Pixel Matrix. You pode considerar o canto superior esquerdo da tela como o ponto de partida para o seu H Contadores - SYNC e V-SYNC iniciando em Zero O contador H-SYNC então prossegue Para incrementar através de todos os 640 pixels na primeira linha horizontal de Esquerda para Direita Uma vez que chega ao fim da Linha, então reajusta para o começo No entanto desta vez, ele também se move para baixo por um pixel para a próxima Linha e incrementa o V - SYNC por 1. Este processo é repetido até que o contador V-SYNC conta para 479, o que o traz para a última Row na parte inferior da tela. Então, quando o contador H-SYNC atingir o último pixel no canto inferior direito do A Tela 639, ambos os contadores H-SYNC e V-SYNC são redefinidos para Zero. Isso nos traz de volta para o canto superior esquerdo pixel e todo o processo de contagem começa novamente. Uma única passagem sobre a tela inteira é chamada de Tela Refresh Cycle e isso é repetido 60 vezes por segundo para atualizar a tela e atualizar cada pixel para uma determinada cor e, por sua vez, isso produz uma imagem na tela. Reveja a imagem GIF animado acima para obter uma melhor compreensão deste processo de atualização de tela Em ação.- Visão geral do nosso bloco 10 VHDL Circuit.- VHDL BLOCKS - Arquitetura Examples. Below Eu forneci alguns Arquitetura VHDL e PROCESSO exemplos semelhantes ao que você precisaria para cada um dos 10 blocos VHDL para realizar sua função específica É até você para descobrir como aplicar o Código para o seu próprio projeto e gerar os sinais que você precisa. VHDL BLOCK 1 - O divisor de relógio. O divisor de relógio deve ser um snap para você descobrir, por isso não há necessidade real de um exemplo Para o nosso projeto VGA, exigimos um sinal CLOCK De 25 175 MHz 25 MHz no nosso caso é bom Nós conseguimos isso dividindo as placas DE1 50Mhz sinal de clock em metade. Para simulações MultiSim. Para uma configuração de 50MHz CLOCK usar um período de relógio de 20ns. For uma configuração de relógio de 25MHz usar um período de relógio De 40ns. VHDL BLOCK 2 3 - Um Exemplo de Contador MOD típico. Meu Contador MOD25 com uma linha de Reset de Alimentação e um Relógio de 25Mhz. Exemplo de Contador de MOD. Se você estiver tendo problemas para fazer com que os Pulsos de VGA funcionem corretamente, tente mudar o estado de reset dos contadores de MOD Tente estes valores de contador abaixo e e Executar algumas simulações. MOD-800 contagens de 0 a 793.MOD-525 contagens de 0 a 522.VHDL BLOCK 4 5 - O Vertical Decoder Vertical State Machines. PULSOS MOMENTARES PARA LINHAS DE SAÍDA. Esteja ciente de que esta máquina de estado particular de VHDL somente criará impulsos de lógica momentânea em suas saídas. As linhas de saída STATE permanecerão ALTAS por apenas 1 Pulso de Relógio, com base na fonte CLK de entrada usada para este Bloco VHDL particular. As entradas STATE precisam ser alimentadas em um circuito Latch para ser mantido em ALTO por qualquer período de tempo. Exemplo de máquina de estado único. Acima são alguns exemplos de vários pulsos de estado de contador. Na captura de tela mostrada acima, preste muita atenção à diferença de tempo entre Os dois Markers. and como eles se relacionam com os outros Estados mostrados. O Horizontal Vertical SYNC DISPLAYTIME Signals. LATCH CIRCUIT STATE MACHINES AS MOSTRADO ABAIXO.- Sincronização horizontal Sinalização de forma de onda. No SIGNAL TIMING Diagramas que se seguem, eles mostram o Horizontal Vertical SYNC Pulses e também os pulsos DISLAYTIME horizontal e vertical Estes padrões de forma de onda ocorrem em uma seqüência de repetição e eu indiquei Os pontos de partida e de parada deste padrão de repetição. Também incluí os estados H-DECODER e V-DECODER Momentaty HIGH PULSE, em relação ao padrão de forma de onda em questão.- Horizontal FORMAS de onda do sinal DISPLAYTIME. Formas de onda do sinal DISPLAYTIME. LATCH CIRCUIT STATE MACHINES. O código VHDL abaixo é um exemplo de um circuito de trava que irá ativar um sinal de saída para permanecer alto ou baixo para qualquer período de tempo até que a saída em questão é atribuído para alterar seu estado LATCH RESET Entrada Pulsos são usados Para como Triggers para iniciar qualquer alteração Este é essencialmente o tipo de circuito que você precisa para implementar para cada um dos sinais, como mostrado no acima Waveform diagrams. Displaying objetos na tela. Agora as coisas ficam um pouco mais complicado aqui vou ter Um par de exemplos DISPLAY PROCESS para guiá-lo ao longo do caminho, no entanto, cabe a você descobrir como adicionar os controles de Movimento para seus objetos. A melhor maneira de entender como objetos coloridos básicos são exibidos na tela é como segue. Tente olhar para os contadores Horz e Vert MOD, mais como um sistema de coordenadas XY 2D em um Map. So visualizar nossos contadores Horz e Vert MOD como as coordenadas de posição XY para uma lanterna que está digitalizando a tela This Fla Shlight está verificando Labels em cada pixel que aparece. As Labels indicam qual cor que o Pixel em particular deve exibir Vermelho, Verde ou Azul, ou qualquer combinação dos três. A forma como fazemos isso em VHDL é usar um conjunto adicional de vetores stdlogic ou CONTADORES Assim como aquele usado para gerar os sinais H-SYNC e V-SYNC Os Counter Pairs tornam-se as coordenadas XY Reference para cada objeto individual que exibimos na tela Isso significa que precisamos de um par de Contador XY para cada objeto separado que nós Têm na tela. Assim, como nossos contadores Horz e Vert MOD estão executando através do ciclo de atualização de tela, se em qualquer ponto os contadores acontecerem ter exatamente as mesmas coordenadas X e Y como uma das Nova XY Counter Pairs. YREFERENCECOUNTER V-COUNTER E XREFERENCECOUNTER H-COUNTER. que podemos usar esta condição para ativar as linhas RGB para começar a exibir uma determinada cor I REPEAT STARTING a partir dessas coordenadas XY Isso significa que você tem que adicionar o número de pixels XY para o objeto que Que você deseja exibir, para a declaração mostrada acima Porque você tem, essencialmente, apenas disse ao sistema onde começar a pintar as cores, mas não realmente qual caminho a percorrer para cima, para a esquerda ou para onde parar. YREFERENCECOUNTER V-COUNTER E XREFERENCECOUNTER H-COUNTER size. There é ainda um pouco mais para ele, por isso, reveja os exemplos de PROCESSO DE EXPOSIÇÃO que forneci abaixo, e veja se você pode descobrir isso. BALL Display PROCESS Exemplo - VHDL Block 7.PADDLE 1 Exemplo de Processo de Visualização - VHDL Block 8 9.Revise também as páginas 208 e 209 do Livro de Acompanhamento que mencionei anteriormente. São dois exemplos de PROCESSO que podem dar algumas ideias para obter uma Bola saltando na Tela. Examine os dois exemplos, Tente O código, manipulá-lo, alterá-lo com suas próprias idéias tentar coisas diferentes e ver se você pode obter uma bola para exibir e saltar na tela. Now, para obter as colisões de bola trabalhando com as pás isso pode revelar-se mais desafiador . Esperemos que estes exemplos PROCESS ajudarão você a começar e pensar em melhores maneiras de escrever seu próprio código VHDL. Os detalhes abaixo sobre colisões de pá podem ser um pouco exagerado para a maioria de vocês. No entanto, se você é um perfeccionista e está ficando realmente frustrado porque a bola colisões com suas pás não são É importante perceber que não importa em qual direção a bola está viajando, para cima, para baixo ou em um ângulo as condições que você aplica a cada remo para uma bola Colisão cada condição irá causar a mesma resposta, independentemente de qual lado a bola colide no Paddle. This é porque ele é único objeto. A colisão condições para cada paddle são baseados em seu XY contador Pair. To ter diferentes colisão respostas para cada um dos 4 sides. you por sua vez precisam de 4 pares de contadores separados ou 4 lados separados que compõem um bloco paddle. The RGB Concatenation Block. This Block é simplesmente um grupo de portas AND que se juntam ou CONCATENATE all o F as cores RGB em conjunto em um MASTER RGB Output. So essencialmente você tem um portão Multi-Input AND para cada uma das cores RGB individuais Um para todas as cores VERMELHAS, um para todos os VERDES e um para todos os AZUIS Finalmente, esta saída MASTER RGB só pode ser ativada durante o Horário de Exibição Horizontal E o Tempo de Exibição Vertical Então, outra porta AND é usada, ativa a saída MASTER RGB somente quando H-DISPAYTIME V-DISPLAYTIME estiver em um estado HIGH. Altera DE1 Board - As linhas RGB não utilizadas devem ser ligadas a GND. É importante certificar-se de que você amarra quaisquer linhas de entrada RGB não utilizadas a GND Como estas podem às vezes causar os sinais não conectados a Flutuar, produzindo interferência e ruído em seu monitor VGA. Up Folks. Hopefully este Tutorial, pelo menos, levá-lo um pouco mais perto de finalizar seus projetos VHDL PONG.

Comments