O editor de Downcodes irá levá-lo a entender a escrita de código Verilog e os métodos de teste de simulação do registrador de deslocamento de oito bits que está integrado na saída serial. Este artigo detalha como projetar um registrador de deslocamento de oito bits com carregamento paralelo e saída serial, incluindo definição de módulo, registro interno e design lógico, implementação de lógica de controle e escrita de módulos de simulação. Por meio de etapas claras e códigos de amostra, ele ajuda você a compreender e dominar a aplicação do Verilog HDL no projeto de circuitos digitais e, finalmente, a realizar um registrador de deslocamento de oito bits totalmente funcional.
O registrador de deslocamento de oito bits com entrada paralela e saída serial é um registrador que pode carregar dados em paralelo e gerar dados em série. Para escrever código Verilog para esse tipo de registro, você pode definir um processo acionado por clock, usar uma variável de registro de 8 bits para salvar o estado e definir sinais de controle para controlar a carga paralela e a saída serial. Ao escrever o código, os diferentes modos de operação devem ser levados em consideração e devem ser fornecidas interfaces de controle e de dados apropriadas.
O seguinte descreve em detalhes como projetar a função de carregamento paralelo:
Para implementar a função de carregamento paralelo, você pode definir um sinal de controle, como carga. Quando a carga é de alto nível, o estado do registrador é atualizado imediatamente com base nos dados paralelos na extremidade de entrada, em vez de por meio da entrada de sequência. No código Verilog, essa lógica pode ser implementada em um bloco sempre acionado por transição de clock. Ao detectar o sinal de carga, pode-se decidir se os dados paralelos fornecidos externamente serão carregados no registrador ou se serão deslocados com base na entrada serial.
módulo ShiftRegister_8bit (
fio de entrada clk,
fio de entrada primeiro,
carga do fio de entrada,
fio de entrada serial_in,
fio de entrada [7:0] paralelo_in,
registro de saída [7:0] data_out
);
reg [7:0] shift_reg;
sempre @(posedge clk ou posedge rst) começar
se (primeiro) começar
shift_reg <= 8'b0;
data_out <= 8'b0;
fim senão if (carregar) começar
shift_reg <= paralelo_in; // Carregamento paralelo
fim senão começo
shift_reg <= shift_reg << 1; // desloca para a esquerda
shift_reg[0] <= serial_in; //Os dados de entrada serial entram no bit mais baixo
fim
fim
sempre @(*) começa
data_out = shift_reg; // Sempre atualizando os dados de saída
fim
No bloco Always acima, o registro é inicializado detectando primeiro o sinal de reset, e o sinal de carga é usado para controlar se deve realizar carregamento paralelo ou deslocamento serial. Na operação de deslocamento serial, além de deslocar todo o registro para a esquerda para realizar a movimentação dos bits de dados, uma nova entrada serial também precisa ser aceita através do sinal serial_in.
módulo ShiftRegister_8bit_tb;
//porta de entrada
reg clk_tb;
registro rst_tb;
registro load_tb;
registro serial_in_tb;
reg [7:0] paralelo_em_tb;
//porta de saída
fio [7:0] data_out_tb;
//Instancia o módulo a ser testado
ShiftRegister_8bit uut (
.clk(clk_tb),
.rst(rst_tb),
.carga(carga_tb),
.serial_in(serial_in_tb),
.paralelo_in(paralelo_in_tb),
.data_out(data_out_tb)
);
//Geração de sinal de relógio
início inicial
clk_tb = 0;
forever #10 clk_tb = ~clk_tb; // Cria um sinal de clock com um período de 20 unidades de tempo
fim
//Teste a sequência de estímulos
início inicial
// Inicializa o sinal
primeiro_tb = 1 carga_tb = 0;
#25 rst_tb = 0; // Libera o sinal de reset
#20 load_tb = 1 paralelo_in_tb = 8'b10101010; // Carrega dados de teste em paralelo
#20 load_tb = 0; // Desativa o carregamento paralelo e inicia o deslocamento serial
serial_in_tb = 1; //Inicie os dados de entrada serial e observe a saída
#(8 * 20) serial_in_tb = 0; //Insere dados seriais de vários ciclos de clock e verifica a saída
//Teste concluído, reset reset
#40 primeiro_tb = 1;
#20 primeiro_tb = 0;
fim
módulo final
No módulo de simulação, um sinal de clock é gerado primeiro para acionar a operação de todo o registrador de deslocamento. Em seguida, as entradas externas são simuladas alterando o valor do estímulo de teste em um ponto de tempo específico, como o primeiro sinal de reinicialização, o sinal de controle de carga paralela de carga e o sinal de entrada serial serial_in. Durante a simulação, verifique se as alterações na saída data_out estão em conformidade com o comportamento esperado do registrador de deslocamento sob diferentes excitações de sinal. Verifique a correção funcional dos registros observando formas de onda de simulação ou registros de simulação.
Resumindo, o design razoável do código Verilog e os testes de verificação de fatos são etapas essenciais para garantir a operação correta do registrador de deslocamento de oito bits com entrada paralela e saída serial.
P: 1. Como escrever e executar o código Verilog do registrador de deslocamento de oito bits? R: Para escrever e executar o código Verilog para um registrador de deslocamento de oito bits, você precisa seguir as seguintes etapas:
Use a linguagem Verilog para escrever o código do módulo registrador de deslocamento e definir as portas de entrada e saída. Escreva o código testbench para teste de simulação do módulo de registro de deslocamento. Use uma ferramenta de simulação Verilog, como ModelSim ou Vivado, para carregar e compilar os arquivos de projeto e de teste. Execute a simulação, observe a saída do registrador de deslocamento e realize a análise da forma de onda para verificar sua funcionalidade.P: 2. Como simular e testar o código Verilog do registrador de deslocamento de oito bits? R: Para realizar um teste de simulação de código Verilog de um registrador de deslocamento de oito bits, siga as etapas abaixo:
Escreva o código do testbench, incluindo vetores de teste que atribuem valores aos sinais de entrada do módulo do registrador de deslocamento e instruções que verificam os resultados de saída. No código do testbench, use o comando $monitor ou $display no Verilog para exibir os valores dos sinais de entrada e saída do módulo em tempo real. Durante a simulação, gere sinais de relógio apropriados para controlar a operação do registrador de deslocamento e observe seus resultados de saída. Execute a simulação e observe e analise a forma de onda da simulação para verificar se o registrador de deslocamento está funcionando corretamente.P: 3. Existe alguma ferramenta de simulação Verilog que você possa recomendar para realizar simulação de código Verilog de registrador de deslocamento de oito bits? R: Ao realizar a simulação de código Verilog de um registrador de deslocamento de oito bits, existem várias ferramentas comuns de simulação Verilog para escolher, incluindo ModelSim, Vivado, ISE, Quartus, etc.
ModelSim é uma ferramenta de simulação Verilog comumente usada que fornece funções poderosas de simulação e depuração e pode ser usada para realizar testes de simulação de código Verilog. Vivado é um conjunto abrangente de ferramentas desenvolvido pela Xilinx, que também inclui funções de simulação e é adequado para executar testes de simulação de código Verilog. ISE e Quartus são conjuntos de ferramentas abrangentes para dispositivos Xilinx e Altera FPGA. Eles também fornecem funções de simulação que podem ser usadas para realizar testes de simulação de código Verilog. Ao escolher as ferramentas de simulação Verilog, você pode escolher com base nas preferências pessoais e nas necessidades do projeto, e tomar decisões com base em suas respectivas características.Espero que este artigo possa ajudá-lo a entender e dominar melhor a escrita de código Verilog e os métodos de teste de simulação de registradores de deslocamento de oito bits. Se você tiver alguma dúvida, fique à vontade para perguntar.