Diretório de artigos
prefácio
- Software: Quartus Prime Standard 18.0
- Software de simulação: modelsim 10.5
- Software de escrita de código: VSCode
- Ferramenta de desenho de forma de onda: Visio 2013
- Hardware: Altera MAX10 para pezinhos
Efeito esperado:
Esperamos selecionar o sinal do LED de entrada através de um botão, quando pressionamos a tecla 3, ou seja, quando a tecla 3 é um sinal baixo, o LED seleciona a tecla 2 como sinal do LED, caso contrário, ele usa o sinal da tecla 1 como referência.
1. Multiplexador
Um multiplexador é outro nome para um seletor de dados.Na transmissão de dados múltiplos, um circuito que pode selecionar qualquer um deles de acordo com as necessidades é chamado de seletor de dados, também conhecido como multiplexador ou chave multiplex. É um circuito lógico combinacional simples.
- Lógica de combinação:
A lógica combinacional é, na verdade, uma parte importante do projeto VerilogHDL. Da essência do circuito, a característica do circuito lógico combinacional é que o sinal de saída é apenas uma função do sinal de entrada no momento atual e não tem nada a ver com o estado de entrada em outros momentos, e não há armazenamento circuito e nenhum circuito de realimentação.
2. Desenhe o diagrama de bloco do módulo e o diagrama de forma de onda
No início do projeto, crie um novo arquivo de projeto, que contém quatro novas pastas, a saber:
prj (arquivo de projeto), rtl (arquivo .v), sim (arquivo de teste de simulação), doc (arquivo de desenho de forma de onda)
-
adicionar forma
-
Diagrama de bloco
-
forma de onda
Quando sel é 0, o sinal de saída Out é forma de onda in_2, caso contrário, é forma de onda in_1.
3. Código Verilog HDL e código de teste
Crie um arquivo mus2_1.v na pasta rtl e o nome do módulo definido precisa ser consistente com o nome do arquivo. Neste ponto, clique duas vezes para abrir o VSCode para gravação de código.
module mus2_1(
input wire in_1,
input wire in_2,
input wire sel,//选通信号
output reg out
);
always @(*)//组合逻辑进行阻塞赋值
if(sel == 1'b1)
out=in_1;
else
out =in_2;
endmodule
Crie um novo arquivo de teste tb_mus2_1.v na pasta sim
`timescale 1ns/1ns //时间尺度
module tb_mus2_1();
reg in_1;
reg in_2;
reg sel;
wire out;
initial begin //初始化变量,上电后只执行一次
in_1<=1'b0;
in_2<=1'b0;
sel <=1'b0;
end
//设置随机波形图
always #10 in_1<={
$random}%2;
always #10 in_2<={
$random}%2;
always #10 sel<={
$random}%2;
mus2_1 mus2_1_inst ( //实例化模块
.in_1(in_1),
.in_2(in_2),
.sel(sel),//选通信号
.out(out)
);
endmodule
4. Crie um projeto
- Open quartus, um novo projeto
-
clique em próximo
-
Selecione o caminho do projeto e escolha ir para a pasta prj que criamos anteriormente. Preencha o nome do projeto, aqui tente escolher o mesmo nome do nosso arquivo .v—mus2_1.
-
Aqui não escolhemos um template, apenas o próximo.
-
Adicionaremos o arquivo mais tarde, o próximo primeiro.
- Selecione o tipo de placa. Aqui estou usando Altera max10. Se você estiver usando outras placas, você precisa baixar a biblioteca de dispositivos correspondente à versão quartus do site oficial da Intel. Mesmo que também seja max 10, se a versão do quartus for diferente, a biblioteca do dispositivo Não é o mesmo. requer atenção.
- Selecione o software de simulação e o idioma
- Verifique se a configuração está correta e clique em Concluir para concluir a criação do projeto.
- Adicionar fonte e arquivos de teste
-
Duplo click
-
Selecione o arquivo para adicionar
-
Adicionar arquivos de teste à simulação
Em 1 na figura acima, selecione o arquivo de teste e preencha o nome do arquivo de teste em 2.
5. Simulação
Clique abaixo para abrir automaticamente o software de simulação
- Forma de Onda de Simulação
Explicação: Quando sel é 1 na posição da linha de marcação, o sinal cujo nível de saída deve ser in_1 é 0 e out também é 0 neste momento. A simulação foi bem sucedida! As etapas específicas de como realizar a simulação não serão apresentadas aqui.
6. Verificação do conselho
1. Atribuir pinos
Atribuir de acordo com o diagrama de atribuição de pinos fornecido pelo fabricante
-
definir pino
-
Preencha os pinos correspondentes por sua vez
Aqui, key1 controla o sinal in_1, key2 controla o sinal in_2 e key3 atua como um sinal estroboscópico. Inicialmente, nenhuma das três teclas é pressionada, a tecla 3 está em nível alto e o sinal de saída é a tecla 1. Quando a tecla 1 é pressionada neste momento, a luz de nível baixo na tecla 1 acende. Por outro lado, pressione a tecla 3, o sinal estroboscópico seleciona o sinal da tecla 2, pressione a tecla 2 neste momento, a luz está acesa. Para resumir, pressione a tecla 1 para acender a luz ou pressione a tecla 2 + tecla 3 para acender a luz.
2. Queima
- Selecione USB
Se o USB-Blaster não for detectado aqui, há duas situações. Uma é que seu cabo de dados não suporta transmissão de dados e a outra é que seu driver não foi atualizado. Procure uma atualização para identificá-lo.
- Clique em Adicionar arquivo e procure o arquivo sof na pasta outputfiles na pasta prj
- Clique em iniciar para começar a gravar e a barra de progresso está à direita
Sete, demonstração de efeito
keyofLED
8. Resumo
Esta é a primeira vez que opero a placa fpga em espécie e é ótimo. De um modo geral, a operação desta vez é relativamente simples, mas desenhando o diagrama de bloco do módulo e o diagrama de forma de onda sozinho, tenho um forte entendimento do seguinte simulação e compreensão de código. s ajuda! Através deste experimento, deve-se considerar como entrar no poço, haha!