![Projeto de um controlador de interrupção programável em VHDL: 4 etapas Projeto de um controlador de interrupção programável em VHDL: 4 etapas](https://i.howwhatproduce.com/images/012/image-33359-j.webp)
Índice:
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03
![Projeto de um controlador de interrupção programável em VHDL Projeto de um controlador de interrupção programável em VHDL](https://i.howwhatproduce.com/images/012/image-33359-1-j.webp)
Estou impressionado com o tipo de respostas que recebo neste blog. Obrigado pessoal por visitar meu blog e me motivar a compartilhar meu conhecimento com vocês. Desta vez, vou apresentar o design de outro módulo interessante que vemos em todos os SOCs - Controlador de Interrupção.
Estaremos projetando um controlador de interrupção programável simples, mas poderoso. É um design completamente configurável e parametrizado que pode ser usado em várias plataformas. Eu projetei isso depois de ler muito sobre algumas arquiteturas de controlador de interrupção populares por aí, como NVIC, 8259a, RISC-V PLIC, Microblaze's INTC etc. Espero que vocês achem este blog útil e ajude a entender como as interrupções são tratadas por um processador com a ajuda de um controlador de interrupção.
Etapa 1: Especificações
A seguir estão as especificações do IP:
- Interface AHB3-Lite.
-
Parâmetros configuráveis estaticamente:
- Nº de fontes externas de interrupção; suporta até 63 interrupções.
- Nº de níveis de prioridade; suporta até 63 níveis.
- Nº de níveis de aninhamento; suporta até 8 níveis de aninhamento.
- Largura do ônibus; 32 ou 64.
- Interrupções mascaráveis global e localmente.
- Nível de prioridade configurável dinamicamente para cada interrupção.
- Dois modos de operação - modo totalmente aninhado e modo de prioridade igual.
- Suporta interrupções sensíveis de alto nível ativo.
O mecanismo de handshaking de interrupção inspirado nas especificações RISC-V PLIC é usado no design.
A preempção de interrupção é inspirada em 8259a
Outras leituras: Microblaze INTC, NVIC
Etapa 2: Visão geral do PIC
![Visão geral do PIC Visão geral do PIC](https://i.howwhatproduce.com/images/012/image-33359-2-j.webp)
O controlador de interrupção programável (PIC) recebe várias interrupções de periféricos externos e as mescla em uma única saída de interrupção para um núcleo de processador de destino.
O PIC é controlado por meio de registros de controle e status. Todos os registros PIC são mapeados na memória e acessados por meio da interface de barramento AHB3-Lite.
O banco de registros consiste em registro de configuração, registros de habilitação, registros pendentes, registros em serviço, registros de prioridade e registro de ID, que são típicos em controladores de interrupção.
O registro de configuração é usado para definir o modo de operação do PIC. Ele pode funcionar no modo Fully Nested ou no modo de prioridade igual.
Cada interrupção pode ter prioridades atribuídas e mascaradas individualmente. O mascaramento global de todas as interrupções também é suportado.
O banco de registros interage com o Resolvedor de Prioridades e o BTC (Binary-Tree-Comparator) para resolver as prioridades das interrupções pendentes e declarar a interrupção para o processador de acordo. O registro de ID contém o ID da interrupção pendente de maior prioridade.
Etapa 3: Projeto e implementação RTL
![Projeto e implementação RTL Projeto e implementação RTL](https://i.howwhatproduce.com/images/012/image-33359-3-j.webp)
O estresse do projeto do PIC é reduzir a latência de resolução de prioridades, que é a parte mais crítica do tempo do projeto. Como o design resolve as prioridades em um único ciclo de clock, o desempenho diminui com o aumento do número de fontes com complexidade Log2.
O design foi implementado com sucesso e o tempo verificado até as seguintes frequências nos FPGAs Artix-7.
- Até 15 fontes: 100 MHz
- Até 63 fontes: 50 MHz
A latência de interrupção adicionada apenas pelo PIC é de 3 ciclos de clock (excluindo o tempo de mudança de contexto do processador e o tempo de busca da primeira instrução ISR).
Etapa 4: notas importantes e arquivos anexados
Anotações importantes:
- Se a interface AHB3-Lite for indesejada, você pode alterar o módulo superior e usar o design de esqueleto do PIC. No entanto, a bancada de teste fornecida é para IP com interface AHB3-Lite.
- O PIC IP v1.0 é um design RTL simples e totalmente portátil.
- Verificado funcionalmente para funcionar em ambos os modos.
Arquivos anexados:
- Códigos de projeto e teste em VHDL.
- Documentação Full IP.
É um design de código aberto … Sinta-se à vontade para usar …
Para qualquer dúvida, a qualquer momento:
Mitu Raj
Recomendado:
Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas
![Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas Projeto de um controlador de cache associativo conjunto de quatro vias simples em VHDL: 4 etapas](https://i.howwhatproduce.com/images/011/image-32050-j.webp)
Projeto de um controlador de cache associativo de conjunto de quatro vias simples em VHDL: No meu instrutivo anterior, vimos como projetar um controlador de cache mapeado direto simples. Desta vez, damos um passo à frente. Estaremos projetando um controlador de cache associativo de conjunto de quatro vias simples. Vantagem? Menos taxa de erros, mas ao custo de desempenho
Projeto de um controlador de cache simples em VHDL: 4 etapas
![Projeto de um controlador de cache simples em VHDL: 4 etapas Projeto de um controlador de cache simples em VHDL: 4 etapas](https://i.howwhatproduce.com/images/001/image-1021-59-j.webp)
Projeto de um controlador de cache simples em VHDL: Estou escrevendo este instrutível, porque achei um pouco difícil obter algum código VHDL de referência para aprender e começar a projetar um controlador de cache. Portanto, desenvolvi um controlador de cache do zero e testei-o com sucesso em FPGA. Eu tenho p
Projeto de um controlador VGA simples em VHDL e Verilog: 5 etapas
![Projeto de um controlador VGA simples em VHDL e Verilog: 5 etapas Projeto de um controlador VGA simples em VHDL e Verilog: 5 etapas](https://i.howwhatproduce.com/images/002/image-4965-32-j.webp)
Projeto de um controlador VGA simples em VHDL e Verilog: Neste instrutível, vamos projetar um controlador VGA simples em RTL. O controlador VGA é o circuito digital projetado para controlar monitores VGA. Ele lê o Frame Buffer (memória VGA) que representa o quadro a ser exibido e gera a nece
STM32CubeMX botão Debounce com interrupção: 5 etapas
![STM32CubeMX botão Debounce com interrupção: 5 etapas STM32CubeMX botão Debounce com interrupção: 5 etapas](https://i.howwhatproduce.com/images/002/image-4977-32-j.webp)
STM32CubeMX Button Debounce With Interrupt: Olá, neste tutorial vou tentar dar a minha solução simples para prevenir o salto do botão, que é um problema muito sério. Na internet existem muitos vídeos que oferecem solução para esse problema, mas nenhum deles para interrupção externa. Em todos esses vídeos, o botão
Arduino - Interrupção periódica: 4 etapas
![Arduino - Interrupção periódica: 4 etapas Arduino - Interrupção periódica: 4 etapas](https://i.howwhatproduce.com/images/006/image-17545-9-j.webp)
Arduino - Interrupção Periódica: Este Instructable trata do uso de uma interrupção periódica para cronometragem em programas Arduino. Esta é uma etapa para um programador de Arduino iniciante que sabe que o Arduino pode fazer mais, mas não sabe exatamente como fazer isso acontecer. Se houver um pr